From 30fec3db459142159fbb1e7130bb5e48a2b19a48 Mon Sep 17 00:00:00 2001 From: rubenvdlinde Date: Tue, 3 Oct 2023 07:43:23 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Conducti?= =?UTF-8?q?onNL/woo-website-template@3652041817037b8ddffa27aa84d2cd4e25cbb?= =?UTF-8?q?4d4=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.production | 10 +- 404.html | 2 +- 404/index.html | 2 +- 824715f2-9a571035d7fa666a5995.js | 3 - 824715f2-9a571035d7fa666a5995.js.LICENSE.txt | 20 -- 824715f2-9a571035d7fa666a5995.js.map | 1 - 824715f2-cf6903bb3e85bc31c3f7.js | 2 + 824715f2-cf6903bb3e85bc31c3f7.js.map | 1 + app-6639f1b7135524d62c20.js | 2 - app-6639f1b7135524d62c20.js.map | 1 - app-691c16228636cc4657d3.js | 172 ++++++++++++++++++ app-691c16228636cc4657d3.js.map | 1 + ...da0655b75dce486150-6f32ced9342f6257de00.js | 4 +- ...55b75dce486150-6f32ced9342f6257de00.js.map | 2 +- chunk-map.json | 2 +- ...ages-index-tsx-27d3a5d0409674b8b1aa.js.map | 2 +- ...0bf6c000a41750d3ae-7092355ff9cb15f3e97a.js | 2 - ...c000a41750d3ae-7092355ff9cb15f3e97a.js.map | 1 - index.html | 2 +- page-data/app-data.json | 2 +- pages/[pageSlug]/PagePage/index.html | 2 +- .../DetailPagePage/index.html | 2 +- pages/[pageSlug]/[detailPageSlug]/index.html | 2 +- pages/[pageSlug]/index.html | 2 +- polyfill-6f359069bdd40accc0ca.js | 2 - polyfill-6f359069bdd40accc0ca.js.map | 1 - polyfill-d0eaa03600fa3502db2d.js | 2 + polyfill-d0eaa03600fa3502db2d.js.map | 1 + ...lar-412e45c741452c89a5c7970cd251af65.woff2 | Bin 0 -> 65180 bytes styles.cc997a6f8aa20c7bd3f4.css | 1 + styles.eafad1ec685f92e10dcc.css | 1 - ...=> webpack-runtime-88deb313a23e9636780f.js | 4 +- ...ebpack-runtime-88deb313a23e9636780f.js.map | 2 +- webpack.stats.json | 2 +- 34 files changed, 202 insertions(+), 56 deletions(-) delete mode 100644 824715f2-9a571035d7fa666a5995.js delete mode 100644 824715f2-9a571035d7fa666a5995.js.LICENSE.txt delete mode 100644 824715f2-9a571035d7fa666a5995.js.map create mode 100644 824715f2-cf6903bb3e85bc31c3f7.js create mode 100644 824715f2-cf6903bb3e85bc31c3f7.js.map delete mode 100644 app-6639f1b7135524d62c20.js delete mode 100644 app-6639f1b7135524d62c20.js.map create mode 100644 app-691c16228636cc4657d3.js create mode 100644 app-691c16228636cc4657d3.js.map rename bdc830151bc7b5d7fdd819da0655b75dce486150-7540c7a6ae72cc460e45.js => bdc830151bc7b5d7fdd819da0655b75dce486150-6f32ced9342f6257de00.js (87%) rename bdc830151bc7b5d7fdd819da0655b75dce486150-7540c7a6ae72cc460e45.js.map => bdc830151bc7b5d7fdd819da0655b75dce486150-6f32ced9342f6257de00.js.map (80%) delete mode 100644 dc6a8720040df98778fe970bf6c000a41750d3ae-7092355ff9cb15f3e97a.js delete mode 100644 dc6a8720040df98778fe970bf6c000a41750d3ae-7092355ff9cb15f3e97a.js.map delete mode 100644 polyfill-6f359069bdd40accc0ca.js delete mode 100644 polyfill-6f359069bdd40accc0ca.js.map create mode 100644 polyfill-d0eaa03600fa3502db2d.js create mode 100644 polyfill-d0eaa03600fa3502db2d.js.map create mode 100644 static/TisaSansPro-Regular-412e45c741452c89a5c7970cd251af65.woff2 create mode 100644 styles.cc997a6f8aa20c7bd3f4.css delete mode 100644 styles.eafad1ec685f92e10dcc.css rename webpack-runtime-1bb02cfdb021cebc516a.js => webpack-runtime-88deb313a23e9636780f.js (89%) rename webpack-runtime-1bb02cfdb021cebc516a.js.map => webpack-runtime-88deb313a23e9636780f.js.map (98%) diff --git a/.env.production b/.env.production index ff9795e2..b5aa56c8 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ GITHUB_REPOSITORY_NAME=woo-website-template USE_GITHUB_REPOSITORY_NAME_AS_PATH_PREFIX=false GATSBY_GITHUB_API_BASE_URL=https://api.github.com/repos/ConductionNL/woo-website-template/contents -GATSBY_FAVICON_URL=https://xxllnc.nl/wp-content/uploads/2021/07/cropped-fav-xxllnc-32x32.png +GATSBY_FAVICON_URL=https://openwebconcept.nl/wp-content/uploads/2019/07/cropped-Favicon-32x32.png GATSBY_PAGE_TITLE=OpenWoo -GATSBY_NAVBAR_LOGO_URL=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxNzUuNCA0Mi4yIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxNzUuNCA0Mi4yOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGQ9Ik03OC4zLDQwLjdoNy4yVjAuNGgtNy4yVjQwLjd6IE05NC44LDQwLjdoNy4yVjAuNGgtNy4yVjQwLjd6IE02NC41LDkuNEw1My40LDIwLjhsLTExLTExLjRsLTQuOCw0LjlsMTEuMSwxMS40TDM3LjYsMzcuMQoJbDQuOCw0LjlsMTEuMS0xMS40bDExLDExLjRsNC44LTQuOUw1OC4yLDI1LjdsMTEuMS0xMS40TDY0LjUsOS40eiBNMjcuMiw5LjRMMTYuMSwyMC44TDUuMSw5LjRsLTQuOCw0LjlsMTEuMSwxMS40TDAuMywzNy4xTDUuMSw0MgoJbDExLjEtMTEuNGwxMSwxMS40bDQuOC00LjlMMjAuOSwyNS43TDMyLDE0LjNMMjcuMiw5LjR6IE0xMjQuOCwxMC43Yy04LjIsMC0xNC4zLDUuMi0xNC4zLDE0LjF2MTUuOWg3LjJWMjVjMC00LjgsMy03LjMsNy4xLTcuMwoJczcuMSwyLjYsNy4xLDcuM3YxNS44aDcuMnYtMTZDMTM5LjEsMTUuOCwxMzMsMTAuNywxMjQuOCwxMC43eiBNMTYwLjQsMzQuOGMtNC41LDAtOC4yLTMuOS04LjItOC44YzAtNC44LDMuNy04LjgsOC4yLTguOAoJYzMuNCwwLDYuMywyLjIsNy41LDUuM2g3LjJjLTEuMy03LTcuMS0xMS44LTE0LjYtMTEuOGMtOC44LDAtMTUuMiw2LjUtMTUuMiwxNS40YzAsOC44LDYuNCwxNS4zLDE1LjIsMTUuMwoJYzcuNSwwLDEzLjMtNC44LDE0LjYtMTEuN2gtNy4yQzE2Ni42LDMyLjYsMTYzLjcsMzQuOCwxNjAuNCwzNC44eiIvPgo8L3N2Zz4K +GATSBY_NAVBAR_LOGO_URL=https://openwebconcept.nl/wp-content/themes/openwebconcept/assets/src/images/logo@2x.png GATSBY_GITHUB_DOCS_DIRECTORY_PATHS=[{"name": "Documentatie", "location": "/docs"}] GATSBY_SLACK_URL=false GATSBY_READ_THE_DOCS_URL=false @@ -12,6 +12,6 @@ GATSBY_JUMBOTRON_TITLE=Open WOO Website GATSBY_JUMBOTRON_SUBTITLE=Een index pagina voor WOO publicaties GATSBY_JUMBOTRON_DESCRIPTION=De Open WOO (Wet Open Overheid) website is een digitale oplossing voor op een gestructureerde en doorzoekbare manier beschikbaar te stellen van een breed scala aan documenten en gegevens, zoals raadsinformatie, vergaderstukken en andere officiƫle publicaties. GATSBY_JUMBOTRON_SVG=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX0xheWVyXyIgZGF0YS1uYW1lPSImYW1wO2x0O0xheWVyJmFtcDtndDsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI3NjAgMTg0MCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzA2MDYzMzsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIsIC5jbHMtMywgLmNscy00LCAuY2xzLTUsIC5jbHMtNiwgLmNscy03LCAuY2xzLTgsIC5jbHMtOSwgLmNscy0xMCwgLmNscy0xMSwgLmNscy0xMiwgLmNscy0xMywgLmNscy0xNCwgLmNscy0xNSwgLmNscy0xNiwgLmNscy0xNywgLmNscy0xOCwgLmNscy0xOSwgLmNscy0yMCwgLmNscy0yMSwgLmNscy0yMiwgLmNscy0yMywgLmNscy0yNCwgLmNscy0yNSwgLmNscy0yNiwgLmNscy0yNywgLmNscy0yOCwgLmNscy0yOSwgLmNscy0zMCB7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAwcHg7CiAgICAgIH0KCiAgICAgIC5jbHMtMiB7CiAgICAgICAgZmlsbDogI2VhNjg2ODsKICAgICAgfQoKICAgICAgLmNscy0zMSB7CiAgICAgICAgb3BhY2l0eTogLjc7CiAgICAgIH0KCiAgICAgIC5jbHMtMyB7CiAgICAgICAgZmlsbDogI2ZhNzI2NzsKICAgICAgfQoKICAgICAgLmNscy00IHsKICAgICAgICBmaWxsOiAjYzdkYmY5OwogICAgICB9CgogICAgICAuY2xzLTUgewogICAgICAgIGZpbGw6ICMwYjA3NTU7CiAgICAgIH0KCiAgICAgIC5jbHMtNiB7CiAgICAgICAgZmlsbDogIzYxODRkYjsKICAgICAgfQoKICAgICAgLmNscy03IHsKICAgICAgICBmaWxsOiAjNmM4MWVhOwogICAgICB9CgogICAgICAuY2xzLTggewogICAgICAgIGZpbGw6ICNkZGU3ZmU7CiAgICAgIH0KCiAgICAgIC5jbHMtOSB7CiAgICAgICAgZmlsbDogIzI3MjAzNTsKICAgICAgfQoKICAgICAgLmNscy0xMCB7CiAgICAgICAgZmlsbDogI2ZmOGI4NTsKICAgICAgfQoKICAgICAgLmNscy0xMSB7CiAgICAgICAgZmlsbDogI2JkZDFmOTsKICAgICAgfQoKICAgICAgLmNscy0xMiB7CiAgICAgICAgZmlsbDogI2FiYmJmZjsKICAgICAgfQoKICAgICAgLmNscy0xMyB7CiAgICAgICAgZmlsbDogI2U1ODg3NjsKICAgICAgfQoKICAgICAgLmNscy0xNCB7CiAgICAgICAgZmlsbDogI2U3ZWVmZDsKICAgICAgfQoKICAgICAgLmNscy0xNSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0zMiB7CiAgICAgICAgb3BhY2l0eTogLjM7CiAgICAgIH0KCiAgICAgIC5jbHMtMTYgewogICAgICAgIGZpbGw6ICNmYWZjZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtMTcgewogICAgICAgIGZpbGw6ICM5MWI1Zjg7CiAgICAgIH0KCiAgICAgIC5jbHMtMTggewogICAgICAgIGZpbGw6ICMxMzEzNzU7CiAgICAgIH0KCiAgICAgIC5jbHMtMTkgewogICAgICAgIGZpbGw6ICM4ZjlmZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtMjAgewogICAgICAgIGZpbGw6ICNmOWE1OGY7CiAgICAgIH0KCiAgICAgIC5jbHMtMjEgewogICAgICAgIGZpbGw6ICMwNTA1MjE7CiAgICAgIH0KCiAgICAgIC5jbHMtMjIgewogICAgICAgIGZpbGw6ICM0ODUxZWM7CiAgICAgIH0KCiAgICAgIC5jbHMtMjMgewogICAgICAgIGZpbGw6ICMzODYyYzE7CiAgICAgIH0KCiAgICAgIC5jbHMtMjQgewogICAgICAgIGZpbGw6ICMxNzE3NzU7CiAgICAgIH0KCiAgICAgIC5jbHMtMjUgewogICAgICAgIGZpbGw6ICM3YzlhZjI7CiAgICAgIH0KCiAgICAgIC5jbHMtMjYgewogICAgICAgIGZpbGw6ICMyNDBkMzk7CiAgICAgIH0KCiAgICAgIC5jbHMtMjcgewogICAgICAgIGZpbGw6ICNkMzY4NTc7CiAgICAgIH0KCiAgICAgIC5jbHMtMjggewogICAgICAgIGZpbGw6ICNlMjdkN2Q7CiAgICAgIH0KCiAgICAgIC5jbHMtMjkgewogICAgICAgIGZpbGw6ICMyZjNkYmM7CiAgICAgIH0KCiAgICAgIC5jbHMtMzAgewogICAgICAgIGZpbGw6ICM2YzdhZmY7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxwYXRoIGNsYXNzPSJjbHMtOCIgZD0ibTIyNjAuOTQsMTU1OC45M2MtNzQuNTQsMTkuOTctMjQ4LjY0LDMuMzYtMzIxLjcxLS45M2wtMTUwOS44NS42OWMtMjA1LjgzLTEzMS43LTQ0MS40Ni01NDIuOTYsNDEuODMtODgwLjE3LDE4NS4yOC0xMjkuMjctNjMuMzctMzgwLjgzLDM2MC43NS00ODguNDEsMzkzLjkyLTk5LjkxLDMwOC41LDE1Ny40MSw4NjguODEtMjEuNzYsNDIwLjY0LTEzNC41MSw1ODguNjUsMTc1Ljk2LDYxOC40MywyNzYuNjcsMTUuMTYsNTEuMjQsMTkuMDcsMTA1LjkxLDMyLjMsMTU3LjgzLDM2LjUxLDE0My4zMiwxNTguMjYsMTczLDIyNS40NywzMzIuMzksNzAuMjgsMTY2LjY3LDYyLjI5LDUyMi4zNC0zMTYuMDQsNjIzLjY5WiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0ibTI1MjYuNzUsMTUyNy4yYzAtODQuNy01MDIuMTItMTUzLjM2LTExMjEuNTItMTUzLjM2cy0xMTIxLjUyLDY4LjY2LTExMjEuNTIsMTUzLjM2LDUwMi4xMiwxNTMuMzYsMTEyMS41MiwxNTMuMzYsMTEyMS41Mi02OC42NiwxMTIxLjUyLTE1My4zNloiLz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMTU3Ljg3LDY3MC44NWMuMDksMCwuMTctLjAyLjI2LS4wNC42OS0uMTksMS4xLS45LjkyLTEuNi00OC45Ny0xODEuMjktOTQuNTUtMzA5LjU5LTEyOC4zNi0zNjEuMjYtLjc1LTEuMTUtMS4yOS0xLjk4LTEuNS0yLjM5LS4zMi0uNjUtMS4xLS45MS0xLjc0LS42LS42NC4zMi0uOTEsMS4wOS0uNiwxLjc0LjI4LjU2LjgsMS4zNiwxLjY2LDIuNjgsMzMuNjYsNTEuNDYsNzkuMTMsMTc5LjQ5LDEyOC4wMywzNjAuNTIuMTYuNjEuNzMsMSwxLjM0Ljk2WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEwMDYuMzYsMjk4LjAxYzQuMDEsNS44MSwyNC43MywxNi44NCwyNi4zOSwxNS43LDEuNjYtMS4xNS0xLjM1LTI0LjQyLTUuMzYtMzAuMjMtNC4wMS01LjgxLTExLjk3LTcuMjYtMTcuNzgtMy4yNS01LjgxLDQuMDEtNy4yNiwxMS45Ny0zLjI1LDE3Ljc4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEwNDYuNDQsMzE2LjQ1Yy0yLjI3LDYuODUsMS40NywzMC41NywzLjQzLDMxLjIyLDEuOTYuNjUsMTkuMTItMTYuMTQsMjEuNC0yMywyLjI3LTYuODUtMS40NC0xNC4yNS04LjMtMTYuNTItNi44NS0yLjI3LTE0LjI1LDEuNDQtMTYuNTIsOC4zWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEwMjAuMjMsMzU3YzcuMTkuNjcsMjkuNDYtOC4zMiwyOS42NS0xMC4zNy4xOS0yLjA1LTIwLjAzLTE1LTI3LjIyLTE1LjY3LTcuMTktLjY3LTEzLjU2LDQuNjItMTQuMjMsMTEuODEtLjY3LDcuMTksNC42MiwxMy41NiwxMS44MSwxNC4yM1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMTA0LjgsNDM3LjMzYy01LjAzLDExLjAzLTMuMDgsNTEuMjkuMDcsNTIuNzIsMy4xNSwxLjQ0LDM0LjgzLTIzLjQ4LDM5Ljg2LTM0LjUsNS4wMy0xMS4wMy4xNy0yNC4wNS0xMC44Ni0yOS4wOC0xMS4wMy01LjAzLTI0LjA0LS4xNy0yOS4wOCwxMC44NloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMDUzLjcyLDUwMC4yN2MxMS44OCwyLjQyLDUwLjY2LTguNTUsNTEuMzUtMTEuOTQuNjktMy4zOS0zMC43Mi0yOC42NS00Mi41OS0zMS4wNy0xMS44OC0yLjQyLTIzLjQ3LDUuMjUtMjUuODgsMTcuMTMtMi40MiwxMS44OCw1LjI1LDIzLjQ3LDE3LjEzLDI1Ljg4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTExMzUuMDMsNDgzLjE4Yy04Ljk4LDExLjgxLTE3LjQ5LDYwLjM5LTE0LjEyLDYyLjk1LDMuMzcsMi41Niw0Ny45MS0xOC42NCw1Ni44OC0zMC40NXM2LjY4LTI4LjY2LTUuMTMtMzcuNjNjLTExLjgxLTguOTgtMjguNjYtNi42OC0zNy42Myw1LjEzWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEwNjIuMTksNTY1LjM4YzE0Ljc2LDEuNDUsNjAuNTktMTYuNzgsNjEtMjEsLjQxLTQuMjEtNDEtMzEuMDEtNTUuNzYtMzIuNDYtMTQuNzYtMS40NS0yNy45LDkuMzQtMjkuMzUsMjQuMTEtMS40NSwxNC43Niw5LjM0LDI3LjksMjQuMTEsMjkuMzVaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTE1Mi44Nyw1NDIuMzVjLTguOTgsMTEuODEtMTcuNDksNjAuMzktMTQuMTIsNjIuOTUsMy4zNywyLjU2LDQ3LjktMTguNjQsNTYuODgtMzAuNDUsOC45OC0xMS44MSw2LjY4LTI4LjY2LTUuMTMtMzcuNjMtMTEuODEtOC45OC0yOC42Ni02LjY4LTM3LjYzLDUuMTNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTA4MC4wMyw2MjQuNTRjMTQuNzYsMS40NSw2MC41OS0xNi43OSw2MS0yMSwuNDEtNC4yMS00MS0zMS4wMS01NS43Ni0zMi40Ni0xNC43Ni0xLjQ1LTI3LjksOS4zNC0yOS4zNSwyNC4xMS0xLjQ1LDE0Ljc2LDkuMzQsMjcuOSwyNC4xLDI5LjM1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTExOTMuNTMsNjE3LjIxYy0xMi44LDcuNS0zOS4xNyw0OS4xOC0zNy4wMyw1Mi44MywyLjE0LDMuNjUsNTEuMzksMS4wMSw2NC4xOS02LjQ5LDEyLjgtNy41LDE3LjA5LTIzLjk1LDkuNTktMzYuNzUtNy41LTEyLjgtMjMuOTUtMTcuMDktMzYuNzUtOS41OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMDk1LjY0LDY4My4wMWMxNC40NiwzLjI4LDYyLjIxLTkuMDgsNjMuMTUtMTMuMjEuOTQtNC4xMy0zNi44LTM1Ljg5LTUxLjI2LTM5LjE3LTE0LjQ2LTMuMjgtMjguODUsNS43OC0zMi4xMywyMC4yNS0zLjI4LDE0LjQ2LDUuNzgsMjguODUsMjAuMjUsMzIuMTNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTA2NC40MywzNTQuMDhjLTIuMzEsNi45NiwxLjQ5LDMxLjA2LDMuNDgsMzEuNzJzMTkuNDMtMTYuNCwyMS43NC0yMy4zNmMyLjMxLTYuOTYtMS40Ny0xNC40OC04LjQzLTE2Ljc5cy0xNC40OCwxLjQ3LTE2Ljc5LDguNDNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTAzOC43MywzOTUuNzZjNy4zLjY4LDI5LjkzLTguNDUsMzAuMTItMTAuNTQuMTktMi4wOC0yMC4zNS0xNS4yNC0yNy42Ni0xNS45Mi03LjMtLjY4LTEzLjc4LDQuNjktMTQuNDYsMTEuOTktLjY4LDcuMzEsNC42OSwxMy43OCwxMS45OSwxNC40NloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMDg1LjE5LDM4OS4xNWMtNC4wOCw5LjU5LTEuNSw0NC4xNiwxLjIzLDQ1LjMyLDIuNzQsMS4xNiwyOS40Mi0yMC45NiwzMy41LTMwLjU1LDQuMDgtOS41OS0uMzktMjAuNjctOS45OC0yNC43NS05LjU5LTQuMDgtMjAuNjcuMzktMjQuNzUsOS45OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMDQzLjk2LDQ0OC4yN2MxMC4zOC45Nyw0Mi41Mi0xMiw0Mi44LTE0Ljk3LjI4LTIuOTYtMjguOTItMjEuNjUtMzkuMjktMjIuNjItMTAuMzgtLjk3LTE5LjU4LDYuNjYtMjAuNTQsMTcuMDQtLjk3LDEwLjM4LDYuNjYsMTkuNTgsMTcuMDQsMjAuNTRaIi8+CiAgPC9nPgogIDxnPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTExMDIuMTgsNzMyLjQ2czk3LjU4LTIyNC0zMTEuMTgtMzI1Ljk1YzAsMCw1OS4xNCw0MjkuODYsMzExLjE4LDMyNS45NVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTciIGQ9Im03OTAuNDIsNDA1Ljg5bDMxOSwyOTYuNjNjMTAuNTUtNjQuMS0uOTYtMjE3LjMtMzE5LTI5Ni42M1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0ibTEwOTYuMDMsNjkwLjdjLjE2LS4wMi4zMi0uMDkuNDQtLjIyLjI3LS4yOS4yNS0uNzQtLjA0LTFsLTMwNS41My0yODQuMWMtLjI5LS4yNy0uNzQtLjI1LTEsLjA0LS4yNy4yOS0uMjUuNzQuMDQsMWwzMDUuNTMsMjg0LjFjLjE2LjE1LjM3LjIxLjU3LjE4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtOTUwLDU1NC45MWMuMzUtLjA0LjYyLS4zMy42Mi0uNjksMC0uMzktLjMxLS43MS0uNy0uNzJsLTExNS44OC0xLjYzYy0uMzgtLjAzLS43MS4zMS0uNzIuNywwLC4zOS4zMS43Mi43LjcybDExNS44OCwxLjY0cy4wNiwwLC4xLDBaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Im0xMDE1LjQ1LDYxNS43NnMuMDktLjAxLjE0LS4wM2MuMzctLjEyLjU3LS41My40NS0uOWwtMzUuNzgtMTA4Yy0uMTItLjM3LS41My0uNTgtLjktLjQ1LS4zNy4xMi0uNTcuNTMtLjQ1LjlsMzUuNzgsMTA4Yy4xMS4zMy40My41Mi43Ni40OFoiLz4KICA8L2c+CiAgPGc+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTE3IiBkPSJtMTAxMi44Nyw3MjguMjdzLTMuOC0xOTcuNzgtMzM5LjAyLTEzNC44M2MwLDAsMTg4LjYyLDI5Ni4zNywzMzkuMDIsMTM0LjgzWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTY3My44NSw1OTMuNDVsMzM5LjAyLDEzNC44M3MtMTE5LjU4LDE3NS45LTMzOS4wMi0xMzQuODNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTE3IiBkPSJtNzU3LjcxLDY2NC4zM2MuMDUsMCwuMSwwLC4xNSwwbDgzLjk1LTYuMzFjLjY0LS4wNSwxLjExLS42LDEuMDctMS4yNC0uMDUtLjY0LS42MS0xLjExLTEuMjQtMS4wN2wtODMuOTUsNi4zMWMtLjY0LjA1LTEuMTEuNi0xLjA2LDEuMjQuMDQuNTkuNTIsMS4wNCwxLjA5LDEuMDdaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTE3IiBkPSJtODY2Ljg0LDczNC40NmMuMDksMCwuMTcsMCwuMjYtLjAybDEwOS43LTE5LjQ1Yy42My0uMTEsMS4wNS0uNzEuOTMtMS4zMy0uMTEtLjYzLS43LTEuMDUtMS4zNC0uOTRsLTEwOS43LDE5LjQ1Yy0uNjMuMTEtMS4wNS43MS0uOTQsMS4zNC4xLjU0LjU1LjkyLDEuMDguOTVaIi8+CiAgPC9nPgogIDxnPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE5MjUuNDMsMTQ2Ny44N3MtNjUuMy0xNDkuOSwyMDguMjUtMjE4LjEzYzAsMC0zOS41NywyODcuNjctMjA4LjI1LDIxOC4xM1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTciIGQ9Im0yMTM0LjA2LDEyNDkuMzNsLTIxMy40OCwxOTguNWMtNy4wNi00Mi44OS42NC0xNDUuNDIsMjEzLjQ4LTE5OC41WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMTkyOS41NSwxNDM5LjkyYy0uMTEtLjAxLS4yMS0uMDYtLjI5LS4xNS0uMTgtLjE5LS4xNy0uNDkuMDMtLjY3bDIwNC40Ni0xOTAuMTJjLjE5LS4xOC40OS0uMTYuNjcuMDIuMTguMTkuMTcuNDktLjAyLjY3bC0yMDQuNDYsMTkwLjEyYy0uMTEuMS0uMjUuMTQtLjM4LjEyWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjAyNy4yNywxMzQ5LjA1Yy0uMjMtLjAzLS40MS0uMjItLjQyLS40NiwwLS4yNi4yMS0uNDguNDctLjQ4bDc3LjU1LTEuMDljLjI2LS4wMi40OC4yLjQ4LjQ3LDAsLjI2LS4yMS40OC0uNDcuNDhsLTc3LjU1LDEuMDlzLS4wNCwwLS4wNiwwWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMTk4My40NywxMzg5Ljc4cy0uMDYtLjAxLS4wOS0uMDJjLS4yNS0uMDgtLjM4LS4zNS0uMy0uNmwyMy45NC03Mi4yN2MuMDgtLjI1LjM2LS4zOS42LS4zLjI1LjA4LjM4LjM1LjMuNmwtMjMuOTQsNzIuMjdjLS4wNy4yMi0uMjkuMzUtLjUxLjMyWiIvPgogIDwvZz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTciIGQ9Im0xOTcxLjgxLDE0NjguMXMyLjExLTEwOS42LDE4Ny44OC03NC43MmMwLDAtMTA0LjUzLDE2NC4yNC0xODcuODgsNzQuNzJaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMjE1OS42OSwxMzkzLjM4bC0xODcuODgsNzQuNzJzNjYuMjcsOTcuNDgsMTg3Ljg4LTc0LjcyWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xNyIgZD0ibTIxMTMuMjIsMTQzMi42N3MtLjA2LDAtLjA4LDBsLTQ2LjUyLTMuNWMtLjM1LS4wMy0uNjItLjMzLS41OS0uNjkuMDMtLjM1LjM0LS42MS42OS0uNTlsNDYuNTIsMy41Yy4zNS4wMy42Mi4zMy41OS42OS0uMDIuMzMtLjI5LjU4LS42LjU5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xNyIgZD0ibTIwNTIuNzQsMTQ3MS41MnMtLjEsMC0uMTUsMGwtNjAuNzktMTAuNzhjLS4zNS0uMDYtLjU4LS4zOS0uNTItLjc0LjA2LS4zNS4zOS0uNTguNzQtLjUybDYwLjc5LDEwLjc4Yy4zNS4wNi41OC4zOS41Mi43NC0uMDUuMy0uMzEuNTEtLjYuNTNaIi8+CiAgPC9nPgogIDxnPgogICAgPHJlY3QgY2xhc3M9ImNscy0xOSIgeD0iNDI2LjU2IiB5PSI4MzcuNTQiIHdpZHRoPSI5OS45NSIgaGVpZ2h0PSIzMjIuNDUiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMzAiIHg9IjUyNi41MiIgeT0iODM3LjU0IiB3aWR0aD0iMjQxLjA0IiBoZWlnaHQ9IjMyMi40NSIvPgogICAgPHBhdGggY2xhc3M9ImNscy04IiBkPSJtNDU5Ljg2LDg3Ny44MWMwLTkuMjEsNy40Ny0xNi42OCwxNi42OC0xNi42OHMxNi42OCw3LjQ3LDE2LjY4LDE2LjY4LTcuNDcsMTYuNjgtMTYuNjgsMTYuNjgtMTYuNjgtNy40Ny0xNi42OC0xNi42OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMzAiIGQ9Im00NjQuNzQsODc3LjgxYzAtNi41MSw1LjI4LTExLjgsMTEuOC0xMS44czExLjgsNS4yOCwxMS44LDExLjgtNS4yOCwxMS44LTExLjgsMTEuOC0xMS44LTUuMjgtMTEuOC0xMS44WiIvPgogICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSI0NTMuNCIgeT0iOTE4LjAxIiB3aWR0aD0iNDcuMDEiIGhlaWdodD0iODQuOTMiLz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTEyIiB4PSI1NTYuNjYiIHk9IjgzNy41NCIgd2lkdGg9Ijk5Ljk1IiBoZWlnaHQ9IjMyMi40NSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iNjU2LjI0IiB5PSI4MzcuNTQiIHdpZHRoPSIyNDEuMDQiIGhlaWdodD0iMzIyLjQ1Ii8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Im01ODkuNTgsODc3LjgxYzAtOS4yMSw3LjQ3LTE2LjY4LDE2LjY4LTE2LjY4czE2LjY4LDcuNDcsMTYuNjgsMTYuNjgtNy40NywxNi42OC0xNi42OCwxNi42OC0xNi42OC03LjQ3LTE2LjY4LTE2LjY4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zMCIgZD0ibTU5NC40Nyw4NzcuODFjMC02LjUxLDUuMjgtMTEuOCwxMS44LTExLjhzMTEuOCw1LjI4LDExLjgsMTEuOC01LjI4LDExLjgtMTEuOCwxMS44LTExLjgtNS4yOC0xMS44LTExLjhaIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjU4My4xMiIgeT0iOTE4LjAxIiB3aWR0aD0iNDcuMDIiIGhlaWdodD0iODQuOTMiLz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTEyIiB4PSI2OTMuNTEiIHk9IjgzNy41NCIgd2lkdGg9Ijk5Ljk1IiBoZWlnaHQ9IjMyMi40NSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iNzkzLjA5IiB5PSI4MzcuNTQiIHdpZHRoPSIyNDEuMDQiIGhlaWdodD0iMzIyLjQ1Ii8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Im03MjYuNDQsODc3LjgxYzAtOS4yMSw3LjQ3LTE2LjY4LDE2LjY4LTE2LjY4czE2LjY4LDcuNDcsMTYuNjgsMTYuNjgtNy40NywxNi42OC0xNi42OCwxNi42OC0xNi42OC03LjQ3LTE2LjY4LTE2LjY4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zMCIgZD0ibTczMS4zMiw4NzcuODFjMC02LjUxLDUuMjgtMTEuOCwxMS44LTExLjhzMTEuOCw1LjI4LDExLjgsMTEuOC01LjI4LDExLjgtMTEuOCwxMS44LTExLjgtNS4yOC0xMS44LTExLjhaIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjcxOS45OCIgeT0iOTE4LjAxIiB3aWR0aD0iNDcuMDEiIGhlaWdodD0iODQuOTMiLz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjU3Ni4yMiIgeT0iMTA0Ny41MyIgd2lkdGg9IjU2NC43MyIgaGVpZ2h0PSI0MTcuMjUiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTAiIHg9IjM5MC41NiIgeT0iMTA0Ny41MyIgd2lkdGg9IjQ0Ny43NiIgaGVpZ2h0PSI0MTcuMjUiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTkiIHg9IjUwNS4xNyIgeT0iMTA4Ny44NCIgd2lkdGg9IjE0Mi4xIiBoZWlnaHQ9IjI3LjgiIHJ4PSIxMy4wNiIgcnk9IjEzLjA2Ii8+CiAgPC9nPgogIDxnPgogICAgPGc+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxMDQuMDgiIHk9IjM0NC43NCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQzMjguNTEgMTEwMi42NSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0yMTkyLjQ2LDY2OC44YzAtMTUuNTgtMTIuNjMtMjguMjEtMjguMjEtMjguMjFzLTI4LjIxLDEyLjYzLTI4LjIxLDI4LjIxLDEyLjYzLDI4LjIxLDI4LjIxLDI4LjIxLDI4LjIxLTEyLjYzLDI4LjIxLTI4LjIxWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTUiIGQ9Im0yMTY0LjI1LDcwMC4xNWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIyMTI5IiB5PSIzNjMuNjUiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQzMjguNDggOTU5LjU0KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjIxMzcuMjYiIHk9IjM3Mi4wNSIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjkuMzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQzMjcuMDUgNzUzLjQyKSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxnPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMjE0OS4zMSIgeT0iNTQyLjA4IiB3aWR0aD0iNTIuNTIiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYzMS4xNiAyNzE5Ljk4KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMjE0OS4zMSIgeT0iNDc2LjIyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTY5Ny4wMiAyNjU0LjEyKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMjEyMi42IiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjA0LjQ2IDI2OTMuMjcpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTIyLjYiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2NzAuMzEgMjYyNy40Mikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxMjkuNzQiIHk9IjUzNS4zMyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MjUuMTEgMjcwMC40Mikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxMjkuNzQiIHk9IjQ1Mi41MyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3MDcuOSAyNjE3LjYyKSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgICA8Zz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxOTY2Ljc1IiB5PSIzNDQuNzQiIHdpZHRoPSIxMjAuMzQiIGhlaWdodD0iNDEzLjE3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDUzLjg0IDExMDIuNjUpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xzLTYiIGN4PSIyMDI2LjkyIiBjeT0iNjY4LjgiIHI9IjI4LjIxIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTIwMjYuOTIsNzAwLjE1Yy0xNy4yLDAtMzEuMTktMTMuOTktMzEuMTktMzEuMTlzMTMuOTktMzEuMTksMzEuMTktMzEuMTksMzEuMTksMTMuOTksMzEuMTksMzEuMTktMTMuOTksMzEuMTktMzEuMTksMzEuMTlabTAtNTYuNDFjLTEzLjkxLDAtMjUuMjIsMTEuMzEtMjUuMjIsMjUuMjJzMTEuMzEsMjUuMjIsMjUuMjIsMjUuMjIsMjUuMjItMTEuMzEsMjUuMjItMjUuMjItMTEuMzEtMjUuMjItMjUuMjItMjUuMjJaIi8+CiAgICAgICAgPGcgY2xhc3M9ImNscy0zMSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE5OTEuNjciIHk9IjM2My42NSIgd2lkdGg9IjcwLjQ3IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDA1My44IDk1OS41NCkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8L2c+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxOTk5LjkyIiB5PSIzNzIuMDUiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDUyLjM3IDc1My40Mikgcm90YXRlKDE4MCkiLz4KICAgICAgICA8Zz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIwMTEuOTciIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0OTMuODMgMjU4Mi42NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIwMTEuOTciIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1NTkuNjggMjUxNi43OSkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5ODUuMjciIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0NjcuMTIgMjU1NS45NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5ODUuMjciIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MzIuOTggMjQ5MC4wOCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5OTIuNDEiIHk9IjUzNS4zMyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0ODcuNzcgMjU2My4wOCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5OTIuNDEiIHk9IjQ1Mi41MyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1NzAuNTcgMjQ4MC4yOCkgcm90YXRlKC05MCkiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgICAgPGc+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTgyOS40MSIgeT0iMzQ0Ljc0IiB3aWR0aD0iMTIwLjM0IiBoZWlnaHQ9IjQxMy4xNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzc3OS4xNyAxMTAyLjY1KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxjaXJjbGUgY2xhc3M9ImNscy02IiBjeD0iMTg4OS41OCIgY3k9IjY2OC44IiByPSIyOC4yMSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTUiIGQ9Im0xODg5LjU4LDcwMC4xNWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIxODU0LjMzIiB5PSIzNjMuNjUiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM3NzkuMTMgOTU5LjU0KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjE4NjIuNTkiIHk9IjM3Mi4wNSIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjkuMzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM3NzcuNyA3NTMuNDIpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODc0LjY0IiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzU2LjQ5IDI0NDUuMzEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODc0LjY0IiB5PSI0NzYuMjIiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDIyLjM1IDIzNzkuNDUpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODQ3LjkzIiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzI5Ljc5IDI0MTguNikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE4NDcuOTMiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzOTUuNjQgMjM1Mi43NSkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE4NTUuMDciIHk9IjUzNS4zMiIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNTAuNDQgMjQyNS43NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE4NTUuMDciIHk9IjQ1Mi41MyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0MzMuMjMgMjM0Mi45NSkgcm90YXRlKC05MCkiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgICAgPGc+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTY5Mi4wOCIgeT0iMzQ0Ljc0IiB3aWR0aD0iMTIwLjM0IiBoZWlnaHQ9IjQxMy4xNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwNC40OSAxMTAyLjY1KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNiIgZD0ibTE3ODAuNDUsNjY4LjhjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yLTI4LjIxcy0yOC4yMSwxMi42My0yOC4yMSwyOC4yMSwxMi42MywyOC4yMSwyOC4yMSwyOC4yMSwyOC4yLTEyLjYzLDI4LjItMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTE3NTIuMjUsNzAwLjE1Yy0xNy4yLDAtMzEuMTktMTMuOTktMzEuMTktMzEuMTlzMTMuOTktMzEuMTksMzEuMTktMzEuMTksMzEuMTksMTMuOTksMzEuMTksMzEuMTktMTMuOTksMzEuMTktMzEuMTksMzEuMTlabTAtNTYuNDFjLTEzLjkxLDAtMjUuMjIsMTEuMzEtMjUuMjIsMjUuMjJzMTEuMzEsMjUuMjIsMjUuMjIsMjUuMjIsMjUuMjItMTEuMzEsMjUuMjItMjUuMjItMTEuMzEtMjUuMjItMjUuMjItMjUuMjJaIi8+CiAgICAgICAgPGcgY2xhc3M9ImNscy0zMSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE3MTYuOTkiIHk9IjM2My42NSIgd2lkdGg9IjcwLjQ4IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwNC40NiA5NTkuNTQpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPC9nPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTcyNS4yNSIgeT0iMzcyLjA1IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iOS4zMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwMy4wMyA3NTMuNDIpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNzM3LjMiIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMTkuMTUgMjMwNy45Nykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE3MzcuMyIgeT0iNDc2LjIyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI4NS4wMSAyMjQyLjExKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxMC42IiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTkyLjQ1IDIyODEuMjcpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNzEwLjYiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyNTguMzEgMjIxNS40MSkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE3MTcuNzQiIHk9IjUzNS4zMyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMTMuMSAyMjg4LjQxKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxNy43NCIgeT0iNDUyLjUzIiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI5NS45IDIyMDUuNjEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NTQuNzQiIHk9IjM0NC43NCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyMjkuODIgMTEwMi42NSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtNiIgY3g9IjE2MTQuOTEiIGN5PSI2NjguOCIgcj0iMjguMjEiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTE1IiBkPSJtMTYxNC45MSw3MDAuMTVjLTE3LjIsMC0zMS4xOS0xMy45OS0zMS4xOS0zMS4xOXMxMy45OS0zMS4xOSwzMS4xOS0zMS4xOSwzMS4xOSwxMy45OSwzMS4xOSwzMS4xOS0xMy45OSwzMS4xOS0zMS4xOSwzMS4xOVptMC01Ni40MWMtMTMuOTEsMC0yNS4yMiwxMS4zMS0yNS4yMiwyNS4yMnMxMS4zMSwyNS4yMiwyNS4yMiwyNS4yMiwyNS4yMi0xMS4zMSwyNS4yMi0yNS4yMi0xMS4zMS0yNS4yMi0yNS4yMi0yNS4yMloiLz4KICAgICAgICA8ZyBjbGFzcz0iY2xzLTMxIj4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iMTU3OS42NiIgeT0iMzYzLjY1IiB3aWR0aD0iNzAuNDciIGhlaWdodD0iMjMyLjI0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjI5Ljc5IDk1OS41NCkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8L2c+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxNTg3LjkyIiB5PSIzNzIuMDUiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjI4LjM2IDc1My40Mikgcm90YXRlKDE4MCkiLz4KICAgICAgICA8Zz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1OTkuOTYiIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwODEuODIgMjE3MC42NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1OTkuOTYiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExNDcuNjggMjEwNC43OCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NzMuMjYiIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwNTUuMTEgMjE0My45Mykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NzMuMjYiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExMjAuOTcgMjA3OC4wNykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1ODAuNCIgeT0iNTM1LjMzIiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA3NS43NiAyMTUxLjA3KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTU4MC40IiB5PSI0NTIuNTMiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTU4LjU2IDIwNjguMjcpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE0MTcuNCIgeT0iMzQ0Ljc0IiB3aWR0aD0iMTIwLjM0IiBoZWlnaHQ9IjQxMy4xNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjk1NS4xNSAxMTAyLjY1KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNiIgZD0ibTE1MDUuNzgsNjY4LjhjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yMS0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMjEtMTIuNjMsMjguMjEtMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTE0NzcuNTgsNzAwLjE1Yy0xNy4yLDAtMzEuMTktMTMuOTktMzEuMTktMzEuMTlzMTMuOTktMzEuMTksMzEuMTktMzEuMTksMzEuMTksMTMuOTksMzEuMTksMzEuMTktMTMuOTksMzEuMTktMzEuMTksMzEuMTlabTAtNTYuNDFjLTEzLjkxLDAtMjUuMjIsMTEuMzEtMjUuMjIsMjUuMjJzMTEuMzEsMjUuMjIsMjUuMjIsMjUuMjIsMjUuMjItMTEuMzEsMjUuMjItMjUuMjItMTEuMzEtMjUuMjItMjUuMjItMjUuMjJaIi8+CiAgICAgICAgPGcgY2xhc3M9ImNscy0zMSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE0NDIuMzIiIHk9IjM2My42NSIgd2lkdGg9IjcwLjQ3IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjk1NS4xMiA5NTkuNTQpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPC9nPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTQ1MC41OCIgeT0iMzcyLjA1IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iOS4zMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjk1My42OSA3NTMuNDIpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDYyLjYzIiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NDQuNDggMjAzMy4zKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQ2Mi42MyIgeT0iNDc2LjIyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAxMC4zNCAxOTY3LjQ0KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQzNS45MiIgeT0iNTQyLjA4IiB3aWR0aD0iNTIuNTIiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTE3Ljc4IDIwMDYuNTkpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDM1LjkyIiB5PSI0NzYuMjIiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5ODMuNjMgMTk0MC43NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE0NDMuMDYiIHk9IjUzNS4zMyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkzOC40MyAyMDEzLjc0KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQ0My4wNiIgeT0iNDUyLjUzIiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAyMS4yMyAxOTMwLjk0KSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGc+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5NjYuNzUiIHk9IjgxMS43OCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwNTMuODQgMjAzNi43Mykgcm90YXRlKDE4MCkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0yMDU1LjEyLDExMzUuODNjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yMS0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMjEtMTIuNjMsMjguMjEtMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTIwMjYuOTIsMTE2Ny4xOWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIxOTkxLjY3IiB5PSI4MzAuNjkiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwNTMuOCAxODkzLjYxKSByb3RhdGUoMTgwKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjE5OTkuOTIiIHk9IjgzOS4wOSIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjkuMzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwNTIuMzcgMTY4Ny40OSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8Zz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIwMTEuOTciIHk9IjEwMDkuMTIiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDI2Ljc5IDMwNDkuNjgpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMDExLjk3IiB5PSI5NDMuMjYiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDkyLjY1IDI5ODMuODIpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxOTg1LjI3IiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwMC4wOCAzMDIyLjk4KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTk4NS4yNyIgeT0iOTQzLjI2IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA2NS45NCAyOTU3LjEyKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTk5Mi40MSIgeT0iMTAwMi4zNiIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMjAuNzMgMzAzMC4xMikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5OTIuNDEiIHk9IjkxOS41NyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExMDMuNTMgMjk0Ny4zMikgcm90YXRlKC05MCkiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgICAgPGc+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTgyOS40MSIgeT0iODExLjc4IiB3aWR0aD0iMTIwLjM0IiBoZWlnaHQ9IjQxMy4xNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzc3OS4xNyAyMDM2LjczKSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNiIgZD0ibTE5MTcuNzksMTEzNS44M2MwLTE1LjU4LTEyLjYzLTI4LjIxLTI4LjIxLTI4LjIxcy0yOC4yMSwxMi42My0yOC4yMSwyOC4yMSwxMi42MywyOC4yMSwyOC4yMSwyOC4yMSwyOC4yMS0xMi42MywyOC4yMS0yOC4yMVoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTE1IiBkPSJtMTg4OS41OCwxMTY3LjE5Yy0xNy4yLDAtMzEuMTktMTMuOTktMzEuMTktMzEuMTlzMTMuOTktMzEuMTksMzEuMTktMzEuMTksMzEuMTksMTMuOTksMzEuMTksMzEuMTktMTMuOTksMzEuMTktMzEuMTksMzEuMTlabTAtNTYuNDFjLTEzLjkxLDAtMjUuMjIsMTEuMzEtMjUuMjIsMjUuMjJzMTEuMzEsMjUuMjIsMjUuMjIsMjUuMjIsMjUuMjItMTEuMzEsMjUuMjItMjUuMjItMTEuMzEtMjUuMjItMjUuMjItMjUuMjJaIi8+CiAgICAgICAgPGcgY2xhc3M9ImNscy0zMSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE4NTQuMzMiIHk9IjgzMC42OSIgd2lkdGg9IjcwLjQ3IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzc3OS4xMyAxODkzLjYxKSByb3RhdGUoMTgwKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjE4NjIuNTkiIHk9IjgzOS4wOSIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjkuMzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM3NzcuNyAxNjg3LjQ5KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxnPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTg3NC42NCIgeT0iMTAwOS4xMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg4OS40NSAyOTEyLjM1KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTg3NC42NCIgeT0iOTQzLjI2IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTU1LjMxIDI4NDYuNDkpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODQ3LjkzIiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODYyLjc1IDI4ODUuNjQpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODQ3LjkzIiB5PSI5NDMuMjYiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5MjguNiAyODE5Ljc4KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTg1NS4wNyIgeT0iMTAwMi4zNiIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg4My40IDI4OTIuNzgpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODU1LjA3IiB5PSI5MTkuNTYiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NjYuMiAyODA5Ljk4KSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgICA8Zz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNjkyLjA4IiB5PSI4MTEuNzgiIHdpZHRoPSIxMjAuMzQiIGhlaWdodD0iNDEzLjE3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTA0LjQ5IDIwMzYuNzMpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy02IiBkPSJtMTc4MC40NSwxMTM1LjgzYzAtMTUuNTgtMTIuNjMtMjguMjEtMjguMi0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMi0xMi42MywyOC4yLTI4LjIxWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTUiIGQ9Im0xNzUyLjI1LDExNjcuMTljLTE3LjIsMC0zMS4xOS0xMy45OS0zMS4xOS0zMS4xOXMxMy45OS0zMS4xOSwzMS4xOS0zMS4xOSwzMS4xOSwxMy45OSwzMS4xOSwzMS4xOS0xMy45OSwzMS4xOS0zMS4xOSwzMS4xOVptMC01Ni40MWMtMTMuOTEsMC0yNS4yMiwxMS4zMS0yNS4yMiwyNS4yMnMxMS4zMSwyNS4yMiwyNS4yMiwyNS4yMiwyNS4yMi0xMS4zMSwyNS4yMi0yNS4yMi0xMS4zMS0yNS4yMi0yNS4yMi0yNS4yMloiLz4KICAgICAgICA8ZyBjbGFzcz0iY2xzLTMxIj4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iMTcxNi45OSIgeT0iODMwLjY5IiB3aWR0aD0iNzAuNDgiIGhlaWdodD0iMjMyLjI0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTA0LjQ2IDE4OTMuNjEpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPC9nPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTcyNS4yNSIgeT0iODM5LjA5IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iOS4zMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwMy4wMyAxNjg3LjQ5KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxnPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTczNy4zIiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzUyLjEyIDI3NzUuMDEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNzM3LjMiIHk9Ijk0My4yNiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgxNy45NyAyNzA5LjE1KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxMC42IiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzI1LjQxIDI3NDguMzEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNzEwLjYiIHk9Ijk0My4yNiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc5MS4yNyAyNjgyLjQ1KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxNy43NCIgeT0iMTAwMi4zNiIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0Ni4wNiAyNzU1LjQ1KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxNy43NCIgeT0iOTE5LjU3IiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODI4Ljg2IDI2NzIuNjUpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NTQuNzQiIHk9IjgxMS43OCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyMjkuODIgMjAzNi43Mykgcm90YXRlKDE4MCkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0xNjQzLjEyLDExMzUuODNjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yMS0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMjEtMTIuNjMsMjguMjEtMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTE2MTQuOTEsMTE2Ny4xOWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIxNTc5LjY2IiB5PSI4MzAuNjkiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyMjkuNzkgMTg5My42MSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8L2c+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxNTg3LjkyIiB5PSI4MzkuMDkiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjI4LjM2IDE2ODcuNDkpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNTk5Ljk2IiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjE0Ljc4IDI2MzcuNjcpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNTk5Ljk2IiB5PSI5NDMuMjYiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2ODAuNjQgMjU3MS44Mikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NzMuMjYiIHk9IjEwMDkuMTIiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1ODguMDcgMjYxMC45Nykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NzMuMjYiIHk9Ijk0My4yNiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1My45MyAyNTQ1LjExKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTU4MC40IiB5PSIxMDAyLjM2IiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjA4LjczIDI2MTguMTEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNTgwLjQiIHk9IjkxOS41NyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY5MS41MiAyNTM1LjMxKSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgICA8Zz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDE3LjQiIHk9IjgxMS43OCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5NTUuMTUgMjAzNi43Mykgcm90YXRlKDE4MCkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0xNTA1Ljc4LDExMzUuODNjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yMS0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMjEtMTIuNjMsMjguMjEtMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTE0NzcuNTgsMTE2Ny4xOWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIxNDQyLjMyIiB5PSI4MzAuNjkiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5NTUuMTIgMTg5My42MSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8L2c+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxNDUwLjU4IiB5PSI4MzkuMDkiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOTUzLjY5IDE2ODcuNDkpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDYyLjYzIiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDc3LjQ0IDI1MDAuMzQpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDYyLjYzIiB5PSI5NDMuMjYiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NDMuMyAyNDM0LjQ4KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQzNS45MiIgeT0iMTAwOS4xMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ1MC43NCAyNDczLjYzKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQzNS45MiIgeT0iOTQzLjI2IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTE2LjYgMjQwNy43Nykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE0NDMuMDYiIHk9IjEwMDIuMzYiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NzEuMzkgMjQ4MC43Nykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE0NDMuMDYiIHk9IjkxOS41NyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU1NC4xOSAyMzk3Ljk4KSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPHJlY3QgY2xhc3M9ImNscy0xMSIgeD0iMTM4OC40NyIgeT0iMjgxLjYiIHdpZHRoPSIyOC45MyIgaGVpZ2h0PSIxMTk1LjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI4MDUuODggMTc1OSkgcm90YXRlKDE4MCkiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTEiIHg9IjIyMjQuNDUiIHk9IjI4MS42IiB3aWR0aD0iMjguOTMiIGhlaWdodD0iMTE1NS4zNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQ3Ny44NCAxNzE4LjUzKSByb3RhdGUoMTgwKSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0xMSIgeD0iMTM4OC40NyIgeT0iNzUyLjA0IiB3aWR0aD0iODM1Ljk1IiBoZWlnaHQ9IjExLjYyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjEyLjkgMTUxNS43MSkgcm90YXRlKDE4MCkiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTEiIHg9IjEzODguNDciIHk9IjEyMTkuMTQiIHdpZHRoPSI4ODcuODYiIGhlaWdodD0iMTEuNjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM2NjQuOCAyNDQ5Ljg5KSByb3RhdGUoMTgwKSIvPgogIDwvZz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjEiIGQ9Im04NDcuMTksNjM0LjQ4aDExMDAuMjNjMTYuNTYsMCwzMCwxMy40NCwzMCwzMHY4MDIuNzhjMCwxNi41Ni0xMy40NCwzMC0zMCwzMEg4NDcuMTljLTE2LjU2LDAtMzAtMTMuNDQtMzAtMzB2LTgwMi43OGMwLTE2LjU2LDEzLjQ0LTMwLDMwLTMwWiIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0xNSIgeD0iODQzLjM2IiB5PSI2NjQuNjMiIHdpZHRoPSIxMTA3Ljg5IiBoZWlnaHQ9IjgyMy44NiIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0yMSIgeD0iNzAyLjYxIiB5PSIxNDYzLjczIiB3aWR0aD0iMTM4OS4zOSIgaGVpZ2h0PSI1NS4yMyIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0xNyIgeD0iODQzLjM2IiB5PSI2NjQuNjMiIHdpZHRoPSIxMTA3Ljg5IiBoZWlnaHQ9Ijc5OS4xMSIvPgogIDwvZz4KICA8cG9seWdvbiBjbGFzcz0iY2xzLTI1IiBwb2ludHM9IjE2ODcuNiA4MDUuMzQgMTY1MC44OSA3NTEuMTcgMTY0OS4xNSA3NDguNjEgMTY0Ni45MiA3NDguMDQgMTQ2My41MiA3MDEuMSAxMzc3LjY3IDEwMzYuNTUgMTYxNS40MiAxMDk3LjM5IDE2ODguODYgODEwLjQ0IDE2ODkuNDYgODA4LjA5IDE2ODcuNiA4MDUuMzQiLz4KICA8Zz4KICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtMTYiIHBvaW50cz0iMTU2Mi43NCA3ODUuOTIgMTU2Mi40MyA3ODguMzMgMTUyNC4xMiAxMDgyLjA0IDEyODAuNzcgMTA1MC4zIDEzMjUuNTUgNzA2Ljk1IDE1MTMuMjcgNzMxLjQ0IDE1MTUuNTYgNzMxLjc0IDE1MTcuNTkgNzM0LjA3IDE1NjAuNTcgNzgzLjQyIDE1NjIuNzQgNzg1LjkyIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Im0xNTYyLjc0LDc4NS45MmwtLjMyLDIuNC01My4zNC02Ljk1Yy0xLjI3LS4xNy0yLjE2LTEuMzItMS45OS0yLjU5bDYuMTctNDcuMzQsMi4yOS4zLDIuMDMsMi4zMy01LjYxLDQzLjAyLDQ4LjU5LDYuMzMsMi4xOCwyLjVaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMTQ4OC43Myw3NzUuODdsLTEwMS41MS0xMy4yNGMtMS4yNy0uMTctMi4xNi0xLjMyLTEuOTktMi41OS4xNy0xLjI3LDEuMzItMi4xNiwyLjU5LTEuOTlsMTAxLjUxLDEzLjI0YzEuMjcuMTYsMi4xNiwxLjMyLDEuOTksMi41OS0uMTcsMS4yNy0xLjMyLDIuMTYtMi41OSwxLjk5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE1MzcuODYsODI3LjMzbC0yMDUuMDYtMjYuNzRjLTEuMjctLjE2LTIuMTYtMS4zMi0xLjk5LTIuNTkuMTctMS4yNywxLjMyLTIuMTYsMi41OS0xLjk5bDIwNS4wNiwyNi43NGMxLjI3LjE2LDIuMTYsMS4zMiwxLjk5LDIuNTktLjE2LDEuMjctMS4zMiwyLjE2LTIuNTksMS45OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjUiIGQ9Im0xNTM1Ljg0LDg0Mi43N2wtMjA1LjA2LTI2Ljc0Yy0xLjI3LS4xNi0yLjE2LTEuMzItMS45OS0yLjU5LjE2LTEuMjcsMS4zMi0yLjE2LDIuNTktMS45OWwyMDUuMDYsMjYuNzRjMS4yNy4xNiwyLjE2LDEuMzIsMS45OSwyLjU5cy0xLjMyLDIuMTYtMi41OSwxLjk5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE1MzIuOTcsODY0LjgxbC0yMDUuMDYtMjYuNzRjLTEuMjctLjE3LTIuMTYtMS4zMi0xLjk5LTIuNTkuMTctMS4yNywxLjMyLTIuMTYsMi41OS0xLjk5bDIwNS4wNiwyNi43NGMxLjI3LjE3LDIuMTYsMS4zMiwxLjk5LDIuNTktLjE3LDEuMjctMS4zMiwyLjE2LTIuNTksMS45OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjUiIGQ9Im0xNTMwLjk2LDg4MC4yNWwtMjA1LjA2LTI2Ljc0Yy0xLjI3LS4xNy0yLjE2LTEuMzItMS45OS0yLjU5LjE2LTEuMjcsMS4zMi0yLjE2LDIuNTktMS45OWwyMDUuMDYsMjYuNzRjMS4yNy4xNiwyLjE2LDEuMzIsMS45OSwyLjU5LS4xNywxLjI3LTEuMzIsMi4xNi0yLjU5LDEuOTlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMTUyOC45NCw4OTUuNjlsLTIwNS4wNi0yNi43NGMtMS4yNy0uMTctMi4xNi0xLjMyLTEuOTktMi41OS4xNi0xLjI3LDEuMzItMi4xNiwyLjU5LTEuOTlsMjA1LjA2LDI2Ljc0YzEuMjcuMTYsMi4xNiwxLjMyLDEuOTksMi41OS0uMTYsMS4yNy0xLjMyLDIuMTYtMi41OSwxLjk5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE1MjYuOTMsOTExLjEzbC0yMDUuMDYtMjYuNzRjLTEuMjctLjE2LTIuMTYtMS4zMi0xLjk5LTIuNTkuMTctMS4yNywxLjMyLTIuMTYsMi41OS0xLjk5bDIwNS4wNiwyNi43NGMxLjI3LjE3LDIuMTYsMS4zMiwxLjk5LDIuNTktLjE3LDEuMjctMS4zMiwyLjE2LTIuNTksMS45OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjUiIGQ9Im0xNTE5LjI5LDk2OS42OWwtMjA1LjA2LTI2Ljc0Yy0xLjI3LS4xNy0yLjE2LTEuMzItMS45OS0yLjU5LjE2LTEuMjcsMS4zMi0yLjE2LDIuNTktMS45OWwyMDUuMDYsMjYuNzRjMS4yNy4xNiwyLjE2LDEuMzIsMS45OSwyLjU5LS4xNywxLjI3LTEuMzIsMi4xNi0yLjU5LDEuOTlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMTUxNy4yOCw5ODUuMTJsLTIwNS4wNi0yNi43NGMtMS4yNy0uMTctMi4xNi0xLjMyLTEuOTktMi41OS4xNi0xLjI3LDEuMzItMi4xNiwyLjU5LTEuOTlsMjA1LjA2LDI2Ljc0YzEuMjcuMTcsMi4xNiwxLjMyLDEuOTksMi41OS0uMTcsMS4yNy0xLjMyLDIuMTYtMi41OSwxLjk5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE1MTUuMjcsMTAwMC41NmwtMjA1LjA2LTI2Ljc0Yy0xLjI3LS4xNi0yLjE2LTEuMzItMS45OS0yLjU5LjE3LTEuMjcsMS4zMi0yLjE2LDIuNTktMS45OWwyMDUuMDYsMjYuNzRjMS4yNy4xNywyLjE2LDEuMzIsMS45OSwyLjU5LS4xNiwxLjI3LTEuMzIsMi4xNi0yLjU5LDEuOTlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMTUxMy4yNSwxMDE2bC0yMDUuMDYtMjYuNzRjLTEuMjctLjE3LTIuMTYtMS4zMi0xLjk5LTIuNTkuMTctMS4yNywxLjMyLTIuMTYsMi41OS0xLjk5bDIwNS4wNiwyNi43NGMxLjI3LjE3LDIuMTYsMS4zMiwxLjk5LDIuNTktLjE2LDEuMjctMS4zMiwyLjE2LTIuNTksMS45OVoiLz4KICA8L2c+CiAgPGc+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIzIiBkPSJtMTQxNi4yMSw3NzMuMjFsLTQwOS4zMywzMi45MmMtLjgzLjA3LTEuNDQuNzktMS4zOCwxLjYybDQzLjExLDUzNi4wMWMuMDcuODMuNzksMS40NCwxLjYyLDEuMzhsNDA4Ljc1LTMyLjg4Yy44My0uMDcsMS40NC0uNzksMS4zOC0xLjYybC00My4xNi01MzYuNmMtLjA0LS41LS40OC0uODgtLjk5LS44NFoiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTUiIHg9IjEwMzkuODQiIHk9IjgwMS41NiIgd2lkdGg9IjM4NS43OSIgaGVpZ2h0PSI1MTAuNjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04Ny40MSAxMTEuNDUpIHJvdGF0ZSgtNSkiLz4KICAgIDxnPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTI4MC42OCw4NjcuNzZsLTIxOC4wNywxOS4wOGMtLjExLjAxLS4yMS0uMDctLjIyLS4xOGwtLjQ4LTUuNDVjMC0uMTEuMDctLjIxLjE4LS4yMmwyMTguMDctMTkuMDhjLjExLDAsLjIxLjA3LjIyLjE4bC40OCw1LjQ1YzAsLjExLS4wNy4yMS0uMTguMjJaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMjg0Ljc3LDkxNC41OGwtMjE4LjA3LDE5LjA4Yy0uMTEsMC0uMjEtLjA3LS4yMi0uMThsLS40OC01LjQ1YzAtLjExLjA3LS4yMS4xOC0uMjJsMjE4LjA3LTE5LjA4Yy4xMSwwLC4yMS4wNy4yMi4xOGwuNDgsNS40NWMwLC4xMS0uMDcuMjEtLjE4LjIyWiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTM2Ni4wNCw4ODMuODlsLTMwMS4zOSwyNi4zNmMtLjExLDAtLjIxLS4wNy0uMjItLjE4bC0uNDgtNS40NWMwLS4xMS4wNy0uMjEuMTgtLjIybDMwMS4zOS0yNi4zN2MuMTEsMCwuMjEuMDcuMjIuMThsLjQ4LDUuNDVjMCwuMTEtLjA3LjIxLS4xOC4yMloiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEyMzUuNjYsMTA2NC45NmwtMTQ4LjM3LDEyLjk4Yy0uMDksMC0uMTctLjA2LS4xOC0uMTVsLS40OC01LjUyYzAtLjA5LjA2LS4xNy4xNS0uMThsMTQ4LjM3LTEyLjk4Yy4wOSwwLC4xNy4wNi4xOC4xNWwuNDgsNS41MmMwLC4wOS0uMDYuMTctLjE1LjE4WiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTI5MC4zMiwxMDM2LjU4bC0yMDUuMDgsMTcuOTRjLS4wOSwwLS4xNy0uMDYtLjE4LS4xNWwtLjQ4LTUuNTJjMC0uMDkuMDYtLjE3LjE1LS4xOGwyMDUuMDgtMTcuOTRjLjA5LDAsLjE3LjA2LjE4LjE1bC40OCw1LjUyYzAsLjA5LS4wNi4xNy0uMTUuMThaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMzA2LjY2LDEwODVsLTIxOC4wNywxOS4wOGMtLjExLDAtLjIxLS4wNy0uMjItLjE4bC0uNDgtNS40NWMwLS4xMS4wNy0uMjEuMTgtLjIybDIxOC4wNy0xOS4wOGMuMTEsMCwuMjEuMDcuMjIuMThsLjQ4LDUuNDVjLjAxLjExLS4wNy4yMS0uMTguMjJaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMzMzLjA5LDExMDYuMjhsLTI0Mi40OCwyMS4yMWMtLjEsMC0uMTktLjA2LS4yLS4xNmwtLjQ4LTUuNDljMC0uMS4wNy0uMTkuMTctLjJsMjQyLjQ4LTIxLjIxYy4xLDAsLjE5LjA3LjIuMTdsLjQ4LDUuNDljMCwuMS0uMDcuMTktLjE3LjJaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMjUxLjU5LDExNTQuODNsLTE1Ni4wNiwxMy42NWMtLjA5LDAtLjE4LS4wNi0uMTktLjE2bC0uNDgtNS41MWMwLS4wOS4wNi0uMTguMTYtLjE5bDE1Ni4wNi0xMy42NWMuMDksMCwuMTguMDYuMTkuMTZsLjQ4LDUuNTFjMCwuMDktLjA2LjE4LS4xNi4xOVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEyNTUuNjksMTIwMS42NWwtMTU2LjA2LDEzLjY1Yy0uMDksMC0uMTgtLjA2LS4xOS0uMTZsLS40OC01LjUxYzAtLjA5LjA2LS4xOC4xNS0uMTlsMTU2LjA2LTEzLjY1Yy4wOSwwLC4xOC4wNi4xOC4xNmwuNDgsNS41MWMwLC4wOS0uMDYuMTgtLjE2LjE5WiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTMxMy4yOSwxMTczLjAybC0yMTUuNzEsMTguODdjLS4wOSwwLS4xOC0uMDYtLjE5LS4xNmwtLjQ4LTUuNTFjMC0uMDkuMDYtLjE4LjE2LS4xOWwyMTUuNzEtMTguODdjLjA5LDAsLjE4LjA2LjE5LjE2bC40OCw1LjUxYzAsLjA5LS4wNi4xOC0uMTYuMTlaIi8+CiAgICA8L2c+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJtMTI5Ny4xNiw3NjcuMDNsLTYxLjMxLDQuOTNjMC0uODMsMC0xLjY2LS4wNy0yLjUxLTEuMjItMTUuMTYtMTQuNS0yNi40Ni0yOS42Ni0yNS4yNC0xNS4xNiwxLjIyLTI2LjQ2LDE0LjUtMjUuMjQsMjkuNjYuMDcuODQuMTksMS42Ny4zMywyLjQ5bC02MS4zMSw0LjkzYy0xMS42OS45NC0yMC40LDExLjE4LTE5LjQ2LDIyLjg2bDIuMzIsMjguODVjLjIyLDIuNywyLjU4LDQuNzEsNS4yOCw0LjVsMjA5LjgxLTE2Ljg4YzIuNy0uMjIsNC43MS0yLjU4LDQuNS01LjI4bC0yLjMyLTI4Ljg1Yy0uOTQtMTEuNjktMTEuMTgtMjAuNC0yMi44Ni0xOS40NlptLTg3LjQzLDIyLjFjLTkuNjUuNzgtMTguMS02LjQyLTE4Ljg3LTE2LjA2LS43OC05LjY1LDYuNDItMTguMSwxNi4wNi0xOC44Nyw5LjY1LS43OCwxOC4xLDYuNDIsMTguODcsMTYuMDYuNzgsOS42NS02LjQyLDE4LjEtMTYuMDYsMTguODdaIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0ibTE0NDQuNjYsMTA3MS4xNmw1LjQ5LTEzLjZjNS44OS0xNC41OSwyMC4wNC0yNC4xMywzNS43Ny0yNC4xM2gxMDEuMzN2MzM4LjhoLTQxOS4xN3YtMjc0LjVoMjM3LjJjMTcuMzEsMCwzMi44OS0xMC41MSwzOS4zNy0yNi41NloiLz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0xNzQ3LjQ1LDExODEuMDlzLTI3LjU1LDMzLjAxLTUwLjAyLDI5LjM5Yy0yMi40Ni0zLjYxLTU5LTcuMTYtNTktNy4xNmwxOC41MS0xMi4yMXMzMi4yMi04LjQ5LDQ0LjA0LTEwLjg1YzExLjgyLTIuMzcsMjYuNTEtMTkuMTQsMjYuNTEtMTkuMTRsMTkuOTYsMTkuOTZaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTc2OC4xNywxNTI5LjM3czMuMzcsMzMuMjQtMy40MiwzN2MtMTIuMjksNi44My0zNC45NSwxMy4zNC0zMy4wNiwxOS4yLDEuOSw1Ljg2LDU2LjIyLDYuMDksNTcuNzMuNzUsMS41MS01LjM1LTQuNTgtMjEuNzEsMS44Ny01My41NWwtMjMuMTMtMy40WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yOSIgZD0ibTE3ODguODgsMTU3NC4zOWMuNTgsNS45NSwxLjA4LDEwLjAzLjU0LDExLjk0LTEuNTEsNS4zNS01NS44Myw1LjEyLTU3LjczLS43NS0xLjQxLTQuMzUsMTAuNTktOS4yNSwyMS45Ny0xNC4xMywyLjY5LDQuNTIsOC40MywxMS41NywzNS4yMiwyLjk0WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yMCIgZD0ibTE4NzAuMDYsMTUyOC40MnM4Ljk4LDMyLjE4LDIuOTMsMzcuMDVjLTEwLjk1LDguODItMzIuMTcsMTkuMS0yOS4zLDI0LjU1LDIuODcsNS40Niw1Ni40NC0zLjU3LDU3LjAyLTkuMS41OC01LjUzLTguMjEtMjAuNjEtNy4yNy01My4wOWwtMjMuMzcuNTlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI5IiBkPSJtMTg5OC4xNCwxNTY5LjI1YzEuNTgsNS43NiwyLjc3LDkuNywyLjU3LDExLjY3LS41OCw1LjUzLTU0LjE1LDE0LjU1LTU3LjAyLDkuMS0yLjEzLTQuMDQsOC44Ni0xMC45MiwxOS4yNS0xNy42NywzLjQyLDQsMTAuMjgsOS45NiwzNS4yLTMuMVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjQiIGQ9Im0xNzc0LjUsMTIzNC43NXMtMTQuNzYsMTcuODgtMjEuNDEsMzguOGMtNi42NiwyMC45MiwxMSwyNjguOCwxMSwyNjguOGgyOS40OHMxNS42NC0yMjAuNzUsMTUuNjQtMjIyLjcxYzAtNy43MSw1OC4wNiwyMjIuNzEsNTguMDYsMjIyLjcxaDI5LjQ0cy0xNS45My0yNjkuOC01Mi45LTMwNy42bC0zNC41OSwyLjE0LTM0LjcxLTIuMTRaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIyIiBkPSJtMTczOS4zOSwxMTQzLjQ4Yy4xOSwxLjMuMTIsMi42MS0uMzUsMy45NS0uNTgsMS42NS0xLjcyLDMuMDgtMi4xOSw0Ljc3LTEuMDIsMy43MiwxLjc2LDcuNzIsNS4zNyw5LjA3LDMuMDMsMS4xNCw2LjQxLjc5LDkuNTItLjI0LjU5LS4yLDEuMTctLjQyLDEuNzQtLjY1LDMuNTYtMS40OCw2LjgtMy42NiwxMC4zMS01LjI1LjkxLS40MiwxLjg0LS43OSwyLjc4LTEuMTMuMi0uMDcuNC0uMTQuNTktLjIxaDBjNi45OC0yLjQyLDE0LjU0LTMuMDIsMjEuODQtNC40NSw4LjYxLTEuNywxNy4xNy00LjYxLDI1LjkyLTQsMTAuMS43MSwxOS4yLDUuOTksMjguNjUsOS42LDkuNjMsMy42OCwxOS45MSw1LjY4LDMwLjIyLDUuODcsNC4yLjA4LDguNTEtLjE3LDEyLjQ3LTEuNDYuMy0uMDkuNTktLjIuODktLjMxLjgxLS4zLDEuNi0uNjUsMi4zNy0xLjA1LDkuNTMtNC45NiwxMy4yMS0xNy4zMyw5LjM4LTI3LjA4LTIuMTgtNS41Ni02LjUxLTEwLjExLTExLjY5LTEzLTQuNjItMi41OC0xMC41Mi0zLjQ1LTE0LjAyLTcuNzctMS4zNy0xLjctMi4xMi0zLjYzLTIuNTMtNS43LTEuMDYtNS4zMS4xLTExLjUxLTEuMjktMTYuOTQtMS42Mi02LjM0LTYuOTYtMTEuNTUtMTIuODUtMTQuMDctMi41My0xLjA4LTUuMzQtMS43NC04LjA0LTIuNi0xLjMyLS40Mi0yLjYyLS44OS0zLjg0LTEuNDktMS43Mi0uODMtMy4zLTEuOTEtNC42MS0zLjQ1LTQuNDktNS4yNy0zLTEyLjU2LTMuODEtMTguODktLjQ3LTMuNjgtMS43NC03LjE5LTMuNi0xMC4zNy0xLjk2LTMuMzUtNC41OC02LjM2LTcuNjEtOC44NC0xLjE3LS45Ny0yLjQxLTEuODUtMy42OS0yLjY1LTEuNDMtLjg5LTIuOTQtMS43LTQuNS0yLjQxaDBjLS45Ni0uNDQtMS45NC0uODQtMi45My0xLjItNC42MS0xLjY5LTkuNTktMi42My0xNC41NC0yLjcxaDBjLTQuNjctLjA4LTkuMy41OS0xMy41NiwyLjEtNC4xOCwxLjQ3LTcuOTksMy43NC0xMS4xMSw2Ljg3LTMuMDQsMy4wNC01LjQzLDYuODktNi44OCwxMS42Mi0xLjg2LDYuMDktMS43MywxMi44OS01LjA2LDE4LjMyLTMuNjEsNS45LTEwLjg5LDkuMzgtMTIuOSwxNi0yLjUyLDguMzIsNC42MSwxNy4yNSwyLjI2LDI1LjYyLTEuNTQsNS40Ny02LjY0LDktMTEuMTYsMTIuNDUtNC41MiwzLjQ0LTkuMTUsOC4wMS04Ljk5LDEzLjY5LjE4LDYuNDcsNi42MSwxMi4wNyw3LjQ3LDE3Ljk4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJtMTgxNi44MSwxMTEwYzE2Ljk2LjYzLDQ3LjMsOC4yMiw1Ni44OCwyNy4zMSw1LjMsMTAuNTcsMTIuNzcsNDQuOTIsMTIuNzcsNDQuOTJsLTI1LjczLDQuNTFzLjQzLDEyLjQ0LTEuMjUsMTkuNTRjLTIuOTgsMTIuNi0xNC45NSw0MS4yLTIwLjk4LDQzLjYxLTkuNDIsMy43Ny0xOC40Ny0uNDktMjQuMTItMS4xMi01LjY2LS42My0xOC4yOC03LjczLTMzLjM2LTEyLjEzLTE1LjA4LTQuNC0xNS43MS0xNS43MS0xNy41OS0yOC45LTEuODgtMTMuMTktNC40LTI1LjEzLTQuNC0yNS4xM2wtNS42NSw0LjQtMjguMjgtMjguMjhzMzMuMzEtMzUuOCw1Mi4xNi00MS40NmMxOC44NS01LjY1LDM5LjU1LTcuMjgsMzkuNTUtNy4yOFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Im0xNzcxLjQ3LDEwNjcuNXMtMi44Mi0zLjEyLTQuNDItMS40M2MtNC4wOCw0LjMsMS42NSw4LjMxLDQuODksOC44N2wtLjQ3LTcuNDRaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTc5NC4yLDEwMjEuMDNjMTQuMjktMS4yMywyNy40Niw4LjYyLDMwLjM2LDIyLjY3Ljk1LDQuNjIuNzMsOS4xOC0uNDMsMTMuMzktMi40LDEwLjQzLTQuNDIsMTguODQtNy41NSwyNS4yMi0zLjE3LDYuNDYtMy45NSwxMy44NC0xLjg3LDIwLjczbDIuMSw2Ljk2Yy0xNS4xOSwxMC43MS0yMy42MiwzLjU5LTIzLjYyLDMuNTlsLTIuNS0xNi40M2gwYy0xOC4xLjU4LTIwLjcxLTMyLjU4LTIyLjE4LTQyLjI4aC4wM2MtLjA3LS4zNi0uMTQtLjcyLS4xOS0xLjA5LTIuNDYtMTYuMjMsOS4yNC0zMS4zMywyNS44Ni0zMi43NloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjIiIGQ9Im0xODAwLjU5LDEwNDkuNDZjMy45OSwzLDcuNiw2LjQ3LDExLjE5LDkuOTMsMy44LDMuNjYsNy43Niw3LjU3LDkuMjUsMTIuNjMsNC4wNS00LjE4LDYuMi05LjgyLDcuODgtMTUuMzkuNzgtMi41OCwxLjQ5LTUuMjMsMS40Ny03LjkzLS4wMy0zLjgyLTEuNTMtNy40Ni0zLTEwLjk5LTEuOS00LjU2LTMuOTItOS4yOS03LjctMTIuNDYtMi41LTIuMS01LjYxLTMuMzYtOC43NC00LjI3LTcuMzItMi4xMy0xNS4yNS0yLjU0LTIyLjU2LS4zNy03LjMxLDIuMTgtMTMuOTIsNy4wNy0xNy40NSwxMy44My00LjU1LDguNy0zLjYyLDE5LjEzLTIuNTcsMjguODkuMzYtNC4xNywyLjUxLTcuOTUsNC42MS0xMS41OCwxLjM3LTIuMzYsMi43Ny00Ljc2LDQuODMtNi41NCwzLjUyLTMuMDMsNC42OS0yLjY3LDEwLjgxLTguMzMsMi42OSw1LjcxLDYuOTgsOC44MywxMS45NywxMi41OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0xODE2LjcxLDEwNjYuMzFjLjMyLS45OCwxLjAxLTEuOCwxLjktMi4zMywxLjgzLTEuMDgsNS4xNC0yLjQ2LDcuODYtLjQ2LDQsMi45NC0xLjU5LDEzLjItOS4xOCw5LjY3LDAsMC0yLjI3LTEuNjctLjU4LTYuODlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Im0xNzc2LjE5LDEwNjcuMDZjLS4zNC0xLjM0LjQ3LTIuNjksMS44MS0zLjAzLDEuMzMtLjM0LDIuNjkuNDcsMy4wMywxLjgxLjM0LDEuMzQtLjQ3LDIuNjktMS44MSwzLjAzLTEuMzQuMzQtMi42OS0uNDctMy4wMy0xLjgxWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMTc5OS44NSwxMDY2LjEzYy0uMzQtMS4zMy40Ny0yLjY5LDEuODEtMy4wMywxLjM0LS4zNCwyLjY5LjQ3LDMuMDMsMS44MS4zNCwxLjM0LS40NywyLjY5LTEuODEsMy4wMy0xLjMzLjM0LTIuNjktLjQ3LTMuMDMtMS44MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0ibTE3ODQuMjcsMTA4NC4wNnMxLjk2LTEuNzUsMy4yNi0xLjUyYzEuMy4yMywyLjE1LDEuNjksMi4xNSwxLjY5LDAsMCwuNjEtMS42LDIuMTUtMS43NywxLjU0LS4xNyw1Ljk4LjYsNS45OC42LDAsMC0zLjM3LDYuOTUtOC4wOSw2LjI0LTQuNzItLjcxLTUuMzYtNS4wMy01LjM2LTUuMDNsLS4wOS0uMjJaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI2IiBkPSJtMTc4OC44NSwxMDg2LjMzYzUuNC42MSwxMC4xNi0zLjc4LDEwLjIyLTMuODQuMTQtLjEzLjE1LS4zNS4wMi0uNS0uMTMtLjE0LS4zNi0uMTUtLjUtLjAyLS4zMS4yOS03Ljc1LDcuMTMtMTQuMzMsMS41NS0uMTUtLjEyLS4zNy0uMTEtLjQ5LjA0LS4xMy4xNS0uMTEuMzcuMDQuNSwxLjY2LDEuNDEsMy4zOCwyLjA3LDUuMDQsMi4yNloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0ibTE4MDcuNDMsMTA2MS4zN2MuMjktLjA2LjU1LS4yNC43MS0uNTMuMjctLjUxLjA4LTEuMTMtLjQyLTEuNC0uMTUtLjA4LTMuNzgtMS45Ni04LjI4LS44Mi0uNTYuMTQtLjg5LjctLjc1LDEuMjYuMTQuNTUuNzUuODksMS4yNi43NSwzLjc1LS45NCw2Ljc2LjYyLDYuNzkuNjMuMjIuMTIuNDcuMTUuNy4xWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMTc4MS43LDEwNjAuOTFjLjI4LS4xMS41LS4zNC42LS42NC4xOC0uNTUtLjEyLTEuMTMtLjY3LTEuMy0uMTYtLjA1LTQuMDMtMS4yNi04LjI5LjY4LS41Mi4yNC0uNzUuODUtLjUxLDEuMzcuMjQuNTIuODcuNzUsMS4zNy41MSwzLjUyLTEuNjEsNi43Ni0uNiw2LjgtLjU5LjI0LjA4LjQ5LjA2LjcxLS4wM1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Im0xNzkwLjE5LDEwNzcuMjFjLTIuOTgsMC00LjI4LTIuMDQtNC41Ni0zLjI5LS4wNS0uMjItLjAxLS40NS4xLS42NCwyLjEzLTMuNTksMS4xNS04LjIxLDEuMTQtOC4yNi0uMS0uNDcuMTktLjkzLjY3LTEuMDQuNDYtLjEuOTQuMTksMS4wNC42Ni4wNC4yMSwxLjA5LDUuMDYtMS4xNSw5LjE4LjI3LjY2LDEuMiwyLjA3LDMuOTUsMS41MS40OC0uMDkuOTMuMjEsMS4wMy42OC4wOS40Ny0uMjEuOTMtLjY4LDEuMDMtLjU2LjExLTEuMDcuMTYtMS41NC4xNloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtOSIgZD0ibTE4MjguMzEsMTE5MS4xMmMtMTAuNjQsMC0xOS42NC02LjE0LTE5Ljc3LTYuMjMtLjEtLjA3LS4xMi0uMi0uMDUtLjMuMDctLjEuMjEtLjEyLjMtLjA1LjE3LjEyLDE3LjIzLDExLjc1LDMyLjAxLDIuNzIuMS0uMDYuMjQtLjAzLjMuMDcuMDYuMS4wMy4yNC0uMDcuMy00LjIsMi41Ny04LjU5LDMuNS0xMi43MiwzLjVaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTg4Mi45OCwxMTgyLjg1Yy4yOCwxLjU0LDkuMjEsNTAuOTgsMi4yOSw2Mi42Mi0zLjA0LDUuMTEtMjguNjEsMTQuMTItNjUuODQsMTMuODlsMi4zNS0xMi45N3MzNi4yNC0xMi41MSwzNy4zNS0xNy4xYzIuNC05Ljg4LTQuNDItNDEuNDctNC40Mi00MS40N2wyOC4yOC00Ljk2WiIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0xMSIgeD0iMTYxMi44IiB5PSIxMTY3LjQiIHdpZHRoPSIxMzIuNTQiIGhlaWdodD0iMjAuNzkiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMzAiIGQ9Im0xNzM3LjI0LDExNzAuMDRsMi40Ny02LjEyYzIuNjUtNi41Niw5LjAyLTEwLjg2LDE2LjEtMTAuODZoNDUuNTl2MTUyLjQzaC0xODguNnYtMTIzLjVoMTA2LjcyYzcuNzksMCwxNC44LTQuNzMsMTcuNzEtMTEuOTVaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTc5Ny4xNywxMjI5LjcyYy0yLjA5LDIuMDIsNC4wNSw5LjMyLDQuMTksOS40OS0uMTYsMC0xMC4zNC4xMi0xMy41LS4zMy0zLjE4LS40NS05LjA3LjItOS41NywyLjUtLjUsMi4yNiwxNC40LDMuMzQsMTQuOSwzLjM4LS40NS4wMS0xMy4wNy40LTEzLjk4LDIuMzktLjkxLDEuOTksMTUuMjgsMy45NCwxNS43Nyw0LS4zMywwLTkuOTYtLjItMTMuNjkuMjktLjcxLjEtMS4yMS4yMS0xLjM4LjM2LTEuMTEuOTMuMDQsMi40LDQuOTUsMy43LDEuNC4zNywyLjg0LjY0LDQuMTcuODQsMy4xNC40Niw1Ljc0LjUyLDYuMDcuNTMtLjI2LjAxLTIuMDkuMTItNC4xOC4yNi0yLjgyLjItNi4xMy40OC02Ljc3Ljc0LTEuMTYuNDctMi40LDEuOTcsNS4wOCwzLjEzLDYuMDEuOTMsMTcuOSwxLjAzLDI2LjYzLS43NSwyLjE0LS40NCw0LjA5LS45OSw1LjcyLTEuNjZsLjExLTguMTIuMDYtNC4wOHMtMS4xOC0uOTYtMi45My0yLjMxYy0zLjQ5LTIuNzItOS4yNS03LjA2LTEyLjI4LTguNTctNC41NS0yLjI2LTcuMjctNy44Mi05LjM5LTUuNzhaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTY2Mi45NywxMTY0LjYzcy00LjEsMTQuMjYtNi4zMSwxNC4wMmMtMi4yLS4yNC0xLjcxLTExLjkxLTEuNzktMTEuNzMtLjA4LjE4LTIuNzUsMTIuMjktNS44LDEyLjkyLTMuMDYuNjQtMS44NC0xMi43OC0xLjg0LTEyLjc4LDAsMC0xLjYxLDExLjUyLTMuNzMsMTEuODQtMi4xMi4zMy0xLjg2LTEwLjgzLTIuNjgtMTAuODVzLS4yNyw5LjU3LTIuODgsMTAuMDhjLTIuNjEuNTEtMy45NS0xMi45Ni0xLjU2LTE0LjcxLDIuMzktMS43NCw0LjcyLjA3LDQuNzIuMDcsMCwwLDQuMzQtMi41Miw2LjY2LTEuMTQsMCwwLDYuODEtMS4yOCw3LjkzLDEuMzgsMCwwLDUuMDEtMy4yOCw3LjI4Ljg4WiIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0zMCIgcG9pbnRzPSIxODAxLjM5IDEyMzkuMjEgMTc5MC41NiAxMjM4LjcyIDE3OTAuNTYgMTIxMy4yNyAxODAxLjM5IDEyMTMuMjcgMTgwMS4zOSAxMjM5LjIxIi8+CiAgPC9nPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0yMCIgcG9pbnRzPSI5MTAuOCAxMjE5LjkgODg1LjE2IDEyMTMuMjggOTAxLjg2IDEyMDAuODEgOTE2LjAxIDExOTcuODYgOTIyLjg4IDEyMDYuMDUgOTEwLjggMTIxOS45Ii8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtODAxLjAzLDE1MzkuNXM2LjM1LDM3LjE0LDYuNTksMzcuNmMuMjUuNDYtMi4zMiw0LjQzLTIuMzIsNC40M2wtMTAuMDIsMS44LTkuMTUtNC4yMXMtNS4yOC0yOS45NC02LjI0LTM0LjZjLS45Ni00LjY2LDIxLjEzLTUuMDIsMjEuMTMtNS4wMloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTgiIGQ9Im03ODYuMTMsMTU3OS4xMnMxMS41NSw0LjA0LDIxLjQzLTIuNjVjMCwwLDM4LjQ3LDE0LjQyLDM3LjMsMjUuMzgsMCwwLDEuNjQsMy4yNy0xNS4wMywyLjU2LTE2LjY3LS43MS00Mi41OC0xLjQ1LTQzLjI3LTEuODMtLjctLjM4LTMuOTYsMS4zOC0uNDMtMjMuNDdaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtNjg2Ljc5LDE1MzkuNXMtOS44LDM3LjE0LTkuNTYsMzcuNmMuMjUuNDYtMi4zMiw0LjQzLTIuMzIsNC40M2wtMTAuMDIsMS44LTkuMTUtNC4yMXM0Ljk5LTMwLjU1LDQuMDMtMzUuMjFjLS45Ni00LjY2LDI3LjAyLTQuNDEsMjcuMDItNC40MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTgiIGQ9Im02NTUuNzQsMTU3OS4xMnMxMS41NSw0LjA0LDIxLjQzLTIuNjVjMCwwLDM4LjQ3LDE0LjQyLDM3LjMsMjUuMzgsMCwwLDEuNjQsMy4yNy0xNS4wMywyLjU2LTE2LjY3LS43MS00Mi41Ny0xLjQ1LTQzLjI3LTEuODMtLjY5LS4zOC0zLjk2LDEuMzgtLjQzLTIzLjQ3WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy03IiBkPSJtNzkwLjcsMTMwNy4zM2wyMC4xLDI1NC4yaC0zNC41NHMtMzYuNTItMjAwLjg3LTQxLjctMjAxLjc1Yy01LjE4LS44OC00Mi4xOCwyMDEuNzUtNDIuMTgsMjAxLjc1aC0zOS42NGwyMC4yNi0yNjAuNzgsMTE3LjcxLDYuNThaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIzIiBkPSJtNzEyLjc0LDExMDkuMjZzNDIuNzUsMS40OSw2MC4wNywxNC42M2MxMC43Nyw4LjE4LDEzLjIyLDExMS4zNSwxMy4yMiwxMTEuMzVsNi40Nyw3Ni45NXMtNjkuMywyMy40OC0xMjUuNjksMGwtNi4xNC01MS40NnMtMjIuMjgtMTI5LjM0LTQuOTQtMTM2Ljk4YzMyLjkyLTE0LjUsNTctMTQuNSw1Ny0xNC41WiIvPgogICAgPGc+CiAgICAgIDxnPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjciIGQ9Im03NDEuMTgsMTA1OS4xNHMyLjA4LTMuODUsNC4xMS0yLjU1YzUuMTksMy4zMy43OCw4LjYxLTIuMzUsOS45OGwtMS43Ni03LjQ0WiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im03NDEuMDQsMTA0NS42NWgtLjAzYy0uMDItLjM3LS4wNC0uNzYtLjA4LTEuMTQtMS41NS0xNy4wMS0xNy4xNC0yOS4zNi0zNC4yOS0yNi42NS0xNC4yOSwyLjI1LTI1LDE0Ljc2LTI1LjAzLDI5LjIzLDAsNS4zNywxLjM4LDEwLjM0LDMuNzksMTQuNjQsMy4zNyw2LjY3LDYuMzMsMTIuMzgsOS4zMywxNy4wNyw0Ljk3LDcuNzYsNy4xNiwxNi45Nyw2LjQ1LDI2LjE2bC0uMzcsNS40NGMxOS4wNyw4LjAzLDI2LjM2LjA1LDI2LjM2LjA1bC0uODUtMTMuMDljLS4xMS0xLjcxLDEuMTEtMy4yLDIuOC0zLjQ3LjAxLDAsLjAyLDAsLjAzLDAsMjIuNDItMy41MywxMi44MS0zOC4wNywxMS44OC00OC4yM1oiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIxIiBkPSJtNzExLjk2LDEwNjMuOTZjLS4xNC0xLjUyLTEuNDgtMi42NC0zLjAxLTIuNS0xLjUyLjE0LTIuNjQsMS40OS0yLjUsMy4wMS4xNCwxLjUyLDEuNDksMi42NCwzLjAxLDIuNTEsMS41Mi0uMTQsMi42NC0xLjQ5LDIuNS0zLjAxWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjEiIGQ9Im03MzYsMTA1Ni44M2MtLjE0LTEuNTItMS40OC0yLjY0LTMuMDEtMi41LTEuNTIuMTQtMi42NCwxLjQ4LTIuNSwzLjAxLjE0LDEuNTIsMS40OCwyLjY0LDMsMi41LDEuNTItLjE0LDIuNjQtMS40OSwyLjUtMy4wMVoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIxIiBkPSJtNzAxLjcsMTA2MC41NmMtLjI4LjAyLS41OC0uMDItLjg1LS4xNi0uOC0uMzktMS4xNC0xLjM2LS43NS0yLjE2LDEuMTctMi40Myw1LjA5LTYuMzYsMTEuNTQtMy44NC44My4zMywxLjI1LDEuMjcuOTIsMi4xLS4zMy44NC0xLjI3LDEuMjUtMi4xLjkyLTUuMjktMi4wNy03LjM2LDIuMDUtNy40NCwyLjIzLS4yNi41My0uNzcuODYtMS4zMS45MVoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIxIiBkPSJtNzI3LjE0LDEwNTMuOWMtLjI4LjAzLS41OC0uMDItLjg1LS4xNS0uODEtLjM5LTEuMTQtMS4zNi0uNzYtMi4xNywxLjE3LTIuNDMsNS4wOS02LjM2LDExLjU0LTMuODQuODMuMzMsMS4yNSwxLjI3LjkyLDIuMS0uMzMuODMtMS4yNywxLjI1LTIuMS45Mi01LjI5LTIuMDctNy4zNiwyLjA1LTcuNDQsMi4yMy0uMjYuNTMtLjc3Ljg2LTEuMzEuOTFaIi8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy0xOCIgcG9pbnRzPSI2NzkuMjggMTA1Mi4xOCA2ODkuMTMgMTA3MS40OCA2OTQuNDEgMTA2OS45MSA2OTUuMjkgMTA0My43OCA2NzkuMjggMTA1Mi4xOCIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im02OTUuMTksMTA2OS4yYy0uNTctLjkxLTEuNDctMS41Ny0yLjUtMS44OC0yLjEyLS42NC01LjgtMS4yMS04LjA2LDEuNS0zLjMsMy45Nyw0Ljg5LDEyLjk0LDExLjY4LDcuNDksMCwwLDEuODgtMi4yNS0xLjEzLTcuMTFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yNyIgZD0ibTcyNy4wMywxMDcyLjY1Yy0yLjUzLDEuNTQtNS4wMS4zMi01LjA0LjMxLS4yNC0uMTItLjMzLS40MS0uMjEtLjY0LjEyLS4yNC40MS0uMzMuNjQtLjIxLjEyLjA2LDIuODgsMS4zNyw1LjI5LTEuMjYuMzktLjQzLjU5LS43Ni41OC0xLS4wMi0uMzMtLjQ1LS43Mi0xLjA1LTEuMjYtMS4zNy0xLjI0LTMuNjgtMy4zMS00LjgtOC4zNi0uMDYtLjI2LjExLS41Mi4zNy0uNTguMjYtLjA2LjUyLjExLjU3LjM3LDEuMDUsNC43NSwzLjEzLDYuNjEsNC41LDcuODUuNzQuNjcsMS4zMywxLjE5LDEuMzYsMS45My4wMy41Mi0uMjMsMS4wNC0uODMsMS43LS40NS41LS45Mi44Ny0xLjM5LDEuMTZaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTcxNi4zNywxMDc4LjY5czExLjM3LjM2LDE4LjE4LTMuNjFjMCwwLS45OCw4LjgtNy40NSwxMC4wOS02LjQ3LDEuMjgtMTAuNzQtNi40OC0xMC43NC02LjQ4WiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTgiIGQ9Im03MzUuMjMsMTAzNC41OXM0LjUyLDIuNiw3LjIxLDIwLjQ3YzAsMC0uMzgtMjAuMTYtMi44MS0yMi4xNi0yLjQzLTItNC40LDEuNjktNC40LDEuNjlaIi8+CiAgICAgIDwvZz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xOCIgZD0ibTY4Ni45OSwxMDE1LjAzYzUuOTEtNi42MiwxNi43OC02LjA1LDIzLjgtMTEuNDgtMi4yMyw0LjU1LTUuMyw4LjY4LTkuMDMsMTIuMTEsMTAuNDItMy4wMiwyMC44NC02LjA0LDMxLjI2LTkuMDYtMy4yMSwzLjI2LTYuNzQsNi4yMS0xMC41Myw4Ljc4LDguMTIuNywxNi4zLjY1LDI0LjQxLS4xNS44LDEuMjUuMjcsMi44OS0uMjksNC4yNy0zLjA0LDcuNTQtNi44LDE1LjgzLTE0LjM0LDE4Ljg4LTIuMzQuOTUtNC44OCwxLjMtNy40LDEuNDMtOS45Ny41NC0yMC45OS0xLjkxLTI5LjI0LDMuNzMtMy44MiwyLjYxLTguNTcsMTEuNjctMTQuMDEsMTAuMzYtNC44NS0xLjE2LTEyLjk0LTE4LjM1LDUuMzgtMzguODhaIi8+CiAgICA8L2c+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIzIiBkPSJtNzU4LjIyLDExMTYuOGMyNi43LDYuMTIsNTQuNzksNjAuNDcsNjguMTIsNjkuMTUsMTMuNyw4LjkyLDczLjM3LDEyLjg0LDczLjM3LDEyLjg0bC0xMi45MywyMC4xOHMtNjQuMDksNy4wOC04Mi43NS44M2MtMTEuNTMtMy44Ni0zMC41NS0xOS4zNi0zNi4yMy0yNy40OS0yNS4xMy0zNi05LjU5LTc1LjUyLTkuNTktNzUuNTJaIi8+CiAgICA8Zz4KICAgICAgPHJlY3QgY2xhc3M9ImNscy0xOCIgeD0iNzkyLjk1IiB5PSIxMDY3Ljc0IiB3aWR0aD0iMTYuMjciIGhlaWdodD0iMzYxLjg1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjMxLjg2IDE5LjU1KSByb3RhdGUoNjYuNzQpIi8+CiAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtMjkiIHBvaW50cz0iNjM4LjUgMTMyOS4wOSA2MzEuMDYgMTMxMS4yNSA3NjAuNjYgMTI1NS41MiA3NjguMTEgMTI3My4zNiA2MzguNSAxMzI5LjA5Ii8+CiAgICAgIDxnIGNsYXNzPSJjbHMtMzIiPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjUiIGQ9Im0xMDQ4LjMzLDk3My45M2M3OC41MS0zMy43NiwxNjkuNTEsMi41MiwyMDMuMjcsODEuMDMsMzMuNzUsNzguNTEtMi41MiwxNjkuNTEtODEuMDMsMjAzLjI3LTc4LjUxLDMzLjc1LTE2OS41MS0yLjUyLTIwMy4yNy04MS4wMy0zMy43NS03OC41MSwyLjUzLTE2OS41MSw4MS4wMy0yMDMuMjdaIi8+CiAgICAgIDwvZz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xOCIgZD0ibTk1OS43OSwxMTgwLjQzYzM1LjQ4LDgyLjUyLDEzMS40OCwxMjAuNzksMjE0LjAxLDg1LjMxLDgyLjUyLTM1LjQ4LDEyMC43OS0xMzEuNDgsODUuMzEtMjE0LjAxLTM1LjQ4LTgyLjUyLTEzMS40OC0xMjAuNzktMjE0LjAxLTg1LjMxLTgyLjUyLDM1LjQ4LTEyMC43OSwxMzEuNDgtODUuMzEsMjE0LjAxWm05MC4xNy0yMDIuN2M3Ni40MS0zMi44NSwxNjQuOTksMi40NiwxOTcuODQsNzguODcsMzIuODUsNzYuNDEtMi40NiwxNjQuOTktNzguODcsMTk3Ljg0LTc2LjQxLDMyLjg1LTE2NC45OS0yLjQ2LTE5Ny44NC03OC44Ny0zMi44NS03Ni40MSwyLjQ2LTE2NC45OSw3OC44Ny0xOTcuODRaIi8+CiAgICA8L2c+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtOTEwLjc5LDEyMTkuOXMtNy44NS0xNi40MS01LjY5LTE3LjgxYzIuMTYtMS4zOSwxMS4xNCw5LjkyLDExLjA3LDkuNy0uMDctLjIyLTcuNDctMTMuNTYtNS4yNS0xNi40LDIuMjItMi44NCwxMS45NiwxMC42NCwxMS45NiwxMC42NCwwLDAtNy44NS0xMi02LjIzLTEzLjg3LDEuNjItMS44NiwxMC40LDguOCwxMS4xNSw4LjIyLjc1LS41OC03LjQ4LTkuMTgtNS41Ni0xMS41OCwxLjkyLTIuNCwxMy45OSw5LjI3LDEzLjI2LDEyLjY3LS43MywzLjQtNC4yOCwzLjQxLTQuMjgsMy40MSwwLDAtMS44NCw1LjU2LTUuMDMsNS45NywwLDAtNS4wNiw2LjIxLTguMiw0LjUzLDAsMC0xLjgzLDYuNzctNy4yMiw0LjUyWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yMCIgZD0ibTY4Ni4zMSwxMjY3Ljc0czE1LjgsMS44NiwyMS4zOCwyLjk4YzUuNTgsMS4xMiwxMS44My0xLjkzLDEyLjMsMS4zNC40NywzLjI3LTEwLjI1LDUuNTMtMTAuMjUsNS41MywwLDAsOS4wNyw3LjIxLDEyLjIsOXM1LjgyLDQuNjUsMy45LDYuNDdjLTMuNzIsMy41Mi0xMi42OC00LjkzLTEyLjY4LTQuOTMsMCwwLDEyLjg0LDUuODcsOS41NSw5LjIzLTIuNzQsMi44LTE1LjUzLTQuOC0xNS41My00LjgsMCwwLDEyLjA0LDMuNjYsMTIuMjEsNi41OS4wOSwxLjYzLS4wNywyLjQ0LTUuMDIsMS4yNC01LjU1LTEuMzUtNS4yNS0xLjI4LTUuMjUtMS4yOCwwLDAsMy4wMSwxLjIyLDMuODIsMy43Mi41OSwxLjgyLS42MywzLjc4LTcuMTcsMS4xNy03LjktMy4xNi0yMi4wOC0xNC4wMS0yNy4wNC0yMi43NWw3LjU4LTEzLjUyWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yMyIgZD0ibTY1Ny4zMSwxMTIzLjA4Yy0zMy4wOSwxNS43Ni01OC43OSw5Mi44Ny01MC4xNCwxMTUuNDMsMTAuMTIsMjYuNDMsNjkuMSw0Ny4xNSw2OS4xLDQ3LjE1bDE0LjA5LTI1LjEycy00My41OS0yNS45OS00My43My0zMC45NWMtLjItNy4yMSwyOC41My00My41MywyOC41My00My41M2wtMTcuODQtNjIuOThaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIxIiBkPSJtNjc2LjI2LDEyODYuMDVjLjE0LDAsLjI3LS4wNy4zNC0uMmwxNC4wOS0yNS4xMmMuMS0uMTguMDQtLjQxLS4xMy0uNTJsLTMzLjA0LTIxLjIyYy0uMTgtLjEyLS40Mi0uMDYtLjU0LjEyLS4xMi4xOC0uMDYuNDIuMTIuNTRsMzIuNzMsMjEuMDMtMTMuNzQsMjQuNS0xMi45Mi01LjE2Yy0uMi0uMDgtLjQzLjAyLS41MS4yMi0uMDguMi4wMi40My4yMi41MWwxMy4yMyw1LjI5cy4xLjAzLjE1LjAzWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yMSIgZD0ibTc4NS4wMiwxMjA5LjA1cy4wMywwLC4wNCwwYy4yMS0uMDIuMzctLjIxLjM1LS40M2wtMi43NS0yOC4wN2MtLjAyLS4yMS0uMjItLjM2LS40My0uMzUtLjIxLjAyLS4zNy4yMS0uMzUuNDNsMi43NSwyOC4wN2MuMDIuMi4xOS4zNS4zOS4zNVoiLz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTM2LjQzIiB5PSI4MDYuMDgiIHdpZHRoPSIxMjAuMzQiIGhlaWdodD0iNDEzLjE3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NTM4Ljk2IDE2MTUuOTIpIHJvdGF0ZSgxNjkuNjkpIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0yMjQ1LjM4LDExMjMuMTljLTIuNzktMTUuMzMtMTcuNDctMjUuNDktMzIuOC0yMi43LTE1LjMzLDIuNzktMjUuNDksMTcuNDctMjIuNywzMi44LDIuNzksMTUuMzMsMTcuNDcsMjUuNDksMzIuOCwyMi43LDE1LjMzLTIuNzksMjUuNDktMTcuNDcsMjIuNy0zMi44WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTIyMTcuNjQsMTE1OS42Yy0xNC43OCwwLTI3Ljk0LTEwLjU3LTMwLjY4LTI1LjYxLTEuNDktOC4yLjMtMTYuNDgsNS4wNC0yMy4zMyw0Ljc0LTYuODUsMTEuODctMTEuNDQsMjAuMDctMTIuOTMsMTYuOTItMy4wOCwzMy4xOSw4LjE4LDM2LjI3LDI1LjExaDBjMy4wOCwxNi45Mi04LjE5LDMzLjE5LTI1LjExLDM2LjI3LTEuODguMzQtMy43NS41MS01LjU5LjUxWm0uMDItNTYuNDJjLTEuNDksMC0zLC4xMy00LjUyLjQxLTYuNjMsMS4yLTEyLjM5LDQuOTItMTYuMjIsMTAuNDYtMy44Myw1LjU0LTUuMjgsMTIuMjQtNC4wOCwxOC44NywyLjQ5LDEzLjY4LDE1LjY0LDIyLjc4LDI5LjMzLDIwLjMsMTMuNjgtMi40OSwyMi43OS0xNS42NCwyMC4zLTI5LjMzaDBjLTIuMjEtMTIuMTYtMTIuODUtMjAuNzEtMjQuOC0yMC43MVoiLz4KICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjIxNDguNTUiIHk9IjgyNi4xNSIgd2lkdGg9IjcwLjQ3IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDUwMC45MyAxNDc4LjU3KSByb3RhdGUoMTY5LjY5KSIvPgogICAgPC9nPgogICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIyMTM4LjM4IiB5PSI4MzYuMzQiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NDQ0LjgzIDEyODEuMDYpIHJvdGF0ZSgxNjkuNjkpIi8+CiAgICA8Zz4KICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMjE4MC4yNCIgeT0iMTAwMS41MSIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MTMuNzMgMzM1NC4zNikgcm90YXRlKC0xMDAuMzEpIi8+CiAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxNjguNDUiIHk9IjkzNi43MSIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2NjMuNTggMzI2Ni4zNykgcm90YXRlKC0xMDAuMzEpIi8+CiAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxNTMuOTYiIHk9IjEwMDYuMjkiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTc4IDMzMzQuMTMpIHJvdGF0ZSgtMTAwLjMxKSIvPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTQyLjE4IiB5PSI5NDEuNDkiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjI3Ljg3IDMyNDYuMTUpIHJvdGF0ZSgtMTAwLjMxKSIvPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTU5LjY3IiB5PSI5OTcuMTUiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjAxLjczIDMzMzUuNjQpIHJvdGF0ZSgtMTAwLjMxKSIvPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTQ0Ljg2IiB5PSI5MTUuNjkiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY0LjQyIDMyMjUuMDIpIHJvdGF0ZSgtMTAwLjMxKSIvPgogICAgPC9nPgogIDwvZz4KICA8Zz4KICAgIDxnPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMjI3MC45MiwxNDYwLjM0czQuNTcsMzIuMjMsNC4zNSwzMi41OWMtLjIxLjM2LDEuNzIsMy42NSwxLjcyLDMuNjVsOC4wMSwxLjc5LDcuNTEtMy4wOHMtNC43Mi0zMC40OC0zLjc5LTM0LjJjLjkzLTMuNzItMTcuODEtLjc1LTE3LjgxLS43NVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjI5Mi41MiwxNDk1LjI5cy05LjQ0LDIuODctMTcuMTctMi44NmMwLDAtMzEuNDgsMTAuMzItMzAuOSwxOS4xOSwwLDAtMS40MywyLjU4LDEyLjAyLDIuNTcsMTMuNDUsMCwzNC4zNS4yNywzNC45Mi0uMDEuNTctLjI5LDMuMTQsMS4yNCwxLjE0LTE4Ljg5WiIvPgogICAgPC9nPgogICAgPGc+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0yMzgxLjk0LDE0NTguNDZzOS41NCwzMS4xMiw5LjM4LDMxLjUxYy0uMTYuMzksMi4yNywzLjM0LDIuMjcsMy4zNGw4LjE5LjUxLDYuOTQtNC4yMnMtOS40Mi0yOS4zNy05LjA4LTMzLjE5Yy4zNC0zLjgyLTE3LjcxLDIuMDQtMTcuNzEsMi4wNFoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjQwOC43MiwxNDg5LjZzLTguODgsNC4zMS0xNy40MS0uMTRjMCwwLTI5LjQ4LDE1LjEtMjcuNTMsMjMuNzgsMCwwLTEuMDEsMi43NywxMi4yOC42NiwxMy4yOS0yLjEsMzMuOTctNS4wOSwzNC40OS01LjQ2LjUyLS4zNywzLjMuNzQtMS44My0xOC44NFoiLz4KICAgIDwvZz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtNSIgZD0ibTIzNjguNjUsMTIwMy42N2wtMTE3LjI0LTQuMDFzLTEzLjc3LDg0LjczLDEwLjQ3LDI4NS4yNWgzNi4zNnM3LjcxLTIwNi41MywxNC4zMi0yMTguNGM2LjYxLTExLjg3LDI5Ljc1LDEyOS4xNiw2Ni4xMSwyMTMuOTlsMzMuMDUtOS45MnMtMjkuNzUtMTQ4Ljc0LTM0LjE2LTE4Ny4zYy00LjQxLTM4LjU2LTguOTEtNzkuNjItOC45MS03OS42MloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0yMTM3LjUxLDEwMDUuMjlzLTYuMjQtMy42NS03LjEyLTMuOWMtLjg5LS4yNS0yLjExLjA2LDEuNzEsNC4xMiwzLjgyLDQuMDYsMTQuNzIsOS4yOSwyMS4wOCwxMS4wNGw4LjE3LTcuOTZzLTQuNjItNi45Mi02LjI0LTEwLjI5Yy0xLjYyLTMuMzctNC45My04LjMtNi4zMS02LjgxLTEuMjksMS4zOSwyLjIyLDcuMjcsMi4yMiw3LjI3LDAsMC00LjE3LTIuNjQtNS44MS00LjM0LTEuNjQtMS43LTguNzctOC42My0xMC41NS02Ljk1LTEuMjYsMS4xOSw3LjE5LDkuOTIsNy4xOSw5LjkyLDAsMC0xMC44NS0xMC4xNC0xMi4wMy04LjE2LTEuMiwyLjAzLDEwLjE4LDEyLjY3LDEwLjE4LDEyLjY3LDAsMC02LjUzLTQuODQtNy44NC03LjMyLS4yMy0uNDMtMi4zLDIuODMsMCw1LjI2bDUuMzUsNS40NFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0ibTIzMTkuOTgsOTcyLjQ4Yy4yNywwLC41My0uMDUuNzgtLjE4LjcxLS4zOC45Mi0xLjI0LjQ3LTEuOTItMS4zNi0yLjA1LTUuNDUtNS4yNy0xMS4xOC0yLjc0LS43NC4zMy0xLjAyLDEuMTctLjYzLDEuODcuNC43MSwxLjMyLDEuMDIsMi4wNi42OSw0LjcxLTIuMDgsNy4wOCwxLjQsNy4xOCwxLjU1LjMuNDUuODEuNzEsMS4zMy43MloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0yMzExLjQsOTY0LjA2aC4wM2MuMDYtLjMxLjEyLS42NC4xOS0uOTYsMy4yNy0xNC4zNywxOS4xMy0yMi42NCwzNC44My0xNy43NSwxMy4wOCw0LjA3LDIxLjcyLDE2LjQxLDIwLjE5LDI4LjgzLS41Nyw0LjYxLTIuNCw4LjY3LTUuMTEsMTItMy44Niw1LjIyLTcuMjMsOS42OC0xMC41MywxMy4yNS01LjQ2LDUuOTEtOC41LDEzLjUtOC44MywyMS40OWwtLjM0LDcuODFjLTE4LjY0LDQuMDQtMjUuNTgtNS42My0yNS41OC01LjYzbDMuMy0xMi40NmMuMjktMS40NS0uNjktMi45Mi0yLjI0LTMuNC0uMDEsMC0uMDIsMC0uMDMsMC0yMy40OS03LjMzLTcuMTctMjQuMzQtNS45LTQzLjE3WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjM1NC40Miw5NjAuNjlsMTEuNiwxNi43Yy0uODgsMy4zLTIuNDIsNi4yNi00LjQ4LDguNzktMy44Niw1LjIyLTcuMjMsOS42OC0xMC41MywxMy4yNS0yLjI4LDIuNDctNC4xMSw1LjI0LTUuNTIsOC4yLDAsMC0uMDIsMC0uMDMsMC00LjEzLjQ1LTIzLjgtOS4yMi0yNC4wOC0xMy4wNS0uMjgtMy44Miw2Ljc1LTE1Ljc3LS40My0xNy4wNy02Ljc1LTEuMjItNC4yMS0yMi40NC00LjIxLTIyLjQ0bDE4LjIxLTEuMDksMTkuNDcsNi42OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjgiIGQ9Im0yMzIzLjI4LDk4MC40OWMtLjA2LS45NC0uNTItMS44My0xLjIzLTIuNTMtMS40Ny0xLjQ0LTQuMjctMy41NC03LjMzLTIuNTYtNC40OSwxLjQ0LTEuNjksMTEuODQsNi4zNCwxMC44OCwwLDAsMi41NS0uODIsMi4yMS01Ljc5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjM3MS41NSw5NjMuNzFjLS4zNy0yLjk5LTEuMTEtNS45NS0xLjg0LTguOS0uMzctMS40OC0uNzQtMi45NS0xLjA2LTQuNDMtLjIyLTEuMDQtLjE3LTMuMTItMS4yMi0zLjg1LTEuMzMtLjkzLTIuNzcsMi4yNC0yLjg5LDMuMDItLjI4LDEuODIuNDIsMy43My4zNSw1LjU3LjE4LTQuOTYtNS4zNy05LjQ0LTkuNDEtMTIuMDgtNC40NS0yLjktOS40Ni01LjE3LTE0LjM2LTcuMjctMS4xMy0uNDgtMi4yOS0uOTYtMy41MS0xLjAzLTQuMzUtLjI1LTIuNzUsMy4wOS0xLjc0LDUuMjYuMDMuMDctMy4zNy0uNjYtMy43NC0uNzYtNC43My0xLjIyLTkuNzctLjkyLTE0LjEuODUtMS41Mi42Mi0yLjk1LDIuMDItMS42MiwzLjYzLjc5Ljk2LDIuMjgsMS41NywzLjU0LDEuNjQtMi45Ny0uMTYtNi4wOC4wNC04Ljc4LDEuMS0xLjY5LjY2LTQuMTYsMi00LjQ3LDMuODgtLjMsMS44NiwxLjc1LDMuNDMsMy4zOCw0LjIxLDQuMjgsMi4wNyw5LjMsMi4zLDEzLjgxLDMuNzEsNS4wMiwxLjU3LDkuODMsMy43NywxNC4yNCw2LjU4LDMuNjQsMi4zMiw3LDUuMDMsMTAuNjMsNy4zNiwzLjA2LDEuOTYsNi4zMSwzLjY0LDkuNjEsNS4xOSwyLjIsMS4wMyw1Ljg4LDMuNzYsNy44MywyLjAzLDQuMjQtMy43NSw2LjAzLTEwLjI1LDUuMzYtMTUuNzFaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Im0yMzU1LjY5LDEwMzUuODljLTExLjA5LTguMi0yMS4wNC0xMC45MS0zNC43Ni0xMi4zNS0xMC45Mi0xLjE0LTI0LjU4LTEuOS0zNC42Ni0uMjEtMTMuODUsMi4zMi01MC41OSwxMy4yMy02NS40NCwxMi45MS0xOC4xLS4zOC02MS41Ni0zMC44NC02MS41Ni0zMC44NGwtNy4yMSwxMi45M3MxOS4yMyw0NS45OCw1MC44MSw1Mi41YzMxLjU4LDYuNTIsNTcuNTIsNi43Niw1Ny41Miw2Ljc2bC0xMi45MywxMzMuNjVzNjAuMjcsMjQuMTUsMTI0LjM1LTMuNzZjMCwwLS41OC01Ny4wNy0uMTItMTEzLjg3LjIxLTI1LjktMi4zNy00Ny42Ni0xNi01Ny43MloiLz4KICA8L2c+CiAgPHJlY3QgY2xhc3M9ImNscy0xNCIgeD0iMTQwNS4yNCIgeT0iMTMwMC45MyIgd2lkdGg9IjE0OS4yOCIgaGVpZ2h0PSI0NC4yMiIvPgogIDxnPgogICAgPHJlY3QgY2xhc3M9ImNscy0zMCIgeD0iMTQxOS44IiB5PSIxMzEwLjY5IiB3aWR0aD0iNDcuNiIgaGVpZ2h0PSIyLjY1Ii8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNDc0LjkiIHk9IjEzMTAuNjkiIHdpZHRoPSI0Ny42IiBoZWlnaHQ9IjIuNjUiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMzAiIHg9IjE0MTkuOCIgeT0iMTMyMC42MyIgd2lkdGg9IjQ3LjYiIGhlaWdodD0iMi42NSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0zMCIgeD0iMTQxOS44IiB5PSIxMzMwLjU3IiB3aWR0aD0iNDcuNiIgaGVpZ2h0PSIyLjY1Ii8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNDc0LjkiIHk9IjEzMjAuNjMiIHdpZHRoPSI0Ny42IiBoZWlnaHQ9IjIuNjUiLz4KICA8L2c+CiAgPHJlY3QgY2xhc3M9ImNscy0xNCIgeD0iMTYyOC40OCIgeT0iMTI3MS43OCIgd2lkdGg9IjY3Ljg5IiBoZWlnaHQ9IjIwLjExIi8+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNjM1LjEiIHk9IjEyNzYuMjIiIHdpZHRoPSIyMS42NSIgaGVpZ2h0PSIxLjIxIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNjYwLjE2IiB5PSIxMjc2LjIyIiB3aWR0aD0iMjEuNjUiIGhlaWdodD0iMS4yMSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0zMCIgeD0iMTYzNS4xIiB5PSIxMjgwLjc0IiB3aWR0aD0iMjEuNjUiIGhlaWdodD0iMS4yIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNjM1LjEiIHk9IjEyODUuMjYiIHdpZHRoPSIyMS42NSIgaGVpZ2h0PSIxLjIxIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNjYwLjE2IiB5PSIxMjgwLjc0IiB3aWR0aD0iMjEuNjUiIGhlaWdodD0iMS4yIi8+CiAgPC9nPgo8L3N2Zz4= -GATSBY_FOOTER_LOGO_URL=https://xxllnc.nl/wp-content/uploads/2021/04/xxllnc-kleur.svg -GATSBY_FOOTER_LOGO_HREF=https://xxllnc.nl/ -GATSBY_NL_DESIGN_THEME_CLASSNAME=xxllnc-theme +GATSBY_FOOTER_LOGO_URL=https://openwebconcept.nl/wp-content/themes/openwebconcept/assets/src/images/logo@2x.png +GATSBY_FOOTER_LOGO_HREF=https://openwebconcept.nl/ +GATSBY_NL_DESIGN_THEME_CLASSNAME=open-webconcept-theme diff --git a/404.html b/404.html index bbf6dffb..3313880b 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/404/index.html b/404/index.html index e0f1e654..e96e554e 100644 --- a/404/index.html +++ b/404/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/824715f2-9a571035d7fa666a5995.js b/824715f2-9a571035d7fa666a5995.js deleted file mode 100644 index 042b0614..00000000 --- a/824715f2-9a571035d7fa666a5995.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see 824715f2-9a571035d7fa666a5995.js.LICENSE.txt */ -"use strict";(self.webpackChunkproduct_website_template=self.webpackChunkproduct_website_template||[]).push([[369],{1800:function(t,e,r){r.d(e,{AS:function(){return Zi},BB:function(){return we},EK:function(){return re},Ee:function(){return un},GS:function(){return Fn},JH:function(){return $n},QI:function(){return qi},RM:function(){return ri},SC:function(){return Ei},T3:function(){return Hn},Ux:function(){return Bn},WA:function(){return Kn},XJ:function(){return Sr},aC:function(){return zr},bZ:function(){return K},dn:function(){return ae},iA:function(){return Qo},k8:function(){return Tr},mr:function(){return no},nL:function(){return Or},nv:function(){return co},pj:function(){return si},rU:function(){return Nt},xD:function(){return vi},xs:function(){return wi}});var n,o,i,a,c,u,l,s,d,h,f,p,b,g,m,v,y,x,k,w=r(168),_=(r(3792),r(7207),r(9244),r(7424)),C=r.n(_),O=r(215),E=r.n(O),D=r(8416),j=r.n(D),S=r(7294),A=r(5893),M=r(5505),N=r(3012),z=r.n(N),P=r(434),F=r.n(P);r(3498);function L(t,e){void 0===e&&(e={});var r=e.insertAt;if(t&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}L(".utrecht-accordion__section{margin-block-end:var(--utrecht-accordion-section-margin-block-end);margin-block-start:var(--utrecht-accordion-section-margin-block-start)}.utrecht-accordion__button{--utrecht-button-focus-scale:1;--utrecht-button-hover-scale:1;--utrecht-button-inline-size:100%;--utrecht-button-subtle-background-color:var(--utrecht-accordion-button-background-color);--utrecht-button-subtle-padding-inline-start:var(--utrecht-accordion-button-padding-inline-start);--utrecht-button-subtle-padding-inline-end:var(--utrecht-accordion-button-padding-inline-end);--utrecht-button-subtle-padding-block-start:var(--utrecht-accordion-button-padding-block-start);--utrecht-button-subtle-padding-block-end:var(--utrecht-accordion-button-padding-block-end);--utrecht-button-subtle-color:var(--utrecht-accordion-button-color);--utrecht-button-subtle-hover-background-color:var(--utrecht-accordion-button-hover-background-color);--utrecht-button-subtle-hover-border-color:var(--utrecht-accordion-button-hover-border-color);--utrecht-button-subtle-hover-color:var(--utrecht-accordion-button-hover-color);--utrecht-button-subtle-active-background-color:var(--utrecht-accordion-button-active-background-color);--utrecht-button-subtle-active-border-color:var(--utrecht-accordion-button-active-border-color);--utrecht-button-subtle-active-color:var(--utrecht-accordion-button-active-color);--utrecht-button-subtle-focus-background-color:var(--utrecht-accordion-button-focus-background-color);--utrecht-button-subtle-focus-border-color:var(--utrecht-accordion-button-focus-border-color);--utrecht-button-subtle-focus-color:var(--utrecht-accordion-button-focus-color);--utrecht-button-subtle-border-color:var(--utrecht-accordion-button-border-color);--utrecht-button-subtle-border-width:var(--utrecht-accordion-button-border-width);justify-content:start!important;position:relative}.utrecht-accordion__button[aria-expanded]:after{background-color:var(--utrecht-accordion-button-icon-background-color);background-position:50%;background-repeat:no-repeat;block-size:var(--utrecht-accordion-button-icon-size);content:\"\";inline-size:var(--utrecht-accordion-button-icon-size);inset-block-start:0;inset-inline-end:0;position:absolute}.utrecht-accordion__button[aria-expanded=false]:after{background-image:var(--utrecht-accordion-icon-arrow-down,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='21.39' height='14.39'%3E%3Cpath fill='none' stroke='%231D1D1D' stroke-width='3' stroke-miterlimit='10' d='m15.866 4.135-5.32 5.322-5.322-5.322'/%3E%3C/svg%3E\"))}.utrecht-accordion__button[aria-expanded=true]:after{background-image:var(--utrecht-accordion-icon-arrow-up,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='21.39' height='14.39'%3E%3Cpath fill='none' stroke='%231D1D1D' stroke-width='3' stroke-miterlimit='10' d='m5.223 9.457 5.32-5.322 5.322 5.322'/%3E%3C/svg%3E\"));background-position:50%;background-repeat:no-repeat;content:\"\"}.utrecht-accordion__panel{border-block-start:none;border-color:var(--utrecht-accordion-panel-border-color);border-style:solid;border-width:var(--utrecht-accordion-panel-border-width);padding-block-end:var(--utrecht-accordion-panel-padding-block-end);padding-block-start:var(--utrecht-accordion-panel-padding-block-start);padding-inline-end:var(--utrecht-accordion-panel-padding-inline-end);padding-inline-start:var(--utrecht-accordion-panel-padding-inline-start)}");var T=["appearance","busy","disabled","children","className","hint","pressed","type"];function R(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function B(t){for(var e=1;e=0?n[c]:void 0,l=u?(o=n,(a=(i=u)?o.indexOf(i):-1)>=0&&a+1<=o.length-1?o[a+1]:void 0):void 0;null==l||null===(e=l.current)||void 0===e||e.focus()},focusFirstSection:function(){var t,e,o=(e=n).length>=1?e[0]:void 0;console.log(r),null==o||null===(t=o.current)||void 0===t||t.focus()},focusPreviousSection:function(t){var e,o,i,a,c=r.indexOf(t),u=c>=0?n[c]:void 0,l=u?(o=n,(a=(i=u)?o.indexOf(i):-1)>=0&&a-1<=o.length-1?o[a-1]:void 0):void 0;null==l||null===(e=l.current)||void 0===e||e.focus()},focusLastSection:function(){var t,e,r=(e=n).length>=1?e[e.length-1]:void 0;null==r||null===(t=r.current)||void 0===t||t.focus()}}}(e,r),o=n.refs,i=n.buttonRefs,a=n.focusNextSection,c=n.focusFirstSection,u=n.focusLastSection,l=n.focusPreviousSection,s=(0,S.useState)(null),d=C()(s,2),h=d[0],f=d[1],p=(0,S.useState)(e),b=C()(p,2),g=b[0],m=b[1],v=function(t){f(t)},y=function(t){f(null)};return(0,A.jsx)(Y,{onKeyDown:function(t){if("End"===t.code)u();else if("Home"===t.code)c();else if("ArrowDown"===t.code)h&&a(h);else{if("ArrowUp"!==t.code)return;h&&l(h)}t.preventDefault()},ref:r,children:g.map((function(t,e){return(0,S.createElement)($,G(G({},t),{},{ref:o[e],buttonRef:i[e],key:e,onButtonFocus:v,onButtonBlur:y,onActivate:function(t){var e=o.indexOf(t);m(g.map((function(t,r){return r===e?G(G({},t),{},{expanded:!t.expanded}):t})))}}),t.body)}))})}).displayName="AccordionProvider";L('.utrecht-alert{background-color:var(--_utrecht-alert-background-color,var(--utrecht-alert-background-color));border-color:var(--_utrecht-alert-border-color,var(--utrecht-alert-border-color));border-radius:var(--utrecht-alert-border-radius,0);border-style:solid;border-width:var(--_utrecht-alert-border-width,var(--utrecht-alert-border-width,0));color:var(--_utrecht-alert-color,var(--utrecht-alert-color));display:grid;gap:var(--utrecht-alert-icon-gap);grid-template-areas:"icon message";grid-template-columns:0fr 100fr;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-start, 0));padding-block-end:var(--utrecht-alert-padding-block-end);padding-block-start:var(--utrecht-alert-padding-block-start);padding-inline-end:var(--utrecht-alert-padding-inline-end);padding-inline-start:var(--utrecht-alert-padding-inline-start)}.utrecht-alert__icon{--utrecht-icon-color:var(--_utrecht-alert-icon-color,var(--utrecht-alert-icon-color));grid-area:icon}.utrecht-alert__message{grid-area:message}.utrecht-alert--info{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-info-color);--_utrecht-alert-background-color:var(--utrecht-alert-info-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-info-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-info-border-width);--_utrecht-alert-color:var(--utrecht-alert-info-color)}.utrecht-alert--ok{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-ok-color);--_utrecht-alert-background-color:var(--utrecht-alert-ok-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-ok-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-ok-border-width);--_utrecht-alert-color:var(--utrecht-alert-ok-color)}.utrecht-alert--warning{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-warning-color);--_utrecht-alert-background-color:var(--utrecht-alert-warning-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-warning-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-warning-border-width);--_utrecht-alert-color:var(--utrecht-alert-warning-color)}.utrecht-alert--error{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-error-color);--_utrecht-alert-background-color:var(--utrecht-alert-error-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-error-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-error-border-width);--_utrecht-alert-color:var(--utrecht-alert-error-color)}');var X=["children","className","icon","type"];function J(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Q(t){for(var e=1;e0&&"utrecht-currency-data--positive",u),"aria-label":d,children:r||h}))}));pe.displayName="CurrencyData";L(".utrecht-badge-data{background-color:var(--utrecht-badge-background-color,#000);border-radius:var(--utrecht-badge-border-radius,.5ch);color:var(--utrecht-badge-color,#fff);display:inline-block;font-family:var(--utrecht-document-font-family,sans-serif);font-size:var(--utrecht-badge-font-size,inherit);font-style:var(--utrecht-badge-font-style,normal);font-weight:var(--utrecht-badge-font-weight,bold);letter-spacing:var(--utrecht-badge-data-letter-spacing,inherit);line-height:var(--utrecht-badge-line-height,1em);max-block-size:max-content;max-inline-size:max-content;min-block-size:1em;min-inline-size:1em;padding-block-end:var(--utrecht-badge-padding-block,.5ex);padding-block-start:var(--utrecht-badge-padding-block,.5ex);padding-inline-end:var(--utrecht-badge-padding-inline,.5ch);padding-inline-start:var(--utrecht-badge-padding-inline,.5ch);text-decoration:none;text-transform:var(--utrecht-badge-data-text-transform,inherit)}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-badge-data{border:1px solid}}");var be=["children","className","dateTime","value"];function ge(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function me(t){for(var e=1;e*{--utrecht-space-around:1}.utrecht-form-field-description--invalid{color:var(--utrecht-form-field-description-invalid-color,var(--utrecht-feedback-invalid-color,var(--utrecht-feedback-danger-color)))}.utrecht-form-field-description--valid{color:var(--utrecht-form-field-description-valid-color,var(--utrecht-feedback-valid-color,var(--utrecht-feedback-safe-color)))}.utrecht-form-field-description--warning{color:var(--utrecht-form-field-description-warning-color,var(--utrecht-feedback-warning-color))}");var ar=["invalid","valid","warning","className","children"];function cr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function ur(t){for(var e=1;elegend{color:var(--utrecht-form-fieldset-legend-disabled-color,var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit)))}.utrecht-html label{color:var(--utrecht-form-label-color);font-size:var(--utrecht-form-label-font-size);font-weight:var(--utrecht-form-label-font-weight)}.utrecht-html input[type=checkbox i]~label{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-checkbox-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-html input[type=radio i]~label{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-radio-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-html mark{background-color:var(--utrecht-mark-background-color,revert);color:var(--utrecht-mark-color,revert)}@media print{.utrecht-html mark{outline-color:currentColor;outline-style:dotted;outline-width:.1em}}@media screen and (-ms-high-contrast:active){.utrecht-html mark{background-color:Highlight;color:HighlightText}}.utrecht-html h1{color:var(--utrecht-heading-1-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-1-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-1-font-size,revert);font-weight:var(--utrecht-heading-1-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-1-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-start, 0))}.utrecht-html h1,.utrecht-html h2{--utrecht-space-around:1;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h2{color:var(--utrecht-heading-2-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-2-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-2-font-size,revert);font-weight:var(--utrecht-heading-2-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-2-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-start, 0))}.utrecht-html h3{color:var(--utrecht-heading-3-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-3-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-3-font-size,revert);font-weight:var(--utrecht-heading-3-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-3-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-start, 0))}.utrecht-html h3,.utrecht-html h4{--utrecht-space-around:1;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h4{color:var(--utrecht-heading-4-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-4-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-4-font-size,revert);font-weight:var(--utrecht-heading-4-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-4-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-start, 0))}.utrecht-html h5{color:var(--utrecht-heading-5-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-5-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-5-font-size,revert);font-weight:var(--utrecht-heading-5-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-5-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-start, 0))}.utrecht-html h5,.utrecht-html h6{--utrecht-space-around:1;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h6{color:var(--utrecht-heading-6-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-6-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-6-font-size,revert);font-weight:var(--utrecht-heading-6-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-6-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-start, 0))}.utrecht-html hgroup{--utrecht-pre-heading-order:-1;--utrecht-space-around:1;display:flex;flex-direction:column;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-start, 0))}.utrecht-html hgroup>*{--utrecht-space-around:0}.utrecht-html a{--utrecht-icon-size:var(--utrecht-link-icon-size,1em);color:var(--_utrecht-link-state-color,var(--utrecht-link-color,var(--_utrecht-link-forced-colors-color)))}.utrecht-html a:visited{--_utrecht-link-forced-colors-color:visitedtext;--_utrecht-link-state-color:var(--utrecht-link-visited-color)}.utrecht-html a:hover{--_utrecht-link-forced-colors-color:linktext;--_utrecht-link-state-color:var(--utrecht-link-hover-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-hover-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-hover-text-decoration-thickness);text-decoration-skip:none;text-decoration-skip-ink:none}.utrecht-html a:active{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-html a:focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-link-focus-background-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);text-decoration-skip-ink:none;z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-html a:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html a[href^="tel:" i]{white-space:nowrap}.utrecht-html ol{--utrecht-space-around:1;box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit)));line-height:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit)));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-end, var(--utrecht-unordered-list-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-start, var(--utrecht-unordered-list-margin-block-start, 0)));padding-inline-start:var(--utrecht-ordered-list-padding-inline-start,var(--utrecht-unordered-list-padding-inline-start,2ch));text-align:start}.utrecht-html ol>li{margin-block-end:var(--utrecht-ordered-list-item-margin-block-end,var(--utrecht-unordered-list-item-margin-block-end));margin-block-start:var(--utrecht-ordered-list-item-margin-block-start,var(--utrecht-unordered-list-item-margin-block-start));padding-inline-start:var(--utrecht-ordered-list-item-padding-inline-start,var(--utrecht-unordered-list-item-padding-inline-start,1ch))}.utrecht-html ol:lang(ar){list-style:arabic-indic}.utrecht-html p{color:var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit));font-family:var(--utrecht-paragraph-font-family,var(--utrecht-document-font-family,inherit));font-size:var(--utrecht-paragraph-font-size,var(--utrecht-document-font-size,inherit));font-weight:var(--utrecht-paragraph-font-weight,inherit);line-height:var(--utrecht-paragraph-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-start, 0))}.utrecht-html p.lead{color:var(--utrecht-paragraph-lead-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-lead-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-lead-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-lead-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-html *~p{--utrecht-space-around:1}.utrecht-html p:has(>small:only-child){color:var(--utrecht-paragraph-small-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-small-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-small-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-small-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-html p>small:only-child{font-size:inherit}.utrecht-html pre:has(>code:only-child){--utrecht-code-color:var(--utrecht-code-block-color,inherit);--utrecht-code-background-color:var(--utrecht-code-block-background-color,inherit);--utrecht-code-font-weight:var(--utrecht-code-block-font-weight,inherit);--utrecht-code-font-size:var(--utrecht-code-block-font-size,inherit);--utrecht-code-font-family:var(--utrecht-code-block-font-family,monospace);background-color:var(--utrecht-code-background-color);background-color:var(--utrecht-code-block-background-color);color:var(--utrecht-code-color);display:block;font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-size:var(--utrecht-code-block-font-size,var(--utrecht-code-font-size));font-variant-ligatures:none;line-height:var(--utrecht-code-line-height);line-height:var(--utrecht-code-block-line-height,var(--utrecht-code-line-height));margin-block-end:var(--utrecht-code-block-margin-block-end);margin-block-start:var(--utrecht-code-block-margin-block-start);margin-inline-end:var(--utrecht-code-block-margin-inline-end);margin-inline-start:var(--utrecht-code-block-margin-inline-start);padding-block-end:var(--utrecht-code-block-padding-block-end);padding-block-start:var(--utrecht-code-block-padding-block-start);padding-inline-end:var(--utrecht-code-block-padding-inline-end);padding-inline-start:var(--utrecht-code-block-padding-inline-start);white-space:pre}.utrecht-html pre:has(>code:only-child)>code{display:contents}.utrecht-html input[type=radio i]{--_utrecht-radio-button-background-color:var(\n --_utrecht-radio-button-interactive-background-color,var(--_utrecht-radio-button-state-background-color,var(--utrecht-radio-button-background-color))\n );--_utrecht-radio-button-border-color:var(\n --_utrecht-radio-button-interactive-border-color,var(--_utrecht-radio-button-state-border-color,var(--utrecht-radio-button-border-color,currentColor))\n );--_utrecht-radio-button-border-width:var(\n --_utrecht-radio-button-interactive-border-width,var(--_utrecht-radio-button-state-border-width,var(--utrecht-radio-button-border-width))\n );--_utrecht-radio-button-color:var(\n --_utrecht-radio-button-interactive-color,var(--_utrecht-radio-button-state-color,var(--utrecht-radio-button-color,currentColor))\n );--_utrecht-radio-button-icon-size:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--_utrecht-radio-button-background-color);background-image:radial-gradient(circle,var(--_utrecht-radio-button-color,transparent) calc(var(--_utrecht-radio-button-icon-size, 50%) - 5%),var(--_utrecht-radio-button-background-color,currentColor) var(--_utrecht-radio-button-icon-size,50%));background-position:50%;background-repeat:no-repeat;background-size:contain;block-size:var(--utrecht-radio-button-size,1em);border-color:var(--_utrecht-radio-button-border-color);border-radius:50%;border-style:solid;border-width:var(--_utrecht-radio-button-border-width);cursor:var(--utrecht-action-activate-cursor,revert);inline-size:var(--utrecht-radio-button-size,1em);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-end:var(--utrecht-radio-button-margin-inline-end);margin-inline-start:0;min-block-size:24px;min-inline-size:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:top}.utrecht-html input[type=radio i]:checked{--_utrecht-radio-button-icon-size:var(--utrecht-radio-button-icon-size,50%);--_utrecht-radio-button-state-background-color:var(--utrecht-radio-button-checked-background-color);--_utrecht-radio-button-state-border-color:var(--utrecht-radio-button-checked-border-color);--_utrecht-radio-button-state-border-width:var(--utrecht-radio-button-checked-border-width);--_utrecht-radio-button-state-color:var(--utrecht-radio-button-checked-color);--_utrecht-radio-button-state-active-background-color:var(--utrecht-radio-button-checked-active-background-color);--_utrecht-radio-button-state-active-border-color:var(--utrecht-radio-button-checked-active-border-color);--_utrecht-radio-button-state-active-border-width:var(--utrecht-radio-button-checked-active-border-width);--_utrecht-radio-button-state-active-color:var(--utrecht-radio-button-checked-active-color);--_utrecht-radio-button-state-focus-background-color:var(--utrecht-radio-button-checked-focus-background-color);--_utrecht-radio-button-state-focus-border-color:var(--utrecht-radio-button-checked-focus-border-color);--_utrecht-radio-button-state-focus-border-width:var(--utrecht-radio-button-checked-focus-border-width);--_utrecht-radio-button-state-focus-color:var(--utrecht-radio-button-checked-focus-color);--_utrecht-radio-button-state-hover-background-color:var(--utrecht-radio-button-checked-hover-background-color);--_utrecht-radio-button-state-hover-border-color:var(--utrecht-radio-button-checked-hover-border-color);--_utrecht-radio-button-state-hover-border-width:var(--utrecht-radio-button-checked-hover-border-width);--_utrecht-radio-button-state-hover-color:var(--utrecht-radio-button-checked-hover-color)}.utrecht-html input[type=radio i]:disabled{--_utrecht-radio-button-background-color:var(--utrecht-radio-button-disabled-background-color);--_utrecht-radio-button-border-color:var(--utrecht-radio-button-disabled-border-color);--_utrecht-radio-button-border-width:var(--utrecht-radio-button-disabled-border-width);--_utrecht-radio-button-color:var(--utrecht-radio-button-disabled-color);--_utrecht-radio-button-focus-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-focus-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-focus-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-focus-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-active-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-active-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-active-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-active-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-hover-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-hover-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-hover-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-hover-color:var(--_utrecht-radio-button-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html input[type=radio i]:invalid,.utrecht-html input[type=radio i][aria-invalid=true]{border-color:var(--utrecht-radio-button-invalid-border-color,var(--utrecht-radio-button-border-color));border-width:var(--utrecht-radio-button-invalid-border-width,var(--utrecht-radio-button-border-width));color:var(--utrecht-radio-button-invalid-color,var(--utrecht-radio-button-color))}.utrecht-html input[type=radio i]:focus:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\n --utrecht-radio-button-focus-background-color,var(--utrecht-radio-button-focus-background-color)\n );--_utrecht-radio-button-interactive-border-color:var(\n --utrecht-radio-button-focus-border-color,var(--utrecht-radio-button-focus-border-color)\n );--_utrecht-radio-button-interactive-border-width:var(\n --utrecht-radio-button-focus-border-width,var(--utrecht-radio-button-focus-border-width)\n );--_utrecht-radio-button-interactive-color:var(\n --utrecht-radio-button-focus-color,var(--utrecht-radio-button-focus-color)\n )}.utrecht-html input[type=radio i]:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input[type=radio i]:hover:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\n --_utrecht-radio-button-state-hover-background-color,var(--utrecht-radio-button-hover-background-color)\n );--_utrecht-radio-button-interactive-border-color:var(\n --_utrecht-radio-button-state-hover-border-color,var(--utrecht-radio-button-hover-border-color)\n );--_utrecht-radio-button-interactive-border-width:var(\n --_utrecht-radio-button-state-hover-border-width,var(--utrecht-radio-button-hover-border-width)\n );--_utrecht-radio-button-interactive-color:var(\n --_utrecht-radio-button-state-hover-color,var(--utrecht-radio-button-hover-color)\n )}.utrecht-html input[type=radio i]:active:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\n --_utrecht-radio-button-state-active-background-color,var(--utrecht-radio-button-active-background-color)\n );--_utrecht-radio-button-interactive-border-color:var(\n --_utrecht-radio-button-state-active-border-color,var(--utrecht-radio-button-active-border-color)\n );--_utrecht-radio-button-interactive-border-width:var(\n --_utrecht-radio-button-state-active-border-width,var(--utrecht-radio-button-active-border-width)\n );--_utrecht-radio-button-interactive-color:var(\n --_utrecht-radio-button-state-active-color,var(--utrecht-radio-button-active-color)\n )}.utrecht-html select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:var(--utrecht-select-background-color,var(--utrecht-form-control-background-color));background-image:var(--utrecht-select-background-image);background-position:100%;background-repeat:no-repeat;background-size:1.4em;border-block-end-width:var(--utrecht-select-border-block-end-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width)));border-block-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-color:var(--utrecht-select-border-color,var(--utrecht-form-control-border-color));border-inline-end-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-inline-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-radius:var(--utrecht-select-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;color:var(--utrecht-select-color,var(--utrecht-form-control-color));font-family:var(--utrecht-select-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-select-font-size,var(--utrecht-form-control-font-size));inline-size:100%;max-inline-size:var(--utrecht-select-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-select-padding-block-end,var(--utrecht-form-control-padding-block-end));padding-block-start:var(--utrecht-select-padding-block-start,var(--utrecht-form-control-padding-block-start));padding-inline-end:var(--utrecht-select-padding-inline-end,var(--utrecht-form-control-padding-inline-end));padding-inline-start:var(--utrecht-select-padding-inline-start,var(--utrecht-form-control-padding-inline-start))}.utrecht-html select:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-select-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-select-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html select:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html select:disabled{background-color:var(--utrecht-select-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html select[aria-invalid=true]{--_utrecht-select-border-width:var(\n --utrecht-select-invalid-border-width,var(\n --utrecht-form-control-invalid-border-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width))\n )\n );background-color:var(--utrecht-select-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-select-border-width);border-block-end-width:var(--utrecht-select-invalid-border-block-end-width,var(--utrecht-form-control-invalid-border-block-end-width,var(--utrecht-select-border-block-end-width,var(--utrecht-form-control-border-block-end-width,var(--_utrecht-select-border-width)))));border-color:var(--utrecht-select-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))))}.utrecht-html hr{border-color:var(--utrecht-separator-color);border-width:0 0 var(--utrecht-separator-block-size) 0;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-start, 0))}.utrecht-html hr,.utrecht-html table{--utrecht-space-around:1;border-style:solid}.utrecht-html table{border-collapse:separate;border-color:var(--utrecht-table-border-color,0);border-spacing:0;border-width:var(--utrecht-table-border-width,0);font-family:var(--utrecht-table-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-table-font-size,inherit);inline-size:100%;line-height:var(--utrecht-table-line-height,inherit);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-start, 0))}.utrecht-html caption{color:var(--utrecht-table-caption-color);font-family:var(--utrecht-table-caption-font-family);font-size:var(--utrecht-table-caption-font-size);font-weight:var(--utrecht-table-caption-font-weight);line-height:var(--utrecht-table-caption-line-height);margin-block-end:var(--utrecht-table-caption-margin-block-end);page-break-after:avoid;text-align:var(--utrecht-table-caption-text-align,center)}.utrecht-html thead{--_utrecht-table-header-cell-vertical-align:bottom;--_utrecht-table-header-cell-z-index:8;background-color:var(--utrecht-table-header-background-color);color:var(--utrecht-table-header-color);font-weight:var(--utrecht-table-header-font-weight);page-break-inside:avoid;text-transform:var(--utrecht-table-header-text-transform)}.utrecht-html tbody{--_utrecht-table-header-cell-z-index:2}.utrecht-html th{color:var(--utrecht-table-header-cell-color);font-size:var(--utrecht-table-header-cell-font-size);font-weight:var(--utrecht-table-header-cell-font-weight,bold);text-transform:var(--utrecht-table-header-cell-text-transform);vertical-align:var(--_utrecht-table-header-cell-vertical-align,top);z-index:var(--_utrecht-table-header-cell-z-index)}.utrecht-html td,.utrecht-html th{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start}.utrecht-html td,.utrecht-html th{border-block-end-color:var(--utrecht-table-row-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-row-border-block-end-width,0);vertical-align:top}.utrecht-html td:first-child,.utrecht-html th:first-child{padding-inline-start:var(--utrecht-table-row-padding-inline-start,var(--utrecht-table-cell-padding-inline-start,0))}.utrecht-html td:last-child,.utrecht-html th:last-child{padding-inline-end:var(--utrecht-table-row-padding-inline-end,var(--utrecht-table-cell-padding-inline-end,0))}.utrecht-html thead tr:last-child th{border-block-end-color:var(--utrecht-table-header-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-header-border-block-end-width,0)}.utrecht-html td.numeric,.utrecht-html tfoot>tr>th.numeric,.utrecht-html th[scope=column].numeric,.utrecht-html thead>tr>th.numeric{--_utrecht-table-cell-text-align:right;text-align:var(--_utrecht-table-cell-text-align)}.utrecht-html td.numeric{font-variant-numeric:lining-nums tabular-nums}.utrecht-html table.alternate-row-color>tr:nth-child(2n)>td,.utrecht-html table.alternate-row-color>tr:nth-child(2n)>th{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-html table.alternate-row-color>tr:nth-child(odd)>td,.utrecht-html table.alternate-row-color>tr:nth-child(odd)>th{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-html table.alternate-row-color>tbody>tr:nth-child(2n)>td,.utrecht-html table.alternate-row-color>tbody>tr:nth-child(2n)>th{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-html table.alternate-row-color>tbody>tr:nth-child(odd)>td,.utrecht-html table.alternate-row-color>tbody>tr:nth-child(odd)>th{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-html textarea{background-color:var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textarea-border-bottom-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textarea-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textarea-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textarea-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textarea-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textarea-line-height,initial);max-inline-size:var(--utrecht-textarea-max-inline-size,var(--utrecht-form-control-max-inline-size));min-block-size:var(--utrecht-textarea-min-block-size);padding-block-end:var(--utrecht-textarea-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textarea-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textarea-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textarea-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial));resize:vertical;resize:block}.utrecht-html textarea:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textarea-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textarea-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html textarea:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html textarea:invalid,.utrecht-html textarea[aria-invalid=true]{--_utrecht-textarea-border-width:var(\n --utrecht-textarea-invalid-border-width,var(\n --utrecht-form-control-invalid-border-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width))\n )\n );background-color:var(--utrecht-textarea-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textarea-border-width);border-block-end-width:var(--utrecht-textarea-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textarea-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textarea-border-width)))));border-color:var(--utrecht-textarea-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-html textarea:read-only{background-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textarea-border,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textarea-border,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-html textarea:disabled{background-color:var(--utrecht-textarea-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html textarea::placeholder{color:var(--utrecht-textarea-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-html input:not([type]),.utrecht-html input[type=date i],.utrecht-html input[type=datetime-local i],.utrecht-html input[type=email i],.utrecht-html input[type=month i],.utrecht-html input[type=number i],.utrecht-html input[type=password i],.utrecht-html input[type=search i],.utrecht-html input[type=tel i],.utrecht-html input[type=text i],.utrecht-html input[type=time i],.utrecht-html input[type=url i],.utrecht-html input[type=week i]{background-color:var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textbox-border-bottom-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textbox-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textbox-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textbox-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textbox-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textbox-line-height,var(--utrecht-form-control-line-height,initial));max-inline-size:var(--utrecht-textbox-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-textbox-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textbox-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textbox-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textbox-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial))}.utrecht-html input:not([type]):focus,.utrecht-html input[type=date i]:focus,.utrecht-html input[type=datetime-local i]:focus,.utrecht-html input[type=email i]:focus,.utrecht-html input[type=month i]:focus,.utrecht-html input[type=number i]:focus,.utrecht-html input[type=password i]:focus,.utrecht-html input[type=search i]:focus,.utrecht-html input[type=tel i]:focus,.utrecht-html input[type=text i]:focus,.utrecht-html input[type=time i]:focus,.utrecht-html input[type=url i]:focus,.utrecht-html input[type=week i]:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textbox-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textbox-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input:not([type]):focus:not(:focus-visible),.utrecht-html input[type=date i]:focus:not(:focus-visible),.utrecht-html input[type=datetime-local i]:focus:not(:focus-visible),.utrecht-html input[type=email i]:focus:not(:focus-visible),.utrecht-html input[type=month i]:focus:not(:focus-visible),.utrecht-html input[type=number i]:focus:not(:focus-visible),.utrecht-html input[type=password i]:focus:not(:focus-visible),.utrecht-html input[type=search i]:focus:not(:focus-visible),.utrecht-html input[type=tel i]:focus:not(:focus-visible),.utrecht-html input[type=text i]:focus:not(:focus-visible),.utrecht-html input[type=time i]:focus:not(:focus-visible),.utrecht-html input[type=url i]:focus:not(:focus-visible),.utrecht-html input[type=week i]:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html input:not([type]):invalid,.utrecht-html input:not([type])[aria-invalid=true],.utrecht-html input[type=date i]:invalid,.utrecht-html input[type=date i][aria-invalid=true],.utrecht-html input[type=datetime-local i]:invalid,.utrecht-html input[type=datetime-local i][aria-invalid=true],.utrecht-html input[type=email i]:invalid,.utrecht-html input[type=email i][aria-invalid=true],.utrecht-html input[type=month i]:invalid,.utrecht-html input[type=month i][aria-invalid=true],.utrecht-html input[type=number i]:invalid,.utrecht-html input[type=number i][aria-invalid=true],.utrecht-html input[type=password i]:invalid,.utrecht-html input[type=password i][aria-invalid=true],.utrecht-html input[type=search i]:invalid,.utrecht-html input[type=search i][aria-invalid=true],.utrecht-html input[type=tel i]:invalid,.utrecht-html input[type=tel i][aria-invalid=true],.utrecht-html input[type=text i]:invalid,.utrecht-html input[type=text i][aria-invalid=true],.utrecht-html input[type=time i]:invalid,.utrecht-html input[type=time i][aria-invalid=true],.utrecht-html input[type=url i]:invalid,.utrecht-html input[type=url i][aria-invalid=true],.utrecht-html input[type=week i]:invalid,.utrecht-html input[type=week i][aria-invalid=true]{--_utrecht-textbox-border-width:var(\n --utrecht-textbox-invalid-border-width,var(\n --utrecht-form-control-invalid-border-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width))\n )\n );background-color:var(--utrecht-textbox-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textbox-border-width);border-block-end-width:var(--utrecht-textbox-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textbox-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textbox-border-width)))));border-color:var(--utrecht-textbox-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-html input:not([type]):read-only,.utrecht-html input[type=date i]:read-only,.utrecht-html input[type=datetime-local i]:read-only,.utrecht-html input[type=email i]:read-only,.utrecht-html input[type=month i]:read-only,.utrecht-html input[type=number i]:read-only,.utrecht-html input[type=password i]:read-only,.utrecht-html input[type=search i]:read-only,.utrecht-html input[type=tel i]:read-only,.utrecht-html input[type=text i]:read-only,.utrecht-html input[type=time i]:read-only,.utrecht-html input[type=url i]:read-only,.utrecht-html input[type=week i]:read-only{background-color:var(--utrecht-textbox-read-only-background-color,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-read-only-border-color,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-html input:not([type]):disabled,.utrecht-html input[type=date i]:disabled,.utrecht-html input[type=datetime-local i]:disabled,.utrecht-html input[type=email i]:disabled,.utrecht-html input[type=month i]:disabled,.utrecht-html input[type=number i]:disabled,.utrecht-html input[type=password i]:disabled,.utrecht-html input[type=search i]:disabled,.utrecht-html input[type=tel i]:disabled,.utrecht-html input[type=text i]:disabled,.utrecht-html input[type=time i]:disabled,.utrecht-html input[type=url i]:disabled,.utrecht-html input[type=week i]:disabled{background-color:var(--utrecht-textbox-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html input:not([type])::placeholder,.utrecht-html input[type=date i]::placeholder,.utrecht-html input[type=datetime-local i]::placeholder,.utrecht-html input[type=email i]::placeholder,.utrecht-html input[type=month i]::placeholder,.utrecht-html input[type=number i]::placeholder,.utrecht-html input[type=password i]::placeholder,.utrecht-html input[type=search i]::placeholder,.utrecht-html input[type=tel i]::placeholder,.utrecht-html input[type=text i]::placeholder,.utrecht-html input[type=time i]::placeholder,.utrecht-html input[type=url i]::placeholder,.utrecht-html input[type=week i]::placeholder{color:var(--utrecht-textbox-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-html input[autocomplete~=current-password i],.utrecht-html input[autocomplete~=new-password i],.utrecht-html input[type=password i]{font-variant-ligatures:none;font-variant-numeric:slashed-zero}.utrecht-html input[autocomplete~=bday i],.utrecht-html input[autocomplete~=bday-day i],.utrecht-html input[autocomplete~=bday-month i],.utrecht-html input[autocomplete~=bday-year i],.utrecht-html input[autocomplete~=cc-csc i],.utrecht-html input[autocomplete~=cc-exp i],.utrecht-html input[autocomplete~=cc-exp-month i],.utrecht-html input[autocomplete~=cc-exp-year i],.utrecht-html input[autocomplete~=cc-number i],.utrecht-html input[autocomplete~=one-time-code i],.utrecht-html input[autocomplete~=postal-code i],.utrecht-html input[autocomplete~=tel i],.utrecht-html input[autocomplete~=tel-area-code i],.utrecht-html input[autocomplete~=tel-country-code i],.utrecht-html input[autocomplete~=tel-extension i],.utrecht-html input[autocomplete~=tel-local i],.utrecht-html input[autocomplete~=tel-national i],.utrecht-html input[autocomplete~=transaction-amount i],.utrecht-html input[inputmode=decimal i],.utrecht-html input[inputmode=numeric i],.utrecht-html input[inputmode=tel i],.utrecht-html input[type=number i],.utrecht-html input[type=tel i]{-moz-appearance:textfield;font-variant-numeric:lining-nums tabular-nums}.utrecht-html input[inputmode=email i],.utrecht-html input[inputmode=url i],.utrecht-html input[type=email i],.utrecht-html input[type=url i]{font-variant-ligatures:none}.utrecht-html ul{--utrecht-space-around:1;box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit));line-height:var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-end, var(--utrecht-paragraph-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-start, var(--utrecht-paragraph-margin-block-start, 0)));padding-inline-start:var(--utrecht-unordered-list-padding-inline-start,2ch);text-align:start}.utrecht-html ul>li{margin-block-end:var(--utrecht-unordered-list-item-margin-block-end);margin-block-start:var(--utrecht-unordered-list-item-margin-block-start);padding-inline-start:var(--utrecht-unordered-list-item-padding-inline-start,1ch)}.utrecht-html ul>li::marker{color:var(--utrecht-unordered-list-marker-color);content:"ā—"}');var vr=["children","className"];function yr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function xr(t){for(var e=1;e*{--utrecht-space-around:0}");var Zr=["children","className"];function Gr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function $r(t){for(var e=1;e*{block-size:100%;display:inline-block;inline-size:auto}");var mn=["children","className"];function vn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function yn(t){for(var e=1;eli,.utrecht-ordered-list--html-content>li,.utrecht-ordered-list__item{margin-block-end:var(--utrecht-ordered-list-item-margin-block-end,var(--utrecht-unordered-list-item-margin-block-end));margin-block-start:var(--utrecht-ordered-list-item-margin-block-start,var(--utrecht-unordered-list-item-margin-block-start));padding-inline-start:var(--utrecht-ordered-list-item-padding-inline-start,var(--utrecht-unordered-list-item-padding-inline-start,1ch))}");var Nn=["children","className"];function zn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Pn(t){for(var e=1;ecaption,.utrecht-table__caption{color:var(--utrecht-table-caption-color);font-family:var(--utrecht-table-caption-font-family);font-size:var(--utrecht-table-caption-font-size);font-weight:var(--utrecht-table-caption-font-weight);line-height:var(--utrecht-table-caption-line-height);margin-block-end:var(--utrecht-table-caption-margin-block-end);page-break-after:avoid;text-align:var(--utrecht-table-caption-text-align,center)}.utrecht-table--html-table>thead,.utrecht-table__header{--_utrecht-table-header-cell-vertical-align:bottom;--_utrecht-table-header-cell-z-index:8;background-color:var(--utrecht-table-header-background-color);color:var(--utrecht-table-header-color);font-weight:var(--utrecht-table-header-font-weight);page-break-inside:avoid;text-transform:var(--utrecht-table-header-text-transform)}.utrecht-table__header--sticky th{background-color:var(--utrecht-table-header-sticky-background-color);color:var(--utrecht-table-header-sticky-color);inset-block-start:0;position:sticky}.utrecht-table__header--sticky tr:last-child>th{border-block-end-color:var(--utrecht-table-header-sticky-border-block-end-color,var(--utrecht-table-header-border-block-end-color,transparent));border-block-end-style:solid;border-block-end-width:var(--utrecht-table-header-sticky-border-block-end-width,var(--utrecht-table-header-border-block-end-width,0))}.utrecht-table__footer{--_utrecht-table-header-cell-z-index:5;z-index:3}.utrecht-table__footer--sticky{background-color:var(--utrecht-table-footer-sticky-background-color,var(--utrecht-table-footer-background-color));color:var(--utrecht-table-footer-sticky-color,var(--utrecht-table-footer-color));inset-block-end:0;position:sticky}.utrecht-table__footer--sticky tr:first-child>td,.utrecht-table__footer--sticky tr:first-child>th{border-block-start-color:var(--utrecht-table-header-sticky-border-block-start-color,var(--utrecht-table-header-border-block-start-color,transparent));border-block-start-style:solid;border-block-start-width:var(--utrecht-table-header-sticky-border-block-start-width,var(--utrecht-table-header-border-block-start-width,0))}.utrecht-table--html-table>tbody,.utrecht-table__body{--_utrecht-table-header-cell-z-index:2}.utrecht-table--fixed{inline-size:fit-content;table-layout:fixed}.utrecht-table--fixed th,.utrecht-table--oneline td,.utrecht-table--oneline th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.utrecht-table--html-table>tbody>tr,.utrecht-table--html-table>tfoot>tr,.utrecht-table--html-table>thead>tr,.utrecht-table--html-table>tr,.utrecht-table__row{page-break-inside:avoid}.utrecht-table__row--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table--html-table>tbody>tr>th,.utrecht-table--html-table>tfoot>tr>th,.utrecht-table--html-table>thead>tr>th,.utrecht-table--html-table>tr>th,.utrecht-table__header-cell{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);color:var(--utrecht-table-header-cell-color);font-size:var(--utrecht-table-header-cell-font-size);font-weight:var(--utrecht-table-header-cell-font-weight,bold);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start;text-transform:var(--utrecht-table-header-cell-text-transform);vertical-align:var(--_utrecht-table-header-cell-vertical-align,top);z-index:var(--_utrecht-table-header-cell-z-index)}.utrecht-table__header-cell--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table__header-cell--sticky-block{background-color:#eee;color:#000;inset-block-start:0;position:sticky;z-index:calc(var(--_utrecht-table-header-cell-z-index, 0) + 2)}.utrecht-table__header-cell--sticky-inline{background-color:#eee;color:#000;inset-inline-start:0;position:sticky;z-index:calc(var(--_utrecht-table-header-cell-z-index, 0) + 1)}.utrecht-table--html-table>tbody>tr>td,.utrecht-table--html-table>tfoot>tr>td,.utrecht-table--html-table>thead>tr>td,.utrecht-table--html-table>tr>td,.utrecht-table__cell{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);border-block-end-color:var(--utrecht-table-row-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-row-border-block-end-width,0);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start;vertical-align:top}.utrecht-table--html-table>tbody>tr>td:first-child,.utrecht-table--html-table>tfoot>tr>td:first-child,.utrecht-table--html-table>thead>tr>td:first-child,.utrecht-table--html-table>tr>td:first-child,.utrecht-table__cell--first{padding-inline-start:var(--utrecht-table-row-padding-inline-start,var(--utrecht-table-cell-padding-inline-start,0))}.utrecht-table--html-table>tbody>tr>td:last-child,.utrecht-table--html-table>tfoot>tr>td:last-child,.utrecht-table--html-table>thead>tr>td:last-child,.utrecht-table--html-table>tr>td:last-child,.utrecht-table__cell--last{padding-inline-end:var(--utrecht-table-row-padding-inline-end,var(--utrecht-table-cell-padding-inline-end,0))}.utrecht-table__cell--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table__cell--numeric-column,.utrecht-table__header-cell--numeric-column{--_utrecht-table-cell-text-align:right;text-align:var(--_utrecht-table-cell-text-align)}.utrecht-table__cell--numeric-data{font-variant-numeric:lining-nums tabular-nums}.utrecht-table__row--alternate-odd{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-table__row--alternate-even{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-table__header-cell{--utrecht-button-font-size:inherit;--utrecht-button-font-weight:inherit;--utrecht-button-padding-inline-start:var(--utrecht-table-cell-padding-inline-start);--utrecht-button-padding-inline-end:var(--utrecht-table-cell-padding-inline-end);--utrecht-button-padding-block-start:var(--utrecht-table-cell-padding-block-start);--utrecht-button-padding-block-end:var(--utrecht-table-cell-padding-block-end);--utrecht-button-hover-scale:1;--utrecht-button-focus-scale:1;--utrecht-button-min-block-size:100%;--utrecht-button-min-inline-size:100%;--utrecht-button-border-color:transparent;--utrecht-button-border-size:1px}.utrecht-table__header-cell:has(.utrecht-button){padding-block-end:0;padding-block-start:0;padding-inline-end:0;padding-inline-start:0}.utrecht-table__header-cell-button{justify-content:var(--_utrecht-table-cell-text-align,start)}.utrecht-table__data--truncate{display:block;max-inline-size:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.utrecht-table__container{max-inline-size:100%;overflow-inline:scroll}.utrecht-table__header--hidden{clip:rect(1px,1px,1px,1px);block-size:1px;border:0 solid silver;clip-path:inset(50%);inline-size:1px;outline:1px solid red;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.utrecht-table--busy{cursor:var(--utrecht-action-busy-cursor,busy)}.utrecht-table--alternate-row-color .utrecht-table__body .utrecht-table__row:nth-child(odd){background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-table--alternate-row-color .utrecht-table__body .utrecht-table__row:nth-child(2n){background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-table--row-hover .utrecht-table__body .utrecht-table__row:hover .utrecht-table__cell,.utrecht-table--row-hover .utrecht-table__body .utrecht-table__row:hover .utrecht-table__header-cell{background-color:#ffefd5;color:maroon}.utrecht-table--row-focus-within .utrecht-table__body .utrecht-table__row:focus-within .utrecht-table__cell,.utrecht-table--row-focus-within .utrecht-table__body .utrecht-table__row:focus-within .utrecht-table__header-cell{background-color:#ffefd5;color:maroon}");var Yo=["busy","children","className"];function Xo(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Jo(t){for(var e=1;eli,.utrecht-unordered-list--html-content>li,.utrecht-unordered-list__item{margin-block-end:var(--utrecht-unordered-list-item-margin-block-end);margin-block-start:var(--utrecht-unordered-list-item-margin-block-start);padding-inline-start:var(--utrecht-unordered-list-item-padding-inline-start,1ch)}.utrecht-unordered-list--html-content ul>li::marker,.utrecht-unordered-list--html-content>li::marker,.utrecht-unordered-list__item::marker,.utrecht-unordered-list__marker{color:var(--utrecht-unordered-list-marker-color);content:"ā—"}');var Bi=["children","className"];function Ii(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Ui(t){for(var e=1;et[r]===e[r]))}var na,oa=(na=function(t,e){return na=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},na(t,e)},function(t,e){function r(){this.constructor=t}na(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),ia=Object.prototype.hasOwnProperty;function aa(t,e){return ia.call(t,e)}function ca(t){if(Array.isArray(t)){for(var e=new Array(t.length),r=0;r=48&&e<=57))return!1;r++}return!0}function sa(t){return-1===t.indexOf("/")&&-1===t.indexOf("~")?t:t.replace(/~/g,"~0").replace(/\//g,"~1")}function da(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function ha(t){if(void 0===t)return!0;if(t)if(Array.isArray(t)){for(var e=0,r=t.length;e0&&"constructor"==c[l-1]))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&void 0===d&&(void 0===u[h]?d=c.slice(0,l).join("/"):l==s-1&&(d=e.path),void 0!==d&&f(e,0,t,d)),l++,Array.isArray(u)){if("-"===h)h=u.length;else{if(r&&!la(h))throw new ba("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",i,e,t);la(h)&&(h=~~h)}if(l>=s){if(r&&"add"===e.op&&h>u.length)throw new ba("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",i,e,t);if(!1===(a=va[e.op].call(e,u,h,t)).test)throw new ba("Test operation failed","TEST_OPERATION_FAILED",i,e,t);return a}}else if(l>=s){if(!1===(a=ma[e.op].call(e,u,h,t)).test)throw new ba("Test operation failed","TEST_OPERATION_FAILED",i,e,t);return a}if(u=u[h],r&&l0)throw new ba('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",e,t,r);if(("move"===t.op||"copy"===t.op)&&"string"!=typeof t.from)throw new ba("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",e,t,r);if(("add"===t.op||"replace"===t.op||"test"===t.op)&&void 0===t.value)throw new ba("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",e,t,r);if(("add"===t.op||"replace"===t.op||"test"===t.op)&&ha(t.value))throw new ba("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",e,t,r);if(r)if("add"==t.op){var o=t.path.split("/").length,i=n.split("/").length;if(o!==i+1&&o!==i)throw new ba("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",e,t,r)}else if("replace"===t.op||"remove"===t.op||"_get"===t.op){if(t.path!==n)throw new ba("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",e,t,r)}else if("move"===t.op||"copy"===t.op){var a=_a([{op:"_get",path:t.from,value:void 0}],r);if(a&&"OPERATION_PATH_UNRESOLVABLE"===a.name)throw new ba("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",e,t,r)}}function _a(t,e,r){try{if(!Array.isArray(t))throw new ba("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(e)ka(ua(e),ua(t),r||!0);else{r=r||wa;for(var n=0;n0&&(t.patches=[],t.callback&&t.callback(n)),n}function Aa(t,e,r,n,o){if(e!==t){"function"==typeof e.toJSON&&(e=e.toJSON());for(var i=ca(e),a=ca(t),c=!1,u=a.length-1;u>=0;u--){var l=t[d=a[u]];if(!aa(e,d)||void 0===e[d]&&void 0!==l&&!1===Array.isArray(e))Array.isArray(t)===Array.isArray(e)?(o&&r.push({op:"test",path:n+"/"+sa(d),value:ua(l)}),r.push({op:"remove",path:n+"/"+sa(d)}),c=!0):(o&&r.push({op:"test",path:n,value:t}),r.push({op:"replace",path:n,value:e}));else{var s=e[d];"object"==typeof l&&null!=l&&"object"==typeof s&&null!=s&&Array.isArray(l)===Array.isArray(s)?Aa(l,s,r,n+"/"+sa(d),o):l!==s&&(o&&r.push({op:"test",path:n+"/"+sa(d),value:ua(l)}),r.push({op:"replace",path:n+"/"+sa(d),value:ua(s)}))}}if(c||i.length!=a.length)for(u=0;u0)return[g,r+l.join(",\n"+p),c].join("\n"+i)}return m}(t,"",0)},Pa=Gi(za);function Fa(t,e,r){return t.fields=e||[],t.fname=r,t}function La(t){return null==t?null:t.fname}function Ta(t){return null==t?null:t.fields}function Ra(t){return 1===t.length?Ba(t[0]):Ia(t)}const Ba=t=>function(e){return e[t]},Ia=t=>{const e=t.length;return function(r){for(let n=0;nn&&l(),c=n=o+1):"]"===i&&(c||Ua("Access path missing open bracket: "+t),c>0&&l(),c=0,n=o+1):o>n?l():n=o+1}return c&&Ua("Access path missing closing bracket: "+t),a&&Ua("Access path missing closing quote: "+t),o>n&&(o++,l()),e}function Ha(t,e,r){const n=qa(t);return t=1===n.length?n[0]:t,Fa((r&&r.get||Ra)(n),[t],e||t)}const Wa=Ha("id"),Va=Fa((t=>t),[],"identity"),Za=Fa((()=>0),[],"zero"),Ga=Fa((()=>1),[],"one"),$a=Fa((()=>!0),[],"true"),Ya=Fa((()=>!1),[],"false");function Xa(t,e,r){const n=[e].concat([].slice.call(r));console[t].apply(console,n)}const Ja=0,Qa=1,Ka=2,tc=3,ec=4;function rc(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Xa,n=t||Ja;return{level(t){return arguments.length?(n=+t,this):n},error(){return n>=Qa&&r(e||"error","ERROR",arguments),this},warn(){return n>=Ka&&r(e||"warn","WARN",arguments),this},info(){return n>=tc&&r(e||"log","INFO",arguments),this},debug(){return n>=ec&&r(e||"log","DEBUG",arguments),this}}}var nc=Array.isArray;function oc(t){return t===Object(t)}const ic=t=>"__proto__"!==t;function ac(){for(var t=arguments.length,e=new Array(t),r=0;r{for(const r in e)if("signals"===r)t.signals=uc(t.signals,e.signals);else{const n="legend"===r?{layout:1}:"style"===r||null;cc(t,r,e[r],n)}return t}),{})}function cc(t,e,r,n){if(!ic(e))return;let o,i;if(oc(r)&&!nc(r))for(o in i=oc(t[e])?t[e]:t[e]={},r)n&&(!0===n||n[o])?cc(i,o,r[o]):ic(o)&&(i[o]=r[o]);else t[e]=r}function uc(t,e){if(null==t)return e;const r={},n=[];function o(t){r[t.name]||(r[t.name]=1,n.push(t))}return e.forEach(o),t.forEach(o),n}function lc(t){return t[t.length-1]}function sc(t){return null==t||""===t?null:+t}const dc=t=>e=>t*Math.exp(e),hc=t=>e=>Math.log(t*e),fc=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),pc=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,bc=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function gc(t,e,r,n){const o=r(t[0]),i=r(lc(t)),a=(i-o)*e;return[n(o-a),n(i-a)]}function mc(t,e){return gc(t,e,sc,Va)}function vc(t,e){var r=Math.sign(t[0]);return gc(t,e,hc(r),dc(r))}function yc(t,e,r){return gc(t,e,bc(r),bc(1/r))}function xc(t,e,r){return gc(t,e,fc(r),pc(r))}function kc(t,e,r,n,o){const i=n(t[0]),a=n(lc(t)),c=null!=e?n(e):(i+a)/2;return[o(c+(i-c)*r),o(c+(a-c)*r)]}function wc(t,e,r){return kc(t,e,r,sc,Va)}function _c(t,e,r){const n=Math.sign(t[0]);return kc(t,e,r,hc(n),dc(n))}function Cc(t,e,r,n){return kc(t,e,r,bc(n),bc(1/n))}function Oc(t,e,r,n){return kc(t,e,r,fc(n),pc(n))}function Ec(t){return 1+~~(new Date(t).getMonth()/3)}function Dc(t){return 1+~~(new Date(t).getUTCMonth()/3)}function jc(t){return null!=t?nc(t)?t:[t]:[]}function Sc(t,e,r){let n,o=t[0],i=t[1];return i=r-e?[e,r]:[o=Math.min(Math.max(o,e),r-n),o+n]}function Ac(t){return"function"==typeof t}const Mc="descending";function Nc(t,e,r){r=r||{},e=jc(e)||[];const n=[],o=[],i={},a=r.comparator||Pc;return jc(t).forEach(((t,a)=>{null!=t&&(n.push(e[a]===Mc?-1:1),o.push(t=Ac(t)?t:Ha(t,null,r)),(Ta(t)||[]).forEach((t=>i[t]=1)))})),0===o.length?null:Fa(a(o,n),Object.keys(i))}const zc=(t,e)=>(te||null==e)&&null!=t?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e==e?-1:e!=e&&t==t?1:0),Pc=(t,e)=>1===t.length?Fc(t[0],e[0]):Lc(t,e,t.length),Fc=(t,e)=>function(r,n){return zc(t(r),t(n))*e},Lc=(t,e,r)=>(e.push(0),function(n,o){let i,a=0,c=-1;for(;0===a&&++ct}function Rc(t,e){let r;return n=>{r&&clearTimeout(r),r=setTimeout((()=>(e(n),r=null)),t)}}function Bc(t){for(let e,r,n=1,o=arguments.length;ni&&(i=n))}else{for(n=e(t[a]);ai&&(i=n))}return[o,i]}function Uc(t,e){const r=t.length;let n,o,i,a,c,u=-1;if(null==e){for(;++u=o){n=i=o;break}if(u===r)return[-1,-1];for(a=c=u;++uo&&(n=o,a=u),i=o){n=i=o;break}if(u===r)return[-1,-1];for(a=c=u;++uo&&(n=o,a=u),i{o.set(e,t[e])})),o}function Zc(t,e,r,n,o,i){if(!r&&0!==r)return i;const a=+r;let c,u=t[0],l=lc(t);la&&(o=i,i=a,a=o),n=void 0===n||n,((r=void 0===r||r)?i<=t:it.replace(/\\(.)/g,"$1"))):jc(t));const n=t&&t.length,o=r&&r.get||Ra,i=t=>o(e?[t]:qa(t));let a;if(n)if(1===n){const e=i(t[0]);a=function(t){return""+e(t)}}else{const e=t.map(i);a=function(t){let r=""+e[0](t),o=0;for(;++o{e={},r={},n=0},i=(o,i)=>(++n>t&&(r=e,e={},n=1),e[o]=i);return o(),{clear:o,has:t=>Hc(e,t)||Hc(r,t),get:t=>Hc(e,t)?e[t]:Hc(r,t)?i(t,r[t]):void 0,set:(t,r)=>Hc(e,t)?e[t]=r:i(t,r)}}function ou(t,e,r,n){const o=e.length,i=r.length;if(!i)return e;if(!o)return r;const a=n||new e.constructor(o+i);let c=0,u=0,l=0;for(;c0?r[u++]:e[c++];for(;c=0;)r+=t;return r}function au(t,e,r,n){const o=r||" ",i=t+"",a=e-i.length;return a<=0?i:"left"===n?iu(o,a)+i:"center"===n?iu(o,~~(a/2))+i+iu(o,Math.ceil(a/2)):i+iu(o,a)}function cu(t){return t&&lc(t)-t[0]||0}function uu(t){return nc(t)?"["+t.map(uu)+"]":oc(t)||tu(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function lu(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&!!t}const su=t=>Qc(t)||Xc(t)?t:Date.parse(t);function du(t,e){return e=e||su,null==t||""===t?null:e(t)}function hu(t){return null==t||""===t?null:t+""}function fu(t){const e={},r=t.length;for(let n=0;n9999?"+"+_u(e,6):_u(e,4))+"-"+_u(t.getUTCMonth()+1,2)+"-"+_u(t.getUTCDate(),2)+(i?"T"+_u(r,2)+":"+_u(n,2)+":"+_u(o,2)+"."+_u(i,3)+"Z":o?"T"+_u(r,2)+":"+_u(n,2)+":"+_u(o,2)+"Z":n||r?"T"+_u(r,2)+":"+_u(n,2)+"Z":"")}function Ou(t){var e=new RegExp('["'+t+"\n\r]"),r=t.charCodeAt(0);function n(t,e){var n,o=[],i=t.length,a=0,c=0,u=i<=0,l=!1;function s(){if(u)return mu;if(l)return l=!1,gu;var e,n,o=a;if(t.charCodeAt(o)===vu){for(;a++=i?u=!0:(n=t.charCodeAt(a++))===yu?l=!0:n===xu&&(l=!0,t.charCodeAt(a)===yu&&++a),t.slice(o+1,e-1).replace(/""/g,'"')}for(;a1)n=function(t,e,r){var n,o=[],i=[];function a(t){var e=t<0?~t:t;(i[e]||(i[e]=[])).push({i:t,g:n})}function c(t){t.forEach(a)}function u(t){t.forEach(c)}function l(t){t.forEach(u)}function s(t){switch(n=t,t.type){case"GeometryCollection":t.geometries.forEach(s);break;case"LineString":c(t.arcs);break;case"MultiLineString":case"Polygon":u(t.arcs);break;case"MultiPolygon":l(t.arcs)}}return s(e),i.forEach(null==r?function(t){o.push(t[0].i)}:function(t){r(t[0].g,t[t.length-1].g)&&o.push(t[0].i)}),o}(0,e,r);else for(o=0,n=new Array(i=t.arcs.length);oe?1:t>=e?0:NaN}function Pu(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function Fu(t){let e,r,n;function o(t,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(o>>1;r(t[e],n)<0?o=e+1:i=e}while(ozu(t(e),r),n=(e,r)=>t(e)-r):(e=t===zu||t===Pu?t:Lu,r=t,n=t),{left:o,center:function(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const i=o(t,e,r,(arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length)-1);return i>r&&n(t[i-1],e)>-n(t[i],e)?i-1:i},right:function(t,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(o>>1;r(t[e],n)<=0?o=e+1:i=e}while(o0){for(i=t[--o];o>0&&(e=i,r=t[--o],i=e+r,n=r-(i-e),!n););o>0&&(n<0&&t[o-1]<0||n>0&&t[o-1]>0)&&(r=2*n,e=i+r,r==e-i&&(i=e))}return i}}class Hu extends Map{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$u;if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[r,n]of t)this.set(r,n)}get(t){return super.get(Vu(this,t))}has(t){return super.has(Vu(this,t))}set(t,e){return super.set(Zu(this,t),e)}delete(t){return super.delete(Gu(this,t))}}class Wu extends Set{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$u;if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const r of t)this.add(r)}has(t){return super.has(Vu(this,t))}add(t){return super.add(Zu(this,t))}delete(t){return super.delete(Gu(this,t))}}function Vu(t,e){let{_intern:r,_key:n}=t;const o=n(e);return r.has(o)?r.get(o):e}function Zu(t,e){let{_intern:r,_key:n}=t;const o=n(e);return r.has(o)?r.get(o):(r.set(o,e),e)}function Gu(t,e){let{_intern:r,_key:n}=t;const o=n(e);return r.has(o)&&(e=r.get(o),r.delete(o)),e}function $u(t){return null!==t&&"object"==typeof t?t.valueOf():t}function Yu(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(te?1:0)}const Xu=Math.sqrt(50),Ju=Math.sqrt(10),Qu=Math.sqrt(2);function Ku(t,e,r){const n=(e-t)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),a=i>=Xu?10:i>=Ju?5:i>=Qu?2:1;let c,u,l;return o<0?(l=Math.pow(10,-o)/a,c=Math.round(t*l),u=Math.round(e*l),c/le&&--u,l=-l):(l=Math.pow(10,o)*a,c=Math.round(t/l),u=Math.round(e/l),c*le&&--u),u0))return[];if((t=+t)===(e=+e))return[t];const n=e=o))return[];const c=i-o+1,u=new Array(c);if(n)if(a<0)for(let l=0;l=n)&&(r=n);else{let n=-1;for(let o of t)null!=(o=e(o,++n,t))&&(r=o)&&(r=o)}return r}function ol(t,e){let r;if(void 0===e)for(const n of t)null!=n&&(r>n||void 0===r&&n>=n)&&(r=n);else{let n=-1;for(let o of t)null!=(o=e(o,++n,t))&&(r>o||void 0===r&&o>=o)&&(r=o)}return r}function il(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1/0,o=arguments.length>4?arguments[4]:void 0;if(e=Math.floor(e),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(t.length-1,n)),!(r<=e&&e<=n))return t;for(o=void 0===o?Yu:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:zu;if(t===zu)return Yu;if("function"!=typeof t)throw new TypeError("compare is not a function");return(e,r)=>{const n=t(e,r);return n||0===n?n:(0===t(r,r))-(0===t(e,e))}}(o);n>r;){if(n-r>600){const i=n-r+1,a=e-r+1,c=Math.log(i),u=.5*Math.exp(2*c/3),l=.5*Math.sqrt(c*u*(i-u)/i)*(a-i/2<0?-1:1);il(t,e,Math.max(r,Math.floor(e-a*u/i+l)),Math.min(n,Math.floor(e+(i-a)*u/i+l)),o)}const i=t[e];let a=r,c=n;for(al(t,r,e),o(t[n],i)>0&&al(t,r,n);a0;)--c}0===o(t[r],i)?al(t,r,c):(++c,al(t,c,n)),c<=e&&(r=c+1),e<=c&&(n=c-1)}return t}function al(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function cl(t,e,r){if(t=Float64Array.from(function*(t,e){if(void 0===e)for(let r of t)null!=r&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of t)null!=(n=e(n,++r,t))&&(n=+n)>=n&&(yield n)}}(t,r)),(n=t.length)&&!isNaN(e=+e)){if(e<=0||n<2)return ol(t);if(e>=1)return nl(t);var n,o=(n-1)*e,i=Math.floor(o),a=nl(il(t,i).subarray(0,i+1));return a+(ol(t.subarray(i+1))-a)*(o-i)}}function ul(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Tu;if((n=t.length)&&!isNaN(e=+e)){if(e<=0||n<2)return+r(t[0],0,t);if(e>=1)return+r(t[n-1],n-1,t);var n,o=(n-1)*e,i=Math.floor(o),a=+r(t[i],i,t);return a+(+r(t[i+1],i+1,t)-a)*(o-i)}}function ll(t,e){return cl(t,.5,e)}function sl(t){return Array.from(function*(t){for(const e of t)yield*e}(t))}function dl(t,e,r){t=+t,e=+e,r=(o=arguments.length)<2?(e=t,t=0,1):o<3?1:+r;for(var n=-1,o=0|Math.max(0,Math.ceil((e-t)/r)),i=new Array(o);++n1?n[0]+n.slice(2):n,+t.slice(r+1)]}function pl(t){return(t=fl(Math.abs(t)))?t[1]:NaN}var bl,gl=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ml(t){if(!(e=gl.exec(t)))throw new Error("invalid format: "+t);var e;return new vl({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function vl(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function yl(t,e){var r=fl(t,e);if(!r)return t+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}ml.prototype=vl.prototype,vl.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var xl={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>yl(100*t,e),r:yl,s:function(t,e){var r=fl(t,e);if(!r)return t+"";var n=r[0],o=r[1],i=o-(bl=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,a=n.length;return i===a?n:i>a?n+new Array(i-a+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+fl(t,Math.max(0,e+i-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function kl(t){return t}var wl,_l,Cl,Ol=Array.prototype.map,El=["y","z","a","f","p","n","Āµ","m","","k","M","G","T","P","E","Z","Y"];function Dl(t){var e,r,n=void 0===t.grouping||void 0===t.thousands?kl:(e=Ol.call(t.grouping,Number),r=t.thousands+"",function(t,n){for(var o=t.length,i=[],a=0,c=e[0],u=0;o>0&&c>0&&(u+c+1>n&&(c=Math.max(1,n-u)),i.push(t.substring(o-=c,o+c)),!((u+=c+1)>n));)c=e[a=(a+1)%e.length];return i.reverse().join(r)}),o=void 0===t.currency?"":t.currency[0]+"",i=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",c=void 0===t.numerals?kl:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(Ol.call(t.numerals,String)),u=void 0===t.percent?"%":t.percent+"",l=void 0===t.minus?"āˆ’":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function d(t){var e=(t=ml(t)).fill,r=t.align,d=t.sign,h=t.symbol,f=t.zero,p=t.width,b=t.comma,g=t.precision,m=t.trim,v=t.type;"n"===v?(b=!0,v="g"):xl[v]||(void 0===g&&(g=12),m=!0,v="g"),(f||"0"===e&&"="===r)&&(f=!0,e="0",r="=");var y="$"===h?o:"#"===h&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",x="$"===h?i:/[%p]/.test(v)?u:"",k=xl[v],w=/[defgprs%]/.test(v);function _(t){var o,i,u,h=y,_=x;if("c"===v)_=k(t)+_,t="";else{var C=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:k(Math.abs(t),g),m&&(t=function(t){t:for(var e,r=t.length,n=1,o=-1;n0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t}(t)),C&&0==+t&&"+"!==d&&(C=!1),h=(C?"("===d?d:l:"-"===d||"("===d?"":d)+h,_=("s"===v?El[8+bl/3]:"")+_+(C&&"("===d?")":""),w)for(o=-1,i=t.length;++o(u=t.charCodeAt(o))||u>57){_=(46===u?a+t.slice(o+1):t.slice(o))+_,t=t.slice(0,o);break}}b&&!f&&(t=n(t,1/0));var O=h.length+t.length+_.length,E=O>1)+h+t+_+E.slice(O);break;default:t=E+h+t+_}return c(t)}return g=void 0===g?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),_.toString=function(){return t+""},_}return{format:d,formatPrefix:function(t,e){var r=d(((t=ml(t)).type="f",t)),n=3*Math.max(-8,Math.min(8,Math.floor(pl(e)/3))),o=Math.pow(10,-n),i=El[8+n/3];return function(t){return r(o*t)+i}}}}function jl(t){return Math.max(0,-pl(Math.abs(t)))}function Sl(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(pl(e)/3)))-pl(Math.abs(t)))}function Al(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,pl(e)-pl(t))+1}!function(t){wl=Dl(t),_l=wl.format,Cl=wl.formatPrefix}({thousands:",",grouping:[3],currency:["$",""]});const Ml=new Date,Nl=new Date;function zl(t,e,r,n){function o(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return o.floor=e=>(t(e=new Date(+e)),e),o.ceil=r=>(t(r=new Date(r-1)),e(r,1),t(r),r),o.round=t=>{const e=o(t),r=o.ceil(t);return t-e(e(t=new Date(+t),null==r?1:Math.floor(r)),t),o.range=(r,n,i)=>{const a=[];if(r=o.ceil(r),i=null==i?1:Math.floor(i),!(r0))return a;let c;do{a.push(c=new Date(+r)),e(r,i),t(r)}while(czl((e=>{if(e>=e)for(;t(e),!r(e);)e.setTime(e-1)}),((t,n)=>{if(t>=t)if(n<0)for(;++n<=0;)for(;e(t,-1),!r(t););else for(;--n>=0;)for(;e(t,1),!r(t););})),r&&(o.count=(e,n)=>(Ml.setTime(+e),Nl.setTime(+n),t(Ml),t(Nl),Math.floor(r(Ml,Nl))),o.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?o.filter(n?e=>n(e)%t==0:e=>o.count(0,e)%t==0):o:null)),o}const Pl=zl((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));Pl.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?zl((e=>{e.setTime(Math.floor(e/t)*t)}),((e,r)=>{e.setTime(+e+r*t)}),((e,r)=>(r-e)/t)):Pl:null),Pl.range;const Fl=1e3,Ll=6e4,Tl=36e5,Rl=864e5,Bl=6048e5,Il=2592e6,Ul=31536e6,ql=zl((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*Fl)}),((t,e)=>(e-t)/Fl),(t=>t.getUTCSeconds()));ql.range;const Hl=zl((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Fl)}),((t,e)=>{t.setTime(+t+e*Ll)}),((t,e)=>(e-t)/Ll),(t=>t.getMinutes()));Hl.range;const Wl=zl((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*Ll)}),((t,e)=>(e-t)/Ll),(t=>t.getUTCMinutes()));Wl.range;const Vl=zl((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Fl-t.getMinutes()*Ll)}),((t,e)=>{t.setTime(+t+e*Tl)}),((t,e)=>(e-t)/Tl),(t=>t.getHours()));Vl.range;const Zl=zl((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*Tl)}),((t,e)=>(e-t)/Tl),(t=>t.getUTCHours()));Zl.range;const Gl=zl((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ll)/Rl),(t=>t.getDate()-1));Gl.range;const $l=zl((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/Rl),(t=>t.getUTCDate()-1));$l.range;const Yl=zl((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/Rl),(t=>Math.floor(t/Rl)));function Xl(t){return zl((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ll)/Bl))}Yl.range;const Jl=Xl(0),Ql=Xl(1),Kl=Xl(2),ts=Xl(3),es=Xl(4),rs=Xl(5),ns=Xl(6);function os(t){return zl((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/Bl))}Jl.range,Ql.range,Kl.range,ts.range,es.range,rs.range,ns.range;const is=os(0),as=os(1),cs=os(2),us=os(3),ls=os(4),ss=os(5),ds=os(6);is.range,as.range,cs.range,us.range,ls.range,ss.range,ds.range;const hs=zl((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()));hs.range;const fs=zl((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()));fs.range;const ps=zl((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear()));ps.every=t=>isFinite(t=Math.floor(t))&&t>0?zl((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,r)=>{e.setFullYear(e.getFullYear()+r*t)})):null,ps.range;const bs=zl((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));function gs(t,e,r,n,o,i){const a=[[ql,1,Fl],[ql,5,5e3],[ql,15,15e3],[ql,30,3e4],[i,1,Ll],[i,5,3e5],[i,15,9e5],[i,30,18e5],[o,1,Tl],[o,3,108e5],[o,6,216e5],[o,12,432e5],[n,1,Rl],[n,2,1728e5],[r,1,Bl],[e,1,Il],[e,3,7776e6],[t,1,Ul]];function c(e,r,n){const o=Math.abs(r-e)/n,i=Fu((t=>{let[,,e]=t;return e})).right(a,o);if(i===a.length)return t.every(rl(e/Ul,r/Ul,n));if(0===i)return Pl.every(Math.max(rl(e,r,n),1));const[c,u]=a[o/a[i-1][2]isFinite(t=Math.floor(t))&&t>0?zl((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null,bs.range;const[ms,vs]=gs(bs,fs,is,Yl,Zl,Wl),[ys,xs]=gs(ps,hs,Jl,Gl,Vl,Hl),ks="year",ws="quarter",_s="month",Cs="week",Os="date",Es="day",Ds="dayofyear",js="hours",Ss="minutes",As="seconds",Ms="milliseconds",Ns=[ks,ws,_s,Cs,Os,Es,Ds,js,Ss,As,Ms],zs=Ns.reduce(((t,e,r)=>(t[e]=1+r,t)),{});function Ps(t){const e=jc(t).slice(),r={};e.length||Ua("Missing time unit."),e.forEach((t=>{Hc(zs,t)?r[t]=1:Ua("Invalid time unit: ".concat(t,"."))}));return(r[Cs]||r[Es]?1:0)+(r[ws]||r[_s]||r[Os]?1:0)+(r[Ds]?1:0)>1&&Ua("Incompatible time units: ".concat(t)),e.sort(((t,e)=>zs[t]-zs[e])),e}const Fs={[ks]:"%Y ",[ws]:"Q%q ",[_s]:"%b ",[Os]:"%d ",[Cs]:"W%U ",[Es]:"%a ",[Ds]:"%j ",[js]:"%H:00",[Ss]:"00:%M",[As]:":%S",[Ms]:".%L",["".concat(ks,"-").concat(_s)]:"%Y-%m ",["".concat(ks,"-").concat(_s,"-").concat(Os)]:"%Y-%m-%d ",["".concat(js,"-").concat(Ss)]:"%H:%M"};function Ls(t,e){const r=Bc({},Fs,e),n=Ps(t),o=n.length;let i,a,c="",u=0;for(u=0;uu;--i)if(a=n.slice(u,i).join("-"),null!=r[a]){c+=r[a],u=i;break}return c.trim()}const Ts=new Date;function Rs(t){return Ts.setFullYear(t),Ts.setMonth(0),Ts.setDate(1),Ts.setHours(0,0,0,0),Ts}function Bs(t){return Us(new Date(t))}function Is(t){return qs(new Date(t))}function Us(t){return Gl.count(Rs(t.getFullYear())-1,t)}function qs(t){return Jl.count(Rs(t.getFullYear())-1,t)}function Hs(t){return Rs(t).getDay()}function Ws(t,e,r,n,o,i,a){if(0<=t&&t<100){const c=new Date(-1,e,r,n,o,i,a);return c.setFullYear(t),c}return new Date(t,e,r,n,o,i,a)}function Vs(t){return Gs(new Date(t))}function Zs(t){return $s(new Date(t))}function Gs(t){const e=Date.UTC(t.getUTCFullYear(),0,1);return $l.count(e-1,t)}function $s(t){const e=Date.UTC(t.getUTCFullYear(),0,1);return is.count(e-1,t)}function Ys(t){return Ts.setTime(Date.UTC(t,0,1)),Ts.getUTCDay()}function Xs(t,e,r,n,o,i,a){if(0<=t&&t<100){const t=new Date(Date.UTC(-1,e,r,n,o,i,a));return t.setUTCFullYear(r.y),t}return new Date(Date.UTC(t,e,r,n,o,i,a))}function Js(t,e,r,n,o){const i=e||1,a=lc(t),c=(t,e,o)=>function(t,e,r,n){const o=r<=1?t:n?(e,o)=>n+r*Math.floor((t(e,o)-n)/r):(e,n)=>r*Math.floor(t(e,n)/r);return e?(t,r)=>e(o(t,r),r):o}(r[o=o||t],n[o],t===a&&i,e),u=new Date,l=fu(t),s=l[ks]?c(ks):Tc(2012),d=l[_s]?c(_s):l[ws]?c(ws):Za,h=l[Cs]&&l[Es]?c(Es,1,Cs+Es):l[Cs]?c(Cs,1):l[Es]?c(Es,1):l[Os]?c(Os,1):l[Ds]?c(Ds,1):Ga,f=l[js]?c(js):Za,p=l[Ss]?c(Ss):Za,b=l[As]?c(As):Za,g=l[Ms]?c(Ms):Za;return function(t){u.setTime(+t);const e=s(u);return o(e,d(u),h(u,e),f(u),p(u),b(u),g(u))}}function Qs(t,e,r){return e+7*t-(r+6)%7}const Ks={[ks]:t=>t.getFullYear(),[ws]:t=>Math.floor(t.getMonth()/3),[_s]:t=>t.getMonth(),[Os]:t=>t.getDate(),[js]:t=>t.getHours(),[Ss]:t=>t.getMinutes(),[As]:t=>t.getSeconds(),[Ms]:t=>t.getMilliseconds(),[Ds]:t=>Us(t),[Cs]:t=>qs(t),[Cs+Es]:(t,e)=>Qs(qs(t),t.getDay(),Hs(e)),[Es]:(t,e)=>Qs(1,t.getDay(),Hs(e))},td={[ws]:t=>3*t,[Cs]:(t,e)=>Qs(t,0,Hs(e))};function ed(t,e){return Js(t,e||1,Ks,td,Ws)}const rd={[ks]:t=>t.getUTCFullYear(),[ws]:t=>Math.floor(t.getUTCMonth()/3),[_s]:t=>t.getUTCMonth(),[Os]:t=>t.getUTCDate(),[js]:t=>t.getUTCHours(),[Ss]:t=>t.getUTCMinutes(),[As]:t=>t.getUTCSeconds(),[Ms]:t=>t.getUTCMilliseconds(),[Ds]:t=>Gs(t),[Cs]:t=>$s(t),[Es]:(t,e)=>Qs(1,t.getUTCDay(),Ys(e)),[Cs+Es]:(t,e)=>Qs($s(t),t.getUTCDay(),Ys(e))},nd={[ws]:t=>3*t,[Cs]:(t,e)=>Qs(t,0,Ys(e))};function od(t,e){return Js(t,e||1,rd,nd,Xs)}const id={[ks]:ps,[ws]:hs.every(3),[_s]:hs,[Cs]:Jl,[Os]:Gl,[Es]:Gl,[Ds]:Gl,[js]:Vl,[Ss]:Hl,[As]:ql,[Ms]:Pl},ad={[ks]:bs,[ws]:fs.every(3),[_s]:fs,[Cs]:is,[Os]:$l,[Es]:$l,[Ds]:$l,[js]:Zl,[Ss]:Wl,[As]:ql,[Ms]:Pl};function cd(t){return id[t]}function ud(t){return ad[t]}function ld(t,e,r){return t?t.offset(e,r):void 0}function sd(t,e,r){return ld(cd(t),e,r)}function dd(t,e,r){return ld(ud(t),e,r)}function hd(t,e,r,n){return t?t.range(e,r,n):void 0}function fd(t,e,r,n){return hd(cd(t),e,r,n)}function pd(t,e,r,n){return hd(ud(t),e,r,n)}const bd=1e3,gd=6e4,md=36e5,vd=864e5,yd=2592e6,xd=31536e6,kd=[ks,_s,Os,js,Ss,As,Ms],wd=kd.slice(0,-1),_d=wd.slice(0,-1),Cd=_d.slice(0,-1),Od=Cd.slice(0,-1),Ed=[ks,_s],Dd=[ks],jd=[[wd,1,bd],[wd,5,5e3],[wd,15,15e3],[wd,30,3e4],[_d,1,gd],[_d,5,3e5],[_d,15,9e5],[_d,30,18e5],[Cd,1,md],[Cd,3,108e5],[Cd,6,216e5],[Cd,12,432e5],[Od,1,vd],[[ks,Cs],1,6048e5],[Ed,1,yd],[Ed,3,7776e6],[Dd,1,xd]];function Sd(t){const e=t.extent,r=t.maxbins||40,n=Math.abs(cu(e))/r;let o,i,a=Fu((t=>t[2])).right(jd,n);return a===jd.length?(o=Dd,i=rl(e[0]/xd,e[1]/xd,r)):a?(a=jd[n/jd[a-1][2]=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:tf,s:ef,S:kh,u:wh,U:_h,V:Oh,w:Eh,W:Dh,x:null,X:null,y:jh,Y:Ah,Z:Nh,"%":Kh},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return i[t.getUTCDay()]},b:function(t){return u[t.getUTCMonth()]},B:function(t){return c[t.getUTCMonth()]},c:null,d:zh,e:zh,f:Rh,g:Yh,G:Jh,H:Ph,I:Fh,j:Lh,L:Th,m:Bh,M:Ih,p:function(t){return o[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:tf,s:ef,S:Uh,u:qh,U:Hh,V:Vh,w:Zh,W:Gh,x:null,X:null,y:$h,Y:Xh,Z:Qh,"%":Kh},k={a:function(t,e,r){var n=f.exec(e.slice(r));return n?(t.w=p.get(n[0].toLowerCase()),r+n[0].length):-1},A:function(t,e,r){var n=d.exec(e.slice(r));return n?(t.w=h.get(n[0].toLowerCase()),r+n[0].length):-1},b:function(t,e,r){var n=m.exec(e.slice(r));return n?(t.m=v.get(n[0].toLowerCase()),r+n[0].length):-1},B:function(t,e,r){var n=b.exec(e.slice(r));return n?(t.m=g.get(n[0].toLowerCase()),r+n[0].length):-1},c:function(t,r,n){return C(t,e,r,n)},d:nh,e:nh,f:lh,g:Kd,G:Qd,H:ih,I:ih,j:oh,L:uh,m:rh,M:ah,p:function(t,e,r){var n=l.exec(e.slice(r));return n?(t.p=s.get(n[0].toLowerCase()),r+n[0].length):-1},q:eh,Q:dh,s:hh,S:ch,u:$d,U:Yd,V:Xd,w:Gd,W:Jd,x:function(t,e,n){return C(t,r,e,n)},X:function(t,e,r){return C(t,n,e,r)},y:Kd,Y:Qd,Z:th,"%":sh};function w(t,e){return function(r){var n,o,i,a=[],c=-1,u=0,l=t.length;for(r instanceof Date||(r=new Date(+r));++c53)return null;"w"in i||(i.w=1),"Z"in i?(o=(n=Md(Nd(i.y,0,1))).getUTCDay(),n=o>4||0===o?as.ceil(n):as(n),n=$l.offset(n,7*(i.V-1)),i.y=n.getUTCFullYear(),i.m=n.getUTCMonth(),i.d=n.getUTCDate()+(i.w+6)%7):(o=(n=Ad(Nd(i.y,0,1))).getDay(),n=o>4||0===o?Ql.ceil(n):Ql(n),n=Gl.offset(n,7*(i.V-1)),i.y=n.getFullYear(),i.m=n.getMonth(),i.d=n.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),o="Z"in i?Md(Nd(i.y,0,1)).getUTCDay():Ad(Nd(i.y,0,1)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,Md(i)):Ad(i)}}function C(t,e,r,n){for(var o,i,a=0,c=e.length,u=r.length;a=u)return-1;if(37===(o=e.charCodeAt(a++))){if(o=e.charAt(a++),!(i=k[o in Bd?e.charAt(a++):o])||(n=i(t,r,n))<0)return-1}else if(o!=r.charCodeAt(n++))return-1}return n}return y.x=w(r,y),y.X=w(n,y),y.c=w(e,y),x.x=w(r,x),x.X=w(n,x),x.c=w(e,x),{format:function(t){var e=w(t+="",y);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}var Pd,Fd,Ld,Td,Rd,Bd={"-":"",_:" ",0:"0"},Id=/^\s*\d+/,Ud=/^%/,qd=/[\\^$*+?|[\]().{}]/g;function Hd(t,e,r){var n=t<0?"-":"",o=(n?-t:t)+"",i=o.length;return n+(i[t.toLowerCase(),e])))}function Gd(t,e,r){var n=Id.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function $d(t,e,r){var n=Id.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function Yd(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function Xd(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function Jd(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function Qd(t,e,r){var n=Id.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function Kd(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function th(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function eh(t,e,r){var n=Id.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function rh(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function nh(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function oh(t,e,r){var n=Id.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function ih(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function ah(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function ch(t,e,r){var n=Id.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function uh(t,e,r){var n=Id.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function lh(t,e,r){var n=Id.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function sh(t,e,r){var n=Ud.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function dh(t,e,r){var n=Id.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function hh(t,e,r){var n=Id.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function fh(t,e){return Hd(t.getDate(),e,2)}function ph(t,e){return Hd(t.getHours(),e,2)}function bh(t,e){return Hd(t.getHours()%12||12,e,2)}function gh(t,e){return Hd(1+Gl.count(ps(t),t),e,3)}function mh(t,e){return Hd(t.getMilliseconds(),e,3)}function vh(t,e){return mh(t,e)+"000"}function yh(t,e){return Hd(t.getMonth()+1,e,2)}function xh(t,e){return Hd(t.getMinutes(),e,2)}function kh(t,e){return Hd(t.getSeconds(),e,2)}function wh(t){var e=t.getDay();return 0===e?7:e}function _h(t,e){return Hd(Jl.count(ps(t)-1,t),e,2)}function Ch(t){var e=t.getDay();return e>=4||0===e?es(t):es.ceil(t)}function Oh(t,e){return t=Ch(t),Hd(es.count(ps(t),t)+(4===ps(t).getDay()),e,2)}function Eh(t){return t.getDay()}function Dh(t,e){return Hd(Ql.count(ps(t)-1,t),e,2)}function jh(t,e){return Hd(t.getFullYear()%100,e,2)}function Sh(t,e){return Hd((t=Ch(t)).getFullYear()%100,e,2)}function Ah(t,e){return Hd(t.getFullYear()%1e4,e,4)}function Mh(t,e){var r=t.getDay();return Hd((t=r>=4||0===r?es(t):es.ceil(t)).getFullYear()%1e4,e,4)}function Nh(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Hd(e/60|0,"0",2)+Hd(e%60,"0",2)}function zh(t,e){return Hd(t.getUTCDate(),e,2)}function Ph(t,e){return Hd(t.getUTCHours(),e,2)}function Fh(t,e){return Hd(t.getUTCHours()%12||12,e,2)}function Lh(t,e){return Hd(1+$l.count(bs(t),t),e,3)}function Th(t,e){return Hd(t.getUTCMilliseconds(),e,3)}function Rh(t,e){return Th(t,e)+"000"}function Bh(t,e){return Hd(t.getUTCMonth()+1,e,2)}function Ih(t,e){return Hd(t.getUTCMinutes(),e,2)}function Uh(t,e){return Hd(t.getUTCSeconds(),e,2)}function qh(t){var e=t.getUTCDay();return 0===e?7:e}function Hh(t,e){return Hd(is.count(bs(t)-1,t),e,2)}function Wh(t){var e=t.getUTCDay();return e>=4||0===e?ls(t):ls.ceil(t)}function Vh(t,e){return t=Wh(t),Hd(ls.count(bs(t),t)+(4===bs(t).getUTCDay()),e,2)}function Zh(t){return t.getUTCDay()}function Gh(t,e){return Hd(as.count(bs(t)-1,t),e,2)}function $h(t,e){return Hd(t.getUTCFullYear()%100,e,2)}function Yh(t,e){return Hd((t=Wh(t)).getUTCFullYear()%100,e,2)}function Xh(t,e){return Hd(t.getUTCFullYear()%1e4,e,4)}function Jh(t,e){var r=t.getUTCDay();return Hd((t=r>=4||0===r?ls(t):ls.ceil(t)).getUTCFullYear()%1e4,e,4)}function Qh(){return"+0000"}function Kh(){return"%"}function tf(t){return+t}function ef(t){return Math.floor(+t/1e3)}function rf(t){const e={};return r=>e[r]||(e[r]=t(r))}function nf(t){const e=rf(t.format),r=t.formatPrefix;return{format:e,formatPrefix:r,formatFloat(t){const r=ml(t||",");if(null==r.precision){switch(r.precision=12,r.type){case"%":r.precision-=2;break;case"e":r.precision-=1}return function(t,e){return r=>{const n=t(r),o=n.indexOf(e);if(o<0)return n;let i=function(t,e){let r,n=t.lastIndexOf("e");if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}(n,o);const a=io;)if("0"!==n[i]){++i;break}return n.slice(0,i)+a}}(e(r),e(".1f")(1)[1])}return e(r)},formatSpan(t,n,o,i){i=ml(null==i?",f":i);const a=rl(t,n,o),c=Math.max(Math.abs(t),Math.abs(n));let u;if(null==i.precision)switch(i.type){case"s":return isNaN(u=Sl(a,c))||(i.precision=u),r(i,c);case"":case"e":case"g":case"p":case"r":isNaN(u=Al(a,c))||(i.precision=u-("e"===i.type));break;case"f":case"%":isNaN(u=jl(a))||(i.precision=u-2*("%"===i.type))}return e(i)}}}let of,af;function cf(){return of=nf({format:_l,formatPrefix:Cl})}function uf(t){return nf(Dl(t))}function lf(t){return arguments.length?of=uf(t):of}function sf(t,e,r){oc(r=r||{})||Ua("Invalid time multi-format specifier: ".concat(r));const n=e(As),o=e(Ss),i=e(js),a=e(Os),c=e(Cs),u=e(_s),l=e(ws),s=e(ks),d=t(r[Ms]||".%L"),h=t(r[As]||":%S"),f=t(r[Ss]||"%I:%M"),p=t(r[js]||"%I %p"),b=t(r[Os]||r[Es]||"%a %d"),g=t(r[Cs]||"%b %d"),m=t(r[_s]||"%B"),v=t(r[ws]||"%B"),y=t(r[ks]||"%Y");return t=>(n(t)tu(t)?e(t):sf(e,cd,t),utcFormat:t=>tu(t)?r(t):sf(r,ud,t),timeParse:rf(t.parse),utcParse:rf(t.utcParse)}}function hf(){return af=df({format:Fd,parse:Ld,utcFormat:Td,utcParse:Rd})}function ff(t){return df(zd(t))}function pf(t){return arguments.length?af=ff(t):af}!function(t){Pd=zd(t),Fd=Pd.format,Ld=Pd.parse,Td=Pd.utcFormat,Rd=Pd.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),cf(),hf();const bf=(t,e)=>Bc({},t,e);function gf(t,e){const r=t?uf(t):lf(),n=e?ff(e):pf();return bf(r,n)}function mf(t,e){const r=arguments.length;return r&&2!==r&&Ua("defaultLocale expects either zero or two arguments."),r?bf(lf(t),pf(e)):bf(lf(),pf())}const vf=/^(data:|([A-Za-z]+:)?\/\/)/,yf=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,xf=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,kf="file://";async function wf(t,e){const r=await this.sanitize(t,e),n=r.href;return r.localFile?this.file(n):this.http(n,e)}async function _f(t,e){e=Bc({},this.options,e);const r=this.fileAccess,n={href:null};let o,i,a;const c=yf.test(t.replace(xf,""));null!=t&&"string"==typeof t&&c||Ua("Sanitize failure, invalid URI: "+uu(t));const u=vf.test(t);return(a=e.baseURL)&&!u&&(t.startsWith("/")||a.endsWith("/")||(t="/"+t),t=a+t),i=(o=t.startsWith(kf))||"file"===e.mode||"http"!==e.mode&&!u&&r,o?t=t.slice(kf.length):t.startsWith("//")&&("file"===e.defaultProtocol?(t=t.slice(2),i=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(n,"localFile",{value:!!i}),n.href=t,e.target&&(n.target=e.target+""),e.rel&&(n.rel=e.rel+""),"image"===e.context&&e.crossOrigin&&(n.crossOrigin=e.crossOrigin+""),n}function Cf(t){return t?e=>new Promise(((r,n)=>{t.readFile(e,((t,e)=>{t?n(t):r(e)}))})):Of}async function Of(){Ua("No file system access.")}function Ef(t){return t?async function(e,r){const n=Bc({},this.options.http,r),o=r&&r.response,i=await t(e,n);return i.ok?Ac(i[o])?i[o]():i.text():Ua(i.status+""+i.statusText)}:Df}async function Df(){Ua("No HTTP fetch method available.")}const jf=t=>null!=t&&t==t,Sf=t=>!(Number.isNaN(+t)||t instanceof Date),Af={boolean:lu,integer:sc,number:sc,date:du,string:hu,unknown:Va},Mf=[t=>"true"===t||"false"===t||!0===t||!1===t,t=>Sf(t)&&Number.isInteger(+t),Sf,t=>!Number.isNaN(Date.parse(t))],Nf=["boolean","integer","number","date"];function zf(t,e){if(!t||!t.length)return"unknown";const r=t.length,n=Mf.length,o=Mf.map(((t,e)=>e+1));for(let i,a,c=0,u=0;c0===t?e:t),0)-1]}function Pf(t,e){return e.reduce(((e,r)=>(e[r]=zf(t,r),e)),{})}function Ff(t){const e=function(e,r){const n={delimiter:t};return Lf(e,r?Bc(r,n):n)};return e.responseType="text",e}function Lf(t,e){return e.header&&(t=e.header.map(uu).join(e.delimiter)+"\n"+t),Ou(e.delimiter).parse(t+"")}function Tf(t,e){const r=e&&e.property?Ha(e.property):Va;return!oc(t)||(n=t,"function"==typeof Buffer&&Ac(Buffer.isBuffer)&&Buffer.isBuffer(n))?r(JSON.parse(t)):function(t,e){!nc(t)&&Jc(t)&&(t=[...t]);return e&&e.copy?JSON.parse(JSON.stringify(t)):t}(r(t),e);var n}Lf.responseType="text",Tf.responseType="json";const Rf={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function Bf(t,e){let r,n,o,i;return t=Tf(t,e),e&&e.feature?(r=Du,o=e.feature):e&&e.mesh?(r=Mu,o=e.mesh,i=Rf[e.filter]):Ua("Missing TopoJSON feature or mesh parameter."),n=(n=t.objects[o])?r(t,n,i):Ua("Invalid TopoJSON object: "+o),n&&n.features||[n]}Bf.responseType="json";const If={dsv:Lf,csv:Ff(","),tsv:Ff("\t"),json:Tf,topojson:Bf};function Uf(t,e){return arguments.length>1?(If[t]=e,this):Hc(If,t)?If[t]:null}function qf(t){const e=Uf(t);return e&&e.responseType||"text"}function Hf(t,e,r,n){const o=Uf((e=e||{}).type||"json");return o||Ua("Unknown data format type: "+e.type),t=o(t,e),e.parse&&function(t,e,r,n){if(!t.length)return;const o=pf();r=r||o.timeParse,n=n||o.utcParse;let i,a,c,u,l,s,d=t.columns||Object.keys(t[0]);"auto"===e&&(e=Pf(t,d));d=Object.keys(e);const h=d.map((t=>{const o=e[t];let i,a;if(o&&(o.startsWith("date:")||o.startsWith("utc:"))){i=o.split(/:(.+)?/,2),a=i[1],("'"===a[0]&&"'"===a[a.length-1]||'"'===a[0]&&'"'===a[a.length-1])&&(a=a.slice(1,-1));return("utc"===i[0]?n:r)(a)}if(!Af[o])throw Error("Illegal format pattern: "+t+":"+o);return Af[o]}));for(c=0,l=t.length,s=d.length;c({options:r||{},sanitize:_f,load:wf,fileAccess:!!e,file:Cf(e),http:Ef(t)})}("undefined"!=typeof fetch&&fetch,null);function Vf(t){const e=t||Va,r=[],n={};return r.add=t=>{const o=e(t);return n[o]||(n[o]=1,r.push(t)),r},r.remove=t=>{const o=e(t);if(n[o]){n[o]=0;const e=r.indexOf(t);e>=0&&r.splice(e,1)}return r},r}async function Zf(t,e){try{await e(t)}catch(r){t.error(r)}}const Gf=Symbol("vega_id");let $f=1;function Yf(t){return!(!t||!Xf(t))}function Xf(t){return t[Gf]}function Jf(t,e){return t[Gf]=e,t}function Qf(t){const e=t===Object(t)?t:{data:t};return Xf(e)?e:Jf(e,$f++)}function Kf(t){return tp(t,Qf({}))}function tp(t,e){for(const r in t)e[r]=t[r];return e}function ep(t,e){return Jf(e,Xf(t))}function rp(t,e){return t?e?(r,n)=>t(r,n)||Xf(e(r))-Xf(e(n)):(e,r)=>t(e,r)||Xf(e)-Xf(r):null}function np(t){return t&&t.constructor===op}function op(){const t=[],e=[],r=[],n=[],o=[];let i=null,a=!1;return{constructor:op,insert(e){const r=jc(e),n=r.length;for(let o=0;o{p(t)&&(l[Xf(t)]=-1)}));for(d=0,h=t.length;d0&&(m(b,p,f.value),c.modifies(p));for(d=0,h=o.length;d{p(t)&&l[Xf(t)]>0&&m(t,f.field,f.value)})),c.modifies(f.field);if(a)c.mod=e.length||n.length?u.filter((t=>l[Xf(t)]>0)):u.slice();else for(g in s)c.mod.push(s[g]);return(i||null==i&&(e.length||n.length))&&c.clean(!0),c}}}const ip="_:mod:_";function ap(){Object.defineProperty(this,ip,{writable:!0,value:{}})}ap.prototype={set(t,e,r,n){const o=this,i=o[t],a=o[ip];return null!=e&&e>=0?(i[e]!==r||n)&&(i[e]=r,a[e+":"+t]=-1,a[t]=-1):(i!==r||n)&&(o[t]=r,a[t]=nc(r)?1+r.length:-1),o},modified(t,e){const r=this[ip];if(!arguments.length){for(const t in r)if(r[t])return!0;return!1}if(nc(t)){for(let e=0;e=0?e+1{a instanceof lp?(a!==this&&(e&&a.targets().add(this),i.push(a)),o.push({op:a,name:t,index:r})):n.set(t,r,a)};for(a in t)if(c=t[a],"pulse"===a)jc(c).forEach((t=>{t instanceof lp?t!==this&&(t.targets().add(this),i.push(t)):Ua("Pulse parameters must be operator instances.")})),this.source=c;else if(nc(c))for(n.set(a,-1,Array(u=c.length)),l=0;l{const r=Date.now();return r-e>t?(e=r,1):0}))},debounce(t){const e=fp();return this.targets().add(fp(null,null,Rc(t,(t=>{const r=t.dataflow;e.receive(t),r&&r.run&&r.run()})))),e},between(t,e){let r=!1;return t.targets().add(fp(null,null,(()=>r=!0))),e.targets().add(fp(null,null,(()=>r=!1))),this.filter((()=>r))},detach(){this._filter=$a,this._targets=null}};const pp={skip:!0};function bp(t,e,r,n,o,i){const a=Bc({},i,pp);let c,u;Ac(r)||(r=Tc(r)),void 0===n?c=e=>t.touch(r(e)):Ac(n)?(u=new lp(null,n,o,!1),c=e=>{u.evaluate(e);const n=r(e),o=u.value;np(o)?t.pulse(n,o,i):t.update(n,o,a)}):c=e=>t.update(r(e),n,a),e.apply(c)}function gp(t,e,r,n,o,i){if(void 0===n)e.targets().add(r);else{const a=i||{},c=new lp(null,function(t,e){return e=Ac(e)?e:Tc(e),t?function(r,n){const o=e(r,n);return t.skip()||(t.skip(o!==this.value).value=o),o}:e}(r,n),o,!1);c.modified(a.force),c.rank=e.rank,e.targets().add(c),r&&(c.skip(!0),c.value=r.value,c.targets().add(r),t.connect(r,[c]))}}const mp={};function vp(t,e,r){this.dataflow=t,this.stamp=null==e?-1:e,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=r||null}function yp(t,e){const r=[];return bu(t,e,(t=>r.push(t))),r}function xp(t,e){const r={};return t.visit(e,(t=>{r[Xf(t)]=1})),t=>r[Xf(t)]?null:t}function kp(t,e){return t?(r,n)=>t(r,n)&&e(r,n):e}function wp(t,e,r,n){const o=this;let i=0;this.dataflow=t,this.stamp=e,this.fields=null,this.encode=n||null,this.pulses=r;for(const a of r)if(a.stamp===e){if(a.fields){const t=o.fields||(o.fields={});for(const e in a.fields)t[e]=1}a.changed(o.ADD)&&(i|=o.ADD),a.changed(o.REM)&&(i|=o.REM),a.changed(o.MOD)&&(i|=o.MOD)}this.changes=i}function _p(t){return t.error("Dataflow already running. Use runAsync() to chain invocations."),t}vp.prototype={StopPropagation:mp,ADD:1,REM:2,MOD:4,ADD_REM:3,ADD_MOD:5,ALL:7,REFLOW:8,SOURCE:16,NO_SOURCE:32,NO_FIELDS:64,fork(t){return new vp(this.dataflow).init(this,t)},clone(){const t=this.fork(7);return t.add=t.add.slice(),t.rem=t.rem.slice(),t.mod=t.mod.slice(),t.source&&(t.source=t.source.slice()),t.materialize(23)},addAll(){let t=this;return!t.source||t.add===t.rem||!t.rem.length&&t.source.length===t.add.length||(t=new vp(this.dataflow).init(this),t.add=t.source,t.rem=[]),t},init(t,e){const r=this;return r.stamp=t.stamp,r.encode=t.encode,!t.fields||64&e||(r.fields=t.fields),1&e?(r.addF=t.addF,r.add=t.add):(r.addF=null,r.add=[]),2&e?(r.remF=t.remF,r.rem=t.rem):(r.remF=null,r.rem=[]),4&e?(r.modF=t.modF,r.mod=t.mod):(r.modF=null,r.mod=[]),32&e?(r.srcF=null,r.source=null):(r.srcF=t.srcF,r.source=t.source,t.cleans&&(r.cleans=t.cleans)),r},runAfter(t){this.dataflow.runAfter(t)},changed(t){const e=t||7;return 1&e&&this.add.length||2&e&&this.rem.length||4&e&&this.mod.length},reflow(t){if(t)return this.fork(7).reflow();const e=this.add.length,r=this.source&&this.source.length;return r&&r!==e&&(this.mod=this.source,e&&this.filter(4,xp(this,1))),this},clean(t){return arguments.length?(this.cleans=!!t,this):this.cleans},modifies(t){const e=this.fields||(this.fields={});return nc(t)?t.forEach((t=>e[t]=!0)):e[t]=!0,this},modified(t,e){const r=this.fields;return!(!e&&!this.mod.length||!r)&&(arguments.length?nc(t)?t.some((t=>r[t])):r[t]:!!r)},filter(t,e){const r=this;return 1&t&&(r.addF=kp(r.addF,e)),2&t&&(r.remF=kp(r.remF,e)),4&t&&(r.modF=kp(r.modF,e)),16&t&&(r.srcF=kp(r.srcF,e)),r},materialize(t){const e=this;return 1&(t=t||7)&&e.addF&&(e.add=yp(e.add,e.addF),e.addF=null),2&t&&e.remF&&(e.rem=yp(e.rem,e.remF),e.remF=null),4&t&&e.modF&&(e.mod=yp(e.mod,e.modF),e.modF=null),16&t&&e.srcF&&(e.source=e.source.filter(e.srcF),e.srcF=null),e},visit(t,e){const r=this,n=e;if(16&t)return bu(r.source,r.srcF,n),r;1&t&&bu(r.add,r.addF,n),2&t&&bu(r.rem,r.remF,n),4&t&&bu(r.mod,r.modF,n);const o=r.source;if(8&t&&o){const t=r.add.length+r.mod.length;t===o.length||bu(o,t?xp(r,5):r.srcF,n)}return r}},Gc(wp,vp,{fork(t){const e=new vp(this.dataflow).init(this,t&this.NO_FIELDS);return void 0!==t&&(t&e.ADD&&this.visit(e.ADD,(t=>e.add.push(t))),t&e.REM&&this.visit(e.REM,(t=>e.rem.push(t))),t&e.MOD&&this.visit(e.MOD,(t=>e.mod.push(t)))),e},changed(t){return this.changes&t},modified(t){const e=this,r=e.fields;return r&&e.changes&e.MOD?nc(t)?t.some((t=>r[t])):r[t]:0},filter(){Ua("MultiPulse does not support filtering.")},materialize(){Ua("MultiPulse does not support materialization.")},visit(t,e){const r=this,n=r.pulses,o=n.length;let i=0;if(t&r.SOURCE)for(;ie=[],size:()=>e.length,peek:()=>e[0],push:r=>(e.push(r),Ep(e,0,e.length-1,t)),pop:()=>{const r=e.pop();let n;return e.length?(n=e[0],e[0]=r,function(t,e,r){const n=e,o=t.length,i=t[e];let a,c=1+(e<<1);for(;c=0&&(c=a),t[e]=t[c],c=1+((e=c)<<1);t[e]=i,Ep(t,n,e,r)}(e,0,t)):n=r,n}}}function Ep(t,e,r,n){let o,i;const a=t[r];for(;r>e&&(i=r-1>>1,o=t[i],n(a,o)<0);)t[r]=o,r=i;return t[r]=a}function Dp(){this.logger(rc()),this.logLevel(Qa),this._clock=0,this._rank=0,this._locale=mf();try{this._loader=Wf()}catch(h9){}this._touched=Vf(Wa),this._input={},this._pulse=null,this._heap=Op(((t,e)=>t.qrank-e.qrank)),this._postrun=[]}function jp(t){return function(){return this._log[t].apply(this,arguments)}}function Sp(t,e){lp.call(this,t,null,e)}Dp.prototype={stamp(){return this._clock},loader(t){return arguments.length?(this._loader=t,this):this._loader},locale(t){return arguments.length?(this._locale=t,this):this._locale},logger(t){return arguments.length?(this._log=t,this):this._log},error:jp("error"),warn:jp("warn"),info:jp("info"),debug:jp("debug"),logLevel:jp("level"),cleanThreshold:1e4,add:function(t,e,r,n){let o,i=1;return t instanceof lp?o=t:t&&t.prototype instanceof lp?o=new t:Ac(t)?o=new lp(null,t):(i=0,o=new lp(t,e)),this.rank(o),i&&(n=r,r=e),r&&this.connect(o,o.parameters(r,n)),this.touch(o),o},connect:function(t,e){const r=t.rank,n=e.length;for(let o=0;o=0;)e.push(r=n[o]),r===t&&Ua("Cycle detected in dataflow graph.")},pulse:function(t,e,r){this.touch(t,r||Cp);const n=new vp(this,this._clock+(this._pulse?0:1)),o=t.pulse&&t.pulse.source||[];return n.target=t,this._input[t.id]=e.pulse(n,o),this},touch:function(t,e){const r=e||Cp;return this._pulse?this._enqueue(t):this._touched.add(t),r.skip&&t.skip(!0),this},update:function(t,e,r){const n=r||Cp;return(t.set(e)||n.force)&&this.touch(t,n),this},changeset:op,ingest:function(t,e,r){return e=this.parse(e,r),this.pulse(t,this.changeset().insert(e))},parse:function(t,e){const r=this.locale();return Hf(t,e,r.timeParse,r.utcParse)},preload:async function(t,e,r){const n=this,o=n._pending||function(t){let e;const r=new Promise((t=>e=t));return r.requests=0,r.done=()=>{0==--r.requests&&(t._pending=null,e(t))},t._pending=r}(n);o.requests+=1;const i=await n.request(e,r);return n.pulse(t,n.changeset().remove($a).insert(i.data||[])),o.done(),i},request:async function(t,e){const r=this;let n,o=0;try{n=await r.loader().load(t,{context:"dataflow",response:qf(e&&e.type)});try{n=r.parse(n,e)}catch(i){o=-2,r.warn("Data ingestion failed",t,i)}}catch(i){o=-1,r.warn("Loading failed",t,i)}return{data:n,status:o}},events:function(t,e,r,n){const o=this,i=fp(r,n),a=function(t){t.dataflow=o;try{i.receive(t)}catch(Ua){o.error(Ua)}finally{o.run()}};let c;c="string"==typeof t&&"undefined"!=typeof document?document.querySelectorAll(t):jc(t);const u=c.length;for(let l=0;ln._enqueue(t,!0))),n._touched=Vf(Wa);let a,c,u,l=0;try{for(;n._heap.size()>0;)a=n._heap.pop(),a.rank===a.qrank?(c=a.run(n._getPulse(a,t)),c.then?c=await c:c.async&&(o.push(c.async),c=mp),c!==mp&&a._targets&&a._targets.forEach((t=>n._enqueue(t))),++l):n._enqueue(a,!0)}catch(s){n._heap.clear(),u=s}if(n._input={},n._pulse=null,n.debug("Pulse ".concat(i,": ").concat(l," operators")),u&&(n._postrun=[],n.error(u)),n._postrun.length){const t=n._postrun.sort(((t,e)=>e.priority-t.priority));n._postrun=[];for(let e=0;en.runAsync(null,(()=>{t.forEach((t=>{try{t(n)}catch(s){n.error(s)}}))})))),n},run:function(t,e,r){return this._pulse?_p(this):(this.evaluate(t,e,r),this)},runAsync:async function(t,e,r){for(;this._running;)await this._running;const n=()=>this._running=null;return(this._running=this.evaluate(t,e,r)).then(n,n),this._running},runAfter:function(t,e,r){if(this._pulse||e)this._postrun.push({priority:r||0,callback:t});else try{t(this)}catch(n){this.error(n)}},_enqueue:function(t,e){const r=t.stampt.pulse)),e):this._input[t.id]||function(t,e){if(e&&e.stamp===t.stamp)return e;t=t.fork(),e&&e!==mp&&(t.source=e.source);return t}(this._pulse,r&&r.pulse)}},Gc(Sp,lp,{run(t){if(t.stampthis.pulse=t)):e!==t.StopPropagation&&(this.pulse=e),e},evaluate(t){const e=this.marshall(t.stamp),r=this.transform(e,t);return e.clear(),r},transform(){}});const Ap={};function Mp(t){const e=Np(t);return e&&e.Definition||null}function Np(t){return t=t&&t.toLowerCase(),Hc(Ap,t)?Ap[t]:null}function*zp(t,e){if(null==e)for(let r of t)null!=r&&""!==r&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of t)n=e(n,++r,t),null!=n&&""!==n&&(n=+n)>=n&&(yield n)}}function Pp(t,e,r){const n=Float64Array.from(zp(t,r));return n.sort(zu),e.map((t=>ul(n,t)))}function Fp(t,e){return Pp(t,[.25,.5,.75],e)}function Lp(t,e){const r=t.length,n=function(t,e){const r=function(t,e){let r,n=0,o=0,i=0;if(void 0===e)for(let a of t)null!=a&&(a=+a)>=a&&(r=a-o,o+=r/++n,i+=r*(a-o));else{let a=-1;for(let c of t)null!=(c=e(c,++a,t))&&(c=+c)>=c&&(r=c-o,o+=r/++n,i+=r*(c-o))}if(n>1)return i/(n-1)}(t,e);return r?Math.sqrt(r):r}(t,e),o=Fp(t,e),i=(o[2]-o[0])/1.34;return 1.06*(Math.min(n,i)||n||Math.abs(o[0])||1)*Math.pow(r,-.2)}function Tp(t){const e=t.maxbins||20,r=t.base||10,n=Math.log(r),o=t.divide||[5,2];let i,a,c,u,l,s,d=t.extent[0],h=t.extent[1];const f=t.span||h-d||Math.abs(d)||1;if(t.step)i=t.step;else if(t.steps){for(u=f/e,l=0,s=t.steps.length;le;)i*=r;for(l=0,s=o.length;l=c&&f/u<=e&&(i=u)}u=Math.log(i);const p=u>=0?0:1+~~(-u/n),b=Math.pow(r,-p-1);return(t.nice||void 0===t.nice)&&(u=Math.floor(d/i+b)*i,d=dt);const o=t.length,i=new Float64Array(o);let a,c=0,u=1,l=n(t[0]),s=l,d=l+e;for(;u=d){for(s=(l+s)/2;c>1);oa;)t[o--]=t[i]}i=a,a=n}return t}(i,e+e/4):i}const Up=Math.sqrt(2*Math.PI),qp=Math.SQRT2;let Hp=NaN;function Wp(t,e){t=t||0,e=null==e?1:e;let r,n,o=0,i=0;if(Hp==Hp)o=Hp,Hp=NaN;else{do{o=2*Rp()-1,i=2*Rp()-1,r=o*o+i*i}while(0===r||r>1);n=Math.sqrt(-2*Math.log(r)/r),o*=n,Hp=i*n}return t+o*e}function Vp(t,e,r){const n=(t-(e||0))/(r=null==r?1:r);return Math.exp(-.5*n*n)/(r*Up)}function Zp(t,e,r){const n=(t-(e=e||0))/(r=null==r?1:r),o=Math.abs(n);let i;if(o>37)i=0;else{const t=Math.exp(-o*o/2);let e;o<7.07106781186547?(e=.0352624965998911*o+.700383064443688,e=e*o+6.37396220353165,e=e*o+33.912866078383,e=e*o+112.079291497871,e=e*o+221.213596169931,e=e*o+220.206867912376,i=t*e,e=.0883883476483184*o+1.75566716318264,e=e*o+16.064177579207,e=e*o+86.7807322029461,e=e*o+296.564248779674,e=e*o+637.333633378831,e=e*o+793.826512519948,e=e*o+440.413735824752,i/=e):(e=o+.65,e=o+4/e,e=o+3/e,e=o+2/e,e=o+1/e,i=t/e/2.506628274631)}return n>0?1-i:i}function Gp(t,e,r){return t<0||t>1?NaN:(e||0)+(null==r?1:r)*qp*function(t){let e,r=-Math.log((1-t)*(1+t));r<6.25?(r-=3.125,e=-364441206401782e-35,e=e*r-16850591381820166e-35,e=128584807152564e-32+e*r,e=11157877678025181e-33+e*r,e=e*r-1333171662854621e-31,e=20972767875968562e-33+e*r,e=6637638134358324e-30+e*r,e=e*r-4054566272975207e-29,e=e*r-8151934197605472e-29,e=26335093153082323e-28+e*r,e=e*r-12975133253453532e-27,e=e*r-5415412054294628e-26,e=1.0512122733215323e-9+e*r,e=e*r-4.112633980346984e-9,e=e*r-2.9070369957882005e-8,e=4.2347877827932404e-7+e*r,e=e*r-13654692000834679e-22,e=e*r-13882523362786469e-21,e=.00018673420803405714+e*r,e=e*r-.000740702534166267,e=e*r-.006033670871430149,e=.24015818242558962+e*r,e=1.6536545626831027+e*r):r<16?(r=Math.sqrt(r)-3.25,e=2.2137376921775787e-9,e=9.075656193888539e-8+e*r,e=e*r-2.7517406297064545e-7,e=1.8239629214389228e-8+e*r,e=15027403968909828e-22+e*r,e=e*r-4013867526981546e-21,e=29234449089955446e-22+e*r,e=12475304481671779e-21+e*r,e=e*r-47318229009055734e-21,e=6828485145957318e-20+e*r,e=24031110387097894e-21+e*r,e=e*r-.0003550375203628475,e=.0009532893797373805+e*r,e=e*r-.0016882755560235047,e=.002491442096107851+e*r,e=e*r-.003751208507569241,e=.005370914553590064+e*r,e=1.0052589676941592+e*r,e=3.0838856104922208+e*r):Number.isFinite(r)?(r=Math.sqrt(r)-5,e=-27109920616438573e-27,e=e*r-2.555641816996525e-10,e=1.5076572693500548e-9+e*r,e=e*r-3.789465440126737e-9,e=7.61570120807834e-9+e*r,e=e*r-1.496002662714924e-8,e=2.914795345090108e-8+e*r,e=e*r-6.771199775845234e-8,e=2.2900482228026655e-7+e*r,e=e*r-9.9298272942317e-7,e=4526062597223154e-21+e*r,e=e*r-1968177810553167e-20,e=7599527703001776e-20+e*r,e=e*r-.00021503011930044477,e=e*r-.00013871931833623122,e=1.0103004648645344+e*r,e=4.849906401408584+e*r):e=1/0;return e*t}(2*t-1)}function $p(t,e){let r,n;const o={mean(t){return arguments.length?(r=t||0,o):r},stdev(t){return arguments.length?(n=null==t?1:t,o):n},sample:()=>Wp(r,n),pdf:t=>Vp(t,r,n),cdf:t=>Zp(t,r,n),icdf:t=>Gp(t,r,n)};return o.mean(t).stdev(e)}function Yp(t,e){const r=$p();let n=0;const o={data(r){return arguments.length?(t=r,n=r?r.length:0,o.bandwidth(e)):t},bandwidth(r){return arguments.length?(!(e=r)&&t&&(e=Lp(t)),o):e},sample(){return t[~~(Rp()*n)]+e*r.sample()},pdf(o){let i=0,a=0;for(;aXp(r,n),pdf:t=>Jp(t,r,n),cdf:t=>Qp(t,r,n),icdf:t=>Kp(t,r,n)};return o.mean(t).stdev(e)}function eb(t,e){let r,n=0;const o={weights(t){return arguments.length?(r=function(t){const e=[];let r,o=0;for(r=0;r=e&&t<=r?1/(r-e):0}function ob(t,e,r){return null==r&&(r=null==e?1:e,e=0),tr?1:(t-e)/(r-e)}function ib(t,e,r){return null==r&&(r=null==e?1:e,e=0),t>=0&&t<=1?e+t*(r-e):NaN}function ab(t,e){let r,n;const o={min(t){return arguments.length?(r=t||0,o):r},max(t){return arguments.length?(n=null==t?1:t,o):n},sample:()=>rb(r,n),pdf:t=>nb(t,r,n),cdf:t=>ob(t,r,n),icdf:t=>ib(t,r,n)};return null==e&&(e=null==t?1:t,t=0),o.min(t).max(e)}function cb(t,e,r){let n=0,o=0;for(const i of t){const t=r(i);null==e(i)||null==t||isNaN(t)||(n+=(t-n)/++o)}return{coef:[n],predict:()=>n,rSquared:0}}function ub(t,e,r,n){const o=n-t*t,i=Math.abs(o)<1e-24?0:(r-t*e)/o;return[e-i*t,i]}function lb(t,e,r,n){t=t.filter((t=>{let n=e(t),o=r(t);return null!=n&&(n=+n)>=n&&null!=o&&(o=+o)>=o})),n&&t.sort(((t,r)=>e(t)-e(r)));const o=t.length,i=new Float64Array(o),a=new Float64Array(o);let c,u,l,s=0,d=0,h=0;for(l of t)i[s]=c=+e(l),a[s]=u=+r(l),++s,d+=(c-d)/s,h+=(u-h)/s;for(s=0;s=o&&null!=i&&(i=+i)>=i&&n(o,i,++a)}function db(t,e,r,n,o){let i=0,a=0;return sb(t,e,r,((t,e)=>{const r=e-o(t),c=e-n;i+=r*r,a+=c*c})),1-i/a}function hb(t,e,r){let n=0,o=0,i=0,a=0,c=0;sb(t,e,r,((t,e)=>{++c,n+=(t-n)/c,o+=(e-o)/c,i+=(t*e-i)/c,a+=(t*t-a)/c}));const u=ub(n,o,i,a),l=t=>u[0]+u[1]*t;return{coef:u,predict:l,rSquared:db(t,e,r,o,l)}}function fb(t,e,r){let n=0,o=0,i=0,a=0,c=0;sb(t,e,r,((t,e)=>{++c,t=Math.log(t),n+=(t-n)/c,o+=(e-o)/c,i+=(t*e-i)/c,a+=(t*t-a)/c}));const u=ub(n,o,i,a),l=t=>u[0]+u[1]*Math.log(t);return{coef:u,predict:l,rSquared:db(t,e,r,o,l)}}function pb(t,e,r){const[n,o,i,a]=lb(t,e,r);let c,u,l,s=0,d=0,h=0,f=0,p=0;sb(t,e,r,((t,e)=>{c=n[p++],u=Math.log(e),l=c*e,s+=(e*u-s)/p,d+=(l-d)/p,h+=(l*u-h)/p,f+=(c*l-f)/p}));const[b,g]=ub(d/a,s/a,h/a,f/a),m=t=>Math.exp(b+g*(t-i));return{coef:[Math.exp(b-g*i),g],predict:m,rSquared:db(t,e,r,a,m)}}function bb(t,e,r){let n=0,o=0,i=0,a=0,c=0,u=0;sb(t,e,r,((t,e)=>{const r=Math.log(t),l=Math.log(e);++u,n+=(r-n)/u,o+=(l-o)/u,i+=(r*l-i)/u,a+=(r*r-a)/u,c+=(e-c)/u}));const l=ub(n,o,i,a),s=t=>l[0]*Math.pow(t,l[1]);return l[0]=Math.exp(l[0]),{coef:l,predict:s,rSquared:db(t,e,r,c,s)}}function gb(t,e,r){const[n,o,i,a]=lb(t,e,r),c=n.length;let u,l,s,d,h=0,f=0,p=0,b=0,g=0;for(u=0;uy*(t-=i)*t+x*t+k+a;return{coef:[k-x*i+y*i*i+a,x-2*y*i,y],predict:w,rSquared:db(t,e,r,a,w)}}function mb(t,e,r,n){if(0===n)return cb(t,e,r);if(1===n)return hb(t,e,r);if(2===n)return gb(t,e,r);const[o,i,a,c]=lb(t,e,r),u=o.length,l=[],s=[],d=n+1;let h,f,p,b,g;for(h=0;hMath.abs(t[n][a])&&(a=o);for(i=n;i=n;i--)t[i][o]-=t[i][n]*t[n][o]/t[n][n]}for(o=e-1;o>=0;--o){for(c=0,i=o+1;i{t-=a;let e=c+m[0]+m[1]*t+m[2]*t*t;for(h=3;h=0;--i)for(c=e[i],u=1,o[i]+=c,a=1;a<=i;++a)u*=(i+1-a)/a,o[i-a]+=c*Math.pow(r,a)*u;return o[0]+=n,o}function yb(t,e,r,n){const[o,i,a,c]=lb(t,e,r,!0),u=o.length,l=Math.max(2,~~(n*u)),s=new Float64Array(u),d=new Float64Array(u),h=new Float64Array(u).fill(1);for(let f=-1;++f<=2;){const t=[0,l-1];for(let r=0;ro[a]-e?n:a;let u=0,l=0,f=0,p=0,b=0;const g=1/Math.abs(o[c]-e||1);for(let t=n;t<=a;++t){const r=o[t],n=i[t],a=xb(Math.abs(e-r)*g)*h[t],c=r*a;u+=a,l+=c,f+=n*a,p+=n*c,b+=r*c}const[m,v]=ub(l/u,f/u,p/u,b/u);s[r]=m+v*e,d[r]=Math.abs(i[r]-s[r]),kb(o,r+1,t)}if(2===f)break;const e=ll(d);if(Math.abs(e)<1e-12)break;for(let r,n,o=0;o=1?1e-12:(n=1-r*r)*n}return function(t,e,r,n){const o=t.length,i=[];let a,c=0,u=0,l=[];for(;c=t.length))for(;e>o&&t[i]-n<=n-t[o];)r[0]=++o,r[1]=i,++i}const wb=.5*Math.PI/180;function _b(t,e,r,n){r=r||25,n=Math.max(r,n||200);const o=e=>[e,t(e)],i=e[0],a=e[1],c=a-i,u=c/n,l=[o(i)],s=[];if(r===n){for(let t=1;t0;)s.push(o(i+b/r*c));let d=l[0],h=s[s.length-1];const f=1/c,p=function(t,e){let r=t,n=t;const o=e.length;for(let i=0;in&&(n=t)}return 1/(n-r)}(d[1],s);for(;h;){const t=o((d[0]+h[0])/2);t[0]-d[0]>=u&&Cb(d,t,h,f,p)>wb?s.push(t):(d=h,l.push(h),s.pop()),h=s[s.length-1]}return l}function Cb(t,e,r,n,o){const i=Math.atan2(o*(r[1]-t[1]),n*(r[0]-t[0])),a=Math.atan2(o*(e[1]-t[1]),n*(e[0]-t[0]));return Math.abs(i-a)}function Ob(t){return t&&t.length?1===t.length?t[0]:(e=t,t=>{const r=e.length;let n=1,o=String(e[0](t));for(;n{},jb={init:Db,add:Db,rem:Db,idx:0},Sb={values:{init:t=>t.cell.store=!0,value:t=>t.cell.data.values(),idx:-1},count:{value:t=>t.cell.num},__count__:{value:t=>t.missing+t.valid},missing:{value:t=>t.missing},valid:{value:t=>t.valid},sum:{init:t=>t.sum=0,value:t=>t.sum,add:(t,e)=>t.sum+=+e,rem:(t,e)=>t.sum-=e},product:{init:t=>t.product=1,value:t=>t.valid?t.product:void 0,add:(t,e)=>t.product*=e,rem:(t,e)=>t.product/=e},mean:{init:t=>t.mean=0,value:t=>t.valid?t.mean:void 0,add:(t,e)=>(t.mean_d=e-t.mean,t.mean+=t.mean_d/t.valid),rem:(t,e)=>(t.mean_d=e-t.mean,t.mean-=t.valid?t.mean_d/t.valid:t.mean)},average:{value:t=>t.valid?t.mean:void 0,req:["mean"],idx:1},variance:{init:t=>t.dev=0,value:t=>t.valid>1?t.dev/(t.valid-1):void 0,add:(t,e)=>t.dev+=t.mean_d*(e-t.mean),rem:(t,e)=>t.dev-=t.mean_d*(e-t.mean),req:["mean"],idx:1},variancep:{value:t=>t.valid>1?t.dev/t.valid:void 0,req:["variance"],idx:2},stdev:{value:t=>t.valid>1?Math.sqrt(t.dev/(t.valid-1)):void 0,req:["variance"],idx:2},stdevp:{value:t=>t.valid>1?Math.sqrt(t.dev/t.valid):void 0,req:["variance"],idx:2},stderr:{value:t=>t.valid>1?Math.sqrt(t.dev/(t.valid*(t.valid-1))):void 0,req:["variance"],idx:2},distinct:{value:t=>t.cell.data.distinct(t.get),req:["values"],idx:3},ci0:{value:t=>t.cell.data.ci0(t.get),req:["values"],idx:3},ci1:{value:t=>t.cell.data.ci1(t.get),req:["values"],idx:3},median:{value:t=>t.cell.data.q2(t.get),req:["values"],idx:3},q1:{value:t=>t.cell.data.q1(t.get),req:["values"],idx:3},q3:{value:t=>t.cell.data.q3(t.get),req:["values"],idx:3},min:{init:t=>t.min=void 0,value:t=>t.min=Number.isNaN(t.min)?t.cell.data.min(t.get):t.min,add:(t,e)=>{(e{e<=t.min&&(t.min=NaN)},req:["values"],idx:4},max:{init:t=>t.max=void 0,value:t=>t.max=Number.isNaN(t.max)?t.cell.data.max(t.get):t.max,add:(t,e)=>{(e>t.max||void 0===t.max)&&(t.max=e)},rem:(t,e)=>{e>=t.max&&(t.max=NaN)},req:["values"],idx:4},argmin:{init:t=>t.argmin=void 0,value:t=>t.argmin||t.cell.data.argmin(t.get),add:(t,e,r)=>{e{e<=t.min&&(t.argmin=void 0)},req:["min","values"],idx:3},argmax:{init:t=>t.argmax=void 0,value:t=>t.argmax||t.cell.data.argmax(t.get),add:(t,e,r)=>{e>t.max&&(t.argmax=r)},rem:(t,e)=>{e>=t.max&&(t.argmax=void 0)},req:["max","values"],idx:3}},Ab=Object.keys(Sb).filter((t=>"__count__"!==t));function Mb(t,e){return Sb[t](e)}function Nb(t,e){return t.idx-e.idx}function zb(){this.valid=0,this.missing=0,this._ops.forEach((t=>t.init(this)))}function Pb(t,e){null!=t&&""!==t?t==t&&(++this.valid,this._ops.forEach((r=>r.add(this,t,e)))):++this.missing}function Fb(t,e){null!=t&&""!==t?t==t&&(--this.valid,this._ops.forEach((r=>r.rem(this,t,e)))):--this.missing}function Lb(t){return this._out.forEach((e=>t[e.out]=e.value(this))),t}function Tb(t,e){const r=e||Va,n=function(t){const e={};t.forEach((t=>e[t.name]=t));const r=t=>{t.req&&t.req.forEach((t=>{e[t]||r(e[t]=Sb[t]())}))};return t.forEach(r),Object.values(e).sort(Nb)}(t),o=t.slice().sort(Nb);function i(t){this._ops=n,this._out=o,this.cell=t,this.init()}return i.prototype.init=zb,i.prototype.add=Pb,i.prototype.rem=Fb,i.prototype.set=Lb,i.prototype.get=r,i.fields=t.map((t=>t.out)),i}function Rb(t){this._key=t?Ha(t):Xf,this.reset()}[...Ab,"__count__"].forEach((t=>{Sb[t]=function(t,e){return r=>Bc({name:t,out:r||t},jb,e)}(t,Sb[t])}));const Bb=Rb.prototype;function Ib(t){Sp.call(this,null,t),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}Bb.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},Bb.add=function(t){this._add.push(t)},Bb.rem=function(t){this._rem.push(t)},Bb.values=function(){if(this._get=null,0===this._rem.length)return this._add;const t=this._add,e=this._rem,r=this._key,n=t.length,o=e.length,i=Array(n-o),a={};let c,u,l;for(c=0;c=0;)n=t(e[o])+"",Hc(r,n)||(r[n]=1,++i);return i},Bb.extent=function(t){if(this._get!==t||!this._ext){const e=this.values(),r=Uc(e,t);this._ext=[e[r[0]],e[r[1]]],this._get=t}return this._ext},Bb.argmin=function(t){return this.extent(t)[0]||{}},Bb.argmax=function(t){return this.extent(t)[1]||{}},Bb.min=function(t){const e=this.extent(t)[0];return null!=e?t(e):void 0},Bb.max=function(t){const e=this.extent(t)[1];return null!=e?t(e):void 0},Bb.quartile=function(t){return this._get===t&&this._q||(this._q=Fp(this.values(),t),this._get=t),this._q},Bb.q1=function(t){return this.quartile(t)[0]},Bb.q2=function(t){return this.quartile(t)[1]},Bb.q3=function(t){return this.quartile(t)[2]},Bb.ci=function(t){return this._get===t&&this._ci||(this._ci=Bp(this.values(),1e3,.05,t),this._get=t),this._ci},Bb.ci0=function(t){return this.ci(t)[0]},Bb.ci1=function(t){return this.ci(t)[1]},Ib.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Ab},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]},Gc(Ib,Sp,{transform(t,e){const r=this,n=e.fork(e.NO_SOURCE|e.NO_FIELDS),o=t.modified();return r.stamp=n.stamp,r.value&&(o||e.modified(r._inputs,!0))?(r._prev=r.value,r.value=o?r.init(t):Object.create(null),e.visit(e.SOURCE,(t=>r.add(t)))):(r.value=r.value||r.init(t),e.visit(e.REM,(t=>r.rem(t))),e.visit(e.ADD,(t=>r.add(t)))),n.modifies(r._outputs),r._drop=!1!==t.drop,t.cross&&r._dims.length>1&&(r._drop=!1,r.cross()),e.clean()&&r._drop&&n.clean(!0).runAfter((()=>this.clean())),r.changes(n)},cross(){const t=this,e=t.value,r=t._dnames,n=r.map((()=>({}))),o=r.length;function i(t){let e,i,a,c;for(e in t)for(a=t[e].tuple,i=0;i{const e=La(t);return o(t),r.push(e),e})),this.cellkey=t.key?t.key:Ob(this._dims),this._countOnly=!0,this._counts=[],this._measures=[];const i=t.fields||[null],a=t.ops||["count"],c=t.as||[],u=i.length,l={};let s,d,h,f,p,b;for(u!==a.length&&Ua("Unmatched number of fields and aggregate ops."),b=0;bTb(t,t.field))),Object.create(null)},cellkey:Ob(),cell(t,e){let r=this.value[t];return r?0===r.num&&this._drop&&r.stampi.push(t),remove:t=>a[n(t)]=++c,size:()=>o.length,data:(t,e)=>(c&&(o=o.filter((t=>!a[n(t)])),a={},c=0),e&&t&&o.sort(t),i.length&&(o=t?ou(t,o,i.sort(t)):o.concat(i),i=[]),o)}}function Hb(t){Sp.call(this,[],t)}function Wb(t){lp.call(this,null,Vb,t)}function Vb(t){return this.value&&!t.modified()?this.value:Nc(t.fields,t.orders)}function Zb(t){Sp.call(this,null,t)}function Gb(t){Sp.call(this,null,t)}Ub.Definition={type:"Bin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"interval",type:"boolean",default:!0},{name:"anchor",type:"number"},{name:"maxbins",type:"number",default:20},{name:"base",type:"number",default:10},{name:"divide",type:"number",array:!0,default:[5,2]},{name:"extent",type:"number",array:!0,length:2,required:!0},{name:"span",type:"number"},{name:"step",type:"number"},{name:"steps",type:"number",array:!0},{name:"minstep",type:"number",default:0},{name:"nice",type:"boolean",default:!0},{name:"name",type:"string"},{name:"as",type:"string",array:!0,length:2,default:["bin0","bin1"]}]},Gc(Ub,Sp,{transform(t,e){const r=!1!==t.interval,n=this._bins(t),o=n.start,i=n.step,a=t.as||["bin0","bin1"],c=a[0],u=a[1];let l;return l=t.modified()?(e=e.reflow(!0)).SOURCE:e.modified(Ta(t.field))?e.ADD_MOD:e.ADD,e.visit(l,r?t=>{const e=n(t);t[c]=e,t[u]=null==e?null:o+i*(1+(e-o)/i)}:t=>t[c]=n(t)),e.modifies(r?a:c)},_bins(t){if(this.value&&!t.modified())return this.value;const e=t.field,r=Tp(t),n=r.step;let o,i,a=r.start,c=a+Math.ceil((r.stop-a)/n)*n;null!=(o=t.anchor)&&(i=o-(a+n*Math.floor((o-a)/n)),a+=i,c+=i);const u=function(t){let r=sc(e(t));return null==r?null:rc?1/0:(r=Math.max(a,Math.min(r,c-n)),a+n*Math.floor(1e-14+(r-a)/n))};return u.start=a,u.stop=r.stop,u.step=n,this.value=Fa(u,Ta(e),t.name||"bin_"+La(e))}}),Hb.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]},Gc(Hb,Sp,{transform(t,e){const r=e.fork(e.ALL),n=qb(Xf,this.value,r.materialize(r.ADD).add),o=t.sort,i=e.changed()||o&&(t.modified("sort")||e.modified(o.fields));return r.visit(r.REM,n.remove),this.modified(i),this.value=r.source=n.data(rp(o),i),e.source&&e.source.root&&(this.value.root=e.source.root),r}}),Gc(Wb,lp),Zb.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:'[\\w"]+'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]},Gc(Zb,Sp,{transform(t,e){const r=e=>r=>{for(var n,o=function(t,e,r){switch(e){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase()}return t.match(r)}(c(r),t.case,i)||[],u=0,l=o.length;uo[t]=1+(o[t]||0))),s=r((t=>o[t]-=1));return n?e.visit(e.SOURCE,l):(e.visit(e.ADD,l),e.visit(e.REM,s)),this._finish(e,u)},_parameterCheck(t,e){let r=!1;return!t.modified("stopwords")&&this._stop||(this._stop=new RegExp("^"+(t.stopwords||"")+"$","i"),r=!0),!t.modified("pattern")&&this._match||(this._match=new RegExp(t.pattern||"[\\w']+","g"),r=!0),(t.modified("field")||e.modified(t.field.fields))&&(r=!0),r&&(this._counts={}),r},_finish(t,e){const r=this._counts,n=this._tuples||(this._tuples={}),o=e[0],i=e[1],a=t.fork(t.NO_SOURCE|t.NO_FIELDS);let c,u,l;for(c in r)u=n[c],l=r[c]||0,!u&&l?(n[c]=u=Qf({}),u[o]=c,u[i]=l,a.add.push(u)):0===l?(u&&a.rem.push(u),r[c]=null,n[c]=null):u[i]!==l&&(u[i]=l,a.mod.push(u));return a.modifies(e)}}),Gb.Definition={type:"Cross",metadata:{generates:!0},params:[{name:"filter",type:"expr"},{name:"as",type:"string",array:!0,length:2,default:["a","b"]}]},Gc(Gb,Sp,{transform(t,e){const r=e.fork(e.NO_SOURCE),n=t.as||["a","b"],o=n[0],i=n[1],a=!this.value||e.changed(e.ADD_REM)||t.modified("as")||t.modified("filter");let c=this.value;return a?(c&&(r.rem=c),c=e.materialize(e.SOURCE).source,r.add=this.value=function(t,e,r,n){for(var o,i,a=[],c={},u=t.length,l=0;lXb(t,e)))):typeof n[o]===Yb&&n[o](t[o]);return n}function Jb(t){Sp.call(this,null,t)}const Qb=[{key:{function:"normal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"lognormal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"uniform"},params:[{name:"min",type:"number",default:0},{name:"max",type:"number",default:1}]},{key:{function:"kde"},params:[{name:"field",type:"field",required:!0},{name:"from",type:"data"},{name:"bandwidth",type:"number",default:0}]}],Kb={key:{function:"mixture"},params:[{name:"distributions",type:"param",array:!0,params:Qb},{name:"weights",type:"number",array:!0}]};function tg(t,e){return t?t.map(((t,r)=>e[r]||La(t))):null}function eg(t,e,r){const n=[],o=t=>t(u);let i,a,c,u,l,s;if(null==e)n.push(t.map(r));else for(i={},a=0,c=t.length;at.materialize(t.SOURCE).source}(e)),o=t.steps||t.minsteps||25,i=t.steps||t.maxsteps||200;let a=t.method||"pdf";"pdf"!==a&&"cdf"!==a&&Ua("Invalid density method: "+a),t.extent||n.data||Ua("Missing density extent parameter."),a=n[a];const c=t.as||["value","density"],u=_b(a,t.extent||Ic(n.data()),o,i).map((t=>{const e={};return e[c[0]]=t[0],e[c[1]]=t[1],Qf(e)}));this.value&&(r.rem=this.value),this.value=r.add=r.source=u}return r}});function rg(t){Sp.call(this,null,t)}rg.Definition={type:"DotBin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"step",type:"number"},{name:"smooth",type:"boolean",default:!1},{name:"as",type:"string",default:"bin"}]};function ng(t){lp.call(this,null,og,t),this.modified(!0)}function og(t){const e=t.expr;return this.value&&!t.modified("expr")?this.value:Fa((r=>e(r,t)),Ta(e),La(e))}function ig(t){Sp.call(this,[void 0,void 0],t)}function ag(t,e){lp.call(this,t),this.parent=e,this.count=0}function cg(t){Sp.call(this,{},t),this._keys=Vc();const e=this._targets=[];e.active=0,e.forEach=t=>{for(let r=0,n=e.active;rHa(t))):Ha(t.name,t.as)}function sg(t){Sp.call(this,Vc(),t)}function dg(t){Sp.call(this,[],t)}function hg(t){Sp.call(this,[],t)}function fg(t){Sp.call(this,null,t)}function pg(t){Sp.call(this,[],t)}Gc(rg,Sp,{transform(t,e){if(this.value&&!t.modified()&&!e.changed())return e;const r=e.materialize(e.SOURCE).source,n=eg(e.source,t.groupby,Va),o=t.smooth||!1,i=t.field,a=t.step||((t,e)=>cu(Ic(t,e))/30)(r,i),c=rp(((t,e)=>i(t)-i(e))),u=t.as||"bin",l=n.length;let s,d=1/0,h=-1/0,f=0;for(;fh&&(h=e),t[++s][u]=e}return this.value={start:d,stop:h,step:a},e.reflow(!0).modifies(u)}}),Gc(ng,lp),ig.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},Gc(ig,Sp,{transform(t,e){const r=this.value,n=t.field,o=e.changed()||e.modified(n.fields)||t.modified("field");let i=r[0],a=r[1];if((o||null==i)&&(i=1/0,a=-1/0),e.visit(o?e.SOURCE:e.ADD,(t=>{const e=sc(n(t));null!=e&&(ea&&(a=e))})),!Number.isFinite(i)||!Number.isFinite(a)){let t=La(n);t&&(t=' for field "'.concat(t,'"')),e.dataflow.warn("Infinite extent".concat(t,": [").concat(i,", ").concat(a,"]")),i=a=void 0}this.value=[i,a]}}),Gc(ag,lp,{connect(t){return this.detachSubflow=t.detachSubflow,this.targets().add(t),t.source=this},add(t){this.count+=1,this.value.add.push(t)},rem(t){this.count-=1,this.value.rem.push(t)},mod(t){this.value.mod.push(t)},init(t){this.value.init(t,t.NO_SOURCE)},evaluate(){return this.value}}),Gc(cg,Sp,{activate(t){this._targets[this._targets.active++]=t},subflow(t,e,r,n){const o=this.value;let i,a,c=Hc(o,t)&&o[t];return c?c.value.stampt&&t.count>0));this.initTargets(t)}},initTargets(t){const e=this._targets,r=e.length,n=t?t.length:0;let o=0;for(;othis.subflow(t,o,e);return this._group=t.group||{},this.initTargets(),e.visit(e.REM,(t=>{const e=Xf(t),r=i.get(e);void 0!==r&&(i.delete(e),c(r).rem(t))})),e.visit(e.ADD,(t=>{const e=n(t);i.set(Xf(t),e),c(e).add(t)})),a||e.modified(n.fields)?e.visit(e.MOD,(t=>{const e=Xf(t),r=i.get(e),o=n(t);r===o?c(o).mod(t):(i.set(e,o),c(r).rem(t),c(o).add(t))})):e.changed(e.MOD)&&e.visit(e.MOD,(t=>{c(i.get(Xf(t))).mod(t)})),a&&e.visit(e.REFLOW,(t=>{const e=Xf(t),r=i.get(e),o=n(t);r!==o&&(i.set(e,o),c(r).rem(t),c(o).add(t))})),e.clean()?r.runAfter((()=>{this.clean(),i.clean()})):i.empty>r.cleanThreshold&&r.runAfter(i.clean),e}}),Gc(ug,lp),sg.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]},Gc(sg,Sp,{transform(t,e){const r=e.dataflow,n=this.value,o=e.fork(),i=o.add,a=o.rem,c=o.mod,u=t.expr;let l=!0;function s(e){const r=Xf(e),o=u(e,t),s=n.get(r);o&&s?(n.delete(r),i.push(e)):o||s?l&&o&&!s&&c.push(e):(n.set(r,1),a.push(e))}return e.visit(e.REM,(t=>{const e=Xf(t);n.has(e)?n.delete(e):a.push(t)})),e.visit(e.ADD,(e=>{u(e,t)?i.push(e):n.set(Xf(e),1)})),e.visit(e.MOD,s),t.modified()&&(l=!1,e.visit(e.REFLOW,s)),n.empty>r.cleanThreshold&&r.runAfter(n.clean),o}}),dg.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"index",type:"string"},{name:"as",type:"string",array:!0}]},Gc(dg,Sp,{transform(t,e){const r=e.fork(e.NO_SOURCE),n=t.fields,o=tg(n,t.as||[]),i=t.index||null,a=o.length;return r.rem=this.value,e.visit(e.SOURCE,(t=>{const e=n.map((e=>e(t))),c=e.reduce(((t,e)=>Math.max(t,e.length)),0);let u,l,s,d=0;for(;d{for(let e,i=0;ie[n]=r(e,t)))}}),Gc(pg,Sp,{transform(t,e){const r=e.fork(e.ALL),n=t.generator;let o,i,a,c=this.value,u=t.size-c.length;if(u>0){for(o=[];--u>=0;)o.push(a=Qf(n(t))),c.push(a);r.add=r.add.length?r.materialize(r.ADD).add.concat(o):o}else i=c.slice(0,-u),r.rem=r.rem.length?r.materialize(r.REM).rem.concat(i):i,c=c.slice(-u);return r.source=this.value=c,r}});const bg={value:"value",median:ll,mean:function(t,e){let r=0,n=0;if(void 0===e)for(let o of t)null!=o&&(o=+o)>=o&&(++r,n+=o);else{let o=-1;for(let i of t)null!=(i=e(i,++o,t))&&(i=+i)>=i&&(++r,n+=i)}if(r)return n/r},min:ol,max:nl},gg=[];function mg(t){Sp.call(this,[],t)}function vg(t){Ib.call(this,t)}function yg(t){Sp.call(this,null,t)}function xg(t){lp.call(this,null,kg,t)}function kg(t){return this.value&&!t.modified()?this.value:eu(t.fields,t.flat)}function wg(t){Sp.call(this,[],t),this._pending=null}function _g(t,e,r){r.forEach(Qf);const n=e.fork(e.NO_FIELDS&e.NO_SOURCE);return n.rem=t.value,t.value=n.source=n.add=r,t._pending=null,n.rem.length&&n.clean(!0),n}function Cg(t){Sp.call(this,{},t)}function Og(t){lp.call(this,null,Eg,t)}function Eg(t){if(this.value&&!t.modified())return this.value;const e=t.extents,r=e.length;let n,o,i=1/0,a=-1/0;for(n=0;na&&(a=o[1]);return[i,a]}function Dg(t){lp.call(this,null,jg,t)}function jg(t){return this.value&&!t.modified()?this.value:t.values.reduce(((t,e)=>t.concat(e)),[])}function Sg(t){Sp.call(this,null,t)}function Ag(t){Ib.call(this,t)}function Mg(t){cg.call(this,t)}function Ng(t){Sp.call(this,null,t)}function zg(t){Sp.call(this,null,t)}function Pg(t){Sp.call(this,null,t)}mg.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]},Gc(mg,Sp,{transform(t,e){var r,n,o,i,a,c,u,l,s,d,h=e.fork(e.ALL),f=function(t){var e,r=t.method||bg.value;if(null!=bg[r])return r===bg.value?(e=void 0!==t.value?t.value:0,()=>e):bg[r];Ua("Unrecognized imputation method: "+r)}(t),p=function(t){const e=t.field;return t=>t?e(t):NaN}(t),b=La(t.field),g=La(t.key),m=(t.groupby||[]).map(La),v=function(t,e,r,n){var o,i,a,c,u,l,s,d,h=t=>t(d),f=[],p=n?n.slice():[],b={},g={};for(p.forEach(((t,e)=>b[t]=e+1)),c=0,s=t.length;cr.add(t)))):(o=r.value=r.value||this.init(t),e.visit(e.REM,(t=>r.rem(t))),e.visit(e.ADD,(t=>r.add(t)))),r.changes(),e.visit(e.SOURCE,(t=>{Bc(t,o[r.cellkey(t)].tuple)})),e.reflow(n).modifies(this._outputs)},changes(){const t=this._adds,e=this._mods;let r,n;for(r=0,n=this._alen;r{const r=Yp(e,a)[c],n=t.counts?e.length:1;_b(r,s||Ic(e),d,h).forEach((t=>{const r={};for(let n=0;n(this._pending=jc(t.data),t=>t.touch(this))));return{async:e}}return r.request(t.url,t.format).then((t=>_g(this,e,jc(t.data))))}}),Cg.Definition={type:"Lookup",metadata:{modifies:!0},params:[{name:"index",type:"index",params:[{name:"from",type:"data",required:!0},{name:"key",type:"field",required:!0}]},{name:"values",type:"field",array:!0},{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0},{name:"default",default:null}]},Gc(Cg,Sp,{transform(t,e){const r=t.fields,n=t.index,o=t.values,i=null==t.default?null:t.default,a=t.modified(),c=r.length;let u,l,s,d=a?e.SOURCE:e.ADD,h=e,f=t.as;return o?(l=o.length,c>1&&!f&&Ua('Multi-field lookup requires explicit "as" parameter.'),f&&f.length!==c*l&&Ua('The "as" parameter has too few output field names.'),f=f||o.map(La),u=function(t){for(var e,a,u=0,s=0;ue.modified(t.fields))),d|=s?e.MOD:0),e.visit(d,u),h.modifies(f)}}),Gc(Og,lp),Gc(Dg,lp),Gc(Sg,Sp,{transform(t,e){return this.modified(t.modified()),this.value=t,e.fork(e.NO_SOURCE|e.NO_FIELDS)}}),Ag.Definition={type:"Pivot",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"value",type:"field",required:!0},{name:"op",type:"enum",values:Ab,default:"sum"},{name:"limit",type:"number",default:0},{name:"key",type:"field"}]},Gc(Ag,Ib,{_transform:Ib.prototype.transform,transform(t,e){return this._transform(function(t,e){const r=t.field,n=t.value,o=("count"===t.op?"__count__":t.op)||"sum",i=Ta(r).concat(Ta(n)),a=function(t,e,r){const n={},o=[];return r.visit(r.SOURCE,(e=>{const r=t(e);n[r]||(n[r]=1,o.push(r))})),o.sort(zc),e?o.slice(0,e):o}(r,t.limit||0,e);e.changed()&&t.set("__pivot__",null,null,!0);return{key:t.key,groupby:t.groupby,ops:a.map((()=>o)),fields:a.map((t=>function(t,e,r,n){return Fa((n=>e(n)===t?r(n):NaN),n,t+"")}(t,r,n,i))),as:a.map((t=>t+"")),modified:t.modified.bind(t)}}(t,e),e)}}),Gc(Mg,cg,{transform(t,e){const r=t.subflow,n=t.field,o=t=>this.subflow(Xf(t),r,e,t);return(t.modified("field")||n&&e.modified(Ta(n)))&&Ua("PreFacet does not support field modification."),this.initTargets(),n?(e.visit(e.MOD,(t=>{const e=o(t);n(t).forEach((t=>e.mod(t)))})),e.visit(e.ADD,(t=>{const e=o(t);n(t).forEach((t=>e.add(Qf(t))))})),e.visit(e.REM,(t=>{const e=o(t);n(t).forEach((t=>e.rem(t)))}))):(e.visit(e.MOD,(t=>o(t).mod(t))),e.visit(e.ADD,(t=>o(t).add(t))),e.visit(e.REM,(t=>o(t).rem(t)))),e.clean()&&e.runAfter((()=>this.clean())),e}}),Ng.Definition={type:"Project",metadata:{generates:!0,changes:!0},params:[{name:"fields",type:"field",array:!0},{name:"as",type:"string",null:!0,array:!0}]},Gc(Ng,Sp,{transform(t,e){const r=e.fork(e.NO_SOURCE),n=t.fields,o=tg(t.fields,t.as||[]),i=n?(t,e)=>function(t,e,r,n){for(let o=0,i=r.length;o{const e=Xf(t);r.rem.push(a[e]),a[e]=null})),e.visit(e.ADD,(t=>{const e=i(t,Qf({}));a[Xf(t)]=e,r.add.push(e)})),e.visit(e.MOD,(t=>{r.mod.push(i(t,a[Xf(t)]))})),r}}),Gc(zg,Sp,{transform(t,e){return this.value=t.value,t.modified("value")?e.fork(e.NO_SOURCE|e.NO_FIELDS):e.StopPropagation}}),Pg.Definition={type:"Quantile",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"probs",type:"number",array:!0},{name:"step",type:"number",default:.01},{name:"as",type:"string",array:!0,default:["prob","value"]}]};function Fg(t){Sp.call(this,null,t)}function Lg(t){Sp.call(this,[],t),this.count=0}function Tg(t){Sp.call(this,null,t)}function Rg(t){Sp.call(this,null,t),this.modified(!0)}function Bg(t){Sp.call(this,null,t)}Gc(Pg,Sp,{transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS),n=t.as||["prob","value"];if(this.value&&!t.modified()&&!e.changed())return r.source=this.value,r;const o=eg(e.materialize(e.SOURCE).source,t.groupby,t.field),i=(t.groupby||[]).map(La),a=[],c=t.step||.01,u=t.probs||dl(c/2,1-1e-14,c),l=u.length;return o.forEach((t=>{const e=Pp(t,u);for(let r=0;r{const e=Xf(t);r.rem.push(n[e]),n[e]=null})),e.visit(e.ADD,(t=>{const e=Kf(t);n[Xf(t)]=e,r.add.push(e)})),e.visit(e.MOD,(t=>{const e=n[Xf(t)];for(const n in t)e[n]=t[n],r.modifies(n);r.mod.push(e)}))),r}}),Lg.Definition={type:"Sample",metadata:{},params:[{name:"size",type:"number",default:1e3}]},Gc(Lg,Sp,{transform(t,e){const r=e.fork(e.NO_SOURCE),n=t.modified("size"),o=t.size,i=this.value.reduce(((t,e)=>(t[Xf(e)]=1,t)),{});let a=this.value,c=this.count,u=0;function l(t){let e,n;a.length=u&&(e=a[n],i[Xf(e)]&&r.rem.push(e),a[n]=t)),++c}if(e.rem.length&&(e.visit(e.REM,(t=>{const e=Xf(t);i[e]&&(i[e]=-1,r.rem.push(t)),--c})),a=a.filter((t=>-1!==i[Xf(t)]))),(e.rem.length||n)&&a.length{i[Xf(t)]||l(t)})),u=-1),n&&a.length>o){const t=a.length-o;for(let e=0;e{i[Xf(t)]&&r.mod.push(t)})),e.add.length&&e.visit(e.ADD,l),(e.add.length||u<0)&&(r.add=a.filter((t=>!i[Xf(t)]))),this.count=c,this.value=r.source=a,r}}),Tg.Definition={type:"Sequence",metadata:{generates:!0,changes:!0},params:[{name:"start",type:"number",required:!0},{name:"stop",type:"number",required:!0},{name:"step",type:"number",default:1},{name:"as",type:"string",default:"data"}]},Gc(Tg,Sp,{transform(t,e){if(this.value&&!t.modified())return;const r=e.materialize().fork(e.MOD),n=t.as||"data";return r.rem=this.value?e.rem.concat(this.value):e.rem,this.value=dl(t.start,t.stop,t.step||1).map((t=>{const e={};return e[n]=t,Qf(e)})),r.add=e.add.concat(this.value),r}}),Gc(Rg,Sp,{transform(t,e){return this.value=e.source,e.changed()?e.fork(e.NO_SOURCE|e.NO_FIELDS):e.StopPropagation}});const Ig=["unit0","unit1"];function Ug(t){Sp.call(this,Vc(),t)}function qg(t){Sp.call(this,null,t)}Bg.Definition={type:"TimeUnit",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"interval",type:"boolean",default:!0},{name:"units",type:"enum",values:Ns,array:!0},{name:"step",type:"number",default:1},{name:"maxbins",type:"number",default:40},{name:"extent",type:"date",array:!0},{name:"timezone",type:"enum",default:"local",values:["local","utc"]},{name:"as",type:"string",array:!0,length:2,default:Ig}]},Gc(Bg,Sp,{transform(t,e){const r=t.field,n=!1!==t.interval,o="utc"===t.timezone,i=this._floor(t,e),a=(o?ud:cd)(i.unit).offset,c=t.as||Ig,u=c[0],l=c[1],s=i.step;let d=i.start||1/0,h=i.stop||-1/0,f=e.ADD;return(t.modified()||e.changed(e.REM)||e.modified(Ta(r)))&&(f=(e=e.reflow(!0)).SOURCE,d=1/0,h=-1/0),e.visit(f,(t=>{const e=r(t);let o,c;null==e?(t[u]=null,n&&(t[l]=null)):(t[u]=o=c=i(e),n&&(t[l]=c=a(o,s)),oh&&(h=c))})),i.start=d,i.stop=h,e.modifies(n?c:u)},_floor(t,e){const r="utc"===t.timezone,{units:n,step:o}=t.units?{units:t.units,step:t.step||1}:Sd({extent:t.extent||Ic(e.materialize(e.SOURCE).source,t.field),maxbins:t.maxbins}),i=Ps(n),a=this.value||{},c=(r?od:ed)(i,o);return c.unit=lc(i),c.units=i,c.step=o,c.start=a.start,c.stop=a.stop,this.value=c}}),Gc(Ug,Sp,{transform(t,e){const r=e.dataflow,n=t.field,o=this.value,i=t=>o.set(n(t),t);let a=!0;return t.modified("field")||e.modified(n.fields)?(o.clear(),e.visit(e.SOURCE,i)):e.changed()?(e.visit(e.REM,(t=>o.delete(n(t)))),e.visit(e.ADD,i)):a=!1,this.modified(a),o.empty>r.cleanThreshold&&r.runAfter(o.clean),e.fork()}}),Gc(qg,Sp,{transform(t,e){(!this.value||t.modified("field")||t.modified("sort")||e.changed()||t.sort&&e.modified(t.sort.fields))&&(this.value=(t.sort?e.source.slice().sort(rp(t.sort)):e.source).map(t.field))}});const Hg={row_number:function(){return{next:t=>t.index+1}},rank:function(){let t;return{init:()=>t=1,next:e=>{const r=e.index,n=e.data;return r&&e.compare(n[r-1],n[r])?t=r+1:t}}},dense_rank:function(){let t;return{init:()=>t=1,next:e=>{const r=e.index,n=e.data;return r&&e.compare(n[r-1],n[r])?++t:t}}},percent_rank:function(){const t=Hg.rank(),e=t.next;return{init:t.init,next:t=>(e(t)-1)/(t.data.length-1)}},cume_dist:function(){let t;return{init:()=>t=0,next:e=>{const r=e.data,n=e.compare;let o=e.index;if(t0||Ua("ntile num must be greater than zero.");const r=Hg.cume_dist(),n=r.next;return{init:r.init,next:t=>Math.ceil(e*n(t))}},lag:function(t,e){return e=+e||1,{next:r=>{const n=r.index-e;return n>=0?t(r.data[n]):null}}},lead:function(t,e){return e=+e||1,{next:r=>{const n=r.index+e,o=r.data;return nt(e.data[e.i0])}},last_value:function(t){return{next:e=>t(e.data[e.i1-1])}},nth_value:function(t,e){return(e=+e)>0||Ua("nth_value nth must be greater than zero."),{next:r=>{const n=r.i0+(e-1);return ne=null,next:r=>{const n=t(r.data[r.index]);return null!=n?e=n:e}}},next_value:function(t){let e,r;return{init:()=>(e=null,r=-1),next:n=>{const o=n.data;return n.index<=r?e:(r=function(t,e,r){for(let n=e.length;rc[t]=1))}h(t.sort),e.forEach(((t,e)=>{const c=r[e],f=La(c),p=Eb(t,f,o[e]);if(h(c),i.push(p),Hc(Hg,t))a.push(function(t,e,r,n){const o=Hg[t](e,r);return{init:o.init||Za,update:function(t,e){e[n]=o.next(t)}}}(t,r[e],n[e],p));else{if(null==c&&"count"!==t&&Ua("Null aggregate field specified."),"count"===t)return void l.push(p);d=!1;let e=u[f];e||(e=u[f]=[],e.field=c,s.push(e)),e.push(Mb(t,p))}})),(l.length||s.length)&&(this.cell=function(t,e,r){t=t.map((t=>Tb(t,t.field)));const n={num:0,agg:null,store:!1,count:e};if(!r)for(var o=t.length,i=n.agg=Array(o),a=0;a0&&!o(i[r],i[r-1])&&(t.i0=e.left(i,i[r])),nt.init())),this.cell&&this.cell.init()},Zg.update=function(t,e){const r=this.cell,n=this.windows,o=t.data,i=n&&n.length;let a;if(r){for(a=t.p0;athis.group(o(t));let a=this.state;a&&!r||(a=this.state=new Vg(t)),r||e.modified(a.inputs)?(this.value={},e.visit(e.SOURCE,(t=>i(t).add(t)))):(e.visit(e.REM,(t=>i(t).remove(t))),e.visit(e.ADD,(t=>i(t).add(t))));for(let c=0,u=this._mlen;c=1?um:t<=-1?-um:Math.asin(t)}const dm=Math.PI,hm=2*dm,fm=1e-6,pm=hm-fm;function bm(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error("invalid digits: ".concat(t));if(e>15)return bm;const r=10**e;return function(t){this._+=t[0];for(let e=1,n=t.length;efm)if(Math.abs(p*c-h*f)>fm&&o){let u=r-i,l=n-a,g=c*c+h*h,m=u*u+l*l,v=Math.sqrt(g),y=Math.sqrt(b),x=o*Math.tan((dm-Math.acos((g+b-m)/(2*v*y)))/2),k=x/y,_=x/v;Math.abs(k-1)>fm&&this._append(s||(s=(0,w.Z)(["L",",",""])),t+k*f,e+k*p),this._append(d||(d=(0,w.Z)(["A",",",",0,0,",",",",",""])),o,o,+(p*u>f*l),this._x1=t+_*c,this._y1=e+_*h)}else this._append(l||(l=(0,w.Z)(["L",",",""])),this._x1=t,this._y1=e);else;}arc(t,e,r,n,o,i){if(t=+t,e=+e,i=!!i,(r=+r)<0)throw new Error("negative radius: ".concat(r));let a=r*Math.cos(n),c=r*Math.sin(n),u=t+a,l=e+c,s=1^i,d=i?n-o:o-n;null===this._x1?this._append(h||(h=(0,w.Z)(["M",",",""])),u,l):(Math.abs(this._x1-u)>fm||Math.abs(this._y1-l)>fm)&&this._append(f||(f=(0,w.Z)(["L",",",""])),u,l),r&&(d<0&&(d=d%hm+hm),d>pm?this._append(p||(p=(0,w.Z)(["A",",",",0,1,",",",",","A",",",",0,1,",",",",",""])),r,r,s,t-a,e-c,r,r,s,this._x1=u,this._y1=l):d>fm&&this._append(b||(b=(0,w.Z)(["A",",",",0,",",",",",",",""])),r,r,+(d>=dm),s,this._x1=t+r*Math.cos(o),this._y1=e+r*Math.sin(o)))}rect(t,e,r,n){this._append(g||(g=(0,w.Z)(["M",",","h","v","h","Z"])),this._x0=this._x1=+t,this._y0=this._y1=+e,r=+r,+n,-r)}toString(){return this._}};function mm(){return new gm}function vm(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(null==r)e=null;else{const t=Math.floor(r);if(!(t>=0))throw new RangeError("invalid digits: ".concat(r));e=t}return t},()=>new gm(e)}function ym(t){return t.innerRadius}function xm(t){return t.outerRadius}function km(t){return t.startAngle}function wm(t){return t.endAngle}function _m(t){return t&&t.padAngle}function Cm(t,e,r,n,o,i,a){var c=t-r,u=e-n,l=(a?i:-i)/im(c*c+u*u),s=l*u,d=-l*c,h=t+s,f=e+d,p=r+s,b=n+d,g=(h+p)/2,m=(f+b)/2,v=p-h,y=b-f,x=v*v+y*y,k=o-i,w=h*b-p*f,_=(y<0?-1:1)*im(rm(0,k*k*x-w*w)),C=(w*y-v*_)/x,O=(-w*v-y*_)/x,E=(w*y+v*_)/x,D=(-w*v+y*_)/x,j=C-g,S=O-m,A=E-g,M=D-m;return j*j+S*S>A*A+M*M&&(C=E,O=D),{cx:C,cy:O,x01:-s,y01:-d,x11:C*(o/k-1),y11:O*(o/k-1)}}function Om(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Em(t){this._context=t}function Dm(t){return new Em(t)}function jm(t){return t[0]}function Sm(t){return t[1]}function Am(t,e){var r=Qg(!0),n=null,o=Dm,i=null,a=vm(c);function c(c){var u,l,s,d=(c=Om(c)).length,h=!1;for(null==n&&(i=o(s=a())),u=0;u<=d;++u)!(u=d;--h)c.point(m[h],v[h]);c.lineEnd(),c.areaEnd()}g&&(m[s]=+t(f,s,l),v[s]=+e(f,s,l),c.point(n?+n(f,s,l):m[s],r?+r(f,s,l):v[s]))}if(p)return c=null,p+""||null}function s(){return Am().defined(o).curve(a).context(i)}return t="function"==typeof t?t:void 0===t?jm:Qg(+t),e="function"==typeof e?e:Qg(void 0===e?0:+e),r="function"==typeof r?r:void 0===r?Sm:Qg(+r),l.x=function(e){return arguments.length?(t="function"==typeof e?e:Qg(+e),n=null,l):t},l.x0=function(e){return arguments.length?(t="function"==typeof e?e:Qg(+e),l):t},l.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:Qg(+t),l):n},l.y=function(t){return arguments.length?(e="function"==typeof t?t:Qg(+t),r=null,l):e},l.y0=function(t){return arguments.length?(e="function"==typeof t?t:Qg(+t),l):e},l.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Qg(+t),l):r},l.lineX0=l.lineY0=function(){return s().x(t).y(e)},l.lineY1=function(){return s().x(t).y(r)},l.lineX1=function(){return s().x(n).y(e)},l.defined=function(t){return arguments.length?(o="function"==typeof t?t:Qg(!!t),l):o},l.curve=function(t){return arguments.length?(a=t,null!=i&&(c=a(i)),l):a},l.context=function(t){return arguments.length?(null==t?i=c=null:c=a(i=t),l):i},l}mm.prototype=gm.prototype,Em.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var Nm={draw(t,e){const r=im(e/cm);t.moveTo(r,0),t.arc(0,0,r,0,lm)}};function zm(){}function Pm(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function Fm(t){this._context=t}function Lm(t){this._context=t}function Tm(t){this._context=t}function Rm(t,e){this._basis=new Fm(t),this._beta=e}Fm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Pm(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Pm(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Lm.prototype={areaStart:zm,areaEnd:zm,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Pm(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Tm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Pm(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Rm.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,o=t[0],i=e[0],a=t[r]-o,c=e[r]-i,u=-1;++u<=r;)n=u/r,this._basis.point(this._beta*t[u]+(1-this._beta)*(o+n*a),this._beta*e[u]+(1-this._beta)*(i+n*c));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var Bm=function t(e){function r(t){return 1===e?new Fm(t):new Rm(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function Im(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function Um(t,e){this._context=t,this._k=(1-e)/6}Um.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Im(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Im(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var qm=function t(e){function r(t){return new Um(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Hm(t,e){this._context=t,this._k=(1-e)/6}Hm.prototype={areaStart:zm,areaEnd:zm,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Im(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Wm=function t(e){function r(t){return new Hm(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Vm(t,e){this._context=t,this._k=(1-e)/6}Vm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Im(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Zm=function t(e){function r(t){return new Vm(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Gm(t,e,r){var n=t._x1,o=t._y1,i=t._x2,a=t._y2;if(t._l01_a>am){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,o=(o*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>am){var l=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);i=(i*l+t._x1*t._l23_2a-e*t._l12_2a)/s,a=(a*l+t._y1*t._l23_2a-r*t._l12_2a)/s}t._context.bezierCurveTo(n,o,i,a,t._x2,t._y2)}function $m(t,e){this._context=t,this._alpha=e}$m.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Gm(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ym=function t(e){function r(t){return e?new $m(t,e):new Um(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Xm(t,e){this._context=t,this._alpha=e}Xm.prototype={areaStart:zm,areaEnd:zm,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Gm(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Jm=function t(e){function r(t){return e?new Xm(t,e):new Hm(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Qm(t,e){this._context=t,this._alpha=e}Qm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gm(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Km=function t(e){function r(t){return e?new Qm(t,e):new Vm(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function tv(t){this._context=t}function ev(t){return t<0?-1:1}function rv(t,e,r){var n=t._x1-t._x0,o=e-t._x1,i=(t._y1-t._y0)/(n||o<0&&-0),a=(r-t._y1)/(o||n<0&&-0),c=(i*o+a*n)/(n+o);return(ev(i)+ev(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(c))||0}function nv(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function ov(t,e,r){var n=t._x0,o=t._y0,i=t._x1,a=t._y1,c=(i-n)/3;t._context.bezierCurveTo(n+c,o+c*e,i-c,a-c*r,i,a)}function iv(t){this._context=t}function av(t){this._context=new cv(t)}function cv(t){this._context=t}function uv(t){this._context=t}function lv(t){var e,r,n=t.length-1,o=new Array(n),i=new Array(n),a=new Array(n);for(o[0]=0,i[0]=2,a[0]=t[0]+2*t[1],e=1;e=0;--e)o[e]=(a[e]-o[e+1])/i[e];for(i[n-1]=(t[n]+o[n-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}};const hv=()=>"undefined"!=typeof Image?Image:null;function fv(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function pv(t,e){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof e?this.interpolator(e):this.range(e)}return this}const bv=Symbol("implicit");function gv(){var t=new Hu,e=[],r=[],n=bv;function o(o){let i=t.get(o);if(void 0===i){if(n!==bv)return n;t.set(o,i=e.push(o)-1)}return r[i%r.length]}return o.domain=function(r){if(!arguments.length)return e.slice();e=[],t=new Hu;for(const n of r)t.has(n)||t.set(n,e.push(n)-1);return o},o.range=function(t){return arguments.length?(r=Array.from(t),o):r.slice()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return gv(e,r).unknown(n)},fv.apply(o,arguments),o}function mv(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function vv(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function yv(){}var xv=.7,kv=1/xv,wv="\\s*([+-]?\\d+)\\s*",_v="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Cv="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ov=/^#([0-9a-f]{3,8})$/,Ev=new RegExp("^rgb\\(".concat(wv,",").concat(wv,",").concat(wv,"\\)$")),Dv=new RegExp("^rgb\\(".concat(Cv,",").concat(Cv,",").concat(Cv,"\\)$")),jv=new RegExp("^rgba\\(".concat(wv,",").concat(wv,",").concat(wv,",").concat(_v,"\\)$")),Sv=new RegExp("^rgba\\(".concat(Cv,",").concat(Cv,",").concat(Cv,",").concat(_v,"\\)$")),Av=new RegExp("^hsl\\(".concat(_v,",").concat(Cv,",").concat(Cv,"\\)$")),Mv=new RegExp("^hsla\\(".concat(_v,",").concat(Cv,",").concat(Cv,",").concat(_v,"\\)$")),Nv={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function zv(){return this.rgb().formatHex()}function Pv(){return this.rgb().formatRgb()}function Fv(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=Ov.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?Lv(e):3===r?new Iv(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?Tv(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?Tv(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Ev.exec(t))?new Iv(e[1],e[2],e[3],1):(e=Dv.exec(t))?new Iv(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=jv.exec(t))?Tv(e[1],e[2],e[3],e[4]):(e=Sv.exec(t))?Tv(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Av.exec(t))?Zv(e[1],e[2]/100,e[3]/100,1):(e=Mv.exec(t))?Zv(e[1],e[2]/100,e[3]/100,e[4]):Nv.hasOwnProperty(t)?Lv(Nv[t]):"transparent"===t?new Iv(NaN,NaN,NaN,0):null}function Lv(t){return new Iv(t>>16&255,t>>8&255,255&t,1)}function Tv(t,e,r,n){return n<=0&&(t=e=r=NaN),new Iv(t,e,r,n)}function Rv(t){return t instanceof yv||(t=Fv(t)),t?new Iv((t=t.rgb()).r,t.g,t.b,t.opacity):new Iv}function Bv(t,e,r,n){return 1===arguments.length?Rv(t):new Iv(t,e,r,null==n?1:n)}function Iv(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function Uv(){return"#".concat(Vv(this.r)).concat(Vv(this.g)).concat(Vv(this.b))}function qv(){const t=Hv(this.opacity);return"".concat(1===t?"rgb(":"rgba(").concat(Wv(this.r),", ").concat(Wv(this.g),", ").concat(Wv(this.b)).concat(1===t?")":", ".concat(t,")"))}function Hv(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Wv(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Vv(t){return((t=Wv(t))<16?"0":"")+t.toString(16)}function Zv(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Yv(t,e,r,n)}function Gv(t){if(t instanceof Yv)return new Yv(t.h,t.s,t.l,t.opacity);if(t instanceof yv||(t=Fv(t)),!t)return new Yv;if(t instanceof Yv)return t;var e=(t=t.rgb()).r/255,r=t.g/255,n=t.b/255,o=Math.min(e,r,n),i=Math.max(e,r,n),a=NaN,c=i-o,u=(i+o)/2;return c?(a=e===i?(r-n)/c+6*(r0&&u<1?0:a,new Yv(a,c,u,t.opacity)}function $v(t,e,r,n){return 1===arguments.length?Gv(t):new Yv(t,e,r,null==n?1:n)}function Yv(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function Xv(t){return(t=(t||0)%360)<0?t+360:t}function Jv(t){return Math.max(0,Math.min(1,t||0))}function Qv(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}mv(yv,Fv,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:zv,formatHex:zv,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Gv(this).formatHsl()},formatRgb:Pv,toString:Pv}),mv(Iv,Bv,vv(yv,{brighter(t){return t=null==t?kv:Math.pow(kv,t),new Iv(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?xv:Math.pow(xv,t),new Iv(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Iv(Wv(this.r),Wv(this.g),Wv(this.b),Hv(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Uv,formatHex:Uv,formatHex8:function(){return"#".concat(Vv(this.r)).concat(Vv(this.g)).concat(Vv(this.b)).concat(Vv(255*(isNaN(this.opacity)?1:this.opacity)))},formatRgb:qv,toString:qv})),mv(Yv,$v,vv(yv,{brighter(t){return t=null==t?kv:Math.pow(kv,t),new Yv(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?xv:Math.pow(xv,t),new Yv(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,o=2*r-n;return new Iv(Qv(t>=240?t-240:t+120,o,n),Qv(t,o,n),Qv(t<120?t+240:t-120,o,n),this.opacity)},clamp(){return new Yv(Xv(this.h),Jv(this.s),Jv(this.l),Hv(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Hv(this.opacity);return"".concat(1===t?"hsl(":"hsla(").concat(Xv(this.h),", ").concat(100*Jv(this.s),"%, ").concat(100*Jv(this.l),"%").concat(1===t?")":", ".concat(t,")"))}}));const Kv=Math.PI/180,ty=180/Math.PI,ey=.96422,ry=1,ny=.82521,oy=4/29,iy=6/29,ay=3*iy*iy,cy=iy*iy*iy;function uy(t){if(t instanceof sy)return new sy(t.l,t.a,t.b,t.opacity);if(t instanceof gy)return my(t);t instanceof Iv||(t=Rv(t));var e,r,n=py(t.r),o=py(t.g),i=py(t.b),a=dy((.2225045*n+.7168786*o+.0606169*i)/ry);return n===o&&o===i?e=r=a:(e=dy((.4360747*n+.3850649*o+.1430804*i)/ey),r=dy((.0139322*n+.0971045*o+.7141733*i)/ny)),new sy(116*a-16,500*(e-a),200*(a-r),t.opacity)}function ly(t,e,r,n){return 1===arguments.length?uy(t):new sy(t,e,r,null==n?1:n)}function sy(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function dy(t){return t>cy?Math.pow(t,1/3):t/ay+oy}function hy(t){return t>iy?t*t*t:ay*(t-oy)}function fy(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function py(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function by(t,e,r,n){return 1===arguments.length?function(t){if(t instanceof gy)return new gy(t.h,t.c,t.l,t.opacity);if(t instanceof sy||(t=uy(t)),0===t.a&&0===t.b)return new gy(NaN,0=1?(r=1,e-1):Math.floor(r*e),o=t[n],i=t[n+1],a=n>0?t[n-1]:2*o-i,c=n()=>t;function Ny(t,e){return function(r){return t+r*e}}function zy(t,e){var r=e-t;return r?Ny(t,r>180||r<-180?r-360*Math.round(r/360):r):My(isNaN(t)?e:t)}function Py(t){return 1==(t=+t)?Fy:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):My(isNaN(e)?r:e)}}function Fy(t,e){var r=e-t;return r?Ny(t,r):My(isNaN(t)?e:t)}var Ly=function t(e){var r=Py(e);function n(t,e){var n=r((t=Bv(t)).r,(e=Bv(e)).r),o=r(t.g,e.g),i=r(t.b,e.b),a=Fy(t.opacity,e.opacity);return function(e){return t.r=n(e),t.g=o(e),t.b=i(e),t.opacity=a(e),t+""}}return n.gamma=t,n}(1);function Ty(t){return function(e){var r,n,o=e.length,i=new Array(o),a=new Array(o),c=new Array(o);for(r=0;ri&&(o=e.slice(i,o),c[a]?c[a]+=o:c[++a]=o),(r=r[0])===(n=n[0])?c[a]?c[a]+=n:c[++a]=n:(c[++a]=null,u.push({i:a,x:Wy(r,n)})),i=Gy.lastIndex;return i180?e+=360:e-t>180&&(t+=360),i.push({i:r.push(o(r)+"rotate(",null,n)-2,x:Wy(t,e)})):e&&r.push(o(r)+"rotate("+e+n)}(i.rotate,a.rotate,c,u),function(t,e,r,i){t!==e?i.push({i:r.push(o(r)+"skewX(",null,n)-2,x:Wy(t,e)}):e&&r.push(o(r)+"skewX("+e+n)}(i.skewX,a.skewX,c,u),function(t,e,r,n,i,a){if(t!==r||e!==n){var c=i.push(o(i)+"scale(",null,",",null,")");a.push({i:c-4,x:Wy(t,r)},{i:c-2,x:Wy(e,n)})}else 1===r&&1===n||i.push(o(i)+"scale("+r+","+n+")")}(i.scaleX,i.scaleY,a.scaleX,a.scaleY,c,u),i=a=null,function(t){for(var e,r=-1,n=u.length;++re&&(r=t,t=e,e=r),function(r){return Math.max(t,Math.min(e,r))}}(a[0],a[t-1])),n=t>2?wx:kx,o=i=null,d}function d(e){return null==e||isNaN(e=+e)?r:(o||(o=n(a.map(t),c,u)))(t(l(e)))}return d.invert=function(r){return l(e((i||(i=n(c,a.map(t),Wy)))(r)))},d.domain=function(t){return arguments.length?(a=Array.from(t,mx),s()):a.slice()},d.range=function(t){return arguments.length?(c=Array.from(t),s()):c.slice()},d.rangeRound=function(t){return c=Array.from(t),u=Xy,s()},d.clamp=function(t){return arguments.length?(l=!!t||yx,s()):l!==yx},d.interpolate=function(t){return arguments.length?(u=t,s()):u},d.unknown=function(t){return arguments.length?(r=t,d):r},function(r,n){return t=r,e=n,s()}}function Ox(){return Cx()(yx,yx)}function Ex(t,e,r,n){var o,i=rl(t,e,r);switch((n=ml(null==n?",f":n)).type){case"s":var a=Math.max(Math.abs(t),Math.abs(e));return null!=n.precision||isNaN(o=Sl(i,a))||(n.precision=o),Cl(n,a);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(o=Al(i,Math.max(Math.abs(t),Math.abs(e))))||(n.precision=o-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(o=jl(i))||(n.precision=o-2*("%"===n.type))}return _l(n)}function Dx(t){var e=t.domain;return t.ticks=function(t){var r=e();return tl(r[0],r[r.length-1],null==t?10:t)},t.tickFormat=function(t,r){var n=e();return Ex(n[0],n[n.length-1],null==t?10:t,r)},t.nice=function(r){null==r&&(r=10);var n,o,i=e(),a=0,c=i.length-1,u=i[a],l=i[c],s=10;for(l0;){if((o=el(u,l,r))===n)return i[a]=u,i[c]=l,e(i);if(o>0)u=Math.floor(u/o)*o,l=Math.ceil(l/o)*o;else{if(!(o<0))break;u=Math.ceil(u*o)/o,l=Math.floor(l*o)/o}n=o}return t},t}function jx(t,e){var r,n=0,o=(t=t.slice()).length-1,i=t[n],a=t[o];return a-t(-e,r)}function Fx(t){const e=t(Sx,Ax),r=e.domain;let n,o,i=10;function a(){return n=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}(i),o=function(t){return 10===t?zx:t===Math.E?Math.exp:e=>Math.pow(t,e)}(i),r()[0]<0?(n=Px(n),o=Px(o),t(Mx,Nx)):t(Sx,Ax),e}return e.base=function(t){return arguments.length?(i=+t,a()):i},e.domain=function(t){return arguments.length?(r(t),a()):r()},e.ticks=t=>{const e=r();let a=e[0],c=e[e.length-1];const u=c0){for(;d<=h;++d)for(l=1;lc)break;p.push(s)}}else for(;d<=h;++d)for(l=i-1;l>=1;--l)if(s=d>0?l/o(-d):l*o(d),!(sc)break;p.push(s)}2*p.length{if(null==t&&(t=10),null==r&&(r=10===i?"s":","),"function"!=typeof r&&(i%1||null!=(r=ml(r)).precision||(r.trim=!0),r=_l(r)),t===1/0)return r;const a=Math.max(1,i*t/e.ticks().length);return t=>{let e=t/o(Math.round(n(t)));return e*ir(jx(r(),{floor:t=>o(Math.floor(n(t))),ceil:t=>o(Math.ceil(n(t)))})),e}function Lx(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Tx(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Rx(t){var e=1,r=t(Lx(e),Tx(e));return r.constant=function(r){return arguments.length?t(Lx(e=+r),Tx(e)):e},Dx(r)}function Bx(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Ix(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Ux(t){return t<0?-t*t:t*t}function qx(t){var e=t(yx,yx),r=1;return e.exponent=function(e){return arguments.length?1===(r=+e)?t(yx,yx):.5===r?t(Ix,Ux):t(Bx(r),Bx(1/r)):r},Dx(e)}function Hx(){var t=qx(Cx());return t.copy=function(){return _x(t,Hx()).exponent(t.exponent())},fv.apply(t,arguments),t}function Wx(t){return new Date(t)}function Vx(t){return t instanceof Date?+t:+new Date(+t)}function Zx(t,e,r,n,o,i,a,c,u,l){var s=Ox(),d=s.invert,h=s.domain,f=l(".%L"),p=l(":%S"),b=l("%I:%M"),g=l("%I %p"),m=l("%a %d"),v=l("%b %d"),y=l("%B"),x=l("%Y");function k(t){return(u(t)0?n:1:0}const tk="linear",ek="log",rk="pow",nk="sqrt",ok="symlog",ik="time",ak="utc",ck="sequential",uk="diverging",lk="quantile",sk="quantize",dk="threshold",hk="ordinal",fk="point",pk="band",bk="bin-ordinal",gk="continuous",mk="discrete",vk="discretizing",yk="interpolating",xk="temporal";function kk(){const t=gv().unknown(void 0),e=t.domain,r=t.range;let n,o,i=[0,1],a=!1,c=0,u=0,l=.5;function s(){const t=e().length,s=i[1]f+n*t));return r(s?p.reverse():p)}return delete t.unknown,t.domain=function(t){return arguments.length?(e(t),s()):e()},t.range=function(t){return arguments.length?(i=[+t[0],+t[1]],s()):i.slice()},t.rangeRound=function(t){return i=[+t[0],+t[1]],a=!0,s()},t.bandwidth=function(){return o},t.step=function(){return n},t.round=function(t){return arguments.length?(a=!!t,s()):a},t.padding=function(t){return arguments.length?(u=Math.max(0,Math.min(1,t)),c=u,s()):c},t.paddingInner=function(t){return arguments.length?(c=Math.max(0,Math.min(1,t)),s()):c},t.paddingOuter=function(t){return arguments.length?(u=Math.max(0,Math.min(1,t)),s()):u},t.align=function(t){return arguments.length?(l=Math.max(0,Math.min(1,t)),s()):l},t.invertRange=function(t){if(null==t[0]||null==t[1])return;const n=i[1]i[1-n])?void 0:(u=Math.max(0,Bu(a,d)-1),l=d===h?u:Bu(a,h)-1,d-a[u]>o+1e-10&&++u,n&&(s=u,u=c-l,l=c-s),u>l?void 0:e().slice(u,l+1))},t.invert=function(e){const r=t.invertRange([e,e]);return r?r[0]:r},t.copy=function(){return kk().domain(e()).range(i).round(a).paddingInner(c).paddingOuter(u).align(l)},s()}function wk(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return wk(e())},t}var _k=Array.prototype.map;const Ck=Array.prototype.slice;const Ok=new Map,Ek=Symbol("vega_scale");function Dk(t){return t[Ek]=!0,t}function jk(t,e,r){return arguments.length>1?(Ok.set(t,function(t,e,r){const n=function(){const r=e();return r.invertRange||(r.invertRange=r.invert?function(t){return function(e){let r,n=e[0],o=e[1];return o=c&&r[i]<=u&&(l<0&&(l=i),n=i);if(!(l<0))return c=t.invertExtent(r[l]),u=t.invertExtent(r[n]),[void 0===c[0]?c[1]:c[0],void 0===u[1]?u[0]:u[1]]}}(r):void 0),r.type=t,Dk(r)};return n.metadata=fu(jc(r)),n}(t,e,r)),this):Sk(t)?Ok.get(t):void 0}function Sk(t){return Ok.has(t)}function Ak(t,e){const r=Ok.get(t);return r&&r.metadata[e]}function Mk(t){return Ak(t,gk)}function Nk(t){return Ak(t,mk)}function zk(t){return Ak(t,vk)}function Pk(t){return Ak(t,ek)}function Fk(t){return Ak(t,yk)}function Lk(t){return Ak(t,lk)}jk("identity",(function t(e){var r;function n(t){return null==t||isNaN(t=+t)?r:t}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,mx),n):e.slice()},n.unknown=function(t){return arguments.length?(r=t,n):r},n.copy=function(){return t(e).unknown(r)},e=arguments.length?Array.from(e,mx):[0,1],Dx(n)})),jk(tk,(function t(){var e=Ox();return e.copy=function(){return _x(e,t())},fv.apply(e,arguments),Dx(e)}),gk),jk(ek,(function t(){const e=Fx(Cx()).domain([1,10]);return e.copy=()=>_x(e,t()).base(e.base()),fv.apply(e,arguments),e}),[gk,ek]),jk(rk,Hx,gk),jk(nk,(function(){return Hx.apply(null,arguments).exponent(.5)}),gk),jk(ok,(function t(){var e=Rx(Cx());return e.copy=function(){return _x(e,t()).constant(e.constant())},fv.apply(e,arguments)}),gk),jk(ik,(function(){return fv.apply(Zx(ys,xs,ps,hs,Jl,Gl,Vl,Hl,ql,Fd).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}),[gk,xk]),jk(ak,(function(){return fv.apply(Zx(ms,vs,bs,fs,is,$l,Zl,Wl,ql,Td).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}),[gk,xk]),jk(ck,Yx,[gk,yk]),jk("".concat(ck,"-").concat(tk),Yx,[gk,yk]),jk("".concat(ck,"-").concat(ek),(function t(){var e=Fx(Gx()).domain([1,10]);return e.copy=function(){return $x(e,t()).base(e.base())},pv.apply(e,arguments)}),[gk,yk,ek]),jk("".concat(ck,"-").concat(rk),Xx,[gk,yk]),jk("".concat(ck,"-").concat(nk),(function(){return Xx.apply(null,arguments).exponent(.5)}),[gk,yk]),jk("".concat(ck,"-").concat(ok),(function t(){var e=Rx(Gx());return e.copy=function(){return $x(e,t()).constant(e.constant())},pv.apply(e,arguments)}),[gk,yk]),jk("".concat(uk,"-").concat(tk),(function t(){var e=Dx(Jx()(yx));return e.copy=function(){return $x(e,t())},pv.apply(e,arguments)}),[gk,yk]),jk("".concat(uk,"-").concat(ek),(function t(){var e=Fx(Jx()).domain([.1,1,10]);return e.copy=function(){return $x(e,t()).base(e.base())},pv.apply(e,arguments)}),[gk,yk,ek]),jk("".concat(uk,"-").concat(rk),Qx,[gk,yk]),jk("".concat(uk,"-").concat(nk),(function(){return Qx.apply(null,arguments).exponent(.5)}),[gk,yk]),jk("".concat(uk,"-").concat(ok),(function t(){var e=Rx(Jx());return e.copy=function(){return $x(e,t()).constant(e.constant())},pv.apply(e,arguments)}),[gk,yk]),jk(lk,(function t(){var e,r=[],n=[],o=[];function i(){var t=0,e=Math.max(1,n.length);for(o=new Array(e-1);++t0?o[e-1]:r[0],e=o?[i[o-1],n]:[i[e-1],i[e]]},c.unknown=function(t){return arguments.length?(e=t,c):c},c.thresholds=function(){return i.slice()},c.copy=function(){return t().domain([r,n]).range(a).unknown(e)},fv.apply(Dx(c),arguments)}),vk),jk(dk,(function t(){var e,r=[.5],n=[0,1],o=1;function i(t){return null!=t&&t<=t?n[Uu(r,t,0,o)]:e}return i.domain=function(t){return arguments.length?(r=Array.from(t),o=Math.min(r.length,n.length-1),i):r.slice()},i.range=function(t){return arguments.length?(n=Array.from(t),o=Math.min(r.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var e=n.indexOf(t);return[r[e-1],r[e]]},i.unknown=function(t){return arguments.length?(e=t,i):e},i.copy=function(){return t().domain(r).range(n).unknown(e)},fv.apply(i,arguments)}),vk),jk(bk,(function t(){let e=[],r=[];function n(t){return null==t||t!=t?void 0:r[(Uu(e,t)-1)%r.length]}return n.domain=function(t){return arguments.length?(e=function(t){return _k.call(t,sc)}(t),n):e.slice()},n.range=function(t){return arguments.length?(r=Ck.call(t),n):r.slice()},n.tickFormat=function(t,r){return Ex(e[0],lc(e),null==t?10:t,r)},n.copy=function(){return t().domain(n.domain()).range(n.range())},n}),[mk,vk]),jk(hk,gv,mk),jk(pk,kk,mk),jk(fk,(function(){return wk(kk().paddingInner(1))}),mk);const Tk=["clamp","base","constant","exponent"];function Rk(t,e){const r=e[0],n=lc(e)-r;return function(e){return t(r+e*n)}}function Bk(t,e,r){return bx(qk(e||"rgb",r),t)}function Ik(t,e){const r=new Array(e),n=e+1;for(let o=0;ot[e]?a[e](t[e]()):0)),a):Tc(.5)}function qk(t,e){const r=gx[function(t){return"interpolate"+t.toLowerCase().split("-").map((t=>t[0].toUpperCase()+t.slice(1))).join("")}(t)];return null!=e&&r&&r.gamma?r.gamma(e):r}function Hk(t){const e=t.length/6|0,r=new Array(e);for(let n=0;n1?(Vk[t]=e,this):Vk[t]}Wk({category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"},Hk),Wk({blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",cividis:"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",turbo:"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},(t=>Bk(Hk(t))));const Gk="symbol",$k="discrete",Yk=t=>nc(t)?t.map((t=>String(t))):String(t),Xk=(t,e)=>t[1]-e[1],Jk=(t,e)=>e[1]-t[1];function Qk(t,e,r){let n;return Qc(e)&&(t.bins&&(e=Math.max(e,t.bins.length)),null!=r&&(e=Math.min(e,Math.floor(cu(t.domain())/r||1)))),oc(e)&&(n=e.step,e=e.interval),tu(e)&&(e=t.type===ik?cd(e):t.type==ak?ud(e):Ua("Only time and utc scales accept interval strings."),n&&(e=e.every(n))),e}function Kk(t,e,r){let n=t.range(),o=n[0],i=lc(n),a=Xk;if(o>i&&(n=i,i=o,o=n,a=Jk),o=Math.floor(o),i=Math.ceil(i),e=e.map((e=>[e,t(e)])).filter((t=>o<=t[1]&&t[1]<=i)).sort(a).map((t=>t[0])),r>0&&e.length>1){const t=[e[0],lc(e)];for(;e.length>r&&e.length>=3;)e=e.filter(((t,e)=>!(e%2)));e.length<3&&(e=t)}return e}function tw(t,e){return t.bins?Kk(t,t.bins):t.ticks?t.ticks(e):t.domain()}function ew(t,e,r,n,o,i){const a=e.type;let c=Yk;if(a===ik||o===ik)c=t.timeFormat(n);else if(a===ak||o===ak)c=t.utcFormat(n);else if(Pk(a)){const o=t.formatFloat(n);if(i||e.bins)c=o;else{const t=rw(e,r,!1);c=e=>t(e)?o(e):""}}else if(e.tickFormat){const o=e.domain();c=t.formatSpan(o[0],o[o.length-1],r,n)}else n&&(c=t.format(n));return c}function rw(t,e,r){const n=tw(t,e),o=t.base(),i=Math.log(o),a=Math.max(1,o*e/n.length),c=t=>{let e=t/Math.pow(o,Math.round(Math.log(t)/i));return e*onw[t.type]||t.bins;function cw(t,e,r,n,o,i,a){const c=ow[e.type]&&i!==ik&&i!==ak?function(t,e,r){const n=e[ow[e.type]](),o=n.length;let i,a=o>1?n[1]-n[0]:n[0];for(i=1;i(e,r,n)=>{const o=lw(n[r+1],lw(n.max,1/0)),i=hw(e,t),a=hw(o,t);return i&&a?i+" ā€“ "+a:a?"< "+a:"ā‰„ "+i},lw=(t,e)=>null!=t?t:e,sw=t=>(e,r)=>r?t(e):null,dw=t=>e=>t(e),hw=(t,e)=>Number.isFinite(t)?e(t):null;function fw(t,e,r,n){const o=n||e.type;return tu(r)&&function(t){return Ak(t,xk)}(o)&&(r=r.replace(/%a/g,"%A").replace(/%b/g,"%B")),r||o!==ik?r||o!==ak?cw(t,e,5,null,r,n,!0):t.utcFormat("%A, %d %B %Y, %X UTC"):t.timeFormat("%A, %d %B %Y, %X")}function pw(t,e,r){r=r||{};const n=Math.max(3,r.maxlen||7),o=fw(t,e,r.format,r.formatType);if(zk(e.type)){const t=iw(e).slice(1).map(o),r=t.length;return"".concat(r," boundar").concat(1===r?"y":"ies",": ").concat(t.join(", "))}if(Nk(e.type)){const t=e.domain(),r=t.length,i=r>n?t.slice(0,n-2).map(o).join(", ")+", ending with "+t.slice(-1).map(o):t.map(o).join(", ");return"".concat(r," value").concat(1===r?"":"s",": ").concat(i)}{const t=e.domain();return"values from ".concat(o(t[0])," to ").concat(o(lc(t)))}}let bw=0;const gw="p_";function mw(t){return t&&t.gradient}function vw(t,e,r){const n=t.gradient;let o=t.id,i="radial"===n?gw:"";return o||(o=t.id="gradient_"+bw++,"radial"===n?(t.x1=yw(t.x1,.5),t.y1=yw(t.y1,.5),t.r1=yw(t.r1,0),t.x2=yw(t.x2,.5),t.y2=yw(t.y2,.5),t.r2=yw(t.r2,.5),i=gw):(t.x1=yw(t.x1,0),t.y1=yw(t.y1,0),t.x2=yw(t.x2,1),t.y2=yw(t.y2,0))),e[o]=t,"url("+(r||"")+"#"+i+o+")"}function yw(t,e){return null!=t?t:e}function xw(t,e){var r,n=[];return r={gradient:"linear",x1:t?t[0]:0,y1:t?t[1]:0,x2:e?e[0]:1,y2:e?e[1]:0,stops:n,stop:function(t,e){return n.push({offset:t,color:e}),r}}}const kw={basis:{curve:function(t){return new Fm(t)}},"basis-closed":{curve:function(t){return new Lm(t)}},"basis-open":{curve:function(t){return new Tm(t)}},bundle:{curve:Bm,tension:"beta",value:.85},cardinal:{curve:qm,tension:"tension",value:0},"cardinal-open":{curve:Zm,tension:"tension",value:0},"cardinal-closed":{curve:Wm,tension:"tension",value:0},"catmull-rom":{curve:Ym,tension:"alpha",value:.5},"catmull-rom-closed":{curve:Jm,tension:"alpha",value:.5},"catmull-rom-open":{curve:Km,tension:"alpha",value:.5},linear:{curve:Dm},"linear-closed":{curve:function(t){return new tv(t)}},monotone:{horizontal:function(t){return new av(t)},vertical:function(t){return new iv(t)}},natural:{curve:function(t){return new uv(t)}},step:{curve:function(t){return new sv(t,.5)}},"step-after":{curve:function(t){return new sv(t,1)}},"step-before":{curve:function(t){return new sv(t,0)}}};function ww(t,e,r){var n=Hc(kw,t)&&kw[t],o=null;return n&&(o=n.curve||n[e||"vertical"],n.tension&&null!=r&&(o=o[n.tension](r))),o}const _w={m:2,l:2,h:1,v:1,z:0,c:6,s:4,q:4,t:2,a:7},Cw=/[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi,Ow=/^[+-]?(([0-9]*\.[0-9]+)|([0-9]+\.)|([0-9]+))([eE][+-]?[0-9]+)?/,Ew=/^((\s+,?\s*)|(,\s*))/,Dw=/^[01]/;function jw(t){const e=[];return(t.match(Cw)||[]).forEach((t=>{let r=t[0];const n=r.toLowerCase(),o=_w[n],i=function(t,e,r){const n=[];for(let o=0;e&&o1&&(b=Math.sqrt(b),r*=b,n*=b);const g=h/r,m=d/r,v=-d/n,y=h/n,x=g*c+m*u,k=v*c+y*u,w=g*t+m*e,_=v*t+y*e;let C=1/((w-x)*(w-x)+(_-k)*(_-k))-.25;C<0&&(C=0);let O=Math.sqrt(C);i==o&&(O=-O);const E=.5*(x+w)-O*(_-k),D=.5*(k+_)+O*(w-x),j=Math.atan2(k-D,x-E);let S=Math.atan2(_-D,w-E)-j;S<0&&1===i?S+=Mw:S>0&&0===i&&(S-=Mw);const A=Math.ceil(Math.abs(S/(Aw+.001))),M=[];for(let N=0;N+t}function Jw(t,e,r){return Math.max(e,Math.min(t,r))}function Qw(){var t=Zw,e=Gw,r=$w,n=Yw,o=Xw(0),i=o,a=o,c=o,u=null;function l(l,s,d){var h,f=null!=s?s:+t.call(this,l),p=null!=d?d:+e.call(this,l),b=+r.call(this,l),g=+n.call(this,l),m=Math.min(b,g)/2,v=Jw(+o.call(this,l),0,m),y=Jw(+i.call(this,l),0,m),x=Jw(+a.call(this,l),0,m),k=Jw(+c.call(this,l),0,m);if(u||(u=h=mm()),v<=0&&y<=0&&x<=0&&k<=0)u.rect(f,p,b,g);else{var w=f+b,_=p+g;u.moveTo(f+v,p),u.lineTo(w-y,p),u.bezierCurveTo(w-Vw*y,p,w,p+Vw*y,w,p+y),u.lineTo(w,_-k),u.bezierCurveTo(w,_-Vw*k,w-Vw*k,_,w-k,_),u.lineTo(f+x,_),u.bezierCurveTo(f+Vw*x,_,f,_-Vw*x,f,_-x),u.lineTo(f,p+v),u.bezierCurveTo(f,p+Vw*v,f+Vw*v,p,f+v,p),u.closePath()}if(h)return u=null,h+""||null}return l.x=function(e){return arguments.length?(t=Xw(e),l):t},l.y=function(t){return arguments.length?(e=Xw(t),l):e},l.width=function(t){return arguments.length?(r=Xw(t),l):r},l.height=function(t){return arguments.length?(n=Xw(t),l):n},l.cornerRadius=function(t,e,r,n){return arguments.length?(o=Xw(t),i=null!=e?Xw(e):o,c=null!=r?Xw(r):o,a=null!=n?Xw(n):i,l):o},l.context=function(t){return arguments.length?(u=null==t?null:t,l):u},l}function Kw(){var t,e,r,n,o,i,a,c,u=null;function l(t,e,r){const n=r/2;if(o){var l=a-e,s=t-i;if(l||s){var d=Math.sqrt(l*l+s*s),h=(l/=d)*c,f=(s/=d)*c,p=Math.atan2(s,l);u.moveTo(i-h,a-f),u.lineTo(t-l*n,e-s*n),u.arc(t,e,n,p-Math.PI,p),u.lineTo(i+h,a+f),u.arc(i,a,c,p,p+Math.PI)}else u.arc(t,e,n,0,Mw);u.closePath()}else o=1;i=t,a=e,c=n}function s(i){var a,c,s,d=i.length,h=!1;for(null==u&&(u=s=mm()),a=0;a<=d;++a)!(at.x||0,r_=t=>t.y||0,n_=t=>!(!1===t.defined),o_=function(){var t=ym,e=xm,r=Qg(0),n=null,o=km,i=wm,a=_m,c=null,u=vm(l);function l(){var l,s,d=+t.apply(this,arguments),h=+e.apply(this,arguments),f=o.apply(this,arguments)-um,p=i.apply(this,arguments)-um,b=Kg(p-f),g=p>f;if(c||(c=l=u()),ham)if(b>lm-am)c.moveTo(h*em(f),h*om(f)),c.arc(0,0,h,f,p,!g),d>am&&(c.moveTo(d*em(p),d*om(p)),c.arc(0,0,d,p,f,g));else{var m,v,y=f,x=p,k=f,w=p,_=b,C=b,O=a.apply(this,arguments)/2,E=O>am&&(n?+n.apply(this,arguments):im(d*d+h*h)),D=nm(Kg(h-d)/2,+r.apply(this,arguments)),j=D,S=D;if(E>am){var A=sm(E/d*om(O)),M=sm(E/h*om(O));(_-=2*A)>am?(k+=A*=g?1:-1,w-=A):(_=0,k=w=(f+p)/2),(C-=2*M)>am?(y+=M*=g?1:-1,x-=M):(C=0,y=x=(f+p)/2)}var N=h*em(y),z=h*om(y),P=d*em(w),F=d*om(w);if(D>am){var L,T=h*em(x),R=h*om(x),B=d*em(k),I=d*om(k);if(b1?0:t<-1?cm:Math.acos(t)}((U*H+q*W)/(im(U*U+q*q)*im(H*H+W*W)))/2),Z=im(L[0]*L[0]+L[1]*L[1]);j=nm(D,(d-Z)/(V-1)),S=nm(D,(h-Z)/(V+1))}else j=S=0}C>am?S>am?(m=Cm(B,I,N,z,h,S,g),v=Cm(T,R,P,F,h,S,g),c.moveTo(m.cx+m.x01,m.cy+m.y01),Sam&&_>am?j>am?(m=Cm(P,F,T,R,d,-j,g),v=Cm(N,z,B,I,d,-j,g),c.lineTo(m.cx+m.x01,m.cy+m.y01),jt.startAngle||0)).endAngle((t=>t.endAngle||0)).padAngle((t=>t.padAngle||0)).innerRadius((t=>t.innerRadius||0)).outerRadius((t=>t.outerRadius||0)).cornerRadius((t=>t.cornerRadius||0)),i_=Mm().x(e_).y1(r_).y0((t=>(t.y||0)+(t.height||0))).defined(n_),a_=Mm().y(r_).x1(e_).x0((t=>(t.x||0)+(t.width||0))).defined(n_),c_=Am().x(e_).y(r_).defined(n_),u_=Qw().x(e_).y(r_).width((t=>t.width||0)).height((t=>t.height||0)).cornerRadius((t=>t_(t.cornerRadiusTopLeft,t.cornerRadius)||0),(t=>t_(t.cornerRadiusTopRight,t.cornerRadius)||0),(t=>t_(t.cornerRadiusBottomRight,t.cornerRadius)||0),(t=>t_(t.cornerRadiusBottomLeft,t.cornerRadius)||0)),l_=function(t,e){let r=null,n=vm(o);function o(){let o;if(r||(r=o=n()),t.apply(this,arguments).draw(r,+e.apply(this,arguments)),o)return r=null,o+""||null}return t="function"==typeof t?t:Qg(t||Nm),e="function"==typeof e?e:Qg(void 0===e?64:+e),o.type=function(e){return arguments.length?(t="function"==typeof e?e:Qg(e),o):t},o.size=function(t){return arguments.length?(e="function"==typeof t?t:Qg(+t),o):e},o.context=function(t){return arguments.length?(r=null==t?null:t,o):r},o}().type((t=>Hw(t.shape||"circle"))).size((t=>t_(t.size,64))),s_=Kw().x(e_).y(r_).defined(n_).size((t=>t.size||1));function d_(t){return t.cornerRadius||t.cornerRadiusTopLeft||t.cornerRadiusTopRight||t.cornerRadiusBottomRight||t.cornerRadiusBottomLeft}function h_(t,e,r,n){return u_.context(t)(e,r,n)}var f_=1;function p_(){f_=1}function b_(t,e,r){var n=e.clip,o=t._defs,i=e.clip_id||(e.clip_id="clip"+f_++),a=o.clipping[i]||(o.clipping[i]={id:i});return Ac(n)?a.path=n(null):d_(r)?a.path=h_(null,r,0,0):(a.width=r.width||0,a.height=r.height||0),"url(#"+i+")"}function g_(t){this.clear(),t&&this.union(t)}function m_(t){this.mark=t,this.bounds=this.bounds||new g_}function v_(t){m_.call(this,t),this.items=this.items||[]}function y_(t){this._pending=0,this._loader=t||Wf()}function x_(t){t._pending+=1}function k_(t){t._pending-=1}function w_(t,e,r){if(e.stroke&&0!==e.opacity&&0!==e.strokeOpacity){const n=null!=e.strokeWidth?+e.strokeWidth:1;t.expand(n+(r?function(t,e){return t.strokeJoin&&"miter"!==t.strokeJoin?0:e}(e,n):0))}return t}g_.prototype={clone(){return new g_(this)},clear(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},empty(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&&this.x2===-Number.MAX_VALUE&&this.y2===-Number.MAX_VALUE},equals(t){return this.x1===t.x1&&this.y1===t.y1&&this.x2===t.x2&&this.y2===t.y2},set(t,e,r,n){return rthis.x2&&(this.x2=t),e>this.y2&&(this.y2=e),this},expand(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},round(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},scale(t){return this.x1*=t,this.y1*=t,this.x2*=t,this.y2*=t,this},translate(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this},rotate(t,e,r){const n=this.rotatedPoints(t,e,r);return this.clear().add(n[0],n[1]).add(n[2],n[3]).add(n[4],n[5]).add(n[6],n[7])},rotatedPoints(t,e,r){var{x1:n,y1:o,x2:i,y2:a}=this,c=Math.cos(t),u=Math.sin(t),l=e-e*c+r*u,s=r-e*u-r*c;return[c*n-u*o+l,u*n+c*o+s,c*n-u*a+l,u*n+c*a+s,c*i-u*o+l,u*i+c*o+s,c*i-u*a+l,u*i+c*a+s]},union(t){return t.x1this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},intersect(t){return t.x1>this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=t.y1),t.x2=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},alignsWith(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},intersects(t){return t&&!(this.x2t.x2||this.y2t.y2)},contains(t,e){return!(tthis.x2||ethis.y2)},width(){return this.x2-this.x1},height(){return this.y2-this.y1}},Gc(v_,m_),y_.prototype={pending(){return this._pending},sanitizeURL(t){const e=this;return x_(e),e._loader.sanitize(t,{context:"href"}).then((t=>(k_(e),t))).catch((()=>(k_(e),null)))},loadImage(t){const e=this,r=hv();return x_(e),e._loader.sanitize(t,{context:"image"}).then((t=>{const n=t.href;if(!n||!r)throw{url:n};const o=new r,i=Hc(t,"crossOrigin")?t.crossOrigin:"anonymous";return null!=i&&(o.crossOrigin=i),o.onload=()=>k_(e),o.onerror=()=>k_(e),o.src=n,o})).catch((t=>(k_(e),{complete:!1,width:0,height:0,src:t&&t.url||""})))},ready(){const t=this;return new Promise((e=>{!function r(n){t.pending()?setTimeout((()=>{r(!0)}),10):e(n)}(!1)}))}};const __=Mw-1e-8;let C_,O_,E_,D_,j_,S_,A_,M_;const N_=(t,e)=>C_.add(t,e),z_=(t,e)=>N_(O_=t,E_=e),P_=t=>N_(t,C_.y1),F_=t=>N_(C_.x1,t),L_=(t,e)=>j_*t+A_*e,T_=(t,e)=>S_*t+M_*e,R_=(t,e)=>N_(L_(t,e),T_(t,e)),B_=(t,e)=>z_(L_(t,e),T_(t,e));function I_(t,e){return C_=t,e?(D_=e*Sw,j_=M_=Math.cos(D_),S_=Math.sin(D_),A_=-S_):(j_=M_=1,D_=S_=A_=0),U_}const U_={beginPath(){},closePath(){},moveTo:B_,lineTo:B_,rect(t,e,r,n){D_?(R_(t+r,e),R_(t+r,e+n),R_(t,e+n),B_(t,e)):(N_(t+r,e+n),z_(t,e))},quadraticCurveTo(t,e,r,n){const o=L_(t,e),i=T_(t,e),a=L_(r,n),c=T_(r,n);q_(O_,o,a,P_),q_(E_,i,c,F_),z_(a,c)},bezierCurveTo(t,e,r,n,o,i){const a=L_(t,e),c=T_(t,e),u=L_(r,n),l=T_(r,n),s=L_(o,i),d=T_(o,i);H_(O_,a,u,s,P_),H_(E_,c,l,d,F_),z_(s,d)},arc(t,e,r,n,o,i){if(n+=D_,o+=D_,O_=r*Math.cos(o)+t,E_=r*Math.sin(o)+e,Math.abs(o-n)>__)N_(t-r,e-r),N_(t+r,e+r);else{const a=n=>N_(r*Math.cos(n)+t,r*Math.sin(n)+e);let c,u;if(a(n),a(o),o!==n)if((n%=Mw)<0&&(n+=Mw),(o%=Mw)<0&&(o+=Mw),oo;++u,c-=Aw)a(c);else for(c=n-n%Aw+Aw,u=0;u<4&&c1e-14?(u=a*a+c*i,u>=0&&(u=Math.sqrt(u),l=(-a+u)/i,s=(-a-u)/i)):l=.5*c/a,0g)return!1;f>b&&(b=f)}else if(d>0){if(f0&&(t.globalAlpha=r,t.fillStyle=eC(t,e,e.fill),!0)}var nC=[];function oC(t,e,r){var n=null!=(n=e.strokeWidth)?n:1;return!(n<=0)&&((r*=null==e.strokeOpacity?1:e.strokeOpacity)>0&&(t.globalAlpha=r,t.strokeStyle=eC(t,e,e.stroke),t.lineWidth=n,t.lineCap=e.strokeCap||"butt",t.lineJoin=e.strokeJoin||"miter",t.miterLimit=e.strokeMiterLimit||10,t.setLineDash&&(t.setLineDash(e.strokeDash||nC),t.lineDashOffset=e.strokeDashOffset||0),!0))}function iC(t,e){return t.zindex-e.zindex||t.index-e.index}function aC(t){if(!t.zdirty)return t.zitems;var e,r,n,o=t.items,i=[];for(r=0,n=o.length;r=0;)if(r=e(o[n]))return r;if(o===i)for(n=(o=t.items).length;--n>=0;)if(!o[n].zindex&&(r=e(o[n])))return r;return null}function lC(t){return function(e,r,n){cC(r,(r=>{n&&!n.intersects(r.bounds)||dC(t,e,r,r)}))}}function sC(t){return function(e,r,n){!r.items.length||n&&!n.intersects(r.bounds)||dC(t,e,r.items[0],r.items)}}function dC(t,e,r,n){var o=null==r.opacity?1:r.opacity;0!==o&&(t(e,n)||(Q_(e,r),r.fill&&rC(e,r,o)&&e.fill(),r.stroke&&oC(e,r,o)&&e.stroke()))}function hC(t){return t=t||$a,function(e,r,n,o,i,a){return n*=e.pixelRatio,o*=e.pixelRatio,uC(r,(r=>{const c=r.bounds;if((!c||c.contains(i,a))&&c)return t(e,r,n,o,i,a)?r:void 0}))}}function fC(t,e){return function(r,n,o,i){var a,c,u=Array.isArray(n)?n[0]:n,l=null==e?u.fill:e,s=u.stroke&&r.isPointInStroke;return s&&(a=u.strokeWidth,c=u.strokeCap,r.lineWidth=null!=a?a:1,r.lineCap=null!=c?c:"butt"),!t(r,n)&&(l&&r.isPointInPath(o,i)||s&&r.isPointInStroke(o,i))}}function pC(t){return hC(fC(t))}function bC(t,e){return"translate("+t+","+e+")"}function gC(t){return"rotate("+t+")"}function mC(t){return bC(t.x||0,t.y||0)}function vC(t,e,r){function n(t,r){var n=r.x||0,o=r.y||0,i=r.angle||0;t.translate(n,o),i&&t.rotate(i*=Sw),t.beginPath(),e(t,r),i&&t.rotate(-i),t.translate(-n,-o)}return{type:t,tag:"path",nested:!1,attr:function(t,r){t("transform",function(t){return bC(t.x||0,t.y||0)+(t.angle?" "+gC(t.angle):"")}(r)),t("d",e(null,r))},bound:function(t,r){return e(I_(t,r.angle),r),w_(t,r).translate(r.x||0,r.y||0)},draw:lC(n),pick:pC(n),isect:r||G_(n)}}var yC=vC("arc",(function(t,e){return o_.context(t)(e)}));function xC(t,e,r){function n(t,r){t.beginPath(),e(t,r)}const o=fC(n);return{type:t,tag:"path",nested:!0,attr:function(t,r){var n=r.mark.items;n.length&&t("d",e(null,n))},bound:function(t,r){var n=r.items;return 0===n.length?t:(e(I_(t),n),w_(t,n[0]))},draw:sC(n),pick:function(t,e,r,n,i,a){var c=e.items,u=e.bounds;return!c||!c.length||u&&!u.contains(i,a)?null:(r*=t.pixelRatio,n*=t.pixelRatio,o(t,c,r,n)?c[0]:null)},isect:$_,tip:r}}var kC=xC("area",(function(t,e){const r=e[0],n=r.interpolate||"linear";return("horizontal"===r.orient?a_:i_).curve(ww(n,r.orient,r.tension)).context(t)(e)}),(function(t,e){for(var r,n,o="horizontal"===t[0].orient?e[1]:e[0],i="horizontal"===t[0].orient?"y":"x",a=t.length,c=1/0;--a>=0;)!1!==t[a].defined&&(n=Math.abs(t[a][i]-o)).5&&e<1.5?.5-Math.abs(e-1):0}function CC(t,e){const r=_C(e);t("d",h_(null,e,r,r))}function OC(t,e,r,n){const o=_C(e);t.beginPath(),h_(t,e,(r||0)+o,(n||0)+o)}const EC=fC(OC),DC=fC(OC,!1),jC=fC(OC,!0);var SC={type:"group",tag:"g",nested:!1,attr:function(t,e){t("transform",mC(e))},bound:function(t,e){if(!e.clip&&e.items){const r=e.items,n=r.length;for(let e=0;e{const n=e.x||0,o=e.y||0,i=e.strokeForeground,a=null==e.opacity?1:e.opacity;(e.stroke||e.fill)&&a&&(OC(t,e,n,o),Q_(t,e),e.fill&&rC(t,e,a)&&t.fill(),e.stroke&&!i&&oC(t,e,a)&&t.stroke()),t.save(),t.translate(n,o),e.clip&&wC(t,e),r&&r.translate(-n,-o),cC(e,(e=>{this.draw(t,e,r)})),r&&r.translate(n,o),t.restore(),i&&e.stroke&&a&&(OC(t,e,n,o),Q_(t,e),oC(t,e,a)&&t.stroke())}))},pick:function(t,e,r,n,o,i){if(e.bounds&&!e.bounds.contains(o,i)||!e.items)return null;const a=r*t.pixelRatio,c=n*t.pixelRatio;return uC(e,(u=>{let l,s,d;const h=u.bounds;if(h&&!h.contains(o,i))return;s=u.x||0,d=u.y||0;const f=s+(u.width||0),p=d+(u.height||0),b=u.clip;if(b&&(of||ip))return;if(t.save(),t.translate(s,d),s=o-s,d=i-d,b&&d_(u)&&!jC(t,u,a,c))return t.restore(),null;const g=u.strokeForeground,m=!1!==e.interactive;return m&&g&&u.stroke&&DC(t,u,a,c)?(t.restore(),u):(l=uC(u,(t=>function(t,e,r){return(!1!==t.interactive||"group"===t.marktype)&&t.bounds&&t.bounds.contains(e,r)}(t,s,d)?this.pick(t,r,n,s,d):null)),!l&&m&&(u.fill||!g&&u.stroke)&&EC(t,u,a,c)&&(l=u),t.restore(),l||null)}))},isect:Y_,content:function(t,e,r){t("clip-path",e.clip?b_(r,e,e):null)},background:function(t,e){t("class","background"),t("aria-hidden",!0),CC(t,e)},foreground:function(t,e){t("class","foreground"),t("aria-hidden",!0),e.strokeForeground?CC(t,e):t("d","")}},AC={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1"};function MC(t,e){var r=t.image;return(!r||t.url&&t.url!==r.url)&&(r={complete:!1,width:0,height:0},e.loadImage(t.url).then((e=>{t.image=e,t.image.url=t.url}))),r}function NC(t,e){return null!=t.width?t.width:e&&e.width?!1!==t.aspect&&t.height?t.height*e.width/e.height:e.width:0}function zC(t,e){return null!=t.height?t.height:e&&e.height?!1!==t.aspect&&t.width?t.width*e.height/e.width:e.height:0}function PC(t,e){return"center"===t?e/2:"right"===t?e:0}function FC(t,e){return"middle"===t?e/2:"bottom"===t?e:0}var LC={type:"image",tag:"image",nested:!1,attr:function(t,e,r){const n=MC(e,r),o=NC(e,n),i=zC(e,n),a=(e.x||0)-PC(e.align,o),c=(e.y||0)-FC(e.baseline,i);t("href",!n.src&&n.toDataURL?n.toDataURL():n.src||"",AC["xmlns:xlink"],"xlink:href"),t("transform",bC(a,c)),t("width",o),t("height",i),t("preserveAspectRatio",!1===e.aspect?"none":"xMidYMid")},bound:function(t,e){const r=e.image,n=NC(e,r),o=zC(e,r),i=(e.x||0)-PC(e.align,n),a=(e.y||0)-FC(e.baseline,o);return t.set(i,a,i+n,a+o)},draw:function(t,e,r){cC(e,(e=>{if(r&&!r.intersects(e.bounds))return;const n=MC(e,this);let o=NC(e,n),i=zC(e,n);if(0===o||0===i)return;let a,c,u,l,s=(e.x||0)-PC(e.align,o),d=(e.y||0)-FC(e.baseline,i);!1!==e.aspect&&(c=n.width/n.height,u=e.width/e.height,c==c&&u==u&&c!==u&&(u=0;)if(!1!==t[i].defined&&(r=t[i].x-e[0])*r+(n=t[i].y-e[1])*n{if(!r||r.intersects(e.bounds)){var n=null==e.opacity?1:e.opacity;n&&qC(t,e,n)&&(Q_(t,e),t.stroke())}}))},pick:hC((function(t,e,r,n){return!!t.isPointInStroke&&(qC(t,e,1)&&t.isPointInStroke(r,n))})),isect:X_},WC=vC("shape",(function(t,e){return(e.mark.shape||e.shape).context(t)(e)})),VC=vC("symbol",(function(t,e){return l_.context(t)(e)}),$_);const ZC=nu();var GC={height:KC,measureWidth:JC,estimateWidth:YC,width:YC,canvas:$C};function $C(t){GC.width=t&&V_?JC:YC}function YC(t,e){return XC(nO(t,e),KC(t))}function XC(t,e){return~~(.8*t.length*e)}function JC(t,e){return KC(t)<=0||!(e=nO(t,e))?0:QC(e,iO(t))}function QC(t,e){const r="(".concat(e,") ").concat(t);let n=ZC.get(r);return void 0===n&&(V_.font=e,n=V_.measureText(t).width,ZC.set(r,n)),n}function KC(t){return null!=t.fontSize?+t.fontSize||0:11}function tO(t){return null!=t.lineHeight?t.lineHeight:KC(t)+2}function eO(t){return e=t.lineBreak&&t.text&&!nc(t.text)?t.text.split(t.lineBreak):t.text,nc(e)?e.length>1?e:e[0]:e;var e}function rO(t){const e=eO(t);return(nc(e)?e.length-1:0)*tO(t)}function nO(t,e){const r=null==e?"":(e+"").trim();return t.limit>0&&r.length?function(t,e){var r=+t.limit,n=function(t){if(GC.width===JC){const e=iO(t);return t=>QC(t,e)}{const e=KC(t);return t=>XC(t,e)}}(t);if(n(e)>>1,n(e.slice(o))>r?c=o+1:u=o;return i+e.slice(c)}for(;c>>1),n(e.slice(0,o))Math.max(t,GC.width(e,r))),0)):n=GC.width(e,d),"center"===i?l-=n/2:"right"===i&&(l-=n),t.set(l+=c,s+=u,l+n,s+o),e.angle&&!r)t.rotate(e.angle*Sw,c,u);else if(2===r)return t.rotatedPoints(e.angle*Sw,c,u);return t}var dO={type:"text",tag:"text",nested:!1,attr:function(t,e){var r,n=e.dx||0,o=(e.dy||0)+aO(e),i=lO(e),a=i.x1,c=i.y1,u=e.angle||0;t("text-anchor",cO[e.align]||"start"),u?(r=bC(a,c)+" "+gC(u),(n||o)&&(r+=" "+bC(n,o))):r=bC(a+n,c+o),t("transform",r)},bound:sO,draw:function(t,e,r){cC(e,(e=>{var n,o,i,a,c,u,l,s=null==e.opacity?1:e.opacity;if(!(r&&!r.intersects(e.bounds)||0===s||e.fontSize<=0||null==e.text||0===e.text.length)){if(t.font=iO(e),t.textAlign=e.align||"left",o=(n=lO(e)).x1,i=n.y1,e.angle&&(t.save(),t.translate(o,i),t.rotate(e.angle*Sw),o=i=0),o+=e.dx||0,i+=(e.dy||0)+aO(e),u=eO(e),Q_(t,e),nc(u))for(c=tO(e),a=0;a=0;)if(!1!==t[o].defined&&(r=t[o].x-e[0])*r+(n=t[o].y-e[1])*n<(r=t[o].size||1)*r)return t[o];return null})),fO={arc:yC,area:kC,group:SC,image:LC,line:TC,path:BC,rect:UC,rule:HC,shape:WC,symbol:VC,text:dO,trail:hO};function pO(t,e,r){var n=fO[t.mark.marktype],o=e||n.bound;return n.nested&&(t=t.mark),o(t.bounds||(t.bounds=new g_),t,r)}var bO={mark:null};function gO(t,e,r){var n,o,i,a,c=fO[t.marktype],u=c.bound,l=t.items,s=l&&l.length;if(c.nested)return s?i=l[0]:(bO.mark=t,i=bO),a=pO(i,u,r),e=e&&e.union(a)||a;if(e=e||t.bounds&&t.bounds.clear()||new g_,s)for(n=0,o=l.length;ne;)t.removeChild(r[--n]);return t}function DO(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.name?" "+t.name:"")}function jO(t,e){const r=e.getBoundingClientRect();return[t.clientX-r.left-(e.clientLeft||0),t.clientY-r.top-(e.clientTop||0)]}function SO(t,e){this._active=null,this._handlers={},this._loader=t||Wf(),this._tooltip=e||AO}function AO(t,e,r,n){t.element().setAttribute("title",n||"")}function MO(t){this._el=null,this._bgcolor=null,this._loader=new y_(t)}kO.prototype={toJSON(t){return vO(this.root,t||0)},mark(t,e,r){const n=wO(t,e=e||this.root.items[0]);return e.items[r]=n,n.zindex&&(n.group.zdirty=!0),n}},SO.prototype={initialize(t,e,r){return this._el=t,this._obj=r||null,this.origin(e)},element(){return this._el},canvas(){return this._el&&this._el.firstChild},origin(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()},scene(t){return arguments.length?(this._scene=t,this):this._scene},on(){},off(){},_handlerIndex(t,e,r){for(let n=t?t.length:0;--n>=0;)if(t[n].type===e&&(!r||t[n].handler===r))return n;return-1},handlers(t){const e=this._handlers,r=[];if(t)r.push(...e[this.eventName(t)]);else for(const n in e)r.push(...e[n]);return r},eventName(t){const e=t.indexOf(".");return e<0?t:t.slice(0,e)},handleHref(t,e,r){this._loader.sanitize(r,{context:"href"}).then((e=>{const r=new MouseEvent(t.type,t),n=_O(null,"a");for(const t in e)n.setAttribute(t,e[t]);n.dispatchEvent(r)})).catch((()=>{}))},handleTooltip(t,e,r){if(e&&null!=e.tooltip){e=function(t,e,r,n){var o,i,a=t&&t.mark;if(a&&(o=fO[a.marktype]).tip){for((i=jO(e,r))[0]-=n[0],i[1]-=n[1];t=t.mark.group;)i[0]-=t.x||0,i[1]-=t.y||0;t=o.tip(a.items,i)}return t}(e,t,this.canvas(),this._origin);const n=r&&e&&e.tooltip||null;this._tooltip.call(this._obj,this,t,e,n)}},getItemBoundingClientRect(t){const e=this.canvas();if(!e)return;const r=e.getBoundingClientRect(),n=this._origin,o=t.bounds,i=o.width(),a=o.height();let c=o.x1+n[0]+r.left,u=o.y1+n[1]+r.top;for(;t.mark&&(t=t.mark.group);)c+=t.x||0,u+=t.y||0;return{x:c,y:u,width:i,height:a,left:c,top:u,right:c+i,bottom:u+a}}},MO.prototype={initialize(t,e,r,n,o){return this._el=t,this.resize(e,r,n,o)},element(){return this._el},canvas(){return this._el&&this._el.firstChild},background(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},resize(t,e,r,n){return this._width=t,this._height=e,this._origin=r||[0,0],this._scale=n||1,this},dirty(){},render(t){const e=this;return e._call=function(){e._render(t)},e._call(),e._call=null,e},_render(){},renderAsync(t){const e=this.render(t);return this._ready?this._ready.then((()=>e)):Promise.resolve(e)},_load(t,e){var r=this,n=r._loader[t](e);if(!r._ready){const t=r._call;r._ready=r._loader.ready().then((e=>{e&&t(),r._ready=null}))}return n},sanitizeURL(t){return this._load("sanitizeURL",t)},loadImage(t){return this._load("loadImage",t)}};const NO="dragenter",zO="dragleave",PO="dragover",FO="mousedown",LO="mousemove",TO="mouseout",RO="mouseover",BO="click",IO="mousewheel",UO="touchstart",qO="touchmove",HO="touchend",WO=LO,VO=TO,ZO=BO;function GO(t,e){SO.call(this,t,e),this._down=null,this._touch=null,this._first=!0,this._events={}}function $O(t,e){(t=>t===UO||t===qO||t===HO?[UO,qO,HO]:[t])(e).forEach((e=>function(t,e){const r=t.canvas();r&&!t._events[e]&&(t._events[e]=1,r.addEventListener(e,t[e]?r=>t[e](r):r=>t.fire(e,r)))}(t,e)))}function YO(t,e,r){return function(n){const o=this._active,i=this.pickEvent(n);i===o||(o&&o.exit||this.fire(r,n),this._active=i,this.fire(e,n)),this.fire(t,n)}}function XO(t){return function(e){this.fire(t,e),this._active=null}}Gc(GO,SO,{initialize(t,e,r){return this._canvas=t&&CO(t,"canvas"),[BO,FO,LO,TO,zO].forEach((t=>$O(this,t))),SO.prototype.initialize.call(this,t,e,r)},canvas(){return this._canvas},context(){return this._canvas.getContext("2d")},events:["keydown","keypress","keyup",NO,zO,PO,FO,"mouseup",LO,TO,RO,BO,"dblclick","wheel",IO,UO,qO,HO],DOMMouseScroll(t){this.fire(IO,t)},mousemove:YO(LO,RO,TO),dragover:YO(PO,NO,zO),mouseout:XO(TO),dragleave:XO(zO),mousedown(t){this._down=this._active,this.fire(FO,t)},click(t){this._down===this._active&&(this.fire(BO,t),this._down=null)},touchstart(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire(UO,t,!0)},touchmove(t){this.fire(qO,t,!0)},touchend(t){this.fire(HO,t,!0),this._touch=null},fire(t,e,r){const n=r?this._touch:this._active,o=this._handlers[t];if(e.vegaType=t,t===ZO&&n&&n.href?this.handleHref(e,n,n.href):t!==WO&&t!==VO||this.handleTooltip(e,n,t!==VO),o)for(let i=0,a=o.length;i=0&&n.splice(o,1),this},pickEvent(t){const e=jO(t,this._canvas),r=this._origin;return this.pick(this._scene,e[0],e[1],e[0]-r[0],e[1]-r[1])},pick(t,e,r,n,o){const i=this.context();return fO[t.marktype].pick.call(this,i,t,e,r,n,o)}});var JO="undefined"!=typeof window&&window.devicePixelRatio||1;function QO(t){MO.call(this,t),this._options={},this._redraw=!1,this._dirty=new g_,this._tempb=new g_}const KO=MO.prototype;function tE(t,e){SO.call(this,t,e);const r=this;r._hrefHandler=eE(r,((t,e)=>{e&&e.href&&r.handleHref(t,e,e.href)})),r._tooltipHandler=eE(r,((t,e)=>{r.handleTooltip(t,e,t.type!==VO)}))}Gc(QO,MO,{initialize(t,e,r,n,o,i){return this._options=i||{},this._canvas=this._options.externalContext?null:dv(1,1,this._options.type),t&&this._canvas&&(EO(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),KO.initialize.call(this,t,e,r,n,o)},resize(t,e,r,n){if(KO.resize.call(this,t,e,r,n),this._canvas)!function(t,e,r,n,o,i){const a="undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&null!=t.parentNode,c=t.getContext("2d"),u=a?JO:o;t.width=e*u,t.height=r*u;for(const l in i)c[l]=i[l];a&&1!==u&&(t.style.width=e+"px",t.style.height=r+"px"),c.pixelRatio=u,c.setTransform(u,0,0,u,u*n[0],u*n[1])}(this._canvas,this._width,this._height,this._origin,this._scale,this._options.context);else{const t=this._options.externalContext;t||Ua("CanvasRenderer is missing a valid canvas or context"),t.scale(this._scale,this._scale),t.translate(this._origin[0],this._origin[1])}return this._redraw=!0,this},canvas(){return this._canvas},context(){return this._options.externalContext||(this._canvas?this._canvas.getContext("2d"):null)},dirty(t){const e=this._tempb.clear().union(t.bounds);let r=t.mark.group;for(;r;)e.translate(r.x||0,r.y||0),r=r.mark.group;this._dirty.union(e)},_render(t){const e=this.context(),r=this._origin,n=this._width,o=this._height,i=this._dirty,a=((t,e,r)=>(new g_).set(0,0,e,r).translate(-t[0],-t[1]))(r,n,o);e.save();const c=this._redraw||i.empty()?(this._redraw=!1,a.expand(1)):function(t,e,r){return e.expand(1).round(),t.pixelRatio%1&&e.scale(t.pixelRatio).round().scale(1/t.pixelRatio),e.translate(-r[0]%1,-r[1]%1),t.beginPath(),t.rect(e.x1,e.y1,e.width(),e.height()),t.clip(),e}(e,a.intersect(i),r);return this.clear(-r[0],-r[1],n,o),this.draw(e,t,c),e.restore(),i.clear(),this},draw(t,e,r){const n=fO[e.marktype];e.clip&&function(t,e){var r=e.clip;t.save(),Ac(r)?(t.beginPath(),r(t),t.clip()):wC(t,e.group)}(t,e),n.draw.call(this,t,e,r),e.clip&&t.restore()},clear(t,e,r,n){const o=this._options,i=this.context();"pdf"===o.type||o.externalContext||i.clearRect(t,e,r,n),null!=this._bgcolor&&(i.fillStyle=this._bgcolor,i.fillRect(t,e,r,n))}});const eE=(t,e)=>r=>{let n=r.target.__data__;n=Array.isArray(n)?n[0]:n,r.vegaType=r.type,e.call(t._obj,r,n)};Gc(tE,SO,{initialize(t,e,r){let n=this._svg;return n&&(n.removeEventListener(ZO,this._hrefHandler),n.removeEventListener(WO,this._tooltipHandler),n.removeEventListener(VO,this._tooltipHandler)),this._svg=n=t&&CO(t,"svg"),n&&(n.addEventListener(ZO,this._hrefHandler),n.addEventListener(WO,this._tooltipHandler),n.addEventListener(VO,this._tooltipHandler)),SO.prototype.initialize.call(this,t,e,r)},canvas(){return this._svg},on(t,e){const r=this.eventName(t),n=this._handlers;if(this._handlerIndex(n[r],t,e)<0){const o={type:t,handler:e,listener:eE(this,e)};(n[r]||(n[r]=[])).push(o),this._svg&&this._svg.addEventListener(r,o.listener)}return this},off(t,e){const r=this.eventName(t),n=this._handlers[r],o=this._handlerIndex(n,t,e);return o>=0&&(this._svg&&this._svg.removeEventListener(r,n[o].listener),n.splice(o,1)),this}});const rE="aria-hidden",nE="aria-label",oE="role",iE="aria-roledescription",aE="graphics-object",cE="graphics-symbol",uE=(t,e,r)=>({[oE]:t,[iE]:e,[nE]:r||void 0}),lE=fu(["axis-domain","axis-grid","axis-label","axis-tick","axis-title","legend-band","legend-entry","legend-gradient","legend-label","legend-title","legend-symbol","title"]),sE={axis:{desc:"axis",caption:function(t){const e=t.datum,r=t.orient,n=e.title?bE(t):null,o=t.context,i=o.scales[e.scale].value,a=o.dataflow.locale(),c=i.type,u="left"===r||"right"===r?"Y":"X";return"".concat(u,"-axis")+(n?" titled '".concat(n,"'"):"")+" for a ".concat(Nk(c)?"discrete":c," scale")+" with ".concat(pw(a,i,t))}},legend:{desc:"legend",caption:function(t){const e=t.datum,r=e.title?bE(t):null,n="".concat(e.type||""," legend").trim(),o=e.scales,i=Object.keys(o),a=t.context,c=a.scales[o[i[0]]].value,u=a.dataflow.locale();return l=n,(l.length?l[0].toUpperCase()+l.slice(1):l)+(r?" titled '".concat(r,"'"):"")+" for ".concat(function(t){return t=t.map((t=>t+("fill"===t||"stroke"===t?" color":""))),t.length<2?t[0]:t.slice(0,-1).join(", ")+" and "+lc(t)}(i))+" with ".concat(pw(u,c,t));var l}},"title-text":{desc:"title",caption:t=>"Title text '".concat(pE(t),"'")},"title-subtitle":{desc:"subtitle",caption:t=>"Subtitle text '".concat(pE(t),"'")}},dE={ariaRole:oE,ariaRoleDescription:iE,description:nE};function hE(t,e){const r=!1===e.aria;if(t(rE,r||void 0),r||null==e.description)for(const n in dE)t(dE[n],void 0);else{const r=e.mark.marktype;t(nE,e.description),t(oE,e.ariaRole||("group"===r?aE:cE)),t(iE,e.ariaRoleDescription||"".concat(r," mark"))}}function fE(t){return!1===t.aria?{[rE]:!0}:lE[t.role]?null:sE[t.role]?function(t,e){try{const r=t.items[0],n=e.caption||(()=>"");return uE(e.role||cE,e.desc,r.description||n(r))}catch(r){return null}}(t,sE[t.role]):function(t){const e=t.marktype,r="group"===e||"text"===e||t.items.some((t=>null!=t.description&&!1!==t.aria));return uE(r?aE:cE,"".concat(e," mark container"),t.description)}(t)}function pE(t){return jc(t.text).join(" ")}function bE(t){try{return jc(lc(t.items).items[0].text).join(" ")}catch(e){return null}}const gE=t=>(t+"").replace(/&/g,"&").replace(//g,">");function mE(){let t="",e="",r="";const n=[],o=()=>e=r="",i=(t,r)=>(null!=r&&(e+=" ".concat(t,'="').concat(gE(r).replace(/"/g,""").replace(/\t/g," ").replace(/\n/g," ").replace(/\r/g," "),'"')),a),a={open(c){(i=>{e&&(t+="".concat(e,">").concat(r),o()),n.push(i)})(c),e="<"+c;for(var u=arguments.length,l=new Array(u>1?u-1:0),s=1;s".concat(r,""):"/>"):""),o(),a},attr:i,text:t=>(r+=gE(t),a),toString:()=>t};return a}const vE=t=>yE(mE(),t)+"";function yE(t,e){if(t.open(e.tagName),e.hasAttributes()){const r=e.attributes,n=r.length;for(let e=0;e1&&t.previousSibling!=e}(a,r))&&e.insertBefore(a,r?r.nextSibling:e.firstChild),a}Gc(OE,MO,{initialize(t,e,r,n,o){return this._defs={},this._clearDefs(),t&&(this._svg=OO(t,0,"svg",CE),this._svg.setAttributeNS(_E,"xmlns",CE),this._svg.setAttributeNS(_E,"xmlns:xlink",AC["xmlns:xlink"]),this._svg.setAttribute("version",AC.version),this._svg.setAttribute("class","marks"),EO(t,1),this._root=OO(this._svg,0,"g",CE),LE(this._root,wE),EO(this._svg,1)),this.background(this._bgcolor),EE.initialize.call(this,t,e,r,n,o)},background(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),EE.background.apply(this,arguments)},resize(t,e,r,n){return EE.resize.call(this,t,e,r,n),this._svg&&(LE(this._svg,{width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 ".concat(this._width," ").concat(this._height)}),this._root.setAttribute("transform","translate(".concat(this._origin,")"))),this._dirty=[],this},canvas(){return this._svg},svg(){const t=this._svg,e=this._bgcolor;if(!t)return null;let r;e&&(t.removeAttribute("style"),r=OO(t,0,"rect",CE),LE(r,{width:this._width,height:this._height,fill:e}));const n=vE(t);return e&&(t.removeChild(r),this._svg.style.setProperty("background-color",e)),n},_render(t){return this._dirtyCheck()&&(this._dirtyAll&&this._clearDefs(),this.mark(this._root,t),EO(this._root,1)),this.defs(),this._dirty=[],++this._dirtyID,this},dirty(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.push(t))},isDirty(t){return this._dirtyAll||!t._svg||!t._svg.ownerSVGElement||t.dirty===this._dirtyID},_dirtyCheck(){this._dirtyAll=!0;const t=this._dirty;if(!t.length||!this._dirtyID)return!0;const e=++this._dirtyID;let r,n,o,i,a,c,u;for(a=0,c=t.length;a{t.dirty=e}))),n.zdirty||(r.exit?(i.nested&&n.items.length?(u=n.items[0],u._svg&&this._update(i,u._svg,u)):r._svg&&(u=r._svg.parentNode,u&&u.removeChild(r._svg)),r._svg=null):(r=i.nested?n.items[0]:r,r._update!==e&&(r._svg&&r._svg.ownerSVGElement?this._update(i,r._svg,r):(this._dirtyAll=!1,DE(r,e)),r._update=e)));return!this._dirtyAll},mark(t,e,r){if(!this.isDirty(e))return e._svg;const n=this._svg,o=fO[e.marktype],i=!1===e.interactive?"none":null,a="g"===o.tag,c=AE(e,t,r,"g",n);c.setAttribute("class",DO(e));const u=fE(e);for(const h in u)TE(c,h,u[h]);a||TE(c,"pointer-events",i),TE(c,"clip-path",e.clip?b_(this,e,e.group):null);let l=null,s=0;const d=t=>{const e=this.isDirty(t),r=AE(t,c,l,o.tag,n);e&&(this._update(o,r,t),a&&function(t,e,r){e=e.lastChild.previousSibling;let n,o=0;cC(r,(r=>{n=t.mark(e,r,n),++o})),EO(e,1+o)}(this,r,t)),l=r,++s};return o.nested?e.items.length&&d(e.items[0]):cC(e,d),EO(c,s),c},_update(t,e,r){ME=e,NE=e.__values__,hE(PE,r),t.attr(PE,r,this);const n=zE[t.type];n&&n.call(this,t,e,r),ME&&this.style(ME,r)},style(t,e){if(null!=e){for(const r in xE){let n="font"===r?oO(e):e[r];if(n===NE[r])continue;const o=xE[r];null==n?t.removeAttribute(o):(mw(n)&&(n=vw(n,this._defs.gradient,RE())),t.setAttribute(o,n+"")),NE[r]=n}for(const r in kE)FE(t,kE[r],e[r])}},defs(){const t=this._svg,e=this._defs;let r=e.el,n=0;for(const o in e.gradient)r||(e.el=r=OO(t,1,"defs",CE)),n=jE(r,e.gradient[o],n);for(const o in e.clipping)r||(e.el=r=OO(t,1,"defs",CE)),n=SE(r,e.clipping[o],n);r&&(0===n?(t.removeChild(r),e.el=null):EO(r,n))},_clearDefs(){const t=this._defs;t.gradient={},t.clipping={}}});let ME=null,NE=null;const zE={group(t,e,r){const n=ME=e.childNodes[2];NE=n.__values__,t.foreground(PE,r,this),NE=e.__values__,ME=e.childNodes[1],t.content(PE,r,this);const o=ME=e.childNodes[0];t.background(PE,r,this);const i=!1===r.mark.interactive?"none":null;if(i!==NE.events&&(TE(n,"pointer-events",i),TE(o,"pointer-events",i),NE.events=i),r.strokeForeground&&r.stroke){const t=r.fill;TE(n,"display",null),this.style(o,r),TE(o,"stroke",null),t&&(r.fill=null),NE=n.__values__,this.style(n,r),t&&(r.fill=t),ME=null}else TE(n,"display","none")},image(t,e,r){!1===r.smooth?(FE(e,"image-rendering","optimizeSpeed"),FE(e,"image-rendering","pixelated")):FE(e,"image-rendering",null)},text(t,e,r){const n=eO(r);let o,i,a,c;nc(n)?(i=n.map((t=>nO(r,t))),o=i.join("\n"),o!==NE.text&&(EO(e,0),a=e.ownerDocument,c=tO(r),i.forEach(((t,n)=>{const o=_O(a,"tspan",CE);o.__data__=r,o.textContent=t,n&&(o.setAttribute("x",0),o.setAttribute("dy",c)),e.appendChild(o)})),NE.text=o)):(i=nO(r,n),i!==NE.text&&(e.textContent=i,NE.text=i)),TE(e,"font-family",oO(r)),TE(e,"font-size",KC(r)+"px"),TE(e,"font-style",r.fontStyle),TE(e,"font-variant",r.fontVariant),TE(e,"font-weight",r.fontWeight)}};function PE(t,e,r){e!==NE[t]&&(r?function(t,e,r,n){null!=r?t.setAttributeNS(n,e,r):t.removeAttributeNS(n,e)}(ME,t,e,r):TE(ME,t,e),NE[t]=e)}function FE(t,e,r){r!==NE[e]&&(null==r?t.style.removeProperty(e):t.style.setProperty(e,r+""),NE[e]=r)}function LE(t,e){for(const r in e)TE(t,r,e[r])}function TE(t,e,r){null!=r?t.setAttribute(e,r):t.removeAttribute(e)}function RE(){let t;return"undefined"==typeof window?"":(t=window.location).hash?t.href.slice(0,-t.hash.length):t.href}function BE(t){MO.call(this,t),this._text=null,this._defs={gradient:{},clipping:{}}}Gc(BE,MO,{svg(){return this._text},_render(t){const e=mE();e.open("svg",Bc({},AC,{class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 ".concat(this._width," ").concat(this._height)}));const r=this._bgcolor;return r&&"transparent"!==r&&"none"!==r&&e.open("rect",{width:this._width,height:this._height,fill:r}).close(),e.open("g",wE,{transform:"translate("+this._origin+")"}),this.mark(e,t),e.close(),this.defs(e),this._text=e.close()+"",this},mark(t,e){const r=fO[e.marktype],n=r.tag,o=[hE,r.attr];t.open("g",{class:DO(e),"clip-path":e.clip?b_(this,e,e.group):null},fE(e),{"pointer-events":"g"!==n&&!1===e.interactive?"none":null});const i=i=>{const a=this.href(i);if(a&&t.open("a",a),t.open(n,this.attr(e,i,o,"g"!==n?n:null)),"text"===n){const e=eO(i);if(nc(e)){const r={x:0,dy:tO(i)};for(let n=0;nthis.mark(t,e))),t.close(),n&&a?(o&&(i.fill=null),i.stroke=a,t.open("path",this.attr(e,i,r.foreground,"bgrect")).close(),o&&(i.fill=o)):t.open("path",this.attr(e,i,r.foreground,"bgfore")).close()}t.close(),a&&t.close()};return r.nested?e.items&&e.items.length&&i(e.items[0]):cC(e,i),t.close()},href(t){const e=t.href;let r;if(e){if(r=this._hrefs&&this._hrefs[e])return r;this.sanitizeURL(e).then((t=>{t["xlink:href"]=t.href,t.href=null,(this._hrefs||(this._hrefs={}))[e]=t}))}return null},attr(t,e,r,n){const o={},i=(t,e,r,n)=>{o[n||t]=e};return Array.isArray(r)?r.forEach((t=>t(i,e,this))):r(i,e,this),n&&function(t,e,r,n,o){let i;if(null==e)return t;"bgrect"===n&&!1===r.interactive&&(t["pointer-events"]="none");if("bgfore"===n&&(!1===r.interactive&&(t["pointer-events"]="none"),t.display="none",null!==e.fill))return t;"image"===n&&!1===e.smooth&&(i=["image-rendering: optimizeSpeed;","image-rendering: pixelated;"]);"text"===n&&(t["font-family"]=oO(e),t["font-size"]=KC(e)+"px",t["font-style"]=e.fontStyle,t["font-variant"]=e.fontVariant,t["font-weight"]=e.fontWeight);for(const a in xE){let r=e[a];const n=xE[a];("transparent"!==r||"fill"!==n&&"stroke"!==n)&&null!=r&&(mw(r)&&(r=vw(r,o.gradient,"")),t[n]=r)}for(const a in kE){const t=e[a];null!=t&&(i=i||[],i.push("".concat(kE[a],": ").concat(t,";")))}i&&(t.style=i.join(" "))}(o,e,t,n,this._defs),o},defs(t){const e=this._defs.gradient,r=this._defs.clipping;if(0!==Object.keys(e).length+Object.keys(r).length){t.open("defs");for(const r in e){const n=e[r],o=n.stops;"radial"===n.gradient?(t.open("pattern",{id:gw+r,viewBox:"0,0,1,1",width:"100%",height:"100%",preserveAspectRatio:"xMidYMid slice"}),t.open("rect",{width:"1",height:"1",fill:"url(#"+r+")"}).close(),t.close(),t.open("radialGradient",{id:r,fx:n.x1,fy:n.y1,fr:n.r1,cx:n.x2,cy:n.y2,r:n.r2})):t.open("linearGradient",{id:r,x1:n.x1,x2:n.x2,y1:n.y1,y2:n.y2});for(let e=0;e1?(HE[t]=e,this):HE[t]}function VE(t,e,r){const n=[],o=(new g_).union(e),i=t.marktype;return i?ZE(t,o,r,n):"group"===i?GE(t,o,r,n):Ua("Intersect scene must be mark node or group item.")}function ZE(t,e,r,n){if(function(t,e,r){return t.bounds&&e.intersects(t.bounds)&&("group"===t.marktype||!1!==t.interactive&&(!r||r(t)))}(t,e,r)){const o=t.items,i=t.marktype,a=o.length;let c=0;if("group"===i)for(;c=0;n--)if(o[n]!=i[n])return!1;for(n=o.length-1;n>=0;n--)if(!QE(t[r=o[n]],e[r],r))return!1;return typeof t==typeof e}(t,e):t==e)}function KE(t,e){return QE(jw(t),jw(e))}const tD="top",eD="left",rD="right",nD="bottom",oD="top-left",iD="top-right",aD="bottom-left",cD="bottom-right",uD="start",lD="middle",sD="end",dD="x",hD="y",fD="group",pD="axis",bD="title",gD="frame",mD="scope",vD="legend",yD="row-header",xD="row-footer",kD="row-title",wD="column-header",_D="column-footer",CD="column-title",OD="padding",ED="symbol",DD="fit",jD="fit-x",SD="fit-y",AD="pad",MD="none",ND="all",zD="each",PD="flush",FD="column",LD="row";function TD(t){Sp.call(this,null,t)}function RD(t,e,r){return e(t.bounds.clear(),t,r)}Gc(TD,Sp,{transform(t,e){const r=e.dataflow,n=t.mark,o=n.marktype,i=fO[o],a=i.bound;let c,u=n.bounds;if(i.nested)n.items.length&&r.dirty(n.items[0]),u=RD(n,a),n.items.forEach((t=>{t.bounds.clear().union(u)}));else if(o===fD||t.modified())switch(e.visit(e.MOD,(t=>r.dirty(t))),u.clear(),n.items.forEach((t=>u.union(RD(t,a)))),n.role){case pD:case vD:case bD:e.reflow()}else c=e.changed(e.REM),e.visit(e.ADD,(t=>{u.union(RD(t,a))})),e.visit(e.MOD,(t=>{c=c||u.alignsWith(t.bounds),r.dirty(t),u.union(RD(t,a))})),c&&(u.clear(),n.items.forEach((t=>u.union(t.bounds))));return XE(n),e.modifies("bounds")}});const BD=":vega_identifier:";function ID(t){Sp.call(this,0,t)}function UD(t){Sp.call(this,null,t)}function qD(t){Sp.call(this,null,t)}ID.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]},Gc(ID,Sp,{transform(t,e){const r=(o=e.dataflow)._signals[BD]||(o._signals[BD]=o.add(0)),n=t.as;var o;let i=r.value;return e.visit(e.ADD,(t=>t[n]=t[n]||++i)),r.set(this.value=i),e}}),Gc(UD,Sp,{transform(t,e){let r=this.value;r||(r=e.dataflow.scenegraph().mark(t.markdef,function(t){const e=t.groups,r=t.parent;return e&&1===e.size?e.get(Object.keys(e.object)[0]):e&&r?e.lookup(r):null}(t),t.index),r.group.context=t.context,t.context.group||(t.context.group=r.group),r.source=this.source,r.clip=t.clip,r.interactive=t.interactive,this.value=r);const n=r.marktype===fD?v_:m_;return e.visit(e.ADD,(t=>n.call(t,r))),(t.modified("clip")||t.modified("interactive"))&&(r.clip=t.clip,r.interactive=!!t.interactive,r.zdirty=!0,e.reflow()),r.items=e.source,e}});const HD={parity:t=>t.filter(((t,e)=>e%2?t.opacity=0:1)),greedy:(t,e)=>{let r;return t.filter(((t,n)=>n&&WD(r.bounds,t.bounds,e)?t.opacity=0:(r=t,1)))}},WD=(t,e,r)=>r>Math.max(e.x1-t.x2,t.x1-e.x2,e.y1-t.y2,t.y1-e.y2),VD=(t,e)=>{for(var r,n=1,o=t.length,i=t[0].bounds;n{const e=t.bounds;return e.width()>1&&e.height()>1},GD=t=>(t.forEach((t=>t.opacity=1)),t),$D=(t,e)=>t.reflow(e.modified()).modifies("opacity");function YD(t){Sp.call(this,null,t)}Gc(qD,Sp,{transform(t,e){const r=HD[t.method]||HD.parity,n=t.separation||0;let o,i,a=e.materialize(e.SOURCE).source;if(!a||!a.length)return;if(!t.method)return t.modified("method")&&(GD(a),e=$D(e,t)),e;if(a=a.filter(ZD),!a.length)return;if(t.sort&&(a=a.slice().sort(t.sort)),o=GD(a),e=$D(e,t),o.length>=3&&VD(o,n)){do{o=r(o,n)}while(o.length>=3&&VD(o,n));o.length<3&&!lc(a).opacity&&(o.length>1&&(lc(o).opacity=0),lc(a).opacity=1)}t.boundScale&&t.boundTolerance>=0&&(i=((t,e,r)=>{var n=t.range(),o=new g_;return e===tD||e===nD?o.set(n[0],-1/0,n[1],1/0):o.set(-1/0,n[0],1/0,n[1]),o.expand(r||1),t=>o.encloses(t.bounds)})(t.boundScale,t.boundOrient,+t.boundTolerance),a.forEach((t=>{i(t)||(t.opacity=0)})));const c=o[0].mark.bounds.clear();return a.forEach((t=>{t.opacity&&c.union(t.bounds)})),e}}),Gc(YD,Sp,{transform(t,e){const r=e.dataflow;if(e.visit(e.ALL,(t=>r.dirty(t))),e.fields&&e.fields.zindex){const t=e.source&&e.source[0];t&&(t.mark.zdirty=!0)}}});const XD=new g_;function JD(t,e,r){return t[e]===r?0:(t[e]=r,1)}function QD(t){var e=t.items[0].orient;return e===eD||e===rD}function KD(t,e,r,n){var o,i,a=e.items[0],c=a.datum,u=null!=a.translate?a.translate:.5,l=a.orient,s=function(t){let e=+t.grid;return[t.ticks?e++:-1,t.labels?e++:-1,e+ +t.domain]}(c),d=a.range,h=a.offset,f=a.position,p=a.minExtent,b=a.maxExtent,g=c.title&&a.items[s[2]].items[0],m=a.titlePadding,v=a.bounds,y=g&&rO(g),x=0,k=0;switch(XD.clear().union(v),v.clear(),(o=s[0])>-1&&v.union(a.items[o].bounds),(o=s[1])>-1&&v.union(a.items[o].bounds),l){case tD:x=f||0,k=-h,i=Math.max(p,Math.min(b,-v.y1)),v.add(0,-i).add(d,0),g&&tj(t,g,i,m,y,0,-1,v);break;case eD:x=-h,k=f||0,i=Math.max(p,Math.min(b,-v.x1)),v.add(-i,0).add(0,d),g&&tj(t,g,i,m,y,1,-1,v);break;case rD:x=r+h,k=f||0,i=Math.max(p,Math.min(b,v.x2)),v.add(0,0).add(i,d),g&&tj(t,g,i,m,y,1,1,v);break;case nD:x=f||0,k=n+h,i=Math.max(p,Math.min(b,v.y2)),v.add(0,0).add(d,i),g&&tj(t,g,i,m,0,0,1,v);break;default:x=a.x,k=a.y}return w_(v.translate(x,k),a),JD(a,"x",x+u)|JD(a,"y",k+u)&&(a.bounds=XD,t.dirty(a),a.bounds=v,t.dirty(a)),a.mark.bounds.clear().union(v)}function tj(t,e,r,n,o,i,a,c){const u=e.bounds;if(e.auto){const c=a*(r+o+n);let l=0,s=0;t.dirty(e),i?l=(e.x||0)-(e.x=c):s=(e.y||0)-(e.y=c),e.mark.bounds.clear().union(u.translate(-l,-s)),t.dirty(e)}c.union(u)}const ej=(t,e)=>Math.floor(Math.min(t,e)),rj=(t,e)=>Math.ceil(Math.max(t,e));function nj(t){return(new g_).set(0,0,t.width||0,t.height||0)}function oj(t){const e=t.bounds.clone();return e.empty()?e.set(0,0,0,0):e.translate(-(t.x||0),-(t.y||0))}function ij(t,e,r){const n=oc(t)?t[e]:t;return null!=n?n:void 0!==r?r:0}function aj(t){return t<0?Math.ceil(-t):0}function cj(t,e,r){var n,o,i,a,c,u,l,s,d,h,f,p=!r.nodirty,b=r.bounds===PD?nj:oj,g=XD.set(0,0,0,0),m=ij(r.align,FD),v=ij(r.align,LD),y=ij(r.padding,FD),x=ij(r.padding,LD),k=r.columns||e.length,w=k<=0?1:Math.ceil(e.length/k),_=e.length,C=Array(_),O=Array(k),E=0,D=Array(_),j=Array(w),S=0,A=Array(_),M=Array(_),N=Array(_);for(o=0;o1)for(o=0;o<_;++o)(d=(c=m===ND?E:O[o%k])-N[o].x2-e[o].x-A[o])>0&&(A[o]+=d/2);if(v&&ij(r.center,LD)&&1!==k)for(o=0;o<_;++o)(h=(c=v===ND?S:j[~~(o/k)])-N[o].y2-e[o].y-M[o])>0&&(M[o]+=h/2);for(o=0;o<_;++o)g.union(N[o].translate(A[o],M[o]));switch(d=ij(r.anchor,dD),h=ij(r.anchor,hD),ij(r.anchor,FD)){case sD:d-=g.width();break;case lD:d-=g.width()/2}switch(ij(r.anchor,LD)){case sD:h-=g.height();break;case lD:h-=g.height()/2}for(d=Math.round(d),h=Math.round(h),g.clear(),o=0;o<_;++o)e[o].mark.bounds.clear();for(o=0;o<_;++o)(u=e[o]).x+=A[o]+=d,u.y+=M[o]+=h,g.union(u.mark.bounds.union(u.bounds.translate(A[o],M[o]))),p&&t.dirty(u);return g}function uj(t,e,r){var n,o,i,a,c,u,l,s=function(t){var e,r,n=t.items,o=n.length,i=0;const a={marks:[],rowheaders:[],rowfooters:[],colheaders:[],colfooters:[],rowtitle:null,coltitle:null};for(;io&&(t.warn("Grid headers exceed limit: "+o),e=e.slice(0,o)),C+=i,b=0,m=e.length;b=0&&null==(x=r[g]);g-=h);c?(k=null==f?x.x:Math.round(x.bounds.x1+f*x.bounds.width()),w=C):(k=C,w=null==f?x.y:Math.round(x.bounds.y1+f*x.bounds.height())),v.union(y.bounds.translate(k-(y.x||0),w-(y.y||0))),y.x=k,y.y=w,t.dirty(y),O=a(O,v[l])}return O}function hj(t,e,r,n,o,i){if(e){t.dirty(e);var a=r,c=r;n?a=Math.round(o.x1+i*o.width()):c=Math.round(o.y1+i*o.height()),e.bounds.translate(a-(e.x||0),c-(e.y||0)),e.mark.bounds.clear().union(e.bounds),e.x=a,e.y=c,t.dirty(e)}}function fj(t,e,r,n,o,i,a){const c=function(t,e){const r=t[e]||{};return(e,n)=>null!=r[e]?r[e]:null!=t[e]?t[e]:n}(r,e),u=function(t,e){let r=-1/0;return t.forEach((t=>{null!=t.offset&&(r=Math.max(r,t.offset))})),r>-1/0?r:e}(t,c("offset",0)),l=c("anchor",uD),s=l===sD?1:l===lD?.5:0,d={align:zD,bounds:c("bounds",PD),columns:"vertical"===c("direction")?1:t.length,padding:c("margin",8),center:c("center"),nodirty:!0};switch(e){case eD:d.anchor={x:Math.floor(n.x1)-u,column:sD,y:s*(a||n.height()+2*n.y1),row:l};break;case rD:d.anchor={x:Math.ceil(n.x2)+u,y:s*(a||n.height()+2*n.y1),row:l};break;case tD:d.anchor={y:Math.floor(o.y1)-u,row:sD,x:s*(i||o.width()+2*o.x1),column:l};break;case nD:d.anchor={y:Math.ceil(o.y2)+u,x:s*(i||o.width()+2*o.x1),column:l};break;case oD:d.anchor={x:u,y:u};break;case iD:d.anchor={x:i-u,y:u,column:sD};break;case aD:d.anchor={x:u,y:a-u,row:sD};break;case cD:d.anchor={x:i-u,y:a-u,column:sD,row:sD}}return d}function pj(t,e){var r,n,o=e.items[0],i=o.datum,a=o.orient,c=o.bounds,u=o.x,l=o.y;return o._bounds?o._bounds.clear().union(c):o._bounds=c.clone(),c.clear(),function(t,e,r){var n=e.padding,o=n-r.x,i=n-r.y;if(e.datum.title){var a=e.items[1].items[0],c=a.anchor,u=e.titlePadding||0,l=n-a.x,s=n-a.y;switch(a.orient){case eD:o+=Math.ceil(a.bounds.width())+u;break;case rD:case nD:break;default:i+=a.bounds.height()+u}switch((o||i)&&gj(t,r,o,i),a.orient){case eD:s+=bj(e,r,a,c,1,1);break;case rD:l+=bj(e,r,a,sD,0,0)+u,s+=bj(e,r,a,c,1,1);break;case nD:l+=bj(e,r,a,c,0,0),s+=bj(e,r,a,sD,-1,0,1)+u;break;default:l+=bj(e,r,a,c,0,0)}(l||s)&&gj(t,a,l,s),(l=Math.round(a.bounds.x1-n))<0&&(gj(t,r,-l,0),gj(t,a,-l,0))}else(o||i)&&gj(t,r,o,i)}(t,o,o.items[0].items[0]),c=function(t,e){return t.items.forEach((t=>e.union(t.bounds))),e.x1=t.padding,e.y1=t.padding,e}(o,c),r=2*o.padding,n=2*o.padding,c.empty()||(r=Math.ceil(c.width()+r),n=Math.ceil(c.height()+n)),i.type===ED&&function(t){const e=t.reduce(((t,e)=>(t[e.column]=Math.max(e.bounds.x2-e.x,t[e.column]||0),t)),{});t.forEach((t=>{t.width=e[t.column],t.height=t.bounds.y2-t.y}))}(o.items[0].items[0].items[0].items),a!==MD&&(o.x=u=0,o.y=l=0),o.width=r,o.height=n,w_(c.set(u,l,u+r,l+n),o),o.mark.bounds.clear().union(c),o}function bj(t,e,r,n,o,i,a){const c="symbol"!==t.datum.type,u=r.datum.vgrad,l=(!c||!i&&u||a?e:e.items[0]).bounds[o?"y2":"x2"]-t.padding,s=u&&i?l:0,d=u&&i?0:l,h=o<=0?0:rO(r);return Math.round(n===uD?s:n===sD?d-h:.5*(l-h))}function gj(t,e,r,n){e.x+=r,e.y+=n,e.bounds.translate(r,n),e.mark.bounds.translate(r,n),t.dirty(e)}function mj(t){Sp.call(this,null,t)}Gc(mj,Sp,{transform(t,e){const r=e.dataflow;return t.mark.items.forEach((e=>{t.layout&&uj(r,e,t.layout),function(t,e,r){var n,o,i,a,c,u=e.items,l=Math.max(0,e.width||0),s=Math.max(0,e.height||0),d=(new g_).set(0,0,l,s),h=d.clone(),f=d.clone(),p=[];for(a=0,c=u.length;a{(i=t.orient||rD)!==MD&&(e[i]||(e[i]=[])).push(t)}));for(const n in e){const o=e[n];cj(t,o,fj(o,n,r.legends,h,f,l,s))}p.forEach((e=>{const n=e.bounds;if(n.equals(e._bounds)||(e.bounds=e._bounds,t.dirty(e),e.bounds=n,t.dirty(e)),!r.autosize||r.autosize.type!==DD&&r.autosize.type!==jD&&r.autosize.type!==SD)d.union(n);else switch(e.orient){case eD:case rD:d.add(n.x1,0).add(n.x2,0);break;case tD:case nD:d.add(0,n.y1).add(0,n.y2)}}))}d.union(h).union(f),n&&d.union(function(t,e,r,n,o){var i,a=e.items[0],c=a.frame,u=a.orient,l=a.anchor,s=a.offset,d=a.padding,h=a.items[0].items[0],f=a.items[1]&&a.items[1].items[0],p=u===eD||u===rD?n:r,b=0,g=0,m=0,v=0,y=0;if(c!==fD?u===eD?(b=o.y2,p=o.y1):u===rD?(b=o.y1,p=o.y2):(b=o.x1,p=o.x2):u===eD&&(b=n,p=0),i=l===uD?b:l===sD?p:(b+p)/2,f&&f.text){switch(u){case tD:case nD:y=h.bounds.height()+d;break;case eD:v=h.bounds.width()+d;break;case rD:v=-h.bounds.width()-d}XD.clear().union(f.bounds),XD.translate(v-(f.x||0),y-(f.y||0)),JD(f,"x",v)|JD(f,"y",y)&&(t.dirty(f),f.bounds.clear().union(XD),f.mark.bounds.clear().union(XD),t.dirty(f)),XD.clear().union(f.bounds)}else XD.clear();switch(XD.union(h.bounds),u){case tD:g=i,m=o.y1-XD.height()-s;break;case eD:g=o.x1-XD.width()-s,m=i;break;case rD:g=o.x2+XD.width()+s,m=i;break;case nD:g=i,m=o.y2+s;break;default:g=a.x,m=a.y}return JD(a,"x",g)|JD(a,"y",m)&&(XD.translate(g,m),t.dirty(a),a.bounds.clear().union(XD),e.bounds.clear().union(XD),t.dirty(a)),a.bounds}(t,n,l,s,d));e.clip&&d.set(0,0,e.width||0,e.height||0);!function(t,e,r,n){const o=n.autosize||{},i=o.type;if(t._autosize<1||!i)return;let a=t._width,c=t._height,u=Math.max(0,e.width||0),l=Math.max(0,Math.ceil(-r.x1)),s=Math.max(0,e.height||0),d=Math.max(0,Math.ceil(-r.y1));const h=Math.max(0,Math.ceil(r.x2-u)),f=Math.max(0,Math.ceil(r.y2-s));if(o.contains===OD){const e=t.padding();a-=e.left+e.right,c-=e.top+e.bottom}i===MD?(l=0,d=0,u=a,s=c):i===DD?(u=Math.max(0,a-l-h),s=Math.max(0,c-d-f)):i===jD?(u=Math.max(0,a-l-h),c=s+d+f):i===SD?(a=u+l+h,s=Math.max(0,c-d-f)):i===AD&&(a=u+l+h,c=s+d+f);t._resizeView(a,c,u,s,[l,d],o.resize)}(t,e,d,r)}(r,e,t)})),function(t){return t&&"legend-entry"!==t.mark.role}(t.mark.group)?e.reflow():e}});var vj=Object.freeze({__proto__:null,bound:TD,identifier:ID,mark:UD,overlap:qD,render:YD,viewlayout:mj});function yj(t){Sp.call(this,null,t)}function xj(t){Sp.call(this,null,t)}function kj(){return Qf({})}function wj(t){Sp.call(this,null,t)}function _j(t){Sp.call(this,[],t)}Gc(yj,Sp,{transform(t,e){if(this.value&&!t.modified())return e.StopPropagation;var r=e.dataflow.locale(),n=e.fork(e.NO_SOURCE|e.NO_FIELDS),o=this.value,i=t.scale,a=Qk(i,null==t.count?t.values?t.values.length:10:t.count,t.minstep),c=t.format||ew(r,i,a,t.formatSpecifier,t.formatType,!!t.values),u=t.values?Kk(i,t.values,a):tw(i,a);return o&&(n.rem=o),o=u.map(((t,e)=>Qf({index:e/(u.length-1||1),value:t,label:c(t)}))),t.extra&&o.length&&o.push(Qf({index:-1,extra:{value:o[0].value},label:""})),n.source=o,n.add=o,this.value=o,n}}),Gc(xj,Sp,{transform(t,e){var r=e.dataflow,n=e.fork(e.NO_SOURCE|e.NO_FIELDS),o=t.item||kj,i=t.key||Xf,a=this.value;return nc(n.encode)&&(n.encode=null),a&&(t.modified("key")||e.modified(i))&&Ua("DataJoin does not support modified key function or fields."),a||(e=e.addAll(),this.value=a=function(t){const e=Vc().test((t=>t.exit));return e.lookup=r=>e.get(t(r)),e}(i)),e.visit(e.ADD,(t=>{const e=i(t);let r=a.get(e);r?r.exit?(a.empty--,n.add.push(r)):n.mod.push(r):(r=o(t),a.set(e,r),n.add.push(r)),r.datum=t,r.exit=!1})),e.visit(e.MOD,(t=>{const e=i(t),r=a.get(e);r&&(r.datum=t,n.mod.push(r))})),e.visit(e.REM,(t=>{const e=i(t),r=a.get(e);t!==r.datum||r.exit||(n.rem.push(r),r.exit=!0,++a.empty)})),e.changed(e.ADD_MOD)&&n.modifies("datum"),(e.clean()||t.clean&&a.empty>r.cleanThreshold)&&r.runAfter(a.clean),n}}),Gc(wj,Sp,{transform(t,e){var r=e.fork(e.ADD_REM),n=t.mod||!1,o=t.encoders,i=e.encode;if(nc(i)){if(!r.changed()&&!i.every((t=>o[t])))return e.StopPropagation;i=i[0],r.encode=null}var a="enter"===i,c=o.update||Ya,u=o.enter||Ya,l=o.exit||Ya,s=(i&&!a?o[i]:c)||Ya;if(e.changed(e.ADD)&&(e.visit(e.ADD,(e=>{u(e,t),c(e,t)})),r.modifies(u.output),r.modifies(c.output),s!==Ya&&s!==c&&(e.visit(e.ADD,(e=>{s(e,t)})),r.modifies(s.output))),e.changed(e.REM)&&l!==Ya&&(e.visit(e.REM,(e=>{l(e,t)})),r.modifies(l.output)),a||s!==Ya){const o=e.MOD|(t.modified()?e.REFLOW:0);a?(e.visit(o,(e=>{const o=u(e,t)||n;(s(e,t)||o)&&r.mod.push(e)})),r.mod.length&&r.modifies(u.output)):e.visit(o,(e=>{(s(e,t)||n)&&r.mod.push(e)})),r.mod.length&&r.modifies(s.output)}return r.changed()?r:e.StopPropagation}}),Gc(_j,Sp,{transform(t,e){if(null!=this.value&&!t.modified())return e.StopPropagation;var r,n,o,i,a,c=e.dataflow.locale(),u=e.fork(e.NO_SOURCE|e.NO_FIELDS),l=this.value,s=t.type||Gk,d=t.scale,h=+t.limit,f=Qk(d,null==t.count?5:t.count,t.minstep),p=!!t.values||s===Gk,b=t.format||cw(c,d,f,s,t.formatSpecifier,t.formatType,p),g=t.values||iw(d,f);return l&&(u.rem=l),s===Gk?(h&&g.length>h?(e.dataflow.warn("Symbol legend count exceeds limit, filtering items."),l=g.slice(0,h-1),a=!0):l=g,Ac(o=t.size)?(t.values||0!==d(l[0])||(l=l.slice(1)),i=l.reduce(((e,r)=>Math.max(e,o(r,t))),0)):o=Tc(i=o||8),l=l.map(((e,r)=>Qf({index:r,label:b(e,r,l),value:e,offset:i,size:o(e,t)}))),a&&(a=g[l.length],l.push(Qf({index:l.length,label:"ā€¦".concat(g.length-l.length," entries"),value:a,offset:i,size:o(a,t)})))):"gradient"===s?(r=d.domain(),n=Uk(d,r[0],lc(r)),g.length<3&&!t.values&&r[0]!==lc(r)&&(g=[r[0],lc(r)]),l=g.map(((t,e)=>Qf({index:e,label:b(t,e,g),value:t,perc:n(t)})))):(o=g.length-1,n=function(t){const e=t.domain(),r=e.length-1;let n=+e[0],o=+lc(e),i=o-n;if(t.type===dk){const t=r?i/r:.1;n-=t,o+=t,i=o-n}return t=>(t-n)/i}(d),l=g.map(((t,e)=>Qf({index:e,label:b(t,e,g),value:t,perc:e?n(t):0,perc2:e===o?1:n(g[e+1])})))),u.source=l,u.add=l,this.value=l,u}});const Cj=t=>t.source.x,Oj=t=>t.source.y,Ej=t=>t.target.x,Dj=t=>t.target.y;function jj(t){Sp.call(this,{},t)}jj.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},Gc(jj,Sp,{transform(t,e){var r=t.sourceX||Cj,n=t.sourceY||Oj,o=t.targetX||Ej,i=t.targetY||Dj,a=t.as||"path",c=t.orient||"vertical",u=t.shape||"line",l=Nj.get(u+"-"+c)||Nj.get(u);return l||Ua("LinkPath unsupported type: "+t.shape+(t.orient?"-"+t.orient:"")),e.visit(e.SOURCE,(t=>{t[a]=l(r(t),n(t),o(t),i(t))})),e.reflow(t.modified()).modifies(a)}});const Sj=(t,e,r,n)=>"M"+t+","+e+"L"+r+","+n,Aj=(t,e,r,n)=>{var o=r-t,i=n-e,a=Math.hypot(o,i)/2;return"M"+t+","+e+"A"+a+","+a+" "+180*Math.atan2(i,o)/Math.PI+" 0 1 "+r+","+n},Mj=(t,e,r,n)=>{const o=r-t,i=n-e,a=.2*(o+i),c=.2*(i-o);return"M"+t+","+e+"C"+(t+a)+","+(e+c)+" "+(r+c)+","+(n-a)+" "+r+","+n},Nj=Vc({line:Sj,"line-radial":(t,e,r,n)=>Sj(e*Math.cos(t),e*Math.sin(t),n*Math.cos(r),n*Math.sin(r)),arc:Aj,"arc-radial":(t,e,r,n)=>Aj(e*Math.cos(t),e*Math.sin(t),n*Math.cos(r),n*Math.sin(r)),curve:Mj,"curve-radial":(t,e,r,n)=>Mj(e*Math.cos(t),e*Math.sin(t),n*Math.cos(r),n*Math.sin(r)),"orthogonal-horizontal":(t,e,r,n)=>"M"+t+","+e+"V"+n+"H"+r,"orthogonal-vertical":(t,e,r,n)=>"M"+t+","+e+"H"+r+"V"+n,"orthogonal-radial":(t,e,r,n)=>{const o=Math.cos(t),i=Math.sin(t),a=Math.cos(r),c=Math.sin(r);return"M"+e*o+","+e*i+"A"+e+","+e+" 0 0,"+((Math.abs(r-t)>Math.PI?r<=t:r>t)?1:0)+" "+e*a+","+e*c+"L"+n*a+","+n*c},"diagonal-horizontal":(t,e,r,n)=>{const o=(t+r)/2;return"M"+t+","+e+"C"+o+","+e+" "+o+","+n+" "+r+","+n},"diagonal-vertical":(t,e,r,n)=>{const o=(e+n)/2;return"M"+t+","+e+"C"+t+","+o+" "+r+","+o+" "+r+","+n},"diagonal-radial":(t,e,r,n)=>{const o=Math.cos(t),i=Math.sin(t),a=Math.cos(r),c=Math.sin(r),u=(e+n)/2;return"M"+e*o+","+e*i+"C"+u*o+","+u*i+" "+u*a+","+u*c+" "+n*a+","+n*c}});function zj(t){Sp.call(this,null,t)}zj.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},Gc(zj,Sp,{transform(t,e){var r,n,o,i=t.as||["startAngle","endAngle"],a=i[0],c=i[1],u=t.field||Ga,l=t.startAngle||0,s=null!=t.endAngle?t.endAngle:2*Math.PI,d=e.source,h=d.map(u),f=h.length,p=l,b=(s-l)/hl(h),g=dl(f);for(t.sort&&g.sort(((t,e)=>h[t]-h[e])),r=0;rt+(e<0?-1:e>0?1:0)),0))!==e.length&&r.warn("Log scale domain includes zero: "+uu(e)));return e}function Bj(t,e,r){return Ac(t)&&(e||r)?Rk(t,Ij(e||[0,1],r)):t}function Ij(t,e){return e?t.slice().reverse():t}function Uj(t){Sp.call(this,null,t)}Gc(Tj,Sp,{transform(t,e){var r=e.dataflow,n=this.value,o=function(t){var e,r=t.type,n="";if(r===ck)return ck+"-"+tk;(function(t){const e=t.type;return Mk(e)&&e!==ik&&e!==ak&&(t.scheme||t.range&&t.range.length&&t.range.every(tu))})(t)&&(n=2===(e=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(null!=t.domainMid):0)?ck+"-":3===e?uk+"-":"");return(n+r||tk).toLowerCase()}(t);for(o in n&&o===n.type||(this.value=n=jk(o)()),t)if(!Lj[o]){if("padding"===o&&Fj(n.type))continue;Ac(n[o])?n[o](t[o]):r.warn("Unsupported scale property: "+o)}return function(t,e,r){var n=t.type,o=e.round||!1,i=e.range;if(null!=e.rangeStep)i=function(t,e,r){t!==pk&&t!==fk&&Ua("Only band and point scales support rangeStep.");var n=(null!=e.paddingOuter?e.paddingOuter:e.padding)||0,o=t===fk?1:(null!=e.paddingInner?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Kx(r,o,n)]}(n,e,r);else if(e.scheme&&(i=function(t,e,r){var n,o=e.schemeExtent;nc(e.scheme)?n=Bk(e.scheme,e.interpolate,e.interpolateGamma):(n=Zk(e.scheme.toLowerCase()))||Ua("Unrecognized scheme name: ".concat(e.scheme));return r=t===dk?r+1:t===bk?r-1:t===lk||t===sk?+e.schemeCount||Pj:r,Fk(t)?Bj(n,o,e.reverse):Ac(n)?Ik(Bj(n,o),r):t===hk?n:n.slice(0,r)}(n,e,r),Ac(i))){if(t.interpolator)return t.interpolator(i);Ua("Scale type ".concat(n," does not support interpolating color schemes."))}if(i&&Fk(n))return t.interpolator(Bk(Ij(i,e.reverse),e.interpolate,e.interpolateGamma));i&&e.interpolate&&t.interpolate?t.interpolate(qk(e.interpolate,e.interpolateGamma)):Ac(t.round)?t.round(o):Ac(t.rangeRound)&&t.interpolate(o?Xy:Yy);i&&t.range(Ij(i,e.reverse))}(n,t,function(t,e,r){let n=e.bins;if(n&&!nc(n)){const e=t.domain(),r=e[0],o=lc(e),i=n.step;let a=null==n.start?r:n.start,c=null==n.stop?o:n.stop;i||Ua("Scale bins parameter missing step property."),ao&&(c=i*Math.floor(o/i)),n=dl(a,c+i/2,i)}n?t.bins=n:t.bins&&delete t.bins;t.type===bk&&(n?e.domain||e.domainRaw||(t.domain(n),r=n.length):t.bins=t.domain());return r}(n,t,function(t,e,r){const n=function(t,e,r){return e?(t.domain(Rj(t.type,e,r)),e.length):-1}(t,e.domainRaw,r);if(n>-1)return n;var o,i,a=e.domain,c=t.type,u=e.zero||void 0===e.zero&&function(t){const e=t.type;return!t.bins&&(e===tk||e===rk||e===nk)}(t);if(!a)return 0;Fj(c)&&e.padding&&a[0]!==lc(a)&&(a=function(t,e,r,n,o,i){var a=Math.abs(lc(r)-r[0]),c=a/(a-2*n),u=t===ek?_c(e,null,c):t===nk?Cc(e,null,c,.5):t===rk?Cc(e,null,c,o||1):t===ok?Oc(e,null,c,i||1):wc(e,null,c);return e=e.slice(),e[0]=u[0],e[e.length-1]=u[1],e}(c,a,e.range,e.padding,e.exponent,e.constant));if((u||null!=e.domainMin||null!=e.domainMax||null!=e.domainMid)&&(o=(a=a.slice()).length-1||1,u&&(a[0]>0&&(a[0]=0),a[o]<0&&(a[o]=0)),null!=e.domainMin&&(a[0]=e.domainMin),null!=e.domainMax&&(a[o]=e.domainMax),null!=e.domainMid)){const t=(i=e.domainMid)>a[o]?o+1:it(u);if(null==e)f.push(t.slice());else for(o={},i=0,a=t.length;ih&&(h=d),r&&s.sort(r)}return f.max=h,f}(e.source,t.groupby,l,s),n=0,o=r.length,i=r.max;n0?1:t<0?-1:0},gS=Math.sqrt,mS=Math.tan;function vS(t){return t>1?0:t<-1?Kj:Math.acos(t)}function yS(t){return t>1?tS:t<-1?-tS:Math.asin(t)}function xS(){}function kS(t,e){t&&_S.hasOwnProperty(t.type)&&_S[t.type](t,e)}var wS={Feature:function(t,e){kS(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,o=r.length;++n=0?1:-1,o=n*r,i=uS(e=(e*=oS)/2+eS),a=pS(e),c=MS*a,u=AS*i+c*uS(o),l=c*n*pS(o);HS.add(cS(l,u)),SS=t,AS=i,MS=a}function XS(t){return[cS(t[1],t[0]),yS(t[2])]}function JS(t){var e=t[0],r=t[1],n=uS(r);return[n*uS(e),n*pS(e),pS(r)]}function QS(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function KS(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function tA(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function eA(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function rA(t){var e=gS(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var nA,oA,iA,aA,cA,uA,lA,sA,dA,hA,fA,pA,bA,gA,mA,vA,yA={point:xA,lineStart:wA,lineEnd:_A,polygonStart:function(){yA.point=CA,yA.lineStart=OA,yA.lineEnd=EA,IS=new qu,VS.polygonStart()},polygonEnd:function(){VS.polygonEnd(),yA.point=xA,yA.lineStart=wA,yA.lineEnd=_A,HS<0?(NS=-(PS=180),zS=-(FS=90)):IS>Jj?FS=90:IS<-Jj&&(zS=-90),qS[0]=NS,qS[1]=PS},sphere:function(){NS=-(PS=180),zS=-(FS=90)}};function xA(t,e){US.push(qS=[NS=t,PS=t]),eFS&&(FS=e)}function kA(t,e){var r=JS([t*oS,e*oS]);if(BS){var n=KS(BS,r),o=KS([n[1],-n[0],0],n);rA(o),o=XS(o);var i,a=t-LS,c=a>0?1:-1,u=o[0]*nS*c,l=iS(a)>180;l^(c*LSFS&&(FS=i):l^(c*LS<(u=(u+360)%360-180)&&uFS&&(FS=e)),l?tDA(NS,PS)&&(PS=t):DA(t,PS)>DA(NS,PS)&&(NS=t):PS>=NS?(tPS&&(PS=t)):t>LS?DA(NS,t)>DA(NS,PS)&&(PS=t):DA(t,PS)>DA(NS,PS)&&(NS=t)}else US.push(qS=[NS=t,PS=t]);eFS&&(FS=e),BS=r,LS=t}function wA(){yA.point=kA}function _A(){qS[0]=NS,qS[1]=PS,yA.point=xA,BS=null}function CA(t,e){if(BS){var r=t-LS;IS.add(iS(r)>180?r+(r>0?360:-360):r)}else TS=t,RS=e;VS.point(t,e),kA(t,e)}function OA(){VS.lineStart()}function EA(){CA(TS,RS),VS.lineEnd(),iS(IS)>Jj&&(NS=-(PS=180)),qS[0]=NS,qS[1]=PS,BS=null}function DA(t,e){return(e-=t)<0?e+360:e}function jA(t,e){return t[0]-e[0]}function SA(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eKj&&(t-=Math.round(t/rS)*rS),[t,e]}function HA(t,e,r){return(t%=rS)?e||r?UA(VA(t),ZA(e,r)):VA(t):e||r?ZA(e,r):qA}function WA(t){return function(e,r){return iS(e+=t)>Kj&&(e-=Math.round(e/rS)*rS),[e,r]}}function VA(t){var e=WA(t);return e.invert=WA(-t),e}function ZA(t,e){var r=uS(t),n=pS(t),o=uS(e),i=pS(e);function a(t,e){var a=uS(e),c=uS(t)*a,u=pS(t)*a,l=pS(e),s=l*r+c*n;return[cS(u*o-s*i,c*r-l*n),yS(s*o+u*i)]}return a.invert=function(t,e){var a=uS(e),c=uS(t)*a,u=pS(t)*a,l=pS(e),s=l*o-u*i;return[cS(u*o+l*i,c*r+s*n),yS(s*r-c*n)]},a}function GA(t,e){(e=JS(e))[0]-=t,rA(e);var r=vS(-e[1]);return((-e[2]<0?-r:r)+rS-Jj)%rS}function $A(){var t,e=[];return{point:function(e,r,n){t.push([e,r,n])},lineStart:function(){e.push(t=[])},lineEnd:xS,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function YA(t,e){return iS(t[0]-e[0])=0;--i)o.point((s=l[i])[0],s[1]);else n(h.x,h.p.x,-1,o);h=h.p}l=(h=h.o).z,f=!f}while(!h.v);o.lineEnd()}}}function QA(t){if(e=t.length){for(var e,r,n=0,o=t[0];++n=0?1:-1,E=O*C,D=E>Kj,j=g*w;if(u.add(cS(j*O*pS(E),m*_+j*uS(E))),a+=D?C+O*rS:C,D^p>=r^x>=r){var S=KS(JS(f),JS(y));rA(S);var A=KS(i,S);rA(A);var M=(D^C>=0?-1:1)*yS(A[2]);(n>M||n===M&&(S[0]||S[1]))&&(c+=D^C>=0?1:-1)}}return(a<-Jj||a0){for(d||(o.polygonStart(),d=!0),o.lineStart(),t=0;t1&&2&u&&h.push(h.pop().concat(h.shift())),a.push(h.filter(eM))}return h}}function eM(t){return t.length>1}function rM(t,e){return((t=t.x)[0]<0?t[1]-tS-Jj:tS-t[1])-((e=e.x)[0]<0?e[1]-tS-Jj:tS-e[1])}qA.invert=qA;var nM=tM((function(){return!0}),(function(t){var e,r=NaN,n=NaN,o=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(i,a){var c=i>0?Kj:-Kj,u=iS(i-r);iS(u-Kj)0?tS:-tS),t.point(o,n),t.lineEnd(),t.lineStart(),t.point(c,n),t.point(i,n),e=0):o!==c&&u>=Kj&&(iS(r-o)Jj?aS((pS(e)*(i=uS(n))*pS(r)-pS(n)*(o=uS(e))*pS(t))/(o*i*a)):(e+n)/2}(r,n,i,a),t.point(o,n),t.lineEnd(),t.lineStart(),t.point(c,n),e=0),t.point(r=i,n=a),o=c},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}}),(function(t,e,r,n){var o;if(null==t)o=r*tS,n.point(-Kj,o),n.point(0,o),n.point(Kj,o),n.point(Kj,0),n.point(Kj,-o),n.point(0,-o),n.point(-Kj,-o),n.point(-Kj,0),n.point(-Kj,o);else if(iS(t[0]-e[0])>Jj){var i=t[0]0,o=iS(e)>Jj;function i(t,r){return uS(t)*uS(r)>e}function a(t,r,n){var o=[1,0,0],i=KS(JS(t),JS(r)),a=QS(i,i),c=i[0],u=a-c*c;if(!u)return!n&&t;var l=e*a/u,s=-e*c/u,d=KS(o,i),h=eA(o,l);tA(h,eA(i,s));var f=d,p=QS(h,f),b=QS(f,f),g=p*p-b*(QS(h,h)-1);if(!(g<0)){var m=gS(g),v=eA(f,(-p-m)/b);if(tA(v,h),v=XS(v),!n)return v;var y,x=t[0],k=r[0],w=t[1],_=r[1];k0^v[1]<(iS(v[0]-x)Kj^(x<=v[0]&&v[0]<=k)){var E=eA(f,(-p+m)/b);return tA(E,h),[v,XS(E)]}}}function c(e,r){var o=n?t:Kj-t,i=0;return e<-o?i|=1:e>o&&(i|=2),r<-o?i|=4:r>o&&(i|=8),i}return tM(i,(function(t){var e,r,u,l,s;return{lineStart:function(){l=u=!1,s=1},point:function(d,h){var f,p=[d,h],b=i(d,h),g=n?b?0:c(d,h):b?c(d+(d<0?Kj:-Kj),h):0;if(!e&&(l=u=b)&&t.lineStart(),b!==u&&(!(f=a(e,p))||YA(e,f)||YA(p,f))&&(p[2]=1),b!==u)s=0,b?(t.lineStart(),f=a(p,e),t.point(f[0],f[1])):(f=a(e,p),t.point(f[0],f[1],2),t.lineEnd()),e=f;else if(o&&e&&n^b){var m;g&r||!(m=a(p,e,!0))||(s=0,n?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1],3)))}!b||e&&YA(e,p)||t.point(p[0],p[1]),e=p,u=b,r=g},lineEnd:function(){u&&t.lineEnd(),e=null},clean:function(){return s|(l&&u)<<1}}}),(function(e,n,o,i){!function(t,e,r,n,o,i){if(r){var a=uS(e),c=pS(e),u=n*r;null==o?(o=e+n*rS,i=e-u/2):(o=GA(a,o),i=GA(a,i),(n>0?oi)&&(o+=n*rS));for(var l,s=o;n>0?s>i:s0)do{l.point(0===s||3===s?t:r,s>1?n:e)}while((s=(s+c+4)%4)!==d);else l.point(i[0],i[1])}function a(n,o){return iS(n[0]-t)0?0:3:iS(n[0]-r)0?2:1:iS(n[1]-e)0?1:0:o>0?3:2}function c(t,e){return u(t.x,e.x)}function u(t,e){var r=a(t,1),n=a(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(a){var u,l,s,d,h,f,p,b,g,m,v,y=a,x=$A(),k={point:w,lineStart:function(){k.point=_,l&&l.push(s=[]);m=!0,g=!1,p=b=NaN},lineEnd:function(){u&&(_(d,h),f&&g&&x.rejoin(),u.push(x.result()));k.point=w,g&&y.lineEnd()},polygonStart:function(){y=x,u=[],l=[],v=!0},polygonEnd:function(){var e=function(){for(var e=0,r=0,o=l.length;rn&&(h-i)*(n-a)>(f-a)*(t-i)&&++e:f<=n&&(h-i)*(n-a)<(f-a)*(t-i)&&--e;return e}(),r=v&&e,o=(u=sl(u)).length;(r||o)&&(a.polygonStart(),r&&(a.lineStart(),i(null,null,1,a),a.lineEnd()),o&&JA(u,c,e,i,a),a.polygonEnd());y=a,u=l=s=null}};function w(t,e){o(t,e)&&y.point(t,e)}function _(i,a){var c=o(i,a);if(l&&s.push([i,a]),m)d=i,h=a,f=c,m=!1,c&&(y.lineStart(),y.point(i,a));else if(c&&g)y.point(i,a);else{var u=[p=Math.max(aM,Math.min(iM,p)),b=Math.max(aM,Math.min(iM,b))],x=[i=Math.max(aM,Math.min(iM,i)),a=Math.max(aM,Math.min(iM,a))];!function(t,e,r,n,o,i){var a,c=t[0],u=t[1],l=0,s=1,d=e[0]-c,h=e[1]-u;if(a=r-c,d||!(a>0)){if(a/=d,d<0){if(a0){if(a>s)return;a>l&&(l=a)}if(a=o-c,d||!(a<0)){if(a/=d,d<0){if(a>s)return;a>l&&(l=a)}else if(d>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>l&&(l=a)}if(a=i-u,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>l&&(l=a)}else if(h>0){if(a0&&(t[0]=c+l*d,t[1]=u+l*h),s<1&&(e[0]=c+s*d,e[1]=u+s*h),!0}}}}}(u,x,t,e,r,n)?c&&(y.lineStart(),y.point(i,a),v=!1):(g||(y.lineStart(),y.point(u[0],u[1])),y.point(x[0],x[1]),c||y.lineEnd(),v=!1)}p=i,b=a,g=c}return k}}function uM(t,e,r){var n=dl(t,e-Jj,r).concat(e);return function(t){return n.map((function(e){return[t,e]}))}}function lM(t,e,r){var n=dl(t,e-Jj,r).concat(e);return function(t){return n.map((function(e){return[e,t]}))}}var sM,dM,hM,fM,pM=t=>t,bM=new qu,gM=new qu,mM={point:xS,lineStart:xS,lineEnd:xS,polygonStart:function(){mM.lineStart=vM,mM.lineEnd=kM},polygonEnd:function(){mM.lineStart=mM.lineEnd=mM.point=xS,bM.add(iS(gM)),gM=new qu},result:function(){var t=bM/2;return bM=new qu,t}};function vM(){mM.point=yM}function yM(t,e){mM.point=xM,sM=hM=t,dM=fM=e}function xM(t,e){gM.add(fM*t-hM*e),hM=t,fM=e}function kM(){xM(sM,dM)}var wM=mM,_M=1/0,CM=_M,OM=-_M,EM=OM,DM={point:function(t,e){t<_M&&(_M=t);t>OM&&(OM=t);eEM&&(EM=e)},lineStart:xS,lineEnd:xS,polygonStart:xS,polygonEnd:xS,result:function(){var t=[[_M,CM],[OM,EM]];return OM=EM=-(CM=_M=1/0),t}};var jM,SM,AM,MM,NM=DM,zM=0,PM=0,FM=0,LM=0,TM=0,RM=0,BM=0,IM=0,UM=0,qM={point:HM,lineStart:WM,lineEnd:GM,polygonStart:function(){qM.lineStart=$M,qM.lineEnd=YM},polygonEnd:function(){qM.point=HM,qM.lineStart=WM,qM.lineEnd=GM},result:function(){var t=UM?[BM/UM,IM/UM]:RM?[LM/RM,TM/RM]:FM?[zM/FM,PM/FM]:[NaN,NaN];return zM=PM=FM=LM=TM=RM=BM=IM=UM=0,t}};function HM(t,e){zM+=t,PM+=e,++FM}function WM(){qM.point=VM}function VM(t,e){qM.point=ZM,HM(AM=t,MM=e)}function ZM(t,e){var r=t-AM,n=e-MM,o=gS(r*r+n*n);LM+=o*(AM+t)/2,TM+=o*(MM+e)/2,RM+=o,HM(AM=t,MM=e)}function GM(){qM.point=HM}function $M(){qM.point=XM}function YM(){JM(jM,SM)}function XM(t,e){qM.point=JM,HM(jM=AM=t,SM=MM=e)}function JM(t,e){var r=t-AM,n=e-MM,o=gS(r*r+n*n);LM+=o*(AM+t)/2,TM+=o*(MM+e)/2,RM+=o,BM+=(o=MM*t-AM*e)*(AM+t),IM+=o*(MM+e),UM+=3*o,HM(AM=t,MM=e)}var QM=qM;function KM(t){this._context=t}KM.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,rS)}},result:xS};var tN,eN,rN,nN,oN,iN=new qu,aN={point:xS,lineStart:function(){aN.point=cN},lineEnd:function(){tN&&uN(eN,rN),aN.point=xS},polygonStart:function(){tN=!0},polygonEnd:function(){tN=null},result:function(){var t=+iN;return iN=new qu,t}};function cN(t,e){aN.point=uN,eN=nN=t,rN=oN=e}function uN(t,e){nN-=t,oN-=e,iN.add(gS(nN*nN+oN*oN)),nN=t,oN=e}var lN=aN;let sN,dN,hN,fN;class pN{constructor(t){this._append=null==t?bN:function(t){const e=Math.floor(t);if(!(e>=0))throw new RangeError("invalid digits: ".concat(t));if(e>15)return bN;if(e!==sN){const t=10**e;sN=e,dN=function(e){let r=1;this._+=e[0];for(const n=e.length;r=0))throw new RangeError("invalid digits: ".concat(t));o=e}return null===e&&(n=new pN(o)),a},a.projection(t).digits(o).context(e)}function mN(t){return function(e){var r=new vN;for(var n in t)r[n]=t[n];return r.stream=e,r}}function vN(){}function yN(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=n&&t.clipExtent(null),ES(r,t.stream(NM)),e(NM.result()),null!=n&&t.clipExtent(n),t}function xN(t,e,r){return yN(t,(function(r){var n=e[1][0]-e[0][0],o=e[1][1]-e[0][1],i=Math.min(n/(r[1][0]-r[0][0]),o/(r[1][1]-r[0][1])),a=+e[0][0]+(n-i*(r[1][0]+r[0][0]))/2,c=+e[0][1]+(o-i*(r[1][1]+r[0][1]))/2;t.scale(150*i).translate([a,c])}),r)}function kN(t,e,r){return xN(t,[[0,0],e],r)}function wN(t,e,r){return yN(t,(function(r){var n=+e,o=n/(r[1][0]-r[0][0]),i=(n-o*(r[1][0]+r[0][0]))/2,a=-o*r[0][1];t.scale(150*o).translate([i,a])}),r)}function _N(t,e,r){return yN(t,(function(r){var n=+e,o=n/(r[1][1]-r[0][1]),i=-o*r[0][0],a=(n-o*(r[1][1]+r[0][1]))/2;t.scale(150*o).translate([i,a])}),r)}vN.prototype={constructor:vN,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var CN=16,ON=uS(30*oS);function EN(t,e){return+e?function(t,e){function r(n,o,i,a,c,u,l,s,d,h,f,p,b,g){var m=l-n,v=s-o,y=m*m+v*v;if(y>4*e&&b--){var x=a+h,k=c+f,w=u+p,_=gS(x*x+k*k+w*w),C=yS(w/=_),O=iS(iS(w)-1)e||iS((m*S+v*A)/y-.5)>.3||a*h+c*f+u*p2?t[2]%360*oS:0,S()):[g*nS,m*nS,v*nS]},D.angle=function(t){return arguments.length?(y=t%360*oS,S()):y*nS},D.reflectX=function(t){return arguments.length?(x=t?-1:1,S()):x<0},D.reflectY=function(t){return arguments.length?(k=t?-1:1,S()):k<0},D.precision=function(t){return arguments.length?(a=EN(c,E=t*t),A()):gS(E)},D.fitExtent=function(t,e){return xN(D,t,e)},D.fitSize=function(t,e){return kN(D,t,e)},D.fitWidth=function(t,e){return wN(D,t,e)},D.fitHeight=function(t,e){return _N(D,t,e)},function(){return e=t.apply(this,arguments),D.invert=e.invert&&j,S()}}function MN(t){var e=0,r=Kj/3,n=AN(t),o=n(e,r);return o.parallels=function(t){return arguments.length?n(e=t[0]*oS,r=t[1]*oS):[e*nS,r*nS]},o}function NN(t,e){var r=pS(t),n=(r+pS(e))/2;if(iS(n)2?t[2]*oS:0),e.invert=function(e){return(e=t.invert(e[0]*oS,e[1]*oS))[0]*=nS,e[1]*=nS,e},e}(o.rotate()).invert([0,0]));return u(null==l?[[c[0]-i,c[1]-i],[c[0]+i,c[1]+i]]:t===BN?[[Math.max(c[0]-i,l),e],[Math.min(c[0]+i,r),n]]:[[l,Math.max(c[1]-i,e)],[r,Math.min(c[1]+i,n)]])}return o.scale=function(t){return arguments.length?(a(t),s()):a()},o.translate=function(t){return arguments.length?(c(t),s()):c()},o.center=function(t){return arguments.length?(i(t),s()):i()},o.clipExtent=function(t){return arguments.length?(null==t?l=e=r=n=null:(l=+t[0][0],e=+t[0][1],r=+t[1][0],n=+t[1][1]),s()):null==l?null:[[l,e],[r,n]]},s()}function UN(t){return mS((tS+t)/2)}function qN(t,e){var r=uS(t),n=t===e?pS(t):hS(r/uS(e))/hS(UN(e)/UN(t)),o=r*fS(UN(t),n)/n;if(!n)return BN;function i(t,e){o>0?e<-tS+Jj&&(e=-tS+Jj):e>tS-Jj&&(e=tS-Jj);var r=o/fS(UN(e),n);return[r*pS(n*t),o-r*uS(n*t)]}return i.invert=function(t,e){var r=o-e,i=bS(n)*gS(t*t+r*r),a=cS(t,iS(r))*bS(r);return r*n<0&&(a-=Kj*bS(t)*bS(r)),[a/n,2*aS(fS(o/i,1/n))-tS]},i}function HN(t,e){return[t,e]}function WN(t,e){var r=uS(t),n=t===e?pS(t):(r-uS(e))/(e-t),o=r/n+t;if(iS(n)Jj&&--o>0);return[t/(.8707+(i=n*n)*(i*(i*i*i*(.003971-.001529*i)-.013791)-.131979)),n]},KN.invert=LN(yS),tz.invert=LN((function(t){return 2*aS(t)})),ez.invert=function(t,e){return[-e,2*aS(sS(t))-tS]};var rz=Math.abs,nz=Math.cos,oz=Math.sin,iz=1e-6,az=Math.PI,cz=az/2,uz=function(t){return t>0?Math.sqrt(t):0}(2);function lz(t){return t>1?cz:t<-1?-cz:Math.asin(t)}function sz(t,e){var r,n=t*oz(e),o=30;do{e-=r=(e+oz(e)-n)/(1+nz(e))}while(rz(r)>iz&&--o>0);return e/2}var dz=function(t,e,r){function n(n,o){return[t*n*nz(o=sz(r,o)),e*oz(o)]}return n.invert=function(n,o){return o=lz(o/e),[n/(t*nz(o)),lz((2*o+oz(2*o))/r)]},n}(uz/cz,uz,az);const hz=gN(),fz=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function pz(t,e){if(!t||"string"!=typeof t)throw new Error("Projection type must be a name string.");return t=t.toLowerCase(),arguments.length>1?(gz[t]=function(t,e){return function r(){const n=e();return n.type=t,n.path=gN().projection(n),n.copy=n.copy||function(){const t=r();return fz.forEach((e=>{n[e]&&t[e](n[e]())})),t.path.pointRadius(n.path.pointRadius()),t},Dk(n)}}(t,e),this):gz[t]||null}function bz(t){return t&&t.path||hz}const gz={albers:PN,albersusa:function(){var t,e,r,n,o,i,a=PN(),c=zN().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=zN().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,e){i=[t,e]}};function s(t){var e=t[0],a=t[1];return i=null,r.point(e,a),i||(n.point(e,a),i)||(o.point(e,a),i)}function d(){return t=e=null,s}return s.invert=function(t){var e=a.scale(),r=a.translate(),n=(t[0]-r[0])/e,o=(t[1]-r[1])/e;return(o>=.12&&o<.234&&n>=-.425&&n<-.214?c:o>=.166&&o<.234&&n>=-.214&&n<-.115?u:a).invert(t)},s.stream=function(r){return t&&e===r?t:(n=[a.stream(e=r),c.stream(r),u.stream(r)],o=n.length,t={point:function(t,e){for(var r=-1;++r2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)}};for(const Set in gz)pz(Set,gz[Set]);function mz(){}const vz=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function yz(){var t=1,e=1,r=a;function n(t,e){return e.map((e=>o(t,e)))}function o(n,o){var a=[],c=[];return function(r,n,o){var a,c,u,l,s,d,h=new Array,f=new Array;a=c=-1,l=r[0]>=n,vz[l<<1].forEach(p);for(;++a=n,vz[u|l<<1].forEach(p);vz[l<<0].forEach(p);for(;++c=n,s=r[c*t]>=n,vz[l<<1|s<<2].forEach(p);++a=n,d=s,s=r[c*t+a+1]>=n,vz[u|l<<1|s<<2|d<<3].forEach(p);vz[l|s<<3].forEach(p)}a=-1,s=r[c*t]>=n,vz[s<<2].forEach(p);for(;++a=n,vz[s<<2|d<<3].forEach(p);function p(t){var e,r,n=[t[0][0]+a,t[0][1]+c],u=[t[1][0]+a,t[1][1]+c],l=i(n),s=i(u);(e=f[l])?(r=h[s])?(delete f[e.end],delete h[r.start],e===r?(e.ring.push(u),o(e.ring)):h[e.start]=f[r.end]={start:e.start,end:r.end,ring:e.ring.concat(r.ring)}):(delete f[e.end],e.ring.push(u),f[e.end=s]=e):(e=h[s])?(r=f[l])?(delete h[e.start],delete f[r.end],e===r?(e.ring.push(u),o(e.ring)):h[r.start]=f[e.end]={start:r.start,end:e.end,ring:r.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(n),h[e.start=l]=e):h[l]=f[s]={start:l,end:s,ring:[n,u]}}vz[s<<3].forEach(p)}(n,o,(t=>{r(t,n,o),function(t){var e=0,r=t.length,n=t[r-1][1]*t[0][0]-t[r-1][0]*t[0][1];for(;++e0?a.push([t]):c.push(t)})),c.forEach((t=>{for(var e,r=0,n=a.length;r{var i,a=r[0],c=r[1],u=0|a,l=0|c,s=n[l*t+u];a>0&&a0&&c=0&&i>=0||Ua("invalid size"),t=o,e=i,n},n.smooth=function(t){return arguments.length?(r=t?a:mz,n):r===a},n}function xz(t,e){for(var r,n=-1,o=e.length;++nn!=f>n&&r<(h-l)*(n-s)/(f-s)+l&&(o=-o)}return o}function wz(t,e,r){var n,o,i,a;return function(t,e,r){return(e[0]-t[0])*(r[1]-t[1])==(r[0]-t[0])*(e[1]-t[1])}(t,e,r)&&(o=t[n=+(t[0]===e[0])],i=r[n],a=e[n],o<=i&&i<=a||a<=i&&i<=o)}function _z(t,e,r){return function(n){var o=Ic(n),i=r?Math.min(o[0],0):o[0],a=o[1],c=a-i,u=e?rl(i,a,t):c/(t+1);return dl(i+u,a,u)}}function Cz(t){Sp.call(this,null,t)}function Oz(t,e,r,n,o){const i=t.x1||0,a=t.y1||0,c=e*r<0;function u(t){t.forEach(l)}function l(t){c&&t.reverse(),t.forEach(s)}function s(t){t[0]=(t[0]-i)*e+n,t[1]=(t[1]-a)*r+o}return function(t){return t.coordinates.forEach(u),t}}function Ez(t,e,r){const n=t>=0?t:Lp(e,r);return Math.round((Math.sqrt(4*n*n+1)-1)/2)}function Dz(t){return Ac(t)?t:Tc(+t)}function jz(){var t=t=>t[0],e=t=>t[1],r=Ga,n=[-1,-1],o=960,i=500,a=2;function c(c,u){const l=Ez(n[0],c,t)>>a,s=Ez(n[1],c,e)>>a,d=l?l+2:0,h=s?s+2:0,f=2*d+(o>>a),p=2*h+(i>>a),b=new Float32Array(f*p),g=new Float32Array(f*p);let m=b;c.forEach((n=>{const o=d+(+t(n)>>a),i=h+(+e(n)>>a);o>=0&&o=0&&i0&&s>0?(Sz(f,p,b,g,l),Az(f,p,g,b,s),Sz(f,p,b,g,l),Az(f,p,g,b,s),Sz(f,p,b,g,l),Az(f,p,g,b,s)):l>0?(Sz(f,p,b,g,l),Sz(f,p,g,b,l),Sz(f,p,b,g,l),m=g):s>0&&(Az(f,p,b,g,s),Az(f,p,g,b,s),Az(f,p,b,g,s),m=g);const v=u?Math.pow(2,-2*a):1/hl(m);for(let t=0,e=f*p;t>a),y2:h+(i>>a)}}return c.x=function(e){return arguments.length?(t=Dz(e),c):t},c.y=function(t){return arguments.length?(e=Dz(t),c):e},c.weight=function(t){return arguments.length?(r=Dz(t),c):r},c.size=function(t){if(!arguments.length)return[o,i];var e=+t[0],r=+t[1];return e>=0&&r>=0||Ua("invalid size"),o=e,i=r,c},c.cellSize=function(t){return arguments.length?((t=+t)>=1||Ua("invalid cell size"),a=Math.floor(Math.log(t)/Math.LN2),c):1<=o&&(e>=i&&(c-=r[e-i+a*t]),n[e-o+a*t]=c/Math.min(e+1,t-1+i-e,i))}function Az(t,e,r,n,o){const i=1+(o<<1);for(let a=0;a=o&&(c>=i&&(u-=r[a+(c-i)*t]),n[a+(c-o)*t]=u/Math.min(c+1,e-1+i-c,i))}function Mz(t){Sp.call(this,null,t)}Cz.Definition={type:"Isocontour",metadata:{generates:!0},params:[{name:"field",type:"field"},{name:"thresholds",type:"number",array:!0},{name:"levels",type:"number"},{name:"nice",type:"boolean",default:!1},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"zero",type:"boolean",default:!0},{name:"smooth",type:"boolean",default:!0},{name:"scale",type:"number",expr:!0},{name:"translate",type:"number",array:!0,expr:!0},{name:"as",type:"string",null:!0,default:"contour"}]},Gc(Cz,Sp,{transform(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopPropagation;var r=e.fork(e.NO_SOURCE|e.NO_FIELDS),n=e.materialize(e.SOURCE).source,o=t.field||Va,i=yz().smooth(!1!==t.smooth),a=t.thresholds||function(t,e,r){const n=_z(r.levels||10,r.nice,!1!==r.zero);return"shared"!==r.resolve?n:n(t.map((t=>nl(e(t).values))))}(n,o,t),c=null===t.as?null:t.as||"contour",u=[];return n.forEach((e=>{const r=o(e),n=i.size([r.width,r.height])(r.values,nc(a)?a:a(r.values));!function(t,e,r,n){let o=n.scale||e.scale,i=n.translate||e.translate;Ac(o)&&(o=o(r,n));Ac(i)&&(i=i(r,n));if((1===o||null==o)&&!i)return;const a=(Qc(o)?o:o[0])||1,c=(Qc(o)?o:o[1])||1,u=i&&i[0]||0,l=i&&i[1]||0;t.forEach(Oz(e,a,c,u,l))}(n,r,e,t),n.forEach((t=>{u.push(tp(e,Qf(null!=c?{[c]:t}:t)))}))})),this.value&&(r.rem=this.value),this.value=r.source=r.add=u,r}}),Mz.Definition={type:"KDE2D",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"weight",type:"field"},{name:"groupby",type:"field",array:!0},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number",array:!0,length:2},{name:"counts",type:"boolean",default:!1},{name:"as",type:"string",default:"grid"}]};const Nz=["x","y","weight","size","cellSize","bandwidth"];function zz(t,e){return Nz.forEach((r=>null!=e[r]?t[r](e[r]):0)),t}function Pz(t){Sp.call(this,null,t)}Gc(Mz,Sp,{transform(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopPropagation;var r,n=e.fork(e.NO_SOURCE|e.NO_FIELDS),o=function(t,e){var r,n,o,i,a,c,u=[],l=t=>t(i);if(null==e)u.push(t);else for(r={},n=0,o=t.length;nQf(function(t,e){for(let r=0;rJj})).map(u)).concat(dl(lS(i/f)*f,o,f).filter((function(t){return iS(t%b)>Jj})).map(l))}return m.lines=function(){return v().map((function(t){return{type:"LineString",coordinates:t}}))},m.outline=function(){return{type:"Polygon",coordinates:[s(n).concat(d(a).slice(1),s(r).reverse().slice(1),d(c).reverse().slice(1))]}},m.extent=function(t){return arguments.length?m.extentMajor(t).extentMinor(t):m.extentMinor()},m.extentMajor=function(t){return arguments.length?(n=+t[0][0],r=+t[1][0],c=+t[0][1],a=+t[1][1],n>r&&(t=n,n=r,r=t),c>a&&(t=c,c=a,a=t),m.precision(g)):[[n,c],[r,a]]},m.extentMinor=function(r){return arguments.length?(e=+r[0][0],t=+r[1][0],i=+r[0][1],o=+r[1][1],e>t&&(r=e,e=t,t=r),i>o&&(r=i,i=o,o=r),m.precision(g)):[[e,i],[t,o]]},m.step=function(t){return arguments.length?m.stepMajor(t).stepMinor(t):m.stepMinor()},m.stepMajor=function(t){return arguments.length?(p=+t[0],b=+t[1],m):[p,b]},m.stepMinor=function(t){return arguments.length?(h=+t[0],f=+t[1],m):[h,f]},m.precision=function(h){return arguments.length?(g=+h,u=uM(i,o,90),l=lM(e,t,g),s=uM(c,a,90),d=lM(n,r,g),m):g},m.extentMajor([[-180,-90+Jj],[180,90-Jj]]).extentMinor([[-180,-80-Jj],[180,80+Jj]])}()}function qz(t){Sp.call(this,null,t)}function Hz(t){if(!Ac(t))return!1;const e=fu(Ta(t));return e.$x||e.$y||e.$value||e.$max}function Wz(t){Sp.call(this,null,t),this.modified(!0)}function Vz(t,e,r){Ac(t[e])&&t[e](r)}Tz.Definition={type:"GeoJSON",metadata:{},params:[{name:"fields",type:"field",array:!0,length:2},{name:"geojson",type:"field"}]},Gc(Tz,Sp,{transform(t,e){var r,n=this._features,o=this._points,i=t.fields,a=i&&i[0],c=i&&i[1],u=t.geojson||!i&&Va,l=e.ADD;r=t.modified()||e.changed(e.REM)||e.modified(Ta(u))||a&&e.modified(Ta(a))||c&&e.modified(Ta(c)),this.value&&!r||(l=e.SOURCE,this._features=n=[],this._points=o=[]),u&&e.visit(l,(t=>n.push(u(t)))),a&&c&&(e.visit(l,(t=>{var e=a(t),r=c(t);null!=e&&null!=r&&(e=+e)===e&&(r=+r)===r&&o.push([e,r])})),n=n.concat({type:Fz,geometry:{type:"MultiPoint",coordinates:o}})),this.value={type:Lz,features:n}}}),Rz.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]},Gc(Rz,Sp,{transform(t,e){var r=e.fork(e.ALL),n=this.value,o=t.field||Va,i=t.as||"path",a=r.SOURCE;!n||t.modified()?(this.value=n=bz(t.projection),r.materialize().reflow()):a=o===Va||e.modified(o.fields)?r.ADD_MOD:r.ADD;const c=function(t,e){const r=t.pointRadius();t.context(null),null!=e&&t.pointRadius(e);return r}(n,t.pointRadius);return r.visit(a,(t=>t[i]=n(o(t)))),n.pointRadius(c),r.modifies(i)}}),Bz.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]},Gc(Bz,Sp,{transform(t,e){var r,n=t.projection,o=t.fields[0],i=t.fields[1],a=t.as||["x","y"],c=a[0],u=a[1];function l(t){const e=n([o(t),i(t)]);e?(t[c]=e[0],t[u]=e[1]):(t[c]=void 0,t[u]=void 0)}return t.modified()?e=e.materialize().reflow(!0).visit(e.SOURCE,l):(r=e.modified(o.fields)||e.modified(i.fields),e.visit(r?e.ADD_MOD:e.ADD,l)),e.modifies(a)}}),Iz.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]},Gc(Iz,Sp,{transform(t,e){var r=e.fork(e.ALL),n=this.value,o=t.as||"shape",i=r.ADD;return n&&!t.modified()||(this.value=n=function(t,e,r){const n=null==r?r=>t(e(r)):n=>{var o=t.pointRadius(),i=t.pointRadius(r)(e(n));return t.pointRadius(o),i};return n.context=e=>(t.context(e),n),n}(bz(t.projection),t.field||Ha("datum"),t.pointRadius),r.materialize().reflow(),i=r.SOURCE),r.visit(i,(t=>t[o]=n)),r.modifies(o)}}),Uz.Definition={type:"Graticule",metadata:{changes:!0,generates:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]},Gc(Uz,Sp,{transform(t,e){var r,n=this.value,o=this.generator;if(!n.length||t.modified())for(const i in t)Ac(o[i])&&o[i](t[i]);return r=o(),n.length?e.mod.push(ep(n[0],r)):e.add.push(Qf(r)),n[0]=r,e}}),qz.Definition={type:"heatmap",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"color",type:"string",expr:!0},{name:"opacity",type:"number",expr:!0},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"as",type:"string",default:"image"}]},Gc(qz,Sp,{transform(t,e){if(!e.changed()&&!t.modified())return e.StopPropagation;var r=e.materialize(e.SOURCE).source,n="shared"===t.resolve,o=t.field||Va,i=function(t,e){let r;Ac(t)?(r=r=>t(r,e),r.dep=Hz(t)):t?r=Tc(t):(r=t=>t.$value/t.$max||0,r.dep=!0);return r}(t.opacity,t),a=function(t,e){let r;Ac(t)?(r=r=>Bv(t(r,e)),r.dep=Hz(t)):r=Tc(Bv(t||"#888"));return r}(t.color,t),c=t.as||"image",u={$x:0,$y:0,$value:0,$max:n?nl(r.map((t=>nl(o(t).values)))):0};return r.forEach((t=>{const e=o(t),r=Bc({},t,u);n||(r.$max=nl(e.values||[])),t[c]=function(t,e,r,n){const o=t.width,i=t.height,a=t.x1||0,c=t.y1||0,u=t.x2||o,l=t.y2||i,s=t.values,d=s?t=>s[t]:Za,h=dv(u-a,l-c),f=h.getContext("2d"),p=f.getImageData(0,0,u-a,l-c),b=p.data;for(let g=c,m=0;g{null!=t[e]&&Vz(r,e,t[e])}))):fz.forEach((e=>{t.modified(e)&&Vz(r,e,t[e])})),null!=t.pointRadius&&r.path.pointRadius(t.pointRadius),t.fit&&function(t,e){const r=function(t){return t=jc(t),1===t.length?t[0]:{type:Lz,features:t.reduce(((t,e)=>t.concat(function(t){return t.type===Lz?t.features:jc(t).filter((t=>null!=t)).map((t=>t.type===Fz?t:{type:Fz,geometry:t}))}(e))),[])}}(e.fit);e.extent?t.fitExtent(e.extent,r):e.size&&t.fitSize(e.size,r)}(r,t),e.fork(e.NO_SOURCE|e.NO_FIELDS)}});var Zz=Object.freeze({__proto__:null,contour:Pz,geojson:Tz,geopath:Rz,geopoint:Bz,geoshape:Iz,graticule:Uz,heatmap:qz,isocontour:Cz,kde2d:Mz,projection:Wz});function Gz(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var o,i,a,c,u,l,s,d,h,f=t._root,p={data:n},b=t._x0,g=t._y0,m=t._x1,v=t._y1;if(!f)return t._root=p,t;for(;f.length;)if((l=e>=(i=(b+m)/2))?b=i:m=i,(s=r>=(a=(g+v)/2))?g=a:v=a,o=f,!(f=f[d=s<<1|l]))return o[d]=p,t;if(c=+t._x.call(null,f.data),u=+t._y.call(null,f.data),e===c&&r===u)return p.next=f,o?o[d]=p:t._root=p,t;do{o=o?o[d]=new Array(4):t._root=new Array(4),(l=e>=(i=(b+m)/2))?b=i:m=i,(s=r>=(a=(g+v)/2))?g=a:v=a}while((d=s<<1|l)==(h=(u>=a)<<1|c>=i));return o[h]=f,o[d]=p,t}function $z(t,e,r,n,o){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=o}function Yz(t){return t[0]}function Xz(t){return t[1]}function Jz(t,e,r){var n=new Qz(null==e?Yz:e,null==r?Xz:r,NaN,NaN,NaN,NaN);return null==t?n:n.addAll(t)}function Qz(t,e,r,n,o,i){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=o,this._y1=i,this._root=void 0}function Kz(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var tP=Jz.prototype=Qz.prototype;function eP(t){return function(){return t}}function rP(t){return 1e-6*(t()-.5)}function nP(t){return t.x+t.vx}function oP(t){return t.y+t.vy}function iP(t){return t.index}function aP(t,e){var r=t.get(e);if(!r)throw new Error("node not found: "+e);return r}tP.copy=function(){var t,e,r=new Qz(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=Kz(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var o=0;o<4;++o)(e=n.source[o])&&(e.length?t.push({source:e,target:n.target[o]=new Array(4)}):n.target[o]=Kz(e));return r},tP.add=function(t){const e=+this._x.call(null,t),r=+this._y.call(null,t);return Gz(this.cover(e,r),e,r,t)},tP.addAll=function(t){var e,r,n,o,i=t.length,a=new Array(i),c=new Array(i),u=1/0,l=1/0,s=-1/0,d=-1/0;for(r=0;rs&&(s=n),od&&(d=o));if(u>s||l>d)return this;for(this.cover(u,l).cover(s,d),r=0;rt||t>=o||n>e||e>=i;)switch(c=(eh||(i=u.y0)>f||(a=u.x1)=m)<<1|t>=g)&&(u=p[p.length-1],p[p.length-1]=p[p.length-1-l],p[p.length-1-l]=u)}else{var v=t-+this._x.call(null,b.data),y=e-+this._y.call(null,b.data),x=v*v+y*y;if(x=(c=(p+g)/2))?p=c:g=c,(s=a>=(u=(b+m)/2))?b=u:m=u,e=f,!(f=f[d=s<<1|l]))return this;if(!f.length)break;(e[d+1&3]||e[d+2&3]||e[d+3&3])&&(r=e,h=d)}for(;f.data!==t;)if(n=f,!(f=f.next))return this;return(o=f.next)&&delete f.next,n?(o?n.next=o:delete n.next,this):e?(o?e[d]=o:delete e[d],(f=e[0]||e[1]||e[2]||e[3])&&f===(e[3]||e[2]||e[1]||e[0])&&!f.length&&(r?r[h]=f:this._root=f),this):(this._root=o,this)},tP.removeAll=function(t){for(var e=0,r=t.length;e{}};function uP(){for(var t,e=0,r=arguments.length,n={};e=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:r}}))}(t+"",n),i=-1,a=o.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++i0)for(var r,n,o=new Array(r),i=0;i=0&&e._call.call(void 0,t),e=e._next;--pP}()}finally{pP=0,function(){var t,e,r=hP,n=1/0;for(;r;)r._call?(n>r._time&&(n=r._time),t=r,r=r._next):(e=r._next,r._next=null,r=t?t._next=e:hP=e);fP=t,SP(n)}(),yP=0}}function jP(){var t=kP.now(),e=t-vP;e>mP&&(xP-=e,vP=t)}function SP(t){pP||(bP&&(bP=clearTimeout(bP)),t-yP>24?(t<1/0&&(bP=setTimeout(DP,t-kP.now()-xP)),gP&&(gP=clearInterval(gP))):(gP||(vP=kP.now(),gP=setInterval(jP,mP)),pP=1,wP(DP)))}OP.prototype=EP.prototype={constructor:OP,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?_P():+r)+(null==e?0:+e),this._next||fP===this||(fP?fP._next=this:hP=this,fP=this),this._call=t,this._time=r,SP()},stop:function(){this._call&&(this._call=null,this._time=1/0,SP())}};const AP=1664525,MP=1013904223,NP=4294967296;function zP(t){return t.x}function PP(t){return t.y}var FP=10,LP=Math.PI*(3-Math.sqrt(5));function TP(t){var e,r=1,n=.001,o=1-Math.pow(n,1/300),i=0,a=.6,c=new Map,u=EP(d),l=uP("tick","end"),s=function(){let t=1;return()=>(t=(AP*t+MP)%NP)/NP}();function d(){h(),l.call("tick",e),r1?(null==r?c.delete(t):c.set(t,p(r)),e):c.get(t)},find:function(e,r,n){var o,i,a,c,u,l=0,s=t.length;for(null==n?n=1/0:n*=n,l=0;l1?(l.on(t,r),e):l.on(t)}}}const RP={center:function(t,e){var r,n=1;function o(){var o,i,a=r.length,c=0,u=0;for(o=0;ol+p||is+p||au.index){var b=l-c.x-c.vx,g=s-c.y-c.vy,m=b*b+g*g;mt.r&&(t.r=t[e].r)}function u(){if(e){var n,o,i=e.length;for(r=new Array(i),n=0;n=c)){(t.data!==e||t.next)&&(0===d&&(p+=(d=rP(r))*d),0===h&&(p+=(h=rP(r))*h),p[c(t,e,n),t])));for(a=0,o=new Array(l);ae(t,r):e)}HP.Definition={type:"Force",metadata:{modifies:!0},params:[{name:"static",type:"boolean",default:!1},{name:"restart",type:"boolean",default:!1},{name:"iterations",type:"number",default:300},{name:"alpha",type:"number",default:1},{name:"alphaMin",type:"number",default:.001},{name:"alphaTarget",type:"number",default:0},{name:"velocityDecay",type:"number",default:.4},{name:"forces",type:"param",array:!0,params:[{key:{force:"center"},params:[{name:"x",type:"number",default:0},{name:"y",type:"number",default:0}]},{key:{force:"collide"},params:[{name:"radius",type:"number",expr:!0},{name:"strength",type:"number",default:.7},{name:"iterations",type:"number",default:1}]},{key:{force:"nbody"},params:[{name:"strength",type:"number",default:-30,expr:!0},{name:"theta",type:"number",default:.9},{name:"distanceMin",type:"number",default:1},{name:"distanceMax",type:"number"}]},{key:{force:"link"},params:[{name:"links",type:"data"},{name:"id",type:"field"},{name:"distance",type:"number",default:30,expr:!0},{name:"strength",type:"number",expr:!0},{name:"iterations",type:"number",default:1}]},{key:{force:"x"},params:[{name:"strength",type:"number",default:.1},{name:"x",type:"field"}]},{key:{force:"y"},params:[{name:"strength",type:"number",default:.1},{name:"y",type:"field"}]}]},{name:"as",type:"string",array:!0,modify:!1,default:qP}]},Gc(HP,Sp,{transform(t,e){var r,n,o=this.value,i=e.changed(e.ADD_REM),a=t.modified(IP),c=t.iterations||300;if(o?(i&&(e.modifies("index"),o.nodes(e.source)),(a||e.changed(e.MOD))&&WP(o,t,0,e)):(this.value=o=function(t,e){const r=TP(t),n=r.stop,o=r.restart;let i=!1;return r.stopped=()=>i,r.restart=()=>(i=!1,o()),r.stop=()=>(i=!0,n()),WP(r,e,!0).on("end",(()=>i=!0))}(e.source,t),o.on("tick",(r=e.dataflow,n=this,()=>r.touch(n).run())),t.static||(i=!0,o.tick()),e.modifies("index")),a||i||t.modified(UP)||e.changed()&&t.restart)if(o.alpha(Math.max(o.alpha(),t.alpha||1)).alphaDecay(1-Math.pow(o.alphaMin(),1/c)),t.static)for(o.stop();--c>=0;)o.tick();else if(o.stopped()&&o.restart(),!i)return e.StopPropagation;return this.finish(t,e)},finish(t,e){const r=e.dataflow;for(let c,u=this._argops,l=0,s=u.length;l=0;)e+=r[n].value;else e=1;t.value=e}function KP(t,e){t instanceof Map?(t=[void 0,t],void 0===e&&(e=eF)):void 0===e&&(e=tF);for(var r,n,o,i,a,c=new oF(t),u=[c];r=u.pop();)if((o=e(r.data))&&(a=(o=Array.from(o)).length))for(r.children=o,i=a-1;i>=0;--i)u.push(n=o[i]=new oF(o[i])),n.parent=r,n.depth=r.depth+1;return c.eachBefore(nF)}function tF(t){return t.children}function eF(t){return Array.isArray(t)?t[1]:null}function rF(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function nF(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function oF(t){this.data=t,this.depth=this.height=0,this.parent=null}function iF(t){return null==t?null:aF(t)}function aF(t){if("function"!=typeof t)throw new Error;return t}function cF(){return 0}function uF(t){return function(){return t}}oF.prototype=KP.prototype={constructor:oF,count:function(){return this.eachAfter(QP)},each:function(t,e){let r=-1;for(const n of this)t.call(e,n,++r,this);return this},eachAfter:function(t,e){for(var r,n,o,i=this,a=[i],c=[],u=-1;i=a.pop();)if(c.push(i),r=i.children)for(n=0,o=r.length;n=0;--n)i.push(r[n]);return this},find:function(t,e){let r=-1;for(const n of this)if(t.call(e,n,++r,this))return n},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,n=e.children,o=n&&n.length;--o>=0;)r+=n[o].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),o=null;t=r.pop(),e=n.pop();for(;t===e;)o=t,t=r.pop(),e=n.pop();return o}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var o=n.length;t!==r;)n.splice(o,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return KP(this).eachBefore(rF)},[Symbol.iterator]:function*(){var t,e,r,n,o=this,i=[o];do{for(t=i.reverse(),i=[];o=t.pop();)if(yield o,e=o.children)for(r=0,n=e.length;r0&&r*r>n*n+o*o}function bF(t,e){for(var r=0;r1e-6?(D+Math.sqrt(D*D-4*E*j))/(2*E):j/D);return{x:n+w+_*S,y:o+C+O*S,r:S}}function yF(t,e,r){var n,o,i,a,c=t.x-e.x,u=t.y-e.y,l=c*c+u*u;l?(o=e.r+r.r,o*=o,a=t.r+r.r,o>(a*=a)?(n=(l+a-o)/(2*l),i=Math.sqrt(Math.max(0,a/l-n*n)),r.x=t.x-n*c-i*u,r.y=t.y-n*u+i*c):(n=(l+o-a)/(2*l),i=Math.sqrt(Math.max(0,o/l-n*n)),r.x=e.x+n*c-i*u,r.y=e.y+n*u+i*c)):(r.x=e.x+r.r,r.y=e.y)}function xF(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,o=e.y-t.y;return r>0&&r*r>n*n+o*o}function kF(t){var e=t._,r=t.next._,n=e.r+r.r,o=(e.x*r.r+r.x*e.r)/n,i=(e.y*r.r+r.y*e.r)/n;return o*o+i*i}function wF(t){this._=t,this.next=null,this.previous=null}function _F(t,e){if(!(i=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var r,n,o,i,a,c,u,l,s,d,h;if((r=t[0]).x=0,r.y=0,!(i>1))return r.r;if(n=t[1],r.x=-n.r,n.x=r.r,n.y=0,!(i>2))return r.r+n.r;yF(n,r,o=t[2]),r=new wF(r),n=new wF(n),o=new wF(o),r.next=o.previous=n,n.next=r.previous=o,o.next=n.previous=r;t:for(u=3;ufunction(t){t="".concat(t);let e=t.length;TF(t,e-1)&&!TF(t,e-2)&&(t=t.slice(0,-1));return"/"===t[0]?t:"/".concat(t)}(t(e,r,n)))),r=e.map(LF),o=new Set(e).add("");for(const t of r)o.has(t)||(o.add(t),e.push(t),r.push(LF(t)),h.push(NF));f=(t,r)=>e[r],p=(t,e)=>r[e]}for(a=0,o=h.length;a=0&&(l=h[t]).data===NF;--t)l.data=null}if(c.parent=AF,c.eachBefore((function(t){t.depth=t.parent.depth+1,--o})).eachBefore(nF),c.parent=null,o>0)throw new Error("cycle");return c}return n.id=function(t){return arguments.length?(e=iF(t),n):e},n.parentId=function(t){return arguments.length?(r=iF(t),n):r},n.path=function(e){return arguments.length?(t=iF(e),n):t},n}function LF(t){let e=t.length;if(e<2)return"";for(;--e>1&&!TF(t,e););return t.slice(0,e)}function TF(t,e){if("/"===t[e]){let r=0;for(;e>0&&"\\"===t[--e];)++r;if(0==(1&r))return!0}return!1}function RF(t,e){return t.parent===e.parent?1:2}function BF(t){var e=t.children;return e?e[0]:t.t}function IF(t){var e=t.children;return e?e[e.length-1]:t.t}function UF(t,e,r){var n=r/(e.i-t.i);e.c-=n,e.s+=r,t.c+=n,e.z+=r,e.m+=r}function qF(t,e,r){return t.a.parent===e.parent?t.a:r}function HF(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function WF(t,e,r,n,o){for(var i,a=t.children,c=-1,u=a.length,l=t.value&&(o-r)/t.value;++ch&&(h=c),g=s*s*b,(f=Math.max(h/g,g/d))>p){s-=c;break}p=f}m.push(a={value:s,dice:u1?e:1)},r}(VF);var $F=function t(e){function r(t,r,n,o,i){if((a=t._squarify)&&a.ratio===e)for(var a,c,u,l,s,d=-1,h=a.length,f=t.value;++d1?e:1)},r}(VF);function YF(t,e,r){const n={};return t.each((t=>{const o=t.data;r(o)&&(n[e(o)]=t)})),t.lookup=n,t}function XF(t){Sp.call(this,null,t)}XF.Definition={type:"Nest",metadata:{treesource:!0,changes:!0},params:[{name:"keys",type:"field",array:!0},{name:"generate",type:"boolean"}]};const JF=t=>t.values;function QF(){const t=[],e={entries:t=>n(r(t,0),0),key:r=>(t.push(r),e)};function r(e,n){if(n>=t.length)return e;const o=e.length,i=t[n++],a={},c={};let u,l,s,d=-1;for(;++dt.length)return e;const o=[];for(const t in e)o.push({key:t,values:n(e[t],r)});return o}return e}function KF(t){Sp.call(this,null,t)}Gc(XF,Sp,{transform(t,e){e.source||Ua("Nest transform requires an upstream data source.");var r=t.generate,n=t.modified(),o=e.clone(),i=this.value;return(!i||n||e.changed())&&(i&&i.each((t=>{t.children&&Yf(t.data)&&o.rem.push(t.data)})),this.value=i=KP({values:jc(t.keys).reduce(((t,e)=>(t.key(e),t)),QF()).entries(o.source)},JF),r&&i.each((t=>{t.children&&(t=Qf(t.data),o.add.push(t),o.source.push(t))})),YF(i,Xf,Xf)),o.source.root=i,o}});const tL=(t,e)=>t.parent===e.parent?1:2;Gc(KF,Sp,{transform(t,e){e.source&&e.source.root||Ua(this.constructor.name+" transform requires a backing tree data source.");const r=this.layout(t.method),n=this.fields,o=e.source.root,i=t.as||n;t.field?o.sum(t.field):o.count(),t.sort&&o.sort(rp(t.sort,(t=>t.data))),function(t,e,r){for(let n,o=0,i=e.length;ofunction(t,e,r){const n=t.data,o=e.length-1;for(let i=0;i(t=(lF*t+sF)%dF)/dF}();return o.x=e/2,o.y=r/2,t?o.eachBefore(OF(t)).eachAfter(EF(n,.5,i)).eachBefore(DF(1)):o.eachBefore(OF(CF)).eachAfter(EF(cF,1,i)).eachAfter(EF(n,o.r/Math.min(e,r),i)).eachBefore(DF(Math.min(e,r)/(2*o.r))),o}return o.radius=function(e){return arguments.length?(t=iF(e),o):t},o.size=function(t){return arguments.length?(e=+t[0],r=+t[1],o):[e,r]},o.padding=function(t){return arguments.length?(n="function"==typeof t?t:uF(+t),o):n},o},params:["radius","size","padding"],fields:eL});const nL=["x0","y0","x1","y1","depth","children"];function oL(t){KF.call(this,t)}function iL(t){Sp.call(this,null,t)}oL.Definition={type:"Partition",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:nL.length,default:nL}]},Gc(oL,KF,{layout:function(){var t=1,e=1,r=0,n=!1;function o(o){var i=o.height+1;return o.x0=o.y0=r,o.x1=t,o.y1=e/i,o.eachBefore(function(t,e){return function(n){n.children&&SF(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var o=n.x0,i=n.y0,a=n.x1-r,c=n.y1-r;a=0;--o)c.push(r=e.children[o]=new HF(n[o],o)),r.parent=e;return(a.parent=new HF(null,0)).children=[a],a}(o);if(u.eachAfter(i),u.parent.m=-u.z,u.eachBefore(a),n)o.eachBefore(c);else{var l=o,s=o,d=o;o.eachBefore((function(t){t.xs.x&&(s=t),t.depth>d.depth&&(d=t)}));var h=l===s?1:t(l,s)/2,f=h-l.x,p=e/(s.x+h+f),b=r/(d.depth||1);o.eachBefore((function(t){t.x=(t.x+f)*p,t.y=t.depth*b}))}return o}function i(e){var r=e.children,n=e.parent.children,o=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,o=t.children,i=o.length;--i>=0;)(e=o[i]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var i=(r[0].z+r[r.length-1].z)/2;o?(e.z=o.z+t(e._,o._),e.m=e.z-i):e.z=i}else o&&(e.z=o.z+t(e._,o._));e.parent.A=function(e,r,n){if(r){for(var o,i=e,a=e,c=r,u=i.parent.children[0],l=i.m,s=a.m,d=c.m,h=u.m;c=IF(c),i=BF(i),c&&i;)u=BF(u),(a=IF(a)).a=e,(o=c.z+d-i.z-l+t(c._,i._))>0&&(UF(qF(c,e,n),e,o),l+=o,s+=o),d+=c.m,l+=i.m,h+=u.m,s+=a.m;c&&!IF(a)&&(a.t=c,a.m+=d-s),i&&!BF(u)&&(u.t=i,u.m+=l-h,n=e)}return n}(e,o,e.parent.A||n[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function c(t){t.x*=e,t.y=t.depth*r}return o.separation=function(e){return arguments.length?(t=e,o):t},o.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],o):n?null:[e,r]},o.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],o):n?[e,r]:null},o},cluster:function(){var t=YP,e=1,r=1,n=!1;function o(o){var i,a=0;o.eachAfter((function(e){var r=e.children;r?(e.x=function(t){return t.reduce(XP,0)/t.length}(r),e.y=function(t){return 1+t.reduce(JP,0)}(r)):(e.x=i?a+=t(e,i):0,e.y=0,i=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(o),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(o),l=c.x-t(c,u)/2,s=u.x+t(u,c)/2;return o.eachAfter(n?function(t){t.x=(t.x-o.x)*e,t.y=(o.y-t.y)*r}:function(t){t.x=(t.x-l)/(s-l)*e,t.y=(1-(o.y?t.y/o.y:1))*r})}return o.separation=function(e){return arguments.length?(t=e,o):t},o.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],o):n?null:[e,r]},o.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],o):n?[e,r]:null},o}},cL=["x","y","depth","children"];function uL(t){KF.call(this,t)}function lL(t){Sp.call(this,[],t)}uL.Definition={type:"Tree",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"tidy",values:["tidy","cluster"]},{name:"size",type:"number",array:!0,length:2},{name:"nodeSize",type:"number",array:!0,length:2},{name:"separation",type:"boolean",default:!0},{name:"as",type:"string",array:!0,length:cL.length,default:cL}]},Gc(uL,KF,{layout(t){const e=t||"tidy";if(Hc(aL,e))return aL[e]();Ua("Unrecognized Tree layout method: "+e)},params:["size","nodeSize"],fields:cL}),lL.Definition={type:"TreeLinks",metadata:{tree:!0,generates:!0,changes:!0},params:[]},Gc(lL,Sp,{transform(t,e){const r=this.value,n=e.source&&e.source.root,o=e.fork(e.NO_SOURCE),i={};return n||Ua("TreeLinks transform requires a tree data source."),e.changed(e.ADD_REM)?(o.rem=r,e.visit(e.SOURCE,(t=>i[Xf(t)]=1)),n.each((t=>{const e=t.data,r=t.parent&&t.parent.data;r&&i[Xf(e)]&&i[Xf(r)]&&o.add.push(Qf({source:r,target:e}))})),this.value=o.add):e.changed(e.MOD)&&(e.visit(e.MOD,(t=>i[Xf(t)]=1)),r.forEach((t=>{(i[Xf(t.source)]||i[Xf(t.target)])&&o.mod.push(t)}))),o}});const sL={binary:function(t,e,r,n,o){var i,a,c=t.children,u=c.length,l=new Array(u+1);for(l[0]=a=i=0;i=r-1){var s=c[e];return s.x0=o,s.y0=i,s.x1=a,void(s.y1=u)}var d=l[e],h=n/2+d,f=e+1,p=r-1;for(;f>>1;l[b]u-i){var v=n?(o*m+a*g)/n:a;t(e,f,g,o,i,v,u),t(f,r,m,v,i,a,u)}else{var y=n?(i*m+u*g)/n:u;t(e,f,g,o,i,a,y),t(f,r,m,o,y,a,u)}}(0,u,t.value,e,r,n,o)},dice:SF,slice:WF,slicedice:function(t,e,r,n,o){(1&t.depth?WF:SF)(t,e,r,n,o)},squarify:GF,resquarify:$F},dL=["x0","y0","x1","y1","depth","children"];function hL(t){KF.call(this,t)}hL.Definition={type:"Treemap",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"squarify",values:["squarify","resquarify","binary","dice","slice","slicedice"]},{name:"padding",type:"number",default:0},{name:"paddingInner",type:"number",default:0},{name:"paddingOuter",type:"number",default:0},{name:"paddingTop",type:"number",default:0},{name:"paddingRight",type:"number",default:0},{name:"paddingBottom",type:"number",default:0},{name:"paddingLeft",type:"number",default:0},{name:"ratio",type:"number",default:1.618033988749895},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:dL.length,default:dL}]},Gc(hL,KF,{layout(){const t=function(){var t=GF,e=!1,r=1,n=1,o=[0],i=cF,a=cF,c=cF,u=cF,l=cF;function s(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(d),o=[0],e&&t.eachBefore(jF),t}function d(e){var r=o[e.depth],n=e.x0+r,s=e.y0+r,d=e.x1-r,h=e.y1-r;d{const r=t.tile();r.ratio&&t.tile(r.ratio(e))},t.method=e=>{Hc(sL,e)?t.tile(sL[e]):Ua("Unrecognized Treemap layout method: "+e)},t},params:["method","ratio","size","round","padding","paddingInner","paddingOuter","paddingTop","paddingRight","paddingBottom","paddingLeft"],fields:dL});var fL=Object.freeze({__proto__:null,nest:XF,pack:rL,partition:oL,stratify:iL,tree:uL,treelinks:lL,treemap:hL});const pL=4278190080;function bL(t,e,r){return new Uint32Array(t.getImageData(0,0,e,r).data.buffer)}function gL(t,e,r){if(!e.length)return;const n=e[0].mark.marktype;"group"===n?e.forEach((e=>{e.items.forEach((e=>gL(t,e.items,r)))})):fO[n].draw(t,{items:r?e.map(mL):e})}function mL(t){const e=tp(t,{});return e.stroke&&0!==e.strokeOpacity||e.fill&&0!==e.fillOpacity?{...e,strokeOpacity:1,stroke:"#000",fillOpacity:0}:e}const vL=5,yL=31,xL=32,kL=new Uint32Array(xL+1),wL=new Uint32Array(xL+1);wL[0]=0,kL[0]=~wL[0];for(let Set=1;Set<=xL;++Set)wL[Set]=wL[Set-1]<<1|1,kL[Set]=~wL[Set];function _L(t,e,r){const n=Math.max(1,Math.sqrt(t*e/1e6)),o=~~((t+2*r+n)/n),i=~~((e+2*r+n)/n),a=t=>~~((t+r)/n);return a.invert=t=>t*n-r,a.bitmap=()=>function(t,e){const r=new Uint32Array(~~((t*e+xL)/xL));function n(t,e){r[t]|=e}function o(t,e){r[t]&=e}return{array:r,get:(e,n)=>{const o=n*t+e;return r[o>>>vL]&1<<(o&yL)},set:(e,r)=>{const o=r*t+e;n(o>>>vL,1<<(o&yL))},clear:(e,r)=>{const n=r*t+e;o(n>>>vL,~(1<<(n&yL)))},getRange:(e,n,o,i)=>{let a,c,u,l,s=i;for(;s>=n;--s)if(a=s*t+e,c=s*t+o,u=a>>>vL,l=c>>>vL,u===l){if(r[u]&kL[a&yL]&wL[1+(c&yL)])return!0}else{if(r[u]&kL[a&yL])return!0;if(r[l]&wL[1+(c&yL)])return!0;for(let t=u+1;t{let a,c,u,l,s;for(;r<=i;++r)if(a=r*t+e,c=r*t+o,u=a>>>vL,l=c>>>vL,u===l)n(u,kL[a&yL]&wL[1+(c&yL)]);else for(n(u,kL[a&yL]),n(l,wL[1+(c&yL)]),s=u+1;s{let a,c,u,l,s;for(;r<=i;++r)if(a=r*t+e,c=r*t+n,u=a>>>vL,l=c>>>vL,u===l)o(u,wL[a&yL]|kL[1+(c&yL)]);else for(o(u,wL[a&yL]),o(l,kL[1+(c&yL)]),s=u+1;sr<0||n<0||i>=e||o>=t}}(o,i),a.ratio=n,a.padding=r,a.width=t,a.height=e,a}function CL(t,e,r,n,o,i){let a=r/2;return t-a<0||t+a>o||e-(a=n/2)<0||e+a>i}function OL(t,e,r,n,o,i,a,c){const u=o*i/(2*n),l=t(e-u),s=t(e+u),d=t(r-(i/=2)),h=t(r+i);return a.outOfBounds(l,d,s,h)||a.getRange(l,d,s,h)||c&&c.getRange(l,d,s,h)}const EL=[-1,-1,1,1],DL=[-1,1,-1,1];const jL=["right","center","left"],SL=["bottom","middle","top"];function AL(t,e,r,n,o,i,a,c,u,l,s,d){return!(o.outOfBounds(t,r,e,n)||(d&&i||o).getRange(t,r,e,n))}const ML={"top-left":0,top:1,"top-right":2,left:4,middle:5,right:6,"bottom-left":8,bottom:9,"bottom-right":10},NL={naive:function(t,e,r,n){const o=t.width,i=t.height;return function(t){const e=t.datum.datum.items[n].items,r=e.length,a=t.datum.fontSize,c=GC.width(t.datum,t.datum.text);let u,l,s,d,h,f,p,b=0;for(let n=0;n=b&&(b=p,t.x=h,t.y=f);return h=c/2,f=a/2,u=t.x-h,l=t.x+h,s=t.y-f,d=t.y+f,t.align="center",u<0&&l<=o?t.align="left":0<=u&&o=1;)h=(f+p)/2,OL(t,s,d,l,u,h,a,c)?p=h:f=h;if(f>n)return[s,d,f,!0]}}return function(e){const c=e.datum.datum.items[n].items,l=c.length,s=e.datum.fontSize,d=GC.width(e.datum,e.datum.text);let h,f,p,b,g,m,v,y,x,k,w,_,C,O,E,D,j,S=r?s:0,A=!1,M=!1,N=0;for(let n=0;nf&&(j=h,h=f,f=j),p>b&&(j=p,p=b,b=j),x=t(h),w=t(f),k=~~((x+w)/2),_=t(p),O=t(b),C=~~((_+O)/2),v=k;v>=x;--v)for(y=C;y>=_;--y)D=u(v,y,S,d,s),D&&([e.x,e.y,S,A]=D);for(v=k;v<=w;++v)for(y=C;y<=O;++y)D=u(v,y,S,d,s),D&&([e.x,e.y,S,A]=D);A||r||(E=Math.abs(f-h+b-p),g=(h+f)/2,m=(p+b)/2,E>=N&&!CL(g,m,d,s,o,i)&&!OL(t,g,m,s,d,s,a,null)&&(N=E,e.x=g,e.y=m,M=!0))}return!(!A&&!M)&&(g=d/2,m=s/2,a.setRange(t(e.x-g),t(e.y-m),t(e.x+g),t(e.y+m)),e.align="center",e.baseline="middle",!0)}},floodfill:function(t,e,r,n){const o=t.width,i=t.height,a=e[0],c=e[1],u=t.bitmap();return function(e){const l=e.datum.datum.items[n].items,s=l.length,d=e.datum.fontSize,h=GC.width(e.datum,e.datum.text),f=[];let p,b,g,m,v,y,x,k,w,_,C,O,E=r?d:0,D=!1,j=!1,S=0;for(let n=0;n=1;)C=(w+_)/2,OL(t,v,y,d,h,C,a,c)?_=C:w=C;w>E&&(e.x=v,e.y=y,E=w,D=!0)}}D||r||(O=Math.abs(b-p+m-g),v=(p+b)/2,y=(g+m)/2,O>=S&&!CL(v,y,h,d,o,i)&&!OL(t,v,y,d,h,d,a,null)&&(S=O,e.x=v,e.y=y,j=!0))}return!(!D&&!j)&&(v=h/2,y=d/2,a.setRange(t(e.x-v),t(e.y-y),t(e.x+v),t(e.y+y)),e.align="center",e.baseline="middle",!0)}}};function zL(t,e,r,n,o,i,a,c,u,l,s){if(!t.length)return t;const d=Math.max(n.length,o.length),h=function(t,e){const r=new Float64Array(e),n=t.length;for(let o=0;o[t.x,t.x,t.x,t.y,t.y,t.y];return t?"line"===t||"area"===t?t=>o(t.datum):"line"===e?t=>{const e=t.datum.items[n].items;return o(e.length?e["start"===r?0:e.length-1]:{x:NaN,y:NaN})}:t=>{const e=t.datum.bounds;return[e.x1,(e.x1+e.x2)/2,e.x2,e.y1,(e.y1+e.y2)/2,e.y2]}:o}(p,b,c,u),v=null===l||l===1/0,y=g&&"naive"===s;var x;let k=-1,w=-1;const _=t.map((t=>{const e=v?GC.width(t,t.text):void 0;return k=Math.max(k,e),w=Math.max(w,t.fontSize),{datum:t,opacity:0,x:void 0,y:void 0,align:void 0,baseline:void 0,boundary:m(t),textWidth:e}}));l=null===l||l===1/0?Math.max(k,w)+Math.max(...n):l;const C=_L(e[0],e[1],l);let O;if(!y){r&&_.sort(((t,e)=>r(t.datum,e.datum)));let e=!1;for(let t=0;tt.datum));O=i.length||n?function(t,e,r,n,o){const i=t.width,a=t.height,c=n||o,u=dv(i,a).getContext("2d"),l=dv(i,a).getContext("2d"),s=c&&dv(i,a).getContext("2d");r.forEach((t=>gL(u,t,!1))),gL(l,e,!1),c&&gL(s,e,!0);const d=bL(u,i,a),h=bL(l,i,a),f=c&&bL(s,i,a),p=t.bitmap(),b=c&&t.bitmap();let g,m,v,y,x,k,w,_;for(m=0;mr.set(t(e.boundary[0]),t(e.boundary[3])))),[r,void 0]}(C,a&&_)}const E=g?NL[s](C,O,a,u):function(t,e,r,n){const o=t.width,i=t.height,a=e[0],c=e[1],u=n.length;return function(e){var l;const s=e.boundary,d=e.datum.fontSize;if(s[2]<0||s[5]<0||s[0]>o||s[3]>i)return!1;let h,f,p,b,g,m,v,y,x,k,w,_,C,O,E,D=null!==(l=e.textWidth)&&void 0!==l?l:0;for(let o=0;o>>2&3)-1,p=0===h&&0===f||n[o]<0,b=h&&f?Math.SQRT1_2:1,g=n[o]<0?-1:1,m=s[1+h]+n[o]*h*b,w=s[4+f]+g*d*f/2+n[o]*f*b,y=w-d/2,x=w+d/2,_=t(m),O=t(y),E=t(x),!D){if(!AL(_,_,O,E,a,c,0,0,0,0,0,p))continue;D=GC.width(e.datum,e.datum.text)}if(k=m+g*D*h/2,m=k-D/2,v=k+D/2,_=t(m),C=t(v),AL(_,C,O,E,a,c,0,0,0,0,0,p))return e.x=h?h*g<0?v:m:k,e.y=f?f*g<0?x:y:w,e.align=jL[h*g+1],e.baseline=SL[f*g+1],a.setRange(_,O,C,E),!0}return!1}}(C,O,f,h);return _.forEach((t=>t.opacity=+E(t))),_}const PL=["x","y","opacity","align","baseline"],FL=["top-left","left","bottom-left","top","bottom","top-right","right","bottom-right"];function LL(t){Sp.call(this,null,t)}LL.Definition={type:"Label",metadata:{modifies:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"sort",type:"compare"},{name:"anchor",type:"string",array:!0,default:FL},{name:"offset",type:"number",array:!0,default:[1]},{name:"padding",type:"number",default:0,null:!0},{name:"lineAnchor",type:"string",values:["start","end"],default:"end"},{name:"markIndex",type:"number",default:0},{name:"avoidBaseMark",type:"boolean",default:!0},{name:"avoidMarks",type:"data",array:!0},{name:"method",type:"string",default:"naive"},{name:"as",type:"string",array:!0,length:PL.length,default:PL}]},Gc(LL,Sp,{transform(t,e){const r=t.modified();if(!(r||e.changed(e.ADD_REM)||function(r){const n=t[r];return Ac(n)&&e.modified(n.fields)}("sort")))return;t.size&&2===t.size.length||Ua("Size parameter should be specified as a [width, height] array.");const n=t.as||PL;return zL(e.materialize(e.SOURCE).source||[],t.size,t.sort,jc(null==t.offset?1:t.offset),jc(t.anchor||FL),t.avoidMarks||[],!1!==t.avoidBaseMark,t.lineAnchor||"end",t.markIndex||0,void 0===t.padding?0:t.padding,t.method||"naive").forEach((t=>{const e=t.datum;e[n[0]]=t.x,e[n[1]]=t.y,e[n[2]]=t.opacity,e[n[3]]=t.align,e[n[4]]=t.baseline})),e.reflow(r).modifies(n)}});var TL=Object.freeze({__proto__:null,label:LL});function RL(t,e){var r,n,o,i,a,c,u=[],l=function(t){return t(i)};if(null==e)u.push(t);else for(r={},n=0,o=t.length;n{yb(e,t.x,t.y,t.bandwidth||.3).forEach((t=>{const r={};for(let n=0;n"poly"===t?e:"quad"===t?2:1)(i,a),u=t.as||[La(t.x),La(t.y)],l=IL[i],s=[];let d=t.extent;Hc(IL,i)||Ua("Invalid regression method: "+i),null!=d&&"log"===i&&d[0]<=0&&(e.dataflow.warn("Ignoring extent with values <= 0 for log regression."),d=null),n.forEach((r=>{if(r.length<=c)return void e.dataflow.warn("Skipping regression with more parameters than data points.");const n=l(r,t.x,t.y,a);if(t.params)return void s.push(Qf({keys:r.dims,coef:n.coef,rSquared:n.rSquared}));const h=d||Ic(r,t.x),f=t=>{const e={};for(let n=0;nf([t,n.predict(t)]))):_b(n.predict,h,25,200).forEach(f)})),this.value&&(r.rem=this.value),this.value=r.add=r.source=s}return r}});var qL=Object.freeze({__proto__:null,loess:BL,regression:UL});const HL=134217729,WL=33306690738754706e-32;function VL(t,e,r,n,o){let i,a,c,u,l=e[0],s=n[0],d=0,h=0;s>l==s>-l?(i=l,l=e[++d]):(i=s,s=n[++h]);let f=0;if(dl==s>-l?(a=l+i,c=i-(a-l),l=e[++d]):(a=s+i,c=i-(a-s),s=n[++h]),i=a,0!==c&&(o[f++]=c);dl==s>-l?(a=i+l,u=a-i,c=i-(a-u)+(l-u),l=e[++d]):(a=i+s,u=a-i,c=i-(a-u)+(s-u),s=n[++h]),i=a,0!==c&&(o[f++]=c);for(;d=33306690738754716e-32*l?u:-function(t,e,r,n,o,i,a){let c,u,l,s,d,h,f,p,b,g,m,v,y,x,k,w,_,C;const O=t-o,E=r-o,D=e-i,j=n-i;x=O*j,h=HL*O,f=h-(h-O),p=O-f,h=HL*j,b=h-(h-j),g=j-b,k=p*g-(x-f*b-p*b-f*g),w=D*E,h=HL*D,f=h-(h-D),p=D-f,h=HL*E,b=h-(h-E),g=E-b,_=p*g-(w-f*b-p*b-f*g),m=k-_,d=k-m,YL[0]=k-(m+d)+(d-_),v=x+m,d=v-x,y=x-(v-d)+(m-d),m=y-w,d=y-m,YL[1]=y-(m+d)+(d-w),C=v+m,d=C-v,YL[2]=v-(C-d)+(m-d),YL[3]=C;let S=function(t,e){let r=e[0];for(let n=1;n=A||-S>=A)return S;if(d=t-O,c=t-(O+d)+(d-o),d=r-E,l=r-(E+d)+(d-o),d=e-D,u=e-(D+d)+(d-i),d=n-j,s=n-(j+d)+(d-i),0===c&&0===u&&0===l&&0===s)return S;if(A=$L*a+WL*Math.abs(S),S+=O*s+j*c-(D*l+E*u),S>=A||-S>=A)return S;x=c*j,h=HL*c,f=h-(h-c),p=c-f,h=HL*j,b=h-(h-j),g=j-b,k=p*g-(x-f*b-p*b-f*g),w=u*E,h=HL*u,f=h-(h-u),p=u-f,h=HL*E,b=h-(h-E),g=E-b,_=p*g-(w-f*b-p*b-f*g),m=k-_,d=k-m,KL[0]=k-(m+d)+(d-_),v=x+m,d=v-x,y=x-(v-d)+(m-d),m=y-w,d=y-m,KL[1]=y-(m+d)+(d-w),C=v+m,d=C-v,KL[2]=v-(C-d)+(m-d),KL[3]=C;const M=VL(4,YL,4,KL,XL);x=O*s,h=HL*O,f=h-(h-O),p=O-f,h=HL*s,b=h-(h-s),g=s-b,k=p*g-(x-f*b-p*b-f*g),w=D*l,h=HL*D,f=h-(h-D),p=D-f,h=HL*l,b=h-(h-l),g=l-b,_=p*g-(w-f*b-p*b-f*g),m=k-_,d=k-m,KL[0]=k-(m+d)+(d-_),v=x+m,d=v-x,y=x-(v-d)+(m-d),m=y-w,d=y-m,KL[1]=y-(m+d)+(d-w),C=v+m,d=C-v,KL[2]=v-(C-d)+(m-d),KL[3]=C;const N=VL(M,XL,4,KL,JL);x=c*s,h=HL*c,f=h-(h-c),p=c-f,h=HL*s,b=h-(h-s),g=s-b,k=p*g-(x-f*b-p*b-f*g),w=u*l,h=HL*u,f=h-(h-u),p=u-f,h=HL*l,b=h-(h-l),g=l-b,_=p*g-(w-f*b-p*b-f*g),m=k-_,d=k-m,KL[0]=k-(m+d)+(d-_),v=x+m,d=v-x,y=x-(v-d)+(m-d),m=y-w,d=y-m,KL[1]=y-(m+d)+(d-w),C=v+m,d=C-v,KL[2]=v-(C-d)+(m-d),KL[3]=C;const z=VL(N,JL,4,KL,QL);return QL[z-1]}(t,e,r,n,o,i,l)}const eT=Math.pow(2,-52),rT=new Uint32Array(512);class nT{static from(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:lT,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:sT;const n=t.length,o=new Float64Array(2*n);for(let i=0;i>1;if(e>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const r=Math.max(2*e-5,0);this._triangles=new Uint32Array(3*r),this._halfedges=new Int32Array(3*r),this._hashSize=Math.ceil(Math.sqrt(e)),this._hullPrev=new Uint32Array(e),this._hullNext=new Uint32Array(e),this._hullTri=new Uint32Array(e),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(e),this._dists=new Float64Array(e),this.update()}update(){const{coords:t,_hullPrev:e,_hullNext:r,_hullTri:n,_hullHash:o}=this,i=t.length>>1;let a=1/0,c=1/0,u=-1/0,l=-1/0;for(let O=0;Ou&&(u=e),r>l&&(l=r),this._ids[O]=O}const s=(a+u)/2,d=(c+l)/2;let h,f,p,b=1/0;for(let O=0;O0&&(f=O,b=e)}let v=t[2*f],y=t[2*f+1],x=1/0;for(let O=0;On&&(e[r++]=o,n=this._dists[o])}return this.hull=e.subarray(0,r),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(tT(g,m,v,y,k,w)<0){const t=f,e=v,r=y;f=p,v=k,y=w,p=t,k=e,w=r}const _=function(t,e,r,n,o,i){const a=r-t,c=n-e,u=o-t,l=i-e,s=a*a+c*c,d=u*u+l*l,h=.5/(a*l-c*u),f=t+(l*s-c*d)*h,p=e+(a*d-u*s)*h;return{x:f,y:p}}(g,m,v,y,k,w);this._cx=_.x,this._cy=_.y;for(let O=0;O0&&Math.abs(a-O)<=eT&&Math.abs(c-E)<=eT)continue;if(O=a,E=c,i===h||i===f||i===p)continue;let u=0;for(let t=0,e=this._hashKey(a,c);t=0;)if(s=l,s===u){s=-1;break}if(-1===s)continue;let d=this._addTriangle(s,i,r[s],-1,-1,n[s]);n[i]=this._legalize(d+2),n[s]=d,C++;let b=r[s];for(;l=r[b],tT(a,c,t[2*b],t[2*b+1],t[2*l],t[2*l+1])<0;)d=this._addTriangle(b,i,l,n[i],-1,n[b]),n[i]=this._legalize(d+2),r[b]=b,C--,b=l;if(s===u)for(;l=e[s],tT(a,c,t[2*l],t[2*l+1],t[2*s],t[2*s+1])<0;)d=this._addTriangle(l,i,s,-1,n[s],n[l]),this._legalize(d+2),n[l]=d,r[s]=s,C--,s=l;this._hullStart=e[i]=s,r[s]=e[b]=i,r[i]=b,o[this._hashKey(a,c)]=i,o[this._hashKey(t[2*s],t[2*s+1])]=s}this.hull=new Uint32Array(C);for(let O=0,E=this._hullStart;O0?3-r:1+r)/4}(t-this._cx,e-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:e,_halfedges:r,coords:n}=this;let o=0,i=0;for(;;){const a=r[t],c=t-t%3;if(i=c+(t+2)%3,-1===a){if(0===o)break;t=rT[--o];continue}const u=a-a%3,l=c+(t+1)%3,s=u+(a+2)%3,d=e[i],h=e[t],f=e[l],p=e[s];if(iT(n[2*d],n[2*d+1],n[2*h],n[2*h+1],n[2*f],n[2*f+1],n[2*p],n[2*p+1])){e[t]=p,e[a]=d;const n=r[s];if(-1===n){let e=this._hullStart;do{if(this._hullTri[e]===s){this._hullTri[e]=t;break}e=this._hullPrev[e]}while(e!==this._hullStart)}this._link(t,n),this._link(a,r[i]),this._link(i,s);const c=u+(a+1)%3;o=r&&e[t[a]]>i;)t[a+1]=t[a--];t[a+1]=n}else{let o=r+1,i=n;uT(t,r+n>>1,o),e[t[r]]>e[t[n]]&&uT(t,r,n),e[t[o]]>e[t[n]]&&uT(t,o,n),e[t[r]]>e[t[o]]&&uT(t,r,o);const a=t[o],c=e[a];for(;;){do{o++}while(e[t[o]]c);if(i=i-r?(cT(t,e,o,n),cT(t,e,r,i-1)):(cT(t,e,r,i-1),cT(t,e,o,n))}}function uT(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function lT(t){return t[0]}function sT(t){return t[1]}const dT=1e-6;class hT{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,e){this._+="M".concat(this._x0=this._x1=+t,",").concat(this._y0=this._y1=+e)}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,e){this._+="L".concat(this._x1=+t,",").concat(this._y1=+e)}arc(t,e,r){const n=(t=+t)+(r=+r),o=e=+e;if(r<0)throw new Error("negative radius");null===this._x1?this._+="M".concat(n,",").concat(o):(Math.abs(this._x1-n)>dT||Math.abs(this._y1-o)>dT)&&(this._+="L"+n+","+o),r&&(this._+="A".concat(r,",").concat(r,",0,1,1,").concat(t-r,",").concat(e,"A").concat(r,",").concat(r,",0,1,1,").concat(this._x1=n,",").concat(this._y1=o))}rect(t,e,r,n){this._+="M".concat(this._x0=this._x1=+t,",").concat(this._y0=this._y1=+e,"h").concat(+r,"v").concat(+n,"h").concat(-r,"Z")}value(){return this._||null}}class fT{constructor(){this._=[]}moveTo(t,e){this._.push([t,e])}closePath(){this._.push(this._[0].slice())}lineTo(t,e){this._.push([t,e])}value(){return this._.length?this._:null}}let pT=class{constructor(t){let[e,r,n,o]=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0,960,500];if(!((n=+n)>=(e=+e)&&(o=+o)>=(r=+r)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=n,this.xmin=e,this.ymax=o,this.ymin=r,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:e,triangles:r},vectors:n}=this;let o,i;const a=this.circumcenters=this._circumcenters.subarray(0,r.length/3*2);for(let p,b,g=0,m=0,v=r.length;g1;)o-=2;for(let i=2;i0){if(e>=this.ymax)return null;(o=(this.ymax-e)/n)0){if(t>=this.xmax)return null;(o=(this.xmax-t)/r)this.xmax?2:0)|(ethis.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:mT,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:vT,n=arguments.length>3?arguments[3]:void 0;return new xT("length"in t?function(t,e,r,n){const o=t.length,i=new Float64Array(2*o);for(let a=0;a2&&function(t){const{triangles:e,coords:r}=t;for(let n=0;n1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:e.length/2},((t,e)=>e)).sort(((t,r)=>e[2*t]-e[2*r]||e[2*t+1]-e[2*r+1]));const t=this.collinear[0],r=this.collinear[this.collinear.length-1],n=[e[2*t],e[2*t+1],e[2*r],e[2*r+1]],o=1e-8*Math.hypot(n[3]-n[1],n[2]-n[0]);for(let i=0,a=e.length/2;i0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=n[0],i[n[0]]=1,2===n.length&&(i[n[1]]=0,this.triangles[1]=n[1],this.triangles[2]=n[1]))}voronoi(t){return new pT(this,t)}*neighbors(t){const{inedges:e,hull:r,_hullIndex:n,halfedges:o,triangles:i,collinear:a}=this;if(a){const e=a.indexOf(t);return e>0&&(yield a[e-1]),void(e2&&void 0!==arguments[2]?arguments[2]:0;if((t=+t)!=t||(e=+e)!=e)return-1;const n=r;let o;for(;(o=this._step(r,t,e))>=0&&o!==r&&o!==n;)r=o;return o}_step(t,e,r){const{inedges:n,hull:o,_hullIndex:i,halfedges:a,triangles:c,points:u}=this;if(-1===n[t]||!u.length)return(t+1)%(u.length>>1);let l=t,s=gT(e-u[2*t],2)+gT(r-u[2*t+1],2);const d=n[t];let h=d;do{let n=c[h];const d=gT(e-u[2*n],2)+gT(r-u[2*n+1],2);if(d=d));)if(e.x=a+o,e.y=l+i,!(e.x+e.x0<0||e.y+e.y0<0||e.x+e.x1>c[0]||e.y+e.y1>c[1])&&(!r||!AT(e,t,c[0]))&&(!r||NT(e,r))){for(var b,g=e.sprite,m=e.width>>5,v=c[0]>>5,y=e.x-(m<<4),x=127&y,k=32-x,w=e.y1-e.y0,_=(e.y+e.y0)*v+(y>>5),C=0;C>>x:0);_+=v}return e.sprite=null,!0}return!1}return d.layout=function(){for(var u=function(t){t.width=t.height=1;var e=Math.sqrt(t.getContext("2d").getImageData(0,0,1,1).data.length>>2);t.width=(ET<<5)/e,t.height=DT/e;var r=t.getContext("2d");return r.fillStyle=r.strokeStyle="red",r.textAlign="center",{context:r,ratio:e}}(dv()),d=function(t){var e=[],r=-1;for(;++r>5)*c[1]),f=null,p=l.length,b=-1,g=[],m=l.map((c=>({text:t(c),font:e(c),style:n(c),weight:o(c),rotate:i(c),size:~~(r(c)+1e-14),padding:a(c),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:c}))).sort(((t,e)=>e.size-t.size));++b>1,v.y=c[1]*(s()+.5)>>1,ST(u,v,m,b),v.hasText&&h(d,v,f)&&(g.push(v),f?MT(f,v):f=[{x:v.x+v.x0,y:v.y+v.y0},{x:v.x+v.x1,y:v.y+v.y1}],v.x-=c[0]>>1,v.y-=c[1]>>1)}return g},d.words=function(t){return arguments.length?(l=t,d):l},d.size=function(t){return arguments.length?(c=[+t[0],+t[1]],d):c},d.font=function(t){return arguments.length?(e=PT(t),d):e},d.fontStyle=function(t){return arguments.length?(n=PT(t),d):n},d.fontWeight=function(t){return arguments.length?(o=PT(t),d):o},d.rotate=function(t){return arguments.length?(i=PT(t),d):i},d.text=function(e){return arguments.length?(t=PT(e),d):t},d.spiral=function(t){return arguments.length?(u=FT[t]||t,d):u},d.fontSize=function(t){return arguments.length?(r=PT(t),d):r},d.padding=function(t){return arguments.length?(a=PT(t),d):a},d.random=function(t){return arguments.length?(s=t,d):s},d}function ST(t,e,r,n){if(!e.sprite){var o=t.context,i=t.ratio;o.clearRect(0,0,(ET<<5)/i,DT/i);var a,c,u,l,s,d=0,h=0,f=0,p=r.length;for(--n;++n>5<<5,u=~~Math.max(Math.abs(v+y),Math.abs(v-y))}else a=a+31>>5<<5;if(u>f&&(f=u),d+a>=ET<<5&&(d=0,h+=f,f=0),h+u>=DT)break;o.translate((d+(a>>1))/i,(h+(u>>1))/i),e.rotate&&o.rotate(e.rotate*OT),o.fillText(e.text,0,0),e.padding&&(o.lineWidth=2*e.padding,o.strokeText(e.text,0,0)),o.restore(),e.width=a,e.height=u,e.xoff=d,e.yoff=h,e.x1=a>>1,e.y1=u>>1,e.x0=-e.x1,e.y0=-e.y1,e.hasText=!0,d+=a}for(var k=o.getImageData(0,0,(ET<<5)/i,DT/i).data,w=[];--n>=0;)if((e=r[n]).hasText){for(c=(a=e.width)>>5,u=e.y1-e.y0,l=0;l>5),E=k[(h+s)*(ET<<5)+(d+l)<<2]?1<<31-l%32:0;w[O]|=E,_|=E}_?C=s:(e.y0++,u--,s--,h++)}e.y1=e.y0+C,e.sprite=w.slice(0,(e.y1-e.y0)*c)}}}function AT(t,e,r){r>>=5;for(var n,o=t.sprite,i=t.width>>5,a=t.x-(i<<4),c=127&a,u=32-c,l=t.y1-t.y0,s=(t.y+t.y0)*r+(a>>5),d=0;d>>c:0))&e[s+h])return!0;s+=r}return!1}function MT(t,e){var r=t[0],n=t[1];e.x+e.x0n.x&&(n.x=e.x+e.x1),e.y+e.y1>n.y&&(n.y=e.y+e.y1)}function NT(t,e){return t.x+t.x1>e[0].x&&t.x+t.x0e[0].y&&t.y+t.y0e(t(r))}n.forEach((t=>{t[i[0]]=NaN,t[i[1]]=NaN,t[i[3]]=0}));const u=o.words(n).text(t.text).size(t.size||[500,500]).padding(t.padding||1).spiral(t.spiral||"archimedean").rotate(t.rotate||0).font(t.font||"sans-serif").fontStyle(t.fontStyle||"normal").fontWeight(t.fontWeight||"normal").fontSize(c).random(Rp).layout(),l=o.size(),s=l[0]>>1,d=l[1]>>1,h=u.length;for(let f,p,b=0;bnew Uint8Array(t),UT=t=>new Uint16Array(t),qT=t=>new Uint32Array(t);function HT(t,e,r){const n=(e<257?IT:e<65537?UT:qT)(t);return r&&n.set(r),n}function WT(t,e,r){const n=1<{const n=t[e],o=t[r];return no?1:0})),function(t,e){return Array.from(e,(e=>t[e]))}(t,e)}(h,u),a)l=e,s=t,e=Array(a+c),t=qT(a+c),function(t,e,r,n,o,i,a,c,u){let l,s=0,d=0;for(l=0;s0)for(d=0;dt,size:()=>r}}function ZT(t){Sp.call(this,function(){let t=8,e=[],r=qT(0),n=HT(0,t),o=HT(0,t);return{data:()=>e,seen:()=>r=function(t,e,r){return t.length>=e?t:((r=r||new t.constructor(e)).set(t),r)}(r,e.length),add(t){for(let r,n=0,o=e.length,i=t.length;ne.length,curr:()=>n,prev:()=>o,reset:t=>o[t]=n[t],all:()=>t<257?255:t<65537?65535:4294967295,set(t,e){n[t]|=e},clear(t,e){n[t]&=~e},resize(e,r){(e>n.length||r>t)&&(t=Math.max(r,t),n=HT(e,t,n),o=HT(e,t))}}}(),t),this._indices=null,this._dims=null}function GT(t){Sp.call(this,null,t)}ZT.Definition={type:"CrossFilter",metadata:{},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"query",type:"array",array:!0,required:!0,content:{type:"number",array:!0,length:2}}]},Gc(ZT,Sp,{transform(t,e){return this._dims?t.modified("fields")||t.fields.some((t=>e.modified(t.fields)))?this.reinit(t,e):this.eval(t,e):this.init(t,e)},init(t,e){const r=t.fields,n=t.query,o=this._indices={},i=this._dims=[],a=n.length;let c,u,l=0;for(;l{const t=o.remove(e,r);for(const e in n)n[e].reindex(t)}))},update(t,e,r){const n=this._dims,o=t.query,i=e.stamp,a=n.length;let c,u,l=0;for(r.filters=0,u=0;uf)for(g=f,m=Math.min(d,p);gp)for(g=Math.max(d,p),m=h;gs)for(f=s,p=Math.min(u,d);fd)for(f=Math.max(u,d),p=l;fc[t]&r?null:a[t];return i.filter(i.MOD,l),o&o-1?(i.filter(i.ADD,(t=>{const e=c[t]&r;return!e&&e^u[t]&r?a[t]:null})),i.filter(i.REM,(t=>{const e=c[t]&r;return e&&!(e^e^u[t]&r)?a[t]:null}))):(i.filter(i.ADD,l),i.filter(i.REM,(t=>(c[t]&r)===o?a[t]:null))),i.filter(i.SOURCE,(t=>l(t._index)))}});var $T=Object.freeze({__proto__:null,crossfilter:ZT,resolvefilter:GT});const YT="Literal",XT="Property",JT="ArrayExpression",QT="BinaryExpression",KT="CallExpression",tR="ConditionalExpression",eR="LogicalExpression",rR="MemberExpression",nR="ObjectExpression",oR="UnaryExpression";function iR(t){this.type=t}var aR,cR,uR,lR,sR;iR.prototype.visit=function(t){let e,r,n;if(t(this))return 1;for(e=function(t){switch(t.type){case JT:return t.elements;case QT:case eR:return[t.left,t.right];case KT:return[t.callee].concat(t.arguments);case tR:return[t.test,t.consequent,t.alternate];case rR:return[t.object,t.property];case nR:return t.properties;case XT:return[t.key,t.value];case oR:return[t.argument];default:return[]}}(this),r=0,n=e.length;r",aR[fR]="Identifier",aR[pR]="Keyword",aR[bR]="Null",aR[gR]="Numeric",aR[mR]="Punctuator",aR[vR]="String",aR[9]="RegularExpression";var yR="ArrayExpression",xR="BinaryExpression",kR="CallExpression",wR="ConditionalExpression",_R="Identifier",CR="Literal",OR="LogicalExpression",ER="MemberExpression",DR="ObjectExpression",jR="Property",SR="UnaryExpression",AR="Unexpected token %0",MR="Unexpected number",NR="Unexpected string",zR="Unexpected identifier",PR="Unexpected reserved word",FR="Unexpected end of input",LR="Invalid regular expression",TR="Invalid regular expression: missing /",RR="Octal literals are not allowed in strict mode.",BR="Duplicate data property in object literal not allowed in strict mode",IR="ILLEGAL",UR="Disabled.",qR=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),HR=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function WR(t,e){if(!t)throw new Error("ASSERT: "+e)}function VR(t){return t>=48&&t<=57}function ZR(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function GR(t){return"01234567".indexOf(t)>=0}function $R(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function YR(t){return 10===t||13===t||8232===t||8233===t}function XR(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===t||t>=128&&qR.test(String.fromCharCode(t))}function JR(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||92===t||t>=128&&HR.test(String.fromCharCode(t))}const QR={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function KR(){for(;uR1114111||"}"!==t)&&gB({},AR,IR),e<=65535?String.fromCharCode(e):(r=55296+(e-65536>>10),n=56320+(e-65536&1023),String.fromCharCode(r,n))}function rB(){var t,e;for(t=cR.charCodeAt(uR++),e=String.fromCharCode(t),92===t&&(117!==cR.charCodeAt(uR)&&gB({},AR,IR),++uR,(t=tB("u"))&&"\\"!==t&&XR(t.charCodeAt(0))||gB({},AR,IR),e=t);uR>>="===(n=cR.substr(uR,4))?{type:mR,value:n,start:o,end:uR+=4}:">>>"===(r=n.substr(0,3))||"<<="===r||">>="===r?{type:mR,value:r,start:o,end:uR+=3}:a===(e=r.substr(0,2))[1]&&"+-<>&|".indexOf(a)>=0||"=>"===e?{type:mR,value:e,start:o,end:uR+=2}:("//"===e&&gB({},AR,IR),"<>=!+-*%&|^/".indexOf(a)>=0?(++uR,{type:mR,value:a,start:o,end:uR}):void gB({},AR,IR))}function iB(){var t,e,r;if(WR(VR((r=cR[uR]).charCodeAt(0))||"."===r,"Numeric literal must start with a decimal digit or a decimal point"),e=uR,t="","."!==r){if(t=cR[uR++],r=cR[uR],"0"===t){if("x"===r||"X"===r)return++uR,function(t){let e="";for(;uR=0&&gB({},LR,r),{value:r,literal:e}}(),n=function(t,e){let r=t;e.indexOf("u")>=0&&(r=r.replace(/\\u\{([0-9a-fA-F]+)\}/g,((t,e)=>{if(parseInt(e,16)<=1114111)return"x";gB({},LR)})).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(r)}catch(h9){gB({},LR)}try{return new RegExp(t,e)}catch(n){return null}}(e.value,r.value),{literal:e.literal+r.literal,value:n,regex:{pattern:e.value,flags:r.value},start:t,end:uR}}function cB(){if(KR(),uR>=lR)return{type:hR,start:uR,end:uR};const t=cR.charCodeAt(uR);return XR(t)?nB():40===t||41===t||59===t?oB():39===t||34===t?function(){var t,e,r,n,o="",i=!1;for(WR("'"===(t=cR[uR])||'"'===t,"String literal must starts with a quote"),e=uR,++uR;uR=0&&uR(WR(e":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11}return e}function zB(){var t,e;return t=function(){var t,e,r,n,o,i,a,c,u,l;if(t=sR,u=MB(),0===(o=NB(n=sR)))return u;for(n.prec=o,uB(),e=[t,sR],i=[u,n,a=MB()];(o=NB(sR))>0;){for(;i.length>2&&o<=i[i.length-2].prec;)a=i.pop(),c=i.pop().value,u=i.pop(),e.pop(),r=sB(c,u,a),i.push(r);(n=uB()).prec=o,i.push(n),e.push(sR),r=MB(),i.push(r)}for(r=i[l=i.length-1],e.pop();l>1;)e.pop(),r=sB(i[l-1].value,i[l-2],r),l-=2;return r}(),yB("?")&&(uB(),e=zB(),vB(":"),t=function(t,e,r){const n=new iR(wR);return n.test=t,n.consequent=e,n.alternate=r,n}(t,e,zB())),t}function PB(){const t=zB();if(yB(","))throw new Error(UR);return t}function FB(t){uR=0,lR=(cR=t).length,sR=null,lB();const e=PB();if(sR.type!==hR)throw new Error("Unexpect token after expression.");return e}var LB={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function TB(t){function e(e,r,n){return o=>function(e,r,n,o){let i=t(r[0]);return n&&(i=n+"("+i+")",0===n.lastIndexOf("new ",0)&&(i="("+i+")")),i+"."+e+(o<0?"":0===o?"()":"("+r.slice(1).map(t).join(",")+")")}(e,o,r,n)}const r="new Date",n="String",o="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",hypot:"Math.hypot",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(e){e.length<3&&Ua("Missing arguments to clamp function."),e.length>3&&Ua("Too many arguments to clamp function.");const r=e.map(t);return"Math.max("+r[1]+", Math.min("+r[2]+","+r[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:e("getDate",r,0),day:e("getDay",r,0),year:e("getFullYear",r,0),month:e("getMonth",r,0),hours:e("getHours",r,0),minutes:e("getMinutes",r,0),seconds:e("getSeconds",r,0),milliseconds:e("getMilliseconds",r,0),time:e("getTime",r,0),timezoneoffset:e("getTimezoneOffset",r,0),utcdate:e("getUTCDate",r,0),utcday:e("getUTCDay",r,0),utcyear:e("getUTCFullYear",r,0),utcmonth:e("getUTCMonth",r,0),utchours:e("getUTCHours",r,0),utcminutes:e("getUTCMinutes",r,0),utcseconds:e("getUTCSeconds",r,0),utcmilliseconds:e("getUTCMilliseconds",r,0),length:e("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase",n,0),lower:e("toLowerCase",n,0),substring:e("substring",n),split:e("split",n),trim:e("trim",n,0),regexp:o,test:e("test",o),if:function(e){e.length<3&&Ua("Missing arguments to if function."),e.length>3&&Ua("Too many arguments to if function.");const r=e.map(t);return"("+r[0]+"?"+r[1]+":"+r[2]+")"}}}function RB(t){const e=(t=t||{}).allowed?fu(t.allowed):{},r=t.forbidden?fu(t.forbidden):{},n=t.constants||LB,o=(t.functions||TB)(d),i=t.globalvar,a=t.fieldvar,c=Ac(i)?i:t=>"".concat(i,'["').concat(t,'"]');let u={},l={},s=0;function d(t){if(tu(t))return t;const e=h[t.type];return null==e&&Ua("Unsupported type: "+t.type),e(t)}const h={Literal:t=>t.raw,Identifier:t=>{const o=t.name;return s>0?o:Hc(r,o)?Ua("Illegal identifier: "+o):Hc(n,o)?n[o]:Hc(e,o)?o:(u[o]=1,c(o))},MemberExpression:t=>{const e=!t.computed,r=d(t.object);e&&(s+=1);const n=d(t.property);return r===a&&(l[function(t){const e=t&&t.length-1;return e&&('"'===t[0]&&'"'===t[e]||"'"===t[0]&&"'"===t[e])?t.slice(1,-1):t}(n)]=1),e&&(s-=1),r+(e?"."+n:"["+n+"]")},CallExpression:t=>{"Identifier"!==t.callee.type&&Ua("Illegal callee type: "+t.callee.type);const e=t.callee.name,r=t.arguments,n=Hc(o,e)&&o[e];return n||Ua("Unrecognized function: "+e),Ac(n)?n(r):n+"("+r.map(d).join(",")+")"},ArrayExpression:t=>"["+t.elements.map(d).join(",")+"]",BinaryExpression:t=>"("+d(t.left)+" "+t.operator+" "+d(t.right)+")",UnaryExpression:t=>"("+t.operator+d(t.argument)+")",ConditionalExpression:t=>"("+d(t.test)+"?"+d(t.consequent)+":"+d(t.alternate)+")",LogicalExpression:t=>"("+d(t.left)+t.operator+d(t.right)+")",ObjectExpression:t=>"{"+t.properties.map(d).join(",")+"}",Property:t=>{s+=1;const e=d(t.key);return s-=1,e+":"+d(t.value)}};function f(t){const e={code:d(t),globals:Object.keys(u),fields:Object.keys(l)};return u={},l={},e}return f.functions=o,f.constants=n,f}function BB(t,e){return null==t||null==e?NaN:te?1:t>=e?0:NaN}function IB(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function UB(){return 0}function qB(t){return t instanceof Wu?t:new Wu(t)}const HB="intersect",WB="union",VB="_vgsid_",ZB=Ha(VB),GB="E",$B="R",YB="R-E",XB="R-LE",JB="R-RE",QB="index:unit";function KB(t,e){for(var r,n,o=e.fields,i=e.values,a=o.length,c=0;c2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(o>>1;r(t[e],n)<0?o=e+1:i=e}while(oBB(t(e),r),n=(e,r)=>t(e)-r):(e=t===BB||t===IB?t:UB,r=t,n=t),{left:o,center:function(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const i=o(t,e,r,(arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length)-1);return i>r&&n(t[i-1],e)>-n(t[i],e)?i-1:i},right:function(t,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length;if(o>>1;r(t[e],n)<=0?o=e+1:i=e}while(o1?e-1:0),n=1;ne.indexOf(t)>=0)):e},R_union:function(t,e){var r=sc(e[0]),n=sc(e[1]);return r>n&&(r=e[1],n=e[0]),t.length?(t[0]>r&&(t[0]=r),t[1]n&&(r=e[1],n=e[0]),t.length?nn&&(t[1]=n),t):[r,n]}};function oI(t,e,r,n){e[0].type!==YT&&Ua("First argument to selection functions must be a string literal.");const o=e[0].value,i="unit",a="@"+i,c=":"+o;(e.length>=2&&lc(e).value)!==HB||Hc(n,a)||(n[a]=r.getData(o).indataRef(r,i)),Hc(n,c)||(n[c]=r.getData(o).tuplesRef())}function iI(t){const e=this.context.data[t];return e?e.values.value:[]}const aI=t=>function(e,r){return this.context.dataflow.locale()[t](r)(e)},cI=aI("format"),uI=aI("timeFormat"),lI=aI("utcFormat"),sI=aI("timeParse"),dI=aI("utcParse"),hI=new Date(2e3,0,1);function fI(t,e,r){return Number.isInteger(t)&&Number.isInteger(e)?(hI.setYear(2e3),hI.setMonth(t),hI.setDate(e),uI.call(this,hI,r)):""}const pI="%",bI="$";function gI(t,e,r,n){e[0].type!==YT&&Ua("First argument to data functions must be a string literal.");const o=e[0].value,i=":"+o;if(!Hc(i,n))try{n[i]=r.getData(o).tuplesRef()}catch(a){}}function mI(t,e,r,n){if(e[0].type===YT)vI(r,n,e[0].value);else for(t in r.scales)vI(r,n,t)}function vI(t,e,r){const n=pI+r;if(!Hc(e,n))try{e[n]=t.scaleRef(r)}catch(o){}}function yI(t,e){if(Ac(t))return t;if(tu(t)){const r=e.scales[t];return r&&function(t){return t&&!0===t[Ek]}(r.value)?r.value:void 0}}function xI(t,e,r){e.__bandwidth=t=>t&&t.bandwidth?t.bandwidth():0,r._bandwidth=mI,r._range=mI,r._scale=mI;const n=e=>"_["+(e.type===YT?uu(pI+e.value):uu(pI)+"+"+t(e))+"]";return{_bandwidth:t=>"this.__bandwidth(".concat(n(t[0]),")"),_range:t=>"".concat(n(t[0]),".range()"),_scale:e=>"".concat(n(e[0]),"(").concat(t(e[1]),")")}}function kI(t,e){return function(r,n,o){if(r){const e=yI(r,(o||this).context);return e&&e.path[t](n)}return e(n)}}const wI=kI("area",(function(t){return WS=new qu,ES(t,VS),2*WS})),_I=kI("bounds",(function(t){var e,r,n,o,i,a,c;if(FS=PS=-(NS=zS=1/0),US=[],ES(t,yA),r=US.length){for(US.sort(jA),e=1,i=[n=US[0]];eDA(n[0],n[1])&&(n[1]=o[1]),DA(o[0],n[1])>DA(n[0],n[1])&&(n[0]=o[0])):i.push(n=o);for(a=-1/0,e=0,n=i[r=i.length-1];e<=r;n=o,++e)o=i[e],(c=DA(n[1],o[0]))>a&&(a=c,NS=o[0],PS=n[1])}return US=qS=null,NS===1/0||zS===1/0?[[NaN,NaN],[NaN,NaN]]:[[NS,zS],[PS,FS]]})),CI=kI("centroid",(function(t){nA=oA=iA=aA=cA=uA=lA=sA=0,dA=new qu,hA=new qu,fA=new qu,ES(t,AA);var e=+dA,r=+hA,n=+fA,o=dS(e,r,n);return oSI(t,e)}const MI={};function NI(t){return nc(t)||ArrayBuffer.isView(t)?t:null}function zI(t){return NI(t)||(tu(t)?t:null)}const PI=t=>t.data;function FI(t,e){const r=iI.call(e,t);return r.root&&r.root.lookup||{}}const LI=()=>"undefined"!=typeof window&&window||null;function TI(t,e,r){if(!t)return[];const[n,o]=t,i=(new g_).set(n[0],n[1],o[0],o[1]);return VE(r||this.context.dataflow.scenegraph().root,i,function(t){let e=null;if(t){const r=jc(t.marktype),n=jc(t.markname);e=t=>(!r.length||r.some((e=>t.marktype===e)))&&(!n.length||n.some((e=>t.name===e)))}return e}(e))}const RI={random(){return Rp()},cumulativeNormal:Zp,cumulativeLogNormal:Qp,cumulativeUniform:ob,densityNormal:Vp,densityLogNormal:Jp,densityUniform:nb,quantileNormal:Gp,quantileLogNormal:Kp,quantileUniform:ib,sampleNormal:Wp,sampleLogNormal:Xp,sampleUniform:rb,isArray:nc,isBoolean:Yc,isDate:Xc,isDefined(t){return void 0!==t},isNumber:Qc,isObject:oc,isRegExp:Kc,isString:tu,isTuple:Yf,isValid(t){return null!=t&&t==t},toBoolean:lu,toDate(t){return du(t)},toNumber:sc,toString:hu,indexof:function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n1?e-1:0),n=1;n1?e-1:0),n=1;n1?e-1:0),n=1;n{c.modified=!0,a.pulse(u,h).run()}),!0,1)),r&&(s=!0===r?$a:nc(r)||Yf(r)?r:AI(r),h.remove(s)),e&&h.insert(e),n&&(s=AI(n),u.value.some(s)?h.remove(s):h.insert(n)),o)for(d in i)h.modify(o,d,i[d]);return 1},lassoAppend:function(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5;const o=(t=jc(t))[t.length-1];return void 0===o||Math.hypot(o[0]-e,o[1]-r)>n?[...t,[e,r]]:t},lassoPath:function(t){return jc(t).reduce(((e,r,n)=>{let[o,i]=r;return e+(0==n?"M ".concat(o,",").concat(i," "):n===t.length-1?" Z":"L ".concat(o,",").concat(i," "))}),"")},intersectLasso:function(t,e,r){const{x:n,y:o,mark:i}=r,a=(new g_).set(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);for(const[c,u]of e)ca.x2&&(a.x2=c),ua.y2&&(a.y2=u);return a.translate(n,o),TI([[a.x1,a.y1],[a.x2,a.y2]],t,i).filter((t=>function(t,e,r){let n=0;for(let o=0,i=r.length-1;oe!=c>e&&t<(a-u)*(e-l)/(c-l)+u&&n++}return 1&n}(t.x,t.y,e)))}},BI=["view","item","group","xy","x","y"],II="this.",UI={},qI={forbidden:["_"],allowed:["datum","event","item"],fieldvar:"datum",globalvar:t=>"_[".concat(uu(bI+t),"]"),functions:function(t){const e=TB(t);BI.forEach((t=>e[t]="event.vega."+t));for(const r in RI)e[r]=II+r;return Bc(e,xI(t,RI,UI)),e},constants:LB,visitors:UI},HI=RB(qI);function WI(t,e,r){return 1===arguments.length?RI[t]:(RI[t]=e,r&&(UI[t]=r),HI&&(HI.functions[t]=II+t),this)}function VI(t,e){const r={};let n;try{n=FB(t=tu(t)?t:uu(t)+"")}catch(i){Ua("Expression parse error: "+t)}n.visit((t=>{if(t.type!==KT)return;const n=t.callee.name,o=qI.visitors[n];o&&o(n,t.arguments,e,r)}));const o=HI(n);return o.globals.forEach((t=>{const n=bI+t;!Hc(r,n)&&e.getSignal(t)&&(r[n]=e.signalRef(t))})),{$expr:Bc({code:o.code},e.options.ast?{ast:n}:null),$fields:o.fields,$params:r}}WI("bandwidth",(function(t,e){const r=yI(t,(e||this).context);return r&&r.bandwidth?r.bandwidth():0}),mI),WI("copy",(function(t,e){const r=yI(t,(e||this).context);return r?r.copy():void 0}),mI),WI("domain",(function(t,e){const r=yI(t,(e||this).context);return r?r.domain():[]}),mI),WI("range",(function(t,e){const r=yI(t,(e||this).context);return r&&r.range?r.range():[]}),mI),WI("invert",(function(t,e,r){const n=yI(t,(r||this).context);return n?nc(e)?(n.invertRange||n.invert)(e):(n.invert||n.invertExtent)(e):void 0}),mI),WI("scale",(function(t,e,r){const n=yI(t,(r||this).context);return n?n(e):void 0}),mI),WI("gradient",(function(t,e,r,n,o){t=yI(t,(o||this).context);const i=xw(e,r);let a=t.domain(),c=a[0],u=lc(a),l=Va;return u-c?l=Uk(t,c,u):t=(t.interpolator?jk("sequential")().interpolator(t.interpolator()):jk("linear")().interpolate(t.interpolate()).range(t.range())).domain([c=0,u=1]),t.ticks&&(a=t.ticks(+n||15),c!==a[0]&&a.unshift(c),u!==lc(a)&&a.push(u)),a.forEach((e=>i.stop(l(e),t(e)))),i}),mI),WI("geoArea",wI,mI),WI("geoBounds",_I,mI),WI("geoCentroid",CI,mI),WI("geoShape",(function(t,e,r){const n=yI(t,(r||this).context);return function(t){return n?n.path.context(t)(e):""}}),mI),WI("indata",(function(t,e,r){const n=this.context.data[t]["index:"+e],o=n?n.value.get(r):void 0;return o?o.count:o}),(function(t,e,r,n){e[0].type!==YT&&Ua("First argument to indata must be a string literal."),e[1].type!==YT&&Ua("Second argument to indata must be a string literal.");const o=e[0].value,i=e[1].value,a="@"+i;Hc(a,n)||(n[a]=r.getData(o).indataRef(r,i))})),WI("data",iI,gI),WI("treePath",(function(t,e,r){const n=FI(t,this),o=n[e],i=n[r];return o&&i?o.path(i).map(PI):void 0}),gI),WI("treeAncestors",(function(t,e){const r=FI(t,this)[e];return r?r.ancestors().map(PI):void 0}),gI),WI("vlSelectionTest",(function(t,e,r){for(var n,o,i,a,c,u=this.context.data[t],l=u?u.values.value:[],s=u?u[QB]&&u[QB].value:void 0,d=r===HB,h=l.length,f=0;f(t[i[r].field]=e,t)),{}))}else u=VB,l=ZB(o),(d=(s=v[u]||(v[u]={}))[c]||(s[c]=[])).push(l),r&&(d=y[c]||(y[c]=[])).push({[VB]:l});if(e=e||WB,v[VB]?v[VB]=nI["".concat(VB,"_").concat(e)](...Object.values(v[VB])):Object.keys(v).forEach((t=>{v[t]=Object.keys(v[t]).map((e=>v[t][e])).reduce(((r,n)=>void 0===r?n:nI["".concat(x[t],"_").concat(e)](r,n)))})),m=Object.keys(y),r&&m.length){v[n?"vlPoint":"vlMulti"]=e===WB?{or:m.reduce(((t,e)=>(t.push(...y[e]),t)),[])}:{and:m.map((t=>({or:y[t]})))}}return v}),oI),WI("vlSelectionTuples",(function(t,e){return t.map((t=>Bc(e.fields?{values:e.fields.map((e=>(e.getter||(e.getter=Ha(e.field)))(t.datum)))}:{[VB]:ZB(t.datum)},e)))}));const ZI=fu(["rule"]),GI=fu(["group","image","rect"]);function $I(t){return(t+"").toLowerCase()}function YI(t,e,r){r.endsWith(";")||(r="return("+r+");");const n=Function(...e.concat(r));return t&&t.functions?n.bind(t.functions):n}var XI={operator:(t,e)=>YI(t,["_"],e.code),parameter:(t,e)=>YI(t,["datum","_"],e.code),event:(t,e)=>YI(t,["event"],e.code),handler:(t,e)=>YI(t,["_","event"],"var datum=event.item&&event.item.datum;return ".concat(e.code,";")),encode:(t,e)=>{const{marktype:r,channels:n}=e;let o="var o=item,datum=o.datum,m=0,$;";for(const i in n){const t="o["+uu(i)+"]";o+="$=".concat(n[i].code,";if(").concat(t,"!==$)").concat(t,"=$,m=1;")}return o+=function(t,e){let r="";return ZI[e]||(t.x2&&(t.x?(GI[e]&&(r+="if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"),r+="o.width=o.x2-o.x;"):r+="o.x=o.x2-(o.width||0);"),t.xc&&(r+="o.x=o.xc-(o.width||0)/2;"),t.y2&&(t.y?(GI[e]&&(r+="if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"),r+="o.height=o.y2-o.y;"):r+="o.y=o.y2-(o.height||0);"),t.yc&&(r+="o.y=o.yc-(o.height||0)/2;")),r}(n,r),o+="return m;",YI(t,["item","_"],o)},codegen:{get(t){const e="[".concat(t.map(uu).join("]["),"]"),r=Function("_","return _".concat(e,";"));return r.path=e,r},comparator(t,e){let r;const n=Function("a","b","var u, v; return "+t.map(((t,n)=>{const o=e[n];let i,a;return t.path?(i="a".concat(t.path),a="b".concat(t.path)):((r=r||{})["f"+n]=t,i="this.f".concat(n,"(a)"),a="this.f".concat(n,"(b)")),function(t,e,r,n){return"((u = ".concat(t,") < (v = ").concat(e,") || u == null) && v != null ? ").concat(r,"\n : (u > v || v == null) && u != null ? ").concat(n,"\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ").concat(r,"\n : v !== v && u === u ? ").concat(n," : ")}(i,a,-o,o)})).join("")+"0;");return r?n.bind(r):n}}};function JI(t,e,r){if(!t||!oc(t))return t;for(let n,o=0,i=QI.length;ot&&t.$tupleid?Xf:t));return e.fn[r]||(e.fn[r]=Nc(n,t.$order,e.expr.codegen))}},{key:"$context",parse:function(t,e){return e}},{key:"$subflow",parse:function(t,e){const r=t.$subflow;return function(t,n,o){const i=e.fork().parse(r),a=i.get(r.operators[0].id),c=i.signals.parent;return c&&c.set(o),a.detachSubflow=()=>e.detach(i),a}}},{key:"$tupleid",parse:function(){return Xf}}];const KI={skip:!0};function tU(t,e,r,n){return new eU(t,e,r,n)}function eU(t,e,r,n){this.dataflow=t,this.transforms=e,this.events=t.events.bind(t),this.expr=n||XI,this.signals={},this.scales={},this.nodes={},this.data={},this.fn={},r&&(this.functions=Object.create(r),this.functions.context=this)}function rU(t){this.dataflow=t.dataflow,this.transforms=t.transforms,this.events=t.events,this.expr=t.expr,this.signals=Object.create(t.signals),this.scales=Object.create(t.scales),this.nodes=Object.create(t.nodes),this.data=Object.create(t.data),this.fn=Object.create(t.fn),t.functions&&(this.functions=Object.create(t.functions),this.functions.context=this)}function nU(t,e){t&&(null==e?t.removeAttribute("aria-label"):t.setAttribute("aria-label",e))}eU.prototype=rU.prototype={fork(){const t=new rU(this);return(this.subcontext||(this.subcontext=[])).push(t),t},detach(t){this.subcontext=this.subcontext.filter((e=>e!==t));const e=Object.keys(t.nodes);for(const r of e)t.nodes[r]._targets=null;for(const r of e)t.nodes[r].detach();t.nodes=null},get(t){return this.nodes[t]},set(t,e){return this.nodes[t]=e},add(t,e){const r=this,n=r.dataflow,o=t.value;if(r.set(t.id,e),function(t){return"collect"===$I(t)}(t.type)&&o&&(o.$ingest?n.ingest(e,o.$ingest,o.$format):o.$request?n.preload(e,o.$request,o.$format):n.pulse(e,n.changeset().insert(o))),t.root&&(r.root=e),t.parent){let o=r.get(t.parent.$ref);o?(n.connect(o,[e]),e.targets().add(o)):(r.unresolved=r.unresolved||[]).push((()=>{o=r.get(t.parent.$ref),n.connect(o,[e]),e.targets().add(o)}))}if(t.signal&&(r.signals[t.signal]=e),t.scale&&(r.scales[t.scale]=e),t.data)for(const i in t.data){const n=r.data[i]||(r.data[i]={});t.data[i].forEach((t=>n[t]=e))}},resolve(){return(this.unresolved||[]).forEach((t=>t())),delete this.unresolved,this},operator(t,e){this.add(t,this.dataflow.add(t.value,e))},transform(t,e){this.add(t,this.dataflow.add(this.transforms[$I(e)]))},stream(t,e){this.set(t.id,e)},update(t,e,r,n,o){this.dataflow.on(e,r,n,o,t.options)},operatorExpression(t){return this.expr.operator(this,t)},parameterExpression(t){return this.expr.parameter(this,t)},eventExpression(t){return this.expr.event(this,t)},handlerExpression(t){return this.expr.handler(this,t)},encodeExpression(t){return this.expr.encode(this,t)},parse:function(t){const e=this,r=t.operators||[];return t.background&&(e.background=t.background),t.eventConfig&&(e.eventConfig=t.eventConfig),t.locale&&(e.locale=t.locale),r.forEach((t=>e.parseOperator(t))),r.forEach((t=>e.parseOperatorParameters(t))),(t.streams||[]).forEach((t=>e.parseStream(t))),(t.updates||[]).forEach((t=>e.parseUpdate(t))),e.resolve()},parseOperator:function(t){const e=this;!function(t){return"operator"===$I(t)}(t.type)&&t.type?e.transform(t,t.type):e.operator(t,t.update?e.operatorExpression(t.update):null)},parseOperatorParameters:function(t){const e=this;if(t.params){const r=e.get(t.id);r||Ua("Invalid operator id: "+t.id),e.dataflow.connect(r,r.parameters(e.parseParameters(t.params),t.react,t.initonly))}},parseParameters:function(t,e){e=e||{};const r=this;for(const n in t){const o=t[n];e[n]=nc(o)?o.map((t=>JI(t,r,e))):JI(o,r,e)}return e},parseStream:function(t){var e,r=this,n=null!=t.filter?r.eventExpression(t.filter):void 0,o=null!=t.stream?r.get(t.stream):void 0;t.source?o=r.events(t.source,t.type,n):t.merge&&(o=(e=t.merge.map((t=>r.get(t))))[0].merge.apply(e[0],e.slice(1))),t.between&&(e=t.between.map((t=>r.get(t))),o=o.between(e[0],e[1])),t.filter&&(o=o.filter(n)),null!=t.throttle&&(o=o.throttle(+t.throttle)),null!=t.debounce&&(o=o.debounce(+t.debounce)),null==o&&Ua("Invalid stream definition: "+JSON.stringify(t)),t.consume&&o.consume(!0),r.stream(t,o)},parseUpdate:function(t){var e,r=this,n=oc(n=t.source)?n.$ref:n,o=r.get(n),i=t.update,a=void 0;o||Ua("Source not defined: "+t.source),e=t.target&&t.target.$expr?r.eventExpression(t.target.$expr):r.get(t.target),i&&i.$expr&&(i.$params&&(a=r.parseParameters(i.$params)),i=r.handlerExpression(i.$expr)),r.update(t,o,e,i,a)},getState:function(t){var e=this,r={};if(t.signals){var n=r.signals={};Object.keys(e.signals).forEach((r=>{const o=e.signals[r];t.signals(r,o)&&(n[r]=o.value)}))}if(t.data){var o=r.data={};Object.keys(e.data).forEach((r=>{const n=e.data[r];t.data(r,n)&&(o[r]=n.input.value)}))}return e.subcontext&&!1!==t.recurse&&(r.subcontext=e.subcontext.map((e=>e.getState(t)))),r},setState:function(t){var e=this,r=e.dataflow,n=t.data,o=t.signals;Object.keys(o||{}).forEach((t=>{r.update(e.signals[t],o[t],KI)})),Object.keys(n||{}).forEach((t=>{r.pulse(e.data[t].input,r.changeset().remove($a).insert(n[t]))})),(t.subcontext||[]).forEach(((t,r)=>{const n=e.subcontext[r];n&&n.setState(t)}))}};const oU="default";function iU(t,e){const r=t.globalCursor()?"undefined"!=typeof document&&document.body:t.container();if(r)return null==e?r.style.removeProperty("cursor"):r.style.cursor=e}function aU(t,e){var r=t._runtime.data;return Hc(r,e)||Ua("Unrecognized data set: "+e),r[e]}function cU(t,e){np(e)||Ua("Second argument to changes must be a changeset.");const r=aU(this,t);return r.modified=!0,this.pulse(r.input,e)}function uU(t){var e=t.padding();return Math.max(0,t._viewWidth+e.left+e.right)}function lU(t){var e=t.padding();return Math.max(0,t._viewHeight+e.top+e.bottom)}function sU(t){var e=t.padding(),r=t._origin;return[e.left+r[0],e.top+r[1]]}function dU(t,e,r){var n,o,i=t._renderer,a=i&&i.canvas();return a&&(o=sU(t),(n=jO(e.changedTouches?e.changedTouches[0]:e,a))[0]-=o[0],n[1]-=o[1]),e.dataflow=t,e.item=r,e.vega=function(t,e,r){const n=e?"group"===e.mark.marktype?e:e.mark.group:null;function o(t){var r,o=n;if(t)for(r=e;r;r=r.mark.group)if(r.mark.name===t){o=r;break}return o&&o.mark&&o.mark.interactive?o:{}}function i(t){if(!t)return r;tu(t)&&(t=o(t));const e=r.slice();for(;t;)e[0]-=t.x||0,e[1]-=t.y||0,t=t.mark&&t.mark.group;return e}return{view:Tc(t),item:Tc(e||{}),group:o,xy:i,x:t=>i(t)[0],y:t=>i(t)[1]}}(t,r,n),e}const hU="view",fU={trap:!1};function pU(t,e,r,n){t._eventListeners.push({type:r,sources:jc(e),handler:n})}function bU(t,e,r){const n=t._eventConfig&&t._eventConfig[e];return!(!1===n||oc(n)&&!n[r])||(t.warn("Blocked ".concat(e," ").concat(r," event listener.")),!1)}function gU(t){return t.item}function mU(t){return t.item.mark.source}function vU(t){return function(e,r){return r.vega.view().changeset().encode(r.item,t)}}function yU(t,e,r){const n=document.createElement(t);for(const o in e)n.setAttribute(o,e[o]);return null!=r&&(n.textContent=r),n}const xU="vega-bind",kU="vega-bind-name",wU="vega-bind-radio";function _U(t,e,r,n){const o=r.event||"input",i=()=>t.update(e.value);n.signal(r.signal,e.value),e.addEventListener(o,i),pU(n,e,o,i),t.set=t=>{e.value=t,e.dispatchEvent(function(t){return"undefined"!=typeof Event?new Event(t):{type:t}}(o))}}function CU(t,e,r,n){const o=n.signal(r.signal),i=yU("div",{class:xU}),a="radio"===r.input?i:i.appendChild(yU("label"));a.appendChild(yU("span",{class:kU},r.name||r.signal)),e.appendChild(i);let c=OU;switch(r.input){case"checkbox":c=EU;break;case"select":c=DU;break;case"radio":c=jU;break;case"range":c=SU}c(t,a,r,o)}function OU(t,e,r,n){const o=yU("input");for(const i in r)"signal"!==i&&"element"!==i&&o.setAttribute("input"===i?"type":i,r[i]);o.setAttribute("name",r.signal),o.value=n,e.appendChild(o),o.addEventListener("input",(()=>t.update(o.value))),t.elements=[o],t.set=t=>o.value=t}function EU(t,e,r,n){const o={type:"checkbox",name:r.signal};n&&(o.checked=!0);const i=yU("input",o);e.appendChild(i),i.addEventListener("change",(()=>t.update(i.checked))),t.elements=[i],t.set=t=>i.checked=!!t||null}function DU(t,e,r,n){const o=yU("select",{name:r.signal}),i=r.labels||[];r.options.forEach(((t,e)=>{const r={value:t};AU(t,n)&&(r.selected=!0),o.appendChild(yU("option",r,(i[e]||t)+""))})),e.appendChild(o),o.addEventListener("change",(()=>{t.update(r.options[o.selectedIndex])})),t.elements=[o],t.set=t=>{for(let e=0,n=r.options.length;e{const c={type:"radio",name:r.signal,value:e};AU(e,n)&&(c.checked=!0);const u=yU("input",c);u.addEventListener("change",(()=>t.update(e)));const l=yU("label",{},(i[a]||e)+"");return l.prepend(u),o.appendChild(l),u})),t.set=e=>{const r=t.elements,n=r.length;for(let t=0;t{u.textContent=c.value,t.update(+c.value)};c.addEventListener("input",l),c.addEventListener("change",l),t.elements=[c],t.set=t=>{c.value=t,u.textContent=t}}function AU(t,e){return t===e||t+""==e+""}function MU(t,e,r,n,o,i){return(e=e||new n(t.loader())).initialize(r,uU(t),lU(t),sU(t),o,i).background(t.background())}function NU(t,e){return e?function(){try{e.apply(this,arguments)}catch(Ua){t.error(Ua)}}:null}function zU(t,e,r){if("string"==typeof e){if("undefined"==typeof document)return t.error("DOM document instance not found."),null;if(!(e=document.querySelector(e)))return t.error("Signal bind element not found: "+e),null}if(e&&r)try{e.textContent=""}catch(h9){e=null,t.error(h9)}return e}const PU=t=>+t||0;function FU(t){return oc(t)?{top:PU(t.top),bottom:PU(t.bottom),left:PU(t.left),right:PU(t.right)}:(t=>({top:t,bottom:t,left:t,right:t}))(PU(t))}async function LU(t,e,r,n){const o=WE(e),i=o&&o.headless;return i||Ua("Unrecognized renderer type: "+e),await t.runAsync(),MU(t,null,null,i,r,n).renderAsync(t._scenegraph.root)}var TU="width",RU="height",BU="padding",IU={skip:!0};function UU(t,e){var r=t.autosize(),n=t.padding();return e-(r&&r.contains===BU?n.left+n.right:0)}function qU(t,e){var r=t.autosize(),n=t.padding();return e-(r&&r.contains===BU?n.top+n.bottom:0)}function HU(t,e){return e.modified&&nc(e.input.value)&&t.indexOf("_:vega:_")}function WU(t,e){return!("parent"===t||e instanceof Ap.proxy)}function VU(t,e,r,n){const o=t.element();o&&o.setAttribute("title",function(t){return null==t?"":nc(t)?ZU(t):oc(t)&&!Xc(t)?(e=t,Object.keys(e).map((t=>{const r=e[t];return t+": "+(nc(r)?ZU(r):GU(r))})).join("\n")):t+"";var e}(n))}function ZU(t){return"["+t.map(GU).join(", ")+"]"}function GU(t){return nc(t)?"[ā€¦]":oc(t)&&!Xc(t)?"{ā€¦}":t}function $U(t,e){const r=this;if(e=e||{},Dp.call(r),e.loader&&r.loader(e.loader),e.logger&&r.logger(e.logger),null!=e.logLevel&&r.logLevel(e.logLevel),e.locale||t.locale){const n=Bc({},t.locale,e.locale);r.locale(gf(n.number,n.time))}r._el=null,r._elBind=null,r._renderType=e.renderer||qE.Canvas,r._scenegraph=new kO;const n=r._scenegraph.root;r._renderer=null,r._tooltip=e.tooltip||VU,r._redraw=!0,r._handler=(new GO).scene(n),r._globalCursor=!1,r._preventDefault=!1,r._timers=[],r._eventListeners=[],r._resizeListeners=[],r._eventConfig=function(t){const e=Bc({defaults:{}},t),r=(t,e)=>{e.forEach((e=>{nc(t[e])&&(t[e]=fu(t[e]))}))};return r(e.defaults,["prevent","allow"]),r(e,["view","window","selector"]),e}(t.eventConfig),r.globalCursor(r._eventConfig.globalCursor);const o=function(t,e,r){return tU(t,Ap,RI,r).parse(e)}(r,t,e.expr);r._runtime=o,r._signals=o.signals,r._bind=(t.bindings||[]).map((t=>({state:null,param:Bc({},t)}))),o.root&&o.root.set(n),n.source=o.data.root.input,r.pulse(o.data.root.input,r.changeset().insert(n.items)),r._width=r.width(),r._height=r.height(),r._viewWidth=UU(r,r._width),r._viewHeight=qU(r,r._height),r._origin=[0,0],r._resize=0,r._autosize=1,function(t){var e=t._signals,r=e[TU],n=e[RU],o=e[BU];function i(){t._autosize=t._resize=1}t._resizeWidth=t.add(null,(e=>{t._width=e.size,t._viewWidth=UU(t,e.size),i()}),{size:r}),t._resizeHeight=t.add(null,(e=>{t._height=e.size,t._viewHeight=qU(t,e.size),i()}),{size:n});const a=t.add(null,i,{pad:o});t._resizeWidth.rank=r.rank+1,t._resizeHeight.rank=n.rank+1,a.rank=o.rank+1}(r),function(t){t.add(null,(e=>(t._background=e.bg,t._resize=1,e.bg)),{bg:t._signals.background})}(r),function(t){const e=t._signals.cursor||(t._signals.cursor=t.add({user:oU,item:null}));t.on(t.events("view","mousemove"),e,((t,r)=>{const n=e.value,o=n?tu(n)?n:n.user:oU,i=r.item&&r.item.cursor||null;return n&&o===n.user&&i==n.item?n:{user:o,item:i}})),t.add(null,(function(e){let r=e.cursor,n=this.value;return tu(r)||(n=r.item,r=r.user),iU(t,r&&r!==oU?r:n||r),n}),{cursor:e})}(r),r.description(t.description),e.hover&&r.hover(),e.container&&r.initialize(e.container,e.bind)}function YU(t,e){return Hc(t._signals,e)?t._signals[e]:Ua("Unrecognized signal name: "+uu(e))}function XU(t,e){const r=(t._targets||[]).filter((t=>t._update&&t._update.handler===e));return r.length?r[0]:null}function JU(t,e,r,n){let o=XU(r,n);return o||(o=NU(t,(()=>n(e,r.value))),o.handler=n,t.on(r,null,o)),t}function QU(t,e,r){const n=XU(e,r);return n&&e._targets.remove(n),t}Gc($U,Dp,{async evaluate(t,e,r){if(await Dp.prototype.evaluate.call(this,t,e),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,function(t){var e=sU(t),r=uU(t),n=lU(t);t._renderer.background(t.background()),t._renderer.resize(r,n,e),t._handler.origin(e),t._resizeListeners.forEach((e=>{try{e(r,n)}catch(Ua){t.error(Ua)}}))}(this)),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(h9){this.error(h9)}return r&&Zf(this,r),this},dirty(t){this._redraw=!0,this._renderer&&this._renderer.dirty(t)},description(t){if(arguments.length){const e=null!=t?t+"":null;return e!==this._desc&&nU(this._el,this._desc=e),this}return this._desc},container(){return this._el},scenegraph(){return this._scenegraph},origin(){return this._origin.slice()},signal(t,e,r){const n=YU(this,t);return 1===arguments.length?n.value:this.update(n,e,r)},width(t){return arguments.length?this.signal("width",t):this.signal("width")},height(t){return arguments.length?this.signal("height",t):this.signal("height")},padding(t){return arguments.length?this.signal("padding",FU(t)):FU(this.signal("padding"))},autosize(t){return arguments.length?this.signal("autosize",t):this.signal("autosize")},background(t){return arguments.length?this.signal("background",t):this.signal("background")},renderer(t){return arguments.length?(WE(t)||Ua("Unrecognized renderer type: "+t),t!==this._renderType&&(this._renderType=t,this._resetRenderer()),this):this._renderType},tooltip(t){return arguments.length?(t!==this._tooltip&&(this._tooltip=t,this._resetRenderer()),this):this._tooltip},loader(t){return arguments.length?(t!==this._loader&&(Dp.prototype.loader.call(this,t),this._resetRenderer()),this):this._loader},resize(){return this._autosize=1,this.touch(YU(this,"autosize"))},_resetRenderer(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},_resizeView:function(t,e,r,n,o,i){this.runAfter((a=>{let c=0;a._autosize=0,a.width()!==r&&(c=1,a.signal(TU,r,IU),a._resizeWidth.skip(!0)),a.height()!==n&&(c=1,a.signal(RU,n,IU),a._resizeHeight.skip(!0)),a._viewWidth!==t&&(a._resize=1,a._viewWidth=t),a._viewHeight!==e&&(a._resize=1,a._viewHeight=e),a._origin[0]===o[0]&&a._origin[1]===o[1]||(a._resize=1,a._origin=o),c&&a.run("enter"),i&&a.runAfter((t=>t.resize()))}),!1,1)},addEventListener(t,e,r){let n=e;return r&&!1===r.trap||(n=NU(this,e),n.raw=e),this._handler.on(t,n),this},removeEventListener(t,e){for(var r,n,o=this._handler.handlers(t),i=o.length;--i>=0;)if(n=o[i].type,r=o[i].handler,t===n&&(e===r||e===r.raw)){this._handler.off(n,r);break}return this},addResizeListener(t){const e=this._resizeListeners;return e.indexOf(t)<0&&e.push(t),this},removeResizeListener(t){var e=this._resizeListeners,r=e.indexOf(t);return r>=0&&e.splice(r,1),this},addSignalListener(t,e){return JU(this,t,YU(this,t),e)},removeSignalListener(t,e){return QU(this,YU(this,t),e)},addDataListener(t,e){return JU(this,t,aU(this,t).values,e)},removeDataListener(t,e){return QU(this,aU(this,t).values,e)},globalCursor(t){if(arguments.length){if(this._globalCursor!==!!t){const e=iU(this,null);this._globalCursor=!!t,e&&iU(this,e)}return this}return this._globalCursor},preventDefault(t){return arguments.length?(this._preventDefault=t,this):this._preventDefault},timer:function(t,e){this._timers.push(function(t,e,r){var n=new OP,o=e;return null==e?(n.restart(t,e,r),n):(n._restart=n.restart,n.restart=function(t,e,r){e=+e,r=null==r?_P():+r,n._restart((function i(a){a+=o,n._restart(i,o+=e,r),t(a)}),e,r)},n.restart(t,e,r),n)}((function(e){t({timestamp:Date.now(),elapsed:e})}),e))},events:function(t,e,r){var n,o=this,i=new hp(r),a=function(r,n){o.runAsync(null,(()=>{t===hU&&function(t,e){var r=t._eventConfig.defaults,n=r.prevent,o=r.allow;return!1!==n&&!0!==o&&(!0===n||!1===o||(n?n[e]:o?!o[e]:t.preventDefault()))}(o,e)&&r.preventDefault(),i.receive(dU(o,r,n))}))};if("timer"===t)bU(o,"timer",e)&&o.timer(a,e);else if(t===hU)bU(o,"view",e)&&o.addEventListener(e,a,fU);else if("window"===t?bU(o,"window",e)&&"undefined"!=typeof window&&(n=[window]):"undefined"!=typeof document&&bU(o,"selector",e)&&(n=Array.from(document.querySelectorAll(t))),n){for(var c=0,u=n.length;c=0;)o[t].stop();for(t=i.length;--t>=0;)for(e=(r=i[t]).sources.length;--e>=0;)r.sources[e].removeEventListener(r.type,r.handler);return n&&n.call(this,this._handler,null,null,null),this},hover:function(t,e){return e=[e||"update",(t=[t||"hover"])[0]],this.on(this.events("view","mouseover",gU),mU,vU(t)),this.on(this.events("view","mouseout",gU),mU,vU(e)),this},data:function(t,e){return arguments.length<2?aU(this,t).values.value:cU.call(this,t,op().remove($a).insert(e))},change:cU,insert:function(t,e){return cU.call(this,t,op().insert(e))},remove:function(t,e){return cU.call(this,t,op().remove(e))},scale:function(t){var e=this._runtime.scales;return Hc(e,t)||Ua("Unrecognized scale or projection: "+t),e[t].value},initialize:function(t,e){const r=this,n=r._renderType,o=r._eventConfig.bind,i=WE(n);t=r._el=t?zU(r,t,!0):null,function(t){const e=t.container();e&&(e.setAttribute("role","graphics-document"),e.setAttribute("aria-roleDescription","visualization"),nU(e,t.description()))}(r),i||r.error("Unrecognized renderer type: "+n);const a=i.handler||GO,c=t?i.renderer:i.headless;return r._renderer=c?MU(r,r._renderer,t,c):null,r._handler=function(t,e,r,n){const o=new n(t.loader(),NU(t,t.tooltip())).scene(t.scenegraph().root).initialize(r,sU(t),t);return e&&e.handlers().forEach((t=>{o.on(t.type,t.handler)})),o}(r,r._handler,t,a),r._redraw=!0,t&&"none"!==o&&(e=e?r._elBind=zU(r,e,!0):t.appendChild(yU("form",{class:"vega-bindings"})),r._bind.forEach((t=>{t.param.element&&"container"!==o&&(t.element=zU(r,t.param.element,!!t.param.input))})),r._bind.forEach((t=>{!function(t,e,r){if(!e)return;const n=r.param;let o=r.state;o||(o=r.state={elements:null,active:!1,set:null,update:e=>{e!=t.signal(n.signal)&&t.runAsync(null,(()=>{o.source=!0,t.signal(n.signal,e)}))}},n.debounce&&(o.update=Rc(n.debounce,o.update))),(null==n.input&&n.element?_U:CU)(o,e,n,t),o.active||(t.on(t._signals[n.signal],null,(()=>{o.source?o.source=!1:o.set(t.signal(n.signal))})),o.active=!0)}(r,t.element||e,t)}))),r},toImageURL:async function(t,e){t!==qE.Canvas&&t!==qE.SVG&&t!==qE.PNG&&Ua("Unrecognized image type: "+t);const r=await LU(this,t,e);return t===qE.SVG?function(t,e){const r=new Blob([t],{type:e});return window.URL.createObjectURL(r)}(r.svg(),"image/svg+xml"):r.canvas().toDataURL("image/png")},toCanvas:async function(t,e){return(await LU(this,qE.Canvas,t,e)).canvas()},toSVG:async function(t){return(await LU(this,qE.SVG,t)).svg()},getState:function(t){return this._runtime.getState(t||{data:HU,signals:WU,recurse:!0})},setState:function(t){return this.runAsync(null,(e=>{e._trigger=!1,e._runtime.setState(t)}),(t=>{t._trigger=!0})),this}});const KU="view",tq="[",eq="]",rq="{",nq="}",oq=":",iq=",",aq="@",cq=">",uq=/[[\]{}]/,lq={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};let sq,dq;function hq(t,e,r){return sq=e||KU,dq=r||lq,pq(t.trim()).map(bq)}function fq(t,e,r,n,o){const i=t.length;let a,c=0;for(;e=0?--c:n&&n.indexOf(a)>=0&&++c}return e}function pq(t){const e=[],r=t.length;let n=0,o=0;for(;o' after between selector: "+t;r=r.map(bq);const o=bq(t.slice(1).trim());if(o.between)return{between:r,stream:o};o.between=r;return o}(t):function(t){const e={source:sq},r=[];let n,o,i=[0,0],a=0,c=0,u=t.length,l=0;if(t[u-1]===nq){if(l=t.lastIndexOf(rq),!(l>=0))throw"Unmatched right brace: "+t;try{i=function(t){const e=t.split(iq);if(!t.length||e.length>2)throw t;return e.map((e=>{const r=+e;if(r!=r)throw t;return r}))}(t.substring(l+1,u-1))}catch(h9){throw"Invalid throttle specification: "+t}u=(t=t.slice(0,l).trim()).length,l=0}if(!u)throw t;t[0]===aq&&(a=++l);n=fq(t,l,oq),n1?(e.type=r[1],a?e.markname=r[0].slice(1):!function(t){return dq[t]}(r[0])?e.source=r[0]:e.marktype=r[0]):e.type=r[0];"!"===e.type.slice(-1)&&(e.consume=!0,e.type=e.type.slice(0,-1));null!=o&&(e.filter=o);i[0]&&(e.throttle=i[0]);i[1]&&(e.debounce=i[1]);return e}(t)}function gq(t){return oc(t)?t:{type:t||"pad"}}const mq=t=>+t||0,vq=t=>({top:t,bottom:t,left:t,right:t});function yq(t){return oc(t)?t.signal?t:{top:mq(t.top),bottom:mq(t.bottom),left:mq(t.left),right:mq(t.right)}:vq(mq(t))}const xq=t=>oc(t)&&!nc(t)?Bc({},t):{value:t};function kq(t,e,r,n){if(null!=r){return oc(r)&&!nc(r)||nc(r)&&r.length&&oc(r[0])?t.update[e]=r:t[n||"enter"][e]={value:r},1}return 0}function wq(t,e,r){for(const n in e)kq(t,n,e[n]);for(const n in r)kq(t,n,r[n],"update")}function _q(t,e,r){for(const n in e)r&&Hc(r,n)||(t[n]=Bc(t[n]||{},e[n]));return t}function Cq(t,e){return e&&(e.enter&&e.enter[t]||e.update&&e.update[t])}const Oq="mark",Eq="frame",Dq="scope",jq="axis",Sq="axis-domain",Aq="axis-grid",Mq="axis-label",Nq="axis-tick",zq="axis-title",Pq="legend",Fq="legend-band",Lq="legend-entry",Tq="legend-gradient",Rq="legend-label",Bq="legend-symbol",Iq="legend-title",Uq="title",qq="title-text",Hq="title-subtitle";function Wq(t,e,r){t[e]=r&&r.signal?{signal:r.signal}:{value:r}}const Vq=t=>tu(t)?uu(t):t.signal?"(".concat(t.signal,")"):Yq(t);function Zq(t){if(null!=t.gradient)return function(t){const e=[t.start,t.stop,t.count].map((t=>null==t?null:uu(t)));for(;e.length&&null==lc(e);)e.pop();return e.unshift(Vq(t.gradient)),"gradient(".concat(e.join(","),")")}(t);let e=t.signal?"(".concat(t.signal,")"):t.color?function(t){return t.c?Gq("hcl",t.h,t.c,t.l):t.h||t.s?Gq("hsl",t.h,t.s,t.l):t.l||t.a?Gq("lab",t.l,t.a,t.b):t.r||t.g||t.b?Gq("rgb",t.r,t.g,t.b):null}(t.color):null!=t.field?Yq(t.field):void 0!==t.value?uu(t.value):void 0;return null!=t.scale&&(e=function(t,e){const r=Vq(t.scale);null!=t.range?e="lerp(_range(".concat(r,"), ").concat(+t.range,")"):(void 0!==e&&(e="_scale(".concat(r,", ").concat(e,")")),t.band&&(e=(e?e+"+":"")+"_bandwidth(".concat(r,")")+(1==+t.band?"":"*"+$q(t.band)),t.extra&&(e="(datum.extra ? _scale(".concat(r,", datum.extra.value) : ").concat(e,")"))),null==e&&(e="0"));return e}(t,e)),void 0===e&&(e=null),null!=t.exponent&&(e="pow(".concat(e,",").concat($q(t.exponent),")")),null!=t.mult&&(e+="*".concat($q(t.mult))),null!=t.offset&&(e+="+".concat($q(t.offset))),t.round&&(e="round(".concat(e,")")),e}const Gq=(t,e,r,n)=>"(".concat(t,"(").concat([e,r,n].map(Zq).join(","),")+'')");function $q(t){return oc(t)?"("+Zq(t)+")":t}function Yq(t){return Xq(oc(t)?t:{datum:t})}function Xq(t){let e,r,n;if(t.signal)e="datum",n=t.signal;else if(t.group||t.parent){for(r=Math.max(1,t.level||1),e="item";r-- >0;)e+=".mark.group";t.parent?(n=t.parent,e+=".datum"):n=t.group}else t.datum?(e="datum",n=t.datum):Ua("Invalid field reference: "+uu(t));return t.signal||(n=tu(n)?qa(n).map(uu).join("]["):Xq(n)),e+"["+n+"]"}function Jq(t,e,r,n,o,i){const a={};(i=i||{}).encoders={$encode:a},t=function(t,e,r,n,o){const i={},a={};let c,u,l,s;for(u in u="lineBreak","text"!==e||null==o[u]||Cq(u,t)||Wq(i,u,o[u]),("legend"==r||String(r).startsWith("axis"))&&(r=null),s=r===Eq?o.group:r===Oq?Bc({},o.mark,o[e]):null,s)l=Cq(u,t)||("fill"===u||"stroke"===u)&&(Cq("fill",t)||Cq("stroke",t)),l||Wq(i,u,s[u]);for(u in jc(n).forEach((e=>{const r=o.style&&o.style[e];for(const n in r)Cq(n,t)||Wq(i,n,r[n])})),t=Bc({},t),i)s=i[u],s.signal?(c=c||{})[u]=s:a[u]=s;return t.enter=Bc(a,t.enter),c&&(t.update=Bc(c,t.update)),t}(t,e,r,n,o.config);for(const c in t)a[c]=Qq(t[c],e,i,o);return i}function Qq(t,e,r,n){const o={},i={};for(const c in t)null!=t[c]&&(o[c]=Kq((a=t[c],nc(a)?function(t){let e="";return t.forEach((t=>{const r=Zq(t);e+=t.test?"(".concat(t.test,")?").concat(r,":"):r})),":"===lc(e)&&(e+="null"),e}(a):Zq(a)),n,r,i));var a;return{$expr:{marktype:e,channels:o},$fields:Object.keys(i),$output:Object.keys(t)}}function Kq(t,e,r,n){const o=VI(t,e);return o.$fields.forEach((t=>n[t]=1)),Bc(r,o.$params),o.$expr}const tH="outer",eH=["value","update","init","react","bind"];function rH(t,e){Ua(t+' for "outer" push: '+uu(e))}function nH(t,e){const r=t.name;if(t.push===tH)e.signals[r]||rH("No prior signal definition",r),eH.forEach((e=>{void 0!==t[e]&&rH("Invalid property ",e)}));else{const n=e.addSignal(r,t.value);!1===t.react&&(n.react=!1),t.bind&&e.addBinding(r,t.bind)}}function oH(t,e,r,n){this.id=-1,this.type=t,this.value=e,this.params=r,n&&(this.parent=n)}function iH(t,e,r,n){return new oH(t,e,r,n)}function aH(t,e){return iH("operator",t,e)}function cH(t){const e={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).push(e),e}function uH(t,e){return e?{$field:t,$name:e}:{$field:t}}const lH=uH("key");function sH(t,e){return{$compare:t,$order:e}}const dH="descending";function hH(t,e){return(t&&t.signal?"$"+t.signal:t||"")+(t&&e?"_":"")+(e&&e.signal?"$"+e.signal:e||"")}const fH="scope",pH="view";function bH(t){return t&&t.signal}function gH(t){if(bH(t))return!0;if(oc(t))for(const e in t)if(gH(t[e]))return!0;return!1}function mH(t,e){return null!=t?t:e}function vH(t){return t&&t.signal||t}const yH="timer";function xH(t,e){return(t.merge?kH:t.stream?wH:t.type?_H:Ua("Invalid stream specification: "+uu(t)))(t,e)}function kH(t,e){const r=CH({merge:t.merge.map((t=>xH(t,e)))},t,e);return e.addStream(r).id}function wH(t,e){const r=CH({stream:xH(t.stream,e)},t,e);return e.addStream(r).id}function _H(t,e){let r;t.type===yH?(r=e.event(yH,t.throttle),t={between:t.between,filter:t.filter}):r=e.event(function(t){return t===fH?pH:t||pH}(t.source),t.type);const n=CH({stream:r},t,e);return 1===Object.keys(n).length?r:e.addStream(n).id}function CH(t,e,r){let n=e.between;return n&&(2!==n.length&&Ua('Stream "between" parameter must have 2 entries: '+uu(e)),t.between=[xH(n[0],r),xH(n[1],r)]),n=e.filter?[].concat(e.filter):[],(e.marktype||e.markname||e.markrole)&&n.push(function(t,e,r){const n="event.item";return n+(t&&"*"!==t?"&&"+n+".mark.marktype==='"+t+"'":"")+(r?"&&"+n+".mark.role==='"+r+"'":"")+(e?"&&"+n+".mark.name==='"+e+"'":"")}(e.marktype,e.markname,e.markrole)),e.source===fH&&n.push("inScope(event.item)"),n.length&&(t.filter=VI("("+n.join(")&&(")+")",r).$expr),null!=(n=e.throttle)&&(t.throttle=+n),null!=(n=e.debounce)&&(t.debounce=+n),e.consume&&(t.consume=!0),t}const OH={code:"_.$value",ast:{type:"Identifier",value:"value"}};function EH(t,e,r){const n=t.encode,o={target:r};let i=t.events,a=t.update,c=[];i||Ua("Signal update missing events specification."),tu(i)&&(i=hq(i,e.isSubscope()?fH:pH)),i=jc(i).filter((t=>t.signal||t.scale?(c.push(t),0):1)),c.length>1&&(c=[DH(c)]),i.length&&c.push(i.length>1?{merge:i}:i[0]),null!=n&&(a&&Ua("Signal encode and update are mutually exclusive."),a="encode(item(),"+uu(n)+")"),o.update=tu(a)?VI(a,e):null!=a.expr?VI(a.expr,e):null!=a.value?a.value:null!=a.signal?{$expr:OH,$params:{$value:e.signalRef(a.signal)}}:Ua("Invalid signal update specification."),t.force&&(o.options={force:!0}),c.forEach((t=>e.addUpdate(Bc(function(t,e){return{source:t.signal?e.signalRef(t.signal):t.scale?e.scaleRef(t.scale):xH(t,e)}}(t,e),o))))}function DH(t){return{signal:"["+t.map((t=>t.scale?'scale("'+t.scale+'")':t.signal))+"]"}}const jH=t=>(e,r,n)=>iH(t,r,e||void 0,n),SH=jH("aggregate"),AH=jH("axisticks"),MH=jH("bound"),NH=jH("collect"),zH=jH("compare"),PH=jH("datajoin"),FH=jH("encode"),LH=jH("expression"),TH=jH("facet"),RH=jH("field"),BH=jH("key"),IH=jH("legendentries"),UH=jH("load"),qH=jH("mark"),HH=jH("multiextent"),WH=jH("multivalues"),VH=jH("overlap"),ZH=jH("params"),GH=jH("prefacet"),$H=jH("projection"),YH=jH("proxy"),XH=jH("relay"),JH=jH("render"),QH=jH("scale"),KH=jH("sieve"),tW=jH("sortitems"),eW=jH("viewlayout"),rW=jH("values");let nW=0;const oW={min:"min",max:"max",count:"sum"};function iW(t,e){const r=e.getScale(t.name).params;let n;for(n in r.domain=lW(t.domain,t,e),null!=t.range&&(r.range=mW(t,e,r)),null!=t.interpolate&&function(t,e){e.interpolate=aW(t.type||t),null!=t.gamma&&(e.interpolateGamma=aW(t.gamma))}(t.interpolate,r),null!=t.nice&&(r.nice=function(t){return oc(t)?{interval:aW(t.interval),step:aW(t.step)}:aW(t)}(t.nice)),null!=t.bins&&(r.bins=function(t,e){return t.signal||nc(t)?cW(t,e):e.objectProperty(t)}(t.bins,e)),t)Hc(r,n)||"name"===n||(r[n]=aW(t[n],e))}function aW(t,e){return oc(t)?t.signal?e.signalRef(t.signal):Ua("Unsupported object: "+uu(t)):t}function cW(t,e){return t.signal?e.signalRef(t.signal):t.map((t=>aW(t,e)))}function uW(t){Ua("Can not find data set: "+uu(t))}function lW(t,e,r){if(t)return t.signal?r.signalRef(t.signal):(nc(t)?sW:t.fields?hW:dW)(t,e,r);null==e.domainMin&&null==e.domainMax||Ua("No scale domain defined for domainMin/domainMax to override.")}function sW(t,e,r){return t.map((t=>aW(t,r)))}function dW(t,e,r){const n=r.getData(t.data);return n||uW(t.data),Nk(e.type)?n.valuesRef(r,t.field,pW(t.sort,!1)):Lk(e.type)?n.domainRef(r,t.field):n.extentRef(r,t.field)}function hW(t,e,r){const n=t.data,o=t.fields.reduce(((t,e)=>(e=tu(e)?{data:n,field:e}:nc(e)||e.signal?function(t,e){const r="_:vega:_"+nW++,n=NH({});if(nc(t))n.value={$ingest:t};else if(t.signal){const o="setdata("+uu(r)+","+t.signal+")";n.params.input=e.signalRef(o)}return e.addDataPipeline(r,[n,KH({})]),{data:r,field:"data"}}(e,r):e,t.push(e),t)),[]);return(Nk(e.type)?fW:Lk(e.type)?bW:gW)(t,r,o)}function fW(t,e,r){const n=pW(t.sort,!0);let o,i;const a=r.map((t=>{const r=e.getData(t.data);return r||uW(t.data),r.countsRef(e,t.field,n)})),c={groupby:lH,pulse:a};n&&(o=n.op||"count",i=n.field?hH(o,n.field):"count",c.ops=[oW[o]],c.fields=[e.fieldRef(i)],c.as=[i]),o=e.add(SH(c));const u=e.add(NH({pulse:cH(o)}));return i=e.add(rW({field:lH,sort:e.sortRef(n),pulse:cH(u)})),cH(i)}function pW(t,e){return t&&(t.field||t.op?t.field||"count"===t.op?e&&t.field&&t.op&&!oW[t.op]&&Ua("Multiple domain scales can not be sorted using "+t.op):Ua("No field provided for sort aggregate op: "+t.op):oc(t)?t.field="key":t={field:"key"}),t}function bW(t,e,r){const n=r.map((t=>{const r=e.getData(t.data);return r||uW(t.data),r.domainRef(e,t.field)}));return cH(e.add(WH({values:n})))}function gW(t,e,r){const n=r.map((t=>{const r=e.getData(t.data);return r||uW(t.data),r.extentRef(e,t.field)}));return cH(e.add(HH({extents:n})))}function mW(t,e,r){const n=e.config.range;let o=t.range;if(o.signal)return e.signalRef(o.signal);if(tu(o)){if(n&&Hc(n,o))return mW(t=Bc({},t,{range:n[o]}),e,r);"width"===o?o=[0,{signal:"width"}]:"height"===o?o=Nk(t.type)?[0,{signal:"height"}]:[{signal:"height"},0]:Ua("Unrecognized scale range value: "+uu(o))}else{if(o.scheme)return r.scheme=nc(o.scheme)?cW(o.scheme,e):aW(o.scheme,e),o.extent&&(r.schemeExtent=cW(o.extent,e)),void(o.count&&(r.schemeCount=aW(o.count,e)));if(o.step)return void(r.rangeStep=aW(o.step,e));if(Nk(t.type)&&!nc(o))return lW(o,t,e);nc(o)||Ua("Unsupported range type: "+uu(o))}return o.map((t=>(nc(t)?cW:aW)(t,e)))}function vW(t,e,r){return nc(t)?t.map((t=>vW(t,e,r))):oc(t)?t.signal?r.signalRef(t.signal):"fit"===e?t:Ua("Unsupported parameter object: "+uu(t)):t}const yW="top",xW="left",kW="right",wW="bottom",_W="center",CW="vertical",OW="start",EW="end",DW="index",jW="label",SW="offset",AW="perc",MW="perc2",NW="value",zW="guide-label",PW="guide-title",FW="group-title",LW="group-subtitle",TW="symbol",RW="gradient",BW="discrete",IW="size",UW=[IW,"shape","fill","stroke","strokeWidth","strokeDash","opacity"],qW={name:1,style:1,interactive:1},HW={value:0},WW={value:1},VW="group",ZW="rect",GW="rule",$W="symbol",YW="text";function XW(t){return t.type=VW,t.interactive=t.interactive||!1,t}function JW(t,e){const r=(r,n)=>mH(t[r],mH(e[r],n));return r.isVertical=r=>CW===mH(t.direction,e.direction||(r?e.symbolDirection:e.gradientDirection)),r.gradientLength=()=>mH(t.gradientLength,e.gradientLength||e.gradientWidth),r.gradientThickness=()=>mH(t.gradientThickness,e.gradientThickness||e.gradientHeight),r.entryColumns=()=>mH(t.columns,mH(e.columns,+r.isVertical(!0))),r}function QW(t,e){const r=e&&(e.update&&e.update[t]||e.enter&&e.enter[t]);return r&&r.signal?r:r?r.value:null}function KW(t,e,r){return"item.anchor === '".concat(OW,"' ? ").concat(t," : item.anchor === '").concat(EW,"' ? ").concat(e," : ").concat(r)}const tV=KW(uu(xW),uu(kW),uu(_W));function eV(t,e){return e?t?oc(t)?Object.assign({},t,{offset:eV(t.offset,e)}):{value:t,offset:e}:e:t}function rV(t,e){return e?(t.name=e.name,t.style=e.style||t.style,t.interactive=!!e.interactive,t.encode=_q(t.encode,e,qW)):t.interactive=!1,t}function nV(t,e,r,n){const o=JW(t,r),i=o.isVertical(),a=o.gradientThickness(),c=o.gradientLength();let u,l,s,d,h;i?(l=[0,1],s=[0,0],d=a,h=c):(l=[0,0],s=[1,0],d=c,h=a);const f={enter:u={opacity:HW,x:HW,y:HW,width:xq(d),height:xq(h)},update:Bc({},u,{opacity:WW,fill:{gradient:e,start:l,stop:s}}),exit:{opacity:HW}};return wq(f,{stroke:o("gradientStrokeColor"),strokeWidth:o("gradientStrokeWidth")},{opacity:o("gradientOpacity")}),rV({type:ZW,role:Tq,encode:f},n)}function oV(t,e,r,n,o){const i=JW(t,r),a=i.isVertical(),c=i.gradientThickness(),u=i.gradientLength();let l,s,d,h,f="";a?(l="y",d="y2",s="x",h="width",f="1-"):(l="x",d="x2",s="y",h="height");const p={opacity:HW,fill:{scale:e,field:NW}};p[l]={signal:f+"datum."+AW,mult:u},p[s]=HW,p[d]={signal:f+"datum."+MW,mult:u},p[h]=xq(c);const b={enter:p,update:Bc({},p,{opacity:WW}),exit:{opacity:HW}};return wq(b,{stroke:i("gradientStrokeColor"),strokeWidth:i("gradientStrokeWidth")},{opacity:i("gradientOpacity")}),rV({type:ZW,role:Fq,key:NW,from:o,encode:b},n)}const iV="datum.".concat(AW,'<=0?"').concat(xW,'":datum.').concat(AW,'>=1?"').concat(kW,'":"').concat(_W,'"'),aV="datum.".concat(AW,'<=0?"').concat(wW,'":datum.').concat(AW,'>=1?"').concat(yW,'":"').concat("middle",'"');function cV(t,e,r,n){const o=JW(t,e),i=o.isVertical(),a=xq(o.gradientThickness()),c=o.gradientLength();let u,l,s,d,h=o("labelOverlap"),f="";const p={enter:u={opacity:HW},update:l={opacity:WW,text:{field:jW}},exit:{opacity:HW}};return wq(p,{fill:o("labelColor"),fillOpacity:o("labelOpacity"),font:o("labelFont"),fontSize:o("labelFontSize"),fontStyle:o("labelFontStyle"),fontWeight:o("labelFontWeight"),limit:mH(t.labelLimit,e.gradientLabelLimit)}),i?(u.align={value:"left"},u.baseline=l.baseline={signal:aV},s="y",d="x",f="1-"):(u.align=l.align={signal:iV},u.baseline={value:"top"},s="x",d="y"),u[s]=l[s]={signal:f+"datum."+AW,mult:c},u[d]=l[d]=a,a.offset=mH(t.labelOffset,e.gradientLabelOffset)||0,h=h?{separation:o("labelSeparation"),method:h,order:"datum."+DW}:void 0,rV({type:YW,role:Rq,style:zW,key:NW,from:n,encode:p,overlap:h},r)}function uV(t,e,r,n,o){const i=JW(t,e),a=r.entries,c=!(!a||!a.interactive),u=a?a.name:void 0,l=i("clipHeight"),s=i("symbolOffset"),d={data:"value"},h="(".concat(o,") ? datum.").concat(SW," : datum.").concat(IW),f=l?xq(l):{field:IW},p="datum.".concat(DW),b="max(1, ".concat(o,")");let g,m,v,y,x;f.mult=.5,g={enter:m={opacity:HW,x:{signal:h,mult:.5,offset:s},y:f},update:v={opacity:WW,x:m.x,y:m.y},exit:{opacity:HW}};let k=null,w=null;t.fill||(k=e.symbolBaseFillColor,w=e.symbolBaseStrokeColor),wq(g,{fill:i("symbolFillColor",k),shape:i("symbolType"),size:i("symbolSize"),stroke:i("symbolStrokeColor",w),strokeDash:i("symbolDash"),strokeDashOffset:i("symbolDashOffset"),strokeWidth:i("symbolStrokeWidth")},{opacity:i("symbolOpacity")}),UW.forEach((e=>{t[e]&&(v[e]=m[e]={scale:t[e],field:NW})}));const _=rV({type:$W,role:Bq,key:NW,from:d,clip:!!l||void 0,encode:g},r.symbols),C=xq(s);C.offset=i("labelOffset"),g={enter:m={opacity:HW,x:{signal:h,offset:C},y:f},update:v={opacity:WW,text:{field:jW},x:m.x,y:m.y},exit:{opacity:HW}},wq(g,{align:i("labelAlign"),baseline:i("labelBaseline"),fill:i("labelColor"),fillOpacity:i("labelOpacity"),font:i("labelFont"),fontSize:i("labelFontSize"),fontStyle:i("labelFontStyle"),fontWeight:i("labelFontWeight"),limit:i("labelLimit")});const O=rV({type:YW,role:Rq,style:zW,key:NW,from:d,encode:g},r.labels);return g={enter:{noBound:{value:!l},width:HW,height:l?xq(l):HW,opacity:HW},exit:{opacity:HW},update:v={opacity:WW,row:{signal:null},column:{signal:null}}},i.isVertical(!0)?(y="ceil(item.mark.items.length / ".concat(b,")"),v.row.signal="".concat(p,"%").concat(y),v.column.signal="floor(".concat(p," / ").concat(y,")"),x={field:["row",p]}):(v.row.signal="floor(".concat(p," / ").concat(b,")"),v.column.signal="".concat(p," % ").concat(b),x={field:p}),v.column.signal="(".concat(o,")?").concat(v.column.signal,":").concat(p),XW({role:Dq,from:n={facet:{data:n,name:"value",groupby:DW}},encode:_q(g,a,qW),marks:[_,O],name:u,interactive:c,sort:x})}const lV='item.orient === "left"',sV='item.orient === "right"',dV="(".concat(lV," || ").concat(sV,")"),hV="datum.vgrad && ".concat(dV),fV=KW('"top"','"bottom"','"middle"'),pV=KW('"right"','"left"','"center"'),bV="datum.vgrad && ".concat(sV," ? (").concat(pV,") : (").concat(dV," && !(datum.vgrad && ").concat(lV,')) ? "left" : ').concat(tV),gV="item._anchor || (".concat(dV,' ? "middle" : "start")'),mV="".concat(hV," ? (").concat(lV," ? -90 : 90) : 0"),vV="".concat(dV," ? (datum.vgrad ? (").concat(sV,' ? "bottom" : "top") : ').concat(fV,') : "top"');function yV(t,e){let r;return oc(t)&&(t.signal?r=t.signal:t.path?r="pathShape("+xV(t.path)+")":t.sphere&&(r="geoShape("+xV(t.sphere)+', {type: "Sphere"})')),r?e.signalRef(r):!!t}function xV(t){return oc(t)&&t.signal?t.signal:uu(t)}function kV(t){const e=t.role||"";return e.indexOf("axis")&&e.indexOf("legend")&&e.indexOf("title")?t.type===VW?Dq:e||Oq:e}function wV(t){return{marktype:t.type,name:t.name||void 0,role:t.role||kV(t),zindex:+t.zindex||void 0,aria:t.aria,description:t.description}}function _V(t,e){return t&&t.signal?e.signalRef(t.signal):!1!==t}function CV(t,e){const r=Mp(t.type);r||Ua("Unrecognized transform type: "+uu(t.type));const n=iH(r.type.toLowerCase(),null,OV(r,t,e));return t.signal&&e.addSignal(t.signal,e.proxy(n)),n.metadata=r.metadata||{},n}function OV(t,e,r){const n={},o=t.params.length;for(let i=0;ijV(t,e,r)))):jV(t,n,r)}(t,e,r):"projection"===n?r.projectionRef(e[t.name]):t.array&&!bH(o)?o.map((e=>DV(t,e,r))):DV(t,o,r):void(t.required&&Ua("Missing required "+uu(e.type)+" parameter: "+uu(t.name)))}function DV(t,e,r){const n=t.type;if(bH(e))return NV(n)?Ua("Expression references can not be signals."):zV(n)?r.fieldRef(e):PV(n)?r.compareRef(e):r.signalRef(e.signal);{const o=t.expr||zV(n);return o&&SV(e)?r.exprRef(e.expr,e.as):o&&AV(e)?uH(e.field,e.as):NV(n)?VI(e,r):MV(n)?cH(r.getData(e).values):zV(n)?uH(e):PV(n)?r.compareRef(e):e}}function jV(t,e,r){const n=t.params.length;let o;for(let a=0;at&&t.expr,AV=t=>t&&t.field,MV=t=>"data"===t,NV=t=>"expr"===t,zV=t=>"field"===t,PV=t=>"compare"===t;function FV(t,e){return t.$ref?t:t.data&&t.data.$ref?t.data:cH(e.getData(t.data).output)}function LV(t,e,r,n,o){this.scope=t,this.input=e,this.output=r,this.values=n,this.aggregate=o,this.index={}}function TV(t){return tu(t)?t:null}function RV(t,e,r){const n=hH(r.op,r.field);let o;if(e.ops){for(let i=0,a=e.as.length;inull==t?"null":t)).join(",")+"),0)",e);u.update=l.$expr,u.params=l.$params}function UV(t,e){const r=kV(t),n=t.type===VW,o=t.from&&t.from.facet,i=t.overlap;let a,c,u,l,s,d,h,f=t.layout||r===Dq||r===Eq;const p=r===Oq||f||o,b=function(t,e,r){let n,o,i,a,c;return t?(n=t.facet)&&(e||Ua("Only group marks can be faceted."),null!=n.field?a=c=FV(n,r):(t.data?c=cH(r.getData(t.data).aggregate):(i=CV(Bc({type:"aggregate",groupby:jc(n.groupby)},n.aggregate),r),i.params.key=r.keyRef(n.groupby),i.params.pulse=FV(n,r),a=c=cH(r.add(i))),o=r.keyRef(n.groupby,!0))):a=cH(r.add(NH(null,[{}]))),a||(a=FV(t,r)),{key:o,pulse:a,parent:c}}(t.from,n,e);c=e.add(PH({key:b.key||(t.key?uH(t.key):void 0),pulse:b.pulse,clean:!n}));const g=cH(c);c=u=e.add(NH({pulse:g})),c=e.add(qH({markdef:wV(t),interactive:_V(t.interactive,e),clip:yV(t.clip,e),context:{$context:!0},groups:e.lookup(),parent:e.signals.parent?e.signalRef("parent"):null,index:e.markpath(),pulse:cH(c)}));const m=cH(c);c=l=e.add(FH(Jq(t.encode,t.type,r,t.style,e,{mod:!1,pulse:m}))),c.params.parent=e.encode(),t.transform&&t.transform.forEach((t=>{const r=CV(t,e),n=r.metadata;(n.generates||n.changes)&&Ua("Mark transforms should not generate new data."),n.nomod||(l.params.mod=!0),r.params.pulse=cH(c),e.add(c=r)})),t.sort&&(c=e.add(tW({sort:e.compareRef(t.sort),pulse:cH(c)})));const v=cH(c);(o||f)&&(f=e.add(eW({layout:e.objectProperty(t.layout),legends:e.legends,mark:m,pulse:v})),d=cH(f));const y=e.add(MH({mark:m,pulse:d||v}));h=cH(y),n&&(p&&(a=e.operators,a.pop(),f&&a.pop()),e.pushState(v,d||h,g),o?function(t,e,r){const n=t.from.facet,o=n.name,i=FV(n,e);let a;n.name||Ua("Facet must have a name: "+uu(n)),n.data||Ua("Facet must reference a data set: "+uu(n)),n.field?a=e.add(GH({field:e.fieldRef(n.field),pulse:i})):n.groupby?a=e.add(TH({key:e.keyRef(n.groupby),group:cH(e.proxy(r.parent)),pulse:i})):Ua("Facet must specify groupby or field: "+uu(n));const c=e.fork(),u=c.add(NH()),l=c.add(KH({pulse:cH(u)}));c.addData(o,new LV(c,u,u,l)),c.addSignal("parent",null),a.params.subflow={$subflow:c.parse(t).toRuntime()}}(t,e,b):p?function(t,e,r){const n=e.add(GH({pulse:r.pulse})),o=e.fork();o.add(KH()),o.addSignal("parent",null),n.params.subflow={$subflow:o.parse(t).toRuntime()}}(t,e,b):e.parse(t),e.popState(),p&&(f&&a.push(f),a.push(y))),i&&(h=function(t,e,r){const n=t.method,o=t.bound,i=t.separation,a={separation:bH(i)?r.signalRef(i.signal):i,method:bH(n)?r.signalRef(n.signal):n,pulse:e};t.order&&(a.sort=r.compareRef({field:t.order}));if(o){const t=o.tolerance;a.boundTolerance=bH(t)?r.signalRef(t.signal):+t,a.boundScale=r.scaleRef(o.scale),a.boundOrient=o.orient}return cH(r.add(VH(a)))}(i,h,e));const x=e.add(JH({pulse:h})),k=e.add(KH({pulse:cH(x)},void 0,e.parent()));null!=t.name&&(s=t.name,e.addData(s,new LV(e,u,x,k)),t.on&&t.on.forEach((t=>{(t.insert||t.remove||t.toggle)&&Ua("Marks only support modify triggers."),IV(t,e,s)})))}function qV(t,e){const r=e.config.legend,n=t.encode||{},o=JW(t,r),i=n.legend||{},a=i.name||void 0,c=i.interactive,u=i.style,l={};let s,d,h,f=0;UW.forEach((e=>t[e]?(l[e]=t[e],f=f||t[e]):0)),f||Ua("Missing valid scale for legend.");const p=function(t,e){let r=t.type||TW;t.type||1!==function(t){return UW.reduce(((e,r)=>e+(t[r]?1:0)),0)}(t)||!t.fill&&!t.stroke||(r=Mk(e)?RW:zk(e)?BW:TW);return r!==RW?r:zk(e)?BW:RW}(t,e.scaleType(f)),b={title:null!=t.title,scales:l,type:p,vgrad:"symbol"!==p&&o.isVertical()},g=cH(e.add(NH(null,[b]))),m=cH(e.add(IH(d={type:p,scale:e.scaleRef(f),count:e.objectProperty(o("tickCount")),limit:e.property(o("symbolLimit")),values:e.objectProperty(t.values),minstep:e.property(t.tickMinStep),formatType:e.property(t.formatType),formatSpecifier:e.property(t.format)})));return p===RW?(h=[nV(t,f,r,n.gradient),cV(t,r,n.labels,m)],d.count=d.count||e.signalRef("max(2,2*floor((".concat(vH(o.gradientLength()),")/100))"))):p===BW?h=[oV(t,f,r,n.gradient,m),cV(t,r,n.labels,m)]:(s=function(t,e){const r=JW(t,e);return{align:r("gridAlign"),columns:r.entryColumns(),center:{row:!0,column:!1},padding:{row:r("rowPadding"),column:r("columnPadding")}}}(t,r),h=[uV(t,r,n,m,vH(s.columns))],d.size=function(t,e,r){const n=vH(WV("size",t,r)),o=vH(WV("strokeWidth",t,r)),i=vH(function(t,e,r){return QW("fontSize",t)||function(t,e,r){const n=e.config.style[r];return n&&n[t]}("fontSize",e,r)}(r[1].encode,e,zW));return VI("max(ceil(sqrt(".concat(n,")+").concat(o,"),").concat(i,")"),e)}(t,e,h[0].marks)),h=[XW({role:Lq,from:g,encode:{enter:{x:{value:0},y:{value:0}}},marks:h,layout:s,interactive:c})],b.title&&h.push(function(t,e,r,n){const o=JW(t,e),i={enter:{opacity:HW},update:{opacity:WW,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:HW}};return wq(i,{orient:o("titleOrient"),_anchor:o("titleAnchor"),anchor:{signal:gV},angle:{signal:mV},align:{signal:bV},baseline:{signal:vV},text:t.title,fill:o("titleColor"),fillOpacity:o("titleOpacity"),font:o("titleFont"),fontSize:o("titleFontSize"),fontStyle:o("titleFontStyle"),fontWeight:o("titleFontWeight"),limit:o("titleLimit"),lineHeight:o("titleLineHeight")},{align:o("titleAlign"),baseline:o("titleBaseline")}),rV({type:YW,role:Iq,style:PW,from:n,encode:i},r)}(t,r,n.title,g)),UV(XW({role:Pq,from:g,encode:_q(HV(o,t,r),i,qW),marks:h,aria:o("aria"),description:o("description"),zindex:o("zindex"),name:a,interactive:c,style:u}),e)}function HV(t,e,r){const n={enter:{},update:{}};return wq(n,{orient:t("orient"),offset:t("offset"),padding:t("padding"),titlePadding:t("titlePadding"),cornerRadius:t("cornerRadius"),fill:t("fillColor"),stroke:t("strokeColor"),strokeWidth:r.strokeWidth,strokeDash:r.strokeDash,x:t("legendX"),y:t("legendY"),format:e.format,formatType:e.formatType}),n}function WV(t,e,r){return e[t]?'scale("'.concat(e[t],'",datum)'):QW(t,r[0].encode)}LV.fromEntries=function(t,e){const r=e.length,n=e[r-1],o=e[r-2];let i=e[0],a=null,c=1;for(i&&"load"===i.type&&(i=e[1]),t.add(e[0]);c{r.push(CV(t,e))})),t.on&&t.on.forEach((r=>{IV(r,e,t.name)})),e.addDataPipeline(t.name,function(t,e,r){const n=[];let o,i,a,c,u,l=null,s=!1,d=!1;t.values?bH(t.values)||gH(t.format)?(n.push(XV(e,t)),n.push(l=YV())):n.push(l=YV({$ingest:t.values,$format:t.format})):t.url?gH(t.url)||gH(t.format)?(n.push(XV(e,t)),n.push(l=YV())):n.push(l=YV({$request:t.url,$format:t.format})):t.source&&(l=o=jc(t.source).map((t=>cH(e.getData(t).output))),n.push(null));for(i=0,a=r.length;it===wW||t===yW,QV=(t,e,r)=>bH(t)?iZ(t.signal,e,r):t===xW||t===yW?e:r,KV=(t,e,r)=>bH(t)?nZ(t.signal,e,r):JV(t)?e:r,tZ=(t,e,r)=>bH(t)?oZ(t.signal,e,r):JV(t)?r:e,eZ=(t,e,r)=>bH(t)?aZ(t.signal,e,r):t===yW?{value:e}:{value:r},rZ=(t,e,r)=>bH(t)?cZ(t.signal,e,r):t===kW?{value:e}:{value:r},nZ=(t,e,r)=>uZ("".concat(t," === '").concat(yW,"' || ").concat(t," === '").concat(wW,"'"),e,r),oZ=(t,e,r)=>uZ("".concat(t," !== '").concat(yW,"' && ").concat(t," !== '").concat(wW,"'"),e,r),iZ=(t,e,r)=>sZ("".concat(t," === '").concat(xW,"' || ").concat(t," === '").concat(yW,"'"),e,r),aZ=(t,e,r)=>sZ("".concat(t," === '").concat(yW,"'"),e,r),cZ=(t,e,r)=>sZ("".concat(t," === '").concat(kW,"'"),e,r),uZ=(t,e,r)=>(e=null!=e?xq(e):e,r=null!=r?xq(r):r,lZ(e)&&lZ(r)?(e=e?e.signal||uu(e.value):null,r=r?r.signal||uu(r.value):null,{signal:"".concat(t," ? (").concat(e,") : (").concat(r,")")}):[Bc({test:t},e)].concat(r||[])),lZ=t=>null==t||1===Object.keys(t).length,sZ=(t,e,r)=>({signal:"".concat(t," ? (").concat(hZ(e),") : (").concat(hZ(r),")")}),dZ=(t,e,r,n,o)=>({signal:(null!=n?"".concat(t," === '").concat(xW,"' ? (").concat(hZ(n),") : "):"")+(null!=r?"".concat(t," === '").concat(wW,"' ? (").concat(hZ(r),") : "):"")+(null!=o?"".concat(t," === '").concat(kW,"' ? (").concat(hZ(o),") : "):"")+(null!=e?"".concat(t," === '").concat(yW,"' ? (").concat(hZ(e),") : "):"")+"(null)"}),hZ=t=>bH(t)?t.signal:null==t?null:uu(t),fZ=(t,e)=>0===e?0:bH(t)?{signal:"(".concat(t.signal,") * ").concat(e)}:{value:t*e},pZ=(t,e)=>{const r=t.signal;return r&&r.endsWith("(null)")?{signal:r.slice(0,-6)+e.signal}:t};function bZ(t,e,r,n){let o;if(e&&Hc(e,t))return e[t];if(Hc(r,t))return r[t];if(t.startsWith("title")){switch(t){case"titleColor":o="fill";break;case"titleFont":case"titleFontSize":case"titleFontWeight":o=t[5].toLowerCase()+t.slice(6)}return n[PW][o]}if(t.startsWith("label")){switch(t){case"labelColor":o="fill";break;case"labelFont":case"labelFontSize":o=t[5].toLowerCase()+t.slice(6)}return n[zW][o]}return null}function gZ(t){const e={};for(const r of t)if(r)for(const t in r)e[t]=1;return Object.keys(e)}function mZ(t,e){return{scale:t.scale,range:e}}function vZ(t,e,r,n,o){const i=JW(t,e),a=t.orient,c=t.gridScale,u=QV(a,1,-1),l=function(t,e){if(1===e);else if(oc(t)){let r=t=Bc({},t);for(;null!=r.mult;){if(!oc(r.mult))return r.mult=bH(e)?{signal:"(".concat(r.mult,") * (").concat(e.signal,")")}:r.mult*e,t;r=r.mult=Bc({},r.mult)}r.mult=e}else t=bH(e)?{signal:"(".concat(e.signal,") * (").concat(t||0,")")}:e*(t||0);return t}(t.offset,u);let s,d,h;const f={enter:s={opacity:HW},update:h={opacity:WW},exit:d={opacity:HW}};wq(f,{stroke:i("gridColor"),strokeCap:i("gridCap"),strokeDash:i("gridDash"),strokeDashOffset:i("gridDashOffset"),strokeOpacity:i("gridOpacity"),strokeWidth:i("gridWidth")});const p={scale:t.scale,field:NW,band:o.band,extra:o.extra,offset:o.offset,round:i("tickRound")},b=KV(a,{signal:"height"},{signal:"width"}),g=c?{scale:c,range:0,mult:u,offset:l}:{value:0,offset:l},m=c?{scale:c,range:1,mult:u,offset:l}:Bc(b,{mult:u,offset:l});return s.x=h.x=KV(a,p,g),s.y=h.y=tZ(a,p,g),s.x2=h.x2=tZ(a,m),s.y2=h.y2=KV(a,m),d.x=KV(a,p),d.y=tZ(a,p),rV({type:GW,role:Aq,key:NW,from:n,encode:f},r)}function yZ(t,e,r,n,o){return{signal:'flush(range("'+t+'"), scale("'+t+'", datum.value), '+e+","+r+","+n+","+o+")"}}function xZ(t,e,r,n){const o=JW(t,e),i=t.orient,a=QV(i,-1,1);let c,u;const l={enter:c={opacity:HW,anchor:xq(o("titleAnchor",null)),align:{signal:tV}},update:u=Bc({},c,{opacity:WW,text:xq(t.title)}),exit:{opacity:HW}},s={signal:'lerp(range("'.concat(t.scale,'"), ').concat(KW(0,1,.5),")")};return u.x=KV(i,s),u.y=tZ(i,s),c.angle=KV(i,HW,fZ(a,90)),c.baseline=KV(i,eZ(i,wW,yW),{value:wW}),u.angle=c.angle,u.baseline=c.baseline,wq(l,{fill:o("titleColor"),fillOpacity:o("titleOpacity"),font:o("titleFont"),fontSize:o("titleFontSize"),fontStyle:o("titleFontStyle"),fontWeight:o("titleFontWeight"),limit:o("titleLimit"),lineHeight:o("titleLineHeight")},{align:o("titleAlign"),angle:o("titleAngle"),baseline:o("titleBaseline")}),function(t,e,r,n){const o=(t,e)=>null!=t?(r.update[e]=pZ(xq(t),r.update[e]),!1):!Cq(e,n),i=o(t("titleX"),"x"),a=o(t("titleY"),"y");r.enter.auto=a===i?xq(a):KV(e,xq(a),xq(i))}(o,i,l,r),l.update.align=pZ(l.update.align,c.align),l.update.angle=pZ(l.update.angle,c.angle),l.update.baseline=pZ(l.update.baseline,c.baseline),rV({type:YW,role:zq,style:PW,from:n,encode:l},r)}function kZ(t,e){const r=function(t,e){var r,n,o,i=e.config,a=i.style,c=i.axis,u="band"===e.scaleType(t.scale)&&i.axisBand,l=t.orient;if(bH(l)){const t=gZ([i.axisX,i.axisY]),e=gZ([i.axisTop,i.axisBottom,i.axisLeft,i.axisRight]);for(o of(r={},t))r[o]=KV(l,bZ(o,i.axisX,c,a),bZ(o,i.axisY,c,a));for(o of(n={},e))n[o]=dZ(l.signal,bZ(o,i.axisTop,c,a),bZ(o,i.axisBottom,c,a),bZ(o,i.axisLeft,c,a),bZ(o,i.axisRight,c,a))}else r=l===yW||l===wW?i.axisX:i.axisY,n=i["axis"+l[0].toUpperCase()+l.slice(1)];return r||n||u?Bc({},c,r,n,u):c}(t,e),n=t.encode||{},o=n.axis||{},i=o.name||void 0,a=o.interactive,c=o.style,u=JW(t,r),l=function(t){const e=t("tickBand");let r,n,o=t("tickOffset");return e?e.signal?(r={signal:"(".concat(e.signal,") === 'extent' ? 1 : 0.5")},n={signal:"(".concat(e.signal,") === 'extent'")},oc(o)||(o={signal:"(".concat(e.signal,") === 'extent' ? 0 : ").concat(o)})):"extent"===e?(r=1,n=!0,o=0):(r=.5,n=!1):(r=t("bandPosition"),n=t("tickExtra")),{extra:n,band:r,offset:o}}(u),s={scale:t.scale,ticks:!!u("ticks"),labels:!!u("labels"),grid:!!u("grid"),domain:!!u("domain"),title:null!=t.title},d=cH(e.add(NH({},[s]))),h=cH(e.add(AH({scale:e.scaleRef(t.scale),extra:e.property(l.extra),count:e.objectProperty(t.tickCount),values:e.objectProperty(t.values),minstep:e.property(t.tickMinStep),formatType:e.property(t.formatType),formatSpecifier:e.property(t.format)}))),f=[];let p;return s.grid&&f.push(vZ(t,r,n.grid,h,l)),s.ticks&&(p=u("tickSize"),f.push(function(t,e,r,n,o,i){const a=JW(t,e),c=t.orient,u=QV(c,-1,1);let l,s,d;const h={enter:l={opacity:HW},update:d={opacity:WW},exit:s={opacity:HW}};wq(h,{stroke:a("tickColor"),strokeCap:a("tickCap"),strokeDash:a("tickDash"),strokeDashOffset:a("tickDashOffset"),strokeOpacity:a("tickOpacity"),strokeWidth:a("tickWidth")});const f=xq(o);f.mult=u;const p={scale:t.scale,field:NW,band:i.band,extra:i.extra,offset:i.offset,round:a("tickRound")};return d.y=l.y=KV(c,HW,p),d.y2=l.y2=KV(c,f),s.x=KV(c,p),d.x=l.x=tZ(c,HW,p),d.x2=l.x2=tZ(c,f),s.y=tZ(c,p),rV({type:GW,role:Nq,key:NW,from:n,encode:h},r)}(t,r,n.ticks,h,p,l))),s.labels&&(p=s.ticks?p:0,f.push(function(t,e,r,n,o,i){const a=JW(t,e),c=t.orient,u=t.scale,l=QV(c,-1,1),s=vH(a("labelFlush")),d=vH(a("labelFlushOffset")),h=a("labelAlign"),f=a("labelBaseline");let p,b=0===s||!!s;const g=xq(o);g.mult=l,g.offset=xq(a("labelPadding")||0),g.offset.mult=l;const m={scale:u,field:NW,band:.5,offset:eV(i.offset,a("labelOffset"))},v=KV(c,b?yZ(u,s,'"left"','"right"','"center"'):{value:"center"},rZ(c,"left","right")),y=KV(c,eZ(c,"bottom","top"),b?yZ(u,s,'"top"','"bottom"','"middle"'):{value:"middle"}),x=yZ(u,s,"-(".concat(d,")"),d,0);b=b&&d;const k={opacity:HW,x:KV(c,m,g),y:tZ(c,m,g)},w={enter:k,update:p={opacity:WW,text:{field:jW},x:k.x,y:k.y,align:v,baseline:y},exit:{opacity:HW,x:k.x,y:k.y}};wq(w,{dx:!h&&b?KV(c,x):null,dy:!f&&b?tZ(c,x):null}),wq(w,{angle:a("labelAngle"),fill:a("labelColor"),fillOpacity:a("labelOpacity"),font:a("labelFont"),fontSize:a("labelFontSize"),fontWeight:a("labelFontWeight"),fontStyle:a("labelFontStyle"),limit:a("labelLimit"),lineHeight:a("labelLineHeight")},{align:h,baseline:f});const _=a("labelBound");let C=a("labelOverlap");return C=C||_?{separation:a("labelSeparation"),method:C,order:"datum.index",bound:_?{scale:u,orient:c,tolerance:_}:null}:void 0,p.align!==v&&(p.align=pZ(p.align,v)),p.baseline!==y&&(p.baseline=pZ(p.baseline,y)),rV({type:YW,role:Mq,style:zW,key:NW,from:n,encode:w,overlap:C},r)}(t,r,n.labels,h,p,l))),s.domain&&f.push(function(t,e,r,n){const o=JW(t,e),i=t.orient;let a,c;const u={enter:a={opacity:HW},update:c={opacity:WW},exit:{opacity:HW}};wq(u,{stroke:o("domainColor"),strokeCap:o("domainCap"),strokeDash:o("domainDash"),strokeDashOffset:o("domainDashOffset"),strokeWidth:o("domainWidth"),strokeOpacity:o("domainOpacity")});const l=mZ(t,0),s=mZ(t,1);return a.x=c.x=KV(i,l,HW),a.x2=c.x2=KV(i,s),a.y=c.y=tZ(i,l,HW),a.y2=c.y2=tZ(i,s),rV({type:GW,role:Sq,from:n,encode:u},r)}(t,r,n.domain,d)),s.title&&f.push(xZ(t,r,n.title,d)),UV(XW({role:jq,from:d,encode:_q(wZ(u,t),o,qW),marks:f,aria:u("aria"),description:u("description"),zindex:u("zindex"),name:i,interactive:a,style:c}),e)}function wZ(t,e){const r={enter:{},update:{}};return wq(r,{orient:t("orient"),offset:t("offset")||0,position:mH(e.position,0),titlePadding:t("titlePadding"),minExtent:t("minExtent"),maxExtent:t("maxExtent"),range:{signal:'abs(span(range("'.concat(e.scale,'")))')},translate:t("translate"),format:e.format,formatType:e.formatType}),r}function _Z(t,e,r){const n=jc(t.signals),o=jc(t.scales);return r||n.forEach((t=>nH(t,e))),jc(t.projections).forEach((t=>function(t,e){const r=e.config.projection||{},n={};for(const o in t)"name"!==o&&(n[o]=vW(t[o],o,e));for(const o in r)null==n[o]&&(n[o]=vW(r[o],o,e));e.addProjection(t.name,n)}(t,e))),o.forEach((t=>function(t,e){const r=t.type||"linear";Sk(r)||Ua("Unrecognized scale type: "+uu(r)),e.addScale(t.name,{type:r,domain:void 0})}(t,e))),jc(t.data).forEach((t=>$V(t,e))),o.forEach((t=>iW(t,e))),(r||n).forEach((t=>function(t,e){const r=e.getSignal(t.name);let n=t.update;t.init&&(n?Ua("Signals can not include both init and update expressions."):(n=t.init,r.initonly=!0)),n&&(n=VI(n,e),r.update=n.$expr,r.params=n.$params),t.on&&t.on.forEach((t=>EH(t,e,r.id)))}(t,e))),jc(t.axes).forEach((t=>kZ(t,e))),jc(t.marks).forEach((t=>UV(t,e))),jc(t.legends).forEach((t=>qV(t,e))),t.title&&ZV(t.title,e),e.parseLambdas(),e}const CZ=t=>_q({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},t);function OZ(t,e){const r=e.config,n=cH(e.root=e.add(aH())),o=function(t,e){const r=r=>mH(t[r],e[r]),n=[EZ("background",r("background")),EZ("autosize",gq(r("autosize"))),EZ("padding",yq(r("padding"))),EZ("width",r("width")||0),EZ("height",r("height")||0)],o=n.reduce(((t,e)=>(t[e.name]=e,t)),{}),i={};return jc(t.signals).forEach((t=>{Hc(o,t.name)?t=Bc(o[t.name],t):n.push(t),i[t.name]=t})),jc(e.signals).forEach((t=>{Hc(i,t.name)||Hc(o,t.name)||n.push(t)})),n}(t,r);o.forEach((t=>nH(t,e))),e.description=t.description||r.description,e.eventConfig=r.events,e.legends=e.objectProperty(r.legend&&r.legend.layout),e.locale=r.locale;const i=e.add(NH()),a=e.add(FH(Jq(CZ(t.encode),VW,Eq,t.style,e,{pulse:cH(i)}))),c=e.add(eW({layout:e.objectProperty(t.layout),legends:e.legends,autosize:e.signalRef("autosize"),mark:n,pulse:cH(a)}));e.operators.pop(),e.pushState(cH(a),cH(c),null),_Z(t,e,o),e.operators.push(c);let u=e.add(MH({mark:n,pulse:cH(c)}));return u=e.add(JH({pulse:cH(u)})),u=e.add(KH({pulse:cH(u)})),e.addData("root",new LV(e,i,i,u)),e}function EZ(t,e){return e&&e.signal?{name:t,update:e.signal}:{name:t,value:e}}function DZ(t,e){this.config=t||{},this.options=e||{},this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.eventConfig=null,this.locale=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function jZ(t){this.config=t.config,this.options=t.options,this.legends=t.legends,this.field=Object.create(t.field),this.signals=Object.create(t.signals),this.lambdas=Object.create(t.lambdas),this.scales=Object.create(t.scales),this.events=Object.create(t.events),this.data=Object.create(t.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++t._nextsub[0],this._nextsub=t._nextsub,this._parent=t._parent.slice(),this._encode=t._encode.slice(),this._lookup=t._lookup.slice(),this._markpath=t._markpath}function SZ(t){return(nc(t)?AZ:MZ)(t)}function AZ(t){const e=t.length;let r="[";for(let n=0;n0?",":"")+(oc(e)?e.signal||SZ(e):uu(e))}return r+"]"}function MZ(t){let e,r,n="{",o=0;for(e in t)r=t[e],n+=(++o>1?",":"")+uu(e)+":"+(oc(r)?r.signal||SZ(r):uu(r));return n+"}"}DZ.prototype=jZ.prototype={parse(t){return _Z(t,this)},fork(){return new jZ(this)},isSubscope(){return this._subid>0},toRuntime(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id(){return(this._subid?this._subid+":":0)+this._id++},add(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach((e=>{e.$ref=t.id})),t.refs=null),t},proxy(t){const e=t instanceof oH?cH(t):t;return this.add(YH({value:e}))},addStream(t){return this.streams.push(t),t.id=this.id(),t},addUpdate(t){return this.updates.push(t),t},finish(){let t,e;for(t in this.root&&(this.root.root=!0),this.signals)this.signals[t].signal=t;for(t in this.scales)this.scales[t].scale=t;function r(t,e,r){let n,o;t&&(n=t.data||(t.data={}),o=n[e]||(n[e]=[]),o.push(r))}for(t in this.data){e=this.data[t],r(e.input,t,"input"),r(e.output,t,"output"),r(e.values,t,"values");for(const n in e.index)r(e.index[n],t,"index:"+n)}return this},pushState(t,e,r){this._encode.push(cH(this.add(KH({pulse:t})))),this._parent.push(e),this._lookup.push(r?cH(this.proxy(r)):null),this._markpath.push(-1)},popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent(){return lc(this._parent)},encode(){return lc(this._encode)},lookup(){return lc(this._lookup)},markpath(){const t=this._markpath;return++t[t.length-1]},fieldRef(t,e){if(tu(t))return uH(t,e);t.signal||Ua("Unsupported field reference: "+uu(t));const r=t.signal;let n=this.field[r];if(!n){const t={name:this.signalRef(r)};e&&(t.as=e),this.field[r]=n=cH(this.add(RH(t)))}return n},compareRef(t){let e=!1;const r=t=>bH(t)?(e=!0,this.signalRef(t.signal)):function(t){return t&&t.expr}(t)?(e=!0,this.exprRef(t.expr)):t,n=jc(t.field).map(r),o=jc(t.order).map(r);return e?cH(this.add(zH({fields:n,orders:o}))):sH(n,o)},keyRef(t,e){let r=!1;const n=this.signals;return t=jc(t).map((t=>bH(t)?(r=!0,cH(n[t.signal])):t)),r?cH(this.add(BH({fields:t,flat:e}))):function(t,e){const r={$key:t};return e&&(r.$flat=!0),r}(t,e)},sortRef(t){if(!t)return t;const e=hH(t.op,t.field),r=t.order||"ascending";return r.signal?cH(this.add(zH({fields:e,orders:this.signalRef(r.signal)}))):sH(e,r)},event(t,e){const r=t+":"+e;if(!this.events[r]){const n=this.id();this.streams.push({id:n,source:t,type:e}),this.events[r]=n}return this.events[r]},hasOwnSignal(t){return Hc(this.signals,t)},addSignal(t,e){this.hasOwnSignal(t)&&Ua("Duplicate signal name: "+uu(t));const r=e instanceof oH?e:this.add(aH(e));return this.signals[t]=r},getSignal(t){return this.signals[t]||Ua("Unrecognized signal name: "+uu(t)),this.signals[t]},signalRef(t){return this.signals[t]?cH(this.signals[t]):(Hc(this.lambdas,t)||(this.lambdas[t]=this.add(aH(null))),cH(this.lambdas[t]))},parseLambdas(){const t=Object.keys(this.lambdas);for(let e=0,r=t.length;e=r&&t=n?1:(e-r+1)/o},icdf(t){return t>=0&&t<=1?r-1+Math.floor(t*o):NaN}};return i.min(t).max(e)},randomKDE:Yp,randomLCG:function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},randomLogNormal:tb,randomMixture:eb,randomNormal:$p,randomUniform:ab,read:Hf,regressionConstant:cb,regressionExp:pb,regressionLinear:hb,regressionLoess:yb,regressionLog:fb,regressionPoly:mb,regressionPow:bb,regressionQuad:gb,renderModule:WE,repeat:iu,resetDefaultLocale:function(){return cf(),hf(),mf()},resetSVGClipId:p_,resetSVGDefIds:function(){p_(),bw=0},responseType:qf,runtimeContext:tU,sampleCurve:_b,sampleLogNormal:Xp,sampleNormal:Wp,sampleUniform:rb,scale:jk,sceneEqual:QE,sceneFromJSON:yO,scenePickVisit:uC,sceneToJSON:vO,sceneVisit:cC,sceneZOrder:aC,scheme:Zk,serializeXML:vE,setRandom:function(t){Rp=t},span:cu,splitAccessPath:qa,stringValue:uu,textMetrics:GC,timeBin:Sd,timeFloor:ed,timeFormatLocale:pf,timeInterval:cd,timeOffset:sd,timeSequence:fd,timeUnitSpecifier:Ls,timeUnits:Ps,toBoolean:lu,toDate:du,toNumber:sc,toSet:fu,toString:hu,transform:Np,transforms:Ap,truncate:pu,truthy:$a,tupleid:Xf,typeParsers:Af,utcFloor:od,utcInterval:ud,utcOffset:dd,utcSequence:pd,utcdayofyear:Vs,utcquarter:Dc,utcweek:Zs,version:"5.25.0",visitArray:bu,week:Is,writeConfig:cc,zero:Za,zoomLinear:wc,zoomLog:_c,zoomPow:Cc,zoomSymlog:Oc});var zZ={NaN:NaN,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,PI:Math.PI,SQRT1_2:Math.SQRT1_2,SQRT2:Math.SQRT2,MIN_VALUE:Number.MIN_VALUE,MAX_VALUE:Number.MAX_VALUE},PZ={"*":(t,e)=>t*e,"+":(t,e)=>t+e,"-":(t,e)=>t-e,"/":(t,e)=>t/e,"%":(t,e)=>t%e,">":(t,e)=>t>e,"<":(t,e)=>tt<=e,">=":(t,e)=>t>=e,"==":(t,e)=>t==e,"!=":(t,e)=>t!=e,"===":(t,e)=>t===e,"!==":(t,e)=>t!==e,"&":(t,e)=>t&e,"|":(t,e)=>t|e,"^":(t,e)=>t^e,"<<":(t,e)=>t<>":(t,e)=>t>>e,">>>":(t,e)=>t>>>e},FZ={"+":t=>+t,"-":t=>-t,"~":t=>~t,"!":t=>!t};const LZ=Array.prototype.slice,TZ=(t,e,r)=>{const n=r?r(e[0]):e[0];return n[t].apply(n,LZ.call(e,1))};var RZ={isNaN:Number.isNaN,isFinite:Number.isFinite,abs:Math.abs,acos:Math.acos,asin:Math.asin,atan:Math.atan,atan2:Math.atan2,ceil:Math.ceil,cos:Math.cos,exp:Math.exp,floor:Math.floor,log:Math.log,max:Math.max,min:Math.min,pow:Math.pow,random:Math.random,round:Math.round,sin:Math.sin,sqrt:Math.sqrt,tan:Math.tan,clamp:(t,e,r)=>Math.max(e,Math.min(r,t)),now:Date.now,utc:Date.UTC,datetime:(t,e,r,n,o,i,a)=>new Date(t,e||0,null!=r?r:1,n||0,o||0,i||0,a||0),date:t=>new Date(t).getDate(),day:t=>new Date(t).getDay(),year:t=>new Date(t).getFullYear(),month:t=>new Date(t).getMonth(),hours:t=>new Date(t).getHours(),minutes:t=>new Date(t).getMinutes(),seconds:t=>new Date(t).getSeconds(),milliseconds:t=>new Date(t).getMilliseconds(),time:t=>new Date(t).getTime(),timezoneoffset:t=>new Date(t).getTimezoneOffset(),utcdate:t=>new Date(t).getUTCDate(),utcday:t=>new Date(t).getUTCDay(),utcyear:t=>new Date(t).getUTCFullYear(),utcmonth:t=>new Date(t).getUTCMonth(),utchours:t=>new Date(t).getUTCHours(),utcminutes:t=>new Date(t).getUTCMinutes(),utcseconds:t=>new Date(t).getUTCSeconds(),utcmilliseconds:t=>new Date(t).getUTCMilliseconds(),length:t=>t.length,join:function(){return TZ("join",arguments)},indexof:function(){return TZ("indexOf",arguments)},lastindexof:function(){return TZ("lastIndexOf",arguments)},slice:function(){return TZ("slice",arguments)},reverse:t=>t.slice().reverse(),parseFloat:parseFloat,parseInt:parseInt,upper:t=>String(t).toUpperCase(),lower:t=>String(t).toLowerCase(),substring:function(){return TZ("substring",arguments,String)},split:function(){return TZ("split",arguments,String)},replace:function(){return TZ("replace",arguments,String)},trim:t=>String(t).trim(),regexp:RegExp,test:(t,e)=>RegExp(t).test(e)};const BZ=["view","item","group","xy","x","y"],IZ=new Set([Function,eval,setTimeout,setInterval]);"function"==typeof setImmediate&&IZ.add(setImmediate);const UZ={Literal:(t,e)=>e.value,Identifier:(t,e)=>{const r=e.name;return t.memberDepth>0?r:"datum"===r?t.datum:"event"===r?t.event:"item"===r?t.item:zZ[r]||t.params["$"+r]},MemberExpression:(t,e)=>{const r=!e.computed,n=t(e.object);r&&(t.memberDepth+=1);const o=t(e.property);if(r&&(t.memberDepth-=1),!IZ.has(n[o]))return n[o];console.error('Prevented interpretation of member "'.concat(o,'" which could lead to insecure code execution'))},CallExpression:(t,e)=>{const r=e.arguments;let n=e.callee.name;return n.startsWith("_")&&(n=n.slice(1)),"if"===n?t(r[0])?t(r[1]):t(r[2]):(t.fn[n]||RZ[n]).apply(t.fn,r.map(t))},ArrayExpression:(t,e)=>e.elements.map(t),BinaryExpression:(t,e)=>PZ[e.operator](t(e.left),t(e.right)),UnaryExpression:(t,e)=>FZ[e.operator](t(e.argument)),ConditionalExpression:(t,e)=>t(e.test)?t(e.consequent):t(e.alternate),LogicalExpression:(t,e)=>"&&"===e.operator?t(e.left)&&t(e.right):t(e.left)||t(e.right),ObjectExpression:(t,e)=>e.properties.reduce(((e,r)=>{t.memberDepth+=1;const n=t(r.key);return t.memberDepth-=1,IZ.has(t(r.value))?console.error('Prevented interpretation of property "'.concat(n,'" which could lead to insecure code execution')):e[n]=t(r.value),e}),{})};function qZ(t,e,r,n,o,i){const a=t=>UZ[t.type](a,t);return a.memberDepth=0,a.fn=Object.create(e),a.params=r,a.datum=n,a.event=o,a.item=i,BZ.forEach((t=>a.fn[t]=function(){return o.vega[t](...arguments)})),a(t)}var HZ={operator(t,e){const r=e.ast,n=t.functions;return t=>qZ(r,n,t)},parameter(t,e){const r=e.ast,n=t.functions;return(t,e)=>qZ(r,n,e,t)},event(t,e){const r=e.ast,n=t.functions;return t=>qZ(r,n,void 0,void 0,t)},handler(t,e){const r=e.ast,n=t.functions;return(t,e)=>{const o=e.item&&e.item.datum;return qZ(r,n,t,o,e)}},encode(t,e){const{marktype:r,channels:n}=e,o=t.functions,i="group"===r||"image"===r||"rect"===r;return(t,e)=>{const a=t.datum;let c,u=0;for(const r in n)c=qZ(n[r].ast,o,e,a,void 0,t),t[r]!==c&&(t[r]=c,u=1);return"rule"!==r&&function(t,e,r){let n;e.x2&&(e.x?(r&&t.x>t.x2&&(n=t.x,t.x=t.x2,t.x2=n),t.width=t.x2-t.x):t.x=t.x2-(t.width||0)),e.xc&&(t.x=t.xc-(t.width||0)/2),e.y2&&(e.y?(r&&t.y>t.y2&&(n=t.y,t.y=t.y2,t.y2=n),t.height=t.y2-t.y):t.y=t.y2-(t.height||0)),e.yc&&(t.y=t.yc-(t.height||0)/2)}(t,n,i),u}}},WZ="5.14.1",VZ={exports:{}};!function(t){var e=function(){function t(t,e){return null!=e&&t instanceof e}var e,r,n;try{e=Map}catch(c){e=function(){}}try{r=Set}catch(c){r=function(){}}try{n=Promise}catch(c){n=function(){}}function o(i,c,u,l,s){"object"==typeof c&&(u=c.depth,l=c.prototype,s=c.includeNonEnumerable,c=c.circular);var d=[],h=[],f="undefined"!=typeof Buffer;return void 0===c&&(c=!0),void 0===u&&(u=1/0),function i(u,p){if(null===u)return null;if(0===p)return u;var b,g;if("object"!=typeof u)return u;if(t(u,e))b=new e;else if(t(u,r))b=new r;else if(t(u,n))b=new n((function(t,e){u.then((function(e){t(i(e,p-1))}),(function(t){e(i(t,p-1))}))}));else if(o.__isArray(u))b=[];else if(o.__isRegExp(u))b=new RegExp(u.source,a(u)),u.lastIndex&&(b.lastIndex=u.lastIndex);else if(o.__isDate(u))b=new Date(u.getTime());else{if(f&&Buffer.isBuffer(u))return b=Buffer.allocUnsafe?Buffer.allocUnsafe(u.length):new Buffer(u.length),u.copy(b),b;t(u,Error)?b=Object.create(u):void 0===l?(g=Object.getPrototypeOf(u),b=Object.create(g)):(b=Object.create(l),g=l)}if(c){var m=d.indexOf(u);if(-1!=m)return h[m];d.push(u),h.push(b)}for(var v in t(u,e)&&u.forEach((function(t,e){var r=i(e,p-1),n=i(t,p-1);b.set(r,n)})),t(u,r)&&u.forEach((function(t){var e=i(t,p-1);b.add(e)})),u){var y;g&&(y=Object.getOwnPropertyDescriptor(g,v)),y&&null==y.set||(b[v]=i(u[v],p-1))}if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(u);for(v=0;veG(t,e)))}:JZ(t)?{or:t.or.map((t=>eG(t,e)))}:e(t)}const rG=$Z,nG=ZZ;function oG(t){throw new Error(t)}function iG(t,e){const r={};for(const n of e)Hc(t,n)&&(r[n]=t[n]);return r}function aG(t,e){const r={...t};for(const n of e)delete r[n];return r}Set.prototype.toJSON=function(){return"Set(".concat([...this].map((t=>XZ(t))).join(","),")")};const cG=XZ;function uG(t){if(Qc(t))return t;const e=tu(t)?t:XZ(t);if(e.length<250)return e;let r=0;for(let n=0;n1?e-1:0),n=1;n0===e?t:"[".concat(t,"]"))),n=t.map(((e,r)=>t.slice(0,r+1).join("")));for(const r of n)e.add(r)}return e}function yG(t,e){return void 0===t||void 0===e||mG(vG(t),vG(e))}function xG(t){return 0===kG(t).length}const kG=Object.keys,wG=Object.values,_G=Object.entries;function CG(t){return!0===t||!1===t}function OG(t){const e=t.replace(/\W/g,"_");return(t.match(/^\d+/)?"_":"")+e}function EG(t,e){return KZ(t)?"!(".concat(EG(t.not,e),")"):QZ(t)?"(".concat(t.and.map((t=>EG(t,e))).join(") && ("),")"):JZ(t)?"(".concat(t.or.map((t=>EG(t,e))).join(") || ("),")"):e(t)}function DG(t,e){if(0===e.length)return!0;const r=e.shift();return r in t&&DG(t[r],e)&&delete t[r],xG(t)}function jG(t){return t.charAt(0).toUpperCase()+t.substr(1)}function SG(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"datum";const r=qa(t),n=[];for(let o=1;o<=r.length;o++){const t="[".concat(r.slice(0,o).map(uu).join("]["),"]");n.push("".concat(e).concat(t))}return n.join(" && ")}function AG(t){return"".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"datum","[").concat(uu(qa(t).join(".")),"]")}function MG(t){return t.replace(/(\[|\]|\.|'|")/g,"\\$1")}function NG(t){return"".concat(qa(t).map(MG).join("\\."))}function zG(t,e,r){return t.replace(new RegExp(e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),r)}function PG(t){return"".concat(qa(t).join("."))}function FG(t){return t?qa(t).length:0}function LG(){for(var t=arguments.length,e=new Array(t),r=0;rnX(t[e])?OG("_".concat(e,"_").concat(_G(t[e]))):OG("_".concat(e,"_").concat(t[e])))).join("")}function tX(t){return!0===t||rX(t)&&!t.binned}function eX(t){return"binned"===t||rX(t)&&!0===t.binned}function rX(t){return oc(t)}function nX(t){return null==t?void 0:t.param}function oX(t){switch(t){case HG:case WG:case s$:case a$:case c$:case u$:case b$:case h$:case f$:case p$:case l$:return 6;case g$:return 4;default:return 10}}function iX(t){return!(null==t||!t.expr)}function aX(t){const e=kG(t||{}),r={};for(const n of e)r[n]=gX(t[n]);return r}function cX(t){const{anchor:e,frame:r,offset:n,orient:o,angle:i,limit:a,color:c,subtitleColor:u,subtitleFont:l,subtitleFontSize:s,subtitleFontStyle:d,subtitleFontWeight:h,subtitleLineHeight:f,subtitlePadding:p,...b}=t,g={...e?{anchor:e}:{},...r?{frame:r}:{},...n?{offset:n}:{},...o?{orient:o}:{},...void 0!==i?{angle:i}:{},...void 0!==a?{limit:a}:{}},m={...u?{subtitleColor:u}:{},...l?{subtitleFont:l}:{},...s?{subtitleFontSize:s}:{},...d?{subtitleFontStyle:d}:{},...h?{subtitleFontWeight:h}:{},...f?{subtitleLineHeight:f}:{},...p?{subtitlePadding:p}:{}};return{titleMarkConfig:{...b,...c?{fill:c}:{}},subtitleMarkConfig:iG(t,["align","baseline","dx","dy","limit"]),nonMarkTitleProperties:g,subtitle:m}}function uX(t){return tu(t)||nc(t)&&tu(t[0])}function lX(t){return!(null==t||!t.signal)}function sX(t){return!!t.step}function dX(t){return!nc(t)&&("field"in t&&"data"in t)}const hX=kG({aria:1,description:1,ariaRole:1,ariaRoleDescription:1,blend:1,opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeOffset:1,strokeMiterLimit:1,startAngle:1,endAngle:1,padAngle:1,innerRadius:1,outerRadius:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,lineBreak:1,lineHeight:1,cursor:1,href:1,tooltip:1,cornerRadius:1,cornerRadiusTopLeft:1,cornerRadiusTopRight:1,cornerRadiusBottomLeft:1,cornerRadiusBottomRight:1,aspect:1,width:1,height:1,url:1,smooth:1}),fX={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},pX=["cornerRadius","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight"];function bX(t){const e=nc(t.condition)?t.condition.map(mX):mX(t.condition);return{...gX(t),condition:e}}function gX(t){if(iX(t)){const{expr:e,...r}=t;return{signal:e,...r}}return t}function mX(t){if(iX(t)){const{expr:e,...r}=t;return{signal:e,...r}}return t}function vX(t){if(iX(t)){const{expr:e,...r}=t;return{signal:e,...r}}return lX(t)?t:void 0!==t?{value:t}:void 0}function yX(t){return lX(t)?t.signal:uu(t)}function xX(t){return lX(t)?t.signal:uu(t.value)}function kX(t){return lX(t)?t.signal:null==t?null:uu(t)}function wX(t,e,r){for(const n of r){const r=OX(n,e.markDef,e.config);void 0!==r&&(t[n]=vX(r))}return t}function _X(t){var e;return[].concat(t.type,null!==(e=t.style)&&void 0!==e?e:[])}function CX(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const{vgChannel:o,ignoreVgConfig:i}=n;return o&&void 0!==e[o]?e[o]:void 0!==e[t]?e[t]:!i||o&&o!==t?OX(t,e,r,n):void 0}function OX(t,e,r){let{vgChannel:n}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return LG(n?EX(t,e,r.style):void 0,EX(t,e,r.style),n?r[e.type][n]:void 0,r[e.type][t],n?r.mark[n]:r.mark[t])}function EX(t,e,r){return DX(t,_X(e),r)}function DX(t,e,r){let n;e=jc(e);for(const o of e){const e=r[o];e&&void 0!==e[t]&&(n=e[t])}return n}function jX(t,e){return jc(t).reduce(((t,r)=>{var n;return t.field.push(XK(r,e)),t.order.push(null!==(n=r.sort)&&void 0!==n?n:"ascending"),t}),{field:[],order:[]})}function SX(t,e){const r=[...t];return e.forEach((t=>{for(const e of r)if(rG(e,t))return;r.push(t)})),r}function AX(t,e){return rG(t,e)||!e?t:t?[...jc(t),...jc(e)].join(", "):e}function MX(t,e){const r=t.value,n=e.value;if(null==r||null===n)return{explicit:t.explicit,value:null};if((uX(r)||lX(r))&&(uX(n)||lX(n)))return{explicit:t.explicit,value:AX(r,n)};if(uX(r)||lX(r))return{explicit:t.explicit,value:r};if(uX(n)||lX(n))return{explicit:t.explicit,value:n};if(!(uX(r)||lX(r)||uX(n)||lX(n)))return{explicit:t.explicit,value:SX(r,n)};throw new Error("It should never reach here")}function NX(t){return"Invalid specification ".concat(cG(t),'. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".')}const zX='Autosize "fit" only works for single views and layered views.';function PX(t){return"".concat("width"==t?"Width":"Height",' "container" only works for single views and layered views.')}function FX(t){const e="width"==t?"x":"y";return"".concat("width"==t?"Width":"Height",' "container" only works well with autosize "fit" or "fit-').concat(e,'".')}function LX(t){return t?'Dropping "fit-'.concat(t,'" because spec has discrete ').concat(J$(t),"."):'Dropping "fit" because spec has discrete size.'}function TX(t){return"Unknown field for ".concat(t,". Cannot calculate view size.")}function RX(t){return'Cannot project a selection on encoding channel "'.concat(t,'", which has no field.')}function BX(t,e){return'Cannot project a selection on encoding channel "'.concat(t,'" as it uses an aggregate function ("').concat(e,'").')}function IX(t){return"Selection not supported for ".concat(t," yet.")}const UX="The same selection must be used to override scale domains in a layered view.";function qX(t){return'The "columns" property cannot be used when "'.concat(t,'" has nested row/column.')}function HX(t,e,r){return'An ancestor parsed field "'.concat(t,'" as ').concat(r," but a child wants to parse the field as ").concat(e,".")}function WX(t){return"Ignoring an invalid transform: ".concat(cG(t),".")}function VX(t){return"Config.customFormatTypes is not true, thus custom format type and format for channel ".concat(t," are dropped.")}function ZX(t){return"".concat(t,"Offset dropped because ").concat(t," is continuous")}function GX(t){return"There is no ".concat(t," encoding. Replacing ").concat(t,"Offset encoding as ").concat(t,".")}function $X(t){return'Invalid field type "'.concat(t,'".')}function YX(t,e){const{fill:r,stroke:n}=e;return"Dropping color ".concat(t," as the plot also has ").concat(r&&n?"fill and stroke":r?"fill":"stroke",".")}function XX(t,e){return"Dropping ".concat(cG(t),' from channel "').concat(e,'" since it does not contain any data field, datum, value, or signal.')}function JX(t,e,r){return"".concat(t,' dropped as it is incompatible with "').concat(e,'"').concat(r?" when ".concat(r):"",".")}function QX(t){return"".concat(t," encoding has no scale, so specified scale is ignored.")}function KX(t){return"".concat(t," encoding should be discrete (ordinal / nominal / binned).")}function tJ(t){return"".concat(t," encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).")}function eJ(t,e){return'Using discrete channel "'.concat(t,'" to encode "').concat(e,'" field can be misleading as it does not encode ').concat("ordinal"===e?"order":"magnitude",".")}function rJ(t){return"Using unaggregated domain with raw field has no effect (".concat(cG(t),").")}function nJ(t){return'Unaggregated domain not applicable for "'.concat(t,'" since it produces values outside the origin domain of the source data.')}function oJ(t){return"Unaggregated domain is currently unsupported for log scale (".concat(cG(t),").")}function iJ(t,e,r){return"".concat(r,"-scale's \"").concat(e,'" is dropped as it does not work with ').concat(t," scale.")}function aJ(t){return'The step for "'.concat(t,'" is dropped because the ').concat("width"===t?"x":"y"," is continuous.")}const cJ="Domains that should be unioned has conflicting sort properties. Sort will be set to true.";function uJ(t,e){return"Invalid ".concat(t,": ").concat(cG(e),".")}function lJ(t){return"1D error band does not support ".concat(t,".")}function sJ(t){return"Channel ".concat(t,' is required for "binned" bin.')}const dJ=rc(Ka);let hJ=dJ;function fJ(){hJ.warn(...arguments)}function pJ(t){if(t&&oc(t))for(const e of wJ)if(e in t)return!0;return!1}const bJ=["january","february","march","april","may","june","july","august","september","october","november","december"],gJ=bJ.map((t=>t.substr(0,3))),mJ=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],vJ=mJ.map((t=>t.substr(0,3)));function yJ(t,e){const r=[];if(e&&void 0!==t.day&&kG(t).length>1&&(fJ(function(t){return"Dropping day from datetime ".concat(cG(t)," as day cannot be combined with other units.")}(t)),delete(t=nG(t)).day),void 0!==t.year?r.push(t.year):r.push(2012),void 0!==t.month){const n=e?function(t){if(qG(t)&&(t=+t),Qc(t))return t-1;{const e=t.toLowerCase(),r=bJ.indexOf(e);if(-1!==r)return r;const n=e.substr(0,3),o=gJ.indexOf(n);if(-1!==o)return o;throw new Error(uJ("month",t))}}(t.month):t.month;r.push(n)}else if(void 0!==t.quarter){const n=e?function(t){if(qG(t)&&(t=+t),Qc(t))return t>4&&fJ(uJ("quarter",t)),t-1;throw new Error(uJ("quarter",t))}(t.quarter):t.quarter;r.push(Qc(n)?3*n:"".concat(n,"*3"))}else r.push(0);if(void 0!==t.date)r.push(t.date);else if(void 0!==t.day){const n=e?function(t){if(qG(t)&&(t=+t),Qc(t))return t%7;{const e=t.toLowerCase(),r=mJ.indexOf(e);if(-1!==r)return r;const n=e.substr(0,3),o=vJ.indexOf(n);if(-1!==o)return o;throw new Error(uJ("day",t))}}(t.day):t.day;r.push(Qc(n)?n+1:"".concat(n,"+1"))}else r.push(1);for(const n of["hours","minutes","seconds","milliseconds"]){const e=t[n];r.push(void 0===e?0:e)}return r}function xJ(t){const e=yJ(t,!0).join(", ");return t.utc?"utc(".concat(e,")"):"datetime(".concat(e,")")}const kJ={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},wJ=kG(kJ);function _J(t){return oc(t)?t.binned:CJ(t)}function CJ(t){return t&&t.startsWith("binned")}function OJ(t){return t.startsWith("utc")}const EJ={"year-month":"%b %Y ","year-month-date":"%b %d, %Y "};function DJ(t){return wJ.filter((e=>SJ(t,e)))}function jJ(t){const e=DJ(t);return e[e.length-1]}function SJ(t,e){const r=t.indexOf(e);return!(r<0)&&(!(r>0&&"seconds"===e&&"i"===t.charAt(r-1))&&(!(t.length>r+3&&"day"===e&&"o"===t.charAt(r+3))&&!(r>0&&"year"===e&&"f"===t.charAt(r-1))))}function AJ(t,e){let{end:r}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{end:!1};const n=SG(e),o=OJ(t)?"utc":"";let i;const a={};for(const u of wJ)SJ(t,u)&&(a[u]="quarter"===(c=u)?"(".concat(o,"quarter(").concat(n,")-1)"):"".concat(o).concat(c,"(").concat(n,")"),i=u);var c;return r&&(a[i]+="+1"),function(t){const e=yJ(t,!1).join(", ");return t.utc?"utc(".concat(e,")"):"datetime(".concat(e,")")}(a)}function MJ(t){if(!t)return;const e=DJ(t);return"timeUnitSpecifier(".concat(cG(e),", ").concat(cG(EJ),")")}function NJ(t){if(!t)return;let e;return tu(t)?e=CJ(t)?{unit:t.substring(6),binned:!0}:{unit:t}:oc(t)&&(e={...t,...t.unit?{unit:t.unit}:{}}),OJ(e.unit)&&(e.utc=!0,e.unit=function(t){return t.substring(3)}(e.unit)),e}function zJ(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t=>t;const r=NJ(t),n=jJ(r.unit);if(n&&"day"!==n){const t={year:2001,month:1,date:1,hours:0,minutes:0,seconds:0,milliseconds:0},{step:o,part:i}=FJ(n,r.step),a={...t,[i]:+t[i]+o};return"".concat(e(xJ(a))," - ").concat(e(xJ(t)))}}const PJ={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function FJ(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(function(t){return!!PJ[t]}(t))return{part:t,step:e};switch(t){case"day":case"dayofyear":return{part:"date",step:e};case"quarter":return{part:"month",step:3*e};case"week":return{part:"date",step:7*e}}}function LJ(t){return!(null==t||!t.field)&&void 0!==t.equal}function TJ(t){return!(null==t||!t.field)&&void 0!==t.lt}function RJ(t){return!(null==t||!t.field)&&void 0!==t.lte}function BJ(t){return!(null==t||!t.field)&&void 0!==t.gt}function IJ(t){return!(null==t||!t.field)&&void 0!==t.gte}function UJ(t){if(null!=t&&t.field){if(nc(t.range)&&2===t.range.length)return!0;if(lX(t.range))return!0}return!1}function qJ(t){return!(null==t||!t.field)&&(nc(t.oneOf)||nc(t.in))}function HJ(t){return qJ(t)||LJ(t)||UJ(t)||TJ(t)||BJ(t)||RJ(t)||IJ(t)}function WJ(t,e){return f1(t,{timeUnit:e,wrapTime:!0})}function VJ(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const{field:r}=t,n=NJ(t.timeUnit),{unit:o,binned:i}=n||{},a=XK(t,{expr:"datum"}),c=o?"time(".concat(i?a:AJ(o,r),")"):a;if(LJ(t))return"".concat(c,"===").concat(WJ(t.equal,o));if(TJ(t)){const e=t.lt;return"".concat(c,"<").concat(WJ(e,o))}if(BJ(t)){const e=t.gt;return"".concat(c,">").concat(WJ(e,o))}if(RJ(t)){const e=t.lte;return"".concat(c,"<=").concat(WJ(e,o))}if(IJ(t)){const e=t.gte;return"".concat(c,">=").concat(WJ(e,o))}if(qJ(t))return"indexof([".concat(function(t,e){return t.map((t=>WJ(t,e)))}(t.oneOf,o).join(","),"], ").concat(c,") !== -1");if(function(t){return!(null==t||!t.field)&&void 0!==t.valid}(t))return ZJ(c,t.valid);if(UJ(t)){const{range:r}=t,n=lX(r)?{signal:"".concat(r.signal,"[0]")}:r[0],i=lX(r)?{signal:"".concat(r.signal,"[1]")}:r[1];if(null!==n&&null!==i&&e)return"inrange("+c+", ["+WJ(n,o)+", "+WJ(i,o)+"])";const a=[];return null!==n&&a.push("".concat(c," >= ").concat(WJ(n,o))),null!==i&&a.push("".concat(c," <= ").concat(WJ(i,o))),a.length>0?a.join(" && "):"true"}throw new Error("Invalid field predicate: ".concat(cG(t)))}function ZJ(t){return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?"isValid(".concat(t,") && isFinite(+").concat(t,")"):"!isValid(".concat(t,") || !isFinite(+").concat(t,")")}function GJ(t){return HJ(t)&&t.timeUnit?{...t,timeUnit:NJ(t.timeUnit)}:t}function $J(t){return"quantitative"===t||"temporal"===t}function YJ(t){return"ordinal"===t||"nominal"===t}const XJ="quantitative",JJ="ordinal",QJ="temporal",KJ="nominal",tQ="geojson";const eQ={LINEAR:"linear",LOG:"log",POW:"pow",SQRT:"sqrt",SYMLOG:"symlog",IDENTITY:"identity",SEQUENTIAL:"sequential",TIME:"time",UTC:"utc",QUANTILE:"quantile",QUANTIZE:"quantize",THRESHOLD:"threshold",BIN_ORDINAL:"bin-ordinal",ORDINAL:"ordinal",POINT:"point",BAND:"band"},rQ={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};function nQ(t,e){const r=rQ[t],n=rQ[e];return r===n||"ordinal-position"===r&&"time"===n||"ordinal-position"===n&&"time"===r}const oQ={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function iQ(t){return oQ[t]}const aQ=new Set(["linear","log","pow","sqrt","symlog"]),cQ=new Set([...aQ,"time","utc"]);function uQ(t){return aQ.has(t)}const lQ=new Set(["quantile","quantize","threshold"]),sQ=new Set([...cQ,...lQ,"sequential","identity"]),dQ=new Set(["ordinal","bin-ordinal","point","band"]);function hQ(t){return dQ.has(t)}function fQ(t){return sQ.has(t)}function pQ(t){return cQ.has(t)}function bQ(t){return lQ.has(t)}function gQ(t){return null==t?void 0:t.param}const{type:mQ,domain:vQ,range:yQ,rangeMax:xQ,rangeMin:kQ,scheme:wQ,..._Q}={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},CQ=kG(_Q);function OQ(t,e){switch(e){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!["point","band","identity"].includes(t);case"bins":return!["point","band","identity","ordinal"].includes(t);case"round":return pQ(t)||"band"===t||"point"===t;case"padding":case"rangeMin":case"rangeMax":return pQ(t)||["point","band"].includes(t);case"paddingOuter":case"align":return["point","band"].includes(t);case"paddingInner":return"band"===t;case"domainMax":case"domainMid":case"domainMin":case"domainRaw":case"clamp":return pQ(t);case"nice":return pQ(t)||"quantize"===t||"threshold"===t;case"exponent":return"pow"===t;case"base":return"log"===t;case"constant":return"symlog"===t;case"zero":return fQ(t)&&!sG(["log","time","utc","threshold","quantile"],t)}}function EQ(t,e){switch(e){case"interpolate":case"scheme":case"domainMid":return N$(t)?void 0:'Cannot use the scale property "'.concat(e,'" with non-color channel.');case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"domainRaw":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}const DQ={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},jQ=DQ.arc,SQ=DQ.area,AQ=DQ.bar,MQ=DQ.image,NQ=DQ.line,zQ=DQ.point,PQ=DQ.rect,FQ=DQ.rule,LQ=DQ.text,TQ=DQ.tick,RQ=DQ.trail,BQ=DQ.circle,IQ=DQ.square,UQ=DQ.geoshape;function qQ(t){return["line","area","trail"].includes(t)}function HQ(t){return["rect","bar","image","arc"].includes(t)}const WQ=new Set(kG(DQ));function VQ(t){return t.type}const ZQ=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit","fill","fillOpacity"],GQ=kG({color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1}),$Q=kG({mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1});function YQ(t){return t&&null!=t.band}const XQ={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},JQ={binSpacing:1,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5},QQ={binSpacing:0,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5};function KQ(t){const{channel:e,channelDef:r,markDef:n,scale:o,config:i}=t,a=oK(t);return LK(r)&&!XY(r.aggregate)&&o&&pQ(o.get("type"))?function(t){let{fieldDef:e,channel:r,markDef:n,ref:o,config:i}=t;if(qQ(n.type))return o;const a=CX("invalid",n,i);if(null===a)return[tK(e,r),o];return o}({fieldDef:r,channel:e,markDef:n,ref:a,config:i}):a}function tK(t,e){return{test:eK(t,!0),..."y"===$$(e)?{field:{group:"height"}}:{value:0}}}function eK(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return ZJ(tu(t)?t:XK(t,{expr:"datum"}),!e)}function rK(t,e,r,n){const o={};if(e&&(o.scale=e),RK(t)){const{datum:e}=t;pJ(e)?o.signal=xJ(e):lX(e)?o.signal=e.signal:iX(e)?o.signal=e.expr:o.value=e}else o.field=XK(t,r);if(n){const{offset:t,band:e}=n;t&&(o.offset=t),e&&(o.band=e)}return o}function nK(t){let{scaleName:e,fieldOrDatumDef:r,fieldOrDatumDef2:n,offset:o,startSuffix:i,bandPosition:a=.5}=t;const c=01&&void 0!==arguments[1]?arguments[1]:{},r=t.field;const n=e.prefix;let o=e.suffix,i="";if(function(t){return"count"===t.aggregate}(t))r=BG("count");else{let n;if(!e.nofn)if(function(t){return"op"in t}(t))n=t.op;else{const{bin:l,aggregate:s,timeUnit:d}=t;var a,c;if(tX(l))n=KY(l),o=(null!==(a=e.binSuffix)&&void 0!==a?a:"")+(null!==(c=e.suffix)&&void 0!==c?c:"");else if(s)GY(s)?(i='["'.concat(r,'"]'),r="argmax_".concat(s.argmax)):ZY(s)?(i='["'.concat(r,'"]'),r="argmin_".concat(s.argmin)):n=String(s);else if(d&&!_J(d)){var u;n=function(t){const{utc:e,...r}=NJ(t);return r.unit?(e?"utc":"")+kG(r).map((t=>OG("".concat("unit"===t?"":"_".concat(t,"_")).concat(r[t])))).join(""):(e?"utc":"")+"timeunit"+kG(r).map((t=>OG("_".concat(t,"_").concat(r[t])))).join("")}(d),o=(!["range","mid"].includes(e.binSuffix)&&e.binSuffix||"")+(null!==(u=e.suffix)&&void 0!==u?u:"")}}n&&(r=r?"".concat(n,"_").concat(r):n)}return o&&(r="".concat(r,"_").concat(o)),n&&(r="".concat(n,"_").concat(r)),e.forAs?PG(r):e.expr?AG(r,e.expr)+i:NG(r)+i}function JK(t){switch(t.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return LK(t)&&!!t.bin;case"temporal":return!1}throw new Error($X(t.type))}const QK=(t,e)=>{switch(e.fieldTitle){case"plain":return t.field;case"functional":return function(t){const{aggregate:e,bin:r,timeUnit:n,field:o}=t;if(GY(e))return"".concat(o," for argmax(").concat(e.argmax,")");if(ZY(e))return"".concat(o," for argmin(").concat(e.argmin,")");const i=n&&!_J(n)?NJ(n):void 0,a=e||(null==i?void 0:i.unit)||(null==i?void 0:i.maxbins)&&"timeunit"||tX(r)&&"bin";return a?"".concat(a.toUpperCase(),"(").concat(o,")"):o}(t);default:return function(t,e){const{field:r,bin:n,timeUnit:o,aggregate:i}=t;if("count"===i)return e.countTitle;if(tX(n))return"".concat(r," (binned)");if(o&&!_J(o)){var a;const t=null===(a=NJ(o))||void 0===a?void 0:a.unit;if(t)return"".concat(r," (").concat(DJ(t).join("-"),")")}else if(i)return GY(i)?"".concat(r," for max ").concat(i.argmax):ZY(i)?"".concat(r," for min ").concat(i.argmin):"".concat(jG(i)," of ").concat(r);return r}(t,e)}};let KK=QK;function t1(t){KK=t}function e1(t,e,r){var n;let{allowDisabling:o,includeDefault:i=!0}=r;const a=null===(n=r1(t))||void 0===n?void 0:n.title;if(!LK(t))return null!=a?a:t.title;const c=t,u=i?n1(c,e):void 0;return o?LG(a,c.title,u):null!==(l=null!=a?a:c.title)&&void 0!==l?l:u;var l}function r1(t){return ZK(t)&&t.axis?t.axis:GK(t)&&t.legend?t.legend:OK(t)&&t.header?t.header:void 0}function n1(t,e){return KK(t,e)}function o1(t){if($K(t)){const{format:e,formatType:r}=t;return{format:e,formatType:r}}{var e;const r=null!==(e=r1(t))&&void 0!==e?e:{},{format:n,formatType:o}=r;return{format:n,formatType:o}}}function i1(t){return LK(t)?t:PK(t)?t.condition:void 0}function a1(t){return qK(t)?t:FK(t)?t.condition:void 0}function c1(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(tu(t)||Qc(t)||Yc(t)){return fJ(function(t,e,r){return"Channel ".concat(t," is a ").concat(e,". Converted to {value: ").concat(cG(r),"}.")}(e,tu(t)?"string":Qc(t)?"number":"boolean",t)),{value:t}}return qK(t)?u1(t,e,r,n):FK(t)?{...t,condition:u1(t.condition,e,r,n)}:t}function u1(t,e,r,n){if($K(t)){const{format:o,formatType:i,...a}=t;if(aK(i)&&!r.customFormatTypes)return fJ(VX(e)),u1(a,e,r,n)}else{const o=ZK(t)?"axis":GK(t)?"legend":OK(t)?"header":null;if(o&&t[o]){const{format:i,formatType:a,...c}=t[o];if(aK(a)&&!r.customFormatTypes)return fJ(VX(e)),u1({...t,[o]:c},e,r,n)}}return LK(t)?l1(t,e,n):function(t){let e=t.type;if(e)return t;const{datum:r}=t;return e=Qc(r)?"quantitative":tu(r)?"nominal":pJ(r)?"temporal":void 0,{...t,type:e}}(t)}function l1(t,e){let{compositeMark:r=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{aggregate:n,timeUnit:o,bin:i,field:a}=t,c={...t};if(r||!n||$Y(n)||GY(n)||ZY(n)||(fJ(function(t){return'Invalid aggregation operator "'.concat(t,'".')}(n)),delete c.aggregate),o&&(c.timeUnit=NJ(o)),a&&(c.field="".concat(a)),tX(i)&&(c.bin=s1(i,e)),eX(i)&&!xY(e)&&fJ(function(t){return"Channel ".concat(t,' should not be used with "binned" bin.')}(e)),HK(c)){const{type:t}=c,e=function(t){if(t)switch(t=t.toLowerCase()){case"q":case XJ:return"quantitative";case"t":case QJ:return"temporal";case"o":case JJ:return"ordinal";case"n":case KJ:return"nominal";case tQ:return"geojson"}}(t);t!==e&&(c.type=e),"quantitative"!==t&&XY(n)&&(fJ(function(t,e){return'Invalid field type "'.concat(t,'" for aggregate: "').concat(e,'", using "quantitative" instead.')}(t,n)),c.type="quantitative")}else if(!G$(e)){const t=function(t,e){var r;switch(e){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(jK(t)&&nc(t.sort))return"ordinal";const{aggregate:n,bin:o,timeUnit:i}=t;if(i)return"temporal";if(o||n&&!GY(n)&&!ZY(n))return"quantitative";if(VK(t)&&null!==(r=t.scale)&&void 0!==r&&r.type)switch(rQ[t.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}(c,e);c.type=t}if(HK(c)){const{compatible:t,warning:r}=function(t,e){const r=t.type;if("geojson"===r&&"shape"!==e)return{compatible:!1,warning:"Channel ".concat(e," should not be used with a geojson data.")};switch(e){case HG:case WG:case VG:return JK(t)?d1:{compatible:!1,warning:KX(e)};case ZG:case GG:case XG:case JG:case a$:case c$:case u$:case m$:case y$:case x$:case k$:case w$:case _$:case d$:case t$:case QG:case C$:return d1;case n$:case i$:case r$:case o$:return r!==XJ?{compatible:!1,warning:"Channel ".concat(e," should be used with a quantitative field only, not ").concat(t.type," field.")}:d1;case h$:case f$:case p$:case b$:case s$:case e$:case KG:case $G:case YG:return"nominal"!==r||t.sort?d1:{compatible:!1,warning:"Channel ".concat(e," should not be used with an unsorted discrete field.")};case l$:case g$:return JK(t)||function(t){var e;return VK(t)&&bQ(null===(e=t.scale)||void 0===e?void 0:e.type)}(t)?d1:{compatible:!1,warning:tJ(e)};case v$:return"nominal"!==t.type||"sort"in t?d1:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}}(c,e)||{};!1===t&&fJ(r)}if(jK(c)&&tu(c.sort)){const{sort:t}=c;if(xK(t))return{...c,sort:{encoding:t}};const e=t.substr(1);if("-"===t.charAt(0)&&xK(e))return{...c,sort:{encoding:e,order:"descending"}}}if(OK(c)){const{header:t}=c;if(t){const{orient:e,...r}=t;if(e)return{...c,header:{...r,labelOrient:t.labelOrient||e,titleOrient:t.titleOrient||e}}}}return c}function s1(t,e){return Yc(t)?{maxbins:oX(e)}:"binned"===t?{binned:!0}:t.maxbins||t.step?t:{...t,maxbins:oX(e)}}const d1={compatible:!0};function h1(t){const{formatType:e}=o1(t);return"time"===e||!e&&function(t){return t&&("temporal"===t.type||LK(t)&&!!t.timeUnit)}(t)}function f1(t,e){var r;let{timeUnit:n,type:o,wrapTime:i,undefinedIfExprNotRequired:a}=e;const c=n&&(null===(r=NJ(n))||void 0===r?void 0:r.unit);let u,l=c||"temporal"===o;return iX(t)?u=t.expr:lX(t)?u=t.signal:pJ(t)?(l=!0,u=xJ(t)):(tu(t)||Qc(t))&&l&&(u="datetime(".concat(cG(t),")"),function(t){return!!kJ[t]}(c)&&(Qc(t)&&t<1e4||tu(t)&&isNaN(Date.parse(t)))&&(u=xJ({[c]:t}))),u?i&&l?"time(".concat(u,")"):u:a?void 0:cG(t)}function p1(t,e){const{type:r}=t;return e.map((e=>{const n=f1(e,{timeUnit:LK(t)&&!_J(t.timeUnit)?t.timeUnit:void 0,type:r,undefinedIfExprNotRequired:!0});return void 0!==n?{signal:n}:e}))}function b1(t,e){return tX(t.bin)?RY(e)&&["ordinal","nominal"].includes(t.type):(console.warn("Only call this method for binned field defs."),!1)}const g1={labelAlign:{part:"labels",vgProp:"align"},labelBaseline:{part:"labels",vgProp:"baseline"},labelColor:{part:"labels",vgProp:"fill"},labelFont:{part:"labels",vgProp:"font"},labelFontSize:{part:"labels",vgProp:"fontSize"},labelFontStyle:{part:"labels",vgProp:"fontStyle"},labelFontWeight:{part:"labels",vgProp:"fontWeight"},labelOpacity:{part:"labels",vgProp:"opacity"},labelOffset:null,labelPadding:null,gridColor:{part:"grid",vgProp:"stroke"},gridDash:{part:"grid",vgProp:"strokeDash"},gridDashOffset:{part:"grid",vgProp:"strokeDashOffset"},gridOpacity:{part:"grid",vgProp:"opacity"},gridWidth:{part:"grid",vgProp:"strokeWidth"},tickColor:{part:"ticks",vgProp:"stroke"},tickDash:{part:"ticks",vgProp:"strokeDash"},tickDashOffset:{part:"ticks",vgProp:"strokeDashOffset"},tickOpacity:{part:"ticks",vgProp:"opacity"},tickSize:null,tickWidth:{part:"ticks",vgProp:"strokeWidth"}};function m1(t){return null==t?void 0:t.condition}const v1=["domain","grid","labels","ticks","title"],y1={grid:"grid",gridCap:"grid",gridColor:"grid",gridDash:"grid",gridDashOffset:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",aria:"main",description:"main",domain:"main",domainCap:"main",domainColor:"main",domainDash:"main",domainDashOffset:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontStyle:"main",labelFontWeight:"main",labelLimit:"main",labelLineHeight:"main",labelOffset:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",labelSeparation:"main",maxExtent:"main",minExtent:"main",offset:"both",position:"main",tickCap:"main",tickColor:"main",tickDash:"main",tickDashOffset:"main",tickMinStep:"both",tickOffset:"both",tickOpacity:"main",tickRound:"both",ticks:"main",tickSize:"main",tickWidth:"both",title:"main",titleAlign:"main",titleAnchor:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontStyle:"main",titleFontWeight:"main",titleLimit:"main",titleLineHeight:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",encode:"both",scale:"both",tickBand:"both",tickCount:"both",tickExtra:"both",translate:"both",values:"both",zindex:"both"},x1={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},k1={...x1,style:1,labelExpr:1,encoding:1};function w1(t){return!!k1[t]}const _1=kG({axis:1,axisBand:1,axisBottom:1,axisDiscrete:1,axisLeft:1,axisPoint:1,axisQuantitative:1,axisRight:1,axisTemporal:1,axisTop:1,axisX:1,axisXBand:1,axisXDiscrete:1,axisXPoint:1,axisXQuantitative:1,axisXTemporal:1,axisY:1,axisYBand:1,axisYDiscrete:1,axisYPoint:1,axisYQuantitative:1,axisYTemporal:1});function C1(t){return"mark"in t}class O1{constructor(t,e){this.name=t,this.run=e}hasMatchingType(t){return!!C1(t)&&function(t){return VQ(t)?t.type:t}(t.mark)===this.name}}function E1(t,e){const r=t&&t[e];return!!r&&(nc(r)?dG(r,(t=>!!t.field)):LK(r)||PK(r))}function D1(t,e){const r=t&&t[e];return!!r&&(nc(r)?dG(r,(t=>!!t.field)):LK(r)||RK(r)||FK(r))}function j1(t,e){if(xY(e)){const r=t[e];if((LK(r)||RK(r))&&(YJ(r.type)||LK(r)&&r.timeUnit)){return D1(t,K$(e))}}return!1}function S1(t){return dG(L$,(e=>{if(E1(t,e)){const r=t[e];if(nc(r))return dG(r,(t=>!!t.aggregate));{const t=i1(r);return t&&!!t.aggregate}}return!1}))}function A1(t,e){const r=[],n=[],o=[],i=[],a={};return z1(t,((c,u)=>{if(LK(c)){const{field:l,aggregate:s,bin:d,timeUnit:h,...f}=c;if(s||h||d){const t=r1(c),p=null==t?void 0:t.title;let b=XK(c,{forAs:!0});const g={...p?[]:{title:e1(c,e,{allowDisabling:!0})},...f,field:b};if(s){let t;if(GY(s)?(t="argmax",b=XK({op:"argmax",field:s.argmax},{forAs:!0}),g.field="".concat(b,".").concat(l)):ZY(s)?(t="argmin",b=XK({op:"argmin",field:s.argmin},{forAs:!0}),g.field="".concat(b,".").concat(l)):"boxplot"!==s&&"errorbar"!==s&&"errorband"!==s&&(t=s),t){const e={op:t,as:b};l&&(e.field=l),i.push(e)}}else if(r.push(b),HK(c)&&tX(d)){if(n.push({bin:d,field:l,as:b}),r.push(XK(c,{binSuffix:"end"})),b1(c,u)&&r.push(XK(c,{binSuffix:"range"})),xY(u)){const t={field:"".concat(b,"_end")};a["".concat(u,"2")]=t}g.bin="binned",G$(u)||(g.type=XJ)}else if(h&&!_J(h)){o.push({timeUnit:h,field:l,as:b});const t=HK(c)&&c.type!==QJ&&"time";t&&(u===m$||u===k$?g.formatType=t:!function(t){return!!gY[t]}(u)?xY(u)&&(g.axis={formatType:t,...g.axis}):g.legend={formatType:t,...g.legend})}a[u]=g}else r.push(l),a[u]=t[u]}else a[u]=t[u]})),{bins:n,timeUnits:o,aggregate:i,groupby:r,encoding:a}}function M1(t,e,r){const n=BY(e,r);if(!n)return!1;if("binned"===n){const r=t[e===$G?ZG:GG];return!!(LK(r)&&LK(t[e])&&eX(r.bin))}return!0}function N1(t,e){const r={};for(const n of kG(t)){const o=c1(t[n],n,e,{compositeMark:!0});r[n]=o}return r}function z1(t,e,r){if(t)for(const n of kG(t)){const o=t[n];if(nc(o))for(const t of o)e.call(r,t,n);else e.call(r,o,n)}}function P1(t,e){return kG(e).reduce(((r,n)=>{switch(n){case ZG:case GG:case w$:case C$:case _$:case $G:case YG:case XG:case JG:case t$:case e$:case QG:case KG:case r$:case n$:case o$:case i$:case m$:case l$:case d$:case k$:return r;case v$:if("line"===t||"trail"===t)return r;case y$:case x$:{const t=e[n];if(nc(t)||LK(t))for(const e of jc(t))e.aggregate||r.push(XK(e,{}));return r}case s$:if("trail"===t)return r;case a$:case c$:case u$:case h$:case f$:case p$:case g$:case b$:{const t=i1(e[n]);return t&&!t.aggregate&&r.push(XK(t,{})),r}}}),[])}function F1(t,e,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if("tooltip"in r)return{tooltip:r.tooltip};const o=t.map((t=>{let{fieldPrefix:r,titlePrefix:o}=t;const i=n?" of ".concat(L1(e)):"";return{field:r+e.field,type:e.type,title:lX(o)?{signal:"".concat(o,'"').concat(escape(i),'"')}:o+i}})),i=function(t){const e=[];for(const r of kG(t))if(E1(t,r)){const n=jc(t[r]);for(const t of n)LK(t)?e.push(t):PK(t)&&e.push(t.condition)}return e}(r).map(YK);return{tooltip:[...o,...bG(i,uG)]}}function L1(t){const{title:e,field:r}=t;return LG(e,r)}function T1(t,e,r,n,o){const{scale:i,axis:a}=r;return c=>{let{partName:u,mark:l,positionPrefix:s,endPositionPrefix:d,extraEncoding:h={}}=c;const f=L1(r);return R1(t,u,o,{mark:l,encoding:{[e]:{field:"".concat(s,"_").concat(r.field),type:r.type,...void 0!==f?{title:f}:{},...void 0!==i?{scale:i}:{},...void 0!==a?{axis:a}:{}},...tu(d)?{["".concat(e,"2")]:{field:"".concat(d,"_").concat(r.field)}}:{},...n,...h}})}}function R1(t,e,r,n){const{clip:o,color:i,opacity:a}=t,c=t.type;return t[e]||void 0===t[e]&&r[e]?[{...n,mark:{...r[e],...o?{clip:o}:{},...i?{color:i}:{},...a?{opacity:a}:{},...VQ(n.mark)?n.mark:{type:n.mark},style:"".concat(c,"-").concat(String(e)),...Yc(t[e])?{}:t[e]}}]:[]}function B1(t,e,r){const{encoding:n}=t,o="vertical"===e?"y":"x",i=n[o],a=n["".concat(o,"2")],c=n["".concat(o,"Error")],u=n["".concat(o,"Error2")];return{continuousAxisChannelDef:I1(i,r),continuousAxisChannelDef2:I1(a,r),continuousAxisChannelDefError:I1(c,r),continuousAxisChannelDefError2:I1(u,r),continuousAxis:o}}function I1(t,e){if(null!=t&&t.aggregate){const{aggregate:r,...n}=t;return r!==e&&fJ(function(t,e){return"Continuous axis should not have customized aggregation function ".concat(t,"; ").concat(e," already agregates the axis.")}(r,e)),n}return t}function U1(t,e){const{mark:r,encoding:n}=t,{x:o,y:i}=n;if(VQ(r)&&r.orient)return r.orient;if(BK(o)){if(BK(i)){const t=LK(o)&&o.aggregate,r=LK(i)&&i.aggregate;if(t||r!==e){if(r||t!==e){if(t===e&&r===e)throw new Error("Both x and y cannot have aggregate");return h1(i)&&!h1(o)?"horizontal":"vertical"}return"horizontal"}return"vertical"}return"horizontal"}if(BK(i))return"vertical";throw new Error("Need a valid continuous axis for ".concat(e,"s"))}const q1="boxplot",H1=new O1(q1,V1);function W1(t){return Qc(t)?"tukey":t}function V1(t,e){var r;let{config:n}=e;t={...t,encoding:N1(t.encoding,n)};const{mark:o,encoding:i,params:a,projection:c,...u}=t,l=VQ(o)?o:{type:o};a&&fJ(IX("boxplot"));const s=null!==(r=l.extent)&&void 0!==r?r:n.boxplot.extent,d=CX("size",l,n),h=l.invalid,f=W1(s),{bins:p,timeUnits:b,transform:g,continuousAxisChannelDef:m,continuousAxis:v,groupby:y,aggregate:x,encodingWithoutContinuousAxis:k,ticksOrient:w,boxOrient:_,customTooltipWithoutAggregatedField:C}=function(t,e,r){const n=U1(t,q1),{continuousAxisChannelDef:o,continuousAxis:i}=B1(t,n,q1),a=o.field,c=W1(e),u=[...Z1(a),{op:"median",field:a,as:"mid_box_".concat(a)},{op:"min",field:a,as:("min-max"===c?"lower_whisker_":"min_")+a},{op:"max",field:a,as:("min-max"===c?"upper_whisker_":"max_")+a}],l="min-max"===c||"tukey"===c?[]:[{calculate:'datum["upper_box_'.concat(a,'"] - datum["lower_box_').concat(a,'"]'),as:"iqr_".concat(a)},{calculate:'min(datum["upper_box_'.concat(a,'"] + datum["iqr_').concat(a,'"] * ').concat(e,', datum["max_').concat(a,'"])'),as:"upper_whisker_".concat(a)},{calculate:'max(datum["lower_box_'.concat(a,'"] - datum["iqr_').concat(a,'"] * ').concat(e,', datum["min_').concat(a,'"])'),as:"lower_whisker_".concat(a)}],{[i]:s,...d}=t.encoding,{customTooltipWithoutAggregatedField:h,filteredEncoding:f}=function(t){const{tooltip:e,...r}=t;if(!e)return{filteredEncoding:r};let n,o;if(nc(e)){for(const t of e)t.aggregate?(n||(n=[]),n.push(t)):(o||(o=[]),o.push(t));n&&(r.tooltip=n)}else e.aggregate?r.tooltip=e:o=e;return nc(o)&&1===o.length&&(o=o[0]),{customTooltipWithoutAggregatedField:o,filteredEncoding:r}}(d),{bins:p,timeUnits:b,aggregate:g,groupby:m,encoding:v}=A1(f,r),y="vertical"===n?"horizontal":"vertical",x=n,k=[...p,...b,{aggregate:[...g,...u],groupby:m},...l];return{bins:p,timeUnits:b,transform:k,groupby:m,aggregate:g,continuousAxisChannelDef:o,continuousAxis:i,encodingWithoutContinuousAxis:v,ticksOrient:y,boxOrient:x,customTooltipWithoutAggregatedField:h}}(t,s,n),{color:O,size:E,...D}=k,j=t=>T1(l,v,m,t,n.boxplot),S=j(D),A=j(k),M=j({...D,...E?{size:E}:{}}),N=F1([{fieldPrefix:"min-max"===f?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:"min-max"===f?"lower_whisker_":"min_",titlePrefix:"Min"}],m,k),z={type:"tick",color:"black",opacity:1,orient:w,invalid:h,aria:!1},P="min-max"===f?N:F1([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],m,k),F=[...S({partName:"rule",mark:{type:"rule",invalid:h,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:P}),...S({partName:"rule",mark:{type:"rule",invalid:h,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:P}),...S({partName:"ticks",mark:z,positionPrefix:"lower_whisker",extraEncoding:P}),...S({partName:"ticks",mark:z,positionPrefix:"upper_whisker",extraEncoding:P})],L=[..."tukey"!==f?F:[],...A({partName:"box",mark:{type:"bar",...d?{size:d}:{},orient:_,invalid:h,ariaRoleDescription:"box"},positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:N}),...M({partName:"median",mark:{type:"tick",invalid:h,...oc(n.boxplot.median)&&n.boxplot.median.color?{color:n.boxplot.median.color}:{},...d?{size:d}:{},orient:w,aria:!1},positionPrefix:"mid_box",extraEncoding:N})];var T;if("min-max"===f)return{...u,transform:(null!==(T=u.transform)&&void 0!==T?T:[]).concat(g),layer:L};const R='datum["lower_box_'.concat(m.field,'"]'),B='datum["upper_box_'.concat(m.field,'"]'),I="(".concat(B," - ").concat(R,")"),U="".concat(R," - ").concat(s," * ").concat(I),q="".concat(B," + ").concat(s," * ").concat(I),H='datum["'.concat(m.field,'"]'),W={joinaggregate:Z1(m.field),groupby:y},V={transform:[{filter:"(".concat(U," <= ").concat(H,") && (").concat(H," <= ").concat(q,")")},{aggregate:[{op:"min",field:m.field,as:"lower_whisker_".concat(m.field)},{op:"max",field:m.field,as:"upper_whisker_".concat(m.field)},{op:"min",field:"lower_box_".concat(m.field),as:"lower_box_".concat(m.field)},{op:"max",field:"upper_box_".concat(m.field),as:"upper_box_".concat(m.field)},...x],groupby:y}],layer:F},{tooltip:Z,...G}=D,{scale:$,axis:Y}=m,X=L1(m),J=aG(Y,["title"]),Q=R1(l,"outliers",n.boxplot,{transform:[{filter:"(".concat(H," < ").concat(U,") || (").concat(H," > ").concat(q,")")}],mark:"point",encoding:{[v]:{field:m.field,type:m.type,...void 0!==X?{title:X}:{},...void 0!==$?{scale:$}:{},...xG(J)?{}:{axis:J}},...G,...O?{color:O}:{},...C?{tooltip:C}:{}}})[0];let K;const tt=[...p,...b,W];return Q?K={transform:tt,layer:[Q,V]}:(K=V,K.transform.unshift(...tt)),{...u,layer:[K,{transform:g,layer:L}]}}function Z1(t){return[{op:"q1",field:t,as:"lower_box_".concat(t)},{op:"q3",field:t,as:"upper_box_".concat(t)}]}const G1="errorbar",$1=new O1(G1,Y1);function Y1(t,e){let{config:r}=e;t={...t,encoding:N1(t.encoding,r)};const{transform:n,continuousAxisChannelDef:o,continuousAxis:i,encodingWithoutContinuousAxis:a,ticksOrient:c,markDef:u,outerSpec:l,tooltipEncoding:s}=J1(t,G1,r);delete a.size;const d=T1(u,i,o,a,r.errorbar),h=u.thickness,f=u.size,p={type:"tick",orient:c,aria:!1,...void 0!==h?{thickness:h}:{},...void 0!==f?{size:f}:{}},b=[...d({partName:"ticks",mark:p,positionPrefix:"lower",extraEncoding:s}),...d({partName:"ticks",mark:p,positionPrefix:"upper",extraEncoding:s}),...d({partName:"rule",mark:{type:"rule",ariaRoleDescription:"errorbar",...void 0!==h?{size:h}:{}},positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:s})];return{...l,transform:n,...b.length>1?{layer:b}:{...b[0]}}}function X1(t,e){const{encoding:r}=t;if(function(t){return(qK(t.x)||qK(t.y))&&!qK(t.x2)&&!qK(t.y2)&&!qK(t.xError)&&!qK(t.xError2)&&!qK(t.yError)&&!qK(t.yError2)}(r))return{orient:U1(t,e),inputType:"raw"};const n=function(t){return qK(t.x2)||qK(t.y2)}(r),o=function(t){return qK(t.xError)||qK(t.xError2)||qK(t.yError)||qK(t.yError2)}(r),i=r.x,a=r.y;if(n){if(o)throw new Error("".concat(e," cannot be both type aggregated-upper-lower and aggregated-error"));const t=r.x2,n=r.y2;if(qK(t)&&qK(n))throw new Error("".concat(e," cannot have both x2 and y2"));if(qK(t)){if(BK(i))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error("Both x and x2 have to be quantitative in ".concat(e))}if(qK(n)){if(BK(a))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error("Both y and y2 have to be quantitative in ".concat(e))}throw new Error("No ranged axis")}{const t=r.xError,n=r.xError2,o=r.yError,c=r.yError2;if(qK(n)&&!qK(t))throw new Error("".concat(e," cannot have xError2 without xError"));if(qK(c)&&!qK(o))throw new Error("".concat(e," cannot have yError2 without yError"));if(qK(t)&&qK(o))throw new Error("".concat(e," cannot have both xError and yError with both are quantiative"));if(qK(t)){if(BK(i))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(qK(o)){if(BK(a))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function J1(t,e,r){var n;const{mark:o,encoding:i,params:a,projection:c,...u}=t,l=VQ(o)?o:{type:o};a&&fJ(IX(e));const{orient:s,inputType:d}=X1(t,e),{continuousAxisChannelDef:h,continuousAxisChannelDef2:f,continuousAxisChannelDefError:p,continuousAxisChannelDefError2:b,continuousAxis:g}=B1(t,s,e),{errorBarSpecificAggregate:m,postAggregateCalculates:v,tooltipSummary:y,tooltipTitleWithFieldName:x}=function(t,e,r,n,o,i,a,c){let u=[],l=[];const s=e.field;let d,h=!1;if("raw"===i){const e=t.center?t.center:t.extent?"iqr"===t.extent?"median":"mean":c.errorbar.center,r=t.extent?t.extent:"mean"===e?"stderr":"iqr";if("median"===e!=("iqr"===r)&&fJ(function(t,e,r){return"".concat(t," is not usually used with ").concat(e," for ").concat(r,".")}(e,r,a)),"stderr"===r||"stdev"===r)u=[{op:r,field:s,as:"extent_".concat(s)},{op:e,field:s,as:"center_".concat(s)}],l=[{calculate:'datum["center_'.concat(s,'"] + datum["extent_').concat(s,'"]'),as:"upper_".concat(s)},{calculate:'datum["center_'.concat(s,'"] - datum["extent_').concat(s,'"]'),as:"lower_".concat(s)}],d=[{fieldPrefix:"center_",titlePrefix:jG(e)},{fieldPrefix:"upper_",titlePrefix:Q1(e,r,"+")},{fieldPrefix:"lower_",titlePrefix:Q1(e,r,"-")}],h=!0;else{let t,e,n;"ci"===r?(t="mean",e="ci0",n="ci1"):(t="median",e="q1",n="q3"),u=[{op:e,field:s,as:"lower_".concat(s)},{op:n,field:s,as:"upper_".concat(s)},{op:t,field:s,as:"center_".concat(s)}],d=[{fieldPrefix:"upper_",titlePrefix:e1({field:s,aggregate:n,type:"quantitative"},c,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:e1({field:s,aggregate:e,type:"quantitative"},c,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:e1({field:s,aggregate:t,type:"quantitative"},c,{allowDisabling:!1})}]}}else{(t.center||t.extent)&&fJ(function(t,e){return"".concat(e?"extent ":"").concat(e&&t?"and ":"").concat(t?"center ":"").concat(e&&t?"are ":"is ","not needed when data are aggregated.")}(t.center,t.extent)),"aggregated-upper-lower"===i?(d=[],l=[{calculate:'datum["'.concat(r.field,'"]'),as:"upper_".concat(s)},{calculate:'datum["'.concat(s,'"]'),as:"lower_".concat(s)}]):"aggregated-error"===i&&(d=[{fieldPrefix:"",titlePrefix:s}],l=[{calculate:'datum["'.concat(s,'"] + datum["').concat(n.field,'"]'),as:"upper_".concat(s)}],o?l.push({calculate:'datum["'.concat(s,'"] + datum["').concat(o.field,'"]'),as:"lower_".concat(s)}):l.push({calculate:'datum["'.concat(s,'"] - datum["').concat(n.field,'"]'),as:"lower_".concat(s)}));for(const t of l)d.push({fieldPrefix:t.as.substring(0,6),titlePrefix:zG(zG(t.calculate,'datum["',""),'"]',"")})}return{postAggregateCalculates:l,errorBarSpecificAggregate:u,tooltipSummary:d,tooltipTitleWithFieldName:h}}(l,h,f,p,b,d,e,r),{[g]:k,["x"===g?"x2":"y2"]:w,["x"===g?"xError":"yError"]:_,["x"===g?"xError2":"yError2"]:C,...O}=i,{bins:E,timeUnits:D,aggregate:j,groupby:S,encoding:A}=A1(O,r),M=[...j,...m],N="raw"!==d?[]:S,z=F1(y,h,A,x);return{transform:[...null!==(n=u.transform)&&void 0!==n?n:[],...E,...D,...0===M.length?[]:[{aggregate:M,groupby:N}],...v],groupby:N,continuousAxisChannelDef:h,continuousAxis:g,encodingWithoutContinuousAxis:A,ticksOrient:"vertical"===s?"horizontal":"vertical",markDef:l,outerSpec:u,tooltipEncoding:z}}function Q1(t,e,r){return"".concat(jG(t)," ").concat(r," ").concat(e)}const K1="errorband",t0=new O1(K1,e0);function e0(t,e){let{config:r}=e;t={...t,encoding:N1(t.encoding,r)};const{transform:n,continuousAxisChannelDef:o,continuousAxis:i,encodingWithoutContinuousAxis:a,markDef:c,outerSpec:u,tooltipEncoding:l}=J1(t,K1,r),s=c,d=T1(s,i,o,a,r.errorband),h=void 0!==t.encoding.x&&void 0!==t.encoding.y;let f={type:h?"area":"rect"},p={type:h?"line":"rule"};const b={...s.interpolate?{interpolate:s.interpolate}:{},...s.tension&&s.interpolate?{tension:s.tension}:{}};return h?(f={...f,...b,ariaRoleDescription:"errorband"},p={...p,...b,aria:!1}):s.interpolate?fJ(lJ("interpolate")):s.tension&&fJ(lJ("tension")),{...u,transform:n,layer:[...d({partName:"band",mark:f,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:l}),...d({partName:"borders",mark:p,positionPrefix:"lower",extraEncoding:l}),...d({partName:"borders",mark:p,positionPrefix:"upper",extraEncoding:l})]}}const r0={};function n0(t,e,r){const n=new O1(t,e);r0[t]={normalizer:n,parts:r}}n0(q1,V1,["box","median","outliers","rule","ticks"]),n0(G1,Y1,["ticks","rule"]),n0(K1,e0,["band","borders"]);const o0=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],i0={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontStyle:"fontStyle",titleFontWeight:"fontWeight",titleLimit:"limit",titleLineHeight:"lineHeight",titleOrient:"orient",titlePadding:"offset"},a0={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelBaseline:"baseline",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelFontStyle:"fontStyle",labelFontWeight:"fontWeight",labelLimit:"limit",labelLineHeight:"lineHeight",labelOrient:"orient",labelPadding:"offset"},c0=kG(i0),u0=kG(a0),l0=kG({header:1,headerRow:1,headerColumn:1,headerFacet:1}),s0=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],d0="_vgsid_",h0={point:{on:"click",fields:[d0],toggle:"event.shiftKey",resolve:"global",clear:"dblclick"},interval:{on:"[mousedown, window:mouseup] > window:mousemove!",encodings:["x","y"],translate:"[mousedown, window:mouseup] > window:mousemove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function f0(t){return"legend"===t||!(null==t||!t.legend)}function p0(t){return f0(t)&&oc(t)}function b0(t){return!(null==t||!t.select)}function g0(t){const e=[];for(const r of t||[]){if(b0(r))continue;const{expr:t,bind:n,...o}=r;if(n&&t){const r={...o,bind:n,init:t};e.push(r)}else{const r={...o,...t?{update:t}:{},...n?{bind:n}:{}};e.push(r)}}return e}function m0(t){return"concat"in t}function v0(t){return"vconcat"in t}function y0(t){return"hconcat"in t}function x0(t){let{step:e,offsetIsDiscrete:r}=t;var n;return r?null!==(n=e.for)&&void 0!==n?n:"offset":"position"}function k0(t){return oc(t)&&void 0!==t.step}function w0(t){return t.view||t.width||t.height}const _0=kG({align:1,bounds:1,center:1,columns:1,spacing:1});function C0(t,e){var r;return null!==(r=t[e])&&void 0!==r?r:t["width"===e?"continuousWidth":"continuousHeight"]}function O0(t,e){const r=E0(t,e);return k0(r)?r.step:D0}function E0(t,e){var r;return LG(null!==(r=t[e])&&void 0!==r?r:t["width"===e?"discreteWidth":"discreteHeight"],{step:t.step})}const D0=20,j0={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:{continuousWidth:200,continuousHeight:200,step:D0},mark:{color:"#4c78a8",invalid:"filter",timeUnitBandSize:1},arc:{},area:{},bar:JQ,circle:{},geoshape:{},image:{},line:{},point:{},rect:QQ,rule:{color:"black"},square:{},text:{color:"black"},tick:{thickness:1},trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:{pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,bandWithNestedOffsetPaddingInner:.2,bandWithNestedOffsetPaddingOuter:.2,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:9,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4,zero:!0},projection:{},legend:{gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:h0,style:{},title:{},facet:{spacing:20},concat:{spacing:20},normalizedNumberFormat:".0%"},S0=["#4c78a8","#f58518","#e45756","#72b7b2","#54a24b","#eeca3b","#b279a2","#ff9da6","#9d755d","#bab0ac"],A0={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},M0={blue:S0[0],orange:S0[1],red:S0[2],teal:S0[3],green:S0[4],yellow:S0[5],purple:S0[6],pink:S0[7],brown:S0[8],gray0:"#000",gray1:"#111",gray2:"#222",gray3:"#333",gray4:"#444",gray5:"#555",gray6:"#666",gray7:"#777",gray8:"#888",gray9:"#999",gray10:"#aaa",gray11:"#bbb",gray12:"#ccc",gray13:"#ddd",gray14:"#eee",gray15:"#fff"};function N0(t){const e=kG(t||{}),r={};for(const n of e){const e=t[n];r[n]=m1(e)?bX(e):gX(e)}return r}const z0=[...$Q,..._1,...l0,"background","padding","legend","lineBreak","scale","style","title","view"];function P0(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{color:e,font:r,fontSize:n,selection:o,...i}=t,a=ac({},nG(j0),r?function(t){return{text:{font:t},style:{"guide-label":{font:t},"guide-title":{font:t},"group-title":{font:t},"group-subtitle":{font:t}}}}(r):{},e?function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{signals:[{name:"color",value:oc(t)?{...M0,...t}:M0}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}(e):{},n?function(t){return{signals:[{name:"fontSize",value:oc(t)?{...A0,...t}:A0}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}(n):{},i||{});o&&cc(a,"selection",o,!0);const c=aG(a,z0);for(const u of["background","lineBreak","padding"])a[u]&&(c[u]=gX(a[u]));for(const u of $Q)a[u]&&(c[u]=aX(a[u]));for(const u of _1)a[u]&&(c[u]=N0(a[u]));for(const u of l0)a[u]&&(c[u]=aX(a[u]));return a.legend&&(c.legend=aX(a.legend)),a.scale&&(c.scale=aX(a.scale)),a.style&&(c.style=function(t){const e=kG(t),r={};for(const n of e)r[n]=N0(t[n]);return r}(a.style)),a.title&&(c.title=aX(a.title)),a.view&&(c.view=aX(a.view)),c}const F0=new Set(["view",...WQ]),L0=["color","fontSize","background","padding","facet","concat","numberFormat","numberFormatType","normalizedNumberFormat","normalizedNumberFormatType","timeFormat","countTitle","header","axisQuantitative","axisTemporal","axisDiscrete","axisPoint","axisXBand","axisXPoint","axisXDiscrete","axisXQuantitative","axisXTemporal","axisYBand","axisYPoint","axisYDiscrete","axisYQuantitative","axisYTemporal","scale","selection","overlay"],T0={view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"],area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],rect:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],line:["point"],tick:["bandSize","thickness"]};function R0(t){t=nG(t);for(const e of L0)delete t[e];if(t.axis)for(const e in t.axis)m1(t.axis[e])&&delete t.axis[e];if(t.legend)for(const e of o0)delete t.legend[e];if(t.mark){for(const e of GQ)delete t.mark[e];t.mark.tooltip&&oc(t.mark.tooltip)&&delete t.mark.tooltip}t.params&&(t.signals=(t.signals||[]).concat(g0(t.params)),delete t.params);for(const e of F0){for(const n of GQ)delete t[e][n];const r=T0[e];if(r)for(const n of r)delete t[e][n];B0(t,e)}for(const e of kG(r0))delete t[e];!function(t){const{titleMarkConfig:e,subtitleMarkConfig:r,subtitle:n}=cX(t.title);xG(e)||(t.style["group-title"]={...t.style["group-title"],...e});xG(r)||(t.style["group-subtitle"]={...t.style["group-subtitle"],...r});xG(n)?delete t.title:t.title=n}(t);for(const e in t)oc(t[e])&&xG(t[e])&&delete t[e];return xG(t)?void 0:t}function B0(t,e,r,n){var o;"view"===e&&(r="cell");const i={...n?t[e][n]:t[e],...t.style[null!==(o=r)&&void 0!==o?o:e]};var a;xG(i)||(t.style[null!==(a=r)&&void 0!==a?a:e]=i);n||delete t[e]}function I0(t){return"layer"in t}class U0{map(t,e){return EK(t)?this.mapFacet(t,e):function(t){return"repeat"in t}(t)?this.mapRepeat(t,e):y0(t)?this.mapHConcat(t,e):v0(t)?this.mapVConcat(t,e):m0(t)?this.mapConcat(t,e):this.mapLayerOrUnit(t,e)}mapLayerOrUnit(t,e){if(I0(t))return this.mapLayer(t,e);if(C1(t))return this.mapUnit(t,e);throw new Error(NX(t))}mapLayer(t,e){return{...t,layer:t.layer.map((t=>this.mapLayerOrUnit(t,e)))}}mapHConcat(t,e){return{...t,hconcat:t.hconcat.map((t=>this.map(t,e)))}}mapVConcat(t,e){return{...t,vconcat:t.vconcat.map((t=>this.map(t,e)))}}mapConcat(t,e){const{concat:r,...n}=t;return{...n,concat:r.map((t=>this.map(t,e)))}}mapFacet(t,e){return{...t,spec:this.map(t.spec,e)}}mapRepeat(t,e){return{...t,spec:this.map(t.spec,e)}}}const q0={zero:1,center:1,normalize:1};const H0=new Set([jQ,AQ,SQ,FQ,zQ,BQ,IQ,NQ,LQ,TQ]),W0=new Set([AQ,SQ,jQ]);function V0(t){return LK(t)&&"quantitative"===TK(t)&&!t.bin}function Z0(t,e,r){let{orient:n,type:o}=r;const i="x"===e?"y":"radius",a="x"===e,c=t[e],u=t[i];if(LK(c)&&LK(u))if(V0(c)&&V0(u)){if(c.stack)return e;if(u.stack)return i;const t=LK(c)&&!!c.aggregate;if(t!==(LK(u)&&!!u.aggregate))return t?e:i;if(a&&["bar","area"].includes(o)){if("vertical"===n)return i;if("horizontal"===n)return e}}else{if(V0(c))return e;if(V0(u))return i}else{if(V0(c))return e;if(V0(u))return i}}function G0(t,e){var r,n;const o=VQ(t)?t:{type:t},i=o.type;if(!H0.has(i))return null;const a=Z0(e,"x",o)||Z0(e,"theta",o);if(!a)return null;const c=e[a],u=LK(c)?XK(c,{}):void 0,l=function(t){switch(t){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}(a),s=[],d=new Set;if(e[l]){const t=e[l],r=LK(t)?XK(t,{}):void 0;r&&r!==u&&(s.push(l),d.add(r));const n="x"===l?"xOffset":"yOffset",o=e[n],i=LK(o)?XK(o,{}):void 0;i&&i!==u&&(s.push(n),d.add(i))}const h=mY.reduce(((t,r)=>{if("tooltip"!==r&&E1(e,r)){const n=e[r];for(const e of jc(n)){const n=i1(e);if(n.aggregate)continue;const o=XK(n,{});o&&d.has(o)||t.push({channel:r,fieldDef:n})}}return t}),[]);let f;return void 0!==c.stack?f=Yc(c.stack)?c.stack?"zero":null:c.stack:W0.has(i)&&(f="zero"),f&&f in q0?S1(e)&&0===h.length?null:null!=c&&null!==(r=c.scale)&&void 0!==r&&r.type&&(null==c||null===(n=c.scale)||void 0===n?void 0:n.type)!==eQ.LINEAR?(null!=c&&c.stack&&fJ(function(t){return"Cannot stack non-linear scale (".concat(t,").")}(c.scale.type)),null):qK(e[X$(a)])?(void 0!==c.stack&&fJ('Cannot stack "'.concat(p=a,'" if there is already "').concat(p,'2".')),null):(LK(c)&&c.aggregate&&!JY.has(c.aggregate)&&fJ((b=c.aggregate,'Stacking is applied even though the aggregate function is non-summative ("'.concat(b,'").'))),{groupbyChannels:s,groupbyFields:d,fieldChannel:a,impute:null!==c.impute&&qQ(i),stackBy:h,offset:f}):null;var p,b}function $0(t,e,r){const n=aX(t),o=CX("orient",n,r);var i,a;if(n.orient=function(t,e,r){switch(t){case zQ:case BQ:case IQ:case LQ:case PQ:case MQ:return}const{x:n,y:o,x2:i,y2:a}=e;switch(t){case AQ:if(LK(n)&&(eX(n.bin)||LK(o)&&o.aggregate&&!n.aggregate))return"vertical";if(LK(o)&&(eX(o.bin)||LK(n)&&n.aggregate&&!o.aggregate))return"horizontal";if(a||i){if(r)return r;if(!i)return(LK(n)&&n.type===XJ&&!tX(n.bin)||UK(n))&&LK(o)&&eX(o.bin)?"horizontal":"vertical";if(!a)return(LK(o)&&o.type===XJ&&!tX(o.bin)||UK(o))&&LK(n)&&eX(n.bin)?"vertical":"horizontal"}case FQ:if(i&&(!LK(n)||!eX(n.bin))&&a&&(!LK(o)||!eX(o.bin)))return;case SQ:if(a)return LK(o)&&eX(o.bin)?"horizontal":"vertical";if(i)return LK(n)&&eX(n.bin)?"vertical":"horizontal";if(t===FQ){if(n&&!o)return"vertical";if(o&&!n)return"horizontal"}case NQ:case TQ:{const e=IK(n),i=IK(o);if(r)return r;if(e&&!i)return"tick"!==t?"horizontal":"vertical";if(!e&&i)return"tick"!==t?"vertical":"horizontal";if(e&&i)return"vertical";{const t=HK(n)&&n.type===QJ,e=HK(o)&&o.type===QJ;if(t&&!e)return"vertical";if(!t&&e)return"horizontal"}return}}return"vertical"}(n.type,e,o),void 0!==o&&o!==n.orient&&fJ((i=n.orient,a=o,'Specified orient "'.concat(i,'" overridden with "').concat(a,'".'))),"bar"===n.type&&n.orient){const t=CX("cornerRadiusEnd",n,r);if(void 0!==t){const r="horizontal"===n.orient&&e.x2||"vertical"===n.orient&&e.y2?["cornerRadius"]:XQ[n.orient];for(const e of r)n[e]=t;void 0!==n.cornerRadiusEnd&&delete n.cornerRadiusEnd}}void 0===CX("opacity",n,r)&&(n.opacity=function(t,e){if(sG([zQ,TQ,BQ,IQ],t)&&!S1(e))return.7;return}(n.type,e));return void 0===CX("cursor",n,r)&&(n.cursor=function(t,e,r){if(e.href||t.href||CX("href",t,r))return"pointer";return t.cursor}(n,e,r)),n}function Y0(t){const{point:e,line:r,...n}=t;return kG(n).length>1?n:n.type}function X0(t){for(const e of["line","area","rule","trail"])t[e]&&(t={...t,[e]:aG(t[e],["point","line"])});return t}function J0(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;return"transparent"===t.point?{opacity:0}:t.point?oc(t.point)?t.point:{}:void 0!==t.point?null:e.point||r.shape?oc(e.point)?e.point:{}:void 0}function Q0(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.line?!0===t.line?{}:t.line:void 0!==t.line?null:e.line?!0===e.line?{}:e.line:void 0}class K0{constructor(){this.name="path-overlay"}hasMatchingType(t,e){if(C1(t)){const{mark:r,encoding:n}=t,o=VQ(r)?r:{type:r};switch(o.type){case"line":case"rule":case"trail":return!!J0(o,e[o.type],n);case"area":return!!J0(o,e[o.type],n)||!!Q0(o,e[o.type])}}return!1}run(t,e,r){const{config:n}=e,{params:o,projection:i,mark:a,name:c,encoding:u,...l}=t,s=N1(u,n),d=VQ(a)?a:{type:a},h=J0(d,n[d.type],s),f="area"===d.type&&Q0(d,n[d.type]),p=[{name:c,...o?{params:o}:{},mark:Y0({..."area"===d.type&&void 0===d.opacity&&void 0===d.fillOpacity?{opacity:.7}:{},...d}),encoding:aG(s,["shape"])}],b=G0($0(d,s,n),s);let g=s;if(b){const{fieldChannel:t,offset:e}=b;g={...s,[t]:{...s[t],...e?{stack:e}:{}}}}return g=aG(g,["y2","x2"]),f&&p.push({...i?{projection:i}:{},mark:{type:"line",...iG(d,["clip","interpolate","tension","tooltip"]),...f},encoding:g}),h&&p.push({...i?{projection:i}:{},mark:{type:"point",opacity:1,filled:!0,...iG(d,["clip","tooltip"]),...h},encoding:g}),r({...l,layer:p},{...e,config:X0(n)})}}function t2(t,e){return e?CK(t)?a2(t,e):n2(t,e):t}function e2(t,e){return e?a2(t,e):t}function r2(t,e,r){const n=e[t];return function(t){return t&&!tu(t)&&"repeat"in t}(n)?n.repeat in r?{...e,[t]:r[n.repeat]}:void fJ(function(t){return'Unknown repeated value "'.concat(t,'".')}(n.repeat)):e}function n2(t,e){if(void 0!==(t=r2("field",t,e))){if(null===t)return null;if(jK(t)&&wK(t.sort)){const r=r2("field",t.sort,e);t={...t,...r?{sort:r}:{}}}return t}}function o2(t,e){if(LK(t))return n2(t,e);{const r=r2("datum",t,e);return r===t||r.type||(r.type="nominal"),r}}function i2(t,e){if(!qK(t)){if(FK(t)){const r=o2(t.condition,e);if(r)return{...t,condition:r};{const{condition:e,...r}=t;return r}}return t}{const r=o2(t,e);if(r)return r;if(zK(t))return{condition:t.condition}}}function a2(t,e){const r={};for(const n in t)if(Hc(t,n)){const o=t[n];if(nc(o))r[n]=o.map((t=>i2(t,e))).filter((t=>t));else{const t=i2(o,e);void 0!==t&&(r[n]=t)}}return r}class c2{constructor(){this.name="RuleForRangedLine"}hasMatchingType(t){if(C1(t)){const{encoding:e,mark:r}=t;if("line"===r||VQ(r)&&"line"===r.type)for(const t of Z$){const r=e[$$(t)];if(e[t]&&(LK(r)&&!eX(r.bin)||RK(r)))return!0}}return!1}run(t,e,r){const{encoding:n,mark:o}=t;var i,a;return fJ((i=!!n.x2,a=!!n.y2,"Line mark is for continuous lines and thus cannot be used with ".concat(i&&a?"x2 and y2":i?"x2":"y2",". We will use the rule mark (line segments) instead."))),r({...t,mark:oc(o)?{...o,type:"rule"}:"rule"},e)}}function u2(t){let{parentEncoding:e,encoding:r={},layer:n}=t,o={};if(e){const t=new Set([...kG(e),...kG(r)]);for(const i of t){const t=r[i],a=e[i];if(qK(t)){const e={...a,...t};o[i]=e}else FK(t)?o[i]={...t,condition:{...a,...t.condition}}:t||null===t?o[i]=t:(n||WK(a)||lX(a)||qK(a)||nc(a))&&(o[i]=a)}}else o=r;return!o||xG(o)?void 0:o}function l2(t){const{parentProjection:e,projection:r}=t;return e&&r&&fJ(function(t){const{parentProjection:e,projection:r}=t;return"Layer's shared projection ".concat(cG(e)," is overridden by a child projection ").concat(cG(r),".")}({parentProjection:e,projection:r})),null!=r?r:e}function s2(t){return"filter"in t}function d2(t){return void 0!==(null==t?void 0:t.stop)}function h2(t){return"lookup"in t}function f2(t){return"pivot"in t}function p2(t){return"density"in t}function b2(t){return"quantile"in t}function g2(t){return"regression"in t}function m2(t){return"loess"in t}function v2(t){return"sample"in t}function y2(t){return"window"in t}function x2(t){return"joinaggregate"in t}function k2(t){return"flatten"in t}function w2(t){return"calculate"in t}function _2(t){return"bin"in t}function C2(t){return"impute"in t}function O2(t){return"timeUnit"in t}function E2(t){return"aggregate"in t}function D2(t){return"stack"in t}function j2(t){return"fold"in t}function S2(t){return"extent"in t&&!("density"in t)}function A2(t,e){const{transform:r,...n}=t;if(r){const t=r.map((t=>{if(s2(t))return{filter:z2(t,e)};if(_2(t)&&rX(t.bin))return{...t,bin:N2(t.bin)};if(h2(t)){const{selection:e,...r}=t.from;return e?{...t,from:{param:e,...r}}:t}return t}));return{...n,transform:t}}return t}function M2(t,e){var r;const n=nG(t);if(LK(n)&&rX(n.bin)&&(n.bin=N2(n.bin)),VK(n)&&null!==(r=n.scale)&&void 0!==r&&null!==(r=r.domain)&&void 0!==r&&r.selection){const{selection:t,...e}=n.scale.domain;n.scale.domain={...e,...t?{param:t}:{}}}if(zK(n))if(nc(n.condition))n.condition=n.condition.map((t=>{const{selection:r,param:n,test:o,...i}=t;return n?t:{...i,test:z2(t,e)}}));else{const{selection:t,param:r,test:o,...i}=M2(n.condition,e);n.condition=r?n.condition:{...i,test:z2(n.condition,e)}}return n}function N2(t){const e=t.extent;if(null!=e&&e.selection){const{selection:r,...n}=e;return{...t,extent:{...n,param:r}}}return t}function z2(t,e){const r=t=>eG(t,(t=>{var r,n,o;const i={param:t,empty:null===(r=e.emptySelections[t])||void 0===r||r};return null!==(n=(o=e.selectionPredicates)[t])&&void 0!==n||(o[t]=[]),e.selectionPredicates[t].push(i),i}));return t.selection?r(t.selection):eG(t.test||t.filter,(t=>t.selection?r(t.selection):t))}class P2 extends U0{map(t,e){var r;const n=null!==(r=e.selections)&&void 0!==r?r:[];if(t.params&&!C1(t)){const e=[];for(const r of t.params)b0(r)?n.push(r):e.push(r);t.params=e}return e.selections=n,super.map(t,e)}mapUnit(t,e){var r;const n=e.selections;if(!n||!n.length)return t;const o=(null!==(r=e.path)&&void 0!==r?r:[]).concat(t.name),i=[];for(const a of n)if(a.views&&a.views.length)for(const e of a.views)(tu(e)&&(e===t.name||o.includes(e))||nc(e)&&e.map((t=>o.indexOf(t))).every(((t,e,r)=>-1!==t&&(0===e||t>r[e-1]))))&&i.push(a);else i.push(a);return i.length&&(t.params=i),t}}for(const Set of["mapFacet","mapRepeat","mapHConcat","mapVConcat","mapLayer"]){const t=P2.prototype[Set];P2.prototype[Set]=function(e,r){return t.call(this,e,F2(e,r))}}function F2(t,e){var r;return t.name?{...e,path:(null!==(r=e.path)&&void 0!==r?r:[]).concat(t.name)}:e}function L2(t,e){void 0===e&&(e=P0(t.config));const r=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r={config:e};return B2.map(T2.map(R2.map(t,r),r),r)}(t,e),{width:n,height:o}=t,i=function(t,e,r){let{width:n,height:o}=e;const i=C1(t)||I0(t),a={};i?"container"==n&&"container"==o?(a.type="fit",a.contains="padding"):"container"==n?(a.type="fit-x",a.contains="padding"):"container"==o&&(a.type="fit-y",a.contains="padding"):("container"==n&&(fJ(PX("width")),n=void 0),"container"==o&&(fJ(PX("height")),o=void 0));const c={type:"pad",...a,...r?I2(r.autosize):{},...I2(t.autosize)};"fit"!==c.type||i||(fJ(zX),c.type="pad");"container"==n&&"fit"!=c.type&&"fit-x"!=c.type&&fJ(FX("width"));"container"==o&&"fit"!=c.type&&"fit-y"!=c.type&&fJ(FX("height"));if(rG(c,{type:"pad"}))return;return c}(r,{width:n,height:o,autosize:t.autosize},e);return{...r,...i?{autosize:i}:{}}}const T2=new class extends U0{constructor(){super(...arguments),this.nonFacetUnitNormalizers=[H1,$1,t0,new K0,new c2]}map(t,e){if(C1(t)){const r=E1(t.encoding,HG),n=E1(t.encoding,WG),o=E1(t.encoding,VG);if(r||n||o)return this.mapFacetedUnit(t,e)}return super.map(t,e)}mapUnit(t,e){const{parentEncoding:r,parentProjection:n}=e,o=e2(t.encoding,e.repeater),i={...t,...t.name?{name:[e.repeaterPrefix,t.name].filter((t=>t)).join("_")}:{},...o?{encoding:o}:{}};if(r||n)return this.mapUnitWithParentEncodingOrProjection(i,e);const a=this.mapLayerOrUnit.bind(this);for(const c of this.nonFacetUnitNormalizers)if(c.hasMatchingType(i,e.config))return c.run(i,e,a);return i}mapRepeat(t,e){return function(t){return!nc(t.repeat)&&t.repeat.layer}(t)?this.mapLayerRepeat(t,e):this.mapNonLayerRepeat(t,e)}mapLayerRepeat(t,e){const{repeat:r,spec:n,...o}=t,{row:i,column:a,layer:c}=r,{repeater:u={},repeaterPrefix:l=""}=e;return i||a?this.mapRepeat({...t,repeat:{...i?{row:i}:{},...a?{column:a}:{}},spec:{repeat:{layer:c},spec:n}},e):{...o,layer:c.map((t=>{const r={...u,layer:t},o="".concat((n.name?"".concat(n.name,"_"):"")+l,"child__layer_").concat(OG(t)),i=this.mapLayerOrUnit(n,{...e,repeater:r,repeaterPrefix:o});return i.name=o,i}))}}mapNonLayerRepeat(t,e){var r;const{repeat:n,spec:o,data:i,...a}=t;!nc(n)&&t.columns&&(t=aG(t,["columns"]),fJ(qX("repeat")));const c=[],{repeater:u={},repeaterPrefix:l=""}=e,s=!nc(n)&&n.row||[u?u.row:null],d=!nc(n)&&n.column||[u?u.column:null],h=nc(n)&&n||[u?u.repeat:null];for(const p of h)for(const t of s)for(const r of d){const i={repeat:p,row:t,column:r,layer:u.layer},a=(o.name?"".concat(o.name,"_"):"")+l+"child__"+(nc(n)?"".concat(OG(p)):(n.row?"row_".concat(OG(t)):"")+(n.column?"column_".concat(OG(r)):"")),s=this.map(o,{...e,repeater:i,repeaterPrefix:a});s.name=a,c.push(aG(s,["data"]))}const f=nc(n)?t.columns:n.column?n.column.length:1;return{data:null!==(r=o.data)&&void 0!==r?r:i,align:"all",...a,columns:f,concat:c}}mapFacet(t,e){const{facet:r}=t;return CK(r)&&t.columns&&(t=aG(t,["columns"]),fJ(qX("facet"))),super.mapFacet(t,e)}mapUnitWithParentEncodingOrProjection(t,e){const{encoding:r,projection:n}=t,{parentEncoding:o,parentProjection:i,config:a}=e,c=l2({parentProjection:i,projection:n}),u=u2({parentEncoding:o,encoding:e2(r,e.repeater)});return this.mapUnit({...t,...c?{projection:c}:{},...u?{encoding:u}:{}},{config:a})}mapFacetedUnit(t,e){const{row:r,column:n,facet:o,...i}=t.encoding,{mark:a,width:c,projection:u,height:l,view:s,params:d,encoding:h,...f}=t,{facetMapping:p,layout:b}=this.getFacetMappingAndLayout({row:r,column:n,facet:o},e),g=e2(i,e.repeater);return this.mapFacet({...f,...b,facet:p,spec:{...c?{width:c}:{},...l?{height:l}:{},...s?{view:s}:{},...u?{projection:u}:{},mark:a,encoding:g,...d?{params:d}:{}}},e)}getFacetMappingAndLayout(t,e){const{row:r,column:n,facet:o}=t;if(r||n){o&&fJ((a=[...r?[HG]:[],...n?[WG]:[]],"Facet encoding dropped as ".concat(a.join(" and ")," ").concat(a.length>1?"are":"is"," also specified.")));const e={},c={};for(const r of[HG,WG]){const n=t[r];if(n){const{align:t,center:o,spacing:a,columns:u,...l}=n;e[r]=l;for(const e of["align","center","spacing"]){var i;if(void 0!==n[e])null!==(i=c[e])&&void 0!==i||(c[e]={}),c[e][r]=n[e]}}}return{facetMapping:e,layout:c}}{const{align:t,center:r,spacing:n,columns:i,...a}=o;return{facetMapping:t2(a,e.repeater),layout:{...t?{align:t}:{},...r?{center:r}:{},...n?{spacing:n}:{},...i?{columns:i}:{}}}}var a}mapLayer(t,e){let{parentEncoding:r,parentProjection:n,...o}=e;const{encoding:i,projection:a,...c}=t,u={...o,parentEncoding:u2({parentEncoding:r,encoding:i,layer:!0}),parentProjection:l2({parentProjection:n,projection:a})};return super.mapLayer({...c,...t.name?{name:[u.repeaterPrefix,t.name].filter((t=>t)).join("_")}:{}},u)}},R2=new class extends U0{map(t,e){var r,n;return null!==(r=e.emptySelections)&&void 0!==r||(e.emptySelections={}),null!==(n=e.selectionPredicates)&&void 0!==n||(e.selectionPredicates={}),t=A2(t,e),super.map(t,e)}mapLayerOrUnit(t,e){if((t=A2(t,e)).encoding){const r={};for(const[n,o]of _G(t.encoding))r[n]=M2(o,e);t={...t,encoding:r}}return super.mapLayerOrUnit(t,e)}mapUnit(t,e){const{selection:r,...n}=t;return r?{...n,params:_G(r).map((t=>{let[r,n]=t;const{init:o,bind:i,empty:a,...c}=n;"single"===c.type?(c.type="point",c.toggle=!1):"multi"===c.type&&(c.type="point"),e.emptySelections[r]="none"!==a;for(const l of wG(null!==(u=e.selectionPredicates[r])&&void 0!==u?u:{})){var u;l.empty="none"!==a}return{name:r,value:o,select:c,bind:i}}))}:t}},B2=new P2;function I2(t){return tu(t)?{type:t}:null!=t?t:{}}const U2=["background","padding"];function q2(t,e){const r={};for(const n of U2)t&&void 0!==t[n]&&(r[n]=gX(t[n]));return e&&(r.params=t.params),r}class H2{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.explicit=t,this.implicit=e}clone(){return new H2(nG(this.explicit),nG(this.implicit))}combine(){return{...this.explicit,...this.implicit}}get(t){return LG(this.explicit[t],this.implicit[t])}getWithExplicit(t){return void 0!==this.explicit[t]?{explicit:!0,value:this.explicit[t]}:void 0!==this.implicit[t]?{explicit:!1,value:this.implicit[t]}:{explicit:!1,value:void 0}}setWithExplicit(t,e){let{value:r,explicit:n}=e;void 0!==r&&this.set(t,r,n)}set(t,e,r){return delete this[r?"implicit":"explicit"][t],this[r?"explicit":"implicit"][t]=e,this}copyKeyFromSplit(t,e){let{explicit:r,implicit:n}=e;void 0!==r[t]?this.set(t,r[t],!0):void 0!==n[t]&&this.set(t,n[t],!1)}copyKeyFromObject(t,e){void 0!==e[t]&&this.set(t,e[t],!0)}copyAll(t){for(const e of kG(t.combine())){const r=t.getWithExplicit(e);this.setWithExplicit(e,r)}}}function W2(t){return{explicit:!0,value:t}}function V2(t){return{explicit:!1,value:t}}function Z2(t){return(e,r,n,o)=>{const i=t(e.value,r.value);return i>0?e:i<0?r:G2(e,r,n,o)}}function G2(t,e,r,n){return t.explicit&&e.explicit&&fJ(function(t,e,r,n){return"Conflicting ".concat(e.toString(),' property "').concat(t.toString(),'" (').concat(cG(r)," and ").concat(cG(n),"). Using ").concat(cG(r),".")}(r,n,t.value,e.value)),t}function $2(t,e,r,n){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:G2;return void 0===t||void 0===t.value?e:t.explicit&&!e.explicit?t:e.explicit&&!t.explicit?e:rG(t.value,e.value)?t:o(t,e,r,n)}class Y2 extends H2{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super(t,e),this.explicit=t,this.implicit=e,this.parseNothing=r}clone(){const t=super.clone();return t.parseNothing=this.parseNothing,t}}function X2(t){return"url"in t}function J2(t){return"values"in t}function Q2(t){return"name"in t&&!X2(t)&&!J2(t)&&!K2(t)}function K2(t){return t&&(t6(t)||e6(t)||r6(t))}function t6(t){return"sequence"in t}function e6(t){return"sphere"in t}function r6(t){return"graticule"in t}var n6;function o6(t){const{signals:e,hasLegend:r,index:n,...o}=t;return o.field=NG(o.field),o}function i6(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Va;if(nc(t)){const n=t.map((t=>i6(t,e,r)));return e?"[".concat(n.join(", "),"]"):n}return pJ(t)?r(e?xJ(t):function(t){const e=yJ(t,!0);return t.utc?+new Date(Date.UTC(...e)):+new Date(...e)}(t)):e?r(cG(t)):t}function a6(t,e){for(const n of wG(null!==(r=t.component.selection)&&void 0!==r?r:{})){var r;const o=n.name;let i="".concat(o).concat(x5,", ").concat("global"===n.resolve?"true":"{unit: ".concat(C5(t),"}"));for(const r of _5)r.defined(n)&&(r.signals&&(e=r.signals(t,n,e)),r.modifyExpr&&(i=r.modifyExpr(t,n,i)));e.push({name:o+k5,on:[{events:{signal:n.name+x5},update:"modify(".concat(uu(n.name+y5),", ").concat(i,")")}]})}return l6(e)}function c6(t,e){if(t.component.selection&&kG(t.component.selection).length){const r=uu(t.getName("cell"));e.unshift({name:"facet",value:{},on:[{events:hq("mousemove","scope"),update:"isTuple(facet) ? facet : group(".concat(r,").datum")}]})}return l6(e)}function u6(t,e){for(const n of wG(null!==(r=t.component.selection)&&void 0!==r?r:{})){var r;for(const r of _5)r.defined(n)&&r.marks&&(e=r.marks(t,n,e))}return e}function l6(t){return t.map((t=>(t.on&&!t.on.length&&delete t.on,t)))}!function(t){t[t.Raw=0]="Raw",t[t.Main=1]="Main",t[t.Row=2]="Row",t[t.Column=3]="Column",t[t.Lookup=4]="Lookup"}(n6||(n6={}));class s6{constructor(t,e){this.debugName=e,this._children=[],this._parent=null,t&&(this.parent=t)}clone(){throw new Error("Cannot clone node")}get parent(){return this._parent}set parent(t){this._parent=t,t&&t.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(t,e){this._children.includes(t)?fJ("Attempt to add the same child twice."):void 0!==e?this._children.splice(e,0,t):this._children.push(t)}removeChild(t){const e=this._children.indexOf(t);return this._children.splice(e,1),e}remove(){let t=this._parent.removeChild(this);for(const e of this._children)e._parent=this._parent,this._parent.addChild(e,t++)}insertAsParentOf(t){const e=t.parent;e.removeChild(this),this.parent=e,t.parent=this}swapWithParent(){const t=this._parent,e=t.parent;for(const n of this._children)n.parent=t;this._children=[],t.removeChild(this);const r=t.parent.removeChild(t);this._parent=e,e.addChild(this,r),t.parent=this}}class d6 extends s6{clone(){const t=new this.constructor;return t.debugName="clone_".concat(this.debugName),t._source=this._source,t._name="clone_".concat(this._name),t.type=this.type,t.refCounts=this.refCounts,t.refCounts[t._name]=0,t}constructor(t,e,r,n){super(t,e),this.type=r,this.refCounts=n,this._source=this._name=e,this.refCounts&&!(this._name in this.refCounts)&&(this.refCounts[this._name]=0)}dependentFields(){return new Set}producedFields(){return new Set}hash(){return void 0===this._hash&&(this._hash="Output ".concat(RG())),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(t){this._source=t}}function h6(t){return void 0!==t.as}function f6(t){return"".concat(t,"_end")}class p6 extends s6{clone(){return new p6(null,nG(this.formula))}constructor(t,e){super(t),this.formula=e}static makeFromEncoding(t,e){const r=e.reduceFieldDef(((t,r)=>{const{field:n,timeUnit:o}=r;if(o){let i;if(_J(o)){if(c7(e)){const{mark:t}=e;(HQ(t)||r.bandPosition)&&(i={timeUnit:NJ(o),field:n})}}else i={as:XK(r,{forAs:!0}),field:n,timeUnit:o};i&&(t[uG(i)]=i)}return t}),{});return xG(r)?null:new p6(t,r)}static makeFromTransform(t,e){const{timeUnit:r,...n}={...e},o={...n,timeUnit:NJ(r)};return new p6(t,{[uG(o)]:o})}merge(t){this.formula={...this.formula};for(const e in t.formula)this.formula[e]||(this.formula[e]=t.formula[e]);for(const e of t.children)t.removeChild(e),e.parent=this;t.remove()}removeFormulas(t){const e={};for(const[r,n]of _G(this.formula)){const o=h6(n)?n.as:"".concat(n.field,"_end");t.has(o)||(e[r]=n)}this.formula=e}producedFields(){return new Set(wG(this.formula).map((t=>h6(t)?t.as:f6(t.field))))}dependentFields(){return new Set(wG(this.formula).map((t=>t.field)))}hash(){return"TimeUnit ".concat(uG(this.formula))}assemble(){const t=[];for(const e of wG(this.formula))if(h6(e)){const{field:r,as:n,timeUnit:o}=e,{unit:i,utc:a,...c}=NJ(o);t.push({field:NG(r),type:"timeunit",...i?{units:DJ(i)}:{},...a?{timezone:"utc"}:{},...c,as:[n,"".concat(n,"_end")]})}else if(e){const{field:r,timeUnit:n}=e,o=jJ(null==n?void 0:n.unit),{part:i,step:a}=FJ(o,n.step);t.push({type:"formula",expr:"timeOffset('".concat(i,"', datum['").concat(r,"'], ").concat(a,")"),as:f6(r)})}return t}}const b6="_tuple_fields";class g6{constructor(){for(var t=arguments.length,e=new Array(t),r=0;r!0,parse:(t,e,r)=>{var n;const o=e.name,i=null!==(n=e.project)&&void 0!==n?n:e.project=new g6,a={},c={},u=new Set,l=(t,e)=>{const r="visual"===e?t.channel:t.field;let n=OG("".concat(o,"_").concat(r));for(let i=1;u.has(n);i++)n=OG("".concat(o,"_").concat(r,"_").concat(i));return u.add(n),{[e]:n}},s=e.type,d=t.config.selection[s],h=void 0!==r.value?jc(r.value):null;let{fields:f,encodings:p}=oc(r.select)?r.select:{};if(!f&&!p&&h)for(const v of h)if(oc(v))for(const t of kG(v)){var b;if(W$[t])(p||(p=[])).push(t);else if("interval"===s)fJ('Interval selections should be initialized using "x", "y", "longitude", or "latitude" keys.'),p=d.encodings;else(null!==(b=f)&&void 0!==b?b:f=[]).push(t)}f||p||(p=d.encodings,"fields"in d&&(f=d.fields));for(const v of null!==(g=p)&&void 0!==g?g:[]){var g;const e=t.fieldDef(v);if(e){let r=e.field;if(e.aggregate){fJ(BX(v,e.aggregate));continue}if(!r){fJ(RX(v));continue}if(e.timeUnit&&!_J(e.timeUnit)){r=t.vgField(v);const n={timeUnit:e.timeUnit,as:r,field:e.field};c[uG(n)]=n}if(!a[r]){const n={field:r,channel:v,type:"interval"===s&&RY(v)&&fQ(t.getScaleComponent(v).get("type"))?"R":e.bin?"R-RE":"E",index:i.items.length};n.signals={...l(n,"data"),...l(n,"visual")},i.items.push(a[r]=n),i.hasField[r]=a[r],i.hasSelectionId=i.hasSelectionId||r===d0,S$(v)?(n.geoChannel=v,n.channel=j$(v),i.hasChannel[n.channel]=a[r]):i.hasChannel[v]=a[r]}}else fJ(RX(v))}for(const v of null!==(m=f)&&void 0!==m?m:[]){var m;if(i.hasField[v])continue;const t={type:"E",field:v,index:i.items.length};t.signals={...l(t,"data")},i.items.push(t),i.hasField[v]=t,i.hasSelectionId=i.hasSelectionId||v===d0}h&&(e.init=h.map((t=>i.items.map((e=>oc(t)?void 0!==t[e.geoChannel||e.channel]?t[e.geoChannel||e.channel]:t[e.field]:t))))),xG(c)||(i.timeUnit=new p6(null,c))},signals:(t,e,r)=>{const n=e.name+b6;return r.filter((t=>t.name===n)).length>0||e.project.hasSelectionId?r:r.concat({name:n,value:e.project.items.map(o6)})}},v6={defined:t=>"interval"===t.type&&"global"===t.resolve&&t.bind&&"scales"===t.bind,parse:(t,e)=>{const r=e.scales=[];for(const n of e.project.items){const o=n.channel;if(!RY(o))continue;const i=t.getScaleComponent(o),a=i?i.get("type"):void 0;i&&fQ(a)?(i.set("selectionExtent",{param:e.name,field:n.field},!0),r.push(n)):fJ("Scale bindings are currently only supported for scales with unbinned, continuous domains.")}},topLevelSignals:(t,e,r)=>{const n=e.scales.filter((t=>0===r.filter((e=>e.name===t.signals.data)).length));if(!t.parent||x6(t)||0===n.length)return r;const o=r.filter((t=>t.name===e.name))[0];let i=o.update;if(i.indexOf(w5)>=0)o.update="{".concat(n.map((t=>"".concat(uu(NG(t.field)),": ").concat(t.signals.data))).join(", "),"}");else{for(const t of n){const e="".concat(uu(NG(t.field)),": ").concat(t.signals.data);i.includes(e)||(i="".concat(i.substring(0,i.length-1),", ").concat(e,"}"))}o.update=i}return r.concat(n.map((t=>({name:t.signals.data}))))},signals:(t,e,r)=>{if(t.parent&&!x6(t))for(const n of e.scales){const t=r.filter((t=>t.name===n.signals.data))[0];t.push="outer",delete t.value,delete t.update}return r}};function y6(t,e){const r=uu(t.scaleName(e));return"domain(".concat(r,")")}function x6(t){var e;return t.parent&&s7(t.parent)&&(null!==(e=!t.parent.parent)&&void 0!==e?e:x6(t.parent.parent))}const k6="_brush",w6="_scale_trigger",_6="geo_interval_init_tick",C6="_init",O6={defined:t=>"interval"===t.type,parse:(t,e,r)=>{var n;if(t.hasProjection){const t={...oc(r.select)?r.select:{}};t.fields=[d0],t.encodings||(t.encodings=r.value?kG(r.value):[n$,r$]),r.select={type:"interval",...t}}if(e.translate&&!v6.defined(e)){const t="!event.item || event.item.mark.name !== ".concat(uu(e.name+k6));for(const r of e.events){var o;if(!r.between){fJ("".concat(r," is not an ordered event stream for interval selections."));continue}const e=jc(null!==(o=(n=r.between[0]).filter)&&void 0!==o?o:n.filter=[]);e.indexOf(t)<0&&e.push(t)}}},signals:(t,e,r)=>{const n=e.name,o=n+x5,i=wG(e.project.hasChannel).filter((t=>t.channel===ZG||t.channel===GG)),a=e.init?e.init[0]:null;if(r.push(...i.reduce(((r,n)=>r.concat(function(t,e,r,n){const o=!t.hasProjection,i=r.channel,a=r.signals.visual,c=uu(o?t.scaleName(i):t.projectionName()),u=t=>"scale(".concat(c,", ").concat(t,")"),l=t.getSizeSignalRef(i===ZG?"width":"height").signal,s="".concat(i,"(unit)"),d=e.events.reduce(((t,e)=>[...t,{events:e.between[0],update:"[".concat(s,", ").concat(s,"]")},{events:e,update:"[".concat(a,"[0], clamp(").concat(s,", 0, ").concat(l,")]")}]),[]);if(o){const o=r.signals.data,l=v6.defined(e),s=t.getScaleComponent(i),h=s?s.get("type"):void 0,f=n?{init:i6(n,!0,u)}:{value:[]};return d.push({events:{signal:e.name+w6},update:fQ(h)?"[".concat(u("".concat(o,"[0]")),", ").concat(u("".concat(o,"[1]")),"]"):"[0, 0]"}),l?[{name:o,on:[]}]:[{name:a,...f,on:d},{name:o,...n?{init:i6(n)}:{},on:[{events:{signal:a},update:"".concat(a,"[0] === ").concat(a,"[1] ? null : invert(").concat(c,", ").concat(a,")")}]}]}{const t=i===ZG?0:1,r=e.name+C6,o=n?{init:"[".concat(r,"[0][").concat(t,"], ").concat(r,"[1][").concat(t,"]]")}:{value:[]};return[{name:a,...o,on:d}]}}(t,e,n,a&&a[n.index]))),[])),t.hasProjection){const c=uu(t.projectionName()),u=t.projectionName()+"_center",{x:l,y:s}=e.project.hasChannel,d=l&&l.signals.visual,h=s&&s.signals.visual,f=l?a&&a[l.index]:"".concat(u,"[0]"),p=s?a&&a[s.index]:"".concat(u,"[1]"),b=e=>t.getSizeSignalRef(e).signal,g="["+"[".concat(d?d+"[0]":"0",", ").concat(h?h+"[0]":"0","],")+"[".concat(d?d+"[1]":b("width"),", ")+"".concat(h?h+"[1]":b("height"),"]")+"]";if(a&&(r.unshift({name:n+C6,init:"[scale(".concat(c,", [").concat(l?f[0]:f,", ").concat(s?p[0]:p,"]), ")+"scale(".concat(c,", [").concat(l?f[1]:f,", ").concat(s?p[1]:p,"])]")}),!l||!s)){r.find((t=>t.name===u))||r.unshift({name:u,update:"invert(".concat(c,", [").concat(b("width"),"/2, ").concat(b("height"),"/2])")})}const m="intersect(".concat(g,", {markname: ").concat(uu(t.getName("marks")),"}, unit.mark)"),v="{unit: ".concat(C5(t),"}"),y="vlSelectionTuples(".concat(m,", ").concat(v,")"),x=i.map((t=>t.signals.visual));return r.concat({name:o,on:[{events:[...x.length?[{signal:x.join(" || ")}]:[],...a?[{signal:_6}]:[]],update:y}]})}{if(!v6.defined(e)){const e=n+w6,o=i.map((e=>{const r=e.channel,{data:n,visual:o}=e.signals,i=uu(t.scaleName(r)),a=fQ(t.getScaleComponent(r).get("type"))?"+":"";return"(!isArray(".concat(n,") || ")+"(".concat(a,"invert(").concat(i,", ").concat(o,")[0] === ").concat(a).concat(n,"[0] && ")+"".concat(a,"invert(").concat(i,", ").concat(o,")[1] === ").concat(a).concat(n,"[1]))")}));o.length&&r.push({name:e,value:{},on:[{events:i.map((e=>({scale:t.scaleName(e.channel)}))),update:o.join(" && ")+" ? ".concat(e," : {}")}]})}const c=i.map((t=>t.signals.data)),u="unit: ".concat(C5(t),", fields: ").concat(n+b6,", values");return r.concat({name:o,...a?{init:"{".concat(u,": ").concat(i6(a),"}")}:{},...c.length?{on:[{events:[{signal:c.join(" || ")}],update:"".concat(c.join(" && ")," ? {").concat(u,": [").concat(c,"]} : null")}]}:{}})}},topLevelSignals:(t,e,r)=>{if(c7(t)&&t.hasProjection&&e.init){r.filter((t=>t.name===_6)).length||r.unshift({name:_6,value:null,on:[{events:"timer{1}",update:"".concat(_6," === null ? {} : ").concat(_6)}]})}return r},marks:(t,e,r)=>{const n=e.name,{x:o,y:i}=e.project.hasChannel,a=null==o?void 0:o.signals.visual,c=null==i?void 0:i.signals.visual,u="data(".concat(uu(e.name+y5),")");if(v6.defined(e)||!o&&!i)return r;const l={x:void 0!==o?{signal:"".concat(a,"[0]")}:{value:0},y:void 0!==i?{signal:"".concat(c,"[0]")}:{value:0},x2:void 0!==o?{signal:"".concat(a,"[1]")}:{field:{group:"width"}},y2:void 0!==i?{signal:"".concat(c,"[1]")}:{field:{group:"height"}}};if("global"===e.resolve)for(const b of kG(l))l[b]=[{test:"".concat(u,".length && ").concat(u,"[0].unit === ").concat(C5(t)),...l[b]},{value:0}];const{fill:s,fillOpacity:d,cursor:h,...f}=e.mark,p=kG(f).reduce(((t,e)=>(t[e]=[{test:[void 0!==o&&"".concat(a,"[0] !== ").concat(a,"[1]"),void 0!==i&&"".concat(c,"[0] !== ").concat(c,"[1]")].filter((t=>t)).join(" && "),value:f[e]},{value:null}],t)),{});return[{name:"".concat(n+k6,"_bg"),type:"rect",clip:!0,encode:{enter:{fill:{value:s},fillOpacity:{value:d}},update:l}},...r,{name:n+k6,type:"rect",clip:!0,encode:{enter:{...h?{cursor:{value:h}}:{},fill:{value:"transparent"}},update:{...l,...p}}}]}};const E6={defined:t=>"point"===t.type,signals:(t,e,r)=>{var n;const o=e.name,i=o+b6,a=e.project,c="(item().isVoronoi ? datum.datum : datum)",u=wG(null!==(n=t.component.selection)&&void 0!==n?n:{}).reduce(((t,e)=>"interval"===e.type?t.concat(e.name+k6):t),[]).map((t=>"indexof(item().mark.name, '".concat(t,"') < 0"))).join(" && "),l="datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0".concat(u?" && ".concat(u):"");let s="unit: ".concat(C5(t),", ");if(e.project.hasSelectionId)s+="".concat(d0,": ").concat(c,"[").concat(uu(d0),"]");else{const e=a.items.map((e=>{const r=t.fieldDef(e.channel);return null!=r&&r.bin?"[".concat(c,"[").concat(uu(t.vgField(e.channel,{})),"], ")+"".concat(c,"[").concat(uu(t.vgField(e.channel,{binSuffix:"end"})),"]]"):"".concat(c,"[").concat(uu(e.field),"]")})).join(", ");s+="fields: ".concat(i,", values: [").concat(e,"]")}const d=e.events;return r.concat([{name:o+x5,on:d?[{events:d,update:"".concat(l," ? {").concat(s,"} : null"),force:!0}]:[]}])}};function D6(t,e,r,n){const o=zK(e)&&e.condition,i=n(e);if(o){const e=jc(o).map((e=>{const r=n(e);if(function(t){return t.param}(e)){const{param:n,empty:o}=e;return{test:M5(t,{param:n,empty:o}),...r}}return{test:z5(t,e.test),...r}}));return{[r]:[...e,...void 0!==i?[i]:[]]}}return void 0!==i?{[r]:i}:{}}function j6(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";const r=t.encoding[e];return D6(t,r,e,(e=>S6(e,t.config)))}function S6(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"datum";if(t){if(WK(t))return vX(t.value);if(qK(t)){const{format:n,formatType:o}=o1(t);return lK({fieldOrDatumDef:t,format:n,formatType:o,expr:r,config:e})}}}function A6(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{encoding:r,markDef:n,config:o,stack:i}=t,a=r.tooltip;if(nc(a))return{tooltip:N6({tooltip:a},i,o,e)};{const c=e.reactiveGeom?"datum.datum":"datum";return D6(t,a,"tooltip",(t=>{const a=S6(t,o,c);if(a)return a;if(null===t)return;let u=CX("tooltip",n,o);return!0===u&&(u={content:"encoding"}),tu(u)?{value:u}:oc(u)?lX(u)?u:"encoding"===u.content?N6(r,i,o,e):{signal:c}:void 0}))}}function M6(t,e,r){let{reactiveGeom:n}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const o={...r,...r.tooltipFormat},i={},a=n?"datum.datum":"datum",c=[];function u(r,n){var u;const l=$$(n),s=HK(r)?r:{...r,type:t[l].type},d=jc(s.title||n1(s,o)).join(", ").replaceAll(/"/g,'\\"');let h;if(xY(n)){const e="x"===n?"x2":"y2",r=i1(t[e]);if(eX(s.bin)&&r){const t=XK(s,{expr:a}),n=XK(r,{expr:a}),{format:c,formatType:u}=o1(s);h=mK(t,n,c,u,o),i[e]=!0}}if((xY(n)||n===t$||n===QG)&&e&&e.fieldChannel===n&&"normalize"===e.offset){const{format:t,formatType:e}=o1(s);h=lK({fieldOrDatumDef:s,format:t,formatType:e,expr:a,config:o,normalizeStack:!0}).signal}null!==(u=h)&&void 0!==u||(h=S6(s,o,a).signal),c.push({channel:n,key:d,value:h})}z1(t,((t,e)=>{LK(t)?u(t,e):PK(t)&&u(t.condition,e)}));const l={};for(const{channel:s,key:d,value:h}of c)i[s]||l[d]||(l[d]=h);return l}function N6(t,e,r){let{reactiveGeom:n}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const o=M6(t,e,r,{reactiveGeom:n}),i=_G(o).map((t=>{let[e,r]=t;return'"'.concat(e,'": ').concat(r)}));return i.length>0?{signal:"{".concat(i.join(", "),"}")}:void 0}function z6(t){const{markDef:e,config:r}=t,n=CX("aria",e,r);return!1===n?{}:{...n?{aria:n}:{},...P6(t),...F6(t)}}function P6(t){const{mark:e,markDef:r,config:n}=t;if(!1===n.aria)return{};const o=CX("ariaRoleDescription",r,n);return null!=o?{ariaRoleDescription:{value:o}}:e in fX?{}:{ariaRoleDescription:{value:e}}}function F6(t){const{encoding:e,markDef:r,config:n,stack:o}=t,i=e.description;if(i)return D6(t,i,"description",(e=>S6(e,t.config)));const a=CX("description",r,n);if(null!=a)return{description:vX(a)};if(!1===n.aria)return{};const c=M6(e,o,n);return xG(c)?void 0:{description:{signal:_G(c).map(((t,e)=>{let[r,n]=t;return'"'.concat(e>0?"; ":"").concat(r,': " + (').concat(n,")")})).join(" + ")}}}function L6(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{markDef:n,encoding:o,config:i}=e,{vgChannel:a}=r;let{defaultRef:c,defaultValue:u}=r;var l;void 0===c&&(null!==(l=u)&&void 0!==l||(u=CX(t,n,i,{vgChannel:a,ignoreVgConfig:!0})),void 0!==u&&(c=vX(u)));const s=o[t];return D6(e,s,null!=a?a:t,(r=>oK({channel:t,channelDef:r,markDef:n,config:i,scaleName:e.scaleName(t),scale:e.getScaleComponent(t),stack:null,defaultRef:c})))}function T6(t){var e,r,n,o;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{filled:void 0};const{markDef:a,encoding:c,config:u}=t,{type:l}=a,s=null!==(e=i.filled)&&void 0!==e?e:CX("filled",a,u),d=sG(["bar","point","circle","square","geoshape"],l)?"transparent":void 0,h=null!==(r=null!==(n=CX(!0===s?"color":void 0,a,u,{vgChannel:"fill"}))&&void 0!==n?n:u.mark[!0===s&&"color"])&&void 0!==r?r:d,f=null!==(o=CX(!1===s?"color":void 0,a,u,{vgChannel:"stroke"}))&&void 0!==o?o:u.mark[!1===s&&"color"],p=s?"fill":"stroke",b={...h?{fill:vX(h)}:{},...f?{stroke:vX(f)}:{}};return a.color&&(s?a.fill:a.stroke)&&fJ(YX("property",{fill:"fill"in a,stroke:"stroke"in a})),{...b,...L6("color",t,{vgChannel:p,defaultValue:s?h:f}),...L6("fill",t,{defaultValue:c.fill?h:void 0}),...L6("stroke",t,{defaultValue:c.stroke?f:void 0})}}function R6(t){const{encoding:e,mark:r}=t,n=e.order;return!qQ(r)&&WK(n)?D6(t,n,"zindex",(t=>vX(t.value))):{}}function B6(t){let{channel:e,markDef:r,encoding:n={},model:o,bandPosition:i}=t;const a="".concat(e,"Offset"),c=r[a],u=n[a];if(("xOffset"===a||"yOffset"===a)&&u){return{offsetType:"encoding",offset:oK({channel:a,channelDef:u,markDef:r,config:null==o?void 0:o.config,scaleName:o.scaleName(a),scale:o.getScaleComponent(a),stack:null,defaultRef:vX(c),bandPosition:i})}}const l=r[a];return l?{offsetType:"visual",offset:l}:{}}function I6(t,e,r){let{defaultPos:n,vgChannel:o}=r;const{encoding:i,markDef:a,config:c,stack:u}=e,l=i[t],s=i[X$(t)],d=e.scaleName(t),h=e.getScaleComponent(t),{offset:f,offsetType:p}=B6({channel:t,markDef:a,encoding:i,model:e,bandPosition:.5}),b=U6({model:e,defaultPos:n,channel:t,scaleName:d,scale:h}),g=!l&&xY(t)&&(i.latitude||i.longitude)?{field:e.getName(t)}:function(t){const{channel:e,channelDef:r,scaleName:n,stack:o,offset:i,markDef:a}=t;if(qK(r)&&o&&e===o.fieldChannel){if(LK(r)){let t=r.bandPosition;if(void 0!==t||"text"!==a.type||"radius"!==e&&"theta"!==e||(t=.5),void 0!==t)return nK({scaleName:n,fieldOrDatumDef:r,startSuffix:"start",bandPosition:t,offset:i})}return rK(r,n,{suffix:"end"},{offset:i})}return KQ(t)}({channel:t,channelDef:l,channel2Def:s,markDef:a,config:c,scaleName:d,scale:h,stack:u,offset:f,defaultRef:b,bandPosition:"encoding"===p?0:void 0});return g?{[o||t]:g}:void 0}function U6(t){let{model:e,defaultPos:r,channel:n,scaleName:o,scale:i}=t;const{markDef:a,config:c}=e;return()=>{const t=$$(n),u=Y$(n),l=CX(n,a,c,{vgChannel:u});if(void 0!==l)return iK(n,l);switch(r){case"zeroOrMin":case"zeroOrMax":if(o){const t=i.get("type");if(sG([eQ.LOG,eQ.TIME,eQ.UTC],t));else if(i.domainDefinitelyIncludesZero())return{scale:o,value:0}}if("zeroOrMin"===r)return"y"===t?{field:{group:"height"}}:{value:0};switch(t){case"radius":return{signal:"min(".concat(e.width.signal,",").concat(e.height.signal,")/2")};case"theta":return{signal:"2*PI"};case"x":return{field:{group:"width"}};case"y":return{value:0}}break;case"mid":return{...e[J$(n)],mult:.5}}}}const q6={left:"x",center:"xc",right:"x2"},H6={top:"y",middle:"yc",bottom:"y2"};function W6(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"middle";if("radius"===t||"theta"===t)return Y$(t);const o="x"===t?"align":"baseline",i=CX(o,e,r);let a;return lX(i)?(fJ(function(t){return"The ".concat(t," for range marks cannot be an expression")}(o)),a=void 0):a=i,"x"===t?q6[a||("top"===n?"left":"center")]:H6[a||n]}function V6(t,e,r){let{defaultPos:n,defaultPos2:o,range:i}=r;return i?Z6(t,e,{defaultPos:n,defaultPos2:o}):I6(t,e,{defaultPos:n})}function Z6(t,e,r){let{defaultPos:n,defaultPos2:o}=r;const{markDef:i,config:a}=e,c=X$(t),u=J$(t),l=function(t,e,r){const{encoding:n,mark:o,markDef:i,stack:a,config:c}=t,u=$$(r),l=J$(r),s=Y$(r),d=n[u],h=t.scaleName(u),f=t.getScaleComponent(u),{offset:p}=B6(r in n||r in i?{channel:r,markDef:i,encoding:n,model:t}:{channel:u,markDef:i,encoding:n,model:t});if(!d&&("x2"===r||"y2"===r)&&(n.latitude||n.longitude)){const e=J$(r),n=t.markDef[e];return null!=n?{[e]:{value:n}}:{[s]:{field:t.getName(r)}}}const b=function(t){let{channel:e,channelDef:r,channel2Def:n,markDef:o,config:i,scaleName:a,scale:c,stack:u,offset:l,defaultRef:s}=t;if(qK(r)&&u&&e.charAt(0)===u.fieldChannel.charAt(0))return rK(r,a,{suffix:"start"},{offset:l});return KQ({channel:e,channelDef:n,scaleName:a,scale:c,stack:u,markDef:o,config:i,offset:l,defaultRef:s})}({channel:r,channelDef:d,channel2Def:n[r],markDef:i,config:c,scaleName:h,scale:f,stack:a,offset:p,defaultRef:void 0});if(void 0!==b)return{[s]:b};return G6(r,i)||G6(r,{[r]:EX(r,i,c.style),[l]:EX(l,i,c.style)})||G6(r,c[o])||G6(r,c.mark)||{[s]:U6({model:t,defaultPos:e,channel:r,scaleName:h,scale:f})()}}(e,o,c);return{...I6(t,e,{defaultPos:n,vgChannel:l[u]?W6(t,i,a):Y$(t)}),...l}}function G6(t,e){const r=J$(t),n=Y$(t);if(void 0!==e[n])return{[n]:iK(t,e[n])};if(void 0!==e[t])return{[n]:iK(t,e[t])};if(e[r]){const n=e[r];if(!YQ(n))return{[r]:iK(t,n)};fJ(function(t){return"Position range does not support relative band size for ".concat(t,".")}(r))}}function $6(t,e){var r,n;const{config:o,encoding:i,markDef:a}=t,c=a.type,u=X$(e),l=J$(e),s=i[e],d=i[u],h=t.getScaleComponent(e),f=h?h.get("type"):void 0,p=a.orient,b=null!==(r=null!==(n=i[l])&&void 0!==n?n:i.size)&&void 0!==r?r:CX("size",a,o,{vgChannel:l}),g=Q$(e),m="bar"===c&&("x"===e?"vertical"===p:"horizontal"===p);return!LK(s)||!(tX(s.bin)||eX(s.bin)||s.timeUnit&&!d)||b&&!YQ(b)||i[g]||hQ(f)?(qK(s)&&hQ(f)||m)&&!d?function(t,e,r){const{markDef:n,encoding:o,config:i,stack:a}=r,c=n.orient,u=r.scaleName(e),l=r.getScaleComponent(e),s=J$(e),d=X$(e),h=Q$(e),f=r.scaleName(h),p=r.getScaleComponent(K$(e)),b="horizontal"===c&&"y"===e||"vertical"===c&&"x"===e;let g;(o.size||n.size)&&(b?g=L6("size",r,{vgChannel:s,defaultRef:vX(n.size)}):fJ(function(t){return'Cannot apply size to non-oriented mark "'.concat(t,'".')}(n.type)));const m=!!g,v=AK({channel:e,fieldDef:t,markDef:n,config:i,scaleType:null==l?void 0:l.get("type"),useVlSizeChannel:b});g=g||{[s]:Y6(s,f||u,p||l,i,v,!!t,n.type)};const y="band"===(null==l?void 0:l.get("type"))&&YQ(v)&&!m?"top":"middle",x=W6(e,n,i,y),k="xc"===x||"yc"===x,{offset:w,offsetType:_}=B6({channel:e,markDef:n,encoding:o,model:r,bandPosition:k?.5:0}),C=KQ({channel:e,channelDef:t,markDef:n,config:i,scaleName:u,scale:l,stack:a,offset:w,defaultRef:U6({model:r,defaultPos:"mid",channel:e,scaleName:u,scale:l}),bandPosition:k?"encoding"===_?0:.5:lX(v)?{signal:"(1-".concat(v,")/2")}:YQ(v)?(1-v.band)/2:0});if(s)return{[x]:C,...g};{const t=Y$(d),e=g[s],r=w?{...e,offset:w}:e;return{[x]:C,[t]:nc(C)?[C[0],{...C[1],offset:r}]:{...C,offset:r}}}}(s,e,t):Z6(e,t,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"}):function(t){var e,r,n;let{fieldDef:o,fieldDef2:i,channel:a,model:c}=t;const{config:u,markDef:l,encoding:s}=c,d=c.getScaleComponent(a),h=c.scaleName(a),f=d?d.get("type"):void 0,p=d.get("reverse"),b=AK({channel:a,fieldDef:o,markDef:l,config:u,scaleType:f}),g=null===(e=c.component.axes[a])||void 0===e?void 0:e[0],m=null!==(r=null==g?void 0:g.get("translate"))&&void 0!==r?r:.5,v=xY(a)&&null!==(n=CX("binSpacing",l,u))&&void 0!==n?n:0,y=X$(a),x=Y$(a),k=Y$(y),w=OX("minBandSize",l,u),{offset:_}=B6({channel:a,markDef:l,encoding:s,model:c,bandPosition:0}),{offset:C}=B6({channel:y,markDef:l,encoding:s,model:c,bandPosition:0}),O=function(t){let{scaleName:e,fieldDef:r}=t;const n=XK(r,{expr:"datum"}),o=XK(r,{expr:"datum",suffix:"end"});return'abs(scale("'.concat(e,'", ').concat(o,') - scale("').concat(e,'", ').concat(n,"))")}({fieldDef:o,scaleName:h}),E=X6(a,v,p,m,_,w,O),D=X6(y,v,p,m,null!=C?C:_,w,O),j=lX(b)?{signal:"(1-".concat(b.signal,")/2")}:YQ(b)?(1-b.band)/2:.5;if(tX(o.bin)||o.timeUnit)return{[k]:J6({fieldDef:o,scaleName:h,bandPosition:j,offset:D}),[x]:J6({fieldDef:o,scaleName:h,bandPosition:lX(j)?{signal:"1-".concat(j.signal)}:1-j,offset:E})};if(eX(o.bin)){const t=rK(o,h,{},{offset:D});if(LK(i))return{[k]:t,[x]:rK(i,h,{},{offset:E})};if(rX(o.bin)&&o.bin.step)return{[k]:t,[x]:{signal:'scale("'.concat(h,'", ').concat(XK(o,{expr:"datum"})," + ").concat(o.bin.step,")"),offset:E}}}return void fJ(sJ(y))}({fieldDef:s,fieldDef2:d,channel:e,model:t})}function Y6(t,e,r,n,o,i,a){if(YQ(o)){if(!r)return{mult:o.band,field:{group:t}};{const t=r.get("type");if("band"===t){let t="bandwidth('".concat(e,"')");1!==o.band&&(t="".concat(o.band," * ").concat(t));const r=OX("minBandSize",{type:a},n);return{signal:r?"max(".concat(kX(r),", ").concat(t,")"):t}}1!==o.band&&(fJ(function(t){return"Cannot use the relative band size with ".concat(t," scale.")}(t)),o=void 0)}}else{if(lX(o))return o;if(o)return{value:o}}if(r){const t=r.get("range");if(sX(t)&&Qc(t.step))return{value:t.step-2}}if(!i){const{bandPaddingInner:e,barBandPaddingInner:r,rectBandPaddingInner:o}=n.scale,i=LG(e,"bar"===a?r:o);if(lX(i))return{signal:"(1 - (".concat(i.signal,")) * ").concat(t)};if(Qc(i))return{signal:"".concat(1-i," * ").concat(t)}}return{value:O0(n.view,t)-2}}function X6(t,e,r,n,o,i,a){if(E$(t))return 0;const c="x"===t||"y2"===t,u=c?-e/2:e/2;if(lX(r)||lX(o)||lX(n)||i){const t=kX(r),e=kX(o),l=kX(n),s=kX(i),d=c?"":"-",h=i?"(".concat(a," < ").concat(s," ? ").concat(d,"0.5 * (").concat(s," - (").concat(a,")) : ").concat(u,")"):u;return{signal:(l?"".concat(l," + "):"")+(t?"(".concat(t," ? -1 : 1) * "):"")+(e?"(".concat(e," + ").concat(h,")"):h)}}return o=o||0,n+(r?-o-u:+o+u)}function J6(t){let{fieldDef:e,scaleName:r,bandPosition:n,offset:o}=t;return nK({scaleName:r,fieldOrDatumDef:e,bandPosition:n,offset:o})}const Q6=new Set(["aria","width","height"]);function K6(t,e){const{fill:r,stroke:n}="include"===e.color?T6(t):{};return{...e5(t.markDef,e),...t5(t,"fill",r),...t5(t,"stroke",n),...L6("opacity",t),...L6("fillOpacity",t),...L6("strokeOpacity",t),...L6("strokeWidth",t),...L6("strokeDash",t),...R6(t),...A6(t),...j6(t,"href"),...z6(t)}}function t5(t,e,r){const{config:n,mark:o,markDef:i}=t;if("hide"===CX("invalid",i,n)&&r&&!qQ(o)){const n=function(t,e){let{invalid:r=!1,channels:n}=e;const o=n.reduce(((e,r)=>{const n=t.getScaleComponent(r);if(n){const o=n.get("type"),i=t.vgField(r,{expr:"datum"});i&&fQ(o)&&(e[i]=!0)}return e}),{}),i=kG(o);if(i.length>0){const t=r?"||":"&&";return i.map((t=>eK(t,r))).join(" ".concat(t," "))}return}(t,{invalid:!0,channels:TY});if(n)return{[e]:[{test:n,value:null},...jc(r)]}}return r?{[e]:r}:{}}function e5(t,e){return hX.reduce(((r,n)=>(Q6.has(n)||void 0===t[n]||"ignore"===e[n]||(r[n]=vX(t[n])),r)),{})}function r5(t){const{config:e,markDef:r}=t;if(CX("invalid",r,e)){const e=function(t,e){let{invalid:r=!1,channels:n}=e;const o=n.reduce(((e,r)=>{const n=t.getScaleComponent(r);if(n){var o;const i=n.get("type"),a=t.vgField(r,{expr:"datum",binSuffix:null!==(o=t.stack)&&void 0!==o&&o.impute?"mid":void 0});a&&fQ(i)&&(e[a]=!0)}return e}),{}),i=kG(o);if(i.length>0){const t=r?"||":"&&";return i.map((t=>eK(t,r))).join(" ".concat(t," "))}return}(t,{channels:yY});if(e)return{defined:{signal:e}}}return{}}function n5(t,e){if(void 0!==e)return{[t]:vX(e)}}const o5="voronoi",i5={defined:t=>"point"===t.type&&t.nearest,parse:(t,e)=>{if(e.events)for(const r of e.events)r.markname=t.getName(o5)},marks:(t,e,r)=>{const{x:n,y:o}=e.project.hasChannel,i=t.mark;if(qQ(i))return fJ('The "nearest" transform is not supported for '.concat(i," marks.")),r;const a={name:t.getName(o5),type:"path",interactive:!0,from:{data:t.getName("marks")},encode:{update:{fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0},...A6(t,{reactiveGeom:!0})}},transform:[{type:"voronoi",x:{expr:n||!o?"datum.datum.x || 0":"0"},y:{expr:o||!n?"datum.datum.y || 0":"0"},size:[t.getSizeSignalRef("width"),t.getSizeSignalRef("height")]}]};let c=0,u=!1;return r.forEach(((e,r)=>{var n;const o=null!==(n=e.name)&&void 0!==n?n:"";o===t.component.mark[0].name?c=r:o.indexOf(o5)>=0&&(u=!0)})),u||r.splice(c+1,0,a),r}},a5={defined:t=>"point"===t.type&&"global"===t.resolve&&t.bind&&"scales"!==t.bind&&!f0(t.bind),parse:(t,e,r)=>E5(e,r),topLevelSignals:(t,e,r)=>{const n=e.name,o=e.project,i=e.bind,a=e.init&&e.init[0],c=i5.defined(e)?"(item().isVoronoi ? datum.datum : datum)":"datum";return o.items.forEach(((t,o)=>{const u=OG("".concat(n,"_").concat(t.field));var l,s;r.filter((t=>t.name===u)).length||r.unshift({name:u,...a?{init:i6(a[o])}:{value:null},on:e.events?[{events:e.events,update:"datum && item().mark.marktype !== 'group' ? ".concat(c,"[").concat(uu(t.field),"] : null")}]:[],bind:null!==(l=null!==(s=i[t.field])&&void 0!==s?s:i[t.channel])&&void 0!==l?l:i})})),r},signals:(t,e,r)=>{const n=e.name,o=e.project,i=r.filter((t=>t.name===n+x5))[0],a=n+b6,c=o.items.map((t=>OG("".concat(n,"_").concat(t.field)))),u=c.map((t=>"".concat(t," !== null"))).join(" && ");return c.length&&(i.update="".concat(u," ? {fields: ").concat(a,", values: [").concat(c.join(", "),"]} : null")),delete i.value,delete i.on,r}},c5="_toggle",u5={defined:t=>"point"===t.type&&!!t.toggle,signals:(t,e,r)=>r.concat({name:e.name+c5,value:!1,on:[{events:e.events,update:e.toggle}]}),modifyExpr:(t,e)=>{const r=e.name+x5,n=e.name+c5;return"".concat(n," ? null : ").concat(r,", ")+("global"===e.resolve?"".concat(n," ? null : true, "):"".concat(n," ? null : {unit: ").concat(C5(t),"}, "))+"".concat(n," ? ").concat(r," : null")}},l5={defined:t=>void 0!==t.clear&&!1!==t.clear,parse:(t,e)=>{e.clear&&(e.clear=tu(e.clear)?hq(e.clear,"view"):e.clear)},topLevelSignals:(t,e,r)=>{if(a5.defined(e))for(const n of e.project.items){const t=r.findIndex((t=>t.name===OG("".concat(e.name,"_").concat(n.field))));-1!==t&&r[t].on.push({events:e.clear,update:"null"})}return r},signals:(t,e,r)=>{function n(t,n){-1!==t&&r[t].on&&r[t].on.push({events:e.clear,update:n})}if("interval"===e.type)for(const o of e.project.items){const t=r.findIndex((t=>t.name===o.signals.visual));if(n(t,"[0, 0]"),-1===t){n(r.findIndex((t=>t.name===o.signals.data)),"null")}}else{let t=r.findIndex((t=>t.name===e.name+x5));n(t,"null"),u5.defined(e)&&(t=r.findIndex((t=>t.name===e.name+c5)),n(t,"false"))}return r}},s5={defined:t=>{const e="global"===t.resolve&&t.bind&&f0(t.bind),r=1===t.project.items.length&&t.project.items[0].field!==d0;return e&&!r&&fJ("Legend bindings are only supported for selections over an individual field or encoding channel."),e&&r},parse:(t,e,r)=>{const n=nG(r);if(n.select=tu(n.select)?{type:n.select,toggle:e.toggle}:{...n.select,toggle:e.toggle},E5(e,n),oc(r.select)&&(r.select.on||r.select.clear)){const t='event.item && indexof(event.item.mark.role, "legend") < 0';for(const r of e.events){var o;r.filter=jc(null!==(o=r.filter)&&void 0!==o?o:[]),r.filter.includes(t)||r.filter.push(t)}}const i=p0(e.bind)?e.bind.legend:"click",a=tu(i)?hq(i,"view"):jc(i);e.bind={legend:{merge:a}}},topLevelSignals:(t,e,r)=>{const n=e.name,o=p0(e.bind)&&e.bind.legend,i=t=>e=>{const r=nG(e);return r.markname=t,r};for(const a of e.project.items){if(!a.hasLegend)continue;const t="".concat(OG(a.field),"_legend"),c="".concat(n,"_").concat(t);if(0===r.filter((t=>t.name===c)).length){const n=o.merge.map(i("".concat(t,"_symbols"))).concat(o.merge.map(i("".concat(t,"_labels")))).concat(o.merge.map(i("".concat(t,"_entries"))));r.unshift({name:c,...e.init?{}:{value:null},on:[{events:n,update:"isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value",force:!0},{events:o.merge,update:"!event.item || !datum ? null : ".concat(c),force:!0}]})}}return r},signals:(t,e,r)=>{const n=e.name,o=e.project,i=r.find((t=>t.name===n+x5)),a=n+b6,c=o.items.filter((t=>t.hasLegend)).map((t=>OG("".concat(n,"_").concat(OG(t.field),"_legend")))),u=c.map((t=>"".concat(t," !== null"))).join(" && "),l="".concat(u," ? {fields: ").concat(a,", values: [").concat(c.join(", "),"]} : null");e.events&&c.length>0?i.on.push({events:c.map((t=>({signal:t}))),update:l}):c.length>0&&(i.update=l,delete i.value,delete i.on);const s=r.find((t=>t.name===n+c5)),d=p0(e.bind)&&e.bind.legend;return s&&(e.events?s.on.push({...s.on[0],events:d}):s.on[0].events=d),r}};const d5="_translate_anchor",h5="_translate_delta",f5={defined:t=>"interval"===t.type&&t.translate,signals:(t,e,r)=>{const n=e.name,o=v6.defined(e),i=n+d5,{x:a,y:c}=e.project.hasChannel;let u=hq(e.translate,"scope");return o||(u=u.map((t=>(t.between[0].markname=n+k6,t)))),r.push({name:i,value:{},on:[{events:u.map((t=>t.between[0])),update:"{x: x(unit), y: y(unit)"+(void 0!==a?", extent_x: ".concat(o?y6(t,ZG):"slice(".concat(a.signals.visual,")")):"")+(void 0!==c?", extent_y: ".concat(o?y6(t,GG):"slice(".concat(c.signals.visual,")")):"")+"}"}]},{name:n+h5,value:{},on:[{events:u,update:"{x: ".concat(i,".x - x(unit), y: ").concat(i,".y - y(unit)}")}]}),void 0!==a&&p5(t,e,a,"width",r),void 0!==c&&p5(t,e,c,"height",r),r}};function p5(t,e,r,n,o){var i,a;const c=e.name,u=c+d5,l=c+h5,s=r.channel,d=v6.defined(e),h=o.filter((t=>t.name===r.signals[d?"data":"visual"]))[0],f=t.getSizeSignalRef(n).signal,p=t.getScaleComponent(s),b=p&&p.get("type"),g=p&&p.get("reverse"),m=d?s===ZG?g?"":"-":g?"-":"":"",v="".concat(u,".extent_").concat(s),y="".concat(m).concat(l,".").concat(s," / ").concat(d?"".concat(f):"span(".concat(v,")")),x=d&&p?"log"===b?"panLog":"symlog"===b?"panSymlog":"pow"===b?"panPow":"panLinear":"panLinear",k=d?"pow"===b?", ".concat(null!==(i=p.get("exponent"))&&void 0!==i?i:1):"symlog"===b?", ".concat(null!==(a=p.get("constant"))&&void 0!==a?a:1):"":"",w="".concat(x,"(").concat(v,", ").concat(y).concat(k,")");h.on.push({events:{signal:l},update:d?w:"clampRange(".concat(w,", 0, ").concat(f,")")})}const b5="_zoom_anchor",g5="_zoom_delta",m5={defined:t=>"interval"===t.type&&t.zoom,signals:(t,e,r)=>{const n=e.name,o=v6.defined(e),i=n+g5,{x:a,y:c}=e.project.hasChannel,u=uu(t.scaleName(ZG)),l=uu(t.scaleName(GG));let s=hq(e.zoom,"scope");return o||(s=s.map((t=>(t.markname=n+k6,t)))),r.push({name:n+b5,on:[{events:s,update:o?"{"+[u?"x: invert(".concat(u,", x(unit))"):"",l?"y: invert(".concat(l,", y(unit))"):""].filter((t=>t)).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:i,on:[{events:s,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),void 0!==a&&v5(t,e,a,"width",r),void 0!==c&&v5(t,e,c,"height",r),r}};function v5(t,e,r,n,o){var i,a;const c=e.name,u=r.channel,l=v6.defined(e),s=o.filter((t=>t.name===r.signals[l?"data":"visual"]))[0],d=t.getSizeSignalRef(n).signal,h=t.getScaleComponent(u),f=h&&h.get("type"),p=l?y6(t,u):s.name,b=c+g5,g="".concat(c).concat(b5,".").concat(u),m=l&&h?"log"===f?"zoomLog":"symlog"===f?"zoomSymlog":"pow"===f?"zoomPow":"zoomLinear":"zoomLinear",v=l?"pow"===f?", ".concat(null!==(i=h.get("exponent"))&&void 0!==i?i:1):"symlog"===f?", ".concat(null!==(a=h.get("constant"))&&void 0!==a?a:1):"":"",y="".concat(m,"(").concat(p,", ").concat(g,", ").concat(b).concat(v,")");s.on.push({events:{signal:b},update:l?y:"clampRange(".concat(y,", 0, ").concat(d,")")})}const y5="_store",x5="_tuple",k5="_modify",w5="vlSelectionResolve",_5=[E6,O6,m6,u5,a5,v6,s5,l5,f5,m5,i5];function C5(t){let{escape:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{escape:!0},r=e?uu(t.name):t.name;const n=function(t){let e=t.parent;for(;e&&!u7(e);)e=e.parent;return e}(t);if(n){const{facet:t}=n;for(const e of P$)t[e]&&(r+=" + '__facet_".concat(e,"_' + (facet[").concat(uu(n.vgField(e)),"])"))}return r}function O5(t){var e;return wG(null!==(e=t.component.selection)&&void 0!==e?e:{}).reduce(((t,e)=>t||e.project.hasSelectionId),!1)}function E5(t,e){!tu(e.select)&&e.select.on||delete t.events,!tu(e.select)&&e.select.clear||delete t.clear,!tu(e.select)&&e.select.toggle||delete t.toggle}function D5(t){const e=[];return"Identifier"===t.type?[t.name]:"Literal"===t.type?[t.value]:("MemberExpression"===t.type&&(e.push(...D5(t.object)),e.push(...D5(t.property))),e)}function j5(t){return"MemberExpression"===t.object.type?j5(t.object):"datum"===t.object.name}function S5(t){const e=FB(t),r=new Set;return e.visit((t=>{"MemberExpression"===t.type&&j5(t)&&r.add(D5(t).slice(1).join("."))})),r}class A5 extends s6{clone(){return new A5(null,this.model,nG(this.filter))}constructor(t,e,r){super(t),this.model=e,this.filter=r,this.expr=z5(this.model,this.filter,this),this._dependentFields=S5(this.expr)}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return"Filter ".concat(this.expr)}}function M5(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"datum";const o=tu(e)?e:e.param,i=OG(o),a=uu(i+y5);let c;try{c=t.getSelectionComponent(i,o)}catch(h9){return"!!".concat(i)}if(c.project.timeUnit){const e=null!=r?r:t.component.data.raw,n=c.project.timeUnit.clone();e.parent?n.insertAsParentOf(e):e.parent=n}const u=c.project.hasSelectionId?"vlSelectionIdTest(":"vlSelectionTest(",l="global"===c.resolve?")":", ".concat(uu(c.resolve),")"),s="".concat(u).concat(a,", ").concat(n).concat(l),d="length(data(".concat(a,"))");return!1===e.empty?"".concat(d," && ").concat(s):"!".concat(d," || ").concat(s)}function N5(t,e,r){const n=OG(e),o=r.encoding;let i,a=r.field;try{i=t.getSelectionComponent(n,e)}catch(h9){return n}if(o||a){if(o&&!a){const t=i.project.items.filter((t=>t.channel===o));!t.length||t.length>1?(a=i.project.items[0].field,fJ((t.length?"Multiple ":"No ")+"matching ".concat(uu(o)," encoding found for selection ").concat(uu(r.param),". ")+'Using "field": '.concat(uu(a),"."))):a=t[0].field}}else a=i.project.items[0].field,i.project.items.length>1&&fJ('A "field" or "encoding" must be specified when using a selection as a scale domain. '+'Using "field": '.concat(uu(a),"."));return"".concat(i.name,"[").concat(uu(NG(a)),"]")}function z5(t,e,r){return EG(e,(e=>tu(e)?e:function(t){return null==t?void 0:t.param}(e)?M5(t,e,r):VJ(e)))}function P5(t,e,r,n){var o,i,a,c,u;null!==(o=t.encode)&&void 0!==o||(t.encode={}),null!==(i=(c=t.encode)[e])&&void 0!==i||(c[e]={}),null!==(a=(u=t.encode[e]).update)&&void 0!==a||(u.update={}),t.encode[e].update[r]=n}function F5(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{header:!1};const{disable:o,orient:i,scale:a,labelExpr:c,title:u,zindex:l,...s}=t.combine();if(!o){for(const t in s){const r=y1[t],n=s[t];if(r&&r!==e&&"both"!==r)delete s[t];else if(m1(n)){const{condition:e,...r}=n,o=jc(e),i=g1[t];if(i){const{vgProp:e,part:n}=i,a=[...o.map((t=>{const{test:e,...r}=t;return{test:z5(null,e),...r}})),r];P5(s,n,e,a),delete s[t]}else if(null===i){const e={signal:o.map((t=>{const{test:e,...r}=t;return"".concat(z5(null,e)," ? ").concat(xX(r)," : ")})).join("")+xX(r)};s[t]=e}}else if(lX(n)){const e=g1[t];if(e){const{vgProp:r,part:o}=e;P5(s,o,r,n),delete s[t]}}sG(["labelAlign","labelBaseline"],t)&&null===s[t]&&delete s[t]}if("grid"===e){if(!s.grid)return;if(s.encode){const{grid:t}=s.encode;s.encode={...t?{grid:t}:{}},xG(s.encode)&&delete s.encode}return{scale:a,orient:i,...s,domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:LG(l,0)}}{if(!n.header&&t.mainExtracted)return;if(void 0!==c){var d;let t=c;null!==(d=s.encode)&&void 0!==d&&null!==(d=d.labels)&&void 0!==d&&d.update&&lX(s.encode.labels.update.text)&&(t=zG(c,"datum.label",s.encode.labels.update.text.signal)),P5(s,"labels","text",{signal:t})}if(null===s.labelAlign&&delete s.labelAlign,s.encode){for(const e of v1)t.hasAxisPart(e)||delete s.encode[e];xG(s.encode)&&delete s.encode}const e=function(t,e){if(t)return nc(t)&&!uX(t)?t.map((t=>n1(t,e))).join(", "):t}(u,r);return{scale:a,orient:i,grid:!1,...e?{title:e}:{},...s,...!1===r.aria?{aria:!1}:{},zindex:LG(l,0)}}}}function L5(t){const{axes:e}=t.component,r=[];for(const n of yY)if(e[n])for(const o of e[n])if(!o.get("disable")&&!o.get("gridScale")){const e="x"===n?"height":"width",o=t.getSizeSignalRef(e).signal;e!==o&&r.push({name:e,update:o})}return r}function T5(t,e,r,n){return Object.assign.apply(null,[{},...t.map((t=>{if("axisOrient"===t){const t="x"===r?"bottom":"left",o=e["x"===r?"axisBottom":"axisLeft"]||{},i=e["x"===r?"axisTop":"axisRight"]||{},a=new Set([...kG(o),...kG(i)]),c={};for(const e of a.values())c[e]={signal:"".concat(n.signal,' === "').concat(t,'" ? ').concat(kX(o[e])," : ").concat(kX(i[e]))};return c}return e[t]}))])}function R5(t,e){const r=[{}];for(const o of t){var n;let t=null===(n=e[o])||void 0===n?void 0:n.style;if(t){t=jc(t);for(const n of t)r.push(e.style[n])}}return Object.assign.apply(null,r)}function B5(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const o=DX(t,r,e);if(void 0!==o)return{configFrom:"style",configValue:o};for(const a of["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"]){var i;if(void 0!==(null===(i=n[a])||void 0===i?void 0:i[t]))return{configFrom:a,configValue:n[a][t]}}return{}}const I5={scale:t=>{let{model:e,channel:r}=t;return e.scaleName(r)},format:t=>{let{format:e}=t;return e},formatType:t=>{let{formatType:e}=t;return e},grid:t=>{var e;let{fieldOrDatumDef:r,axis:n,scaleType:o}=t;return null!==(e=n.grid)&&void 0!==e?e:function(t,e){return!hQ(t)&&LK(e)&&!tX(null==e?void 0:e.bin)&&!eX(null==e?void 0:e.bin)}(o,r)},gridScale:t=>{let{model:e,channel:r}=t;return function(t,e){const r="x"===e?"y":"x";if(t.getScaleComponent(r))return t.scaleName(r);return}(e,r)},labelAlign:t=>{let{axis:e,labelAngle:r,orient:n,channel:o}=t;return e.labelAlign||H5(r,n,o)},labelAngle:t=>{let{labelAngle:e}=t;return e},labelBaseline:t=>{let{axis:e,labelAngle:r,orient:n,channel:o}=t;return e.labelBaseline||q5(r,n,o)},labelFlush:t=>{var e;let{axis:r,fieldOrDatumDef:n,channel:o}=t;return null!==(e=r.labelFlush)&&void 0!==e?e:function(t,e){if("x"===e&&sG(["quantitative","temporal"],t))return!0;return}(n.type,o)},labelOverlap:t=>{var e;let{axis:r,fieldOrDatumDef:n,scaleType:o}=t;return null!==(e=r.labelOverlap)&&void 0!==e?e:function(t,e,r,n){if(r&&!oc(n)||"nominal"!==t&&"ordinal"!==t)return"log"!==e&&"symlog"!==e||"greedy";return}(n.type,o,LK(n)&&!!n.timeUnit,LK(n)?n.sort:void 0)},orient:t=>{let{orient:e}=t;return e},tickCount:t=>{var e;let{channel:r,model:n,axis:o,fieldOrDatumDef:i,scaleType:a}=t;const c="x"===r?"width":"y"===r?"height":void 0,u=c?n.getSizeSignalRef(c):void 0;return null!==(e=o.tickCount)&&void 0!==e?e:function(t){let{fieldOrDatumDef:e,scaleType:r,size:n,values:o}=t;if(!o&&!hQ(r)&&"log"!==r){if(LK(e)){var i;if(tX(e.bin))return{signal:"ceil(".concat(n.signal,"/10)")};if(e.timeUnit&&sG(["month","hours","day","quarter"],null===(i=NJ(e.timeUnit))||void 0===i?void 0:i.unit))return}return{signal:"ceil(".concat(n.signal,"/40)")}}return}({fieldOrDatumDef:i,scaleType:a,size:u,values:o.values})},tickMinStep:function(t){let{format:e,fieldOrDatumDef:r}=t;if("d"===e)return 1;if(LK(r)){const{timeUnit:t}=r;if(t){const e=zJ(t);if(e)return{signal:e}}}return},title:t=>{let{axis:e,model:r,channel:n}=t;if(void 0!==e.title)return e.title;const o=W5(r,n);if(void 0!==o)return o;const i=r.typedFieldDef(n),a="x"===n?"x2":"y2",c=r.fieldDef(a);return SX(i?[DK(i)]:[],LK(c)?[DK(c)]:[])},values:t=>{let{axis:e,fieldOrDatumDef:r}=t;return function(t,e){const r=t.values;if(nc(r))return p1(e,r);if(lX(r))return r;return}(e,r)},zindex:t=>{var e;let{axis:r,fieldOrDatumDef:n,mark:o}=t;return null!==(e=r.zindex)&&void 0!==e?e:function(t,e){if("rect"===t&&JK(e))return 1;return 0}(o,n)}};function U5(t){return"(((".concat(t.signal," % 360) + 360) % 360)")}function q5(t,e,r,n){if(void 0!==t){if("x"===r){if(lX(t)){const r=U5(t),n=lX(e)?"(".concat(e.signal,' === "top")'):"top"===e;return{signal:"(45 < ".concat(r," && ").concat(r," < 135) || (225 < ").concat(r," && ").concat(r,' < 315) ? "middle" :')+"(".concat(r," <= 45 || 315 <= ").concat(r,") === ").concat(n,' ? "bottom" : "top"')}}if(45{if(VK(e)&&_K(e.sort)){const{field:n,timeUnit:o}=e,i=e.sort,a=i.map(((t,e)=>"".concat(VJ({field:n,timeUnit:o,equal:t})," ? ").concat(e," : "))).join("")+i.length;t=new V5(t,{calculate:a,as:Z5(e,r,{forAs:!0})})}})),t}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return"Calculate ".concat(uG(this.transform))}}function Z5(t,e,r){return XK(t,{prefix:e,suffix:"sort_index",...null!=r?r:{}})}function G5(t,e){return sG(["top","bottom"],e)?"column":sG(["left","right"],e)||"row"===t?"row":"column"}function $5(t,e,r,n){const o="row"===n?r.headerRow:"column"===n?r.headerColumn:r.headerFacet;return LG((e||{})[t],o[t],r.header[t])}function Y5(t,e,r,n){const o={};for(const i of t){const t=$5(i,e||{},r,n);void 0!==t&&(o[i]=t)}return o}const X5=["row","column"],J5=["header","footer"];function Q5(t,e){const r=t.component.layoutHeaders[e].title,n=t.config?t.config:void 0,o=t.component.layoutHeaders[e].facetFieldDef?t.component.layoutHeaders[e].facetFieldDef:void 0,{titleAnchor:i,titleAngle:a,titleOrient:c}=Y5(["titleAnchor","titleAngle","titleOrient"],o.header,n,e),u=G5(e,c),l=UG(a);return{name:"".concat(e,"-title"),type:"group",role:"".concat(u,"-title"),title:{text:r,..."row"===e?{orient:"left"}:{},style:"guide-title",...t3(l,u),...K5(u,l,i),...c3(n,o,e,c0,i0)}}}function K5(t,e){switch(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"middle"){case"start":return{align:"left"};case"end":return{align:"right"}}const r=H5(e,"row"===t?"left":"top","row"===t?"y":"x");return r?{align:r}:{}}function t3(t,e){const r=q5(t,"row"===e?"left":"top","row"===e?"y":"x",!0);return r?{baseline:r}:{}}function e3(t,e){const r=t.component.layoutHeaders[e],n=[];for(const o of J5)if(r[o])for(const i of r[o]){const a=o3(t,e,o,r,i);null!=a&&n.push(a)}return n}function r3(t,e){const{sort:r}=t;var n;return wK(r)?{field:XK(r,{expr:"datum"}),order:null!==(n=r.order)&&void 0!==n?n:"ascending"}:nc(r)?{field:Z5(t,e,{expr:"datum"}),order:"ascending"}:{field:XK(t,{expr:"datum"}),order:null!=r?r:"ascending"}}function n3(t,e,r){const{format:n,formatType:o,labelAngle:i,labelAnchor:a,labelOrient:c,labelExpr:u}=Y5(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],t.header,r,e),l=lK({fieldOrDatumDef:t,format:n,formatType:o,expr:"parent",config:r}).signal,s=G5(e,c);return{text:{signal:u?zG(zG(u,"datum.label",l),"datum.value",XK(t,{expr:"parent"})):l},..."row"===e?{orient:"left"}:{},style:"guide-label",frame:"group",...t3(i,s),...K5(s,i,a),...c3(r,t,e,u0,a0)}}function o3(t,e,r,n,o){if(o){let i=null;const{facetFieldDef:a}=n,c=t.config?t.config:void 0;if(a&&o.labels){const{labelOrient:t}=Y5(["labelOrient"],a.header,c,e);("row"===e&&!sG(["top","bottom"],t)||"column"===e&&!sG(["left","right"],t))&&(i=n3(a,e,c))}const u=u7(t)&&!CK(t.facet),l=o.axes,s=(null==l?void 0:l.length)>0;if(i||s){const c="row"===e?"height":"width";return{name:t.getName("".concat(e,"_").concat(r)),type:"group",role:"".concat(e,"-").concat(r),...n.facetFieldDef?{from:{data:t.getName("".concat(e,"_domain"))},sort:r3(a,e)}:{},...s&&u?{from:{data:t.getName("facet_domain_".concat(e))}}:{},...i?{title:i}:{},...o.sizeSignal?{encode:{update:{[c]:o.sizeSignal}}}:{},...s?{axes:l}:{}}}}return null}const i3={column:{start:0,end:1},row:{start:1,end:0}};function a3(t,e){return i3[e][t]}function c3(t,e,r,n,o){const i={};for(const a of n){if(!o[a])continue;const n=$5(a,null==e?void 0:e.header,t,r);void 0!==n&&(i[o[a]]=n)}return i}function u3(t){return[...l3(t,"width"),...l3(t,"height"),...l3(t,"childWidth"),...l3(t,"childHeight")]}function l3(t,e){const r="width"===e?"x":"y",n=t.component.layoutSize.get(e);if(!n||"merged"===n)return[];const o=t.getSizeSignalRef(e).signal;if("step"===n){const e=t.getScaleComponent(r);if(e){const n=e.get("type"),i=e.get("range");if(hQ(n)&&sX(i)){const n=t.scaleName(r);if(u7(t.parent)){if("independent"===t.parent.component.resolve.scale[r])return[s3(n,i)]}return[s3(n,i),{name:o,update:d3(n,e,"domain('".concat(n,"').length"))}]}}throw new Error("layout size is step although width/height is not step.")}if("container"==n){const e=o.endsWith("width"),r=e?"containerSize()[0]":"containerSize()[1]",n=C0(t.config.view,e?"width":"height"),i="isFinite(".concat(r,") ? ").concat(r," : ").concat(n);return[{name:o,init:i,on:[{update:i,events:"window:resize"}]}]}return[{name:o,value:n}]}function s3(t,e){const r="".concat(t,"_step");return lX(e.step)?{name:r,update:e.step.signal}:{name:r,value:e.step}}function d3(t,e,r){const n=e.get("type"),o=e.get("padding"),i=LG(e.get("paddingOuter"),o);let a=e.get("paddingInner");return a="band"===n?void 0!==a?a:o:1,"bandspace(".concat(r,", ").concat(kX(a),", ").concat(kX(i),") * ").concat(t,"_step")}function h3(t){return"childWidth"===t?"width":"childHeight"===t?"height":t}function f3(t,e){return kG(t).reduce(((r,n)=>{const o=t[n];return{...r,...D6(e,o,n,(t=>vX(t.value)))}}),{})}function p3(t,e){if(u7(e))return"theta"===t?"independent":"shared";if(s7(e))return"shared";if(l7(e))return xY(t)||"theta"===t||"radius"===t?"independent":"shared";throw new Error("invalid model type for resolve")}function b3(t,e){const r=t.scale[e],n=xY(e)?"axis":"legend";return"independent"===r?("shared"===t[n][e]&&fJ(function(t){return'Setting the scale to be independent for "'.concat(t,'" means we also have to set the guide (axis or legend) to be independent.')}(e)),"independent"):t[n][e]||"shared"}const g3=kG({aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1});class m3 extends H2{}const v3={symbols:function(t,e){var r,n,o,i;let{fieldOrDatumDef:a,model:c,channel:u,legendCmpt:l,legendType:s}=e;if("symbol"!==s)return;const{markDef:d,encoding:h,config:f,mark:p}=c,b=d.filled&&"trail"!==p;let g={...wX({},c,ZQ),...T6(c,{filled:b})};const m=null!==(r=l.get("symbolOpacity"))&&void 0!==r?r:f.legend.symbolOpacity,v=null!==(n=l.get("symbolFillColor"))&&void 0!==n?n:f.legend.symbolFillColor,y=null!==(o=l.get("symbolStrokeColor"))&&void 0!==o?o:f.legend.symbolStrokeColor,x=void 0===m?null!==(i=y3(h.opacity))&&void 0!==i?i:d.opacity:void 0;if(g.fill){var k;if("fill"===u||b&&u===a$)delete g.fill;else if(g.fill.field)if(v)delete g.fill;else g.fill=vX(null!==(k=f.legend.symbolBaseFillColor)&&void 0!==k?k:"black"),g.fillOpacity=vX(null!=x?x:1);else if(nc(g.fill)){var w,_,C;const t=null!==(w=null!==(_=x3(null!==(C=h.fill)&&void 0!==C?C:h.color))&&void 0!==_?_:d.fill)&&void 0!==w?w:b&&d.color;t&&(g.fill=vX(t))}}if(g.stroke)if("stroke"===u||!b&&u===a$)delete g.stroke;else if(g.stroke.field||y)delete g.stroke;else if(nc(g.stroke)){const t=LG(x3(h.stroke||h.color),d.stroke,b?d.color:void 0);t&&(g.stroke={value:t})}if(u!==h$){const t=LK(a)&&w3(c,l,a);t?g.opacity=[{test:t,...vX(null!=x?x:1)},vX(f.legend.unselectedOpacity)]:x&&(g.opacity=vX(x))}return g={...g,...t},xG(g)?void 0:g},gradient:function(t,e){var r;let{model:n,legendType:o,legendCmpt:i}=e;if("gradient"!==o)return;const{config:a,markDef:c,encoding:u}=n;let l={};const s=void 0===(null!==(r=i.get("gradientOpacity"))&&void 0!==r?r:a.legend.gradientOpacity)?y3(u.opacity)||c.opacity:void 0;s&&(l.opacity=vX(s));return l={...l,...t},xG(l)?void 0:l},labels:function(t,e){let{fieldOrDatumDef:r,model:n,channel:o,legendCmpt:i}=e;const a=n.legend(o)||{},c=n.config,u=LK(r)?w3(n,i,r):void 0,l=u?[{test:u,value:1},{value:c.legend.unselectedOpacity}]:void 0,{format:s,formatType:d}=a;let h;aK(d)?h=dK({fieldOrDatumDef:r,field:"datum.value",format:s,formatType:d,config:c}):void 0===s&&void 0===d&&c.customFormatTypes&&("quantitative"===r.type&&c.numberFormatType?h=dK({fieldOrDatumDef:r,field:"datum.value",format:c.numberFormat,formatType:c.numberFormatType,config:c}):"temporal"===r.type&&c.timeFormatType&&LK(r)&&void 0===r.timeUnit&&(h=dK({fieldOrDatumDef:r,field:"datum.value",format:c.timeFormat,formatType:c.timeFormatType,config:c})));const f={...l?{opacity:l}:{},...h?{text:h}:{},...t};return xG(f)?void 0:f},entries:function(t,e){let{legendCmpt:r}=e;const n=r.get("selections");return null!=n&&n.length?{...t,fill:{value:"transparent"}}:t}};function y3(t){return k3(t,((t,e)=>Math.max(t,e.value)))}function x3(t){return k3(t,((t,e)=>LG(t,e.value)))}function k3(t,e){return function(t){const e=null==t?void 0:t.condition;return!!e&&(nc(e)||WK(e))}(t)?jc(t.condition).reduce(e,t.value):WK(t)?t.value:void 0}function w3(t,e,r){const n=e.get("selections");if(null==n||!n.length)return;const o=uu(r.field);return n.map((t=>{const e=uu(OG(t)+y5);return"(!length(data(".concat(e,")) || (").concat(t,"[").concat(o,"] && indexof(").concat(t,"[").concat(o,"], datum.value) >= 0))")})).join(" || ")}const _3={direction:t=>{let{direction:e}=t;return e},format:t=>{let{fieldOrDatumDef:e,legend:r,config:n}=t;const{format:o,formatType:i}=r;return hK(e,e.type,o,i,n,!1)},formatType:t=>{let{legend:e,fieldOrDatumDef:r,scaleType:n}=t;const{formatType:o}=e;return fK(o,r,n)},gradientLength:t=>{var e,r;const{legend:n,legendConfig:o}=t;return null!==(e=null!==(r=n.gradientLength)&&void 0!==r?r:o.gradientLength)&&void 0!==e?e:function(t){let{legendConfig:e,model:r,direction:n,orient:o,scaleType:i}=t;const{gradientHorizontalMaxLength:a,gradientHorizontalMinLength:c,gradientVerticalMaxLength:u,gradientVerticalMinLength:l}=e;if(pQ(i))return"horizontal"===n?"top"===o||"bottom"===o?E3(r,"width",c,a):c:E3(r,"height",l,u);return}(t)},labelOverlap:t=>{var e,r;let{legend:n,legendConfig:o,scaleType:i}=t;return null!==(e=null!==(r=n.labelOverlap)&&void 0!==r?r:o.labelOverlap)&&void 0!==e?e:function(t){if(sG(["quantile","threshold","log","symlog"],t))return"greedy";return}(i)},symbolType:t=>{var e;let{legend:r,markDef:n,channel:o,encoding:i}=t;return null!==(e=r.symbolType)&&void 0!==e?e:function(t,e,r,n){if("shape"!==e){var o;const t=null!==(o=x3(r))&&void 0!==o?o:n;if(t)return t}switch(t){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}(n.type,o,i.shape,n.shape)},title:t=>{let{fieldOrDatumDef:e,config:r}=t;return e1(e,r,{allowDisabling:!0})},type:t=>{let{legendType:e,scaleType:r,channel:n}=t;if(N$(n)&&pQ(r)){if("gradient"===e)return}else if("symbol"===e)return;return e},values:t=>{let{fieldOrDatumDef:e,legend:r}=t;return function(t,e){const r=t.values;if(nc(r))return p1(e,r);if(lX(r))return r;return}(r,e)}};function C3(t){const{legend:e}=t;return LG(e.type,function(t){let{channel:e,timeUnit:r,scaleType:n}=t;if(N$(e)){if(sG(["quarter","month","day"],r))return"symbol";if(pQ(n))return"gradient"}return"symbol"}(t))}function O3(t){var e,r;let{legendConfig:n,legendType:o,orient:i,legend:a}=t;return null!==(e=null!==(r=a.direction)&&void 0!==r?r:n[o?"gradientDirection":"symbolDirection"])&&void 0!==e?e:function(t,e){switch(t){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return"gradient"===e?"horizontal":void 0}}(i,o)}function E3(t,e,r,n){const o=t.getSizeSignalRef(e).signal;return{signal:"clamp(".concat(o,", ").concat(r,", ").concat(n,")")}}function D3(t){const e=c7(t)?function(t){const{encoding:e}=t,r={};for(const n of[a$,...s0]){const o=a1(e[n]);o&&t.getScaleComponent(n)&&(n===l$&&LK(o)&&o.type===tQ||(r[n]=S3(t,n)))}return r}(t):function(t){const{legends:e,resolve:r}=t.component;for(const n of t.children){D3(n);for(const o of kG(n.component.legends))r.legend[o]=b3(t.component.resolve,o),"shared"===r.legend[o]&&(e[o]=A3(e[o],n.component.legends[o]),e[o]||(r.legend[o]="independent",delete e[o]))}for(const n of kG(e))for(const e of t.children)e.component.legends[n]&&"shared"===r.legend[n]&&delete e.component.legends[n];return e}(t);return t.component.legends=e,e}function j3(t,e,r,n){switch(e){case"disable":return void 0!==r;case"values":return!(null==r||!r.values);case"title":if("title"===e&&t===(null==n?void 0:n.title))return!0}return t===(r||{})[e]}function S3(t,e){var r,n,o;let i=t.legend(e);const{markDef:a,encoding:c,config:u}=t,l=u.legend,s=new m3({},function(t,e){const r=t.scaleName(e);if("trail"===t.mark){if("color"===e)return{stroke:r};if("size"===e)return{strokeWidth:r}}return"color"===e?t.markDef.filled?{fill:r}:{stroke:r}:{[e]:r}}(t,e));!function(t,e,r){var n;const o=null===(n=t.fieldDef(e))||void 0===n?void 0:n.field;for(const u of wG(null!==(i=t.component.selection)&&void 0!==i?i:{})){var i,a;const t=null!==(a=u.project.hasField[o])&&void 0!==a?a:u.project.hasChannel[e];if(t&&s5.defined(u)){var c;const e=null!==(c=r.get("selections"))&&void 0!==c?c:[];e.push(u.name),r.set("selections",e,!1),t.hasLegend=!0}}}(t,e,s);const d=void 0!==i?!i:l.disable;if(s.set("disable",d,void 0!==i),d)return s;i=i||{};const h=t.getScaleComponent(e).get("type"),f=a1(c[e]),p=LK(f)?null===(r=NJ(f.timeUnit))||void 0===r?void 0:r.unit:void 0,b=i.orient||u.legend.orient||"right",g=C3({legend:i,channel:e,timeUnit:p,scaleType:h}),m={legend:i,channel:e,model:t,markDef:a,encoding:c,fieldOrDatumDef:f,legendConfig:l,config:u,scaleType:h,orient:b,legendType:g,direction:O3({legend:i,legendType:g,orient:b,legendConfig:l})};for(const C of g3){if("gradient"===g&&C.startsWith("symbol")||"symbol"===g&&C.startsWith("gradient"))continue;const r=C in _3?_3[C](m):i[C];if(void 0!==r){const n=j3(r,C,i,t.fieldDef(e));(n||void 0===u.legend[C])&&s.set(C,r,n)}}const v=null!==(n=null===(o=i)||void 0===o?void 0:o.encoding)&&void 0!==n?n:{},y=s.get("selections"),x={},k={fieldOrDatumDef:f,model:t,channel:e,legendCmpt:s,legendType:g};for(const C of["labels","legend","title","symbols","gradient","entries"]){var w;const e=f3(null!==(w=v[C])&&void 0!==w?w:{},t),r=C in v3?v3[C](e,k):e;void 0===r||xG(r)||(x[C]={...null!=y&&y.length&&LK(f)?{name:"".concat(OG(f.field),"_legend_").concat(C)}:{},...null!=y&&y.length?{interactive:!!y}:{},update:r})}var _;xG(x)||s.set("encode",x,!(null===(_=i)||void 0===_||!_.encoding));return s}function A3(t,e){if(!t)return e.clone();const r=t.getWithExplicit("orient"),n=e.getWithExplicit("orient");if(r.explicit&&n.explicit&&r.value!==n.value)return;let o=!1;for(const c of g3){const r=$2(t.getWithExplicit(c),e.getWithExplicit(c),c,"legend",((t,e)=>{switch(c){case"symbolType":return M3(t,e);case"title":return MX(t,e);case"type":return o=!0,V2("symbol")}return G2(t,e,c,"legend")}));t.setWithExplicit(c,r)}var i,a;o&&(null!==(i=t.implicit)&&void 0!==i&&null!==(i=i.encode)&&void 0!==i&&i.gradient&&DG(t.implicit,["encode","gradient"]),null!==(a=t.explicit)&&void 0!==a&&null!==(a=a.encode)&&void 0!==a&&a.gradient&&DG(t.explicit,["encode","gradient"]));return t}function M3(t,e){return"circle"===e.value?e:t}function N3(t){const e=t.component.legends,r={};for(const o of kG(e)){const n=t.getScaleComponent(o),i=cG(n.get("domains"));if(r[i])for(const t of r[i]){A3(t,e[o])||r[i].push(e[o])}else r[i]=[e[o].clone()]}const n=wG(r).flat().map((e=>function(t,e){var r;const{disable:n,labelExpr:o,selections:i,...a}=t.combine();if(n)return;!1===e.aria&&null==a.aria&&(a.aria=!1);if(null!==(r=a.encode)&&void 0!==r&&r.symbols){const t=a.encode.symbols.update;!t.fill||"transparent"===t.fill.value||t.stroke||a.stroke||(t.stroke={value:"transparent"});for(const e of s0)a[e]&&delete t[e]}a.title||delete a.title;if(void 0!==o){var c;let t=o;null!==(c=a.encode)&&void 0!==c&&null!==(c=c.labels)&&void 0!==c&&c.update&&lX(a.encode.labels.update.text)&&(t=zG(o,"datum.label",a.encode.labels.update.text.signal)),function(t,e,r,n){var o,i,a,c,u;null!==(o=t.encode)&&void 0!==o||(t.encode={}),null!==(i=(c=t.encode)[e])&&void 0!==i||(c[e]={}),null!==(a=(u=t.encode[e]).update)&&void 0!==a||(u.update={}),t.encode[e].update[r]=n}(a,"labels","text",{signal:t})}return a}(e,t.config))).filter((t=>void 0!==t));return n}function z3(t){return s7(t)||l7(t)?function(t){return t.children.reduce(((t,e)=>t.concat(e.assembleProjections())),P3(t))}(t):P3(t)}function P3(t){const e=t.component.projection;if(!e||e.merged)return[];const r=e.combine(),{name:n}=r;if(e.data){const o={signal:"[".concat(e.size.map((t=>t.signal)).join(", "),"]")},i=e.data.reduce(((e,r)=>{const n=lX(r)?r.signal:"data('".concat(t.lookupDataSource(r),"')");return sG(e,n)||e.push(n),e}),[]);if(i.length<=0)throw new Error("Projection's fit didn't find any data sources");return[{name:n,size:o,fit:{signal:i.length>1?"[".concat(i.join(", "),"]"):i[0]},...r}]}return[{name:n,translate:{signal:"[width / 2, height / 2]"},...r}]}const F3=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class L3 extends H2{constructor(t,e,r,n){super({...e},{name:t}),this.specifiedProjection=e,this.size=r,this.data=n,this.merged=!1}get isFit(){return!!this.data}}function T3(t){t.component.projection=c7(t)?function(t){if(t.hasProjection){var e;const r=aX(t.specifiedProjection),n=!(r&&(null!=r.scale||null!=r.translate)),o=n?[t.getSizeSignalRef("width"),t.getSizeSignalRef("height")]:void 0,i=n?function(t){const e=[],{encoding:r}=t;for(const n of[[n$,r$],[i$,o$]])(a1(r[n[0]])||a1(r[n[1]]))&&e.push({signal:t.getName("geojson_".concat(e.length))});t.channelHasField(l$)&&t.typedFieldDef(l$).type===tQ&&e.push({signal:t.getName("geojson_".concat(e.length))});0===e.length&&e.push(t.requestDataName(n6.Main));return e}(t):void 0,a=new L3(t.projectionName(!0),{...null!==(e=aX(t.config.projection))&&void 0!==e?e:{},...null!=r?r:{}},o,i);return a.get("type")||a.set("type","equalEarth",!1),a}return}(t):function(t){if(0===t.children.length)return;let e;for(const n of t.children)T3(n);const r=hG(t.children,(t=>{const r=t.component.projection;if(r){if(e){const t=function(t,e){const r=hG(F3,(r=>!Hc(t.explicit,r)&&!Hc(e.explicit,r)||!!(Hc(t.explicit,r)&&Hc(e.explicit,r)&&rG(t.get(r),e.get(r))))),n=rG(t.size,e.size);if(n){if(r)return t;if(rG(t.explicit,{}))return e;if(rG(e.explicit,{}))return t}return null}(e,r);return t&&(e=t),!!t}return e=r,!0}return!0}));if(e&&r){const r=t.projectionName(!0),n=new L3(r,e.specifiedProjection,e.size,nG(e.data));for(const e of t.children){const t=e.component.projection;t&&(t.isFit&&n.data.push(...e.component.projection.data),e.renameProjection(t.get("name"),r),t.merged=!0)}return n}return}(t)}function R3(t,e,r,n){if(b1(e,r)){var o,i;const a=c7(t)&&null!==(o=null!==(i=t.axis(r))&&void 0!==i?i:t.legend(r))&&void 0!==o?o:{},c=XK(e,{expr:"datum"}),u=XK(e,{expr:"datum",binSuffix:"end"});return{formulaAs:XK(e,{binSuffix:"range",forAs:!0}),formula:mK(c,u,a.format,a.formatType,n)}}return{}}function B3(t,e){return"".concat(KY(t),"_").concat(e)}function I3(t,e,r){var n;const o=B3(null!==(n=s1(r,void 0))&&void 0!==n?n:{},e);return t.getName("".concat(o,"_bins"))}function U3(t,e,r){let n,o;n=function(t){return"as"in t}(t)?tu(t.as)?[t.as,"".concat(t.as,"_end")]:[t.as[0],t.as[1]]:[XK(t,{forAs:!0}),XK(t,{binSuffix:"end",forAs:!0})];const i={...s1(e,void 0)},a=B3(i,t.field),{signal:c,extentSignal:u}=function(t,e){return{signal:t.getName("".concat(e,"_bins")),extentSignal:t.getName("".concat(e,"_extent"))}}(r,a);if(nX(i.extent)){const t=i.extent;o=N5(r,t.param,t),delete i.extent}return{key:a,binComponent:{bin:i,field:t.field,as:[n],...c?{signal:c}:{},...u?{extentSignal:u}:{},...o?{span:o}:{}}}}class q3 extends s6{clone(){return new q3(null,nG(this.bins))}constructor(t,e){super(t),this.bins=e}static makeFromEncoding(t,e){const r=e.reduceFieldDef(((t,r,n)=>{if(HK(r)&&tX(r.bin)){const{key:o,binComponent:i}=U3(r,r.bin,e);t[o]={...i,...t[o],...R3(e,r,n,e.config)}}return t}),{});return xG(r)?null:new q3(t,r)}static makeFromTransform(t,e,r){const{key:n,binComponent:o}=U3(e,e.bin,r);return new q3(t,{[n]:o})}merge(t,e){for(const r of kG(t.bins))r in this.bins?(e(t.bins[r].signal,this.bins[r].signal),this.bins[r].as=bG([...this.bins[r].as,...t.bins[r].as],uG)):this.bins[r]=t.bins[r];for(const r of t.children)t.removeChild(r),r.parent=this;t.remove()}producedFields(){return new Set(wG(this.bins).map((t=>t.as)).flat(2))}dependentFields(){return new Set(wG(this.bins).map((t=>t.field)))}hash(){return"Bin ".concat(uG(this.bins))}assemble(){return wG(this.bins).flatMap((t=>{const e=[],[r,...n]=t.as,{extent:o,...i}=t.bin,a={type:"bin",field:NG(t.field),as:r,signal:t.signal,...nX(o)?{extent:null}:{extent:o},...t.span?{span:{signal:"span(".concat(t.span,")")}}:{},...i};!o&&t.extentSignal&&(e.push({type:"extent",field:NG(t.field),signal:t.extentSignal}),a.extent={signal:t.extentSignal}),e.push(a);for(const c of n)for(let t=0;t<2;t++)e.push({type:"formula",expr:XK({field:r[t]},{expr:"datum"}),as:c[t]});return t.formula&&e.push({type:"formula",expr:t.formula,as:t.formulaAs}),e}))}}function H3(t,e,r,n){var o;const i=c7(n)?n.encoding[X$(e)]:void 0;if(HK(r)&&c7(n)&&MK(r,i,n.markDef,n.config))t.add(XK(r,{})),t.add(XK(r,{suffix:"end"})),r.bin&&b1(r,e)&&t.add(XK(r,{binSuffix:"range"}));else if(S$(e)){const r=j$(e);t.add(n.getName(r))}else t.add(XK(r));return VK(r)&&function(t){return oc(t)&&"field"in t}(null===(o=r.scale)||void 0===o?void 0:o.range)&&t.add(r.scale.range.field),t}class W3 extends s6{clone(){return new W3(null,new Set(this.dimensions),nG(this.measures))}constructor(t,e,r){super(t),this.dimensions=e,this.measures=r}get groupBy(){return this.dimensions}static makeFromEncoding(t,e){let r=!1;e.forEachFieldDef((t=>{t.aggregate&&(r=!0)}));const n={},o=new Set;return r?(e.forEachFieldDef(((t,r)=>{const{aggregate:i,field:a}=t;if(i)if("count"===i){var c;null!==(c=n["*"])&&void 0!==c||(n["*"]={}),n["*"].count=new Set([XK(t,{forAs:!0})])}else{if(ZY(i)||GY(i)){var u;const t=ZY(i)?"argmin":"argmax",e=i[t];null!==(u=n[e])&&void 0!==u||(n[e]={}),n[e][t]=new Set([XK({op:t,field:e},{forAs:!0})])}else{var l;null!==(l=n[a])&&void 0!==l||(n[a]={}),n[a][i]=new Set([XK(t,{forAs:!0})])}var s;if(RY(r)&&"unaggregated"===e.scaleDomain(r))null!==(s=n[a])&&void 0!==s||(n[a]={}),n[a].min=new Set([XK({field:a,aggregate:"min"},{forAs:!0})]),n[a].max=new Set([XK({field:a,aggregate:"max"},{forAs:!0})])}else H3(o,r,t,e)})),o.size+kG(n).length===0?null:new W3(t,o,n)):null}static makeFromTransform(t,e){const r=new Set,n={};for(const c of e.aggregate){const{op:t,field:e,as:r}=c;var o,i;if(t)if("count"===t)null!==(o=n["*"])&&void 0!==o||(n["*"]={}),n["*"].count=new Set([r||XK(c,{forAs:!0})]);else null!==(i=n[e])&&void 0!==i||(n[e]={}),n[e][t]=new Set([r||XK(c,{forAs:!0})])}for(const c of null!==(a=e.groupby)&&void 0!==a?a:[]){var a;r.add(c)}return r.size+kG(n).length===0?null:new W3(t,r,n)}merge(t){return gG(this.dimensions,t.dimensions)?(function(t,e){for(const n of kG(e)){const o=e[n];for(const e of kG(o)){var r;n in t?t[n][e]=new Set([...null!==(r=t[n][e])&&void 0!==r?r:[],...o[e]]):t[n]={[e]:o[e]}}}}(this.measures,t.measures),!0):(function(){hJ.debug(...arguments)}("different dimensions, cannot merge"),!1)}addDimensions(t){t.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...kG(this.measures)])}producedFields(){const t=new Set;for(const e of kG(this.measures))for(const r of kG(this.measures[e])){const n=this.measures[e][r];0===n.size?t.add("".concat(r,"_").concat(e)):n.forEach(t.add,t)}return t}hash(){return"Aggregate ".concat(uG({dimensions:this.dimensions,measures:this.measures}))}assemble(){const t=[],e=[],r=[];for(const n of kG(this.measures))for(const o of kG(this.measures[n]))for(const i of this.measures[n][o])r.push(i),t.push(o),e.push("*"===n?null:NG(n));return{type:"aggregate",groupby:[...this.dimensions].map(NG),ops:t,fields:e,as:r}}}class V3 extends s6{constructor(t,e,r,n){super(t),this.model=e,this.name=r,this.data=n;for(const o of P$){const t=e.facet[o];if(t){const{bin:r,sort:n}=t;this[o]={name:e.getName("".concat(o,"_domain")),fields:[XK(t),...tX(r)?[XK(t,{binSuffix:"end"})]:[]],...wK(n)?{sortField:n}:nc(n)?{sortIndexField:Z5(t,o)}:{}}}}this.childModel=e.child}hash(){let t="Facet";for(const e of P$)this[e]&&(t+=" ".concat(e.charAt(0),":").concat(uG(this[e])));return t}get fields(){const t=[];for(const r of P$){var e;null!==(e=this[r])&&void 0!==e&&e.fields&&t.push(...this[r].fields)}return t}dependentFields(){const t=new Set(this.fields);for(const e of P$)this[e]&&(this[e].sortField&&t.add(this[e].sortField.field),this[e].sortIndexField&&t.add(this[e].sortIndexField));return t}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){const t={};for(const e of yY){const r=this.childModel.component.scales[e];if(r&&!r.merged){const n=r.get("type"),o=r.get("range");if(hQ(n)&&sX(o)){const r=R4(B4(this.childModel,e));r?t[e]=r:fJ(TX(e))}}}return t}assembleRowColumnHeaderData(t,e,r){const n={row:"y",column:"x",facet:void 0}[t],o=[],i=[],a=[];n&&r&&r[n]&&(e?(o.push("distinct_".concat(r[n])),i.push("max")):(o.push(r[n]),i.push("distinct")),a.push("distinct_".concat(r[n])));const{sortField:c,sortIndexField:u}=this[t];if(c){const{op:t=vK,field:e}=c;o.push(e),i.push(t),a.push(XK(c,{forAs:!0}))}else u&&(o.push(u),i.push("max"),a.push(u));return{name:this[t].name,source:null!=e?e:this.data,transform:[{type:"aggregate",groupby:this[t].fields,...o.length?{fields:o,ops:i,as:a}:{}}]}}assembleFacetHeaderData(t){const{columns:e}=this.model.layout,{layoutHeaders:r}=this.model.component,n=[],o={};for(const l of X5){for(const t of J5){var i;const e=null!==(i=r[l]&&r[l][t])&&void 0!==i?i:[];for(const t of e){var a;if((null===(a=t.axes)||void 0===a?void 0:a.length)>0){o[l]=!0;break}}}if(o[l]){const t='length(data("'.concat(this.facet.name,'"))'),r="row"===l?e?{signal:"ceil(".concat(t," / ").concat(e,")")}:1:e?{signal:"min(".concat(t,", ").concat(e,")")}:{signal:t};n.push({name:"".concat(this.facet.name,"_").concat(l),transform:[{type:"sequence",start:0,stop:r}]})}}const{row:c,column:u}=o;return(c||u)&&n.unshift(this.assembleRowColumnHeaderData("facet",null,t)),n}assemble(){const t=[];let e=null;const r=this.getChildIndependentFieldsWithStep(),{column:n,row:o,facet:i}=this;if(n&&o&&(r.x||r.y)){var a,c;e="cross_".concat(this.column.name,"_").concat(this.row.name);const n=[].concat(null!==(a=r.x)&&void 0!==a?a:[],null!==(c=r.y)&&void 0!==c?c:[]),o=n.map((()=>"distinct"));t.push({name:e,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:n,ops:o}]})}for(const u of[WG,HG])this[u]&&t.push(this.assembleRowColumnHeaderData(u,e,r));if(i){const e=this.assembleFacetHeaderData(r);e&&t.push(...e)}return t}}function Z3(t){return t.startsWith("'")&&t.endsWith("'")||t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1):t}function G3(t){const e={};return tG(t.filter,(t=>{if(HJ(t)){let n=null;if(LJ(t))n=gX(t.equal);else if(RJ(t))n=gX(t.lte);else if(TJ(t))n=gX(t.lt);else if(BJ(t))n=gX(t.gt);else if(IJ(t))n=gX(t.gte);else if(UJ(t))n=t.range[0];else if(qJ(t)){var r;n=(null!==(r=t.oneOf)&&void 0!==r?r:t.in)[0]}n&&(pJ(n)?e[t.field]="date":Qc(n)?e[t.field]="number":tu(n)&&(e[t.field]="string")),t.timeUnit&&(e[t.field]="date")}})),e}function $3(t){const e={};function r(t){var r;h1(t)?e[t.field]="date":"quantitative"===t.type&&(tu(r=t.aggregate)&&sG(["min","max"],r))?e[t.field]="number":FG(t.field)>1?t.field in e||(e[t.field]="flatten"):VK(t)&&wK(t.sort)&&FG(t.sort.field)>1&&(t.sort.field in e||(e[t.sort.field]="flatten"))}if((c7(t)||u7(t))&&t.forEachFieldDef(((e,n)=>{if(HK(e))r(e);else{const o=$$(n),i=t.fieldDef(o);r({...e,type:i.type})}})),c7(t)){const{mark:r,markDef:n,encoding:o}=t;if(qQ(r)&&!t.encoding.order){const t=o["horizontal"===n.orient?"y":"x"];LK(t)&&"quantitative"===t.type&&!(t.field in e)&&(e[t.field]="number")}}return e}class Y3 extends s6{clone(){return new Y3(null,nG(this._parse))}constructor(t,e){super(t),this._parse=e}hash(){return"Parse ".concat(uG(this._parse))}static makeExplicit(t,e,r){var n;let o={};const i=e.data;return!K2(i)&&null!=i&&null!==(n=i.format)&&void 0!==n&&n.parse&&(o=i.format.parse),this.makeWithAncestors(t,o,{},r)}static makeWithAncestors(t,e,r,n){for(const a of kG(r)){const t=n.getWithExplicit(a);void 0!==t.value&&(t.explicit||t.value===r[a]||"derived"===t.value||"flatten"===r[a]?delete r[a]:fJ(HX(a,r[a],t.value)))}for(const a of kG(e)){const t=n.get(a);void 0!==t&&(t===e[a]?delete e[a]:fJ(HX(a,e[a],t)))}const o=new H2(e,r);n.copyAll(o);const i={};for(const a of kG(o.combine())){const t=o.get(a);null!==t&&(i[a]=t)}return 0===kG(i).length||n.parseNothing?null:new Y3(t,i)}get parse(){return this._parse}merge(t){this._parse={...this._parse,...t.parse},t.remove()}assembleFormatParse(){const t={};for(const e of kG(this._parse)){const r=this._parse[e];1===FG(e)&&(t[e]=r)}return t}producedFields(){return new Set(kG(this._parse))}dependentFields(){return new Set(kG(this._parse))}assembleTransforms(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return kG(this._parse).filter((e=>!t||FG(e)>1)).map((t=>{const e=function(t,e){const r=SG(t);if("number"===e)return"toNumber(".concat(r,")");if("boolean"===e)return"toBoolean(".concat(r,")");if("string"===e)return"toString(".concat(r,")");if("date"===e)return"toDate(".concat(r,")");if("flatten"===e)return r;if(e.startsWith("date:")){const t=Z3(e.slice(5,e.length));return"timeParse(".concat(r,",'").concat(t,"')")}if(e.startsWith("utc:")){const t=Z3(e.slice(4,e.length));return"utcParse(".concat(r,",'").concat(t,"')")}return fJ('Unrecognized parse "'.concat(e,'".')),null}(t,this._parse[t]);if(!e)return null;return{type:"formula",expr:e,as:PG(t)}})).filter((t=>null!==t))}}class X3 extends s6{clone(){return new X3(null)}constructor(t){super(t)}dependentFields(){return new Set}producedFields(){return new Set([d0])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:d0}}}class J3 extends s6{clone(){return new J3(null,this.params)}constructor(t,e){super(t),this.params=e}dependentFields(){return new Set}producedFields(){}hash(){return"Graticule ".concat(uG(this.params))}assemble(){return{type:"graticule",...!0===this.params?{}:this.params}}}class Q3 extends s6{clone(){return new Q3(null,this.params)}constructor(t,e){super(t),this.params=e}dependentFields(){return new Set}producedFields(){var t;return new Set([null!==(t=this.params.as)&&void 0!==t?t:"data"])}hash(){return"Hash ".concat(uG(this.params))}assemble(){return{type:"sequence",...this.params}}}class K3 extends s6{constructor(t){var e;let r;if(super(null),null!==(e=t)&&void 0!==e||(t={name:"source"}),K2(t)||(r=t.format?{...aG(t.format,["parse"])}:{}),J2(t))this._data={values:t.values};else if(X2(t)){if(this._data={url:t.url},!r.type){let e=/(?:\.([^.]+))?$/.exec(t.url)[1];sG(["json","csv","tsv","dsv","topojson"],e)||(e="json"),r.type=e}}else e6(t)?this._data={values:[{type:"Sphere"}]}:(Q2(t)||K2(t))&&(this._data={});this._generator=K2(t),t.name&&(this._name=t.name),r&&!xG(r)&&(this._data.format=r)}dependentFields(){return new Set}producedFields(){}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(t){this._name=t}set parent(t){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return{name:this._name,...this._data,transform:[]}}}var t4,e4=function(t,e,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(t,r):o?o.value=r:e.set(t,r),r},r4=function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function n4(t){return t instanceof K3||t instanceof J3||t instanceof Q3}class o4{constructor(){t4.set(this,void 0),e4(this,t4,!1,"f")}setModified(){e4(this,t4,!0,"f")}get modifiedFlag(){return r4(this,t4,"f")}}t4=new WeakMap;class i4 extends o4{getNodeDepths(t,e,r){r.set(t,e);for(const n of t.children)this.getNodeDepths(n,e+1,r);return r}optimize(t){const e=[...this.getNodeDepths(t,0,new Map).entries()].sort(((t,e)=>e[1]-t[1]));for(const r of e)this.run(r[0]);return this.modifiedFlag}}class a4 extends o4{optimize(t){this.run(t);for(const e of t.children)this.optimize(e);return this.modifiedFlag}}class c4 extends a4{mergeNodes(t,e){const r=e.shift();for(const n of e)t.removeChild(n),n.parent=r,n.remove()}run(t){const e=t.children.map((t=>t.hash())),r={};for(let n=0;n1&&(this.setModified(),this.mergeNodes(t,r[n]))}}class u4 extends a4{constructor(t){super(),this.requiresSelectionId=t&&O5(t)}run(t){t instanceof X3&&(this.requiresSelectionId&&(n4(t.parent)||t.parent instanceof W3||t.parent instanceof Y3)||(this.setModified(),t.remove()))}}class l4 extends o4{optimize(t){return this.run(t,new Set),this.modifiedFlag}run(t,e){let r=new Set;t instanceof p6&&(r=t.producedFields(),mG(r,e)&&(this.setModified(),t.removeFormulas(e),0===t.producedFields.length&&t.remove()));for(const n of t.children)this.run(n,new Set([...e,...r]))}}class s4 extends a4{constructor(){super()}run(t){t instanceof d6&&!t.isRequired()&&(this.setModified(),t.remove())}}class d4 extends i4{run(t){if(!(n4(t)||t.numChildren()>1))for(const e of t.children)if(e instanceof Y3)if(t instanceof Y3)this.setModified(),t.merge(e);else{if(yG(t.producedFields(),e.dependentFields()))continue;this.setModified(),e.swapWithParent()}}}class h4 extends i4{run(t){const e=[...t.children],r=t.children.filter((t=>t instanceof Y3));if(t.numChildren()>1&&r.length>=1){const n={},o=new Set;for(const t of r){const e=t.parse;for(const t of kG(e))t in n?n[t]!==e[t]&&o.add(t):n[t]=e[t]}for(const t of o)delete n[t];if(!xG(n)){this.setModified();const r=new Y3(t,n);for(const o of e){if(o instanceof Y3)for(const t of kG(n))delete o.parse[t];t.removeChild(o),o.parent=r,o instanceof Y3&&0===kG(o.parse).length&&o.remove()}}}}}class f4 extends i4{run(t){t instanceof d6||t.numChildren()>0||t instanceof V3||t instanceof K3||(this.setModified(),t.remove())}}class p4 extends i4{run(t){const e=t.children.filter((t=>t instanceof p6)),r=e.pop();for(const n of e)this.setModified(),r.merge(n)}}class b4 extends i4{run(t){const e=t.children.filter((t=>t instanceof W3)),r={};for(const n of e){const t=uG(n.groupBy);t in r||(r[t]=[]),r[t].push(n)}for(const n of kG(r)){const e=r[n];if(e.length>1){const r=e.pop();for(const n of e)r.merge(n)&&(t.removeChild(n),n.parent=r,n.remove(),this.setModified())}}}}class g4 extends i4{constructor(t){super(),this.model=t}run(t){const e=!(n4(t)||t instanceof A5||t instanceof Y3||t instanceof X3),r=[],n=[];for(const o of t.children)o instanceof q3&&(e&&!yG(t.producedFields(),o.dependentFields())?r.push(o):n.push(o));if(r.length>0){const e=r.pop();for(const t of r)e.merge(t,this.model.renameSignal.bind(this.model));this.setModified(),t instanceof q3?t.merge(e,this.model.renameSignal.bind(this.model)):e.swapWithParent()}if(n.length>1){const t=n.pop();for(const e of n)t.merge(e,this.model.renameSignal.bind(this.model));this.setModified()}}}class m4 extends i4{run(t){const e=[...t.children];if(!dG(e,(t=>t instanceof d6))||t.numChildren()<=1)return;const r=[];let n;for(const o of e)if(o instanceof d6){let e=o;for(;1===e.numChildren();){const[t]=e.children;if(!(t instanceof d6))break;e=t}r.push(...e.children),n?(t.removeChild(o),o.parent=n.parent,n.parent.removeChild(n),n.parent=e,this.setModified()):n=e}else r.push(o);if(r.length){this.setModified();for(const t of r)t.parent.removeChild(t),t.parent=n}}}class v4 extends s6{clone(){return new v4(null,nG(this.transform))}constructor(t,e){super(t),this.transform=e}addDimensions(t){this.transform.groupby=bG(this.transform.groupby.concat(t),(t=>t))}dependentFields(){const t=new Set;return this.transform.groupby&&this.transform.groupby.forEach(t.add,t),this.transform.joinaggregate.map((t=>t.field)).filter((t=>void 0!==t)).forEach(t.add,t),t}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(t){var e;return null!==(e=t.as)&&void 0!==e?e:XK(t)}hash(){return"JoinAggregateTransform ".concat(uG(this.transform))}assemble(){const t=[],e=[],r=[];for(const o of this.transform.joinaggregate)e.push(o.op),r.push(this.getDefaultName(o)),t.push(void 0===o.field?null:o.field);const n=this.transform.groupby;return{type:"joinaggregate",as:r,ops:e,fields:t,...void 0!==n?{groupby:n}:{}}}}class y4 extends s6{clone(){return new y4(null,nG(this._stack))}constructor(t,e){super(t),this._stack=e}static makeFromTransform(t,e){const{stack:r,groupby:n,as:o,offset:i="zero"}=e,a=[],c=[];if(void 0!==e.sort)for(const s of e.sort)a.push(s.field),c.push(LG(s.order,"ascending"));const u={field:a,order:c};let l;return l=function(t){return nc(t)&&t.every((t=>tu(t)))&&t.length>1}(o)?o:tu(o)?[o,"".concat(o,"_end")]:["".concat(e.stack,"_start"),"".concat(e.stack,"_end")],new y4(t,{dimensionFieldDefs:[],stackField:r,groupby:n,offset:i,sort:u,facetby:[],as:l})}static makeFromEncoding(t,e){const r=e.stack,{encoding:n}=e;if(!r)return null;const{groupbyChannels:o,fieldChannel:i,offset:a,impute:c}=r,u=o.map((t=>i1(n[t]))).filter((t=>!!t)),l=function(t){return t.stack.stackBy.reduce(((t,e)=>{const r=XK(e.fieldDef);return r&&t.push(r),t}),[])}(e),s=e.encoding.order;let d;if(nc(s)||LK(s))d=jX(s);else{const t=NK(s)?s.sort:"y"===i?"descending":"ascending";d=l.reduce(((e,r)=>(e.field.push(r),e.order.push(t),e)),{field:[],order:[]})}return new y4(t,{dimensionFieldDefs:u,stackField:e.vgField(i),facetby:[],stackby:l,sort:d,offset:a,impute:c,as:[e.vgField(i,{suffix:"start",forAs:!0}),e.vgField(i,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(t){this._stack.facetby.push(...t)}dependentFields(){const t=new Set;return t.add(this._stack.stackField),this.getGroupbyFields().forEach(t.add,t),this._stack.facetby.forEach(t.add,t),this._stack.sort.field.forEach(t.add,t),t}producedFields(){return new Set(this._stack.as)}hash(){return"Stack ".concat(uG(this._stack))}getGroupbyFields(){const{dimensionFieldDefs:t,impute:e,groupby:r}=this._stack;return t.length>0?t.map((t=>t.bin?e?[XK(t,{binSuffix:"mid"})]:[XK(t,{}),XK(t,{binSuffix:"end"})]:[XK(t)])).flat():null!=r?r:[]}assemble(){const t=[],{facetby:e,dimensionFieldDefs:r,stackField:n,stackby:o,sort:i,offset:a,impute:c,as:u}=this._stack;if(c)for(const l of r){const{bandPosition:r=.5,bin:i}=l;if(i){const e=XK(l,{expr:"datum"}),n=XK(l,{expr:"datum",binSuffix:"end"});t.push({type:"formula",expr:"".concat(r,"*").concat(e,"+").concat(1-r,"*").concat(n),as:XK(l,{binSuffix:"mid",forAs:!0})})}t.push({type:"impute",field:n,groupby:[...o,...e],key:XK(l,{binSuffix:"mid"}),method:"value",value:0})}return t.push({type:"stack",groupby:[...this.getGroupbyFields(),...e],field:n,sort:i,as:u,offset:a}),t}}class x4 extends s6{clone(){return new x4(null,nG(this.transform))}constructor(t,e){super(t),this.transform=e}addDimensions(t){this.transform.groupby=bG(this.transform.groupby.concat(t),(t=>t))}dependentFields(){var t,e;const r=new Set;return(null!==(t=this.transform.groupby)&&void 0!==t?t:[]).forEach(r.add,r),(null!==(e=this.transform.sort)&&void 0!==e?e:[]).forEach((t=>r.add(t.field))),this.transform.window.map((t=>t.field)).filter((t=>void 0!==t)).forEach(r.add,r),r}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(t){var e;return null!==(e=t.as)&&void 0!==e?e:XK(t)}hash(){return"WindowTransform ".concat(uG(this.transform))}assemble(){const t=[],e=[],r=[],n=[];for(const d of this.transform.window)e.push(d.op),r.push(this.getDefaultName(d)),n.push(void 0===d.param?null:d.param),t.push(void 0===d.field?null:d.field);const o=this.transform.frame,i=this.transform.groupby;if(o&&null===o[0]&&null===o[1]&&e.every((t=>$Y(t))))return{type:"joinaggregate",as:r,ops:e,fields:t,...void 0!==i?{groupby:i}:{}};const a=[],c=[];if(void 0!==this.transform.sort)for(const d of this.transform.sort){var u;a.push(d.field),c.push(null!==(u=d.order)&&void 0!==u?u:"ascending")}const l={field:a,order:c},s=this.transform.ignorePeers;return{type:"window",params:n,as:r,ops:e,fields:t,sort:l,...void 0!==s?{ignorePeers:s}:{},...void 0!==i?{groupby:i}:{},...void 0!==o?{frame:o}:{}}}}function k4(t){if(t instanceof V3)if(1!==t.numChildren()||t.children[0]instanceof d6){const r=t.model.component.data.main;w4(r);const n=(e=t,function t(r){if(!(r instanceof V3)){const n=r.clone();if(n instanceof d6){const t=_4+n.getSource();n.setSource(t),e.model.component.data.outputNodes[t]=n}else(n instanceof W3||n instanceof y4||n instanceof x4||n instanceof v4)&&n.addDimensions(e.fields);for(const e of r.children.flatMap(t))e.parent=n;return[n]}return r.children.flatMap(t)}),o=t.children.map(n).flat();for(const t of o)t.parent=r}else{const e=t.children[0];(e instanceof W3||e instanceof y4||e instanceof x4||e instanceof v4)&&e.addDimensions(t.fields),e.swapWithParent(),k4(t)}else t.children.map(k4);var e}function w4(t){if(t instanceof d6&&t.type===n6.Main&&1===t.numChildren()){const e=t.children[0];e instanceof V3||(e.swapWithParent(),w4(t))}}const _4="scale_",C4=5;function O4(t){for(const e of t){for(const t of e.children)if(t.parent!==e)return!1;if(!O4(e.children))return!1}return!0}function E4(t,e){let r=!1;for(const n of e)r=t.optimize(n)||r;return r}function D4(t,e,r){let n=t.sources,o=!1;return o=E4(new s4,n)||o,o=E4(new u4(e),n)||o,n=n.filter((t=>t.numChildren()>0)),o=E4(new f4,n)||o,n=n.filter((t=>t.numChildren()>0)),r||(o=E4(new d4,n)||o,o=E4(new g4(e),n)||o,o=E4(new l4,n)||o,o=E4(new h4,n)||o,o=E4(new b4,n)||o,o=E4(new p4,n)||o,o=E4(new c4,n)||o,o=E4(new m4,n)||o),t.sources=n,o}class j4{constructor(t){Object.defineProperty(this,"signal",{enumerable:!0,get:t})}static fromName(t,e){return new j4((()=>t(e)))}}function S4(t){c7(t)?function(t){const e=t.component.scales;for(const r of kG(e)){const n=A4(t,r);if(e[r].setWithExplicit("domains",n),P4(t,r),t.component.data.isFaceted){let e=t;for(;!u7(e)&&e.parent;)e=e.parent;if("shared"===e.component.resolve.scale[r])for(const t of n.value)dX(t)&&(t.data=_4+t.data.replace(_4,""))}}}(t):function(t){for(const r of t.children)S4(r);const e=t.component.scales;for(const r of kG(e)){let n,o=null;for(const e of t.children){const t=e.component.scales[r];if(t){n=void 0===n?t.getWithExplicit("domains"):$2(n,t.getWithExplicit("domains"),"domains","scale",L4);const e=t.get("selectionExtent");o&&e&&o.param!==e.param&&fJ(UX),o=e}}e[r].setWithExplicit("domains",n),o&&e[r].set("selectionExtent",o,!0)}}(t)}function A4(t,e){const r=t.getScaleComponent(e).get("type"),{encoding:n}=t,o=function(t,e,r,n){if("unaggregated"===t){const{valid:t,reason:n}=F4(e,r);if(!t)return void fJ(n)}else if(void 0===t&&n.useUnaggregatedDomain){const{valid:t}=F4(e,r);if(t)return"unaggregated"}return t}(t.scaleDomain(e),t.typedFieldDef(e),r,t.config.scale);return o!==t.scaleDomain(e)&&(t.specifiedScales[e]={...t.specifiedScales[e],domain:o}),"x"===e&&a1(n.x2)?a1(n.x)?$2(N4(r,o,t,"x"),N4(r,o,t,"x2"),"domain","scale",L4):N4(r,o,t,"x2"):"y"===e&&a1(n.y2)?a1(n.y)?$2(N4(r,o,t,"y"),N4(r,o,t,"y2"),"domain","scale",L4):N4(r,o,t,"y2"):N4(r,o,t,e)}function M4(t,e,r){var n;const o=null===(n=NJ(r))||void 0===n?void 0:n.unit;return"temporal"===e||o?function(t,e,r){return t.map((t=>{const n=f1(t,{timeUnit:r,type:e});return{signal:"{data: ".concat(n,"}")}}))}(t,e,o):[t]}function N4(t,e,r,n){const{encoding:o}=r,i=a1(o[n]),{type:a}=i,c=i.timeUnit;if(function(t){return null==t?void 0:t.unionWith}(e)){const o=N4(t,void 0,r,n);return W2([...M4(e.unionWith,a,c),...o.value])}if(lX(e))return W2([e]);if(e&&"unaggregated"!==e&&!gQ(e))return W2(M4(e,a,c));const u=r.stack;if(u&&n===u.fieldChannel){if("normalize"===u.offset)return V2([[0,1]]);const t=r.requestDataName(n6.Main);return V2([{data:t,field:r.vgField(n,{suffix:"start"})},{data:t,field:r.vgField(n,{suffix:"end"})}])}const l=RY(n)&&LK(i)?function(t,e,r){if(!hQ(r))return;const n=t.fieldDef(e),o=n.sort;if(_K(o))return{op:"min",field:Z5(n,e),order:"ascending"};const{stack:i}=t,a=i?new Set([...i.groupbyFields,...i.stackBy.map((t=>t.fieldDef.field))]):void 0;if(wK(o)){return z4(o,i&&!a.has(o.field))}if(kK(o)){const{encoding:e,order:r}=o,n=t.fieldDef(e),{aggregate:c,field:u}=n,l=i&&!a.has(u);if(ZY(c)||GY(c))return z4({field:XK(n),order:r},l);if($Y(c)||!c)return z4({op:c,field:u,order:r},l)}else{if("descending"===o)return{op:"min",field:t.vgField(e),order:"descending"};if(sG(["ascending",void 0],o))return!0}return}(r,n,t):void 0;if(RK(i)){return V2(M4([i.datum],a,c))}const s=i;if("unaggregated"===e){const t=r.requestDataName(n6.Main),{field:e}=i;return V2([{data:t,field:XK({field:e,aggregate:"min"})},{data:t,field:XK({field:e,aggregate:"max"})}])}if(tX(s.bin)){if(hQ(t))return V2("bin-ordinal"===t?[]:[{data:CG(l)?r.requestDataName(n6.Main):r.requestDataName(n6.Raw),field:r.vgField(n,b1(s,n)?{binSuffix:"range"}:{}),sort:!0!==l&&oc(l)?l:{field:r.vgField(n,{}),op:"min"}}]);{const{bin:t}=s;if(tX(t)){const e=I3(r,s.field,t);return V2([new j4((()=>{const t=r.getSignalName(e);return"[".concat(t,".start, ").concat(t,".stop]")}))])}return V2([{data:r.requestDataName(n6.Main),field:r.vgField(n,{})}])}}if(s.timeUnit&&sG(["time","utc"],t)&&MK(s,c7(r)?r.encoding[X$(n)]:void 0,r.markDef,r.config)){const t=r.requestDataName(n6.Main);return V2([{data:t,field:r.vgField(n)},{data:t,field:r.vgField(n,{suffix:"end"})}])}return V2(l?[{data:CG(l)?r.requestDataName(n6.Main):r.requestDataName(n6.Raw),field:r.vgField(n),sort:l}]:[{data:r.requestDataName(n6.Main),field:r.vgField(n)}])}function z4(t,e){const{op:r,field:n,order:o}=t;return{op:null!=r?r:e?"sum":vK,...n?{field:NG(n)}:{},...o?{order:o}:{}}}function P4(t,e){var r;const n=t.component.scales[e],o=t.specifiedScales[e].domain,i=null===(r=t.fieldDef(e))||void 0===r?void 0:r.bin,a=gQ(o)&&o,c=rX(i)&&nX(i.extent)&&i.extent;(a||c)&&n.set("selectionExtent",null!=a?a:c,!0)}function F4(t,e){const{aggregate:r,type:n}=t;return r?tu(r)&&!QY.has(r)?{valid:!1,reason:nJ(r)}:"quantitative"===n&&"log"===e?{valid:!1,reason:oJ(t)}:{valid:!0}:{valid:!1,reason:rJ(t)}}function L4(t,e,r,n){return t.explicit&&e.explicit&&fJ(function(t,e,r,n){return"Conflicting ".concat(e.toString(),' property "').concat(t.toString(),'" (').concat(cG(r)," and ").concat(cG(n),"). Using the union of the two domains.")}(r,n,t.value,e.value)),{explicit:t.explicit,value:[...t.value,...e.value]}}function T4(t){const e=bG(t.map((t=>{if(dX(t)){const{sort:e,...r}=t;return r}return t})),uG),r=bG(t.map((t=>{if(dX(t)){const e=t.sort;return void 0===e||CG(e)||("op"in e&&"count"===e.op&&delete e.field,"ascending"===e.order&&delete e.order),e}})).filter((t=>void 0!==t)),uG);if(0===e.length)return;if(1===e.length){const e=t[0];if(dX(e)&&r.length>0){let t=r[0];if(r.length>1){fJ(cJ);const e=r.filter((t=>oc(t)&&"op"in t&&"min"!==t.op));t=!r.every((t=>oc(t)&&"op"in t))||1!==e.length||e[0]}else if(oc(t)&&"field"in t){const r=t.field;e.field===r&&(t=!t.order||{order:t.order})}return{...e,sort:t}}return e}const n=bG(r.map((t=>CG(t)||!("op"in t)||tu(t.op)&&t.op in VY?t:(fJ(function(t){return"Dropping sort property ".concat(cG(t),' as unioned domains only support boolean or op "count", "min", and "max".')}(t)),!0))),uG);let o;1===n.length?o=n[0]:n.length>1&&(fJ(cJ),o=!0);const i=bG(t.map((t=>dX(t)?t.data:null)),(t=>t));if(1===i.length&&null!==i[0]){return{data:i[0],fields:e.map((t=>t.field)),...o?{sort:o}:{}}}return{fields:e,...o?{sort:o}:{}}}function R4(t){if(dX(t)&&tu(t.field))return t.field;if(function(t){return!nc(t)&&"fields"in t&&!("data"in t)}(t)){let e;for(const r of t.fields)if(dX(r)&&tu(r.field))if(e){if(e!==r.field)return fJ("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),e}else e=r.field;return fJ("Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect."),e}if(function(t){return!nc(t)&&"fields"in t&&"data"in t}(t)){fJ("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");const e=t.fields[0];return tu(e)?e:void 0}}function B4(t,e){const r=t.component.scales[e].get("domains").map((e=>(dX(e)&&(e.data=t.lookupDataSource(e.data)),e)));return T4(r)}function I4(t){return s7(t)||l7(t)?t.children.reduce(((t,e)=>t.concat(I4(e))),U4(t)):U4(t)}function U4(t){return kG(t.component.scales).reduce(((e,r)=>{const n=t.component.scales[r];if(n.merged)return e;const o=n.combine(),{name:i,type:a,selectionExtent:c,domains:u,range:l,reverse:s,...d}=o,h=function(t,e,r,n){if(xY(r)){if(sX(t))return{step:{signal:"".concat(e,"_step")}}}else if(oc(t)&&dX(t))return{...t,data:n.lookupDataSource(t.data)};return t}(o.range,i,r,t),f=B4(t,r),p=c?function(t,e,r,n){const o=N5(t,e.param,e);return{signal:fQ(r.get("type"))&&nc(n)&&n[0]>n[1]?"isValid(".concat(o,") && reverse(").concat(o,")"):o}}(t,c,n,f):null;return e.push({name:i,type:a,...f?{domain:f}:{},...p?{domainRaw:p}:{},range:h,...void 0!==s?{reverse:s}:{},...d}),e}),[])}class q4 extends H2{constructor(t,e){super({},{name:t}),this.merged=!1,this.setWithExplicit("type",e)}domainDefinitelyIncludesZero(){return!1!==this.get("zero")||dG(this.get("domains"),(t=>nc(t)&&2===t.length&&t[0]<=0&&t[1]>=0))}}const H4=["range","scheme"];function W4(t,e){const r=t.fieldDef(e);if(null!=r&&r.bin){const{bin:n,field:o}=r,i=J$(e),a=t.getName(i);if(oc(n)&&n.binned&&void 0!==n.step)return new j4((()=>{const r=t.scaleName(e),o='(domain("'.concat(r,'")[1] - domain("').concat(r,'")[0]) / ').concat(n.step);return"".concat(t.getSignalName(a)," / (").concat(o,")")}));if(tX(n)){const e=I3(t,o,n);return new j4((()=>{const r=t.getSignalName(e),n="(".concat(r,".stop - ").concat(r,".start) / ").concat(r,".step");return"".concat(t.getSignalName(a)," / (").concat(n,")")}))}}}function V4(t,e){const r=e.specifiedScales[t],{size:n}=e,o=e.getScaleComponent(t).get("type");for(const s of H4)if(void 0!==r[s]){const n=OQ(o,s),i=EQ(t,s);if(n)if(i)fJ(i);else switch(s){case"range":{const n=r.range;if(nc(n)){if(xY(t))return W2(n.map((t=>{if("width"===t||"height"===t){const r=e.getName(t),n=e.getSignalName.bind(e);return j4.fromName(n,r)}return t})))}else if(oc(n))return W2({data:e.requestDataName(n6.Main),field:n.field,sort:{op:"min",field:e.vgField(t)}});return W2(n)}case"scheme":return W2(Z4(r[s]))}else fJ(iJ(o,s,t))}const i=t===ZG||"xOffset"===t?"width":"height",a=n[i];if(k0(a))if(xY(t))if(hQ(o)){const r=G4(a,e,t);if(r)return W2({step:r})}else fJ(aJ(i));else if(OY(t)){const r=t===XG?"x":"y";if("band"===e.getScaleComponent(r).get("type")){const t=$4(a,o);if(t)return W2(t)}}const{rangeMin:c,rangeMax:u}=r,l=function(t,e){const{size:r,config:n,mark:o,encoding:i}=e,a=e.getSignalName.bind(e),{type:c}=a1(i[t]),u=e.getScaleComponent(t),l=u.get("type"),{domain:s,domainMid:d}=e.specifiedScales[t];switch(t){case ZG:case GG:{if(sG(["point","band"],l)){const o=Y4(t,r,n.view);if(k0(o)){return{step:G4(o,e,t)}}}const o=J$(t),i=e.getName(o);return t===GG&&fQ(l)?[j4.fromName(a,i),0]:[0,j4.fromName(a,i)]}case XG:case JG:return function(t,e,r){const n=t===XG?"x":"y",o=e.getScaleComponent(n),i=o.get("type"),a=e.scaleName(n);if("band"===i){const t=Y4(n,e.size,e.config.view);if(k0(t)){const e=$4(t,r);if(e)return e}return[0,{signal:"bandwidth('".concat(a,"')")}]}{const r=e.encoding[n];if(LK(r)&&r.timeUnit){const t=zJ(r.timeUnit,(t=>"scale('".concat(a,"', ").concat(t,")"))),n=e.config.scale.bandWithNestedOffsetPaddingInner;if(n){const e=lX(n)?"".concat(n.signal,"/2"):"".concat(n/2),r=lX(n)?"(1 - ".concat(n.signal,"/2)"):"".concat(1-n/2);return[{signal:"".concat(e," * (").concat(t,")")},{signal:"".concat(r," * (").concat(t,")")}]}return[0,{signal:t}]}return oG("Cannot use ".concat(t," scale if ").concat(n," scale is not discrete."))}}(t,e,l);case s$:{const i=X4(o,e.component.scales[t].get("zero"),n),a=function(t,e,r,n){const o={x:W4(r,"x"),y:W4(r,"y")};switch(t){case"bar":case"tick":{if(void 0!==n.scale.maxBandSize)return n.scale.maxBandSize;const t=Q4(e,o,n.view);return Qc(t)?t-1:new j4((()=>"".concat(t.signal," - 1")))}case"line":case"trail":case"rule":return n.scale.maxStrokeWidth;case"text":return n.scale.maxFontSize;case"point":case"square":case"circle":{if(n.scale.maxSize)return n.scale.maxSize;const t=Q4(e,o,n.view);return Qc(t)?Math.pow(J4*t,2):new j4((()=>"pow(".concat(J4," * ").concat(t.signal,", 2)")))}}throw new Error(JX("size",t))}(o,r,e,n);return bQ(l)?function(t,e,r){const n=()=>{const n=kX(e),o=kX(t),i="(".concat(n," - ").concat(o,") / (").concat(r," - 1)");return"sequence(".concat(o,", ").concat(n," + ").concat(i,", ").concat(i,")")};return lX(e)?new j4(n):{signal:n()}}(i,a,function(t,e,r,n){switch(t){case"quantile":return e.scale.quantileCount;case"quantize":return e.scale.quantizeCount;case"threshold":return void 0!==r&&nc(r)?r.length+1:(fJ(function(t){return"Domain for ".concat(t," is required for threshold scale.")}(n)),3)}}(l,n,s,t)):[i,a]}case t$:return[0,2*Math.PI];case d$:return[0,360];case QG:return[0,new j4((()=>{const t=e.getSignalName("width"),r=e.getSignalName("height");return"min(".concat(t,",").concat(r,")/2")}))];case b$:return[n.scale.minStrokeWidth,n.scale.maxStrokeWidth];case g$:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case l$:return"symbol";case a$:case c$:case u$:return"ordinal"===l?"nominal"===c?"category":"ordinal":void 0!==d?"diverging":"rect"===o||"geoshape"===o?"heatmap":"ramp";case h$:case f$:case p$:return[n.scale.minOpacity,n.scale.maxOpacity]}}(t,e);return(void 0!==c||void 0!==u)&&OQ(o,"rangeMin")&&nc(l)&&2===l.length?W2([null!=c?c:l[0],null!=u?u:l[1]]):V2(l)}function Z4(t){return function(t){return!tu(t)&&!!t.name}(t)?{scheme:t.name,...aG(t,["name"])}:{scheme:t}}function G4(t,e,r){const{encoding:n}=e,o=e.getScaleComponent(r),i=K$(r),a=n[i];if("offset"===x0({step:t,offsetIsDiscrete:qK(a)&&YJ(a.type)})&&D1(n,i)){var c;const r=e.getScaleComponent(i),n=e.scaleName(i);let a="domain('".concat(n,"').length");if("band"===r.get("type")){var u,l,s,d;const t=null!==(u=null!==(l=r.get("paddingInner"))&&void 0!==l?l:r.get("padding"))&&void 0!==u?u:0,e=null!==(s=null!==(d=r.get("paddingOuter"))&&void 0!==d?d:r.get("padding"))&&void 0!==s?s:0;a="bandspace(".concat(a,", ").concat(t,", ").concat(e,")")}const h=null!==(c=o.get("paddingInner"))&&void 0!==c?c:o.get("padding");return{signal:"".concat(t.step," * ").concat(a," / (1-").concat(yX(h),")")}}return t.step}function $4(t,e){if("offset"===x0({step:t,offsetIsDiscrete:hQ(e)}))return{step:t.step}}function Y4(t,e,r){const n=t===ZG?"width":"height",o=e[n];return o||E0(r,n)}function X4(t,e,r){if(e)return lX(e)?{signal:"".concat(e.signal," ? 0 : ").concat(X4(t,!1,r))}:0;switch(t){case"bar":case"tick":return r.scale.minBandSize;case"line":case"trail":case"rule":return r.scale.minStrokeWidth;case"text":return r.scale.minFontSize;case"point":case"square":case"circle":return r.scale.minSize}throw new Error(JX("size",t))}const J4=.95;function Q4(t,e,r){const n=k0(t.width)?t.width.step:O0(r,"width"),o=k0(t.height)?t.height.step:O0(r,"height");return e.x||e.y?new j4((()=>{const t=[e.x?e.x.signal:n,e.y?e.y.signal:o];return"min(".concat(t.join(", "),")")})):Math.min(n,o)}function K4(t,e){c7(t)?function(t,e){const r=t.component.scales,{config:n,encoding:o,markDef:i,specifiedScales:a}=t;for(const c of kG(r)){const u=a[c],l=r[c],s=t.getScaleComponent(c),d=a1(o[c]),h=u[e],f=s.get("type"),p=s.get("padding"),b=s.get("paddingInner"),g=OQ(f,e),m=EQ(c,e);if(void 0!==h&&(g?m&&fJ(m):fJ(iJ(f,e,c))),g&&void 0===m)if(void 0!==h){const t=d.timeUnit,r=d.type;switch(e){case"domainMax":case"domainMin":pJ(u[e])||"temporal"===r||t?l.set(e,{signal:f1(u[e],{type:r,timeUnit:t})},!0):l.set(e,u[e],!0);break;default:l.copyKeyFromObject(e,u)}}else{const r=e in t7?t7[e]({model:t,channel:c,fieldOrDatumDef:d,scaleType:f,scalePadding:p,scalePaddingInner:b,domain:u.domain,domainMin:u.domainMin,domainMax:u.domainMax,markDef:i,config:n,hasNestedOffsetScale:j1(o,c),hasSecondaryRangeChannel:!!o[X$(c)]}):n.scale[e];void 0!==r&&l.set(e,r,!1)}}}(t,e):r7(t,e)}const t7={bins:t=>{let{model:e,fieldOrDatumDef:r}=t;return LK(r)?function(t,e){const r=e.bin;if(tX(r)){const n=I3(t,e.field,r);return new j4((()=>t.getSignalName(n)))}if(eX(r)&&rX(r)&&void 0!==r.step)return{step:r.step};return}(e,r):void 0},interpolate:t=>{let{channel:e,fieldOrDatumDef:r}=t;return function(t,e){if(sG([a$,c$,u$],t)&&"nominal"!==e)return"hcl";return}(e,r.type)},nice:t=>{let{scaleType:e,channel:r,domain:n,domainMin:o,domainMax:i,fieldOrDatumDef:a}=t;return function(t,e,r,n,o,i){var a;if(null!==(a=i1(i))&&void 0!==a&&a.bin||nc(r)||null!=o||null!=n||sG([eQ.TIME,eQ.UTC],t))return;return!!xY(e)||void 0}(e,r,n,o,i,a)},padding:t=>{let{channel:e,scaleType:r,fieldOrDatumDef:n,markDef:o,config:i}=t;return function(t,e,r,n,o,i){if(xY(t)){if(pQ(e)){if(void 0!==r.continuousPadding)return r.continuousPadding;const{type:e,orient:a}=o;if("bar"===e&&(!LK(n)||!n.bin&&!n.timeUnit)&&("vertical"===a&&"x"===t||"horizontal"===a&&"y"===t))return i.continuousBandSize}if(e===eQ.POINT)return r.pointPadding}return}(e,r,i.scale,n,o,i.bar)},paddingInner:t=>{let{scalePadding:e,channel:r,markDef:n,scaleType:o,config:i,hasNestedOffsetScale:a}=t;return function(t,e,r,n,o){let i=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(void 0!==t)return;if(xY(e)){const{bandPaddingInner:t,barBandPaddingInner:e,rectBandPaddingInner:n,bandWithNestedOffsetPaddingInner:a}=o;return i?a:LG(t,"bar"===r?e:n)}if(OY(e)&&n===eQ.BAND)return o.offsetBandPaddingInner;return}(e,r,n.type,o,i.scale,a)},paddingOuter:t=>{let{scalePadding:e,channel:r,scaleType:n,scalePaddingInner:o,config:i,hasNestedOffsetScale:a}=t;return function(t,e,r,n,o){let i=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(void 0!==t)return;if(xY(e)){const{bandPaddingOuter:t,bandWithNestedOffsetPaddingOuter:e}=o;if(i)return e;if(r===eQ.BAND)return LG(t,lX(n)?{signal:"".concat(n.signal,"/2")}:n/2)}else if(OY(e)){if(r===eQ.POINT)return.5;if(r===eQ.BAND)return o.offsetBandPaddingOuter}return}(e,r,n,o,i.scale,a)},reverse:t=>{let{fieldOrDatumDef:e,scaleType:r,channel:n,config:o}=t;return function(t,e,r,n){if("x"===r&&void 0!==n.xReverse)return fQ(t)&&"descending"===e?lX(n.xReverse)?{signal:"!".concat(n.xReverse.signal)}:!n.xReverse:n.xReverse;if(fQ(t)&&"descending"===e)return!0;return}(r,LK(e)?e.sort:void 0,n,o.scale)},zero:t=>{let{channel:e,fieldOrDatumDef:r,domain:n,markDef:o,scaleType:i,config:a,hasSecondaryRangeChannel:c}=t;return function(t,e,r,n,o,i,a){if(r&&"unaggregated"!==r&&fQ(o)){if(nc(r)){const t=r[0],e=r[r.length-1];if(t<=0&&e>=0)return!0}return!1}if("size"===t&&"quantitative"===e.type&&!bQ(o))return!0;if((!LK(e)||!e.bin)&&sG([...yY,...wY],t)){const{orient:e,type:r}=n;return(!sG(["bar","area","line","trail"],r)||!("horizontal"===e&&"y"===t||"vertical"===e&&"x"===t))&&(!(!sG(["bar","area"],r)||a)||(null==i?void 0:i.zero))}return!1}(e,r,n,o,i,a.scale,c)}};function e7(t){c7(t)?function(t){const e=t.component.scales;for(const r of TY){const n=e[r];if(!n)continue;const o=V4(r,t);n.setWithExplicit("range",o)}}(t):r7(t,"range")}function r7(t,e){const r=t.component.scales;for(const n of t.children)"range"===e?e7(n):K4(n,e);for(const n of kG(r)){let o;for(const r of t.children){const t=r.component.scales[n];if(t){o=$2(o,t.getWithExplicit(e),e,"scale",Z2(((t,r)=>"range"===e&&t.step&&r.step?t.step-r.step:0)))}}r[n].setWithExplicit(e,o)}}function n7(t,e,r,n){const o=function(t,e,r,n){switch(e.type){case"nominal":case"ordinal":var o;if(N$(t)||"discrete"===HY(t))return"shape"===t&&"ordinal"===e.type&&fJ(eJ(t,"ordinal")),"ordinal";if(xY(t)||OY(t)){if(sG(["rect","bar","image","rule"],r.type))return"band";if(n)return"band"}else if("arc"===r.type&&t in kY)return"band";return YQ(r[J$(t)])||ZK(e)&&null!==(o=e.axis)&&void 0!==o&&o.tickBand?"band":"point";case"temporal":return N$(t)?"time":"discrete"===HY(t)?(fJ(eJ(t,"temporal")),"ordinal"):LK(e)&&e.timeUnit&&NJ(e.timeUnit).utc?"utc":"time";case"quantitative":return N$(t)?LK(e)&&tX(e.bin)?"bin-ordinal":"linear":"discrete"===HY(t)?(fJ(eJ(t,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error($X(e.type))}(e,r,n,arguments.length>4&&void 0!==arguments[4]&&arguments[4]),{type:i}=t;return RY(e)?void 0!==i?function(t,e){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!RY(t))return!1;switch(t){case ZG:case GG:case XG:case JG:case t$:case QG:return!!pQ(e)||"band"===e||"point"===e&&!r;case s$:case b$:case h$:case f$:case p$:case d$:return pQ(e)||bQ(e)||sG(["band","point","ordinal"],e);case a$:case c$:case u$:return"band"!==e;case g$:case l$:return"ordinal"===e||bQ(e)}}(e,i)?LK(r)&&(a=i,c=r.type,!(sG([JJ,KJ],c)?void 0===a||hQ(a):c===QJ?sG([eQ.TIME,eQ.UTC,void 0],a):c!==XJ||uQ(a)||bQ(a)||void 0===a))?(fJ(function(t,e){return'FieldDef does not work with "'.concat(t,'" scale. We are using "').concat(e,'" scale instead.')}(i,o)),o):i:(fJ(function(t,e,r){return'Channel "'.concat(t,'" does not work with "').concat(e,'" scale. We are using "').concat(r,'" scale instead.')}(e,i,o)),o):o:null;var a,c}function o7(t){c7(t)?t.component.scales=function(t){const{encoding:e,mark:r,markDef:n}=t,o={};for(const a of TY){const c=a1(e[a]);if(c&&r===UQ&&a===l$&&c.type===tQ)continue;let u=c&&c.scale;if(OY(a)){if(!j1(e,tY(a))){u&&fJ(QX(a));continue}}if(c&&null!==u&&!1!==u){var i;null!==(i=u)&&void 0!==i||(u={});const r=n7(u,a,c,n,j1(e,a));o[a]=new q4(t.scaleName("".concat(a),!0),{value:r,explicit:u.type===r})}}return o}(t):t.component.scales=function(t){var e;const r=t.component.scales={},n={},o=t.component.resolve;for(const a of t.children){o7(a);for(const r of kG(a.component.scales)){var i;if(null!==(i=(e=o.scale)[r])&&void 0!==i||(e[r]=p3(r,t)),"shared"===o.scale[r]){const t=n[r],e=a.component.scales[r].getWithExplicit("type");t?nQ(t.value,e.value)?n[r]=$2(t,e,"type","scale",i7):(o.scale[r]="independent",delete n[r]):n[r]=e}}}for(const a of kG(n)){const e=t.scaleName(a,!0),o=n[a];r[a]=new q4(e,o);for(const r of t.children){const t=r.component.scales[a];t&&(r.renameScale(t.get("name"),e),t.merged=!0)}}return r}(t)}const i7=Z2(((t,e)=>iQ(t)-iQ(e)));class a7{constructor(){this.nameMap={}}rename(t,e){this.nameMap[t]=e}has(t){return void 0!==this.nameMap[t]}get(t){for(;this.nameMap[t]&&t!==this.nameMap[t];)t=this.nameMap[t];return t}}function c7(t){return"unit"===(null==t?void 0:t.type)}function u7(t){return"facet"===(null==t?void 0:t.type)}function l7(t){return"concat"===(null==t?void 0:t.type)}function s7(t){return"layer"===(null==t?void 0:t.type)}class d7{constructor(t,e,r,n,o,i,a){var c,u;this.type=e,this.parent=r,this.config=o,this.correctDataNames=t=>{var e,r;return null!==(e=t.from)&&void 0!==e&&e.data&&(t.from.data=this.lookupDataSource(t.from.data)),null!==(r=t.from)&&void 0!==r&&null!==(r=r.facet)&&void 0!==r&&r.data&&(t.from.facet.data=this.lookupDataSource(t.from.facet.data)),t},this.parent=r,this.config=o,this.view=aX(a),this.name=null!==(c=t.name)&&void 0!==c?c:n,this.title=uX(t.title)?{text:t.title}:t.title?aX(t.title):void 0,this.scaleNameMap=r?r.scaleNameMap:new a7,this.projectionNameMap=r?r.projectionNameMap:new a7,this.signalNameMap=r?r.signalNameMap:new a7,this.data=t.data,this.description=t.description,this.transforms=function(t){return t.map((t=>s2(t)?{filter:eG(t.filter,GJ)}:t))}(null!==(u=t.transform)&&void 0!==u?u:[]),this.layout="layer"===e||"unit"===e?{}:function(t,e,r){const n=r[e],o={},{spacing:i,columns:a}=n;void 0!==i&&(o.spacing=i),void 0!==a&&(EK(t)&&!CK(t.facet)||m0(t))&&(o.columns=a),v0(t)&&(o.columns=1);for(const l of _0)if(void 0!==t[l])if("spacing"===l){var c,u;const e=t[l];o[l]=Qc(e)?e:{row:null!==(c=e.row)&&void 0!==c?c:i,column:null!==(u=e.column)&&void 0!==u?u:i}}else o[l]=t[l];return o}(t,e,o),this.component={data:{sources:r?r.component.data.sources:[],outputNodes:r?r.component.data.outputNodes:{},outputNodeRefCounts:r?r.component.data.outputNodeRefCounts:{},isFaceted:EK(t)||(null==r?void 0:r.component.data.isFaceted)&&void 0===t.data},layoutSize:new H2,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:{scale:{},axis:{},legend:{},...i?nG(i):{}},selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){!function(t){let{ignoreRange:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};o7(t),S4(t);for(const r of CQ)K4(t,r);e||e7(t)}(this)}parseProjection(){T3(this)}renameTopLevelLayoutSizeSignal(){"width"!==this.getName("width")&&this.renameSignal(this.getName("width"),"width"),"height"!==this.getName("height")&&this.renameSignal(this.getName("height"),"height")}parseLegends(){D3(this)}assembleEncodeFromView(t){const{style:e,...r}=t,n={};for(const o of kG(r)){const t=r[o];void 0!==t&&(n[o]=vX(t))}return n}assembleGroupEncodeEntry(t){let e={};var r;if((this.view&&(e=this.assembleEncodeFromView(this.view)),!t)&&(this.description&&(e.description=vX(this.description)),"unit"===this.type||"layer"===this.type))return{width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height"),...null!==(r=e)&&void 0!==r?r:{}};return xG(e)?void 0:e}assembleLayout(){if(!this.layout)return;const{spacing:t,...e}=this.layout,{component:r,config:n}=this,o=function(t,e){const r={};for(const n of P$){const o=t[n];if(null!=o&&o.facetFieldDef){const{titleAnchor:t,titleOrient:i}=Y5(["titleAnchor","titleOrient"],o.facetFieldDef.header,e,n),a=G5(n,i),c=a3(t,a);void 0!==c&&(r[a]=c)}}return xG(r)?void 0:r}(r.layoutHeaders,n);return{padding:t,...this.assembleDefaultLayout(),...e,...o?{titleBand:o}:{}}}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:t}=this.component;let e=[];for(const r of P$)t[r].title&&e.push(Q5(this,r));for(const r of X5)e=e.concat(e3(this,r));return e}assembleAxes(){return function(t,e){const{x:r=[],y:n=[]}=t;return[...r.map((t=>F5(t,"grid",e))),...n.map((t=>F5(t,"grid",e))),...r.map((t=>F5(t,"main",e))),...n.map((t=>F5(t,"main",e)))].filter((t=>t))}(this.component.axes,this.config)}assembleLegends(){return N3(this)}assembleProjections(){return z3(this)}assembleTitle(){var t;const{encoding:e,...r}=null!==(t=this.title)&&void 0!==t?t:{},n={...cX(this.config.title).nonMarkTitleProperties,...r,...e?{encode:{update:e}}:{}};if(n.text){var o,i;if(sG(["unit","layer"],this.type)){if(sG(["middle",void 0],n.anchor))null!==(o=n.frame)&&void 0!==o||(n.frame="group")}else null!==(i=n.anchor)&&void 0!==i||(n.anchor="start");return xG(n)?void 0:n}}assembleGroup(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const e={};t=t.concat(this.assembleSignals()),t.length>0&&(e.signals=t);const r=this.assembleLayout();r&&(e.layout=r),e.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const n=!this.parent||u7(this.parent)?I4(this):[];n.length>0&&(e.scales=n);const o=this.assembleAxes();o.length>0&&(e.axes=o);const i=this.assembleLegends();return i.length>0&&(e.legends=i),e}getName(t){return OG((this.name?"".concat(this.name,"_"):"")+t)}getDataName(t){return this.getName(n6[t].toLowerCase())}requestDataName(t){const e=this.getDataName(t),r=this.component.data.outputNodeRefCounts;return r[e]=(r[e]||0)+1,e}getSizeSignalRef(t){if(u7(this.parent)){const e=_Y(h3(t)),r=this.component.scales[e];if(r&&!r.merged){const t=r.get("type"),n=r.get("range");if(hQ(t)&&sX(n)){const t=r.get("name"),n=R4(B4(this,e));if(n){return{signal:d3(t,r,XK({aggregate:"distinct",field:n},{expr:"datum"}))}}return fJ(TX(e)),null}}}return{signal:this.signalNameMap.get(this.getName(t))}}lookupDataSource(t){const e=this.component.data.outputNodes[t];return e?e.getSource():t}getSignalName(t){return this.signalNameMap.get(t)}renameSignal(t,e){this.signalNameMap.rename(t,e)}renameScale(t,e){this.scaleNameMap.rename(t,e)}renameProjection(t,e){this.projectionNameMap.rename(t,e)}scaleName(t,e){return e?this.getName(t):V$(t)&&RY(t)&&this.component.scales[t]||this.scaleNameMap.has(this.getName(t))?this.scaleNameMap.get(this.getName(t)):void 0}projectionName(t){return t?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(t){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const e=this.component.scales[t];return e&&!e.merged?e:this.parent?this.parent.getScaleComponent(t):void 0}getSelectionComponent(t,e){let r=this.component.selection[t];if(!r&&this.parent&&(r=this.parent.getSelectionComponent(t,e)),!r)throw new Error(function(t){return'Cannot find a selection named "'.concat(t,'".')}(e));return r}hasAxisOrientSignalRef(){var t,e;return(null===(t=this.component.axes.x)||void 0===t?void 0:t.some((t=>t.hasOrientSignalRef())))||(null===(e=this.component.axes.y)||void 0===e?void 0:e.some((t=>t.hasOrientSignalRef())))}}class h7 extends d7{vgField(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=this.fieldDef(t);if(r)return XK(r,e)}reduceFieldDef(t,e){return function(t,e,r,n){return t?kG(t).reduce(((r,o)=>{const i=t[o];return nc(i)?i.reduce(((t,r)=>e.call(n,t,r,o)),r):e.call(n,r,i,o)}),r):r}(this.getMapping(),((e,r,n)=>{const o=i1(r);return o?t(e,o,n):e}),e)}forEachFieldDef(t,e){z1(this.getMapping(),((e,r)=>{const n=i1(e);n&&t(n,r)}),e)}}class f7 extends s6{clone(){return new f7(null,nG(this.transform))}constructor(t,e){var r,n,o;super(t),this.transform=e,this.transform=nG(e);const i=null!==(r=this.transform.as)&&void 0!==r?r:[void 0,void 0];this.transform.as=[null!==(n=i[0])&&void 0!==n?n:"value",null!==(o=i[1])&&void 0!==o?o:"density"],e.groupby&&null==e.minsteps&&null==e.maxsteps&&null==e.steps&&(this.transform.steps=200)}dependentFields(){var t;return new Set([this.transform.density,...null!==(t=this.transform.groupby)&&void 0!==t?t:[]])}producedFields(){return new Set(this.transform.as)}hash(){return"DensityTransform ".concat(uG(this.transform))}assemble(){const{density:t,...e}=this.transform;return{type:"kde",field:t,...e}}}class p7 extends s6{clone(){return new p7(null,nG(this.transform))}constructor(t,e){super(t),this.transform=e,this.transform=nG(e)}dependentFields(){return new Set([this.transform.extent])}producedFields(){return new Set([])}hash(){return"ExtentTransform ".concat(uG(this.transform))}assemble(){const{extent:t,param:e}=this.transform;return{type:"extent",field:t,signal:e}}}class b7 extends s6{clone(){return new b7(null,{...this.filter})}constructor(t,e){super(t),this.filter=e}static make(t,e){const{config:r,mark:n,markDef:o}=e;if("filter"!==CX("invalid",o,r))return null;const i=e.reduceFieldDef(((t,r,o)=>{const i=RY(o)&&e.getScaleComponent(o);if(i){fQ(i.get("type"))&&"count"!==r.aggregate&&!qQ(n)&&(t[r.field]=r)}return t}),{});return kG(i).length?new b7(t,i):null}dependentFields(){return new Set(kG(this.filter))}producedFields(){return new Set}hash(){return"FilterInvalid ".concat(uG(this.filter))}assemble(){const t=kG(this.filter).reduce(((t,e)=>{const r=this.filter[e],n=XK(r,{expr:"datum"});return null!==r&&("temporal"===r.type?t.push("(isDate(".concat(n,") || (isValid(").concat(n,") && isFinite(+").concat(n,")))")):"quantitative"===r.type&&(t.push("isValid(".concat(n,")")),t.push("isFinite(+".concat(n,")")))),t}),[]);return t.length>0?{type:"filter",expr:t.join(" && ")}:null}}class g7 extends s6{clone(){return new g7(this.parent,nG(this.transform))}constructor(t,e){super(t),this.transform=e,this.transform=nG(e);const{flatten:r,as:n=[]}=this.transform;this.transform.as=r.map(((t,e)=>{var r;return null!==(r=n[e])&&void 0!==r?r:t}))}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return"FlattenTransform ".concat(uG(this.transform))}assemble(){const{flatten:t,as:e}=this.transform;return{type:"flatten",fields:t,as:e}}}class m7 extends s6{clone(){return new m7(null,nG(this.transform))}constructor(t,e){var r,n,o;super(t),this.transform=e,this.transform=nG(e);const i=null!==(r=this.transform.as)&&void 0!==r?r:[void 0,void 0];this.transform.as=[null!==(n=i[0])&&void 0!==n?n:"key",null!==(o=i[1])&&void 0!==o?o:"value"]}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return"FoldTransform ".concat(uG(this.transform))}assemble(){const{fold:t,as:e}=this.transform;return{type:"fold",fields:t,as:e}}}class v7 extends s6{clone(){return new v7(null,nG(this.fields),this.geojson,this.signal)}static parseAll(t,e){if(e.component.projection&&!e.component.projection.isFit)return t;let r=0;for(const n of[[n$,r$],[i$,o$]]){const o=n.map((t=>{const r=a1(e.encoding[t]);return LK(r)?r.field:RK(r)?{expr:"".concat(r.datum)}:WK(r)?{expr:"".concat(r.value)}:void 0}));(o[0]||o[1])&&(t=new v7(t,o,null,e.getName("geojson_".concat(r++))))}if(e.channelHasField(l$)){const n=e.typedFieldDef(l$);n.type===tQ&&(t=new v7(t,null,n.field,e.getName("geojson_".concat(r++))))}return t}constructor(t,e,r,n){super(t),this.fields=e,this.geojson=r,this.signal=n}dependentFields(){var t;const e=(null!==(t=this.fields)&&void 0!==t?t:[]).filter(tu);return new Set([...this.geojson?[this.geojson]:[],...e])}producedFields(){return new Set}hash(){return"GeoJSON ".concat(this.geojson," ").concat(this.signal," ").concat(uG(this.fields))}assemble(){return[...this.geojson?[{type:"filter",expr:'isValid(datum["'.concat(this.geojson,'"])')}]:[],{type:"geojson",...this.fields?{fields:this.fields}:{},...this.geojson?{geojson:this.geojson}:{},signal:this.signal}]}}class y7 extends s6{clone(){return new y7(null,this.projection,nG(this.fields),nG(this.as))}constructor(t,e,r,n){super(t),this.projection=e,this.fields=r,this.as=n}static parseAll(t,e){if(!e.projectionName())return t;for(const r of[[n$,r$],[i$,o$]]){const n=r.map((t=>{const r=a1(e.encoding[t]);return LK(r)?r.field:RK(r)?{expr:"".concat(r.datum)}:WK(r)?{expr:"".concat(r.value)}:void 0})),o=r[0]===i$?"2":"";(n[0]||n[1])&&(t=new y7(t,e.projectionName(),n,[e.getName("x".concat(o)),e.getName("y".concat(o))]))}return t}dependentFields(){return new Set(this.fields.filter(tu))}producedFields(){return new Set(this.as)}hash(){return"Geopoint ".concat(this.projection," ").concat(uG(this.fields)," ").concat(uG(this.as))}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class x7 extends s6{clone(){return new x7(null,nG(this.transform))}constructor(t,e){super(t),this.transform=e}dependentFields(){var t;return new Set([this.transform.impute,this.transform.key,...null!==(t=this.transform.groupby)&&void 0!==t?t:[]])}producedFields(){return new Set([this.transform.impute])}processSequence(t){const{start:e=0,stop:r,step:n}=t,o=[e,r,...n?[n]:[]].join(",");return{signal:"sequence(".concat(o,")")}}static makeFromTransform(t,e){return new x7(t,e)}static makeFromEncoding(t,e){const r=e.encoding,n=r.x,o=r.y;if(LK(n)&&LK(o)){const i=n.impute?n:o.impute?o:void 0;if(void 0===i)return;const a=n.impute?o:o.impute?n:void 0,{method:c,value:u,frame:l,keyvals:s}=i.impute,d=P1(e.mark,r);return new x7(t,{impute:i.field,key:a.field,...c?{method:c}:{},...void 0!==u?{value:u}:{},...l?{frame:l}:{},...void 0!==s?{keyvals:s}:{},...d.length?{groupby:d}:{}})}return null}hash(){return"Impute ".concat(uG(this.transform))}assemble(){const{impute:t,key:e,keyvals:r,method:n,groupby:o,value:i,frame:a=[null,null]}=this.transform,c={type:"impute",field:t,key:e,...r?{keyvals:d2(r)?this.processSequence(r):r}:{},method:"value",...o?{groupby:o}:{},value:n&&"value"!==n?null:i};if(n&&"value"!==n){return[c,{type:"window",as:["imputed_".concat(t,"_value")],ops:[n],fields:[t],frame:a,ignorePeers:!1,...o?{groupby:o}:{}},{type:"formula",expr:"datum.".concat(t," === null ? datum.imputed_").concat(t,"_value : datum.").concat(t),as:t}]}return[c]}}class k7 extends s6{clone(){return new k7(null,nG(this.transform))}constructor(t,e){var r,n,o;super(t),this.transform=e,this.transform=nG(e);const i=null!==(r=this.transform.as)&&void 0!==r?r:[void 0,void 0];this.transform.as=[null!==(n=i[0])&&void 0!==n?n:e.on,null!==(o=i[1])&&void 0!==o?o:e.loess]}dependentFields(){var t;return new Set([this.transform.loess,this.transform.on,...null!==(t=this.transform.groupby)&&void 0!==t?t:[]])}producedFields(){return new Set(this.transform.as)}hash(){return"LoessTransform ".concat(uG(this.transform))}assemble(){const{loess:t,on:e,...r}=this.transform;return{type:"loess",x:e,y:t,...r}}}class w7 extends s6{clone(){return new w7(null,nG(this.transform),this.secondary)}constructor(t,e,r){super(t),this.transform=e,this.secondary=r}static make(t,e,r,n){const o=e.component.data.sources,{from:i}=r;let a=null;if(function(t){return"data"in t}(i)){let t=T7(i.data,o);t||(t=new K3(i.data),o.push(t));const r=e.getName("lookup_".concat(n));a=new d6(t,r,n6.Lookup,e.component.data.outputNodeRefCounts),e.component.data.outputNodes[r]=a}else if(function(t){return"param"in t}(i)){const t=i.param;let n;r={as:t,...r};try{n=e.getSelectionComponent(OG(t),t)}catch(h9){throw new Error(function(t){return'Lookups can only be performed on selection parameters. "'.concat(t,'" is a variable parameter.')}(t))}if(a=n.materialized,!a)throw new Error(function(t){return'Cannot define and lookup the "'.concat(t,'" selection in the same view. ')+"Try moving the lookup into a second, layered view?"}(t))}return new w7(t,r,a.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?jc(this.transform.as):this.transform.from.fields)}hash(){return"Lookup ".concat(uG({transform:this.transform,secondary:this.secondary}))}assemble(){let t;if(this.transform.from.fields)t={values:this.transform.from.fields,...this.transform.as?{as:jc(this.transform.as)}:{}};else{let e=this.transform.as;tu(e)||(fJ('If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.'),e="_lookup"),t={as:[e]}}return{type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup],...t,...this.transform.default?{default:this.transform.default}:{}}}}class _7 extends s6{clone(){return new _7(null,nG(this.transform))}constructor(t,e){var r,n,o;super(t),this.transform=e,this.transform=nG(e);const i=null!==(r=this.transform.as)&&void 0!==r?r:[void 0,void 0];this.transform.as=[null!==(n=i[0])&&void 0!==n?n:"prob",null!==(o=i[1])&&void 0!==o?o:"value"]}dependentFields(){var t;return new Set([this.transform.quantile,...null!==(t=this.transform.groupby)&&void 0!==t?t:[]])}producedFields(){return new Set(this.transform.as)}hash(){return"QuantileTransform ".concat(uG(this.transform))}assemble(){const{quantile:t,...e}=this.transform;return{type:"quantile",field:t,...e}}}class C7 extends s6{clone(){return new C7(null,nG(this.transform))}constructor(t,e){var r,n,o;super(t),this.transform=e,this.transform=nG(e);const i=null!==(r=this.transform.as)&&void 0!==r?r:[void 0,void 0];this.transform.as=[null!==(n=i[0])&&void 0!==n?n:e.on,null!==(o=i[1])&&void 0!==o?o:e.regression]}dependentFields(){var t;return new Set([this.transform.regression,this.transform.on,...null!==(t=this.transform.groupby)&&void 0!==t?t:[]])}producedFields(){return new Set(this.transform.as)}hash(){return"RegressionTransform ".concat(uG(this.transform))}assemble(){const{regression:t,on:e,...r}=this.transform;return{type:"regression",x:e,y:t,...r}}}class O7 extends s6{clone(){return new O7(null,nG(this.transform))}constructor(t,e){super(t),this.transform=e}addDimensions(t){var e;this.transform.groupby=bG((null!==(e=this.transform.groupby)&&void 0!==e?e:[]).concat(t),(t=>t))}producedFields(){}dependentFields(){var t;return new Set([this.transform.pivot,this.transform.value,...null!==(t=this.transform.groupby)&&void 0!==t?t:[]])}hash(){return"PivotTransform ".concat(uG(this.transform))}assemble(){const{pivot:t,value:e,groupby:r,limit:n,op:o}=this.transform;return{type:"pivot",field:t,value:e,...void 0!==n?{limit:n}:{},...void 0!==o?{op:o}:{},...void 0!==r?{groupby:r}:{}}}}class E7 extends s6{clone(){return new E7(null,nG(this.transform))}constructor(t,e){super(t),this.transform=e}dependentFields(){return new Set}producedFields(){return new Set}hash(){return"SampleTransform ".concat(uG(this.transform))}assemble(){return{type:"sample",size:this.transform.sample}}}function D7(t){let e=0;return function r(n,o){if(n instanceof K3&&!n.isGenerator&&!X2(n.data)){t.push(o);o={name:null,source:o.name,transform:[]}}var i;if(n instanceof Y3&&(n.parent instanceof K3&&!o.source?(o.format={...null!==(i=o.format)&&void 0!==i?i:{},parse:n.assembleFormatParse()},o.transform.push(...n.assembleTransforms(!0))):o.transform.push(...n.assembleTransforms())),n instanceof V3)return o.name||(o.name="data_".concat(e++)),!o.source||o.transform.length>0?(t.push(o),n.data=o.name):n.data=o.source,void t.push(...n.assemble());if((n instanceof J3||n instanceof Q3||n instanceof b7||n instanceof A5||n instanceof V5||n instanceof y7||n instanceof W3||n instanceof w7||n instanceof x4||n instanceof v4||n instanceof m7||n instanceof g7||n instanceof f7||n instanceof k7||n instanceof _7||n instanceof C7||n instanceof X3||n instanceof E7||n instanceof O7||n instanceof p7)&&o.transform.push(n.assemble()),(n instanceof q3||n instanceof p6||n instanceof x7||n instanceof y4||n instanceof v7)&&o.transform.push(...n.assemble()),n instanceof d6)if(o.source&&0===o.transform.length)n.setSource(o.source);else if(n.parent instanceof d6)n.setSource(o.name);else if(o.name||(o.name="data_".concat(e++)),n.setSource(o.name),1===n.numChildren()){t.push(o);o={name:null,source:o.name,transform:[]}}switch(n.numChildren()){case 0:n instanceof d6&&(!o.source||o.transform.length>0)&&t.push(o);break;case 1:r(n.children[0],o);break;default:{o.name||(o.name="data_".concat(e++));let i=o.name;!o.source||o.transform.length>0?t.push(o):i=o.source;for(const t of n.children){r(t,{name:null,source:i,transform:[]})}break}}}}function j7(t){return"top"===t||"left"===t||lX(t)?"header":"footer"}function S7(t,e){const{facet:r,config:n,child:o,component:i}=t;if(t.channelHasField(e)){var a;const c=r[e],u=$5("title",null,n,e);let l=e1(c,n,{allowDisabling:!0,includeDefault:void 0===u||!!u});o.component.layoutHeaders[e].title&&(l=nc(l)?l.join(", "):l,l+=" / ".concat(o.component.layoutHeaders[e].title),o.component.layoutHeaders[e].title=null);const s=$5("labelOrient",c.header,n,e),d=null!==c.header&&LG(null===(a=c.header)||void 0===a?void 0:a.labels,n.header.labels,!0),h=sG(["bottom","right"],s)?"footer":"header";i.layoutHeaders[e]={title:null!==c.header?l:null,facetFieldDef:c,[h]:"facet"===e?[]:[A7(t,e,d)]}}}function A7(t,e,r){const n="row"===e?"height":"width";return{labels:r,sizeSignal:t.child.component.layoutSize.get(n)?t.child.getSizeSignalRef(n):void 0,axes:[]}}function M7(t,e){const{child:r}=t;if(r.component.axes[e]){const{layoutHeaders:o,resolve:i}=t.component;if(i.axis[e]=b3(i,e),"shared"===i.axis[e]){const i="x"===e?"column":"row",a=o[i];for(const o of r.component.axes[e]){var n;const e=j7(o.get("orient"));null!==(n=a[e])&&void 0!==n||(a[e]=[A7(t,i,!1)]);const r=F5(o,"main",t.config,{header:!0});r&&a[e][0].axes.push(r),o.mainExtracted=!0}}}}function N7(t){for(const e of t.children)e.parseLayoutSize()}function z7(t,e){const r=h3(e),n=_Y(r),o=t.component.resolve,i=t.component.layoutSize;let a;for(const u of t.children){var c;const e=u.component.layoutSize.getWithExplicit(r),i=null!==(c=o.scale[n])&&void 0!==c?c:p3(n,t);if("independent"===i&&"step"===e.value){a=void 0;break}if(a){if("independent"===i&&a.value!==e.value){a=void 0;break}a=$2(a,e,r,"")}else a=e}if(a){for(const n of t.children)t.renameSignal(n.getName(r),t.getName(e)),n.component.layoutSize.set(r,"merged",!1);i.setWithExplicit(e,a)}else i.setWithExplicit(e,{explicit:!1,value:void 0})}function P7(t,e){const r="width"===e?"x":"y",n=t.config,o=t.getScaleComponent(r);if(o){const t=o.get("type"),r=o.get("range");if(hQ(t)){const t=E0(n.view,e);return sX(r)||k0(t)?"step":t}return C0(n.view,e)}if(t.hasProjection||"arc"===t.mark)return C0(n.view,e);{const t=E0(n.view,e);return k0(t)?t.step:t}}function F7(t,e,r){return XK(e,{suffix:"by_".concat(XK(t)),...null!=r?r:{}})}class L7 extends h7{constructor(t,e,r,n){super(t,"facet",e,r,n,t.resolve),this.child=l9(t.spec,this,this.getName("child"),void 0,n),this.children=[this.child],this.facet=this.initFacet(t.facet)}initFacet(t){if(!CK(t))return{facet:this.initFacetFieldDef(t,"facet")};const e=kG(t),r={};for(const n of e){if(![HG,WG].includes(n)){fJ(JX(n,"facet"));break}const e=t[n];if(void 0===e.field){fJ(XX(e,n));break}r[n]=this.initFacetFieldDef(e,n)}return r}initFacetFieldDef(t,e){const r=l1(t,e);return r.header?r.header=aX(r.header):null===r.header&&(r.header=null),r}channelHasField(t){return!!this.facet[t]}fieldDef(t){return this.facet[t]}parseData(){this.component.data=R7(this),this.child.parseData()}parseLayoutSize(){N7(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(t){for(const e of P$)S7(t,e);M7(t,"x"),M7(t,"y")}(this)}assembleSelectionTopLevelSignals(t){return this.child.assembleSelectionTopLevelSignals(t)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(t){return this.child.assembleSelectionData(t)}getHeaderLayoutMixins(){const t={};for(const o of P$)for(const i of J5){const a=this.component.layoutHeaders[o],c=a[i],{facetFieldDef:u}=a;if(u){const r=$5("titleOrient",u.header,this.config,o);if(["right","bottom"].includes(r)){var e;const n=G5(o,r);null!==(e=t.titleAnchor)&&void 0!==e||(t.titleAnchor={}),t.titleAnchor[n]="end"}}if(null!=c&&c[0]){const e="row"===o?"height":"width",c="header"===i?"headerBand":"footerBand";var r,n;if("facet"!==o&&!this.child.component.layoutSize.get(e))null!==(r=t[c])&&void 0!==r||(t[c]={}),t[c][o]=.5;if(a.title)null!==(n=t.offset)&&void 0!==n||(t.offset={}),t.offset["row"===o?"rowTitle":"columnTitle"]=10}}return t}assembleDefaultLayout(){const{column:t,row:e}=this.facet,r=t?this.columnDistinctSignal():e?1:void 0;let n="all";return(e||"independent"!==this.component.resolve.scale.x)&&(t||"independent"!==this.component.resolve.scale.y)||(n="none"),{...this.getHeaderLayoutMixins(),...r?{columns:r}:{},bounds:"full",align:n}}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof L7)){const t=this.getName("column_domain");return{signal:"length(data('".concat(t,"'))")}}}assembleGroupStyle(){}assembleGroup(t){return this.parent&&this.parent instanceof L7?{...this.channelHasField("column")?{encode:{update:{columns:{field:XK(this.facet.column,{prefix:"distinct"})}}}}:{},...super.assembleGroup(t)}:super.assembleGroup(t)}getCardinalityAggregateForChild(){const t=[],e=[],r=[];if(this.child instanceof L7){if(this.child.channelHasField("column")){const n=XK(this.child.facet.column);t.push(n),e.push("distinct"),r.push("distinct_".concat(n))}}else for(const n of yY){const o=this.child.component.scales[n];if(o&&!o.merged){const i=o.get("type"),a=o.get("range");if(hQ(i)&&sX(a)){const o=R4(B4(this.child,n));o?(t.push(o),e.push("distinct"),r.push("distinct_".concat(o))):fJ(TX(n))}}}return{fields:t,ops:e,as:r}}assembleFacet(){const{name:t,data:e}=this.component.data.facetRoot,{row:r,column:n}=this.facet,{fields:o,ops:i,as:a}=this.getCardinalityAggregateForChild(),c=[];for(const l of P$){const t=this.facet[l];if(t){c.push(XK(t));const{bin:e,sort:u}=t;if(tX(e)&&c.push(XK(t,{binSuffix:"end"})),wK(u)){const{field:e,op:c=vK}=u,l=F7(t,u);r&&n?(o.push(l),i.push("max"),a.push(l)):(o.push(e),i.push(c),a.push(l))}else if(nc(u)){const e=Z5(t,l);o.push(e),i.push("max"),a.push(e)}}}const u=!!r&&!!n;return{name:t,data:e,groupby:c,...u||o.length>0?{aggregate:{...u?{cross:u}:{},...o.length?{fields:o,ops:i,as:a}:{}}}:{}}}facetSortFields(t){const{facet:e}=this,r=e[t];return r?wK(r.sort)?[F7(r,r.sort,{expr:"datum"})]:nc(r.sort)?[Z5(r,t,{expr:"datum"})]:[XK(r,{expr:"datum"})]:[]}facetSortOrder(t){const{facet:e}=this,r=e[t];if(r){const{sort:t}=r;return[(wK(t)?t.order:!nc(t)&&t)||"ascending"]}return[]}assembleLabelTitle(){const{facet:t,config:e}=this;if(t.facet)return n3(t.facet,"facet",e);const r={row:["top","bottom"],column:["left","right"]};for(const o of X5)if(t[o]){var n;const i=$5("labelOrient",null===(n=t[o])||void 0===n?void 0:n.header,e,o);if(r[o].includes(i))return n3(t[o],o,e)}}assembleMarks(){const{child:t}=this,e=function(t){const e=[],r=D7(e);for(const n of t.children)r(n,{source:t.name,name:null,transform:[]});return e}(this.component.data.facetRoot),r=t.assembleGroupEncodeEntry(!1),n=this.assembleLabelTitle()||t.assembleTitle(),o=t.assembleGroupStyle(),i={name:this.getName("cell"),type:"group",...n?{title:n}:{},...o?{style:o}:{},from:{facet:this.assembleFacet()},sort:{field:P$.map((t=>this.facetSortFields(t))).flat(),order:P$.map((t=>this.facetSortOrder(t))).flat()},...e.length>0?{data:e}:{},...r?{encode:{update:r}}:{},...t.assembleGroup(c6(this,[]))};return[i]}getMapping(){return this.facet}}function T7(t,e){for(const a of e){var r,n,o,i;const e=a.data;if(t.name&&a.hasName()&&t.name!==a.dataName)continue;const c=null===(r=t.format)||void 0===r?void 0:r.mesh,u=null===(n=e.format)||void 0===n?void 0:n.feature;if(c&&u)continue;const l=null===(o=t.format)||void 0===o?void 0:o.feature;if((l||u)&&l!==u)continue;const s=null===(i=e.format)||void 0===i?void 0:i.mesh;if(!c&&!s||c===s)if(J2(t)&&J2(e)){if(rG(t.values,e.values))return a}else if(X2(t)&&X2(e)){if(t.url===e.url)return a}else if(Q2(t)&&t.name===a.dataName)return a}return null}function R7(t){var e,r,n;let o=function(t,e){if(t.data||!t.parent){if(null===t.data){const t=new K3({values:[]});return e.push(t),t}const r=T7(t.data,e);if(r)return K2(t.data)||(r.data.format=fG({},t.data.format,r.data.format)),!r.hasName()&&t.data.name&&(r.dataName=t.data.name),r;{const r=new K3(t.data);return e.push(r),r}}return t.parent.component.data.facetRoot?t.parent.component.data.facetRoot:t.parent.component.data.main}(t,t.component.data.sources);const{outputNodes:i,outputNodeRefCounts:a}=t.component.data,c=t.data,u=!(c&&(K2(c)||X2(c)||J2(c)))&&t.parent?t.parent.component.data.ancestorParse.clone():new Y2;K2(c)?(t6(c)?o=new Q3(o,c.sequence):r6(c)&&(o=new J3(o,c.graticule)),u.parseNothing=!0):null===(null==c||null===(e=c.format)||void 0===e?void 0:e.parse)&&(u.parseNothing=!0),o=null!==(r=Y3.makeExplicit(o,t,u))&&void 0!==r?r:o,o=new X3(o);const l=t.parent&&s7(t.parent);var s;(c7(t)||u7(t))&&(l&&(o=null!==(s=q3.makeFromEncoding(o,t))&&void 0!==s?s:o));t.transforms.length>0&&(o=function(t,e,r){let n=0;for(const a of e.transforms){let c,u;if(w2(a))u=t=new V5(t,a),c="derived";else if(s2(a)){var o;const n=G3(a);u=t=null!==(o=Y3.makeWithAncestors(t,{},n,r))&&void 0!==o?o:t,t=new A5(t,e,a.filter)}else if(_2(a))u=t=q3.makeFromTransform(t,a,e),c="number";else if(O2(a))c="date",void 0===r.getWithExplicit(a.field).value&&(t=new Y3(t,{[a.field]:c}),r.set(a.field,c,!1)),u=t=p6.makeFromTransform(t,a);else if(E2(a))u=t=W3.makeFromTransform(t,a),c="number",O5(e)&&(t=new X3(t));else if(h2(a))u=t=w7.make(t,e,a,n++),c="derived";else if(y2(a))u=t=new x4(t,a),c="number";else if(x2(a))u=t=new v4(t,a),c="number";else if(D2(a))u=t=y4.makeFromTransform(t,a),c="derived";else if(j2(a))u=t=new m7(t,a),c="derived";else if(S2(a))u=t=new p7(t,a),c="derived";else if(k2(a))u=t=new g7(t,a),c="derived";else if(f2(a))u=t=new O7(t,a),c="derived";else if(v2(a))t=new E7(t,a);else if(C2(a))u=t=x7.makeFromTransform(t,a),c="derived";else if(p2(a))u=t=new f7(t,a),c="derived";else if(b2(a))u=t=new _7(t,a),c="derived";else if(g2(a))u=t=new C7(t,a),c="derived";else{if(!m2(a)){fJ(WX(a));continue}u=t=new k7(t,a),c="derived"}if(u&&void 0!==c)for(const t of null!==(i=u.producedFields())&&void 0!==i?i:[]){var i;r.set(t,c,!1)}}return t}(o,t,u));const d=function(t){const e={};if(c7(t)&&t.component.selection)for(const r of kG(t.component.selection)){const n=t.component.selection[r];for(const t of n.project.items)!t.channel&&FG(t.field)>1&&(e[t.field]="flatten")}return e}(t),h=$3(t);if(o=null!==(n=Y3.makeWithAncestors(o,{},{...d,...h},u))&&void 0!==n?n:o,c7(t)&&(o=v7.parseAll(o,t),o=y7.parseAll(o,t)),c7(t)||u7(t)){var f,p;if(!l)o=null!==(p=q3.makeFromEncoding(o,t))&&void 0!==p?p:o;o=null!==(f=p6.makeFromEncoding(o,t))&&void 0!==f?f:o,o=V5.parseAllForSortIndex(o,t)}const b=t.getDataName(n6.Raw),g=new d6(o,b,n6.Raw,a);if(i[b]=g,o=g,c7(t)){var m,v;const e=W3.makeFromEncoding(o,t);e&&(o=e,O5(t)&&(o=new X3(o))),o=null!==(m=x7.makeFromEncoding(o,t))&&void 0!==m?m:o,o=null!==(v=y4.makeFromEncoding(o,t))&&void 0!==v?v:o}var y;c7(t)&&(o=null!==(y=b7.make(o,t))&&void 0!==y?y:o);const x=t.getDataName(n6.Main),k=new d6(o,x,n6.Main,a);i[x]=k,o=k,c7(t)&&function(t,e){for(const[n,o]of _G(null!==(r=t.component.selection)&&void 0!==r?r:{})){var r;const i=t.getName("lookup_".concat(n));t.component.data.outputNodes[i]=o.materialized=new d6(new A5(e,t,{param:n}),i,n6.Lookup,t.component.data.outputNodeRefCounts)}}(t,k);let w=null;if(u7(t)){var _;const e=t.getName("facet");o=null!==(_=function(t,e){const{row:r,column:n}=e;if(r&&n){let e=null;for(const o of[r,n])if(wK(o.sort)){const{field:r,op:n=vK}=o.sort;t=e=new v4(t,{joinaggregate:[{op:n,field:r,as:F7(o,o.sort,{forAs:!0})}],groupby:[XK(o)]})}return e}return null}(o,t.facet))&&void 0!==_?_:o,w=new V3(o,t,e,k.getSource()),i[e]=w}return{...t.component.data,outputNodes:i,outputNodeRefCounts:a,raw:g,main:k,facetRoot:w,ancestorParse:u}}class B7 extends d7{constructor(t,e,r,n){var o,i;super(t,"concat",e,r,n,t.resolve),"shared"!==(null===(o=t.resolve)||void 0===o||null===(o=o.axis)||void 0===o?void 0:o.x)&&"shared"!==(null===(i=t.resolve)||void 0===i||null===(i=i.axis)||void 0===i?void 0:i.y)||fJ("Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415)."),this.children=this.getChildren(t).map(((t,e)=>l9(t,this,this.getName("concat_".concat(e)),void 0,n)))}parseData(){this.component.data=R7(this);for(const t of this.children)t.parseData()}parseSelections(){this.component.selection={};for(const t of this.children){t.parseSelections();for(const e of kG(t.component.selection))this.component.selection[e]=t.component.selection[e]}}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){for(const t of this.children)t.parseAxesAndHeaders()}getChildren(t){return v0(t)?t.vconcat:y0(t)?t.hconcat:t.concat}parseLayoutSize(){!function(t){N7(t);const e=1===t.layout.columns?"width":"childWidth",r=void 0===t.layout.columns?"height":"childHeight";z7(t,e),z7(t,r)}(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(t){return this.children.reduce(((t,e)=>e.assembleSelectionTopLevelSignals(t)),t)}assembleSignals(){return this.children.forEach((t=>t.assembleSignals())),[]}assembleLayoutSignals(){const t=u3(this);for(const e of this.children)t.push(...e.assembleLayoutSignals());return t}assembleSelectionData(t){return this.children.reduce(((t,e)=>e.assembleSelectionData(t)),t)}assembleMarks(){return this.children.map((t=>{const e=t.assembleTitle(),r=t.assembleGroupStyle(),n=t.assembleGroupEncodeEntry(!1);return{type:"group",name:t.getName("group"),...e?{title:e}:{},...r?{style:r}:{},...n?{encode:{update:n}}:{},...t.assembleGroup()}}))}assembleGroupStyle(){}assembleDefaultLayout(){const t=this.layout.columns;return{...null!=t?{columns:t}:{},bounds:"full",align:"each"}}}const I7={disable:1,gridScale:1,scale:1,...x1,labelExpr:1,encode:1},U7=kG(I7);class q7 extends H2{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super(),this.explicit=t,this.implicit=e,this.mainExtracted=r}clone(){return new q7(nG(this.explicit),nG(this.implicit),this.mainExtracted)}hasAxisPart(t){return"axis"===t||("grid"===t||"title"===t?!!this.get(t):!(!1===(e=this.get(t))||null===e));var e}hasOrientSignalRef(){return lX(this.explicit.orient)}}const H7={bottom:"top",top:"bottom",left:"right",right:"left"};function W7(t,e){if(!t)return e.map((t=>t.clone()));{if(t.length!==e.length)return;const r=t.length;for(let n=0;n{switch(r){case"title":return MX(t,e);case"gridScale":return{explicit:t.explicit,value:LG(t.value,e.value)}}return G2(t,e,r,"axis")}));t.setWithExplicit(r,n)}return t}function Z7(t,e,r,n,o){if("disable"===e)return void 0!==r;switch(r=r||{},e){case"titleAngle":case"labelAngle":return t===(lX(r.labelAngle)?r.labelAngle:UG(r.labelAngle));case"values":return!!r.values;case"encode":return!!r.encoding||!!r.labelAngle;case"title":if(t===W5(n,o))return!0}return t===r[e]}const G7=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function $7(t,e){var r,n,o,i,a;let c=e.axis(t);const u=new q7,l=a1(e.encoding[t]),{mark:s,config:d}=e,h=(null===(r=c)||void 0===r?void 0:r.orient)||(null===(n=d["x"===t?"axisX":"axisY"])||void 0===n?void 0:n.orient)||(null===(o=d.axis)||void 0===o?void 0:o.orient)||function(t){return"x"===t?"bottom":"left"}(t),f=e.getScaleComponent(t).get("type"),p=function(t,e,r,n){const o="band"===e?["axisDiscrete","axisBand"]:"point"===e?["axisDiscrete","axisPoint"]:uQ(e)?["axisQuantitative"]:"time"===e||"utc"===e?["axisTemporal"]:[],i="x"===t?"axisX":"axisY",a=lX(r)?"axisOrient":"axis".concat(jG(r)),c=[...o,...o.map((t=>i+t.substr(4)))],u=["axis",a,i];return{vlOnlyAxisConfig:T5(c,n,t,r),vgAxisConfig:T5(u,n,t,r),axisConfigStyle:R5([...u,...c],n)}}(t,f,h,e.config),b=void 0!==c?!c:B5("disable",d.style,null===(i=c)||void 0===i?void 0:i.style,p).configValue;if(u.set("disable",b,void 0!==c),b)return u;c=c||{};const g=function(t,e,r,n,o){const i=null==e?void 0:e.labelAngle;if(void 0!==i)return lX(i)?i:UG(i);{const{configValue:i}=B5("labelAngle",n,null==e?void 0:e.style,o);return void 0!==i?UG(i):r!==ZG||!sG([KJ,JJ],t.type)||LK(t)&&t.timeUnit?void 0:270}}(l,c,t,d.style,p),m=fK(c.formatType,l,f),v=hK(l,l.type,c.format,c.formatType,d,!0),y={fieldOrDatumDef:l,axis:c,channel:t,model:e,scaleType:f,orient:h,labelAngle:g,format:v,formatType:m,mark:s,config:d};for(const w of U7){const r=w in I5?I5[w](y):w1(w)?c[w]:void 0,n=void 0!==r,o=Z7(r,w,c,e,t);if(n&&o)u.set(w,r,o);else{const{configValue:t,configFrom:e}=w1(w)&&"values"!==w?B5(w,d.style,c.style,p):{},i=void 0!==t;n&&!i?u.set(w,r,o):("vgAxisConfig"!==e||G7.has(w)&&i||m1(t)||lX(t))&&u.set(w,t,!1)}}const x=null!==(a=c.encoding)&&void 0!==a?a:{},k=v1.reduce(((r,n)=>{var o;if(!u.hasAxisPart(n))return r;const i=f3(null!==(o=x[n])&&void 0!==o?o:{},e),a="labels"===n?function(t,e,r){var n;const{encoding:o,config:i}=t,a=null!==(n=a1(o[e]))&&void 0!==n?n:a1(o[X$(e)]),c=t.axis(e)||{},{format:u,formatType:l}=c;if(aK(l))return{text:dK({fieldOrDatumDef:a,field:"datum.value",format:u,formatType:l,config:i}),...r};if(void 0===u&&void 0===l&&i.customFormatTypes){if("quantitative"===TK(a)){if(ZK(a)&&"normalize"===a.stack&&i.normalizedNumberFormatType)return{text:dK({fieldOrDatumDef:a,field:"datum.value",format:i.normalizedNumberFormat,formatType:i.normalizedNumberFormatType,config:i}),...r};if(i.numberFormatType)return{text:dK({fieldOrDatumDef:a,field:"datum.value",format:i.numberFormat,formatType:i.numberFormatType,config:i}),...r}}if("temporal"===TK(a)&&i.timeFormatType&&LK(a)&&!a.timeUnit)return{text:dK({fieldOrDatumDef:a,field:"datum.value",format:i.timeFormat,formatType:i.timeFormatType,config:i}),...r}}return r}(e,t,i):i;return void 0===a||xG(a)||(r[n]={update:a}),r}),{});return xG(k)||u.set("encode",k,!!c.encoding||void 0!==c.labelAngle),u}function Y7(t,e){const{config:r}=t;return{...K6(t,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...I6("x",t,{defaultPos:"mid"}),...I6("y",t,{defaultPos:"mid"}),...L6("size",t),...L6("angle",t),...X7(t,r,e)}}function X7(t,e,r){return r?{shape:{value:r}}:L6("shape",t)}const J7={vgMark:"rule",encodeEntry:t=>{const{markDef:e}=t,r=e.orient;return t.encoding.x||t.encoding.y||t.encoding.latitude||t.encoding.longitude?{...K6(t,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...V6("x",t,{defaultPos:"horizontal"===r?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:"vertical"!==r}),...V6("y",t,{defaultPos:"vertical"===r?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:"horizontal"!==r}),...L6("size",t,{vgChannel:"strokeWidth"})}:{}}};function Q7(t,e,r){if(void 0===CX("align",t,r))return"center"}function K7(t,e,r){if(void 0===CX("baseline",t,r))return"middle"}const t9={vgMark:"rect",encodeEntry:t=>{const{config:e,markDef:r}=t,n=r.orient,o="horizontal"===n?"width":"height",i="horizontal"===n?"height":"width";return{...K6(t,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...I6("x",t,{defaultPos:"mid",vgChannel:"xc"}),...I6("y",t,{defaultPos:"mid",vgChannel:"yc"}),...L6("size",t,{defaultValue:e9(t),vgChannel:o}),[i]:vX(CX("thickness",r,e))}}};function e9(t){var e;const{config:r,markDef:n}=t,{orient:o}=n,i="horizontal"===o?"width":"height",a=t.getScaleComponent("horizontal"===o?"x":"y"),c=null!==(e=CX("size",n,r,{vgChannel:i}))&&void 0!==e?e:r.tick.bandSize;if(void 0!==c)return c;{const t=a?a.get("range"):void 0;if(t&&sX(t)&&Qc(t.step))return 3*t.step/4;return 3*O0(r.view,i)/4}}const r9={arc:{vgMark:"arc",encodeEntry:t=>({...K6(t,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...I6("x",t,{defaultPos:"mid"}),...I6("y",t,{defaultPos:"mid"}),...$6(t,"radius"),...$6(t,"theta")})},area:{vgMark:"area",encodeEntry:t=>({...K6(t,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"}),...V6("x",t,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:"horizontal"===t.markDef.orient}),...V6("y",t,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:"vertical"===t.markDef.orient}),...r5(t)})},bar:{vgMark:"rect",encodeEntry:t=>({...K6(t,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...$6(t,"x"),...$6(t,"y")})},circle:{vgMark:"symbol",encodeEntry:t=>Y7(t,"circle")},geoshape:{vgMark:"shape",encodeEntry:t=>({...K6(t,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})}),postEncodingTransform:t=>{const{encoding:e}=t,r=e.shape;return[{type:"geoshape",projection:t.projectionName(),...r&&LK(r)&&r.type===tQ?{field:XK(r,{expr:"datum"})}:{}}]}},image:{vgMark:"image",encodeEntry:t=>({...K6(t,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"}),...$6(t,"x"),...$6(t,"y"),...j6(t,"url")})},line:{vgMark:"line",encodeEntry:t=>({...K6(t,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...I6("x",t,{defaultPos:"mid"}),...I6("y",t,{defaultPos:"mid"}),...L6("size",t,{vgChannel:"strokeWidth"}),...r5(t)})},point:{vgMark:"symbol",encodeEntry:t=>Y7(t)},rect:{vgMark:"rect",encodeEntry:t=>({...K6(t,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...$6(t,"x"),...$6(t,"y")})},rule:J7,square:{vgMark:"symbol",encodeEntry:t=>Y7(t,"square")},text:{vgMark:"text",encodeEntry:t=>{const{config:e,encoding:r}=t;return{...K6(t,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"}),...I6("x",t,{defaultPos:"mid"}),...I6("y",t,{defaultPos:"mid"}),...j6(t),...L6("size",t,{vgChannel:"fontSize"}),...L6("angle",t),...n5("align",Q7(t.markDef,r,e)),...n5("baseline",K7(t.markDef,r,e)),...I6("radius",t,{defaultPos:null}),...I6("theta",t,{defaultPos:null})}}},tick:t9,trail:{vgMark:"trail",encodeEntry:t=>({...K6(t,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...I6("x",t,{defaultPos:"mid"}),...I6("y",t,{defaultPos:"mid"}),...L6("size",t),...r5(t)})}};function n9(t){if(sG([NQ,SQ,RQ],t.mark)){const e=P1(t.mark,t.encoding);if(e.length>0)return function(t,e){return[{name:t.getName("pathgroup"),type:"group",from:{facet:{name:o9+t.requestDataName(n6.Main),data:t.requestDataName(n6.Main),groupby:e}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:a9(t,{fromPrefix:o9})}]}(t,e)}else if(t.mark===AQ){const e=pX.some((e=>CX(e,t.markDef,t.config)));if(t.stack&&!t.fieldDef("size")&&e)return function(t){var e;const[r]=a9(t,{fromPrefix:i9}),n=t.scaleName(t.stack.fieldChannel),o=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t.vgField(t.stack.fieldChannel,e)},i=(t,e)=>{const r=[o({prefix:"min",suffix:"start",expr:e}),o({prefix:"max",suffix:"start",expr:e}),o({prefix:"min",suffix:"end",expr:e}),o({prefix:"max",suffix:"end",expr:e})];return"".concat(t,"(").concat(r.map((t=>"scale('".concat(n,"',").concat(t,")"))).join(","),")")};let a,c;"x"===t.stack.fieldChannel?(a={...iG(r.encode.update,["y","yc","y2","height",...pX]),x:{signal:i("min","datum")},x2:{signal:i("max","datum")},clip:{value:!0}},c={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},r.encode.update={...aG(r.encode.update,["y","yc","y2"]),height:{field:{group:"height"}}}):(a={...iG(r.encode.update,["x","xc","x2","width"]),y:{signal:i("min","datum")},y2:{signal:i("max","datum")},clip:{value:!0}},c={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},r.encode.update={...aG(r.encode.update,["x","xc","x2"]),width:{field:{group:"width"}}});for(const l of pX){const e=OX(l,t.markDef,t.config);r.encode.update[l]?(a[l]=r.encode.update[l],delete r.encode.update[l]):e&&(a[l]=vX(e)),e&&(r.encode.update[l]={value:0})}const u=[];if((null===(e=t.stack.groupbyChannels)||void 0===e?void 0:e.length)>0)for(const l of t.stack.groupbyChannels){const e=t.fieldDef(l),r=XK(e);r&&u.push(r),(null!=e&&e.bin||null!=e&&e.timeUnit)&&u.push(XK(e,{binSuffix:"end"}))}a=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"].reduce(((e,n)=>{if(r.encode.update[n])return{...e,[n]:r.encode.update[n]};{const r=OX(n,t.markDef,t.config);return void 0!==r?{...e,[n]:vX(r)}:e}}),a),a.stroke&&(a.strokeForeground={value:!0},a.strokeOffset={value:0});return[{type:"group",from:{facet:{data:t.requestDataName(n6.Main),name:i9+t.requestDataName(n6.Main),groupby:u,aggregate:{fields:[o({suffix:"start"}),o({suffix:"start"}),o({suffix:"end"}),o({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:a},marks:[{type:"group",encode:{update:c},marks:[r]}]}]}(t)}return a9(t)}const o9="faceted_path_";const i9="stack_group_";function a9(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{fromPrefix:""};const{mark:r,markDef:n,encoding:o,config:i}=t,a=LG(n.clip,function(t){const e=t.getScaleComponent("x"),r=t.getScaleComponent("y");return!!(null!=e&&e.get("selectionExtent")||null!=r&&r.get("selectionExtent"))||void 0}(t),function(t){const e=t.component.projection;return!(!e||e.isFit)||void 0}(t)),c=_X(n),u=o.key,l=function(t){const{encoding:e,stack:r,mark:n,markDef:o,config:i}=t,a=e.order;if(!(!nc(a)&&WK(a)&&lG(a.value)||!a&&lG(CX("order",o,i)))){if((nc(a)||LK(a))&&!r)return jX(a,{expr:"datum"});if(qQ(n)){const r="horizontal"===o.orient?"y":"x",n=e[r];if(LK(n)){const e=n.sort;if(nc(e))return{field:XK(n,{prefix:r,suffix:"sort_index",expr:"datum"})};if(wK(e))return{field:XK({aggregate:S1(t.encoding)?e.op:void 0,field:e.field},{expr:"datum"})};if(kK(e))return{field:XK(t.fieldDef(e.encoding),{expr:"datum"}),order:e.order};if(null===e)return;var c;return{field:XK(n,{binSuffix:null!==(c=t.stack)&&void 0!==c&&c.impute?"mid":void 0,expr:"datum"})}}}}}(t),s=function(t){if(!t.component.selection)return null;const e=kG(t.component.selection).length;let r=e,n=t.parent;for(;n&&0===r;)r=kG(n.component.selection).length,n=n.parent;return r?{interactive:e>0||"geoshape"===t.mark||!!t.encoding.tooltip}:null}(t),d=CX("aria",n,i),h=r9[r].postEncodingTransform?r9[r].postEncodingTransform(t):null;return[{name:t.getName("marks"),type:r9[r].vgMark,...a?{clip:!0}:{},...c?{style:c}:{},...u?{key:u.field}:{},...l?{sort:l}:{},...s||{},...!1===d?{aria:d}:{},from:{data:e.fromPrefix+t.requestDataName(n6.Main)},encode:{update:r9[r].encodeEntry(t)},...h?{transform:h}:{}}]}class c9 extends h7{constructor(t,e,r){var n;let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=arguments.length>4?arguments[4]:void 0;super(t,"unit",e,r,i,void 0,w0(t)?t.view:void 0),this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection=[],this.children=[];const a=VQ(t.mark)?{...t.mark}:{type:t.mark},c=a.type;void 0===a.filled&&(a.filled=function(t,e,r){let{graticule:n}=r;if(n)return!1;const o=OX("filled",t,e),i=t.type;return LG(o,i!==zQ&&i!==NQ&&i!==FQ)}(a,i,{graticule:t.data&&r6(t.data)}));const u=this.encoding=function(t,e,r,n){const o={};for(const a of kG(t))V$(a)||fJ("".concat(i=a,"-encoding is dropped as ").concat(i," is not a valid encoding channel."));var i;for(let a of eY){if(!t[a])continue;const i=t[a];if(OY(a)){const t=tY(a),e=o[t];if(LK(e)){if($J(e.type)&&LK(i)&&!e.timeUnit){fJ(ZX(t));continue}}else a=t,fJ(GX(t))}if("angle"!==a||"arc"!==e||t.theta||(fJ("Arc marks uses theta channel rather than angle, replacing angle with theta."),a=t$),M1(t,a,e)){if(a===s$&&"line"===e){const e=i1(t[a]);if(null!=e&&e.aggregate){fJ("Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.");continue}}if(a===a$&&(r?"fill"in t:"stroke"in t))fJ(YX("encoding",{fill:"fill"in t,stroke:"stroke"in t}));else if(a===y$||a===v$&&!nc(i)&&!WK(i)||a===k$&&nc(i)){if(i){if(a===v$){const e=t[a];if(NK(e)){o[a]=e;continue}}o[a]=jc(i).reduce(((t,e)=>(LK(e)?t.push(l1(e,a)):fJ(XX(e,a)),t)),[])}}else{if(a===k$&&null===i)o[a]=null;else if(!(LK(i)||RK(i)||WK(i)||zK(i)||lX(i))){fJ(XX(i,a));continue}o[a]=c1(i,a,n)}}else fJ(JX(a,e))}return o}(t.encoding||{},c,a.filled,i);this.markDef=$0(a,u,i),this.size=function(t){let{encoding:e,size:r}=t;for(const n of yY){const t=J$(n);k0(r[t])&&BK(e[n])&&(delete r[t],fJ(aJ(t)))}return r}({encoding:u,size:w0(t)?{...o,...t.width?{width:t.width}:{},...t.height?{height:t.height}:{}}:o}),this.stack=G0(this.markDef,u),this.specifiedScales=this.initScales(c,u),this.specifiedAxes=this.initAxes(u),this.specifiedLegends=this.initLegends(u),this.specifiedProjection=t.projection,this.selection=(null!==(n=t.params)&&void 0!==n?n:[]).filter((t=>b0(t)))}get hasProjection(){const{encoding:t}=this,e=this.mark===UQ,r=t&&A$.some((e=>qK(t[e])));return e||r}scaleDomain(t){const e=this.specifiedScales[t];return e?e.domain:void 0}axis(t){return this.specifiedAxes[t]}legend(t){return this.specifiedLegends[t]}initScales(t,e){return TY.reduce(((t,r)=>{const n=a1(e[r]);var o;n&&(t[r]=this.initScale(null!==(o=n.scale)&&void 0!==o?o:{}));return t}),{})}initScale(t){const{domain:e,range:r}=t,n=aX(t);return nc(e)&&(n.domain=e.map(gX)),nc(r)&&(n.range=r.map(gX)),n}initAxes(t){return yY.reduce(((e,r)=>{const n=t[r];if(qK(n)||r===ZG&&qK(t.x2)||r===GG&&qK(t.y2)){const t=qK(n)?n.axis:void 0;e[r]=t?this.initAxis({...t}):t}return e}),{})}initAxis(t){const e=kG(t),r={};for(const n of e){const e=t[n];r[n]=m1(e)?bX(e):gX(e)}return r}initLegends(t){return FY.reduce(((e,r)=>{const n=a1(t[r]);if(n&&function(t){switch(t){case a$:case c$:case u$:case s$:case l$:case h$:case b$:case g$:return!0;case f$:case p$:case d$:return!1}}(r)){const t=n.legend;e[r]=t?aX(t):t}return e}),{})}parseData(){this.component.data=R7(this)}parseLayoutSize(){!function(t){const{size:e,component:r}=t;for(const n of yY){const o=J$(n);if(e[o]){const t=e[o];r.layoutSize.set(o,k0(t)?"step":t,!0)}else{const e=P7(t,o);r.layoutSize.set(o,e,!1)}}}(this)}parseSelections(){this.component.selection=function(t,e){const r={},n=t.config.selection;if(!e||!e.length)return r;for(const i of e){const e=OG(i.name),a=i.select,c=tu(a)?a:a.type,u=oc(a)?nG(a):{type:c},l=n[c];for(const t in l){var o;"fields"!==t&&"encodings"!==t&&("mark"===t&&(u[t]={...l[t],...u[t]}),(void 0===u[t]||!0===u[t])&&(u[t]=nG(null!==(o=l[t])&&void 0!==o?o:u[t])))}const s=r[e]={...u,name:e,type:c,init:i.value,bind:i.bind,events:tu(u.on)?hq(u.on,"scope"):jc(nG(u.on))},d=nG(i);for(const r of _5)r.defined(s)&&r.parse&&r.parse(t,s,d)}return r}(this,this.selection)}parseMarkGroup(){this.component.mark=n9(this)}parseAxesAndHeaders(){var t;this.component.axes=(t=this,yY.reduce(((e,r)=>(t.component.scales[r]&&(e[r]=[$7(r,t)]),e)),{}))}assembleSelectionTopLevelSignals(t){return function(t,e){let r=!1;for(const o of wG(null!==(n=t.component.selection)&&void 0!==n?n:{})){var n;const i=o.name,a=uu(i+y5);if(0===e.filter((t=>t.name===i)).length){const t="global"===o.resolve?"union":o.resolve,r="point"===o.type?", true, true)":")";e.push({name:o.name,update:"".concat(w5,"(").concat(a,", ").concat(uu(t)).concat(r)})}r=!0;for(const r of _5)r.defined(o)&&r.topLevelSignals&&(e=r.topLevelSignals(t,o,e))}r&&0===e.filter((t=>"unit"===t.name)).length&&e.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]});return l6(e)}(this,t)}assembleSignals(){return[...L5(this),...a6(this,[])]}assembleSelectionData(t){return function(t,e){const r=[...e],n=C5(t,{escape:!1});for(const i of wG(null!==(o=t.component.selection)&&void 0!==o?o:{})){var o;const t={name:i.name+y5};if(i.project.hasSelectionId&&(t.transform=[{type:"collect",sort:{field:d0}}]),i.init){const e=i.project.items.map(o6);t.values=i.project.hasSelectionId?i.init.map((t=>({unit:n,[d0]:i6(t,!1)[0]}))):i.init.map((t=>({unit:n,fields:e,values:i6(t,!1)})))}r.filter((t=>t.name===i.name+y5)).length||r.push(t)}return r}(this,t)}assembleLayout(){return null}assembleLayoutSignals(){return u3(this)}assembleMarks(){var t;let e=null!==(t=this.component.mark)&&void 0!==t?t:[];return this.parent&&s7(this.parent)||(e=u6(this,e)),e.map(this.correctDataNames)}assembleGroupStyle(){const{style:t}=this.view||{};return void 0!==t?t:this.encoding.x||this.encoding.y?"cell":"view"}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(t){return E1(this.encoding,t)}fieldDef(t){return i1(this.encoding[t])}typedFieldDef(t){const e=this.fieldDef(t);return HK(e)?e:null}}class u9 extends d7{constructor(t,e,r,n,o){super(t,"layer",e,r,o,t.resolve,t.view);const i={...n,...t.width?{width:t.width}:{},...t.height?{height:t.height}:{}};this.children=t.layer.map(((t,e)=>{if(I0(t))return new u9(t,this,this.getName("layer_".concat(e)),i,o);if(C1(t))return new c9(t,this,this.getName("layer_".concat(e)),i,o);throw new Error(NX(t))}))}parseData(){this.component.data=R7(this);for(const t of this.children)t.parseData()}parseLayoutSize(){var t;N7(t=this),z7(t,"width"),z7(t,"height")}parseSelections(){this.component.selection={};for(const t of this.children){t.parseSelections();for(const e of kG(t.component.selection))this.component.selection[e]=t.component.selection[e]}}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){!function(t){const{axes:e,resolve:r}=t.component,n={top:0,bottom:0,right:0,left:0};for(const i of t.children){i.parseAxesAndHeaders();for(const n of kG(i.component.axes))r.axis[n]=b3(t.component.resolve,n),"shared"===r.axis[n]&&(e[n]=W7(e[n],i.component.axes[n]),e[n]||(r.axis[n]="independent",delete e[n]))}for(const i of yY){for(const a of t.children)if(a.component.axes[i]){if("independent"===r.axis[i]){var o;e[i]=(null!==(o=e[i])&&void 0!==o?o:[]).concat(a.component.axes[i]);for(const t of a.component.axes[i]){const{value:e,explicit:r}=t.getWithExplicit("orient");if(!lX(e)){if(n[e]>0&&!r){const r=H7[e];n[e]>n[r]&&t.set("orient",r,!1)}n[e]++}}}delete a.component.axes[i]}if("independent"===r.axis[i]&&e[i]&&e[i].length>1)for(const[t,r]of(e[i]||[]).entries())t>0&&r.get("grid")&&!r.explicit.grid&&(r.implicit.grid=!1)}}(this)}assembleSelectionTopLevelSignals(t){return this.children.reduce(((t,e)=>e.assembleSelectionTopLevelSignals(t)),t)}assembleSignals(){return this.children.reduce(((t,e)=>t.concat(e.assembleSignals())),L5(this))}assembleLayoutSignals(){return this.children.reduce(((t,e)=>t.concat(e.assembleLayoutSignals())),u3(this))}assembleSelectionData(t){return this.children.reduce(((t,e)=>e.assembleSelectionData(t)),t)}assembleGroupStyle(){const t=new Set;for(const r of this.children)for(const e of jc(r.assembleGroupStyle()))t.add(e);const e=Array.from(t);return e.length>1?e:1===e.length?e[0]:void 0}assembleTitle(){let t=super.assembleTitle();if(t)return t;for(const e of this.children)if(t=e.assembleTitle(),t)return t}assembleLayout(){return null}assembleMarks(){return function(t,e){for(const r of t.children)c7(r)&&(e=u6(r,e));return e}(this,this.children.flatMap((t=>t.assembleMarks())))}assembleLegends(){return this.children.reduce(((t,e)=>t.concat(e.assembleLegends())),N3(this))}}function l9(t,e,r,n,o){if(EK(t))return new L7(t,e,r,o);if(I0(t))return new u9(t,e,r,n,o);if(C1(t))return new c9(t,e,r,n,o);if(function(t){return v0(t)||y0(t)||m0(t)}(t))return new B7(t,e,r,o);throw new Error(NX(t))}const s9=WZ;var d9=Object.freeze({__proto__:null,accessPathDepth:FG,accessPathWithDatum:SG,compile:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var r;e.logger&&(r=e.logger,hJ=r),e.fieldTitle&&t1(e.fieldTitle);try{const r=P0(ac(e.config,t.config)),n=L2(t,r),o=l9(n,null,"",void 0,r);o.parse(),function(t,e){O4(t.sources);let r=0,n=0;for(let o=0;o2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0;const o=t.config?R0(t.config):void 0,i=[].concat(t.assembleSelectionData([]),function(t,e){const r=[],n=D7(r);let o=0;for(const u of t.sources){u.hasName()||(u.dataName="source_".concat(o++));const t=u.assemble();n(u,t)}for(const u of r)0===u.transform.length&&delete u.transform;let i=0;for(const[u,l]of r.entries()){var a;0!==(null!==(a=l.transform)&&void 0!==a?a:[]).length||l.source||r.splice(i++,0,r.splice(u,1)[0])}for(const u of r)for(const e of null!==(c=u.transform)&&void 0!==c?c:[]){var c;"lookup"===e.type&&(e.from=t.outputNodes[e.from].getSource())}for(const u of r)u.name in e&&(u.values=e[u.name]);return r}(t.component.data,r)),a=t.assembleProjections(),c=t.assembleTitle(),u=t.assembleGroupStyle(),l=t.assembleGroupEncodeEntry(!0);let s=t.assembleLayoutSignals();s=s.filter((t=>"width"!==t.name&&"height"!==t.name||void 0===t.value||(e[t.name]=+t.value,!1)));const{params:d,...h}=e;return{$schema:"https://vega.github.io/schema/vega/v5.json",...t.description?{description:t.description}:{},...h,...c?{title:c}:{},...u?{style:u}:{},...l?{encode:{update:l}}:{},data:i,...a.length>0?{projections:a}:{},...t.assembleGroup([...s,...t.assembleSelectionTopLevelSignals([]),...g0(d)]),...o?{config:o}:{},...n?{usermeta:n}:{}}}(o,function(t,e,r,n){const o=n.component.layoutSize.get("width"),i=n.component.layoutSize.get("height");void 0===e?(e={type:"pad"},n.hasAxisOrientSignalRef()&&(e.resize=!0)):tu(e)&&(e={type:e});if(o&&i&&(a=e.type,"fit"===a||"fit-x"===a||"fit-y"===a))if("step"===o&&"step"===i)fJ(LX()),e.type="pad";else if("step"===o||"step"===i){const t="step"===o?"width":"height";fJ(LX(_Y(t)));const r="width"===t?"height":"width";e.type=function(t){return t?"fit-".concat(_Y(t)):"fit"}(r)}var a;return{...1===kG(e).length&&e.type?"pad"===e.type?{}:{autosize:e.type}:{autosize:e},...q2(r,!1),...q2(t,!0)}}(t,n.autosize,r,o),t.datasets,t.usermeta);return{spec:i,normalized:n}}finally{e.logger&&(hJ=dJ),e.fieldTitle&&t1(QK)}},contains:sG,deepEqual:rG,deleteNestedProperty:DG,duplicate:nG,entries:_G,every:hG,fieldIntersection:yG,flatAccessWithDatum:AG,getFirstDefined:LG,hasIntersection:mG,hash:uG,internalField:BG,isBoolean:CG,isEmpty:xG,isEqual:function(t,e){const r=kG(t),n=kG(e);if(r.length!==n.length)return!1;for(const o of r)if(t[o]!==e[o])return!1;return!0},isInternalField:IG,isNullOrFalse:lG,isNumeric:qG,keys:kG,logicalExpr:EG,mergeDeep:fG,never:oG,normalize:L2,normalizeAngle:UG,omit:aG,pick:iG,prefixGenerator:vG,removePathFromField:PG,replaceAll:zG,replacePathInField:NG,resetIdCounter:function(){TG=42},setEqual:gG,some:dG,stringify:cG,titleCase:jG,unique:bG,uniqueId:RG,vals:wG,varName:OG,version:s9});function h9(t){const[e,r]=/schema\/([\w-]+)\/([\w\.\-]+)\.json$/g.exec(t).slice(1,3);return{library:e,version:r}}var f9="2.14.0";const p9="#fff",b9="#888",g9={background:"#333",view:{stroke:b9},title:{color:p9,subtitleColor:p9},style:{"guide-label":{fill:p9},"guide-title":{fill:p9}},axis:{domainColor:p9,gridColor:b9,tickColor:p9}},m9="#4572a7",v9={background:"#fff",arc:{fill:m9},area:{fill:m9},line:{stroke:m9,strokeWidth:2},path:{stroke:m9},rect:{fill:m9},shape:{stroke:m9},symbol:{fill:m9,strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}},y9="#30a2da",x9="#cbcbcb",k9="#f0f0f0",w9="#333",_9={arc:{fill:y9},area:{fill:y9},axis:{domainColor:x9,grid:!0,gridColor:x9,gridWidth:1,labelColor:"#999",labelFontSize:10,titleColor:"#333",tickColor:x9,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisBand:{grid:!1},background:k9,group:{fill:k9},legend:{labelColor:w9,labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:w9,titleFontSize:14,titlePadding:10},line:{stroke:y9,strokeWidth:2},path:{stroke:y9,strokeWidth:.5},rect:{fill:y9},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},point:{filled:!0,shape:"circle"},shape:{stroke:y9},bar:{binSpacing:2,fill:y9,stroke:null},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}},C9="#000",O9={group:{fill:"#e5e5e5"},arc:{fill:C9},area:{fill:C9},line:{stroke:C9},path:{stroke:C9},rect:{fill:C9},shape:{stroke:C9},symbol:{fill:C9,size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}},E9="Benton Gothic, sans-serif",D9="#82c6df",j9="Benton Gothic Bold, sans-serif",S9="normal",A9={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"],"ice-7":["#edefee","#dadfe2","#c4ccd2","#a6b7c6","#849eae","#607785","#47525d"]},M9={background:"#ffffff",title:{anchor:"start",color:"#000000",font:j9,fontSize:22,fontWeight:"normal"},arc:{fill:D9},area:{fill:D9},line:{stroke:D9,strokeWidth:2},path:{stroke:D9},rect:{fill:D9},shape:{stroke:D9},symbol:{fill:D9,size:30},axis:{labelFont:E9,labelFontSize:11.5,labelFontWeight:"normal",titleFont:j9,titleFontSize:13,titleFontWeight:S9},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:E9,labelFontSize:11.5,symbolType:"square",titleFont:j9,titleFontSize:13,titleFontWeight:S9},range:{category:A9["category-6"],diverging:A9["fireandice-6"],heatmap:A9["fire-7"],ordinal:A9["fire-7"],ramp:A9["fire-7"]}},N9="#ab5787",z9="#979797",P9={background:"#f9f9f9",arc:{fill:N9},area:{fill:N9},line:{stroke:N9},path:{stroke:N9},rect:{fill:N9},shape:{stroke:N9},symbol:{fill:N9,size:30},axis:{domainColor:z9,domainWidth:.5,gridWidth:.2,labelColor:z9,tickColor:z9,tickWidth:.2,titleColor:z9},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}},F9="#3e5c69",L9={background:"#fff",arc:{fill:F9},area:{fill:F9},line:{stroke:F9},path:{stroke:F9},rect:{fill:F9},shape:{stroke:F9},symbol:{fill:F9},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}},T9="#1696d2",R9="#000000",B9="Lato",I9="Lato",U9={"main-colors":["#1696d2","#d2d2d2","#000000","#fdbf11","#ec008b","#55b748","#5c5859","#db2b27"],"shades-blue":["#CFE8F3","#A2D4EC","#73BFE2","#46ABDB","#1696D2","#12719E","#0A4C6A","#062635"],"shades-gray":["#F5F5F5","#ECECEC","#E3E3E3","#DCDBDB","#D2D2D2","#9D9D9D","#696969","#353535"],"shades-yellow":["#FFF2CF","#FCE39E","#FDD870","#FCCB41","#FDBF11","#E88E2D","#CA5800","#843215"],"shades-magenta":["#F5CBDF","#EB99C2","#E46AA7","#E54096","#EC008B","#AF1F6B","#761548","#351123"],"shades-green":["#DCEDD9","#BCDEB4","#98CF90","#78C26D","#55B748","#408941","#2C5C2D","#1A2E19"],"shades-black":["#D5D5D4","#ADABAC","#848081","#5C5859","#332D2F","#262223","#1A1717","#0E0C0D"],"shades-red":["#F8D5D4","#F1AAA9","#E9807D","#E25552","#DB2B27","#A4201D","#6E1614","#370B0A"],"one-group":["#1696d2","#000000"],"two-groups-cat-1":["#1696d2","#000000"],"two-groups-cat-2":["#1696d2","#fdbf11"],"two-groups-cat-3":["#1696d2","#db2b27"],"two-groups-seq":["#a2d4ec","#1696d2"],"three-groups-cat":["#1696d2","#fdbf11","#000000"],"three-groups-seq":["#a2d4ec","#1696d2","#0a4c6a"],"four-groups-cat-1":["#000000","#d2d2d2","#fdbf11","#1696d2"],"four-groups-cat-2":["#1696d2","#ec0008b","#fdbf11","#5c5859"],"four-groups-seq":["#cfe8f3","#73bf42","#1696d2","#0a4c6a"],"five-groups-cat-1":["#1696d2","#fdbf11","#d2d2d2","#ec008b","#000000"],"five-groups-cat-2":["#1696d2","#0a4c6a","#d2d2d2","#fdbf11","#332d2f"],"five-groups-seq":["#cfe8f3","#73bf42","#1696d2","#0a4c6a","#000000"],"six-groups-cat-1":["#1696d2","#ec008b","#fdbf11","#000000","#d2d2d2","#55b748"],"six-groups-cat-2":["#1696d2","#d2d2d2","#ec008b","#fdbf11","#332d2f","#0a4c6a"],"six-groups-seq":["#cfe8f3","#a2d4ec","#73bfe2","#46abdb","#1696d2","#12719e"],"diverging-colors":["#ca5800","#fdbf11","#fdd870","#fff2cf","#cfe8f3","#73bfe2","#1696d2","#0a4c6a"]},q9={background:"#FFFFFF",title:{anchor:"start",fontSize:18,font:B9},axisX:{domain:!0,domainColor:R9,domainWidth:1,grid:!1,labelFontSize:12,labelFont:I9,labelAngle:0,tickColor:R9,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:B9},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:"#DEDDDD",gridWidth:1,labelFontSize:12,labelFont:I9,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:B9,titleAngle:0,titleY:-10,titleX:18},legend:{labelFontSize:12,labelFont:I9,symbolSize:100,titleFontSize:12,titlePadding:10,titleFont:B9,orient:"right",offset:10},view:{stroke:"transparent"},range:{category:U9["six-groups-cat-1"],diverging:U9["diverging-colors"],heatmap:U9["diverging-colors"],ordinal:U9["six-groups-seq"],ramp:U9["shades-blue"]},area:{fill:T9},rect:{fill:T9},line:{color:T9,stroke:T9,strokeWidth:5},trail:{color:T9,stroke:T9,strokeWidth:0,size:1},path:{stroke:T9,strokeWidth:.5},point:{filled:!0},text:{font:"Lato",color:T9,fontSize:11,align:"center",fontWeight:400,size:11},style:{bar:{fill:T9,stroke:null}},arc:{fill:T9},shape:{stroke:T9},symbol:{fill:T9,size:30}},H9="#3366CC",W9="#ccc",V9="Arial, sans-serif",Z9={arc:{fill:H9},area:{fill:H9},path:{stroke:H9},rect:{fill:H9},shape:{stroke:H9},symbol:{stroke:H9},circle:{fill:H9},background:"#fff",padding:{top:10,right:10,bottom:10,left:10},style:{"guide-label":{font:V9,fontSize:12},"guide-title":{font:V9,fontSize:12},"group-title":{font:V9,fontSize:12}},title:{font:V9,fontSize:14,fontWeight:"bold",dy:-3,anchor:"start"},axis:{gridColor:W9,tickColor:W9,domain:!1,grid:!0},range:{category:["#4285F4","#DB4437","#F4B400","#0F9D58","#AB47BC","#00ACC1","#FF7043","#9E9D24","#5C6BC0","#F06292","#00796B","#C2185B"],heatmap:["#c6dafc","#5e97f6","#2a56c6"]}},G9=t=>t*(1/3+1),$9=G9(9),Y9=G9(10),X9=G9(12),J9="Segoe UI",Q9="wf_standard-font, helvetica, arial, sans-serif",K9="#252423",t8="#605E5C",e8="transparent",r8="#118DFF",n8="#DEEFFF",o8=[n8,r8],i8={view:{stroke:e8},background:e8,font:J9,header:{titleFont:Q9,titleFontSize:X9,titleColor:K9,labelFont:J9,labelFontSize:Y9,labelColor:t8},axis:{ticks:!1,grid:!1,domain:!1,labelColor:t8,labelFontSize:$9,titleFont:Q9,titleColor:K9,titleFontSize:X9,titleFontWeight:"normal"},axisQuantitative:{tickCount:3,grid:!0,gridColor:"#C8C6C4",gridDash:[1,5],labelFlush:!1},axisBand:{tickExtra:!0},axisX:{labelPadding:5},axisY:{labelPadding:10},bar:{fill:r8},line:{stroke:r8,strokeWidth:3,strokeCap:"round",strokeJoin:"round"},text:{font:J9,fontSize:$9,fill:t8},arc:{fill:r8},area:{fill:r8,line:!0,opacity:.6},path:{stroke:r8},rect:{fill:r8},point:{fill:r8,filled:!0,size:75},shape:{stroke:r8},symbol:{fill:r8,strokeWidth:1.5,size:50},legend:{titleFont:J9,titleFontWeight:"bold",titleColor:t8,labelFont:J9,labelFontSize:Y9,labelColor:t8,symbolType:"circle",symbolSize:75},range:{category:[r8,"#12239E","#E66C37","#6B007B","#E044A7","#744EC2","#D9B300","#D64550"],diverging:o8,heatmap:o8,ordinal:[n8,"#c7e4ff","#b0d9ff","#9aceff","#83c3ff","#6cb9ff","#55aeff","#3fa3ff","#2898ff",r8]}},a8='IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,".sfnstext-regular",sans-serif',c8=["#8a3ffc","#33b1ff","#007d79","#ff7eb6","#fa4d56","#fff1f1","#6fdc8c","#4589ff","#d12771","#d2a106","#08bdba","#bae6ff","#ba4e00","#d4bbff"],u8=["#6929c4","#1192e8","#005d5d","#9f1853","#fa4d56","#570408","#198038","#002d9c","#ee538b","#b28600","#009d9a","#012749","#8a3800","#a56eff"];function l8(t){let{type:e,background:r}=t;const n="dark"===e?"#161616":"#ffffff",o="dark"===e?"#f4f4f4":"#161616",i="dark"===e?"#d4bbff":"#6929c4";return{background:r,arc:{fill:i},area:{fill:i},path:{stroke:i},rect:{fill:i},shape:{stroke:i},symbol:{stroke:i},circle:{fill:i},view:{fill:n,stroke:n},group:{fill:n},title:{color:o,anchor:"start",dy:-15,fontSize:16,font:a8,fontWeight:600},axis:{labelColor:o,labelFontSize:12,grid:!0,gridColor:"#525252",titleColor:o,labelAngle:0},style:{"guide-label":{font:a8,fill:o,fontWeight:400},"guide-title":{font:a8,fill:o,fontWeight:400}},range:{category:"dark"===e?c8:u8,diverging:["#750e13","#a2191f","#da1e28","#fa4d56","#ff8389","#ffb3b8","#ffd7d9","#fff1f1","#e5f6ff","#bae6ff","#82cfff","#33b1ff","#1192e8","#0072c3","#00539a","#003a6d"],heatmap:["#f6f2ff","#e8daff","#d4bbff","#be95ff","#a56eff","#8a3ffc","#6929c4","#491d8b","#31135e","#1c0f30"]}}}const s8=l8({type:"light",background:"#ffffff"}),d8=l8({type:"light",background:"#f4f4f4"}),h8=l8({type:"dark",background:"#262626"}),f8=l8({type:"dark",background:"#161616"}),p8=f9;var b8=Object.freeze({__proto__:null,carbong10:d8,carbong100:f8,carbong90:h8,carbonwhite:s8,dark:g9,excel:v9,fivethirtyeight:_9,ggplot2:O9,googlecharts:Z9,latimes:M9,powerbi:i8,quartz:P9,urbaninstitute:q9,version:p8,vox:L9});function g8(t){return g8="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},g8(t)}function m8(t){var e=function(t,e){if("object"!==g8(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==g8(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===g8(e)?e:String(e)}function v8(t,e,r){return(e=m8(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function y8(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}const x8=["title","image"];function k8(t,e){return JSON.stringify(t,function(t){const e=[];return function(r,n){if("object"!=typeof n||null===n)return n;const o=e.indexOf(this)+1;return e.length=o,e.length>t?"[Object]":e.indexOf(n)>=0?"[Circular]":(e.push(n),n)}}(e))}const w8="vg-tooltip-element",_8={offsetX:10,offsetY:10,id:w8,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:function(t){return String(t).replace(/&/g,"&").replace(/e(tu(t)?t:k8(t,r)))).join(", "),"]");if(oc(t)){let n="";const o=t,{title:i,image:a}=o,c=y8(o,x8);i&&(n+="

".concat(e(i),"

")),a&&(n+=''));const u=Object.keys(c);if(u.length>0){n+="";for(const t of u){let o=c[t];void 0!==o&&(oc(o)&&(o=k8(o,r)),n+='"))}n+="
'.concat(e(t),':').concat(e(o),"
"}return n||"{}"}return e(t)}};function C8(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function O8(t){for(var e=1;e0?r.insertBefore(t,r.childNodes[0]):r.appendChild(t)}}tooltipHandler(t,e,r,n){if(this.el=document.getElementById(this.options.id),!this.el){var o;this.el=document.createElement("div"),this.el.setAttribute("id",this.options.id),this.el.classList.add("vg-tooltip");(null!==(o=document.fullscreenElement)&&void 0!==o?o:document.body).appendChild(this.el)}if(null==n||""===n)return void this.el.classList.remove("visible","".concat(this.options.theme,"-theme"));this.el.innerHTML=this.options.formatTooltip(n,this.options.sanitize,this.options.maxDepth),this.el.classList.add("visible","".concat(this.options.theme,"-theme"));const{x:i,y:a}=function(t,e,r,n){let o=t.clientX+r;o+e.width>window.innerWidth&&(o=+t.clientX-r-e.width);let i=t.clientY+n;return i+e.height>window.innerHeight&&(i=+t.clientY-n-e.height),{x:o,y:i}}(e,this.el.getBoundingClientRect(),this.options.offsetX,this.options.offsetY);this.el.style.top="".concat(a,"px"),this.el.style.left="".concat(i,"px")}}function D8(t){return D8="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},D8(t)}function j8(t){var e=function(t,e){if("object"!==D8(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==D8(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===D8(e)?e:String(e)}function S8(t,e,r){return(e=j8(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function A8(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var M8,N8;var z8=P8;function P8(t){var e=this;if(e instanceof P8||(e=new P8),e.tail=null,e.head=null,e.length=0,t&&"function"==typeof t.forEach)t.forEach((function(t){e.push(t)}));else if(arguments.length>0)for(var r=0,n=arguments.length;r1)r=e;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");n=this.head.next,r=this.head.value}for(var o=0;null!==n;o++)r=t(r,n.value,o),n=n.next;return r},P8.prototype.reduceReverse=function(t,e){var r,n=this.tail;if(arguments.length>1)r=e;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");n=this.tail.prev,r=this.tail.value}for(var o=this.length-1;null!==n;o--)r=t(r,n.value,o),n=n.prev;return r},P8.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;null!==r;e++)t[e]=r.value,r=r.next;return t},P8.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;null!==r;e++)t[e]=r.value,r=r.prev;return t},P8.prototype.slice=function(t,e){(e=e||this.length)<0&&(e+=this.length),(t=t||0)<0&&(t+=this.length);var r=new P8;if(ethis.length&&(e=this.length);for(var n=0,o=this.head;null!==o&&nthis.length&&(e=this.length);for(var n=this.length,o=this.tail;null!==o&&n>e;n--)o=o.prev;for(;null!==o&&n>t;n--,o=o.prev)r.push(o.value);return r},P8.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var r=0,n=this.head;null!==n&&r1;const J8=(t,e,r)=>{const n=t[$8].get(e);if(n){const e=n.value;if(Q8(t,e)){if(ttt(t,n),!t[H8])return}else r&&(t[Y8]&&(n.value.now=Date.now()),t[G8].unshiftNode(n));return e.value}},Q8=(t,e)=>{if(!e||!e.maxAge&&!t[W8])return!1;const r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[W8]&&r>t[W8]},K8=t=>{if(t[U8]>t[I8])for(let e=t[G8].tail;t[U8]>t[I8]&&null!==e;){const r=e.prev;ttt(t,e),e=r}},ttt=(t,e)=>{if(e){const r=e.value;t[V8]&&t[V8](r.key,r.value),t[U8]-=r.length,t[$8].delete(r.key),t[G8].removeNode(e)}};class ett{constructor(t,e,r,n,o){this.key=t,this.value=e,this.length=r,this.now=n,this.maxAge=o||0}}const rtt=(t,e,r,n)=>{let o=r.value;Q8(t,o)&&(ttt(t,r),t[H8]||(o=void 0)),o&&e.call(n,o.value,o.key,t)};var ntt=class{constructor(t){if("number"==typeof t&&(t={max:t}),t||(t={}),t.max&&("number"!=typeof t.max||t.max<0))throw new TypeError("max must be a non-negative number");this[I8]=t.max||1/0;const e=t.length||X8;if(this[q8]="function"!=typeof e?X8:e,this[H8]=t.stale||!1,t.maxAge&&"number"!=typeof t.maxAge)throw new TypeError("maxAge must be a number");this[W8]=t.maxAge||0,this[V8]=t.dispose,this[Z8]=t.noDisposeOnSet||!1,this[Y8]=t.updateAgeOnGet||!1,this.reset()}set max(t){if("number"!=typeof t||t<0)throw new TypeError("max must be a non-negative number");this[I8]=t||1/0,K8(this)}get max(){return this[I8]}set allowStale(t){this[H8]=!!t}get allowStale(){return this[H8]}set maxAge(t){if("number"!=typeof t)throw new TypeError("maxAge must be a non-negative number");this[W8]=t,K8(this)}get maxAge(){return this[W8]}set lengthCalculator(t){"function"!=typeof t&&(t=X8),t!==this[q8]&&(this[q8]=t,this[U8]=0,this[G8].forEach((t=>{t.length=this[q8](t.value,t.key),this[U8]+=t.length}))),K8(this)}get lengthCalculator(){return this[q8]}get length(){return this[U8]}get itemCount(){return this[G8].length}rforEach(t,e){e=e||this;for(let r=this[G8].tail;null!==r;){const n=r.prev;rtt(this,t,r,e),r=n}}forEach(t,e){e=e||this;for(let r=this[G8].head;null!==r;){const n=r.next;rtt(this,t,r,e),r=n}}keys(){return this[G8].toArray().map((t=>t.key))}values(){return this[G8].toArray().map((t=>t.value))}reset(){this[V8]&&this[G8]&&this[G8].length&&this[G8].forEach((t=>this[V8](t.key,t.value))),this[$8]=new Map,this[G8]=new B8,this[U8]=0}dump(){return this[G8].map((t=>!Q8(this,t)&&{k:t.key,v:t.value,e:t.now+(t.maxAge||0)})).toArray().filter((t=>t))}dumpLru(){return this[G8]}set(t,e,r){if((r=r||this[W8])&&"number"!=typeof r)throw new TypeError("maxAge must be a number");const n=r?Date.now():0,o=this[q8](e,t);if(this[$8].has(t)){if(o>this[I8])return ttt(this,this[$8].get(t)),!1;const i=this[$8].get(t).value;return this[V8]&&(this[Z8]||this[V8](t,i.value)),i.now=n,i.maxAge=r,i.value=e,this[U8]+=o-i.length,i.length=o,this.get(t),K8(this),!0}const i=new ett(t,e,o,n,r);return i.length>this[I8]?(this[V8]&&this[V8](t,e),!1):(this[U8]+=i.length,this[G8].unshift(i),this[$8].set(t,this[G8].head),K8(this),!0)}has(t){if(!this[$8].has(t))return!1;const e=this[$8].get(t).value;return!Q8(this,e)}get(t){return J8(this,t,!0)}peek(t){return J8(this,t,!1)}pop(){const t=this[G8].tail;return t?(ttt(this,t),t.value):null}del(t){ttt(this,this[$8].get(t))}load(t){this.reset();const e=Date.now();for(let r=t.length-1;r>=0;r--){const n=t[r],o=n.e||0;if(0===o)this.set(n.k,n.v);else{const t=o-e;t>0&&this.set(n.k,n.v,t)}}}prune(){this[$8].forEach(((t,e)=>J8(this,e,!1)))}};const ott=Object.freeze({loose:!0}),itt=Object.freeze({});var att=t=>t?"object"!=typeof t?ott:t:itt,ctt={exports:{}};var utt={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const ltt="object"==typeof process&&{}.NODE_DEBUG&&/\bsemver\b/i.test({}.NODE_DEBUG)?function(){for(var t=arguments.length,e=new Array(t),r=0;r{};var stt=ltt;!function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:o}=utt,i=stt,a=(e=t.exports={}).re=[],c=e.safeRe=[],u=e.src=[],l=e.t={};let s=0;const d="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",o],[d,n]],f=(t,e,r)=>{const n=(t=>{for(const[e,r]of h)t=t.split("".concat(e,"*")).join("".concat(e,"{0,").concat(r,"}")).split("".concat(e,"+")).join("".concat(e,"{1,").concat(r,"}"));return t})(e),o=s++;i(t,o,e),l[t]=o,u[o]=e,a[o]=new RegExp(e,r?"g":void 0),c[o]=new RegExp(n,r?"g":void 0)};f("NUMERICIDENTIFIER","0|[1-9]\\d*"),f("NUMERICIDENTIFIERLOOSE","\\d+"),f("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-]".concat(d,"*")),f("MAINVERSION","(".concat(u[l.NUMERICIDENTIFIER],")\\.")+"(".concat(u[l.NUMERICIDENTIFIER],")\\.")+"(".concat(u[l.NUMERICIDENTIFIER],")")),f("MAINVERSIONLOOSE","(".concat(u[l.NUMERICIDENTIFIERLOOSE],")\\.")+"(".concat(u[l.NUMERICIDENTIFIERLOOSE],")\\.")+"(".concat(u[l.NUMERICIDENTIFIERLOOSE],")")),f("PRERELEASEIDENTIFIER","(?:".concat(u[l.NUMERICIDENTIFIER],"|").concat(u[l.NONNUMERICIDENTIFIER],")")),f("PRERELEASEIDENTIFIERLOOSE","(?:".concat(u[l.NUMERICIDENTIFIERLOOSE],"|").concat(u[l.NONNUMERICIDENTIFIER],")")),f("PRERELEASE","(?:-(".concat(u[l.PRERELEASEIDENTIFIER],"(?:\\.").concat(u[l.PRERELEASEIDENTIFIER],")*))")),f("PRERELEASELOOSE","(?:-?(".concat(u[l.PRERELEASEIDENTIFIERLOOSE],"(?:\\.").concat(u[l.PRERELEASEIDENTIFIERLOOSE],")*))")),f("BUILDIDENTIFIER","".concat(d,"+")),f("BUILD","(?:\\+(".concat(u[l.BUILDIDENTIFIER],"(?:\\.").concat(u[l.BUILDIDENTIFIER],")*))")),f("FULLPLAIN","v?".concat(u[l.MAINVERSION]).concat(u[l.PRERELEASE],"?").concat(u[l.BUILD],"?")),f("FULL","^".concat(u[l.FULLPLAIN],"$")),f("LOOSEPLAIN","[v=\\s]*".concat(u[l.MAINVERSIONLOOSE]).concat(u[l.PRERELEASELOOSE],"?").concat(u[l.BUILD],"?")),f("LOOSE","^".concat(u[l.LOOSEPLAIN],"$")),f("GTLT","((?:<|>)?=?)"),f("XRANGEIDENTIFIERLOOSE","".concat(u[l.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),f("XRANGEIDENTIFIER","".concat(u[l.NUMERICIDENTIFIER],"|x|X|\\*")),f("XRANGEPLAIN","[v=\\s]*(".concat(u[l.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(u[l.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(u[l.XRANGEIDENTIFIER],")")+"(?:".concat(u[l.PRERELEASE],")?").concat(u[l.BUILD],"?")+")?)?"),f("XRANGEPLAINLOOSE","[v=\\s]*(".concat(u[l.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(u[l.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(u[l.XRANGEIDENTIFIERLOOSE],")")+"(?:".concat(u[l.PRERELEASELOOSE],")?").concat(u[l.BUILD],"?")+")?)?"),f("XRANGE","^".concat(u[l.GTLT],"\\s*").concat(u[l.XRANGEPLAIN],"$")),f("XRANGELOOSE","^".concat(u[l.GTLT],"\\s*").concat(u[l.XRANGEPLAINLOOSE],"$")),f("COERCE","".concat("(^|[^\\d])(\\d{1,").concat(r,"})")+"(?:\\.(\\d{1,".concat(r,"}))?")+"(?:\\.(\\d{1,".concat(r,"}))?")+"(?:$|[^\\d])"),f("COERCERTL",u[l.COERCE],!0),f("LONETILDE","(?:~>?)"),f("TILDETRIM","(\\s*)".concat(u[l.LONETILDE],"\\s+"),!0),e.tildeTrimReplace="$1~",f("TILDE","^".concat(u[l.LONETILDE]).concat(u[l.XRANGEPLAIN],"$")),f("TILDELOOSE","^".concat(u[l.LONETILDE]).concat(u[l.XRANGEPLAINLOOSE],"$")),f("LONECARET","(?:\\^)"),f("CARETTRIM","(\\s*)".concat(u[l.LONECARET],"\\s+"),!0),e.caretTrimReplace="$1^",f("CARET","^".concat(u[l.LONECARET]).concat(u[l.XRANGEPLAIN],"$")),f("CARETLOOSE","^".concat(u[l.LONECARET]).concat(u[l.XRANGEPLAINLOOSE],"$")),f("COMPARATORLOOSE","^".concat(u[l.GTLT],"\\s*(").concat(u[l.LOOSEPLAIN],")$|^$")),f("COMPARATOR","^".concat(u[l.GTLT],"\\s*(").concat(u[l.FULLPLAIN],")$|^$")),f("COMPARATORTRIM","(\\s*)".concat(u[l.GTLT],"\\s*(").concat(u[l.LOOSEPLAIN],"|").concat(u[l.XRANGEPLAIN],")"),!0),e.comparatorTrimReplace="$1$2$3",f("HYPHENRANGE","^\\s*(".concat(u[l.XRANGEPLAIN],")")+"\\s+-\\s+"+"(".concat(u[l.XRANGEPLAIN],")")+"\\s*$"),f("HYPHENRANGELOOSE","^\\s*(".concat(u[l.XRANGEPLAINLOOSE],")")+"\\s+-\\s+"+"(".concat(u[l.XRANGEPLAINLOOSE],")")+"\\s*$"),f("STAR","(<|>)?=?\\s*\\*"),f("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),f("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(ctt,ctt.exports);var dtt=ctt.exports;const htt=/^[0-9]+$/,ftt=(t,e)=>{const r=htt.test(t),n=htt.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:tftt(e,t)};const btt=stt,{MAX_LENGTH:gtt,MAX_SAFE_INTEGER:mtt}=utt,{safeRe:vtt,t:ytt}=dtt,xtt=att,{compareIdentifiers:ktt}=ptt;var wtt=class t{constructor(e,r){if(r=xtt(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError('Invalid version. Must be a string. Got type "'.concat(typeof e,'".'));if(e.length>gtt)throw new TypeError("version is longer than ".concat(gtt," characters"));btt("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;const n=e.trim().match(r.loose?vtt[ytt.LOOSE]:vtt[ytt.FULL]);if(!n)throw new TypeError("Invalid Version: ".concat(e));if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>mtt||this.major<0)throw new TypeError("Invalid major version");if(this.minor>mtt||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>mtt||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&e=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);if(-1===n){if(e===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(e){let n=[e,t];!1===r&&(n=[e]),0===ktt(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error("invalid increment argument: ".concat(t))}return this.raw=this.format(),this.build.length&&(this.raw+="+".concat(this.build.join("."))),this}};const _tt=wtt;var Ctt=(t,e,r)=>new _tt(t,r).compare(new _tt(e,r));const Ott=Ctt;var Ett=(t,e,r)=>0===Ott(t,e,r);const Dtt=Ctt;var jtt=(t,e,r)=>0!==Dtt(t,e,r);const Stt=Ctt;var Att=(t,e,r)=>Stt(t,e,r)>0;const Mtt=Ctt;var Ntt=(t,e,r)=>Mtt(t,e,r)>=0;const ztt=Ctt;var Ptt=(t,e,r)=>ztt(t,e,r)<0;const Ftt=Ctt;var Ltt=(t,e,r)=>Ftt(t,e,r)<=0;const Ttt=Ett,Rtt=jtt,Btt=Att,Itt=Ntt,Utt=Ptt,qtt=Ltt;var Htt,Wtt,Vtt,Ztt,Gtt=(t,e,r,n)=>{switch(e){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof r&&(r=r.version),t===r;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof r&&(r=r.version),t!==r;case"":case"=":case"==":return Ttt(t,r,n);case"!=":return Rtt(t,r,n);case">":return Btt(t,r,n);case">=":return Itt(t,r,n);case"<":return Utt(t,r,n);case"<=":return qtt(t,r,n);default:throw new TypeError("Invalid operator: ".concat(e))}};function $tt(){if(Ztt)return Vtt;Ztt=1;class t{constructor(e,o){if(o=r(o),e instanceof t)return e.loose===!!o.loose&&e.includePrerelease===!!o.includePrerelease?e:new t(e.raw,o);if(e instanceof n)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=o,this.loose=!!o.loose,this.includePrerelease=!!o.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map((t=>this.parseRange(t.trim()))).filter((t=>t.length)),!this.set.length)throw new TypeError("Invalid SemVer Range: ".concat(this.raw));if(this.set.length>1){const t=this.set[0];if(this.set=this.set.filter((t=>!f(t[0]))),0===this.set.length)this.set=[t];else if(this.set.length>1)for(const e of this.set)if(1===e.length&&p(e[0])){this.set=[e];break}}this.format()}format(){return this.range=this.set.map((t=>t.join(" ").trim())).join("||").trim(),this.range}toString(){return this.range}parseRange(t){const r=((this.options.includePrerelease&&d)|(this.options.loose&&h))+":"+t,i=e.get(r);if(i)return i;const p=this.options.loose,b=p?a[c.HYPHENRANGELOOSE]:a[c.HYPHENRANGE];t=t.replace(b,E(this.options.includePrerelease)),o("hyphen replace",t),t=t.replace(a[c.COMPARATORTRIM],u),o("comparator trim",t),t=t.replace(a[c.TILDETRIM],l),o("tilde trim",t),t=t.replace(a[c.CARETTRIM],s),o("caret trim",t);let m=t.split(" ").map((t=>g(t,this.options))).join(" ").split(/\s+/).map((t=>O(t,this.options)));p&&(m=m.filter((t=>(o("loose invalid filter",t,this.options),!!t.match(a[c.COMPARATORLOOSE]))))),o("range list",m);const v=new Map,y=m.map((t=>new n(t,this.options)));for(const e of y){if(f(e))return[e];v.set(e.value,e)}v.size>1&&v.has("")&&v.delete("");const x=[...v.values()];return e.set(r,x),x}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some((t=>b(t,r)&&e.set.some((e=>b(e,r)&&t.every((t=>e.every((e=>t.intersects(e,r)))))))))}test(t){if(!t)return!1;if("string"==typeof t)try{t=new i(t,this.options)}catch(Aet){return!1}for(let e=0;e")||!t.operator.startsWith(">"))&&(!this.operator.startsWith("<")||!t.operator.startsWith("<"))&&(this.semver.version!==t.semver.version||!this.operator.includes("=")||!t.operator.includes("="))&&!(i(this.semver,"<",t.semver,n)&&this.operator.startsWith(">")&&t.operator.startsWith("<"))&&!(i(this.semver,">",t.semver,n)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}}Htt=e;const r=att,{safeRe:n,t:o}=dtt,i=Gtt,a=stt,c=wtt,u=$tt();return Htt}(),o=stt,i=wtt,{safeRe:a,t:c,comparatorTrimReplace:u,tildeTrimReplace:l,caretTrimReplace:s}=dtt,{FLAG_INCLUDE_PRERELEASE:d,FLAG_LOOSE:h}=utt,f=t=>"<0.0.0-0"===t.value,p=t=>""===t.value,b=(t,e)=>{let r=!0;const n=t.slice();let o=n.pop();for(;r&&n.length;)r=n.every((t=>o.intersects(t,e))),o=n.pop();return r},g=(t,e)=>(o("comp",t,e),t=x(t,e),o("caret",t),t=v(t,e),o("tildes",t),t=w(t,e),o("xrange",t),t=C(t,e),o("stars",t),t),m=t=>!t||"x"===t.toLowerCase()||"*"===t,v=(t,e)=>t.trim().split(/\s+/).map((t=>y(t,e))).join(" "),y=(t,e)=>{const r=e.loose?a[c.TILDELOOSE]:a[c.TILDE];return t.replace(r,((e,r,n,i,a)=>{let c;return o("tilde",t,e,r,n,i,a),m(r)?c="":m(n)?c=">=".concat(r,".0.0 <").concat(+r+1,".0.0-0"):m(i)?c=">=".concat(r,".").concat(n,".0 <").concat(r,".").concat(+n+1,".0-0"):a?(o("replaceTilde pr",a),c=">=".concat(r,".").concat(n,".").concat(i,"-").concat(a," <").concat(r,".").concat(+n+1,".0-0")):c=">=".concat(r,".").concat(n,".").concat(i," <").concat(r,".").concat(+n+1,".0-0"),o("tilde return",c),c}))},x=(t,e)=>t.trim().split(/\s+/).map((t=>k(t,e))).join(" "),k=(t,e)=>{o("caret",t,e);const r=e.loose?a[c.CARETLOOSE]:a[c.CARET],n=e.includePrerelease?"-0":"";return t.replace(r,((e,r,i,a,c)=>{let u;return o("caret",t,e,r,i,a,c),m(r)?u="":m(i)?u=">=".concat(r,".0.0").concat(n," <").concat(+r+1,".0.0-0"):m(a)?u="0"===r?">=".concat(r,".").concat(i,".0").concat(n," <").concat(r,".").concat(+i+1,".0-0"):">=".concat(r,".").concat(i,".0").concat(n," <").concat(+r+1,".0.0-0"):c?(o("replaceCaret pr",c),u="0"===r?"0"===i?">=".concat(r,".").concat(i,".").concat(a,"-").concat(c," <").concat(r,".").concat(i,".").concat(+a+1,"-0"):">=".concat(r,".").concat(i,".").concat(a,"-").concat(c," <").concat(r,".").concat(+i+1,".0-0"):">=".concat(r,".").concat(i,".").concat(a,"-").concat(c," <").concat(+r+1,".0.0-0")):(o("no pr"),u="0"===r?"0"===i?">=".concat(r,".").concat(i,".").concat(a).concat(n," <").concat(r,".").concat(i,".").concat(+a+1,"-0"):">=".concat(r,".").concat(i,".").concat(a).concat(n," <").concat(r,".").concat(+i+1,".0-0"):">=".concat(r,".").concat(i,".").concat(a," <").concat(+r+1,".0.0-0")),o("caret return",u),u}))},w=(t,e)=>(o("replaceXRanges",t,e),t.split(/\s+/).map((t=>_(t,e))).join(" ")),_=(t,e)=>{t=t.trim();const r=e.loose?a[c.XRANGELOOSE]:a[c.XRANGE];return t.replace(r,((r,n,i,a,c,u)=>{o("xRange",t,r,n,i,a,c,u);const l=m(i),s=l||m(a),d=s||m(c),h=d;return"="===n&&h&&(n=""),u=e.includePrerelease?"-0":"",l?r=">"===n||"<"===n?"<0.0.0-0":"*":n&&h?(s&&(a=0),c=0,">"===n?(n=">=",s?(i=+i+1,a=0,c=0):(a=+a+1,c=0)):"<="===n&&(n="<",s?i=+i+1:a=+a+1),"<"===n&&(u="-0"),r="".concat(n+i,".").concat(a,".").concat(c).concat(u)):s?r=">=".concat(i,".0.0").concat(u," <").concat(+i+1,".0.0-0"):d&&(r=">=".concat(i,".").concat(a,".0").concat(u," <").concat(i,".").concat(+a+1,".0-0")),o("xRange return",r),r}))},C=(t,e)=>(o("replaceStars",t,e),t.trim().replace(a[c.STAR],"")),O=(t,e)=>(o("replaceGTE0",t,e),t.trim().replace(a[e.includePrerelease?c.GTE0PRE:c.GTE0],"")),E=t=>(e,r,n,o,i,a,c,u,l,s,d,h,f)=>(r=m(n)?"":m(o)?">=".concat(n,".0.0").concat(t?"-0":""):m(i)?">=".concat(n,".").concat(o,".0").concat(t?"-0":""):a?">=".concat(r):">=".concat(r).concat(t?"-0":""),u=m(l)?"":m(s)?"<".concat(+l+1,".0.0-0"):m(d)?"<".concat(l,".").concat(+s+1,".0-0"):h?"<=".concat(l,".").concat(s,".").concat(d,"-").concat(h):t?"<".concat(l,".").concat(s,".").concat(+d+1,"-0"):"<=".concat(u),"".concat(r," ").concat(u).trim()),D=(t,e,r)=>{for(let n=0;n0){const n=t[r].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0};return Vtt}const Ytt=$tt();var Xtt=(t,e,r)=>{try{e=new Ytt(e,r)}catch(Aet){return!1}return e.test(t)},Jtt=A8(Xtt);var Qtt='.vega-embed {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n}\n.vega-embed.has-actions {\n padding-right: 38px;\n}\n.vega-embed details:not([open]) > :not(summary) {\n display: none !important;\n}\n.vega-embed summary {\n list-style: none;\n position: absolute;\n top: 0;\n right: 0;\n padding: 6px;\n z-index: 1000;\n background: white;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n color: #1b1e23;\n border: 1px solid #aaa;\n border-radius: 999px;\n opacity: 0.2;\n transition: opacity 0.4s ease-in;\n cursor: pointer;\n line-height: 0px;\n}\n.vega-embed summary::-webkit-details-marker {\n display: none;\n}\n.vega-embed summary:active {\n box-shadow: #aaa 0px 0px 0px 1px inset;\n}\n.vega-embed summary svg {\n width: 14px;\n height: 14px;\n}\n.vega-embed details[open] summary {\n opacity: 0.7;\n}\n.vega-embed:hover summary, .vega-embed:focus-within summary {\n opacity: 1 !important;\n transition: opacity 0.2s ease;\n}\n.vega-embed .vega-actions {\n position: absolute;\n z-index: 1001;\n top: 35px;\n right: -9px;\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n padding-top: 8px;\n border-radius: 4px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #d9d9d9;\n background: white;\n animation-duration: 0.15s;\n animation-name: scale-in;\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n text-align: left;\n}\n.vega-embed .vega-actions a {\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n color: #434a56;\n text-decoration: none;\n}\n.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus {\n background-color: #f7f7f9;\n color: black;\n}\n.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n content: "";\n display: inline-block;\n position: absolute;\n}\n.vega-embed .vega-actions::before {\n left: auto;\n right: 14px;\n top: -16px;\n border: 8px solid rgba(0, 0, 0, 0);\n border-bottom-color: #d9d9d9;\n}\n.vega-embed .vega-actions::after {\n left: auto;\n right: 15px;\n top: -14px;\n border: 7px solid rgba(0, 0, 0, 0);\n border-bottom-color: #fff;\n}\n.vega-embed .chart-wrapper.fit-x {\n width: 100%;\n}\n.vega-embed .chart-wrapper.fit-y {\n height: 100%;\n}\n\n.vega-embed-wrapper {\n max-width: 100%;\n overflow: auto;\n padding-right: 14px;\n}\n\n@keyframes scale-in {\n from {\n opacity: 0;\n transform: scale(0.6);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n';function Ktt(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;nt,"vega-lite":(t,e)=>oet.compile(t,{config:e}).spec},het='\n\n \n \n \n',fet="chart-wrapper";function pet(t,e,r,n){const o="".concat(e,'
'),i="
".concat(r,""),a=window.open("");a.document.write(o+t+i),a.document.title="".concat(uet[n]," JSON Source")}function bet(t){return(e=t)&&"load"in e?t:net.loader(t);var e}async function get(t,e){var r,n;let o,i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};tu(e)?(i=bet(a.loader),o=JSON.parse(await i.load(e))):o=e;const c=function(t){var e,r;const n=null!==(e=null===(r=t.usermeta)||void 0===r?void 0:r.embedOptions)&&void 0!==e?e:{};return tu(n.defaultStyle)&&(n.defaultStyle=!1),n}(o),u=c.loader;var l;i&&!u||(i=bet(null!==(l=a.loader)&&void 0!==l?l:u));const s=await met(c,i),d=await met(a,i),h=ret(ret({},Ktt(d,s)),{},{config:ac(null!==(r=d.config)&&void 0!==r?r:{},null!==(n=s.config)&&void 0!==n?n:{})});return await async function(t,e){var r,n,o,i,a,c,u;let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3?arguments[3]:void 0;const d=l.theme?ac(b8[l.theme],null!==(r=l.config)&&void 0!==r?r:{}):l.config,h=Yc(l.actions)?l.actions:Ktt({},aet,null!==(n=l.actions)&&void 0!==n?n:{}),f=ret(ret({},cet),l.i18n),p=null!==(o=l.renderer)&&void 0!==o?o:"canvas",b=null!==(i=l.logLevel)&&void 0!==i?i:net.Warn,g=null!==(a=l.downloadFileName)&&void 0!==a?a:"visualization",m="string"==typeof t?document.querySelector(t):t;if(!m)throw new Error("".concat(t," does not exist"));if(!1!==l.defaultStyle){const t="vega-embed-style",{root:e,rootContainer:r}=function(t){var e;const r=t.getRootNode?t.getRootNode():document;return r instanceof ShadowRoot?{root:r,rootContainer:r}:{root:document,rootContainer:null!==(e=document.head)&&void 0!==e?e:document.body}}(m);if(!e.getElementById(t)){const e=document.createElement("style");e.id=t,e.innerHTML=void 0===l.defaultStyle||!0===l.defaultStyle?Qtt.toString():l.defaultStyle,r.appendChild(e)}}const v=function(t,e){if(t.$schema){const n=h9(t.$schema);var r;e&&e!==n.library&&console.warn("The given visualization spec is written in ".concat(uet[n.library],", but mode argument sets ").concat(null!==(r=uet[e])&&void 0!==r?r:e,"."));const o=n.library;return Jtt(set[o],"^".concat(n.version.slice(1)))||console.warn("The input spec uses ".concat(uet[o]," ").concat(n.version,", but the current version of ").concat(uet[o]," is v").concat(set[o],".")),o}return"mark"in t||"encoding"in t||"layer"in t||"hconcat"in t||"vconcat"in t||"facet"in t||"repeat"in t?"vega-lite":"marks"in t||"signals"in t||"scales"in t||"axes"in t?"vega":null!=e?e:"vega"}(e,l.mode);let y=det[v](e,d);if("vega-lite"===v&&y.$schema){const t=h9(y.$schema);Jtt(set.vega,"^".concat(t.version.slice(1)))||console.warn("The compiled spec uses Vega ".concat(t.version,", but current version is v").concat(set.vega,"."))}m.classList.add("vega-embed"),h&&m.classList.add("has-actions");m.innerHTML="";let x=m;if(h){const t=document.createElement("div");t.classList.add(fet),m.appendChild(t),x=t}const k=l.patch;k&&(y=k instanceof Function?k(y):ka(y,k,!0,!1).newDocument);l.formatLocale&&net.formatLocale(l.formatLocale);l.timeFormatLocale&&net.timeFormatLocale(l.timeFormatLocale);if(l.expressionFunctions)for(const S in l.expressionFunctions){const t=l.expressionFunctions[S];"fn"in t?net.expressionFunction(S,t.fn,t.visitor):t instanceof Function&&net.expressionFunction(S,t)}const{ast:w}=l,_=net.parse(y,"vega-lite"===v?{}:d,{ast:w}),C=new(l.viewClass||net.View)(_,ret({loader:s,logLevel:b,renderer:p},w?{expr:null!==(c=null!==(u=net.expressionInterpreter)&&void 0!==u?u:l.expr)&&void 0!==c?c:HZ}:{}));if(C.addSignalListener("autosize",((t,e)=>{const{type:r}=e;"fit-x"==r?(x.classList.add("fit-x"),x.classList.remove("fit-y")):"fit-y"==r?(x.classList.remove("fit-x"),x.classList.add("fit-y")):"fit"==r?x.classList.add("fit-x","fit-y"):x.classList.remove("fit-x","fit-y")})),!1!==l.tooltip){const t=function(t){return"function"==typeof t}(l.tooltip)?l.tooltip:new E8(!0===l.tooltip?{}:l.tooltip).call;C.tooltip(t)}let O,{hover:E}=l;void 0===E&&(E="vega"===v);if(E){const{hoverSet:t,updateSet:e}="boolean"==typeof E?{}:E;C.hover(t,e)}l&&(null!=l.width&&C.width(l.width),null!=l.height&&C.height(l.height),null!=l.padding&&C.padding(l.padding));if(await C.initialize(x,l.bind).runAsync(),!1!==h){let t=m;if(!1!==l.defaultStyle){const e=document.createElement("details");e.title=f.CLICK_TO_VIEW_ACTIONS,m.append(e),t=e;const r=document.createElement("summary");r.innerHTML=het,e.append(r),O=t=>{e.contains(t.target)||e.removeAttribute("open")},document.addEventListener("click",O)}const r=document.createElement("div");if(t.append(r),r.classList.add("vega-actions"),!0===h||!1!==h.export)for(const e of["svg","png"])if(!0===h||!0===h.export||h.export[e]){const t=f["".concat(e.toUpperCase(),"_ACTION")],n=document.createElement("a"),o=oc(l.scaleFactor)?l.scaleFactor[e]:l.scaleFactor;n.text=t,n.href="#",n.target="_blank",n.download="".concat(g,".").concat(e),n.addEventListener("mousedown",(async function(t){t.preventDefault();const r=await C.toImageURL(e,o);this.href=r})),r.append(n)}if(!0===h||!1!==h.source){const t=document.createElement("a");t.text=f.SOURCE_ACTION,t.href="#",t.addEventListener("click",(function(t){var r,n;pet(Pa(e),null!==(r=l.sourceHeader)&&void 0!==r?r:"",null!==(n=l.sourceFooter)&&void 0!==n?n:"",v),t.preventDefault()})),r.append(t)}if("vega-lite"===v&&(!0===h||!1!==h.compiled)){const t=document.createElement("a");t.text=f.COMPILED_ACTION,t.href="#",t.addEventListener("click",(function(t){var e,r;pet(Pa(y),null!==(e=l.sourceHeader)&&void 0!==e?e:"",null!==(r=l.sourceFooter)&&void 0!==r?r:"","vega"),t.preventDefault()})),r.append(t)}if(!0===h||!1!==h.editor){var D;const t=null!==(D=l.editorUrl)&&void 0!==D?D:"https://vega.github.io/editor/",n=document.createElement("a");n.text=f.EDITOR_ACTION,n.href="#",n.addEventListener("click",(function(r){!function(t,e,r){const n=t.open(e),{origin:o}=new URL(e);let i=40;t.addEventListener("message",(function e(r){r.source===n&&(i=0,t.removeEventListener("message",e,!1))}),!1),setTimeout((function t(){i<=0||(n.postMessage(r,o),setTimeout(t,250),i-=1)}),250)}(window,t,{config:d,mode:v,renderer:p,spec:Pa(e)}),r.preventDefault()})),r.append(n)}}function j(){O&&document.removeEventListener("click",O),C.finalize()}return{view:C,spec:e,vgSpec:y,finalize:j,embedOptions:l}}(t,o,h,i)}async function met(t,e){var r;const n=tu(t.config)?JSON.parse(await e.load(t.config)):null!==(r=t.config)&&void 0!==r?r:{},o=tu(t.patch)?JSON.parse(await e.load(t.patch)):t.patch;return ret(ret(ret({},t),o?{patch:o}:{}),n?{config:n}:{})}function vet(t,e){Object.keys(e).forEach((r=>{!function(t,e,r){var n;r&&((n=r)&&"[object Function]"==={}.toString.call(n)?r(t.data(e)):t.change(e,net.changeset().remove((()=>!0)).insert(r)))}(t,r,e[r])}))}function yet(t){const e=new Set;return t.forEach((t=>{Object.keys(t).forEach((t=>{e.add(t)}))})),e}const xet=()=>{};function ket(t,e){const r=Object.keys(e);return r.forEach((r=>{try{t.addSignalListener(r,e[r])}catch(Ua){console.warn("Cannot add invalid signal listener.",Ua)}})),r.length>0}function wet(t,e){const r=Object.keys(e);return r.forEach((r=>{try{t.removeSignalListener(r,e[r])}catch(Ua){console.warn("Cannot remove invalid signal listener.",Ua)}})),r.length>0}function _et(t){const{spec:e,width:r,height:n}=t;return void 0!==r&&void 0!==n?{...e,width:r,height:n}:void 0!==r?{...e,width:r}:void 0!==n?{...e,height:n}:e}function Cet(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class Oet extends S.PureComponent{constructor(){super(...arguments),Cet(this,"containerRef",S.createRef()),Cet(this,"resultPromise",void 0),Cet(this,"handleError",(t=>{const{onError:e=xet}=this.props;e(t,this.containerRef.current),console.warn(t)})),Cet(this,"modifyView",(t=>{this.resultPromise&&this.resultPromise.then((e=>(e&&t(e.view),!0))).catch(this.handleError)}))}componentDidMount(){this.createView()}componentDidUpdate(t){const e=yet([this.props,t]);if(e.delete("className"),e.delete("signalListeners"),e.delete("spec"),e.delete("style"),e.delete("width"),e.delete("height"),Array.from(e).some((e=>this.props[e]!==t[e])))this.clearView(),this.createView();else{const e=function(t,e){if(t===e)return!1;const r={width:!1,height:!1,isExpensive:!1},n=yet([t,e]);return!n.has("width")||"width"in t&&"width"in e&&t.width===e.width||("width"in t&&"number"==typeof t.width?r.width=t.width:r.isExpensive=!0),!n.has("height")||"height"in t&&"height"in e&&t.height===e.height||("height"in t&&"number"==typeof t.height?r.height=t.height:r.isExpensive=!0),n.delete("width"),n.delete("height"),[...n].some((r=>!(r in t)||!(r in e)||!$Z(t[r],e[r])))&&(r.isExpensive=!0),!(!1===r.width&&!1===r.height&&!r.isExpensive)&&r}(_et(this.props),_et(t)),{signalListeners:r}=this.props,{signalListeners:n}=t;if(e)if(e.isExpensive)this.clearView(),this.createView();else{const t=!ra(r,n);this.modifyView((o=>{!1!==e.width&&o.width(e.width),!1!==e.height&&o.height(e.height),t&&(n&&wet(o,n),r&&ket(o,r)),o.run()}))}else ra(r,n)||this.modifyView((t=>{n&&wet(t,n),r&&ket(t,r),t.run()}))}}componentWillUnmount(){this.clearView()}createView(){const{spec:t,onNewView:e,signalListeners:r={},width:n,height:o,...i}=this.props;if(this.containerRef.current){const t=_et(this.props);this.resultPromise=get(this.containerRef.current,t,i).then((t=>{if(t){const{view:e}=t;ket(e,r)&&e.run()}return t})).catch(this.handleError),e&&this.modifyView(e)}}clearView(){return this.resultPromise&&this.resultPromise.then((t=>{t&&t.finalize()})).catch(this.handleError),this.resultPromise=void 0,this}render(){const{className:t,style:e}=this.props;return S.createElement("div",{ref:this.containerRef,className:t,style:e})}}function Eet(){return Eet=Object.assign||function(t){for(var e=1;e{this.update();const{onNewView:e=xet}=this.props;e(t)}))}componentDidMount(){this.update()}componentDidUpdate(t){ra(this.props.data,t.data)||this.update()}update(){const{data:t}=this.props;this.vegaEmbed.current&&t&&Object.keys(t).length>0&&this.vegaEmbed.current.modifyView((e=>{vet(e,t),e.resize().run()}))}render(){const{data:t,...e}=this.props;return S.createElement(Oet,Eet({ref:this.vegaEmbed},e,{onNewView:this.handleNewView}))}}Det(jet,"defaultProps",{data:{}})}}]); -//# sourceMappingURL=824715f2-9a571035d7fa666a5995.js.map \ No newline at end of file diff --git a/824715f2-9a571035d7fa666a5995.js.LICENSE.txt b/824715f2-9a571035d7fa666a5995.js.LICENSE.txt deleted file mode 100644 index 6c7b884e..00000000 --- a/824715f2-9a571035d7fa666a5995.js.LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * https://github.com/Starcounter-Jack/JSON-Patch - * (c) 2017-2021 Joachim Wester - * MIT license - */ - -/*! - * https://github.com/Starcounter-Jack/JSON-Patch - * (c) 2017-2022 Joachim Wester - * MIT licensed - */ - -/** @license React v16.13.1 - * react-is.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ diff --git a/824715f2-9a571035d7fa666a5995.js.map b/824715f2-9a571035d7fa666a5995.js.map deleted file mode 100644 index 4f58e776..00000000 --- a/824715f2-9a571035d7fa666a5995.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"824715f2-9a571035d7fa666a5995.js","mappings":"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","sources":["webpack://product-website-template/./node_modules/@utrecht/component-library-react/dist/css-module/index.mjs"],"sourcesContent":["import _taggedTemplateLiteral from \"/home/runner/work/woo-website-template/woo-website-template/pwa/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\";\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _w$vl;\nimport \"core-js/modules/es.array.unscopables.flat.js\";\nimport \"core-js/modules/esnext.string.replace-all.js\";\nimport \"core-js/modules/es.array.unscopables.flat-map.js\";\nimport _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport _objectWithoutProperties$1 from '@babel/runtime/helpers/objectWithoutProperties';\nimport _defineProperty$4 from '@babel/runtime/helpers/defineProperty';\nimport React, { forwardRef, useId, useRef, useState, createElement } from 'react';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport clsx, { clsx as clsx$1 } from 'clsx';\nimport _objectDestructuringEmpty from '@babel/runtime/helpers/objectDestructuringEmpty';\nimport _extends$1 from '@babel/runtime/helpers/extends';\nimport { startOfWeek, endOfWeek, eachDayOfInterval, isSameDay, endOfDay, parseISO, setYear, getYear, addYears, setMonth, addMonths, format as format$4, isSameMonth, formatISO, isBefore, startOfDay, isAfter, startOfMonth, addWeeks } from 'date-fns';\nimport { enUS } from 'date-fns/locale';\nimport chunk from 'lodash.chunk';\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n if (!css || typeof document === 'undefined') {\n return;\n }\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\nvar css_248z$13 = \".utrecht-accordion__section{margin-block-end:var(--utrecht-accordion-section-margin-block-end);margin-block-start:var(--utrecht-accordion-section-margin-block-start)}.utrecht-accordion__button{--utrecht-button-focus-scale:1;--utrecht-button-hover-scale:1;--utrecht-button-inline-size:100%;--utrecht-button-subtle-background-color:var(--utrecht-accordion-button-background-color);--utrecht-button-subtle-padding-inline-start:var(--utrecht-accordion-button-padding-inline-start);--utrecht-button-subtle-padding-inline-end:var(--utrecht-accordion-button-padding-inline-end);--utrecht-button-subtle-padding-block-start:var(--utrecht-accordion-button-padding-block-start);--utrecht-button-subtle-padding-block-end:var(--utrecht-accordion-button-padding-block-end);--utrecht-button-subtle-color:var(--utrecht-accordion-button-color);--utrecht-button-subtle-hover-background-color:var(--utrecht-accordion-button-hover-background-color);--utrecht-button-subtle-hover-border-color:var(--utrecht-accordion-button-hover-border-color);--utrecht-button-subtle-hover-color:var(--utrecht-accordion-button-hover-color);--utrecht-button-subtle-active-background-color:var(--utrecht-accordion-button-active-background-color);--utrecht-button-subtle-active-border-color:var(--utrecht-accordion-button-active-border-color);--utrecht-button-subtle-active-color:var(--utrecht-accordion-button-active-color);--utrecht-button-subtle-focus-background-color:var(--utrecht-accordion-button-focus-background-color);--utrecht-button-subtle-focus-border-color:var(--utrecht-accordion-button-focus-border-color);--utrecht-button-subtle-focus-color:var(--utrecht-accordion-button-focus-color);--utrecht-button-subtle-border-color:var(--utrecht-accordion-button-border-color);--utrecht-button-subtle-border-width:var(--utrecht-accordion-button-border-width);justify-content:start!important;position:relative}.utrecht-accordion__button[aria-expanded]:after{background-color:var(--utrecht-accordion-button-icon-background-color);background-position:50%;background-repeat:no-repeat;block-size:var(--utrecht-accordion-button-icon-size);content:\\\"\\\";inline-size:var(--utrecht-accordion-button-icon-size);inset-block-start:0;inset-inline-end:0;position:absolute}.utrecht-accordion__button[aria-expanded=false]:after{background-image:var(--utrecht-accordion-icon-arrow-down,url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='21.39' height='14.39'%3E%3Cpath fill='none' stroke='%231D1D1D' stroke-width='3' stroke-miterlimit='10' d='m15.866 4.135-5.32 5.322-5.322-5.322'/%3E%3C/svg%3E\\\"))}.utrecht-accordion__button[aria-expanded=true]:after{background-image:var(--utrecht-accordion-icon-arrow-up,url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='21.39' height='14.39'%3E%3Cpath fill='none' stroke='%231D1D1D' stroke-width='3' stroke-miterlimit='10' d='m5.223 9.457 5.32-5.322 5.322 5.322'/%3E%3C/svg%3E\\\"));background-position:50%;background-repeat:no-repeat;content:\\\"\\\"}.utrecht-accordion__panel{border-block-start:none;border-color:var(--utrecht-accordion-panel-border-color);border-style:solid;border-width:var(--utrecht-accordion-panel-border-width);padding-block-end:var(--utrecht-accordion-panel-padding-block-end);padding-block-start:var(--utrecht-accordion-panel-padding-block-start);padding-inline-end:var(--utrecht-accordion-panel-padding-inline-end);padding-inline-start:var(--utrecht-accordion-panel-padding-inline-start)}\";\nstyleInject(css_248z$13);\nvar _excluded$1r = [\"appearance\", \"busy\", \"disabled\", \"children\", \"className\", \"hint\", \"pressed\", \"type\"];\nfunction ownKeys$1t(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1t(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1t(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1t(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Button = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var appearance = _ref.appearance,\n busy = _ref.busy,\n disabled = _ref.disabled,\n children = _ref.children,\n className = _ref.className,\n hint = _ref.hint,\n pressed = _ref.pressed,\n type = _ref.type,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1r);\n return jsx(\"button\", _objectSpread$1t(_objectSpread$1t({\n ref: ref,\n className: clsx('utrecht-button', busy && 'utrecht-button--busy', disabled && 'utrecht-button--disabled', type === 'submit' && 'utrecht-button--submit', appearance === 'primary-action-button' && 'utrecht-button--primary-action', appearance === 'secondary-action-button' && 'utrecht-button--secondary-action', appearance === 'subtle-button' && 'utrecht-button--subtle', hint === 'danger' && 'utrecht-button--danger', hint === 'warning' && 'utrecht-button--warning', hint === 'ready' && 'utrecht-button--ready', pressed === true && 'utrecht-button--pressed', className),\n \"aria-busy\": busy || undefined,\n \"aria-pressed\": typeof pressed === 'boolean' ? pressed : undefined,\n disabled: disabled,\n type: type || 'button'\n }, restProps), {}, {\n children: children\n }));\n});\nButton.displayName = 'Button';\nvar PrimaryActionButton = function PrimaryActionButton(_ref2) {\n var args = _extends$1({}, (_objectDestructuringEmpty(_ref2), _ref2));\n return jsx(Button, _objectSpread$1t(_objectSpread$1t({}, args), {}, {\n appearance: \"primary-action-button\"\n }));\n};\nPrimaryActionButton.displayName = 'PrimaryActionButton';\nvar SecondaryActionButton = function SecondaryActionButton(_ref3) {\n var args = _extends$1({}, (_objectDestructuringEmpty(_ref3), _ref3));\n return jsx(Button, _objectSpread$1t(_objectSpread$1t({}, args), {}, {\n appearance: \"secondary-action-button\"\n }));\n};\nSecondaryActionButton.displayName = 'SecondaryActionButton';\nvar SubtleButton = function SubtleButton(_ref4) {\n var args = _extends$1({}, (_objectDestructuringEmpty(_ref4), _ref4));\n return jsx(Button, _objectSpread$1t(_objectSpread$1t({}, args), {}, {\n appearance: \"subtle-button\"\n }));\n};\nSubtleButton.displayName = 'SubtleButton';\nvar _excluded$1q = [\"appearance\", \"className\", \"level\"];\nfunction ownKeys$1s(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1s(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1s(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1s(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var appearance = _ref.appearance,\n className = _ref.className,\n level = _ref.level,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1q);\n var appearances = ['utrecht-heading-1', 'utrecht-heading-2', 'utrecht-heading-3', 'utrecht-heading-4', 'utrecht-heading-5', 'utrecht-heading-6'];\n var HeadingX = level === 2 ? 'h2' : level === 3 ? 'h3' : level === 4 ? 'h4' : level === 5 ? 'h5' : level === 6 ? 'h6' : 'h1';\n var headingClassName = appearance && appearances.indexOf(appearance) !== -1 ? appearance : appearances[level - 1] || 'utrecht-heading-1';\n return jsx(HeadingX, _objectSpread$1s(_objectSpread$1s({\n className: clsx(headingClassName, className)\n }, restProps), {}, {\n ref: ref\n }));\n});\nHeading.displayName = 'Heading';\nvar _excluded$1p = [\"children\", \"group\", \"headingLevel\", \"heading\"];\nfunction ownKeys$1r(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1r(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1r(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1r(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n/**\r\n * Find the first item in an array\r\n */\nvar firstItem = function firstItem(items) {\n return items.length >= 1 ? items[0] : undefined;\n};\n/**\r\n * Find the last item in an array\r\n */\nvar lastItem = function lastItem(items) {\n return items.length >= 1 ? items[items.length - 1] : undefined;\n};\n/**\r\n * Find the next item in an array, compared to an item in the array\r\n */\nvar nextItem = function nextItem(items, item) {\n var currentIndex = item ? items.indexOf(item) : -1;\n return currentIndex >= 0 && currentIndex + 1 <= items.length - 1 ? items[currentIndex + 1] : undefined;\n};\n/**\r\n * Find the previous item in an array, compared to an item in the array\r\n */\nvar previousItem = function previousItem(items, item) {\n var currentIndex = item ? items.indexOf(item) : -1;\n return currentIndex >= 0 && currentIndex - 1 <= items.length - 1 ? items[currentIndex - 1] : undefined;\n};\nvar AccordionSection = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var id = _ref.id,\n label = _ref.label,\n _ref$headingLevel = _ref.headingLevel,\n headingLevel = _ref$headingLevel === void 0 ? 1 : _ref$headingLevel,\n _ref$expanded = _ref.expanded,\n expanded = _ref$expanded === void 0 ? false : _ref$expanded,\n disabled = _ref.disabled,\n section = _ref.section,\n children = _ref.children,\n buttonRef = _ref.buttonRef,\n onActivate = _ref.onActivate,\n onButtonBlur = _ref.onButtonBlur,\n onButtonFocus = _ref.onButtonFocus;\n var panelAttributes = {\n className: clsx('utrecht-accordion__panel', {\n 'utrecht-accordion__panel--expanded': expanded\n }),\n // Use the `hidden` attribute so the toggle works even without CSS\n hidden: !expanded,\n // Use the `aria-hidden` attribute too, so it even works when CSS\n // doesn't use `display: none` to make transitions.\n 'aria-hidden': !expanded\n };\n var idPrefix = 'utrecht-accordion';\n var idSuffix = id || useId();\n var buttonId = \"\".concat(idPrefix).concat(idSuffix, \"-button\");\n var panelId = \"\".concat(idPrefix).concat(idSuffix, \"-panel\");\n // We render `__section` as `div` for a specific reasons:\n // - when a user navigates to the `region` landmark we want the first\n // content of the landmark to be the actual content, instead of starting\n // with the button that controls the region.\n // - we only want expanded sections to show up as landmarks\n return jsxs(\"div\", {\n className: clsx('utrecht-accordion__section'),\n id: id,\n ref: ref,\n children: [jsx(Heading, {\n level: headingLevel,\n className: clsx('utrecht-accordion__header'),\n children: jsx(Button, {\n className: clsx('utrecht-accordion__button'),\n appearance: \"subtle-button\",\n \"aria-expanded\": expanded === true,\n \"aria-controls\": panelId,\n disabled: disabled,\n id: buttonId,\n onClick: function onClick() {\n return typeof onActivate === 'function' && onActivate(ref);\n },\n onFocus: function onFocus() {\n return typeof onButtonFocus === 'function' && onButtonFocus(ref);\n },\n onBlur: function onBlur() {\n return typeof onButtonBlur === 'function' && onButtonBlur(ref);\n },\n ref: buttonRef,\n children: label\n })\n }), section ? jsx(\"section\", _objectSpread$1r(_objectSpread$1r({\n id: panelId,\n \"aria-labelledby\": buttonId\n }, panelAttributes), {}, {\n children: children\n })) : jsx(\"div\", _objectSpread$1r(_objectSpread$1r({}, panelAttributes), {}, {\n children: children\n }))]\n });\n});\nAccordionSection.displayName = 'AccordionSection';\nvar Accordion = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var children = _ref2.children,\n group = _ref2.group,\n headingLevel = _ref2.headingLevel,\n heading = _ref2.heading,\n props = _objectWithoutProperties$1(_ref2, _excluded$1p);\n var headingId = useId();\n return jsxs(Fragment, {\n children: [!!heading && typeof headingLevel === 'number' && jsx(Heading, {\n level: headingLevel,\n children: heading\n }), jsx(\"div\", _objectSpread$1r(_objectSpread$1r({\n className: clsx('utrecht-accordion'),\n role: group ? 'group' : undefined,\n \"aria-labelledby\": group ? headingId : undefined\n }, props), {}, {\n ref: ref,\n children: children\n }))]\n });\n});\nAccordion.displayName = 'Accordion';\nvar useAccordion = function useAccordion(sections, ref) {\n console.log('useAccordion');\n // const sections: AccordionSectionProviderProps[] = [];\n var refs = sections.map(function (_) {\n return useRef(null);\n });\n var buttonRefs = sections.map(function (_) {\n return useRef(null);\n });\n return {\n ref: ref,\n refs: refs,\n buttonRefs: buttonRefs,\n /* ForwardedRef of the last section to receive focus */\n activeElement: null,\n /* ForwardedRef for each section, in document order */\n sections: sections,\n focusNextSection: function focusNextSection(activeElement) {\n var _nextSection$current;\n var index = refs.indexOf(activeElement);\n var buttonRef = index >= 0 ? buttonRefs[index] : undefined;\n var nextSection = buttonRef ? nextItem(buttonRefs, buttonRef) : undefined;\n nextSection === null || nextSection === void 0 || (_nextSection$current = nextSection.current) === null || _nextSection$current === void 0 || _nextSection$current.focus();\n },\n focusFirstSection: function focusFirstSection() {\n var _firstSection$current;\n var firstSection = firstItem(buttonRefs);\n console.log(refs);\n firstSection === null || firstSection === void 0 || (_firstSection$current = firstSection.current) === null || _firstSection$current === void 0 || _firstSection$current.focus();\n },\n focusPreviousSection: function focusPreviousSection(activeElement) {\n var _previousSection$curr;\n var index = refs.indexOf(activeElement);\n var buttonRef = index >= 0 ? buttonRefs[index] : undefined;\n var previousSection = buttonRef ? previousItem(buttonRefs, buttonRef) : undefined;\n previousSection === null || previousSection === void 0 || (_previousSection$curr = previousSection.current) === null || _previousSection$curr === void 0 || _previousSection$curr.focus();\n },\n focusLastSection: function focusLastSection() {\n var _firstSection$current2;\n var firstSection = lastItem(buttonRefs);\n firstSection === null || firstSection === void 0 || (_firstSection$current2 = firstSection.current) === null || _firstSection$current2 === void 0 || _firstSection$current2.focus();\n }\n };\n};\nvar AccordionProvider = function AccordionProvider(_ref4) {\n var sections = _ref4.sections;\n var ref = useRef(null);\n var _useAccordion = useAccordion(sections, ref),\n refs = _useAccordion.refs,\n buttonRefs = _useAccordion.buttonRefs,\n focusNextSection = _useAccordion.focusNextSection,\n focusFirstSection = _useAccordion.focusFirstSection,\n focusLastSection = _useAccordion.focusLastSection,\n focusPreviousSection = _useAccordion.focusPreviousSection;\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n activeElement = _useState2[0],\n setActiveElement = _useState2[1];\n var _useState3 = useState(sections),\n _useState4 = _slicedToArray(_useState3, 2),\n sectionsState = _useState4[0],\n setSectionsState = _useState4[1];\n var handleButtonFocus = function handleButtonFocus(ref) {\n setActiveElement(ref);\n };\n var handleButtonBlur = function handleButtonBlur(_) {\n setActiveElement(null);\n };\n var handleKeyDown = function handleKeyDown(evt) {\n if (evt.code === 'End') {\n focusLastSection();\n } else if (evt.code === 'Home') {\n focusFirstSection();\n } else if (evt.code === 'ArrowDown') {\n if (activeElement) {\n focusNextSection(activeElement);\n }\n } else if (evt.code === 'ArrowUp') {\n if (activeElement) {\n focusPreviousSection(activeElement);\n }\n } else {\n // Do not `preventDefault()`\n return;\n }\n // Prevent scrolling the page\n evt.preventDefault();\n };\n return jsx(Accordion, {\n onKeyDown: handleKeyDown,\n ref: ref,\n children: sectionsState.map(function (section, index) {\n var handleActivate = function handleActivate(ref) {\n var activatedIndex = refs.indexOf(ref);\n // const activatedSection = activatedIndex >= 0 ? sections[index] : undefined;\n setSectionsState(sectionsState.map(function (section, index) {\n if (index === activatedIndex) {\n return _objectSpread$1r(_objectSpread$1r({}, section), {}, {\n expanded: !section.expanded\n });\n } else {\n return section;\n }\n }));\n };\n return /*#__PURE__*/createElement(AccordionSection, _objectSpread$1r(_objectSpread$1r({}, section), {}, {\n ref: refs[index],\n buttonRef: buttonRefs[index],\n key: index,\n onButtonFocus: handleButtonFocus,\n onButtonBlur: handleButtonBlur,\n onActivate: handleActivate\n }), section.body);\n })\n });\n};\nAccordionProvider.displayName = 'AccordionProvider';\nvar css_248z$12 = \".utrecht-alert{background-color:var(--_utrecht-alert-background-color,var(--utrecht-alert-background-color));border-color:var(--_utrecht-alert-border-color,var(--utrecht-alert-border-color));border-radius:var(--utrecht-alert-border-radius,0);border-style:solid;border-width:var(--_utrecht-alert-border-width,var(--utrecht-alert-border-width,0));color:var(--_utrecht-alert-color,var(--utrecht-alert-color));display:grid;gap:var(--utrecht-alert-icon-gap);grid-template-areas:\\\"icon message\\\";grid-template-columns:0fr 100fr;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-start, 0));padding-block-end:var(--utrecht-alert-padding-block-end);padding-block-start:var(--utrecht-alert-padding-block-start);padding-inline-end:var(--utrecht-alert-padding-inline-end);padding-inline-start:var(--utrecht-alert-padding-inline-start)}.utrecht-alert__icon{--utrecht-icon-color:var(--_utrecht-alert-icon-color,var(--utrecht-alert-icon-color));grid-area:icon}.utrecht-alert__message{grid-area:message}.utrecht-alert--info{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-info-color);--_utrecht-alert-background-color:var(--utrecht-alert-info-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-info-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-info-border-width);--_utrecht-alert-color:var(--utrecht-alert-info-color)}.utrecht-alert--ok{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-ok-color);--_utrecht-alert-background-color:var(--utrecht-alert-ok-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-ok-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-ok-border-width);--_utrecht-alert-color:var(--utrecht-alert-ok-color)}.utrecht-alert--warning{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-warning-color);--_utrecht-alert-background-color:var(--utrecht-alert-warning-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-warning-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-warning-border-width);--_utrecht-alert-color:var(--utrecht-alert-warning-color)}.utrecht-alert--error{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-error-color);--_utrecht-alert-background-color:var(--utrecht-alert-error-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-error-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-error-border-width);--_utrecht-alert-color:var(--utrecht-alert-error-color)}\";\nstyleInject(css_248z$12);\nvar _excluded$1o = [\"children\", \"className\", \"icon\", \"type\"];\nfunction ownKeys$1q(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1q(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1q(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1q(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Alert = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n icon = _ref.icon,\n type = _ref.type,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1o);\n return jsxs(\"div\", _objectSpread$1q(_objectSpread$1q({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-alert', {\n 'utrecht-alert--error': type === 'error',\n 'utrecht-alert--info': type === 'info',\n 'utrecht-alert--ok': type === 'ok',\n 'utrecht-alert--warning': type === 'warning'\n }, className),\n children: [icon && jsx(\"div\", {\n className: \"utrecht-alert__icon\",\n children: icon\n }), jsx(\"div\", {\n className: \"utrecht-alert__message\",\n children: children\n })]\n }));\n});\nAlert.displayName = 'Alert';\nvar css_248z$11 = \".utrecht-alert-dialog:not(dialog:not([open])){--utrecht-alert-dialog-margin-block-start:auto;--utrecht-alert-dialog-margin-block-end:auto;background-color:var(--_utrecht-alert-background-color,var(--utrecht-alert-background-color));border-color:var(--utrecht-alert-dialog-border-color);border-radius:var(--utrecht-alert-border-radius,0);border-radius:var(--utrecht-alert-dialog-border-radius,0);border-style:solid;border-width:var(--utrecht-alert-dialog-border-width,0);box-shadow:var(--utrecht-alert-dialog-box-shadow);color:var(--_utrecht-alert-color,var(--utrecht-alert-color));display:grid;gap:var(--utrecht-alert-icon-gap);grid-template-areas:\\\"icon message\\\";grid-template-columns:0fr 100fr;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-start, 0));max-block-size:var(--utrecht-alert-dialog-max-block-size);max-inline-size:var(--utrecht-alert-dialog-max-inline-size);min-block-size:var(--utrecht-alert-dialog-min-block-size);min-inline-size:var(--utrecht-alert-dialog-min-inline-size);padding-block-end:var(--utrecht-alert-padding-block-end);padding-block-start:var(--utrecht-alert-padding-block-start);padding-inline-end:var(--utrecht-alert-padding-inline-end);padding-inline-start:var(--utrecht-alert-padding-inline-start)}.utrecht-alert-dialog::backdrop{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-opacity);--_utrecht-backdrop-fade-in-animation-duration:var(--utrecht-backdrop-fade-in-animation-duration,0);animation-duration:min(var(--utrecht-motion-max-animation-duration,var(--_utrecht-backdrop-fade-in-animation-duration)),var(--_utrecht-backdrop-fade-in-animation-duration,0));animation-name:utrecht-backdrop-fade-in;animation-timing-function:ease-in-out;background-color:var(--utrecht-backdrop-background-color);color:var(--utrecht-backdrop-color);opacity:var(--_utrecht-backdrop-opacity);-webkit-user-select:none;user-select:none}@keyframes utrecht-backdrop-fade-in{0%{opacity:0}to{opacity:var(--_utrecht-backdrop-opacity)}}@media (prefers-reduced-motion:reduce){.utrecht-alert-dialog::backdrop{--_utrecht-backdrop-fade-in-animation-duration:0}}@media (prefers-reduced-transparency:reduce){.utrecht-alert-dialog::backdrop{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-reduced-transparency-opacity,100%)}}.utrecht-alert-dialog__icon{--utrecht-icon-color:var(--_utrecht-alert-icon-color,var(--utrecht-alert-icon-color));grid-area:icon}.utrecht-alert-dialog__message{grid-area:message}.utrecht-alert-dialog--error{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-error-color);--_utrecht-alert-background-color:var(--utrecht-alert-error-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-error-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-error-border-width);--_utrecht-alert-color:var(--utrecht-alert-error-color)}.utrecht-alert-dialog--info{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-info-color);--_utrecht-alert-background-color:var(--utrecht-alert-info-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-info-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-info-border-width);--_utrecht-alert-color:var(--utrecht-alert-info-color)}.utrecht-alert-dialog--warning{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-warning-color);--_utrecht-alert-background-color:var(--utrecht-alert-warning-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-warning-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-warning-border-width);--_utrecht-alert-color:var(--utrecht-alert-warning-color)}\";\nstyleInject(css_248z$11);\nvar _excluded$1n = [\"children\", \"className\", \"icon\", \"type\"];\nfunction ownKeys$1p(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1p(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1p(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1p(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar AlertDialog = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n icon = _ref.icon,\n type = _ref.type,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1n);\n return jsxs(\"dialog\", _objectSpread$1p(_objectSpread$1p({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-alert-dialog', {\n 'utrecht-alert-dialog--error': type === 'error',\n 'utrecht-alert-dialog--info': type === 'info',\n 'utrecht-alert-dialog--warning': type === 'warning',\n className: className\n }),\n children: [icon && jsx(\"div\", {\n className: \"utrecht-alert-dialog__icon\",\n children: icon\n }), jsx(\"div\", {\n className: \"utrecht-alert-dialog__message\",\n children: children\n })]\n }));\n});\nAlertDialog.displayName = 'AlertDialog';\nvar css_248z$10 = \".utrecht-index-char-nav{--utrecht-button-padding-inline-start:1ch;--utrecht-button-padding-inline-end:1ch;display:flex;flex-wrap:wrap;gap:var(--utrecht-index-char-nav-gap);margin-block-end:var(--utrecht-index-char-nav-margin-block-end);margin-block-start:var(--utrecht-index-char-nav-margin-block-start)}.utrecht-index-char-nav__link--current{--utrecht-button-primary-action-font-weight:var(--utrecht-index-char-nav-link-current-font-weight);--utrecht-button-link-primary-action-font-weight:var(--utrecht-index-char-nav-link-current-font-weight)}.utrecht-index-char-nav__link--disabled{pointer-events:none}\";\nstyleInject(css_248z$10);\nvar _excluded$1m = [\"appearance\", \"children\", \"className\", \"external\", \"href\", \"placeholder\", \"role\"];\nfunction ownKeys$1o(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1o(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1o(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1o(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar onKeyDown = function onKeyDown(evt) {\n var _evt$target;\n if (evt.key === ' ' && typeof ((_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.click) === 'function') {\n // Prevent other side-effects, such as scrolling\n evt.preventDefault();\n // Navigate to the link target\n evt.target.click();\n }\n};\nvar ButtonLink = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var appearance = _ref.appearance,\n children = _ref.children,\n className = _ref.className,\n external = _ref.external,\n href = _ref.href,\n placeholder = _ref.placeholder,\n role = _ref.role,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1m);\n var props = restProps;\n if (role === 'button') {\n // When this link is announced as button by accessibility tools,\n // it should also behave like a button. Links are not activated\n // using `Space`, so we need to implement that behaviour here\n // to reach parity with the `button` element.\n props = _objectSpread$1o(_objectSpread$1o({}, restProps), {}, {\n onKeyDown: onKeyDown\n });\n }\n return jsx(\"a\", _objectSpread$1o(_objectSpread$1o({\n href: placeholder ? undefined : href,\n ref: ref,\n role: role || (placeholder ? 'link' : undefined),\n className: clsx('utrecht-button-link', 'utrecht-button-link--html-a', {\n 'utrecht-button-link--external': external,\n 'utrecht-button-link--primary-action': appearance === 'primary-action-button',\n 'utrecht-button-link--secondary-action': appearance === 'secondary-action-button',\n 'utrecht-button-link--subtle': appearance === 'subtle-button',\n 'utrecht-button-link--placeholder': placeholder\n }, className),\n rel: external ? 'external noopener noreferrer' : undefined,\n \"aria-disabled\": placeholder ? 'true' : undefined\n }, props), {}, {\n children: children\n }));\n});\nButtonLink.displayName = 'ButtonLink';\nvar _excluded$1l = [\"component\", \"currentChar\", \"characters\", \"onLinkClick\", \"Link\"];\nfunction ownKeys$1n(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1n(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1n(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1n(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar IndexCharNav = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var component = _ref.component,\n currentChar = _ref.currentChar,\n characters = _ref.characters,\n onLinkClick = _ref.onLinkClick,\n Link = _ref.Link,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1l);\n var LinkComponent = Link ? Link : ButtonLink;\n var links = [];\n if (component === 'button') {\n links = characters.map(function (_ref2) {\n var _char = _ref2[\"char\"],\n disabled = _ref2.disabled;\n var current = currentChar === _char;\n return /*#__PURE__*/createElement(Button, _objectSpread$1n(_objectSpread$1n({}, restProps), {}, {\n className: clsx({\n 'utrecht-index-char-nav__link--current': current\n }),\n ref: ref,\n key: _char,\n appearance: current ? 'primary-action-button' : 'secondary-action-button',\n disabled: disabled,\n onClick: function onClick() {\n return typeof onLinkClick === 'function' && onLinkClick(_char);\n },\n pressed: current\n }), _char);\n });\n } else {\n links = characters.map(function (_ref3) {\n var _char2 = _ref3[\"char\"],\n disabled = _ref3.disabled,\n href = _ref3.href;\n var current = currentChar === _char2;\n var customLinkComponentStyle = clsx('utrecht-button-link', 'utrecht-button-link--html-a', 'utrecht-index-char-nav__link', {\n 'utrecht-index-char-nav__link--current': current,\n 'utrecht-button-link--primary-action': current,\n 'utrecht-button-link--secondary-action': !current,\n 'utrecht-index-char-nav__link--disabled': disabled,\n 'utrecht-button-link--placeholder': disabled\n });\n return jsx(LinkComponent, _objectSpread$1n(_objectSpread$1n({\n ref: ref,\n appearance: Link ? undefined : current ? 'primary-action-button' : 'secondary-action-button',\n href: href,\n className: clsx(Link && customLinkComponentStyle, 'utrecht-index-char-nav__link', {\n 'utrecht-index-char-nav__link--disabled': disabled,\n 'utrecht-index-char-nav__link--current': current\n }),\n \"aria-current\": current ? 'page' : undefined,\n \"aria-disabled\": disabled,\n placeholder: Link ? undefined : disabled,\n onClick: function onClick() {\n return typeof onLinkClick === 'function' && onLinkClick(_char2);\n }\n }, restProps), {}, {\n children: _char2\n }), _char2);\n });\n }\n return jsx(\"div\", {\n className: \"utrecht-index-char-nav\",\n role: \"group\",\n children: links\n });\n});\nIndexCharNav.displayName = 'IndexCharNav';\nvar css_248z$$ = \".utrecht-article{max-inline-size:var(--utrecht-article-max-inline-size)}\";\nstyleInject(css_248z$$);\nvar _excluded$1k = [\"children\", \"className\"];\nfunction ownKeys$1m(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1m(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1m(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1m(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Article = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1k);\n return jsx(\"article\", _objectSpread$1m(_objectSpread$1m({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-article', className),\n children: children\n }));\n});\nArticle.displayName = 'Article';\nvar css_248z$_ = \".utrecht-backdrop{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-opacity);--_utrecht-backdrop-fade-in-animation-duration:var(--utrecht-backdrop-fade-in-animation-duration,0);animation-duration:min(var(--utrecht-motion-max-animation-duration,var(--_utrecht-backdrop-fade-in-animation-duration)),var(--_utrecht-backdrop-fade-in-animation-duration,0));animation-name:utrecht-backdrop-fade-in;animation-timing-function:ease-in-out;background-color:var(--utrecht-backdrop-background-color);color:var(--utrecht-backdrop-color);display:block;inset-block-end:0;inset-block-start:0;inset-inline-end:0;inset-inline-start:0;opacity:var(--_utrecht-backdrop-opacity);position:absolute;-webkit-user-select:none;user-select:none;z-index:var(--utrecht-backdrop-z-index)}@keyframes utrecht-backdrop-fade-in{0%{opacity:0}to{opacity:var(--_utrecht-backdrop-opacity)}}@media (prefers-reduced-motion:reduce){.utrecht-backdrop{--_utrecht-backdrop-fade-in-animation-duration:0}}@media (prefers-reduced-transparency:reduce){.utrecht-backdrop{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-reduced-transparency-opacity,100%)}}.utrecht-backdrop--reduced-motion{--_utrecht-backdrop-fade-in-animation-duration:0}.utrecht-backdrop--reduced-transparency{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-reduced-transparency-opacity,100%)}.utrecht-backdrop--viewport{position:fixed}\";\nstyleInject(css_248z$_);\nvar _excluded$1j = [\"children\", \"className\"];\nfunction ownKeys$1l(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1l(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1l(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1l(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Backdrop = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1j);\n return jsx(\"div\", _objectSpread$1l(_objectSpread$1l({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-backdrop', className),\n children: children\n }));\n});\nBackdrop.displayName = 'Backdrop';\nvar css_248z$Z = \".utrecht-badge-counter{background-color:var(--utrecht-badge-counter-background-color,var(--utrecht-badge-background-color,#000));border-radius:var(--utrecht-badge-counter-border-radius,var(--utrecht-badge-border-radius,.5ch));color:var(--utrecht-badge-counter-color,var(--utrecht-badge-color,#fff));display:inline-block;font-family:var(--utrecht-document-font-family,sans-serif);font-size:var(--utrecht-badge-counter-font-size);font-style:var(--utrecht-badge-counter-font-style,normal);font-weight:var(--utrecht-badge-counter-font-weight,var(--utrecht-badge-font-weight,bold));line-height:1;max-block-size:max-content;max-inline-size:max-content;min-block-size:var(--utrecht-badge-counter-min-size,1em);min-inline-size:var(--utrecht-badge-counter-min-size,1em);padding-block-end:var(--utrecht-badge-counter-padding-block,var(--utrecht-badge-padding-block,.5ex));padding-block-start:var(--utrecht-badge-counter-padding-block,var(--utrecht-badge-padding-block,.5ex));padding-inline-end:var(--utrecht-badge-counter-padding-inline,var(--utrecht-badge-padding-inline,.5ch));padding-inline-start:var(--utrecht-badge-counter-padding-inline,var(--utrecht-badge-padding-inline,.5ch));text-align:center;text-decoration:none;white-space:nowrap}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-badge-counter{border:1px solid}}\";\nstyleInject(css_248z$Z);\nvar _excluded$1i = [\"children\", \"className\", \"value\"];\nfunction ownKeys$1k(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1k(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1k(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1k(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar BadgeCounter = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n value = _ref.value,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1i);\n var props = _objectSpread$1k({\n children: children,\n className: clsx('utrecht-badge-counter', className)\n }, restProps);\n return typeof value !== 'undefined' ? jsx(\"data\", _objectSpread$1k(_objectSpread$1k({}, props), {}, {\n value: value,\n ref: ref\n })) : jsx(\"span\", _objectSpread$1k(_objectSpread$1k({}, props), {}, {\n ref: ref\n }));\n});\nBadgeCounter.displayName = 'BadgeCounter';\nvar css_248z$Y = \".utrecht-badge-list{display:flex;flex-wrap:wrap;gap:var(--utrecht-badge-list-item-margin-block) var(--utrecht-badge-list-item-margin-inline)}\";\nstyleInject(css_248z$Y);\nvar _excluded$1h = [\"children\", \"className\"];\nfunction ownKeys$1j(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1j(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1j(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1j(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar BadgeList = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1h);\n return jsx(\"div\", _objectSpread$1j(_objectSpread$1j({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-badge-list', className),\n children: children\n }));\n});\nBadgeList.displayName = 'BadgeList';\nvar css_248z$X = \".utrecht-breadcrumb{--utrecht-focus-background-color:var(--utrecht-breadcrumb-link-focus-background-color);--utrecht-link-background-color:var(--utrecht-breadcrumb-link-background-color);--utrecht-link-focus-color:var(--utrecht-breadcrumb-link-focus-color,var(--utrecht-breadcrumb-link-color));--utrecht-link-focus-text-decoration:var(--utrecht-link-text-decoration);--utrecht-link-hover-color:var(--utrecht-breadcrumb-link-color);--utrecht-link-hover-text-decoration:var(--utrecht-link-text-decoration);--utrecht-link-visited-color:var(--utrecht-breadcrumb-link-color);--utrecht-link-visited-text-decoration:var(--utrecht-link-text-decoration);--utrecht-link-color:var(--utrecht-breadcrumb-link-color);--utrecht-link-placeholder-color:var(--utrecht-link-breadcrumb-link-disabled-color);font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-breadcrumb-font-size);text-transform:var(--utrecht-document-text-transform,inherit)}.utrecht-breadcrumb__heading{display:none}.utrecht-breadcrumb__list{display:flex;flex-wrap:wrap;min-block-size:var(--utrecht-breadcrumb-min-block-size)}.utrecht-breadcrumb__list--html-ol{list-style:none;padding-inline-start:0}.utrecht-breadcrumb__list--html-ol,.utrecht-breadcrumb__list--html-p{margin-block-end:0;margin-block-start:0}.utrecht-breadcrumb__item{block-size:100%}.utrecht-breadcrumb__link{--utrecht-icon-size:var(--utrecht-breadcrumb-link-icon-size);--utrecht-link-icon-size:var(--utrecht-breadcrumb-link-icon-size);background-color:var(--utrecht-breadcrumb-link-background-color);display:inline-block;padding-block-end:var(--utrecht-breadcrumb-item-padding-block-end,8px);padding-block-start:var(--utrecht-breadcrumb-item-padding-block-start,8px);padding-inline-end:var(--utrecht-breadcrumb-item-padding-inline-end,8px);padding-inline-start:var(--utrecht-breadcrumb-item-padding-inline-start,8px)}.utrecht-breadcrumb__link--disabled{--utrecht-link-placeholder-color:var(--utrecht-breadcrumb-link-disabled-color,var(--utrecht-breadcrumb-link-color));background-color:var(--utrecht-breadcrumb-link-disabled-background-color,var(--utrecht-breadcrumb-link-background-color));color:var(--utrecht-link-placeholder-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-breadcrumb__link--current{--utrecht-link-current-font-weight:var(--utrecht-breadcrumb-nav-link-current-font-weight,inherit);cursor:var(--utrecht-action-inert-cursor,default);font-weight:var(--utrecht-breadcrumb-nav-link-current-font-weight,inherit)}.utrecht-breadcrumb__separator,.utrecht-breadcrumb__separator--html-li{--_utrecht-breadcrumb-separator-display:inline-flex;--utrecht-icon-size:var(--utrecht-breadcrumb-separator-icon-size);align-items:center;color:var(--utrecht-breadcrumb-separator-color);cursor:var(--utrecht-action-inert-cursor,default);display:var(--_utrecht-breadcrumb-separator-display);inline-size:fit-content;-webkit-user-select:none;user-select:none}.utrecht-breadcrumb--arrows{--utrecht-breadcrumb-arrow-size:24px;min-block-size:var(--utrecht-breadcrumb-min-block-size);overflow:hidden}.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link{background-color:var(--utrecht-breadcrumb-arrows-link-background-color);padding-inline-end:0;position:relative}.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link:after,.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link:before{block-size:0;border-block-end-width:var(--utrecht-breadcrumb-min-block-size);border-block-start-width:var(--utrecht-breadcrumb-min-block-size);border-color:transparent;border-style:solid;content:\\\" \\\";display:block;inline-size:0;inset-block-start:50%;inset-inline-start:100%;margin-block-start:calc(var(--utrecht-breadcrumb-min-block-size)*-1);position:absolute}.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link:after{border-inline-start-color:var(--utrecht-breadcrumb-arrows-link-background-color);border-inline-start-width:var(--utrecht-breadcrumb-arrow-size);z-index:2}.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link:before{border-inline-start-color:var(--utrecht-document-background-color);border-inline-start-width:var(--utrecht-breadcrumb-arrow-size);margin-block-start:calc(var(--utrecht-breadcrumb-min-block-size)*-1);margin-inline-start:1px;z-index:1}.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link--focus,.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link:focus{--utrecht-link-focus-background-color:var(--utrecht-breadcrumb-arrows-link-focus-background-color);background-color:var(--utrecht-breadcrumb-arrows-link-focus-background-color)}.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link--focus:after,.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link:focus:after{border-inline-start-color:var(--utrecht-breadcrumb-arrows-link-focus-background-color)}.utrecht-breadcrumb--arrows .utrecht-breadcrumb__item~.utrecht-breadcrumb__item .utrecht-breadcrumb__link,.utrecht-breadcrumb--arrows .utrecht-breadcrumb__link~.utrecht-breadcrumb__link{padding-inline-start:calc(var(--utrecht-breadcrumb-item-padding-inline-start) + var(--utrecht-breadcrumb-arrow-size))}.utrecht-breadcrumb__item~.utrecht-breadcrumb__item{margin-inline-start:var(--utrecht-breadcrumb-item-divider-inline-size)}\";\nstyleInject(css_248z$X);\nvar _excluded$1g = [\"boxContent\", \"children\", \"className\", \"external\", \"href\", \"placeholder\", \"role\"];\nfunction ownKeys$1i(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1i(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1i(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1i(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Link = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var boxContent = _ref.boxContent,\n children = _ref.children,\n className = _ref.className,\n external = _ref.external,\n href = _ref.href,\n placeholder = _ref.placeholder,\n role = _ref.role,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1g);\n return (\n // \"utrecht-link--telephone\" does not have a corresponding API,\n // since it is primarily a basis for implementing input[href^=\"tel\"].\n // Telephone number rendering in React is best achieved using composition\n // of the TelephoneValue component.\n jsx(\"a\", _objectSpread$1i(_objectSpread$1i({\n href: placeholder ? undefined : href,\n ref: ref,\n role: role || (placeholder ? 'link' : undefined),\n className: clsx('utrecht-link', 'utrecht-link--html-a', {\n 'utrecht-link--box-content': boxContent,\n 'utrecht-link--external': external,\n 'utrecht-link--placeholder': placeholder\n }, className),\n \"aria-disabled\": placeholder ? 'true' : undefined,\n rel: external ? 'external noopener noreferrer' : undefined\n }, restProps), {}, {\n children: children\n }))\n );\n});\nLink.displayName = 'Link';\nvar _excluded$1f = [\"appearance\", \"children\", \"className\", \"headingLevel\", \"label\"],\n _excluded2$4 = [\"className\", \"children\"],\n _excluded3$1 = [\"className\", \"children\"],\n _excluded4$1 = [\"children\", \"disabled\", \"current\", \"href\", \"index\", \"rel\", \"role\", \"Link\", \"className\"];\nfunction ownKeys$1h(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1h(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1h(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1h(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar useMicrodataItem = function useMicrodataItem(_ref) {\n var prop = _ref.prop,\n type = _ref.type;\n return {\n itemScope: true,\n itemType: type,\n itemProp: prop\n };\n};\nvar useMicrodataProp = function useMicrodataProp(prop) {\n return {\n itemProp: prop\n };\n};\nvar BreadcrumbNav = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var appearance = _ref2.appearance,\n children = _ref2.children,\n className = _ref2.className,\n _ref2$headingLevel = _ref2.headingLevel,\n headingLevel = _ref2$headingLevel === void 0 ? 2 : _ref2$headingLevel,\n label = _ref2.label,\n restProps = _objectWithoutProperties$1(_ref2, _excluded$1f);\n var headingId = label ? useId() : undefined;\n return jsxs(\"nav\", _objectSpread$1h(_objectSpread$1h({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-breadcrumb', 'utrecht-breadcrumb--html-ol', {\n 'utrecht-breadcrumb--arrows': appearance === 'arrows'\n }, className),\n \"aria-labelledby\": headingId,\n children: [label && jsx(Heading, {\n id: headingId,\n className: \"utrecht-breadcrumb__heading\",\n level: headingLevel,\n \"aria-hidden\": \"true\",\n children: label\n }), jsx(\"ol\", _objectSpread$1h(_objectSpread$1h({\n className: \"utrecht-breadcrumb__list utrecht-breadcrumb__list--html-ol\"\n }, useMicrodataItem({\n type: 'https://schema.org/BreadcrumbList'\n })), {}, {\n children: children\n }))]\n }));\n});\nBreadcrumbNav.displayName = 'BreadcrumbNav';\nvar BreadcrumbItem = /*#__PURE__*/forwardRef(function (_ref3, ref) {\n var className = _ref3.className,\n children = _ref3.children,\n restProps = _objectWithoutProperties$1(_ref3, _excluded2$4);\n return jsx(\"li\", _objectSpread$1h(_objectSpread$1h(_objectSpread$1h({\n className: clsx('utrecht-breadcrumb__item', className)\n }, useMicrodataItem({\n type: 'https://schema.org/ListItem',\n prop: 'itemListElement'\n })), {}, {\n ref: ref\n }, restProps), {}, {\n children: children\n }));\n});\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nvar BreadcrumbSeparator = /*#__PURE__*/forwardRef(function (_ref4, ref) {\n var className = _ref4.className,\n children = _ref4.children,\n restProps = _objectWithoutProperties$1(_ref4, _excluded3$1);\n return jsx(\"li\", _objectSpread$1h(_objectSpread$1h({\n \"aria-hidden\": \"true\",\n hidden: true,\n style: {\n display: 'var(--_utrecht-breadcrumb-separator-display, block)'\n },\n className: clsx('utrecht-breadcrumb__separator', 'utrecht-breadcrumb__separator--html-li', className),\n ref: ref\n }, restProps), {}, {\n children: children\n }));\n});\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\nvar BreadcrumbLink = /*#__PURE__*/forwardRef(function (_ref5, ref) {\n var children = _ref5.children,\n disabled = _ref5.disabled,\n current = _ref5.current,\n href = _ref5.href,\n index = _ref5.index,\n rel = _ref5.rel,\n role = _ref5.role,\n _ref5$Link = _ref5.Link,\n Link$1 = _ref5$Link === void 0 ? Link : _ref5$Link,\n className = _ref5.className,\n restProps = _objectWithoutProperties$1(_ref5, _excluded4$1);\n var DefaultLinkComponent = Link$1;\n var LinkComponent = Link$1 || DefaultLinkComponent;\n return jsx(BreadcrumbItem, {\n children: jsxs(LinkComponent, _objectSpread$1h(_objectSpread$1h(_objectSpread$1h({\n className: clsx('utrecht-breadcrumb__link', className, {\n 'utrecht-breadcrumb__link--current': current,\n 'utrecht-breadcrumb__link--disabled': disabled\n }),\n href: disabled ? undefined : href,\n rel: rel,\n role: role || (disabled ? 'link' : undefined),\n \"aria-current\": current && 'page',\n \"aria-disabled\": disabled ? 'true' : undefined\n }, useMicrodataProp('item')), restProps), {}, {\n ref: ref,\n children: [jsx(\"span\", _objectSpread$1h(_objectSpread$1h({\n className: \"utrecht-breadcrumb__text\"\n }, useMicrodataProp('name')), {}, {\n children: children\n })), typeof index === 'number' ? jsx(\"meta\", _objectSpread$1h(_objectSpread$1h({}, useMicrodataProp('position')), {}, {\n content: String(index + 1)\n })) : null]\n }))\n });\n});\nBreadcrumbLink.displayName = 'BreadcrumbLink';\nvar css_248z$W = \".utrecht-button{--_utrecht-button-background-color:var(\\n --_utrecht-button-hint-background-color,var(--_utrecht-button-appearance-background-color,var(--utrecht-button-background-color))\\n );--_utrecht-button-color:var(\\n --_utrecht-button-hint-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-color))\\n );--_utrecht-button-border-color:var(\\n --_utrecht-button-hint-border-color,var(--_utrecht-button-appearance-border-color,var(--utrecht-button-border-color,transparent))\\n );--_utrecht-button-border-bottom-color:var(\\n --_utrecht-button-hint-border-bottom-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-border-bottom-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-border-bottom-color,var(--utrecht-button-border-color,transparent))\\n )\\n )\\n )\\n );--_utrecht-button-disabled-background-color:var(\\n --_utrecht-button-hint-disabled-background-color,var(\\n --_utrecht-button-appearance-disabled-background-color,var(--utrecht-button-disabled-background-color,var(--utrecht-button-background-color))\\n )\\n );--_utrecht-button-disabled-border-color:var(\\n --_utrecht-button-hint-disabled-border-color,var(\\n --_utrecht-button-appearance-disabled-border-color,var(--utrecht-button-disabled-border-color,var(--utrecht-button-border-color))\\n )\\n );--_utrecht-button-disabled-color:var(\\n --_utrecht-button-hint-disabled-color,var(--_utrecht-button-appearance-disabled-color,var(--utrecht-button-disabled-color,var(--utrecht-button-color)))\\n );--_utrecht-button-pressed-background-color:var(\\n --_utrecht-button-hint-pressed-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-pressed-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-pressed-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-border-color:var(\\n --_utrecht-button-hint-pressed-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-pressed-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-pressed-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-color:var(\\n --_utrecht-button-hint-pressed-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-pressed-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-pressed-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-focus-background-color:var(\\n --_utrecht-button-hint-focus-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-focus-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-focus-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-border-color:var(\\n --_utrecht-button-hint-focus-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-focus-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-focus-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-color:var(\\n --_utrecht-button-hint-focus-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-focus-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-focus-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-hover-background-color:var(\\n --_utrecht-button-hint-hover-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-hover-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-hover-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-border-color:var(\\n --_utrecht-button-hint-hover-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-hover-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-hover-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-color:var(\\n --_utrecht-button-hint-hover-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-hover-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-hover-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-active-background-color:var(\\n --_utrecht-button-hint-active-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-active-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-active-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-border-color:var(\\n --_utrecht-button-hint-active-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-active-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-active-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-color:var(\\n --_utrecht-button-hint-active-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-active-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-active-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-border-width:var(--_utrecht-button-appearance-border-width,var(--utrecht-button-border-width,0));--_utrecht-button-border-block-end-width:var(\\n --utrecht-button-border-bottom-width,var(--_utrecht-button-border-width,0)\\n );--utrecht-icon-size:var(--utrecht-button-icon-size,1em);align-items:center;background-color:var(--_utrecht-button-background-color);border-block-end-color:var(--_utrecht-button-border-bottom-color);border-block-end-width:var(--_utrecht-button-border-block-end-width);border-color:var(--_utrecht-button-border-color);border-radius:var(--utrecht-button-border-radius);border-style:solid;border-width:var(--_utrecht-button-border-width);box-sizing:border-box;color:var(--_utrecht-button-color);cursor:var(--utrecht-action-activate-cursor,revert);display:inline-flex;font-family:var(--utrecht-button-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-button-font-size,var(--utrecht-document-font-family,inherit));font-weight:var(--_utrecht-button-appearance-font-weight,var(--utrecht-button-font-weight));gap:var(--utrecht-button-icon-gap);inline-size:var(--utrecht-button-inline-size,auto);justify-content:center;line-height:var(--utrecht-button-line-height);min-block-size:var(--utrecht-button-min-block-size,44px);min-inline-size:var(--utrecht-button-min-inline-size,44px);padding-block-end:var(--utrecht-button-padding-block-end);padding-block-start:var(--utrecht-button-padding-block-start);padding-inline-end:var(--utrecht-button-padding-inline-end);padding-inline-start:var(--utrecht-button-padding-inline-start);text-transform:var(--utrecht-button-text-transform);-webkit-user-select:none;user-select:none}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-button{--_utrecht-button-disabled-border-color:GrayText;--_utrecht-button-disabled-color:GrayText;background-color:ButtonFace;border-color:buttonborder;color:ButtonText}}.utrecht-button--distanced{margin-block-end:var(--utrecht-button-margin-block-end);margin-block-start:var(--utrecht-button-margin-block-start);margin-inline-end:var(--utrecht-button-margin-inline-end);margin-inline-start:var(--utrecht-button-margin-inline-start)}.utrecht-button--submit{cursor:var(--utrecht-action-submit-cursor,revert)}.utrecht-button--busy{cursor:var(--utrecht-action-busy-cursor,wait)}.utrecht-button--pressed{background-color:var(--_utrecht-button-pressed-background-color);border-color:var(--_utrecht-button-pressed-border-color);color:var(--_utrecht-button-pressed-color)}.utrecht-button--disabled,.utrecht-button:disabled{background-color:var(--_utrecht-button-disabled-background-color);border-color:var(--_utrecht-button-disabled-border-color);color:var(--_utrecht-button-disabled-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-button--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-button--focus:not(.utrecht-button--disabled){background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-button:focus,.utrecht-button:focus:not(:disabled,[aria-disabled=true],.utrecht-button--disabled){--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-button:focus:not(:disabled,[aria-disabled=true],.utrecht-button--disabled){background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-button:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-button--hover:not(:disabled,.utrecht-button--disabled),.utrecht-button:hover:not(:disabled,[aria-disabled=true],.utrecht-button--disabled){background-color:var(--_utrecht-button-hover-background-color);border-color:var(--_utrecht-button-hover-border-color);color:var(--_utrecht-button-hover-color);scale:var(--utrecht-button-hover-scale,1)}.utrecht-button--active,.utrecht-button:active:not(:disabled,[aria-disabled=true],.utrecht-button--disabled){background-color:var(--_utrecht-button-active-background-color);border-color:var(--_utrecht-button-active-border-color);color:var(--_utrecht-button-active-color)}.utrecht-button--primary-action{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-primary-action-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-primary-action-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-primary-action-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-primary-action-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-primary-action-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-primary-action-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-primary-action-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-primary-action-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-primary-action-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-primary-action-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-primary-action-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-primary-action-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-primary-action-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-primary-action-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-primary-action-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-primary-action-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-primary-action-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-primary-action-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-primary-action-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-primary-action-pressed-color)}.utrecht-button--secondary-action{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-secondary-action-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-secondary-action-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-secondary-action-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-secondary-action-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-secondary-action-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-secondary-action-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-secondary-action-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-secondary-action-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-secondary-action-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-secondary-action-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-secondary-action-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-secondary-action-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-secondary-action-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-secondary-action-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-secondary-action-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-secondary-action-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-secondary-action-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-secondary-action-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-secondary-action-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-secondary-action-pressed-color)}.utrecht-button--subtle{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-subtle-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-subtle-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-subtle-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-subtle-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-subtle-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-subtle-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-subtle-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-subtle-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-subtle-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-subtle-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-subtle-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-subtle-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-subtle-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-subtle-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-subtle-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-subtle-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-subtle-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-subtle-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-subtle-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-subtle-pressed-color)}.utrecht-button--primary-action.utrecht-button--danger{--_utrecht-button-hint-active-background-color:var(--utrecht-button-primary-action-danger-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-primary-action-danger-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-primary-action-danger-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-primary-action-danger-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-primary-action-danger-border-color);--_utrecht-button-hint-color:var(--utrecht-button-primary-action-danger-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-primary-action-danger-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-primary-action-danger-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-primary-action-danger-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-primary-action-danger-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-primary-action-danger-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-primary-action-danger-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-primary-action-danger-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-primary-action-danger-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-primary-action-danger-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-primary-action-danger-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-primary-action-danger-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-primary-action-danger-pressed-color)}.utrecht-button--primary-action.utrecht-button--ready{--_utrecht-button-hint-active-background-color:var(--utrecht-button-primary-action-ready-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-primary-action-ready-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-primary-action-ready-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-primary-action-ready-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-primary-action-ready-border-color);--_utrecht-button-hint-color:var(--utrecht-button-primary-action-ready-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-primary-action-ready-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-primary-action-ready-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-primary-action-ready-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-primary-action-ready-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-primary-action-ready-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-primary-action-ready-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-primary-action-ready-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-primary-action-ready-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-primary-action-ready-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-primary-action-ready-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-primary-action-ready-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-primary-action-ready-pressed-color)}.utrecht-button--primary-action.utrecht-button--warning{--_utrecht-button-hint-active-background-color:var(--utrecht-button-primary-action-warning-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-primary-action-warning-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-primary-action-warning-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-primary-action-warning-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-primary-action-warning-border-color);--_utrecht-button-hint-color:var(--utrecht-button-primary-action-warning-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-primary-action-warning-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-primary-action-warning-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-primary-action-warning-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-primary-action-warning-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-primary-action-warning-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-primary-action-warning-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-primary-action-warning-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-primary-action-warning-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-primary-action-warning-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-primary-action-warning-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-primary-action-warning-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-primary-action-warning-pressed-color)}.utrecht-button--secondary-action.utrecht-button--danger{--_utrecht-button-hint-active-background-color:var(--utrecht-button-secondary-action-danger-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-secondary-action-danger-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-secondary-action-danger-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-secondary-action-danger-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-secondary-action-danger-border-color);--_utrecht-button-hint-color:var(--utrecht-button-secondary-action-danger-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-secondary-action-danger-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-secondary-action-danger-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-secondary-action-danger-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-secondary-action-danger-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-secondary-action-danger-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-secondary-action-danger-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-secondary-action-danger-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-secondary-action-danger-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-secondary-action-danger-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-secondary-action-danger-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-secondary-action-danger-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-secondary-action-danger-pressed-color)}.utrecht-button--secondary-action.utrecht-button--ready{--_utrecht-button-hint-active-background-color:var(--utrecht-button-secondary-action-ready-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-secondary-action-ready-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-secondary-action-ready-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-secondary-action-ready-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-secondary-action-ready-border-color);--_utrecht-button-hint-color:var(--utrecht-button-secondary-action-ready-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-secondary-action-ready-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-secondary-action-ready-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-secondary-action-ready-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-secondary-action-ready-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-secondary-action-ready-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-secondary-action-ready-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-secondary-action-ready-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-secondary-action-ready-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-secondary-action-ready-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-secondary-action-ready-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-secondary-action-ready-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-secondary-action-ready-pressed-color)}.utrecht-button--secondary-action.utrecht-button--warning{--_utrecht-button-hint-active-background-color:var(--utrecht-button-secondary-action-warning-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-secondary-action-warning-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-secondary-action-warning-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-secondary-action-warning-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-secondary-action-warning-border-color);--_utrecht-button-hint-color:var(--utrecht-button-secondary-action-warning-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-secondary-action-warning-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-secondary-action-warning-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-secondary-action-warning-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-secondary-action-warning-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-secondary-action-warning-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-secondary-action-warning-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-secondary-action-warning-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-secondary-action-warning-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-secondary-action-warning-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-secondary-action-warning-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-secondary-action-warning-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-secondary-action-warning-pressed-color)}.utrecht-button--subtle.utrecht-button--danger{--_utrecht-button-hint-active-background-color:var(--utrecht-button-subtle-danger-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-subtle-danger-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-subtle-danger-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-subtle-danger-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-subtle-danger-border-color);--_utrecht-button-hint-color:var(--utrecht-button-subtle-danger-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-subtle-danger-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-subtle-danger-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-subtle-danger-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-subtle-danger-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-subtle-danger-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-subtle-danger-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-subtle-danger-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-subtle-danger-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-subtle-danger-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-subtle-danger-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-subtle-danger-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-subtle-danger-pressed-color)}.utrecht-button--subtle.utrecht-button--ready{--_utrecht-button-hint-active-background-color:var(--utrecht-button-subtle-ready-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-subtle-ready-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-subtle-ready-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-subtle-ready-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-subtle-ready-border-color);--_utrecht-button-hint-color:var(--utrecht-button-subtle-ready-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-subtle-ready-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-subtle-ready-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-subtle-ready-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-subtle-ready-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-subtle-ready-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-subtle-ready-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-subtle-ready-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-subtle-ready-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-subtle-ready-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-subtle-ready-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-subtle-ready-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-subtle-ready-pressed-color)}.utrecht-button--subtle.utrecht-button--warning{--_utrecht-button-hint-active-background-color:var(--utrecht-button-subtle-warning-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-subtle-warning-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-subtle-warning-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-subtle-warning-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-subtle-warning-border-color);--_utrecht-button-hint-color:var(--utrecht-button-subtle-warning-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-subtle-warning-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-subtle-warning-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-subtle-warning-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-subtle-warning-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-subtle-warning-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-subtle-warning-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-subtle-warning-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-subtle-warning-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-subtle-warning-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-subtle-warning-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-subtle-warning-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-subtle-warning-pressed-color)}\";\nstyleInject(css_248z$W);\nvar css_248z$V = \".utrecht-button-group,.utrecht-button-group--distanced{background-color:var(--utrecht-button-group-background-color);display:flex;flex-wrap:wrap;gap:var(--utrecht-button-group-inline-gap,1em);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-button-group-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-button-group-margin-block-start, 0));min-block-size:var(--utrecht-button-block-size);padding-block-end:var(--utrecht-button-group-padding-block-end);padding-block-start:var(--utrecht-button-group-padding-block-start)}.utrecht-button-group--horizontal .utrecht-link-button,.utrecht-button-group:not(.utrecht-button-group--vertical) .utrecht-link-button,.utrecht-button-group__link-button--horizontal{--utrecht-button-padding-inline-end:0;--utrecht-button-padding-inline-start:0}.utrecht-button-group--vertical{flex-direction:column;gap:var(--utrecht-button-group-block-gap,1em)}\";\nstyleInject(css_248z$V);\nvar _excluded$1e = [\"children\", \"className\"];\nfunction ownKeys$1g(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1g(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1g(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1g(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar ButtonGroup = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$1e);\n return jsx(\"p\", _objectSpread$1g(_objectSpread$1g({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-button-group', className),\n children: children\n }));\n});\nButtonGroup.displayName = 'ButtonGroup';\nvar css_248z$U = \".utrecht-button-link{--_utrecht-button-background-color:var(\\n --_utrecht-button-hint-background-color,var(--_utrecht-button-appearance-background-color,var(--utrecht-button-background-color))\\n );--_utrecht-button-color:var(\\n --_utrecht-button-hint-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-color))\\n );--_utrecht-button-border-color:var(\\n --_utrecht-button-hint-border-color,var(--_utrecht-button-appearance-border-color,var(--utrecht-button-border-color,transparent))\\n );--_utrecht-button-border-bottom-color:var(\\n --_utrecht-button-hint-border-bottom-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-border-bottom-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-border-bottom-color,var(--utrecht-button-border-color,transparent))\\n )\\n )\\n )\\n );--_utrecht-button-disabled-background-color:var(\\n --_utrecht-button-hint-disabled-background-color,var(\\n --_utrecht-button-appearance-disabled-background-color,var(--utrecht-button-disabled-background-color,var(--utrecht-button-background-color))\\n )\\n );--_utrecht-button-disabled-border-color:var(\\n --_utrecht-button-hint-disabled-border-color,var(\\n --_utrecht-button-appearance-disabled-border-color,var(--utrecht-button-disabled-border-color,var(--utrecht-button-border-color))\\n )\\n );--_utrecht-button-disabled-color:var(\\n --_utrecht-button-hint-disabled-color,var(--_utrecht-button-appearance-disabled-color,var(--utrecht-button-disabled-color,var(--utrecht-button-color)))\\n );--_utrecht-button-pressed-background-color:var(\\n --_utrecht-button-hint-pressed-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-pressed-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-pressed-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-border-color:var(\\n --_utrecht-button-hint-pressed-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-pressed-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-pressed-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-color:var(\\n --_utrecht-button-hint-pressed-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-pressed-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-pressed-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-focus-background-color:var(\\n --_utrecht-button-hint-focus-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-focus-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-focus-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-border-color:var(\\n --_utrecht-button-hint-focus-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-focus-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-focus-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-color:var(\\n --_utrecht-button-hint-focus-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-focus-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-focus-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-hover-background-color:var(\\n --_utrecht-button-hint-hover-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-hover-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-hover-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-border-color:var(\\n --_utrecht-button-hint-hover-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-hover-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-hover-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-color:var(\\n --_utrecht-button-hint-hover-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-hover-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-hover-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-active-background-color:var(\\n --_utrecht-button-hint-active-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-active-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-active-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-border-color:var(\\n --_utrecht-button-hint-active-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-active-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-active-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-color:var(\\n --_utrecht-button-hint-active-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-active-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-active-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-border-width:var(--_utrecht-button-appearance-border-width,var(--utrecht-button-border-width,0));--_utrecht-button-border-block-end-width:var(\\n --utrecht-button-border-bottom-width,var(--_utrecht-button-border-width,0)\\n );--utrecht-icon-size:var(--utrecht-button-icon-size,1em);align-items:center;background-color:var(--_utrecht-button-background-color);border-block-end-color:var(--_utrecht-button-border-bottom-color);border-block-end-width:var(--_utrecht-button-border-block-end-width);border-color:var(--_utrecht-button-border-color);border-radius:var(--utrecht-button-border-radius);border-style:solid;border-width:var(--_utrecht-button-border-width);box-sizing:border-box;color:var(--_utrecht-button-color);cursor:var(--utrecht-action-activate-cursor,revert);cursor:var(--utrecht-action-navigate-cursor,pointer);display:inline-flex;font-family:var(--utrecht-button-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-button-font-size,var(--utrecht-document-font-family,inherit));font-weight:var(--_utrecht-button-appearance-font-weight,var(--utrecht-button-font-weight));gap:var(--utrecht-button-icon-gap);inline-size:var(--utrecht-button-inline-size,auto);justify-content:center;line-height:var(--utrecht-button-line-height);min-block-size:var(--utrecht-button-min-block-size,44px);min-inline-size:var(--utrecht-button-min-inline-size,44px);padding-block-end:var(--utrecht-button-padding-block-end);padding-block-start:var(--utrecht-button-padding-block-start);padding-inline-end:var(--utrecht-button-padding-inline-end);padding-inline-start:var(--utrecht-button-padding-inline-start);text-decoration:none;text-transform:var(--utrecht-button-text-transform);-webkit-user-select:none;user-select:none}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-button-link{--_utrecht-button-disabled-border-color:GrayText;--_utrecht-button-disabled-color:GrayText;background-color:ButtonFace;border-color:buttonborder;color:ButtonText}}.utrecht-button-link--active{background-color:var(--_utrecht-button-active-background-color);border-color:var(--_utrecht-button-active-border-color);color:var(--_utrecht-button-active-color)}.utrecht-button-link--hover{background-color:var(--_utrecht-button-hover-background-color);border-color:var(--_utrecht-button-hover-border-color);color:var(--_utrecht-button-hover-color);scale:var(--utrecht-button-hover-scale,1)}.utrecht-button-link--focus{background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-button-link--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-button-link--placeholder{background-color:var(--_utrecht-button-disabled-background-color);border-color:var(--_utrecht-button-disabled-border-color);color:var(--_utrecht-button-disabled-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-button-link--html-a:focus{background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-button-link--html-a:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-button-link--html-a:hover{background-color:var(--_utrecht-button-hover-background-color);border-color:var(--_utrecht-button-hover-border-color);color:var(--_utrecht-button-hover-color);scale:var(--utrecht-button-hover-scale,1)}.utrecht-button-link--html-a:active{background-color:var(--_utrecht-button-active-background-color);border-color:var(--_utrecht-button-active-border-color);color:var(--_utrecht-button-active-color)}.utrecht-button-link--primary-action{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-primary-action-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-primary-action-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-primary-action-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-primary-action-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-primary-action-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-primary-action-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-primary-action-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-primary-action-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-primary-action-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-primary-action-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-primary-action-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-primary-action-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-primary-action-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-primary-action-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-primary-action-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-primary-action-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-primary-action-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-primary-action-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-primary-action-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-primary-action-pressed-color)}.utrecht-button-link--secondary-action{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-secondary-action-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-secondary-action-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-secondary-action-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-secondary-action-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-secondary-action-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-secondary-action-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-secondary-action-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-secondary-action-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-secondary-action-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-secondary-action-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-secondary-action-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-secondary-action-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-secondary-action-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-secondary-action-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-secondary-action-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-secondary-action-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-secondary-action-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-secondary-action-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-secondary-action-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-secondary-action-pressed-color)}.utrecht-button-link--subtle{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-subtle-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-subtle-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-subtle-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-subtle-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-subtle-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-subtle-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-subtle-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-subtle-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-subtle-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-subtle-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-subtle-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-subtle-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-subtle-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-subtle-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-subtle-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-subtle-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-subtle-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-subtle-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-subtle-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-subtle-pressed-color)}\";\nstyleInject(css_248z$U);\nvar css_248z$T = \".utrecht-calendar{background-color:var(--utrecht-calendar-background-color);inline-size:fit-content}.utrecht-calendar__table{margin-inline:auto;padding-block-end:var(--utrecht-calendar-table-padding-block-end);padding-block-start:var(--utrecht-calendar-table-padding-block-start)}.utrecht-calendar__table-weeks-item{inline-size:var(--utrecht-calendar-table-weeks-item-width);line-height:var(--utrecht-calendar-table-weeks-item-line-height,inherit);padding-block-end:var(--utrecht-calendar-table-weeks-item-padding-block-end);padding-block-start:var(--utrecht-calendar-table-weeks-item-padding-block-start)}.utrecht-calendar__table-days-item-day{--utrecht-calendar-button-border-color:var(--utrecht-calendar-table-days-item-day-border-color);--utrecht-calendar-button-border-width:var(--utrecht-calendar-table-days-item-day-border-width);--utrecht-calendar-button-color:var(--utrecht-calendar-table-days-item-day-color);block-size:var(--utrecht-calendar-table-days-item-day-size);inline-size:var(--utrecht-calendar-table-days-item-day-size)}.utrecht-calendar__table-days-item-day:hover{--utrecht-calendar-button-hover-background-color:var(--utrecht-calendar-table-days-item-day-hover-background-color);--utrecht-calendar-button-hover-border-color:var(--utrecht-calendar-table-days-item-day-hover-border-color);--utrecht-calendar-button-hover-color:var(--utrecht-calendar-table-days-item-day-hover-color)}.utrecht-calendar__table-days-item-day:focus{--utrecht-calendar-button-focus-background-color:var(--utrecht-calendar-table-days-item-day-focus-background-color);--utrecht-calendar-button-focus-border-color:var(--utrecht-calendar-table-days-item-day-focus-border-color);--utrecht-calendar-button-focus-color:var(--utrecht-calendar-table-days-item-day-focus-color)}.utrecht-calendar__table-days-item-day:active{--utrecht-calendar-button-active-background-color:var(\\n --utrecht-calendar-table-days-item-day-active-background-color\\n );--utrecht-calendar-button-active-border-color:var(--utrecht-calendar-table-days-item-day-active-border-color);--utrecht-calendar-button-active-color:var(--utrecht-calendar-table-days-item-day-active-color)}.utrecht-calendar__table-days-item-day:disabled{--utrecht-calendar-button-disabled-background-color:var(\\n --utrecht-calendar-table-days-item-day-disabled-background-color\\n );--utrecht-calendar-button-disabled-border-color:var(--utrecht-calendar-table-days-item-day-disabled-border-color);--utrecht-calendar-button-disabled-color:var(--utrecht-calendar-table-days-item-day-disabled-color)}.utrecht-calendar__table-days-item-day--out-of-the-month{--utrecht-calendar-button-background-color:var(\\n --utrecht-calendar-table-days-item-day-out-of-the-month-background-color\\n );--utrecht-calendar-button-border-color:var(--utrecht-calendar-table-days-item-day-out-of-the-month-border-color);--utrecht-calendar-button-color:var(--utrecht-calendar-table-days-item-day-out-of-the-month-color)}.utrecht-calendar__table-days-item-day--is-today{--utrecht-calendar-button-font-weight:var(--utrecht-calendar-table-days-item-day-is-today-font-weight);--utrecht-calendar-button-background-color:var(--utrecht-calendar-table-days-item-day-is-today-background-color);--utrecht-calendar-button-border-color:var(--utrecht-calendar-table-days-item-day-is-today-border-color);--utrecht-calendar-button-color:var(--utrecht-calendar-table-days-item-day-is-today-color)}.utrecht-calendar__table-days-item-day--emphasis{--utrecht-calendar-button-font-weight:var(--utrecht-calendar-table-days-item-day-emphasis-font-weight);--utrecht-calendar-button-background-color:var(--utrecht-calendar-table-days-item-day-emphasis-background-color);--utrecht-calendar-button-border-color:var(--utrecht-calendar-table-days-item-day-emphasis-border-color);--utrecht-calendar-button-color:var(--utrecht-calendar-table-days-item-day-emphasis-color)}.utrecht-calendar__table-days-item-day--selected{--utrecht-calendar-button-font-weight:var(--utrecht-calendar-table-days-item-day-selected-font-weight);--utrecht-calendar-button-background-color:var(--utrecht-calendar-table-days-item-day-selected-background-color);--utrecht-calendar-button-border-color:var(--utrecht-calendar-table-days-item-day-selected-border-color);--utrecht-calendar-button-color:var(--utrecht-calendar-table-days-item-day-selected-color)}.utrecht-calendar__navigation{background-color:var(--utrecht-calendar-navigation-background-color);color:var(--utrecht-calendar-navigation-color);padding-block-end:var(--utrecht-calendar-navigation-padding-block-end);padding-block-start:var(--utrecht-calendar-navigation-padding-block-start)}.utrecht-calendar__navigation-label{color:var(--utrecht-calendar-navigation-label-color);font-size:var(--utrecht-calendar-navigation-label-font-size);text-align:center}.utrecht-calendar__navigation-buttons{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.utrecht-calendar__button{--utrecht-button-subtle-color:var(--utrecht-calendar-button-color,currentColor);--utrecht-button-subtle-background-color:var(--utrecht-calendar-button-background-color,transparent);--utrecht-button-subtle-border-color:var(--utrecht-calendar-button-border-color,transparent);--utrecht-button-subtle-border-width:var(--utrecht-calendar-button-border-width);--utrecht-button-font-weight:var(--utrecht-calendar-button-font-weight);--utrecht-button-subtle-focus-background-color:var(--utrecht-calendar-button-focus-background-color);--utrecht-button-subtle-focus-border-color:var(--utrecht-calendar-button-focus-border-color);--utrecht-button-subtle-focus-color:var(--utrecht-calendar-button-focus-color);--utrecht-button-subtle-active-background-color:var(--utrecht-calendar-button-active-background-color);--utrecht-button-subtle-active-border-color:var(--utrecht-calendar-button-active-border-color);--utrecht-button-subtle-active-color:var(--utrecht-calendar-button-active-color);--utrecht-button-subtle-hover-background-color:var(--utrecht-calendar-button-hover-background-color);--utrecht-button-subtle-hover-border-color:var(--utrecht-calendar-button-hover-border-color,transparent);--utrecht-button-subtle-hover-color:var(--utrecht-calendar-button-hover-color);--utrecht-button-subtle-disabled-background-color:var(--utrecht-calendar-button-disabled-background-color);--utrecht-button-subtle-disabled-border-color:var(--utrecht-calendar-button-disabled-border-color);--utrecht-button-subtle-disabled-color:var(--utrecht-calendar-button-disabled-color);--utrecht-button-padding-block-end:var(--utrecht-calendar-button-padding-block-end,0);--utrecht-button-padding-block-start:var(--utrecht-calendar-button-padding-block-start,0);--utrecht-button-padding-inline-end:var(--utrecht-calendar-button-padding-inline-end,0);--utrecht-button-padding-inline-start:var(--utrecht-calendar-button-padding-inline-start,0);cursor:pointer}.utrecht-calendar__icon{block-size:var(--utrecht-calendar-icon-size);inline-size:var(--utrecht-calendar-icon-size)}\";\nstyleInject(css_248z$T);\nvar _excluded$1d = [\"children\"];\nfunction ownKeys$1f(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1f(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1f(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1f(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarNavigation = function CalendarNavigation(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties$1(_ref, _excluded$1d);\n return jsx(\"div\", _objectSpread$1f(_objectSpread$1f({\n className: \"utrecht-calendar__navigation\"\n }, props), {}, {\n children: children\n }));\n};\nvar _excluded$1c = [\"children\", \"className\"];\nfunction ownKeys$1e(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1e(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1e(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1e(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarButton = function CalendarButton(_ref) {\n var children = _ref.children,\n className = _ref.className,\n props = _objectWithoutProperties$1(_ref, _excluded$1c);\n return jsx(Button, _objectSpread$1e(_objectSpread$1e({\n appearance: \"subtle-button\"\n }, props), {}, {\n className: clsx$1('utrecht-calendar__button', className),\n children: children\n }));\n};\nvar _excluded$1b = [\"children\"];\nfunction ownKeys$1d(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1d(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1d(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1d(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarIcon = function CalendarIcon(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties$1(_ref, _excluded$1b);\n return jsx(\"div\", _objectSpread$1d(_objectSpread$1d({\n className: clsx$1('utrecht-calendar__icon')\n }, props), {}, {\n children: children\n }));\n};\nvar _excluded$1a = [\"onPreviousClick\", \"onNextClick\", \"previousIcon\", \"nextIcon\", \"children\"];\nfunction ownKeys$1c(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1c(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1c(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1c(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarNavigationButtons = function CalendarNavigationButtons(_ref) {\n var onPreviousClick = _ref.onPreviousClick,\n onNextClick = _ref.onNextClick,\n previousIcon = _ref.previousIcon,\n nextIcon = _ref.nextIcon,\n children = _ref.children,\n props = _objectWithoutProperties$1(_ref, _excluded$1a);\n return jsxs(\"div\", {\n className: \"utrecht-calendar__navigation-buttons\",\n children: [jsx(CalendarButton, _objectSpread$1c(_objectSpread$1c({\n onClick: onPreviousClick\n }, props), {}, {\n children: jsx(CalendarIcon, {\n children: previousIcon\n })\n })), children, jsx(CalendarButton, _objectSpread$1c(_objectSpread$1c({\n onClick: onNextClick\n }, props), {}, {\n children: jsx(CalendarIcon, {\n children: nextIcon\n })\n }))]\n });\n};\nvar _excluded$19 = [\"children\"];\nfunction ownKeys$1b(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1b(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1b(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1b(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarNavigationLabel = function CalendarNavigationLabel(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties$1(_ref, _excluded$19);\n return jsx(\"time\", _objectSpread$1b(_objectSpread$1b({\n className: \"utrecht-calendar__navigation-label\"\n }, props), {}, {\n children: children\n }));\n};\nvar _excluded$18 = [\"children\"];\nfunction ownKeys$1a(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1a(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1a(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1a(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarTableDaysContainer = function CalendarTableDaysContainer(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties$1(_ref, _excluded$18);\n return jsx(\"tbody\", _objectSpread$1a(_objectSpread$1a({}, props), {}, {\n className: \"utrecht-calendar__table-days-container\",\n children: children\n }));\n};\nvar _excluded$17 = [\"children\"];\nfunction ownKeys$19(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$19(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$19(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$19(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarTableDaysItem = function CalendarTableDaysItem(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties$1(_ref, _excluded$17);\n return jsx(\"tr\", _objectSpread$19(_objectSpread$19({}, props), {}, {\n children: children\n }));\n};\nvar _excluded$16 = [\"day\", \"dayOutOfTheMonth\", \"isToday\", \"emphasis\", \"selected\", \"disabled\"];\nfunction ownKeys$18(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$18(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$18(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$18(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarTableDaysItemDay = function CalendarTableDaysItemDay(_ref) {\n var day = _ref.day,\n dayOutOfTheMonth = _ref.dayOutOfTheMonth,\n isToday = _ref.isToday,\n emphasis = _ref.emphasis,\n selected = _ref.selected,\n disabled = _ref.disabled,\n props = _objectWithoutProperties$1(_ref, _excluded$16);\n return jsx(\"td\", {\n children: jsx(CalendarButton, _objectSpread$18(_objectSpread$18({\n className: clsx('utrecht-calendar__table-days-item-day', {\n 'utrecht-calendar__table-days-item-day--out-of-the-month': dayOutOfTheMonth\n }, {\n 'utrecht-calendar__table-days-item-day--is-today': isToday\n }, {\n 'utrecht-calendar__table-days-item-day--emphasis': emphasis\n }, {\n 'utrecht-calendar__table-days-item-day--selected': selected\n }),\n disabled: disabled\n }, props), {}, {\n children: day\n }))\n });\n};\nvar CalendarTableWeeksContainer = function CalendarTableWeeksContainer(_ref) {\n var children = _ref.children;\n return jsx(\"thead\", {\n className: \"utrecht-calendar__table-weeks-container\",\n children: jsx(\"tr\", {\n className: \"utrecht-calendar__table-weeks-container-content\",\n children: children\n })\n });\n};\nvar _excluded$15 = [\"children\"];\nfunction ownKeys$17(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$17(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$17(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$17(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CalendarTableWeeksItem = function CalendarTableWeeksItem(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties$1(_ref, _excluded$15);\n return jsx(\"th\", _objectSpread$17(_objectSpread$17({}, props), {}, {\n className: \"utrecht-calendar__table-weeks-item\",\n children: children\n }));\n};\nvar _excluded$14 = [\"title\", \"titleId\"];\nfunction ownKeys$16(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$16(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$16(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$16(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar IconArrowLeft = function IconArrowLeft(_ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties$1(_ref, _excluded$14);\n return jsxs(\"svg\", _objectSpread$16(_objectSpread$16({\n width: \"100%\",\n height: \"100%\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), {}, {\n children: [title ? jsx(\"title\", {\n id: titleId,\n children: title\n }) : null, jsx(\"path\", {\n d: \"M15.41 16.59 10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41Z\",\n fill: \"currentColor\"\n })]\n }));\n};\nvar _excluded$13 = [\"title\", \"titleId\"];\nfunction ownKeys$15(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$15(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$15(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$15(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar IconArrowLeftDouble = function IconArrowLeftDouble(_ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties$1(_ref, _excluded$13);\n return jsxs(\"svg\", _objectSpread$15(_objectSpread$15({\n width: \"100%\",\n height: \"100%\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), {}, {\n children: [title ? jsx(\"title\", {\n id: titleId,\n children: title\n }) : null, jsx(\"path\", {\n d: \"M17.59 18 19 16.59 14.42 12 19 7.41 17.59 6l-6 6 6 6Z\",\n fill: \"currentColor\"\n }), jsx(\"path\", {\n d: \"m11 18 1.41-1.41L7.83 12l4.58-4.59L11 6l-6 6 6 6Z\",\n fill: \"currentColor\"\n })]\n }));\n};\nvar _excluded$12 = [\"title\", \"titleId\"];\nfunction ownKeys$14(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$14(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$14(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$14(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar IconArrowRight = function IconArrowRight(_ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties$1(_ref, _excluded$12);\n return jsxs(\"svg\", _objectSpread$14(_objectSpread$14({\n width: \"100%\",\n height: \"100%\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), {}, {\n children: [title ? jsx(\"title\", {\n id: titleId,\n children: title\n }) : null, jsx(\"path\", {\n d: \"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41Z\",\n fill: \"currentColor\"\n })]\n }));\n};\nvar _excluded$11 = [\"title\", \"titleId\"];\nfunction ownKeys$13(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$13(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$13(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$13(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar IconArrowRightDouble = function IconArrowRightDouble(_ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties$1(_ref, _excluded$11);\n return jsxs(\"svg\", _objectSpread$13(_objectSpread$13({\n fill: \"none\",\n width: \"100%\",\n height: \"100%\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-labelledby\": titleId\n }, props), {}, {\n children: [title ? jsx(\"title\", {\n id: titleId,\n children: title\n }) : null, jsx(\"path\", {\n d: \"M6.41 6 5 7.41 9.58 12 5 16.59 6.41 18l6-6-6-6Z\",\n fill: \"currentColor\"\n }), jsx(\"path\", {\n d: \"m13 6-1.41 1.41L16.17 12l-4.58 4.59L13 18l6-6-6-6Z\",\n fill: \"currentColor\"\n })]\n }));\n};\nfunction createCalendar(today) {\n var start = startOfWeek(startOfMonth(today), {\n weekStartsOn: 1 /* Monday */\n });\n\n var end = endOfWeek(addWeeks(start, 5), {\n weekStartsOn: 1 /* Monday */\n });\n\n return eachDayOfInterval({\n start: start,\n end: end\n });\n}\n/**\r\n * Calendar Component\r\n * powered by date-fns, so that make it easy to use the `date-fns` date functions & locale\r\n * */\nvar Calendar = function Calendar(_ref) {\n var onCalendarClick = _ref.onCalendarClick,\n events = _ref.events,\n currentDate = _ref.currentDate,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? enUS : _ref$locale,\n _ref$previousYearButt = _ref.previousYearButtonTitle,\n previousYearButtonTitle = _ref$previousYearButt === void 0 ? 'Previous year' : _ref$previousYearButt,\n _ref$nextYearButtonTi = _ref.nextYearButtonTitle,\n nextYearButtonTitle = _ref$nextYearButtonTi === void 0 ? 'Next year' : _ref$nextYearButtonTi,\n _ref$previousMonthBut = _ref.previousMonthButtonTitle,\n previousMonthButtonTitle = _ref$previousMonthBut === void 0 ? 'Previous month' : _ref$previousMonthBut,\n _ref$nextMonthButtonT = _ref.nextMonthButtonTitle,\n nextMonthButtonTitle = _ref$nextMonthButtonT === void 0 ? 'Next month' : _ref$nextMonthButtonT,\n minDate = _ref.minDate,\n maxDate = _ref.maxDate;\n var _useState = useState(currentDate || new Date()),\n _useState2 = _slicedToArray(_useState, 2),\n visibleMonth = _useState2[0],\n setVisibleMonth = _useState2[1];\n var _useState3 = useState(currentDate),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedDate = _useState4[0],\n setSelectedDate = _useState4[1];\n var calendar = createCalendar(visibleMonth);\n var start = startOfWeek(visibleMonth, {\n weekStartsOn: 1\n });\n var end = endOfWeek(visibleMonth, {\n weekStartsOn: 1\n });\n var currentWeek = eachDayOfInterval({\n start: start,\n end: end\n }).map(function (day) {\n return day;\n });\n var chunksWeeks = chunk(calendar, calendar.length / 6);\n var weeks = chunksWeeks.map(function (week) {\n return week.map(function (date) {\n var currentEvent = events && events.length > 0 && events.find(function (e) {\n return isSameDay(endOfDay(parseISO(e.date)), date);\n });\n if (currentEvent) {\n return {\n date: date,\n emphasis: currentEvent.emphasis,\n selected: currentEvent.selected,\n disabled: currentEvent.disabled\n };\n } else {\n return {\n date: date,\n emphasis: false,\n selected: false,\n disabled: false\n };\n }\n });\n });\n return jsxs(\"div\", {\n className: \"utrecht-calendar\",\n children: [jsx(CalendarNavigation, {\n children: jsx(CalendarNavigationButtons, {\n previousIcon: jsx(IconArrowLeftDouble, {\n title: previousYearButtonTitle\n }),\n nextIcon: jsx(IconArrowRightDouble, {\n title: nextYearButtonTitle\n }),\n onPreviousClick: function onPreviousClick() {\n return setVisibleMonth(setYear(visibleMonth, getYear(visibleMonth) - 1));\n },\n onNextClick: function onNextClick() {\n return setVisibleMonth(addYears(visibleMonth, 1));\n },\n children: jsx(CalendarNavigationButtons, {\n previousIcon: jsx(IconArrowLeft, {\n title: previousMonthButtonTitle\n }),\n nextIcon: jsx(IconArrowRight, {\n title: nextMonthButtonTitle\n }),\n onPreviousClick: function onPreviousClick() {\n return setVisibleMonth(setMonth(visibleMonth, visibleMonth.getMonth() - 1));\n },\n onNextClick: function onNextClick() {\n return setVisibleMonth(addMonths(visibleMonth, 1));\n },\n children: jsx(CalendarNavigationLabel, {\n dateTime: format$4(visibleMonth, 'yyyy-mm'),\n children: format$4(visibleMonth, 'LLLL Y', {\n locale: locale\n })\n })\n })\n })\n }), jsxs(\"table\", {\n className: \"utrecht-calendar__table\",\n role: \"grid\",\n children: [jsx(CalendarTableWeeksContainer, {\n children: currentWeek && currentWeek.length > 0 && currentWeek.map(function (day, index) {\n return jsx(CalendarTableWeeksItem, {\n scope: \"col\",\n abbr: format$4(day, 'EEEE', {\n locale: locale\n }),\n children: format$4(day, 'EEEEEE', {\n locale: locale\n })\n }, index);\n })\n }), jsx(CalendarTableDaysContainer, {\n children: weeks && weeks.length > 0 && weeks.map(function (week, index) {\n return jsx(CalendarTableDaysItem, {\n children: week.map(function (day, index) {\n return jsx(CalendarTableDaysItemDay, {\n isToday: isSameDay(day.date, Date.now()),\n dayOutOfTheMonth: !isSameMonth(day.date, visibleMonth),\n onClick: function onClick() {\n setVisibleMonth(day.date);\n setSelectedDate(day.date);\n onCalendarClick(formatISO(day.date));\n },\n \"aria-label\": format$4(day.date, 'eeee dd LLLL Y', {\n locale: locale\n }),\n day: day.date.getDate().toString(),\n emphasis: day.emphasis,\n selected: day.selected || selectedDate && isSameDay(day.date, selectedDate),\n disabled: day.disabled || minDate && isBefore(day.date, startOfDay(minDate)) || maxDate && isAfter(day.date, endOfDay(maxDate))\n }, index);\n })\n }, index);\n })\n })]\n })]\n });\n};\nvar css_248z$S = \".utrecht-checkbox{cursor:var(--utrecht-action-activate-cursor,revert);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-start:0;-webkit-user-select:none;user-select:none}.utrecht-checkbox--disabled{cursor:var(--utrecht-action-disabled-cursor,revert)}.utrecht-checkbox--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-checkbox--html-input:disabled{cursor:var(--utrecht-action-disabled-cursor,revert)}.utrecht-checkbox--html-input:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-checkbox--html-input:focus:not(:focus-visible){box-shadow:none;outline-style:revert}\";\nstyleInject(css_248z$S);\nvar css_248z$R = \".utrecht-checkbox--custom,.utrecht-custom-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:50%;background-repeat:no-repeat;background-size:contain;block-size:var(--utrecht-checkbox-size,1em);border-color:var(--utrecht-checkbox-border-color);border-style:solid;border-width:var(--utrecht-checkbox-border-width);cursor:var(--utrecht-action-activate-cursor,revert);inline-size:var(--utrecht-checkbox-size,1em);margin-block-start:var(--utrecht-checkbox-margin-block-start);min-block-size:24px;min-inline-size:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact;vertical-align:top}.utrecht-checkbox--custom.utrecht-checkbox--checked,.utrecht-custom-checkbox--checked{background-color:var(--utrecht-checkbox-checked-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-checked-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-checked-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--disabled,.utrecht-custom-checkbox--disabled{border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-disabled-border-width,var(--utrecht-checkbox-border-width));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-checkbox--custom.utrecht-checkbox--disabled:checked,.utrecht-custom-checkbox--disabled:checked{background-color:var(--utrecht-checkbox-disabled-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color))}.utrecht-checkbox--custom.utrecht-checkbox--disabled:active,.utrecht-custom-checkbox--disabled:active{border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color))}.utrecht-checkbox--custom.utrecht-checkbox--indeterminate,.utrecht-custom-checkbox--indeterminate{background-color:var(--utrecht-checkbox-indeterminate-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-indeterminate-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-indeterminate-border-width,var(--utrecht-checkbox-border-width));color:var(--utrecht-checkbox-indeterminate-color,var(--utrecht-checkbox-color))}.utrecht-checkbox--custom.utrecht-checkbox--invalid,.utrecht-custom-checkbox--invalid{border-color:var(--utrecht-checkbox-invalid-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-invalid-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--active,.utrecht-custom-checkbox--active{background-color:var(--utrecht-checkbox-active-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-active-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-active-border-width,var(--utrecht-checkbox-border-width));color:var(--utrecht-checkbox-active-color,var(--utrecht-checkbox-color))}.utrecht-checkbox--custom.utrecht-checkbox--hover,.utrecht-custom-checkbox--hover{background-color:var(--utrecht-checkbox-hover-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-hover-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-hover-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--focus,.utrecht-custom-checkbox--focus{background-color:var(--utrecht-checkbox-focus-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-focus-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-focus-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--focus-visible,.utrecht-custom-checkbox--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-checkbox--custom.utrecht-checkbox--html-input:disabled,.utrecht-custom-checkbox--html-input:disabled{border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-disabled-border-width,var(--utrecht-checkbox-border-width));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-checkbox--custom.utrecht-checkbox--html-input:disabled:checked,.utrecht-custom-checkbox--html-input:disabled:checked{background-color:var(--utrecht-checkbox-disabled-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:disabled:active,.utrecht-custom-checkbox--html-input:disabled:active{border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:hover,.utrecht-custom-checkbox--html-input:hover{background-color:var(--utrecht-checkbox-hover-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-hover-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-hover-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:focus,.utrecht-custom-checkbox--html-input:focus{background-color:var(--utrecht-checkbox-focus-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-focus-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-focus-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:focus-visible,.utrecht-custom-checkbox--html-input:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-checkbox--custom.utrecht-checkbox--html-input:invalid,.utrecht-checkbox--custom.utrecht-checkbox--html-input[aria-invalid=true],.utrecht-custom-checkbox--html-input:invalid,.utrecht-custom-checkbox--html-input[aria-invalid=true]{border-color:var(--utrecht-checkbox-invalid-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-invalid-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:active,.utrecht-custom-checkbox--html-input:active{background-color:var(--utrecht-checkbox-active-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-active-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-active-border-width,var(--utrecht-checkbox-border-width));color:var(--utrecht-checkbox-active-color,var(--utrecht-checkbox-color))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:active,.utrecht-checkbox--custom.utrecht-checkbox--html-input:checked,.utrecht-custom-checkbox--html-input:active,.utrecht-custom-checkbox--html-input:checked{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\")}.utrecht-checkbox--custom.utrecht-checkbox--html-input:checked,.utrecht-custom-checkbox--html-input:checked{background-color:var(--utrecht-checkbox-checked-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-checked-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-checked-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:indeterminate,.utrecht-custom-checkbox--html-input:indeterminate{background-color:var(--utrecht-checkbox-indeterminate-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-indeterminate-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-indeterminate-border-width,var(--utrecht-checkbox-border-width));color:var(--utrecht-checkbox-indeterminate-color,var(--utrecht-checkbox-color))}\";\nstyleInject(css_248z$R);\nvar _excluded$10 = [\"appearance\", \"disabled\", \"invalid\", \"required\", \"className\"];\nfunction ownKeys$12(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$12(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$12(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$12(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Checkbox = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _ref$appearance = _ref.appearance,\n appearance = _ref$appearance === void 0 ? 'custom' : _ref$appearance,\n disabled = _ref.disabled,\n invalid = _ref.invalid,\n required = _ref.required,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$10);\n return jsx(\"input\", _objectSpread$12(_objectSpread$12({}, restProps), {}, {\n ref: ref,\n type: \"checkbox\",\n className: clsx('utrecht-checkbox', 'utrecht-checkbox--html-input', {\n 'utrecht-checkbox--disabled': disabled,\n 'utrecht-checkbox--custom': appearance === 'custom',\n 'utrecht-checkbox--invalid': invalid,\n 'utrecht-checkbox--required': required\n }, className),\n \"aria-invalid\": invalid || undefined,\n disabled: disabled,\n required: required\n }));\n});\nCheckbox.displayName = 'Checkbox';\nvar css_248z$Q = \".utrecht-code{background-color:var(--utrecht-code-background-color);color:var(--utrecht-code-color);font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-variant-ligatures:none;line-height:var(--utrecht-code-line-height)}\";\nstyleInject(css_248z$Q);\nvar _excluded$$ = [\"children\", \"className\"];\nfunction ownKeys$11(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$11(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$11(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$11(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Code = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$$);\n return jsx(\"code\", _objectSpread$11(_objectSpread$11({\n ref: ref,\n className: clsx('utrecht-code', className)\n }, restProps), {}, {\n children: children\n }));\n});\nCode.displayName = 'Code';\nvar css_248z$P = \".utrecht-code-block{--utrecht-code-color:var(--utrecht-code-block-color,inherit);--utrecht-code-background-color:var(--utrecht-code-block-background-color,inherit);--utrecht-code-font-weight:var(--utrecht-code-block-font-weight,inherit);--utrecht-code-font-size:var(--utrecht-code-block-font-size,inherit);--utrecht-code-font-family:var(--utrecht-code-block-font-family,monospace);background-color:var(--utrecht-code-background-color);background-color:var(--utrecht-code-block-background-color);color:var(--utrecht-code-color);display:block;font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-size:var(--utrecht-code-block-font-size,var(--utrecht-code-font-size));font-variant-ligatures:none;line-height:var(--utrecht-code-line-height);line-height:var(--utrecht-code-block-line-height,var(--utrecht-code-line-height));margin-block-end:var(--utrecht-code-block-margin-block-end);margin-block-start:var(--utrecht-code-block-margin-block-start);margin-inline-end:var(--utrecht-code-block-margin-inline-end);margin-inline-start:var(--utrecht-code-block-margin-inline-start);padding-block-end:var(--utrecht-code-block-padding-block-end);padding-block-start:var(--utrecht-code-block-padding-block-start);padding-inline-end:var(--utrecht-code-block-padding-inline-end);padding-inline-start:var(--utrecht-code-block-padding-inline-start);white-space:pre}.utrecht-code-block__content{font-family:inherit;font-size:inherit}\";\nstyleInject(css_248z$P);\nvar _excluded$_ = [\"children\", \"className\"];\nfunction ownKeys$10(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$10(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$10(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$10(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CodeBlock = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$_);\n return jsx(\"pre\", _objectSpread$10(_objectSpread$10({\n ref: ref,\n className: clsx('utrecht-code-block', className)\n }, restProps), {}, {\n children: jsx(\"code\", {\n className: \"utrecht-code-block__content\",\n children: children\n })\n }));\n});\nCodeBlock.displayName = 'CodeBlock';\nvar css_248z$O = \".utrecht-color-sample{background-color:var(--utrecht-color-sample-background-color,currentColor);block-size:var(--utrecht-color-sample-block-size,2em);border-color:var(--utrecht-color-sample-border-color,var(--utrecht-color-sample-default-border-color));border-radius:var(--utrecht-color-sample-border-radius,0);border-style:solid;border-width:var(--utrecht-color-sample-border-width,0);box-sizing:border-box;display:inline-block;inline-size:var(--utrecht-color-sample-inline-size,2em);-webkit-print-color-adjust:exact;print-color-adjust:exact}@media (forced-colors:active){.utrecht-color-sample{forced-color-adjust:none}}@media (forced-colors:active) and (prefers-color-scheme:dark){.utrecht-color-sample{--utrecht-color-sample-default-border-color:var(--utrecht-color-sample-dark-border-color,#000)}}@media (forced-colors:active) and (prefers-color-scheme:light){.utrecht-color-sample{--utrecht-color-sample-default-border-color:var(--utrecht-color-sample-light-border-color,#fff)}}\";\nstyleInject(css_248z$O);\nvar _excluded$Z = [\"children\", \"className\", \"color\", \"style\"];\nfunction ownKeys$$(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$$(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$$(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$$(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar ColorSample = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n color = _ref.color,\n style = _ref.style,\n restProps = _objectWithoutProperties$1(_ref, _excluded$Z);\n return jsx(\"data\", _objectSpread$$(_objectSpread$$({\n ref: ref,\n className: clsx('utrecht-color-sample', className),\n style: _objectSpread$$(_objectSpread$$({}, style), {}, {\n color: color\n }),\n value: color\n }, restProps), {}, {\n children: children\n }));\n});\nColorSample.displayName = 'ColorSample';\nvar css_248z$N = \".utrecht-currency-data{font-variant-numeric:lining-nums tabular-nums;white-space:nowrap}\";\nstyleInject(css_248z$N);\nvar _excluded$Y = [\"children\", \"currency\", \"amount\", \"locale\", \"className\"];\nfunction ownKeys$_(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$_(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$_(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$_(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar formatLabel = function formatLabel(locale, currency, amount) {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency,\n minimumFractionDigits: Number.isInteger(amount) ? 0 : undefined,\n useGrouping: false\n }).format(amount)\n // Remove whitespace\n .replace(/[\\s]+/g, '')\n // Replace dash (U+002D) with minus sign (U+2212)\n .replace('-', \"\\u2212\");\n};\nvar formatVisually = function formatVisually(locale, currency, amount) {\n var formatted = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency\n }).format(amount);\n // Replace dash (U+002D) with minus sign (U+2212)\n formatted = formatted.replace(/-/, \"\\u2212\");\n // Move the minus to before the currency\n if ((locale === 'nl' || locale === 'nl-NL') && /\\u2212/.test(formatted)) {\n formatted = formatted.replace(/(.+)\\u2212(.+)/, \"\\u2212 $1$2\");\n }\n // Replace white space with non-breaking space\n formatted = formatted.replace(/ /g, \"\\xA0\");\n return formatted;\n};\nvar CurrencyData = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n _ref$currency = _ref.currency,\n currency = _ref$currency === void 0 ? 'EUR' : _ref$currency,\n amount = _ref.amount,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? 'nl-NL' : _ref$locale,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$Y);\n var number = typeof amount === 'string' ? parseFloat(amount) : amount;\n var labelFormatted = formatLabel(locale, currency, number);\n var visuallyFormatted = formatVisually(locale, currency, number);\n return jsx(\"data\", _objectSpread$_(_objectSpread$_({}, restProps), {}, {\n ref: ref,\n value: \"\".concat(currency, \" \").concat(amount),\n className: clsx('utrecht-currency-data', number < 0 && 'utrecht-currency-data--negative', number > 0 && 'utrecht-currency-data--positive', className),\n \"aria-label\": labelFormatted,\n children: children || visuallyFormatted\n }));\n});\nCurrencyData.displayName = 'CurrencyData';\nvar css_248z$M = \".utrecht-badge-data{background-color:var(--utrecht-badge-background-color,#000);border-radius:var(--utrecht-badge-border-radius,.5ch);color:var(--utrecht-badge-color,#fff);display:inline-block;font-family:var(--utrecht-document-font-family,sans-serif);font-size:var(--utrecht-badge-font-size,inherit);font-style:var(--utrecht-badge-font-style,normal);font-weight:var(--utrecht-badge-font-weight,bold);letter-spacing:var(--utrecht-badge-data-letter-spacing,inherit);line-height:var(--utrecht-badge-line-height,1em);max-block-size:max-content;max-inline-size:max-content;min-block-size:1em;min-inline-size:1em;padding-block-end:var(--utrecht-badge-padding-block,.5ex);padding-block-start:var(--utrecht-badge-padding-block,.5ex);padding-inline-end:var(--utrecht-badge-padding-inline,.5ch);padding-inline-start:var(--utrecht-badge-padding-inline,.5ch);text-decoration:none;text-transform:var(--utrecht-badge-data-text-transform,inherit)}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-badge-data{border:1px solid}}\";\nstyleInject(css_248z$M);\nvar _excluded$X = [\"children\", \"className\", \"dateTime\", \"value\"];\nfunction ownKeys$Z(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$Z(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$Z(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Z(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar DataBadge = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n dateTime = _ref.dateTime,\n value = _ref.value,\n restProps = _objectWithoutProperties$1(_ref, _excluded$X);\n var props = _objectSpread$Z({\n children: children,\n className: clsx('utrecht-badge-data', className)\n }, restProps);\n return typeof dateTime !== 'undefined' ? jsx(\"time\", _objectSpread$Z(_objectSpread$Z({}, props), {}, {\n dateTime: dateTime,\n ref: ref\n })) : typeof value !== 'undefined' ? jsx(\"data\", _objectSpread$Z(_objectSpread$Z({}, props), {}, {\n value: value,\n ref: ref\n })) : jsx(\"span\", _objectSpread$Z(_objectSpread$Z({}, props), {}, {\n ref: ref\n }));\n});\nDataBadge.displayName = 'DataBadge';\nvar css_248z$L = \".utrecht-document{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;color:var(--utrecht-document-color,inherit);font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-document-font-size,inherit);font-weight:var(--utrecht-document-font-weight,inherit);line-height:var(--utrecht-document-line-height,inherit);text-rendering:optimizeLegibility}.utrecht-document :lang(ar){letter-spacing:0!important}.utrecht-document--surface{background-color:var(--utrecht-document-background-color,inherit)}\";\nstyleInject(css_248z$L);\nvar _excluded$W = [\"children\", \"className\"];\nfunction ownKeys$Y(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$Y(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$Y(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Y(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Document = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$W);\n return jsx(\"div\", _objectSpread$Y(_objectSpread$Y({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-document', className),\n children: children\n }));\n});\nDocument.displayName = 'Document';\nvar css_248z$K = \".utrecht-data-list{display:block;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-data-list-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-data-list-margin-block-start, 0))}.utrecht-data-list__item-key{color:var(--utrecht-data-list-item-key-color);font-size:var(--utrecht-data-list-item-key-font-size);font-weight:var(--utrecht-data-list-item-key-font-weight);line-height:var(--utrecht-data-list-item-key-line-height)}.utrecht-data-list__item-value{color:var(--utrecht-data-list-item-value-color);font-size:var(--utrecht-data-list-item-value-font-size);font-weight:var(--utrecht-data-list-item-value-font-weight);line-height:var(--utrecht-data-list-item-value-line-height);min-block-size:calc(var(--utrecht-data-list-item-value-line-height)*1rem)}.utrecht-data-list__actions--html-dd,.utrecht-data-list__item-value--html-dd{margin-inline-start:0}.utrecht-data-list__item-value--multiline{white-space:pre-line}.utrecht-data-list--rows .utrecht-data-list__actions{align-items:baseline;display:flex;grid-column:-1;grid-row:1;justify-content:flex-end}.utrecht-data-list--rows .utrecht-data-list__item{--_utrecht-minmax:max(var(--utrecht-data-list-rows-column-min-inline-size,25ch),var(--utrecht-data-list-rows-column-inline-size,80%));--_utrecht-auto-col:minmax(var(--_utrecht-minmax),max-content);border-block-end-color:var(--utrecht-data-list-rows-border-bottom-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-data-list-rows-border-bottom-width,0);display:grid;gap:0 var(--utrecht-data-list-rows-gap);grid-auto-columns:1fr;grid-template-columns:repeat(auto-fit,var(--_utrecht-auto-col));margin-block-start:var(--utrecht-data-list-rows-item-margin-block-start)}.utrecht-data-list--rows .utrecht-data-list__item:first-of-type{margin-block-start:0}.utrecht-data-list--rows .utrecht-data-list__item-value{margin-block-start:var(--utrecht-data-list-rows-item-value-margin-block-start)}\";\nstyleInject(css_248z$K);\nvar _excluded$V = [\"appearance\", \"children\", \"className\"],\n _excluded2$3 = [\"children\", \"className\"],\n _excluded3 = [\"children\", \"className\"],\n _excluded4 = [\"children\", \"className\"];\nfunction ownKeys$X(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$X(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$X(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$X(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar DataList = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var appearance = _ref.appearance,\n children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$V);\n return jsx(\"dl\", _objectSpread$X(_objectSpread$X({}, restProps), {}, {\n className: clsx('utrecht-data-list', 'utrecht-data-list--html-dl', appearance === 'rows' && 'utrecht-data-list--rows', className),\n ref: ref,\n children: children\n }));\n});\nDataList.displayName = 'DataList';\nvar DataListItem = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var children = _ref2.children,\n className = _ref2.className,\n restProps = _objectWithoutProperties$1(_ref2, _excluded2$3);\n return jsx(\"div\", _objectSpread$X(_objectSpread$X({}, restProps), {}, {\n className: clsx('utrecht-data-list__item', className),\n ref: ref,\n children: children\n }));\n});\nDataListItem.displayName = 'DataListItem';\nvar DataListKey = /*#__PURE__*/forwardRef(function (_ref3, ref) {\n var children = _ref3.children,\n className = _ref3.className,\n restProps = _objectWithoutProperties$1(_ref3, _excluded3);\n return jsx(\"dt\", _objectSpread$X(_objectSpread$X({}, restProps), {}, {\n className: clsx('utrecht-data-list__item-key', className),\n ref: ref,\n children: children\n }));\n});\nDataListKey.displayName = 'DataListKey';\nvar DataListValue = /*#__PURE__*/forwardRef(function (_ref4, ref) {\n var value = _ref4.value,\n children = _ref4.children,\n className = _ref4.className,\n emptyDescription = _ref4.emptyDescription,\n multiline = _ref4.multiline,\n notranslate = _ref4.notranslate;\n var empty = value === '' || value === null;\n return jsx(\"dd\", {\n className: clsx('utrecht-data-list__item-value', 'utrecht-data-list__item-value--html-dd', className, multiline && 'utrecht-data-list__item-value--multiline'),\n translate: typeof notranslate === 'boolean' ? notranslate ? 'no' : 'yes' : undefined,\n ref: ref,\n children: empty ? jsx(\"span\", {\n \"aria-label\": emptyDescription,\n children: \"-\"\n }) : children\n });\n});\nDataListValue.displayName = 'DataListValue';\nvar DataListActions = /*#__PURE__*/forwardRef(function (_ref5, ref) {\n var children = _ref5.children,\n className = _ref5.className,\n restProps = _objectWithoutProperties$1(_ref5, _excluded4);\n return jsx(\"dd\", _objectSpread$X(_objectSpread$X({}, restProps), {}, {\n className: clsx('utrecht-data-list__actions', 'utrecht-data-list__actions--html-dd', className),\n ref: ref,\n children: children\n }));\n});\nDataListActions.displayName = 'DataListActions';\nvar css_248z$J = \".utrecht-emphasis--stressed{font-style:var(--utrecht-emphasis-stressed-font-style,italic)}.utrecht-emphasis--strong{font-weight:var(--utrecht-emphasis-strong-font-weight,bold)}\";\nstyleInject(css_248z$J);\nvar _excluded$U = [\"children\", \"className\"];\nfunction ownKeys$W(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$W(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$W(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$W(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Emphasis = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$U);\n return jsx(\"em\", _objectSpread$W(_objectSpread$W({\n ref: ref,\n className: clsx('utrecht-emphasis', 'utrecht-emphasis--stressed', className)\n }, restProps), {}, {\n children: children\n }));\n});\nEmphasis.displayName = 'Emphasis';\nvar css_248z$I = \".utrecht-form-fieldset{margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-margin-block-start, 0))}.utrecht-form-fieldset--html-fieldset,.utrecht-form-fieldset__fieldset--html-fieldset{all:revert;border:0;margin-inline-end:0;margin-inline-start:0;min-inline-size:0;padding-block-end:0;padding-block-start:.01em;padding-inline-end:0;padding-inline-start:0}.utrecht-form-fieldset__legend--html-legend{display:table;inline-size:100%;padding-inline-end:0;padding-inline-start:0}.utrecht-form-fieldset--distanced{--utrecht-space-around:1}.utrecht-form-fieldset--section{background-color:var(--utrecht-form-fieldset-section-background-color);color:var(--utrecht-form-fieldset-section-color)}.utrecht-form-fieldset__legend{color:var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit));font-family:var(--utrecht-form-fieldset-legend-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-form-fieldset-legend-font-size);font-weight:var(--utrecht-form-fieldset-legend-font-weight);line-height:var(--utrecht-form-fieldset-legend-line-height);page-break-after:avoid;page-break-inside:avoid}.utrecht-form-fieldset__legend--disabled{color:var(--utrecht-form-fieldset-legend-disabled-color,var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit)))}.utrecht-form-fieldset__legend--distanced{margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-legend-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-legend-margin-block-start, 0))}.utrecht-form-fieldset--invalid{border-inline-start-color:var(--utrecht-form-fieldset-invalid-border-inline-start-color,var(--utrecht-form-field-invalid-border-inline-start-color));border-inline-start-style:solid;border-inline-start-width:var(--utrecht-form-fieldset-invalid-border-inline-start-width,var(--utrecht-form-field-invalid-border-inline-start-width));padding-inline-start:var(--utrecht-form-fieldset-invalid-padding-inline-start,var(--utrecht-form-field-invalid-padding-inline-start))}\";\nstyleInject(css_248z$I);\nvar _excluded$T = [\"aria-describedby\", \"aria-label\", \"aria-labelledby\", \"className\", \"children\", \"disabled\", \"form\", \"invalid\", \"name\", \"role\"],\n _excluded2$2 = [\"className\", \"children\", \"disabled\", \"invalid\"];\nfunction ownKeys$V(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$V(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$V(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$V(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Fieldset = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var ariaDescribedby = _ref['aria-describedby'],\n ariaLabel = _ref['aria-label'],\n ariaLabelledby = _ref['aria-labelledby'],\n className = _ref.className,\n children = _ref.children,\n disabled = _ref.disabled,\n form = _ref.form,\n invalid = _ref.invalid,\n name = _ref.name,\n role = _ref.role,\n restProps = _objectWithoutProperties$1(_ref, _excluded$T);\n return jsx(\"div\", _objectSpread$V(_objectSpread$V({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-fieldset', disabled && 'utrecht-form-fieldset--disabled', invalid && 'utrecht-form-fieldset--invalid', className),\n children: jsx(\"fieldset\", {\n \"aria-describedby\": ariaDescribedby,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-invalid\": invalid || undefined,\n disabled: disabled,\n form: form,\n name: name,\n role: role,\n className: clsx('utrecht-form-fieldset__fieldset', 'utrecht-form-fieldset--html-fieldset'),\n children: children\n })\n }));\n});\nFieldset.displayName = 'Fieldset';\nvar FieldsetOnly = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n children = _ref2.children,\n disabled = _ref2.disabled,\n invalid = _ref2.invalid,\n restProps = _objectWithoutProperties$1(_ref2, _excluded2$2);\n return jsx(\"fieldset\", _objectSpread$V(_objectSpread$V({}, restProps), {}, {\n ref: ref,\n \"aria-invalid\": invalid || undefined,\n disabled: disabled,\n className: clsx('utrecht-form-fieldset', 'utrecht-form-fieldset--html-fieldset', disabled && 'utrecht-form-fieldset--disabled', invalid && 'utrecht-form-fieldset--invalid', className),\n children: children\n }));\n});\nFieldsetOnly.displayName = 'Fieldset';\nvar _excluded$S = [\"className\", \"children\"];\nfunction ownKeys$U(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$U(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$U(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$U(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FieldsetLegend = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties$1(_ref, _excluded$S);\n return jsx(\"legend\", _objectSpread$U(_objectSpread$U({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-fieldset__legend', 'utrecht-form-fieldset__legend--html-legend', className),\n children: children\n }));\n});\nFieldsetLegend.displayName = 'FieldsetLegend';\nvar css_248z$H = \".utrecht-figure{margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-figure-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-figure-margin-block-start, 0))}.utrecht-figure__caption{color:var(--utrecht-figure-caption-color);font-size:var(--utrecht-figure-caption-font-size);line-height:var(--utrecht-figure-caption-line-height)}\";\nstyleInject(css_248z$H);\nvar _excluded$R = [\"className\", \"children\"];\nfunction ownKeys$T(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$T(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$T(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$T(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Figure = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties$1(_ref, _excluded$R);\n return jsx(\"figure\", _objectSpread$T(_objectSpread$T({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-figure', className),\n children: children\n }));\n});\nFigure.displayName = 'Figure';\nvar _excluded$Q = [\"className\", \"children\"];\nfunction ownKeys$S(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$S(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$S(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$S(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FigureCaption = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties$1(_ref, _excluded$Q);\n return jsx(\"figcaption\", _objectSpread$S(_objectSpread$S({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-figure__caption', className),\n children: children\n }));\n});\nFigureCaption.displayName = 'FigureCaption';\nvar css_248z$G = \".utrecht-form-field{font-family:var(--utrecht-document-font-family,inherit);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-field-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-field-margin-block-start, 0));max-inline-size:var(--utrecht-form-field-max-inline-size);page-break-inside:avoid}.utrecht-form-field--distanced{--utrecht-space-around:1}.utrecht-form-field--invalid{border-inline-start-color:var(--utrecht-form-field-invalid-border-inline-start-color);border-inline-start-style:solid;border-inline-start-width:var(--utrecht-form-field-invalid-border-inline-start-width);padding-inline-start:var(--utrecht-form-field-invalid-padding-inline-start)}.utrecht-form-field--checkbox{display:grid;gap:0 var(--utrecht-checkbox-margin-inline-end,12px);grid-template-areas:\\\"input label\\\" \\\"input description\\\" \\\"input description-invalid\\\";grid-template-columns:var(--utrecht-checkbox-size) 100fr}.utrecht-form-field--checkbox .utrecht-form-field__label:has(.utrecht-form-field__input){margin-inline-start:calc((var(--utrecht-checkbox-size) + var(--utrecht-checkbox-margin-inline-end, 12px))*-1)}.utrecht-form-field--checkbox .utrecht-form-field__label .utrecht-form-field__input{margin-inline-end:var(--utrecht-checkbox-margin-inline-end,12px)}.utrecht-form-field--radio{display:grid;gap:0 var(--utrecht-radio-button-margin-inline-end,12px);grid-template-areas:\\\"input label\\\" \\\"input description\\\" \\\"input description-invalid\\\";grid-template-columns:var(--utrecht-radio-button-size) 100fr}.utrecht-form-field--radio .utrecht-form-field__label:has(.utrecht-form-field__input){margin-inline-start:calc((var(--utrecht-radio-button-size) + var(--utrecht-radio-button-margin-inline-end, 12px))*-1)}.utrecht-form-field--radio .utrecht-form-field__label .utrecht-form-field__input{margin-inline-end:var(--utrecht-radio-button-margin-inline-end,12px)}.utrecht-form-field__input{grid-area:input;order:5}.utrecht-form-field__label{grid-area:label;margin-block-end:var(--utrecht-form-field-label-margin-block-end);margin-block-start:0;order:1}.utrecht-form-field .utrecht-form-field-description{grid-area:description;margin-block-end:var(--utrecht-form-field-description-margin-block-end);margin-block-start:var(--utrecht-form-field-description-margin-block-start);order:2}.utrecht-form-field .utrecht-form-field-description--invalid{grid-area:description-invalid;order:3}.utrecht-form-field__description{grid-area:description;margin-block-end:var(--utrecht-form-field-description-margin-block-end);margin-block-start:var(--utrecht-form-field-description-margin-block-start);order:2}.utrecht-form-field__description--before{grid-area:description-before;order:4}\";\nstyleInject(css_248z$G);\nvar _excluded$P = [\"className\", \"children\", \"invalid\", \"type\"];\nfunction ownKeys$R(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$R(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$R(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$R(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FormField = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n invalid = _ref.invalid,\n type = _ref.type,\n restProps = _objectWithoutProperties$1(_ref, _excluded$P);\n return jsx(\"div\", _objectSpread$R(_objectSpread$R({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-field', {\n 'utrecht-form-field--invalid': invalid,\n 'utrecht-form-field--checkbox': type === 'checkbox',\n 'utrecht-form-field--radio': type === 'radio',\n 'utrecht-form-field--text': !type || type === 'text'\n }, className),\n children: children\n }));\n});\nFormField.displayName = 'FormField';\nvar css_248z$F = \".utrecht-form-field-description{--utrecht-document-color:currentColor;color:var(--utrecht-form-field-description-color);font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-form-field-description-font-size,inherit);font-style:var(--utrecht-form-field-description-font-style);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-field-description-margin-block-end, var(--utrecht-paragraph-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-field-description-margin-block-start, var(--utrecht-paragraph-margin-block-start, 0)))}.utrecht-form-field-description--distanced,.utrecht-form-field-description>*{--utrecht-space-around:1}.utrecht-form-field-description--invalid{color:var(--utrecht-form-field-description-invalid-color,var(--utrecht-feedback-invalid-color,var(--utrecht-feedback-danger-color)))}.utrecht-form-field-description--valid{color:var(--utrecht-form-field-description-valid-color,var(--utrecht-feedback-valid-color,var(--utrecht-feedback-safe-color)))}.utrecht-form-field-description--warning{color:var(--utrecht-form-field-description-warning-color,var(--utrecht-feedback-warning-color))}\";\nstyleInject(css_248z$F);\nvar _excluded$O = [\"invalid\", \"valid\", \"warning\", \"className\", \"children\"];\nfunction ownKeys$Q(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$Q(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$Q(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Q(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FormFieldDescription = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var invalid = _ref.invalid,\n valid = _ref.valid,\n warning = _ref.warning,\n className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties$1(_ref, _excluded$O);\n return jsx(\"div\", _objectSpread$Q(_objectSpread$Q({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-field-description', invalid && 'utrecht-form-field-description--invalid', valid && 'utrecht-form-field-description--valid', warning && 'utrecht-form-field-description--warning', className),\n children: children\n }));\n});\nFormFieldDescription.displayName = 'FormFieldDescription';\nvar css_248z$E = \".utrecht-form-label{color:var(--utrecht-form-label-color);font-size:var(--utrecht-form-label-font-size);font-weight:var(--utrecht-form-label-font-weight)}.utrecht-form-label--checkbox{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-checkbox-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-form-label--checked{font-weight:var(--utrecht-form-label-checked-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-form-label--disabled{cursor:var(--utrecht-action-disabled-cursor,revert);font-weight:var(--utrecht-form-label-disabled-color,var(--utrecht-form-label-color))}.utrecht-form-label--radio{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-radio-font-weight,var(--utrecht-form-label-font-weight))}\";\nstyleInject(css_248z$E);\nvar _excluded$N = [\"children\", \"className\", \"type\", \"disabled\", \"checked\"];\nfunction ownKeys$P(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$P(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$P(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$P(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FormLabel = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n type = _ref.type,\n disabled = _ref.disabled,\n checked = _ref.checked,\n restProps = _objectWithoutProperties$1(_ref, _excluded$N);\n return jsx(\"label\", _objectSpread$P(_objectSpread$P({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-label', type && \"utrecht-form-label--\".concat(type), disabled && 'utrecht-form-label--disabled', checked && 'utrecht-form-label--checked', className),\n children: children\n }));\n});\nFormLabel.displayName = 'FormLabel';\nvar css_248z$D = \".utrecht-form-toggle{align-items:center;block-size:var(--utrecht-form-toggle-height,2em);border-color:var(--utrecht-form-toggle-border-color,currentColor);border-radius:var(--utrecht-form-toggle-border-radius,999rem);border-style:var(--utrecht-form-toggle-border-style,solid);border-width:var(--utrecht-form-toggle-border-width,1px);color:var(--utrecht-form-toggle-color);cursor:var(--utrecht-action-activate-cursor,revert);display:flex;inline-size:var(--utrecht-form-toggle-width,6em);padding-block-end:var(--utrecht-form-toggle-padding-block-end);padding-block-start:var(--utrecht-form-toggle-padding-block-start);padding-inline-end:var(--utrecht-form-toggle-padding-inline-end);padding-inline-start:var(--utrecht-form-toggle-padding-inline-start);position:relative;-webkit-user-select:none;user-select:none}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-form-toggle{--utrecht-form-toggle-background-color:ButtonFace;--utrecht-form-toggle-border-color:buttonborder;--utrecht-form-toggle-border-width:1px;--utrecht-form-toggle-border-radius:var(--utrecht-form-toggle-track-border-radius);--utrecht-form-toggle-thumb-background-color:ButtonText;--utrecht-form-toggle-thumb-disabled-background-color:GrayText;border-color:var(--utrecht-form-toggle-track-disabled-border-color,var(--utrecht-form-toggle-track-border-color));border-width:min(var(--utrecht-form-toggle-border-width,1px),1px)}}.utrecht-form-toggle--focus-visible,.utrecht-form-toggle--html-div:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-form-toggle--hover{background-color:var(--utrecht-form-toggle-hover-background-color,var(--utrecht-form-toggle-background-color));color:var(--utrecht-form-toggle-hover-color,var(--utrecht-form-toggle-color))}.utrecht-form-toggle--disabled,.utrecht-form-toggle--html-div:disabled{border-color:var(--utrecht-form-toggle-disabled-border-color,var(--utrecht-form-toggle-border-color,currentColor));border-style:var(--utrecht-form-toggle-disabled-border-style,var(--utrecht-form-toggle-border-style,solid));border-width:var(--utrecht-form-toggle-disabled-border-width,var(--utrecht-form-toggle-border-width,1px));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-form-toggle__thumb{background-color:var(--utrecht-form-toggle-thumb-background-color,currentColor);border-radius:var(--utrecht-form-toggle-thumb-border-radius,50%);box-shadow:var(--utrecht-form-toggle-thumb-box-shadow);margin-inline-end:var(--utrecht-form-toggle-thumb-margin-inline-end,0);margin-inline-start:var(--utrecht-form-toggle-thumb-margin-inline-start,0);min-block-size:var(--utrecht-form-toggle-thumb-min-inline-size,1.5em);min-inline-size:var(--utrecht-form-toggle-thumb-min-inline-size,1.5em);z-index:20}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:checked~.utrecht-form-toggle__track .utrecht-form-toggle__thumb,.utrecht-form-toggle__thumb--checked{margin-inline-start:auto}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:not(:checked)~.utrecht-form-toggle__track .utrecht-form-toggle__thumb,.utrecht-form-toggle__thumb--not-checked{margin-inline-end:auto}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:disabled~.utrecht-form-toggle__track .utrecht-form-toggle__thumb,.utrecht-form-toggle__thumb--disabled{background-color:var(--utrecht-form-toggle-thumb-disabled-background-color,#aaa);box-shadow:var(--utrecht-form-toggle-thumb-disabled-box-shadow,0)}.utrecht-form-toggle__track{align-items:center;background-color:var(--utrecht-form-toggle-accent-color);block-size:100%;border-radius:var(--utrecht-form-toggle-track-border-radius,var(--utrecht-form-toggle-border-radius));display:flex;inline-size:100%}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:checked~.utrecht-form-toggle__track,.utrecht-form-toggle__track--checked{background-color:var(--utrecht-form-toggle-checked-accent-color,var(--utrecht-form-toggle-accent-color))}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:disabled~.utrecht-form-toggle__track,.utrecht-form-toggle__track--disabled{background-color:var(--utrecht-form-toggle-background-disabled-background-color,#ddd);color:var(--utrecht-form-toggle-disabled-color,#000)}.utrecht-form-toggle__track--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox{clip:rect(1px,1px,1px,1px)!important;block-size:1px!important;border:0!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;inline-size:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:focus-visible~.utrecht-form-toggle__track{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}\";\nstyleInject(css_248z$D);\nvar _excluded$M = [\"checked\", \"disabled\", \"invalid\", \"id\", \"hidden\", \"required\", \"role\", \"tabIndex\", \"className\"];\nfunction ownKeys$O(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$O(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$O(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$O(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FormToggle = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var checked = _ref.checked,\n disabled = _ref.disabled,\n invalid = _ref.invalid,\n id = _ref.id,\n hidden = _ref.hidden,\n required = _ref.required,\n role = _ref.role,\n tabIndex = _ref.tabIndex,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$M);\n return jsxs(\"div\", {\n className: clsx('utrecht-form-toggle', 'utrecht-form-toggle--html-checkbox', {\n 'utrecht-form-toggle--disabled': disabled,\n 'utrecht-form-toggle--invalid': invalid,\n 'utrecht-form-toggle--required': required\n }, className),\n hidden: hidden,\n children: [jsx(\"input\", _objectSpread$O({\n id: id,\n \"aria-invalid\": invalid || undefined,\n type: \"checkbox\",\n className: \"utrecht-form-toggle__checkbox\",\n defaultChecked: checked || undefined,\n disabled: disabled || undefined,\n required: required,\n ref: ref,\n role: role,\n tabIndex: tabIndex\n }, restProps)), jsx(\"label\", {\n htmlFor: id,\n className: \"utrecht-form-toggle__track\",\n children: jsx(\"div\", {\n className: \"utrecht-form-toggle__thumb\"\n })\n })]\n });\n});\nFormToggle.displayName = 'FormToggle';\nvar css_248z$C = \"@charset \\\"UTF-8\\\";.utrecht-html{--utrecht-space-around:1}.utrecht-html article{max-inline-size:var(--utrecht-article-max-inline-size)}.utrecht-html blockquote{--utrecht-document-color:var(--utrecht-blockquote-content-color,inherit);--utrecht-paragraph-font-size:var(--utrecht-blockquote-content-font-size,inherit);--utrecht-space-around:1;background-color:var(--utrecht-blockquote-background-color);color:var(--utrecht-blockquote-color);color:var(--utrecht-blockquote-content-color,inherit);font-family:var(--utrecht-document-font-family);font-size:var(--utrecht-blockquote-font-size);font-size:var(--utrecht-blockquote-content-font-size,inherit);font-style:var(--utrecht-blockquote-font-style);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-blockquote-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-blockquote-margin-block-start, 0));margin-inline-end:var(--utrecht-blockquote-margin-inline-end);margin-inline-start:var(--utrecht-blockquote-margin-inline-start);padding-block-end:var(--utrecht-blockquote-padding-block-end);padding-block-start:var(--utrecht-blockquote-padding-block-start);padding-inline-end:var(--utrecht-blockquote-padding-inline-end);padding-inline-start:var(--utrecht-blockquote-padding-inline-start)}.utrecht-html button,.utrecht-html input[type=button i],.utrecht-html input[type=reset i],.utrecht-html input[type=submit i]{--_utrecht-button-background-color:var(\\n --_utrecht-button-hint-background-color,var(--_utrecht-button-appearance-background-color,var(--utrecht-button-background-color))\\n );--_utrecht-button-color:var(\\n --_utrecht-button-hint-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-color))\\n );--_utrecht-button-border-color:var(\\n --_utrecht-button-hint-border-color,var(--_utrecht-button-appearance-border-color,var(--utrecht-button-border-color,transparent))\\n );--_utrecht-button-border-bottom-color:var(\\n --_utrecht-button-hint-border-bottom-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-border-bottom-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-border-bottom-color,var(--utrecht-button-border-color,transparent))\\n )\\n )\\n )\\n );--_utrecht-button-disabled-background-color:var(\\n --_utrecht-button-hint-disabled-background-color,var(\\n --_utrecht-button-appearance-disabled-background-color,var(--utrecht-button-disabled-background-color,var(--utrecht-button-background-color))\\n )\\n );--_utrecht-button-disabled-border-color:var(\\n --_utrecht-button-hint-disabled-border-color,var(\\n --_utrecht-button-appearance-disabled-border-color,var(--utrecht-button-disabled-border-color,var(--utrecht-button-border-color))\\n )\\n );--_utrecht-button-disabled-color:var(\\n --_utrecht-button-hint-disabled-color,var(--_utrecht-button-appearance-disabled-color,var(--utrecht-button-disabled-color,var(--utrecht-button-color)))\\n );--_utrecht-button-pressed-background-color:var(\\n --_utrecht-button-hint-pressed-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-pressed-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-pressed-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-border-color:var(\\n --_utrecht-button-hint-pressed-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-pressed-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-pressed-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-color:var(\\n --_utrecht-button-hint-pressed-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-pressed-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-pressed-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-focus-background-color:var(\\n --_utrecht-button-hint-focus-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-focus-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-focus-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-border-color:var(\\n --_utrecht-button-hint-focus-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-focus-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-focus-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-color:var(\\n --_utrecht-button-hint-focus-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-focus-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-focus-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-hover-background-color:var(\\n --_utrecht-button-hint-hover-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-hover-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-hover-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-border-color:var(\\n --_utrecht-button-hint-hover-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-hover-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-hover-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-color:var(\\n --_utrecht-button-hint-hover-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-hover-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-hover-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-active-background-color:var(\\n --_utrecht-button-hint-active-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-active-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-active-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-border-color:var(\\n --_utrecht-button-hint-active-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-active-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-active-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-color:var(\\n --_utrecht-button-hint-active-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-active-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-active-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-border-width:var(--_utrecht-button-appearance-border-width,var(--utrecht-button-border-width,0));--_utrecht-button-border-block-end-width:var(\\n --utrecht-button-border-bottom-width,var(--_utrecht-button-border-width,0)\\n );--utrecht-icon-size:var(--utrecht-button-icon-size,1em);align-items:center;background-color:var(--_utrecht-button-background-color);border-block-end-color:var(--_utrecht-button-border-bottom-color);border-block-end-width:var(--_utrecht-button-border-block-end-width);border-color:var(--_utrecht-button-border-color);border-radius:var(--utrecht-button-border-radius);border-style:solid;border-width:var(--_utrecht-button-border-width);box-sizing:border-box;color:var(--_utrecht-button-color);cursor:var(--utrecht-action-activate-cursor,revert);display:inline-flex;font-family:var(--utrecht-button-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-button-font-size,var(--utrecht-document-font-family,inherit));font-weight:var(--_utrecht-button-appearance-font-weight,var(--utrecht-button-font-weight));gap:var(--utrecht-button-icon-gap);inline-size:var(--utrecht-button-inline-size,auto);justify-content:center;line-height:var(--utrecht-button-line-height);margin-block-end:var(--utrecht-button-margin-block-end);margin-block-start:var(--utrecht-button-margin-block-start);margin-inline-end:var(--utrecht-button-margin-inline-end);margin-inline-start:var(--utrecht-button-margin-inline-start);min-block-size:var(--utrecht-button-min-block-size,44px);min-inline-size:var(--utrecht-button-min-inline-size,44px);padding-block-end:var(--utrecht-button-padding-block-end);padding-block-start:var(--utrecht-button-padding-block-start);padding-inline-end:var(--utrecht-button-padding-inline-end);padding-inline-start:var(--utrecht-button-padding-inline-start);text-transform:var(--utrecht-button-text-transform);-webkit-user-select:none;user-select:none}.utrecht-html button[type=submit i],.utrecht-html input[type=submit i]{cursor:var(--utrecht-action-submit-cursor,revert)}.utrecht-html button:disabled,.utrecht-html button[aria-disabled=true]{background-color:var(--_utrecht-button-disabled-background-color);border-color:var(--_utrecht-button-disabled-border-color);color:var(--_utrecht-button-disabled-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html button:disabled[aria-busy=true],.utrecht-html button[aria-busy=true],.utrecht-html button[aria-disabled=true][aria-busy=true]{cursor:var(--utrecht-action-busy-cursor,wait)}.utrecht-html button:active:not([aria-disabled=true],:disabled){background-color:var(--_utrecht-button-active-background-color);border-color:var(--_utrecht-button-active-border-color);color:var(--_utrecht-button-active-color)}.utrecht-html button:hover:not([aria-disabled=true],:disabled){background-color:var(--_utrecht-button-hover-background-color);border-color:var(--_utrecht-button-hover-border-color);color:var(--_utrecht-button-hover-color);scale:var(--utrecht-button-hover-scale,1)}.utrecht-html button:focus:not([aria-disabled=true],:disabled){background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-html button:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input[type=checkbox i]{cursor:var(--utrecht-action-activate-cursor,revert);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-start:0;-webkit-user-select:none;user-select:none}.utrecht-html input[type=checkbox i]:disabled{cursor:var(--utrecht-action-disabled-cursor,revert)}.utrecht-html input[type=checkbox i]:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input[type=checkbox i]:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html body{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;background-color:var(--utrecht-document-background-color,inherit);color:var(--utrecht-document-color,inherit);font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-document-font-size,inherit);font-weight:var(--utrecht-document-font-weight,inherit);line-height:var(--utrecht-document-line-height,inherit);text-rendering:optimizeLegibility}.utrecht-html body :lang(ar){letter-spacing:0!important}.utrecht-html code{background-color:var(--utrecht-code-background-color);color:var(--utrecht-code-color);font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-variant-ligatures:none;line-height:var(--utrecht-code-line-height)}.utrecht-html em{font-style:var(--utrecht-emphasis-stressed-font-style,italic)}.utrecht-html strong{font-weight:var(--utrecht-emphasis-strong-font-weight,bold)}.utrecht-html fieldset{--utrecht-space-around:1;all:revert;border:0;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-margin-block-start, 0));margin-inline-end:0;margin-inline-start:0;min-inline-size:0;padding-block-end:0;padding-block-start:.01em;padding-inline-end:0;padding-inline-start:0}.utrecht-html figure{margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-figure-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-figure-margin-block-start, 0))}.utrecht-html figcaption{color:var(--utrecht-figure-caption-color);font-size:var(--utrecht-figure-caption-font-size);line-height:var(--utrecht-figure-caption-line-height)}.utrecht-html form{max-inline-size:var(--utrecht-form-max-inline-size)}.utrecht-html legend{color:var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit));display:table;font-family:var(--utrecht-form-fieldset-legend-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-form-fieldset-legend-font-size);font-weight:var(--utrecht-form-fieldset-legend-font-weight);inline-size:100%;line-height:var(--utrecht-form-fieldset-legend-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-legend-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-legend-margin-block-start, 0));padding-inline-end:0;padding-inline-start:0;page-break-after:avoid;page-break-inside:avoid}.utrecht-html fieldset:disabled>legend{color:var(--utrecht-form-fieldset-legend-disabled-color,var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit)))}.utrecht-html label{color:var(--utrecht-form-label-color);font-size:var(--utrecht-form-label-font-size);font-weight:var(--utrecht-form-label-font-weight)}.utrecht-html input[type=checkbox i]~label{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-checkbox-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-html input[type=radio i]~label{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-radio-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-html mark{background-color:var(--utrecht-mark-background-color,revert);color:var(--utrecht-mark-color,revert)}@media print{.utrecht-html mark{outline-color:currentColor;outline-style:dotted;outline-width:.1em}}@media screen and (-ms-high-contrast:active){.utrecht-html mark{background-color:Highlight;color:HighlightText}}.utrecht-html h1{color:var(--utrecht-heading-1-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-1-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-1-font-size,revert);font-weight:var(--utrecht-heading-1-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-1-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-start, 0))}.utrecht-html h1,.utrecht-html h2{--utrecht-space-around:1;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h2{color:var(--utrecht-heading-2-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-2-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-2-font-size,revert);font-weight:var(--utrecht-heading-2-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-2-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-start, 0))}.utrecht-html h3{color:var(--utrecht-heading-3-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-3-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-3-font-size,revert);font-weight:var(--utrecht-heading-3-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-3-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-start, 0))}.utrecht-html h3,.utrecht-html h4{--utrecht-space-around:1;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h4{color:var(--utrecht-heading-4-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-4-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-4-font-size,revert);font-weight:var(--utrecht-heading-4-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-4-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-start, 0))}.utrecht-html h5{color:var(--utrecht-heading-5-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-5-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-5-font-size,revert);font-weight:var(--utrecht-heading-5-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-5-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-start, 0))}.utrecht-html h5,.utrecht-html h6{--utrecht-space-around:1;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h6{color:var(--utrecht-heading-6-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-6-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-6-font-size,revert);font-weight:var(--utrecht-heading-6-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-6-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-start, 0))}.utrecht-html hgroup{--utrecht-pre-heading-order:-1;--utrecht-space-around:1;display:flex;flex-direction:column;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-start, 0))}.utrecht-html hgroup>*{--utrecht-space-around:0}.utrecht-html a{--utrecht-icon-size:var(--utrecht-link-icon-size,1em);color:var(--_utrecht-link-state-color,var(--utrecht-link-color,var(--_utrecht-link-forced-colors-color)))}.utrecht-html a:visited{--_utrecht-link-forced-colors-color:visitedtext;--_utrecht-link-state-color:var(--utrecht-link-visited-color)}.utrecht-html a:hover{--_utrecht-link-forced-colors-color:linktext;--_utrecht-link-state-color:var(--utrecht-link-hover-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-hover-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-hover-text-decoration-thickness);text-decoration-skip:none;text-decoration-skip-ink:none}.utrecht-html a:active{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-html a:focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-link-focus-background-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);text-decoration-skip-ink:none;z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-html a:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html a[href^=\\\"tel:\\\" i]{white-space:nowrap}.utrecht-html ol{--utrecht-space-around:1;box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit)));line-height:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit)));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-end, var(--utrecht-unordered-list-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-start, var(--utrecht-unordered-list-margin-block-start, 0)));padding-inline-start:var(--utrecht-ordered-list-padding-inline-start,var(--utrecht-unordered-list-padding-inline-start,2ch));text-align:start}.utrecht-html ol>li{margin-block-end:var(--utrecht-ordered-list-item-margin-block-end,var(--utrecht-unordered-list-item-margin-block-end));margin-block-start:var(--utrecht-ordered-list-item-margin-block-start,var(--utrecht-unordered-list-item-margin-block-start));padding-inline-start:var(--utrecht-ordered-list-item-padding-inline-start,var(--utrecht-unordered-list-item-padding-inline-start,1ch))}.utrecht-html ol:lang(ar){list-style:arabic-indic}.utrecht-html p{color:var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit));font-family:var(--utrecht-paragraph-font-family,var(--utrecht-document-font-family,inherit));font-size:var(--utrecht-paragraph-font-size,var(--utrecht-document-font-size,inherit));font-weight:var(--utrecht-paragraph-font-weight,inherit);line-height:var(--utrecht-paragraph-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-start, 0))}.utrecht-html p.lead{color:var(--utrecht-paragraph-lead-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-lead-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-lead-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-lead-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-html *~p{--utrecht-space-around:1}.utrecht-html p:has(>small:only-child){color:var(--utrecht-paragraph-small-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-small-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-small-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-small-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-html p>small:only-child{font-size:inherit}.utrecht-html pre:has(>code:only-child){--utrecht-code-color:var(--utrecht-code-block-color,inherit);--utrecht-code-background-color:var(--utrecht-code-block-background-color,inherit);--utrecht-code-font-weight:var(--utrecht-code-block-font-weight,inherit);--utrecht-code-font-size:var(--utrecht-code-block-font-size,inherit);--utrecht-code-font-family:var(--utrecht-code-block-font-family,monospace);background-color:var(--utrecht-code-background-color);background-color:var(--utrecht-code-block-background-color);color:var(--utrecht-code-color);display:block;font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-size:var(--utrecht-code-block-font-size,var(--utrecht-code-font-size));font-variant-ligatures:none;line-height:var(--utrecht-code-line-height);line-height:var(--utrecht-code-block-line-height,var(--utrecht-code-line-height));margin-block-end:var(--utrecht-code-block-margin-block-end);margin-block-start:var(--utrecht-code-block-margin-block-start);margin-inline-end:var(--utrecht-code-block-margin-inline-end);margin-inline-start:var(--utrecht-code-block-margin-inline-start);padding-block-end:var(--utrecht-code-block-padding-block-end);padding-block-start:var(--utrecht-code-block-padding-block-start);padding-inline-end:var(--utrecht-code-block-padding-inline-end);padding-inline-start:var(--utrecht-code-block-padding-inline-start);white-space:pre}.utrecht-html pre:has(>code:only-child)>code{display:contents}.utrecht-html input[type=radio i]{--_utrecht-radio-button-background-color:var(\\n --_utrecht-radio-button-interactive-background-color,var(--_utrecht-radio-button-state-background-color,var(--utrecht-radio-button-background-color))\\n );--_utrecht-radio-button-border-color:var(\\n --_utrecht-radio-button-interactive-border-color,var(--_utrecht-radio-button-state-border-color,var(--utrecht-radio-button-border-color,currentColor))\\n );--_utrecht-radio-button-border-width:var(\\n --_utrecht-radio-button-interactive-border-width,var(--_utrecht-radio-button-state-border-width,var(--utrecht-radio-button-border-width))\\n );--_utrecht-radio-button-color:var(\\n --_utrecht-radio-button-interactive-color,var(--_utrecht-radio-button-state-color,var(--utrecht-radio-button-color,currentColor))\\n );--_utrecht-radio-button-icon-size:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--_utrecht-radio-button-background-color);background-image:radial-gradient(circle,var(--_utrecht-radio-button-color,transparent) calc(var(--_utrecht-radio-button-icon-size, 50%) - 5%),var(--_utrecht-radio-button-background-color,currentColor) var(--_utrecht-radio-button-icon-size,50%));background-position:50%;background-repeat:no-repeat;background-size:contain;block-size:var(--utrecht-radio-button-size,1em);border-color:var(--_utrecht-radio-button-border-color);border-radius:50%;border-style:solid;border-width:var(--_utrecht-radio-button-border-width);cursor:var(--utrecht-action-activate-cursor,revert);inline-size:var(--utrecht-radio-button-size,1em);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-end:var(--utrecht-radio-button-margin-inline-end);margin-inline-start:0;min-block-size:24px;min-inline-size:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:top}.utrecht-html input[type=radio i]:checked{--_utrecht-radio-button-icon-size:var(--utrecht-radio-button-icon-size,50%);--_utrecht-radio-button-state-background-color:var(--utrecht-radio-button-checked-background-color);--_utrecht-radio-button-state-border-color:var(--utrecht-radio-button-checked-border-color);--_utrecht-radio-button-state-border-width:var(--utrecht-radio-button-checked-border-width);--_utrecht-radio-button-state-color:var(--utrecht-radio-button-checked-color);--_utrecht-radio-button-state-active-background-color:var(--utrecht-radio-button-checked-active-background-color);--_utrecht-radio-button-state-active-border-color:var(--utrecht-radio-button-checked-active-border-color);--_utrecht-radio-button-state-active-border-width:var(--utrecht-radio-button-checked-active-border-width);--_utrecht-radio-button-state-active-color:var(--utrecht-radio-button-checked-active-color);--_utrecht-radio-button-state-focus-background-color:var(--utrecht-radio-button-checked-focus-background-color);--_utrecht-radio-button-state-focus-border-color:var(--utrecht-radio-button-checked-focus-border-color);--_utrecht-radio-button-state-focus-border-width:var(--utrecht-radio-button-checked-focus-border-width);--_utrecht-radio-button-state-focus-color:var(--utrecht-radio-button-checked-focus-color);--_utrecht-radio-button-state-hover-background-color:var(--utrecht-radio-button-checked-hover-background-color);--_utrecht-radio-button-state-hover-border-color:var(--utrecht-radio-button-checked-hover-border-color);--_utrecht-radio-button-state-hover-border-width:var(--utrecht-radio-button-checked-hover-border-width);--_utrecht-radio-button-state-hover-color:var(--utrecht-radio-button-checked-hover-color)}.utrecht-html input[type=radio i]:disabled{--_utrecht-radio-button-background-color:var(--utrecht-radio-button-disabled-background-color);--_utrecht-radio-button-border-color:var(--utrecht-radio-button-disabled-border-color);--_utrecht-radio-button-border-width:var(--utrecht-radio-button-disabled-border-width);--_utrecht-radio-button-color:var(--utrecht-radio-button-disabled-color);--_utrecht-radio-button-focus-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-focus-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-focus-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-focus-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-active-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-active-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-active-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-active-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-hover-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-hover-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-hover-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-hover-color:var(--_utrecht-radio-button-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html input[type=radio i]:invalid,.utrecht-html input[type=radio i][aria-invalid=true]{border-color:var(--utrecht-radio-button-invalid-border-color,var(--utrecht-radio-button-border-color));border-width:var(--utrecht-radio-button-invalid-border-width,var(--utrecht-radio-button-border-width));color:var(--utrecht-radio-button-invalid-color,var(--utrecht-radio-button-color))}.utrecht-html input[type=radio i]:focus:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --utrecht-radio-button-focus-background-color,var(--utrecht-radio-button-focus-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --utrecht-radio-button-focus-border-color,var(--utrecht-radio-button-focus-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --utrecht-radio-button-focus-border-width,var(--utrecht-radio-button-focus-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --utrecht-radio-button-focus-color,var(--utrecht-radio-button-focus-color)\\n )}.utrecht-html input[type=radio i]:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input[type=radio i]:hover:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-hover-background-color,var(--utrecht-radio-button-hover-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-hover-border-color,var(--utrecht-radio-button-hover-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-hover-border-width,var(--utrecht-radio-button-hover-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-hover-color,var(--utrecht-radio-button-hover-color)\\n )}.utrecht-html input[type=radio i]:active:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-active-background-color,var(--utrecht-radio-button-active-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-active-border-color,var(--utrecht-radio-button-active-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-active-border-width,var(--utrecht-radio-button-active-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-active-color,var(--utrecht-radio-button-active-color)\\n )}.utrecht-html select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:var(--utrecht-select-background-color,var(--utrecht-form-control-background-color));background-image:var(--utrecht-select-background-image);background-position:100%;background-repeat:no-repeat;background-size:1.4em;border-block-end-width:var(--utrecht-select-border-block-end-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width)));border-block-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-color:var(--utrecht-select-border-color,var(--utrecht-form-control-border-color));border-inline-end-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-inline-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-radius:var(--utrecht-select-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;color:var(--utrecht-select-color,var(--utrecht-form-control-color));font-family:var(--utrecht-select-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-select-font-size,var(--utrecht-form-control-font-size));inline-size:100%;max-inline-size:var(--utrecht-select-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-select-padding-block-end,var(--utrecht-form-control-padding-block-end));padding-block-start:var(--utrecht-select-padding-block-start,var(--utrecht-form-control-padding-block-start));padding-inline-end:var(--utrecht-select-padding-inline-end,var(--utrecht-form-control-padding-inline-end));padding-inline-start:var(--utrecht-select-padding-inline-start,var(--utrecht-form-control-padding-inline-start))}.utrecht-html select:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-select-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-select-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html select:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html select:disabled{background-color:var(--utrecht-select-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html select[aria-invalid=true]{--_utrecht-select-border-width:var(\\n --utrecht-select-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-select-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-select-border-width);border-block-end-width:var(--utrecht-select-invalid-border-block-end-width,var(--utrecht-form-control-invalid-border-block-end-width,var(--utrecht-select-border-block-end-width,var(--utrecht-form-control-border-block-end-width,var(--_utrecht-select-border-width)))));border-color:var(--utrecht-select-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))))}.utrecht-html hr{border-color:var(--utrecht-separator-color);border-width:0 0 var(--utrecht-separator-block-size) 0;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-start, 0))}.utrecht-html hr,.utrecht-html table{--utrecht-space-around:1;border-style:solid}.utrecht-html table{border-collapse:separate;border-color:var(--utrecht-table-border-color,0);border-spacing:0;border-width:var(--utrecht-table-border-width,0);font-family:var(--utrecht-table-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-table-font-size,inherit);inline-size:100%;line-height:var(--utrecht-table-line-height,inherit);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-start, 0))}.utrecht-html caption{color:var(--utrecht-table-caption-color);font-family:var(--utrecht-table-caption-font-family);font-size:var(--utrecht-table-caption-font-size);font-weight:var(--utrecht-table-caption-font-weight);line-height:var(--utrecht-table-caption-line-height);margin-block-end:var(--utrecht-table-caption-margin-block-end);page-break-after:avoid;text-align:var(--utrecht-table-caption-text-align,center)}.utrecht-html thead{--_utrecht-table-header-cell-vertical-align:bottom;--_utrecht-table-header-cell-z-index:8;background-color:var(--utrecht-table-header-background-color);color:var(--utrecht-table-header-color);font-weight:var(--utrecht-table-header-font-weight);page-break-inside:avoid;text-transform:var(--utrecht-table-header-text-transform)}.utrecht-html tbody{--_utrecht-table-header-cell-z-index:2}.utrecht-html th{color:var(--utrecht-table-header-cell-color);font-size:var(--utrecht-table-header-cell-font-size);font-weight:var(--utrecht-table-header-cell-font-weight,bold);text-transform:var(--utrecht-table-header-cell-text-transform);vertical-align:var(--_utrecht-table-header-cell-vertical-align,top);z-index:var(--_utrecht-table-header-cell-z-index)}.utrecht-html td,.utrecht-html th{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start}.utrecht-html td,.utrecht-html th{border-block-end-color:var(--utrecht-table-row-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-row-border-block-end-width,0);vertical-align:top}.utrecht-html td:first-child,.utrecht-html th:first-child{padding-inline-start:var(--utrecht-table-row-padding-inline-start,var(--utrecht-table-cell-padding-inline-start,0))}.utrecht-html td:last-child,.utrecht-html th:last-child{padding-inline-end:var(--utrecht-table-row-padding-inline-end,var(--utrecht-table-cell-padding-inline-end,0))}.utrecht-html thead tr:last-child th{border-block-end-color:var(--utrecht-table-header-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-header-border-block-end-width,0)}.utrecht-html td.numeric,.utrecht-html tfoot>tr>th.numeric,.utrecht-html th[scope=column].numeric,.utrecht-html thead>tr>th.numeric{--_utrecht-table-cell-text-align:right;text-align:var(--_utrecht-table-cell-text-align)}.utrecht-html td.numeric{font-variant-numeric:lining-nums tabular-nums}.utrecht-html table.alternate-row-color>tr:nth-child(2n)>td,.utrecht-html table.alternate-row-color>tr:nth-child(2n)>th{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-html table.alternate-row-color>tr:nth-child(odd)>td,.utrecht-html table.alternate-row-color>tr:nth-child(odd)>th{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-html table.alternate-row-color>tbody>tr:nth-child(2n)>td,.utrecht-html table.alternate-row-color>tbody>tr:nth-child(2n)>th{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-html table.alternate-row-color>tbody>tr:nth-child(odd)>td,.utrecht-html table.alternate-row-color>tbody>tr:nth-child(odd)>th{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-html textarea{background-color:var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textarea-border-bottom-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textarea-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textarea-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textarea-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textarea-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textarea-line-height,initial);max-inline-size:var(--utrecht-textarea-max-inline-size,var(--utrecht-form-control-max-inline-size));min-block-size:var(--utrecht-textarea-min-block-size);padding-block-end:var(--utrecht-textarea-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textarea-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textarea-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textarea-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial));resize:vertical;resize:block}.utrecht-html textarea:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textarea-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textarea-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html textarea:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html textarea:invalid,.utrecht-html textarea[aria-invalid=true]{--_utrecht-textarea-border-width:var(\\n --utrecht-textarea-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textarea-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textarea-border-width);border-block-end-width:var(--utrecht-textarea-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textarea-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textarea-border-width)))));border-color:var(--utrecht-textarea-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-html textarea:read-only{background-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textarea-border,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textarea-border,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-html textarea:disabled{background-color:var(--utrecht-textarea-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html textarea::placeholder{color:var(--utrecht-textarea-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-html input:not([type]),.utrecht-html input[type=date i],.utrecht-html input[type=datetime-local i],.utrecht-html input[type=email i],.utrecht-html input[type=month i],.utrecht-html input[type=number i],.utrecht-html input[type=password i],.utrecht-html input[type=search i],.utrecht-html input[type=tel i],.utrecht-html input[type=text i],.utrecht-html input[type=time i],.utrecht-html input[type=url i],.utrecht-html input[type=week i]{background-color:var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textbox-border-bottom-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textbox-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textbox-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textbox-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textbox-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textbox-line-height,var(--utrecht-form-control-line-height,initial));max-inline-size:var(--utrecht-textbox-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-textbox-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textbox-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textbox-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textbox-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial))}.utrecht-html input:not([type]):focus,.utrecht-html input[type=date i]:focus,.utrecht-html input[type=datetime-local i]:focus,.utrecht-html input[type=email i]:focus,.utrecht-html input[type=month i]:focus,.utrecht-html input[type=number i]:focus,.utrecht-html input[type=password i]:focus,.utrecht-html input[type=search i]:focus,.utrecht-html input[type=tel i]:focus,.utrecht-html input[type=text i]:focus,.utrecht-html input[type=time i]:focus,.utrecht-html input[type=url i]:focus,.utrecht-html input[type=week i]:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textbox-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textbox-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input:not([type]):focus:not(:focus-visible),.utrecht-html input[type=date i]:focus:not(:focus-visible),.utrecht-html input[type=datetime-local i]:focus:not(:focus-visible),.utrecht-html input[type=email i]:focus:not(:focus-visible),.utrecht-html input[type=month i]:focus:not(:focus-visible),.utrecht-html input[type=number i]:focus:not(:focus-visible),.utrecht-html input[type=password i]:focus:not(:focus-visible),.utrecht-html input[type=search i]:focus:not(:focus-visible),.utrecht-html input[type=tel i]:focus:not(:focus-visible),.utrecht-html input[type=text i]:focus:not(:focus-visible),.utrecht-html input[type=time i]:focus:not(:focus-visible),.utrecht-html input[type=url i]:focus:not(:focus-visible),.utrecht-html input[type=week i]:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html input:not([type]):invalid,.utrecht-html input:not([type])[aria-invalid=true],.utrecht-html input[type=date i]:invalid,.utrecht-html input[type=date i][aria-invalid=true],.utrecht-html input[type=datetime-local i]:invalid,.utrecht-html input[type=datetime-local i][aria-invalid=true],.utrecht-html input[type=email i]:invalid,.utrecht-html input[type=email i][aria-invalid=true],.utrecht-html input[type=month i]:invalid,.utrecht-html input[type=month i][aria-invalid=true],.utrecht-html input[type=number i]:invalid,.utrecht-html input[type=number i][aria-invalid=true],.utrecht-html input[type=password i]:invalid,.utrecht-html input[type=password i][aria-invalid=true],.utrecht-html input[type=search i]:invalid,.utrecht-html input[type=search i][aria-invalid=true],.utrecht-html input[type=tel i]:invalid,.utrecht-html input[type=tel i][aria-invalid=true],.utrecht-html input[type=text i]:invalid,.utrecht-html input[type=text i][aria-invalid=true],.utrecht-html input[type=time i]:invalid,.utrecht-html input[type=time i][aria-invalid=true],.utrecht-html input[type=url i]:invalid,.utrecht-html input[type=url i][aria-invalid=true],.utrecht-html input[type=week i]:invalid,.utrecht-html input[type=week i][aria-invalid=true]{--_utrecht-textbox-border-width:var(\\n --utrecht-textbox-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textbox-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textbox-border-width);border-block-end-width:var(--utrecht-textbox-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textbox-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textbox-border-width)))));border-color:var(--utrecht-textbox-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-html input:not([type]):read-only,.utrecht-html input[type=date i]:read-only,.utrecht-html input[type=datetime-local i]:read-only,.utrecht-html input[type=email i]:read-only,.utrecht-html input[type=month i]:read-only,.utrecht-html input[type=number i]:read-only,.utrecht-html input[type=password i]:read-only,.utrecht-html input[type=search i]:read-only,.utrecht-html input[type=tel i]:read-only,.utrecht-html input[type=text i]:read-only,.utrecht-html input[type=time i]:read-only,.utrecht-html input[type=url i]:read-only,.utrecht-html input[type=week i]:read-only{background-color:var(--utrecht-textbox-read-only-background-color,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-read-only-border-color,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-html input:not([type]):disabled,.utrecht-html input[type=date i]:disabled,.utrecht-html input[type=datetime-local i]:disabled,.utrecht-html input[type=email i]:disabled,.utrecht-html input[type=month i]:disabled,.utrecht-html input[type=number i]:disabled,.utrecht-html input[type=password i]:disabled,.utrecht-html input[type=search i]:disabled,.utrecht-html input[type=tel i]:disabled,.utrecht-html input[type=text i]:disabled,.utrecht-html input[type=time i]:disabled,.utrecht-html input[type=url i]:disabled,.utrecht-html input[type=week i]:disabled{background-color:var(--utrecht-textbox-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html input:not([type])::placeholder,.utrecht-html input[type=date i]::placeholder,.utrecht-html input[type=datetime-local i]::placeholder,.utrecht-html input[type=email i]::placeholder,.utrecht-html input[type=month i]::placeholder,.utrecht-html input[type=number i]::placeholder,.utrecht-html input[type=password i]::placeholder,.utrecht-html input[type=search i]::placeholder,.utrecht-html input[type=tel i]::placeholder,.utrecht-html input[type=text i]::placeholder,.utrecht-html input[type=time i]::placeholder,.utrecht-html input[type=url i]::placeholder,.utrecht-html input[type=week i]::placeholder{color:var(--utrecht-textbox-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-html input[autocomplete~=current-password i],.utrecht-html input[autocomplete~=new-password i],.utrecht-html input[type=password i]{font-variant-ligatures:none;font-variant-numeric:slashed-zero}.utrecht-html input[autocomplete~=bday i],.utrecht-html input[autocomplete~=bday-day i],.utrecht-html input[autocomplete~=bday-month i],.utrecht-html input[autocomplete~=bday-year i],.utrecht-html input[autocomplete~=cc-csc i],.utrecht-html input[autocomplete~=cc-exp i],.utrecht-html input[autocomplete~=cc-exp-month i],.utrecht-html input[autocomplete~=cc-exp-year i],.utrecht-html input[autocomplete~=cc-number i],.utrecht-html input[autocomplete~=one-time-code i],.utrecht-html input[autocomplete~=postal-code i],.utrecht-html input[autocomplete~=tel i],.utrecht-html input[autocomplete~=tel-area-code i],.utrecht-html input[autocomplete~=tel-country-code i],.utrecht-html input[autocomplete~=tel-extension i],.utrecht-html input[autocomplete~=tel-local i],.utrecht-html input[autocomplete~=tel-national i],.utrecht-html input[autocomplete~=transaction-amount i],.utrecht-html input[inputmode=decimal i],.utrecht-html input[inputmode=numeric i],.utrecht-html input[inputmode=tel i],.utrecht-html input[type=number i],.utrecht-html input[type=tel i]{-moz-appearance:textfield;font-variant-numeric:lining-nums tabular-nums}.utrecht-html input[inputmode=email i],.utrecht-html input[inputmode=url i],.utrecht-html input[type=email i],.utrecht-html input[type=url i]{font-variant-ligatures:none}.utrecht-html ul{--utrecht-space-around:1;box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit));line-height:var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-end, var(--utrecht-paragraph-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-start, var(--utrecht-paragraph-margin-block-start, 0)));padding-inline-start:var(--utrecht-unordered-list-padding-inline-start,2ch);text-align:start}.utrecht-html ul>li{margin-block-end:var(--utrecht-unordered-list-item-margin-block-end);margin-block-start:var(--utrecht-unordered-list-item-margin-block-start);padding-inline-start:var(--utrecht-unordered-list-item-padding-inline-start,1ch)}.utrecht-html ul>li::marker{color:var(--utrecht-unordered-list-marker-color);content:\\\"ā—\\\"}\";\nstyleInject(css_248z$C);\nvar _excluded$L = [\"children\", \"className\"];\nfunction ownKeys$N(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$N(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$N(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$N(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar HTMLContent = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$L);\n return jsx(\"div\", _objectSpread$N(_objectSpread$N({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-html', className),\n children: children\n }));\n});\nHTMLContent.displayName = 'HTMLContent';\nvar css_248z$B = \".utrecht-heading-1{color:var(--utrecht-heading-1-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-1-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-1-font-size,revert);font-weight:var(--utrecht-heading-1-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-1-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-1--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$B);\nvar css_248z$A = \".utrecht-heading-2{color:var(--utrecht-heading-2-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-2-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-2-font-size,revert);font-weight:var(--utrecht-heading-2-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-2-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-2--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$A);\nvar css_248z$z = \".utrecht-heading-3{color:var(--utrecht-heading-3-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-3-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-3-font-size,revert);font-weight:var(--utrecht-heading-3-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-3-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-3--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$z);\nvar css_248z$y = \".utrecht-heading-4{color:var(--utrecht-heading-4-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-4-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-4-font-size,revert);font-weight:var(--utrecht-heading-4-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-4-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-4--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$y);\nvar css_248z$x = \".utrecht-heading-5{color:var(--utrecht-heading-5-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-5-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-5-font-size,revert);font-weight:var(--utrecht-heading-5-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-5-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-5--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$x);\nvar css_248z$w = \".utrecht-heading-6{color:var(--utrecht-heading-6-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-6-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-6-font-size,revert);font-weight:var(--utrecht-heading-6-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-6-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-6--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$w);\nvar _excluded$K = [\"children\", \"className\"];\nfunction ownKeys$M(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$M(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading1 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$K);\n return jsx(\"h1\", _objectSpread$M(_objectSpread$M({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-1', className),\n children: children\n }));\n});\nHeading1.displayName = 'Heading1';\nvar _excluded$J = [\"children\", \"className\"];\nfunction ownKeys$L(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$L(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$L(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$L(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading2 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$J);\n return jsx(\"h2\", _objectSpread$L(_objectSpread$L({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-2', className),\n children: children\n }));\n});\nHeading2.displayName = 'Heading2';\nvar _excluded$I = [\"children\", \"className\"];\nfunction ownKeys$K(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$K(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading3 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$I);\n return jsx(\"h3\", _objectSpread$K(_objectSpread$K({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-3', className),\n children: children\n }));\n});\nHeading3.displayName = 'Heading3';\nvar _excluded$H = [\"children\", \"className\"];\nfunction ownKeys$J(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$J(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$J(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$J(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading4 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$H);\n return jsx(\"h4\", _objectSpread$J(_objectSpread$J({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-4', className),\n children: children\n }));\n});\nHeading4.displayName = 'Heading4';\nvar _excluded$G = [\"children\", \"className\"];\nfunction ownKeys$I(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$I(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading5 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$G);\n return jsx(\"h5\", _objectSpread$I(_objectSpread$I({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-5', className),\n children: children\n }));\n});\nHeading5.displayName = 'Heading5';\nvar _excluded$F = [\"children\", \"className\"];\nfunction ownKeys$H(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$H(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$H(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$H(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading6 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$F);\n return jsx(\"h6\", _objectSpread$H(_objectSpread$H({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-6', className),\n children: children\n }));\n});\nHeading6.displayName = 'Heading6';\nvar css_248z$v = \".utrecht-heading-group{--utrecht-pre-heading-order:-1;display:flex;flex-direction:column;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-start, 0))}.utrecht-heading-group>*{--utrecht-space-around:0}\";\nstyleInject(css_248z$v);\nvar _excluded$E = [\"children\", \"className\"];\nfunction ownKeys$G(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$G(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$G(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$G(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar HeadingGroup = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$E);\n return jsx(\"hgroup\", _objectSpread$G(_objectSpread$G({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-group', className),\n children: children\n }));\n});\nHeadingGroup.displayName = 'HeadingGroup';\nvar css_248z$u = \".utrecht-iban-data{font-variant-numeric:lining-nums slashed-zero tabular-nums;white-space:nowrap}\";\nstyleInject(css_248z$u);\nvar _excluded$D = [\"children\", \"value\", \"className\"];\nfunction ownKeys$F(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$F(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n/* Exported only for unit tests, not part of the public API */\nvar normalizeIBAN = function normalizeIBAN(iban) {\n return iban\n // Remove whitespace and word separator characters such as the dash\n .replace(/[\\s+\\W]+/g, '').toUpperCase();\n};\n/* Exported only for unit tests, not part of the public API */\nvar formatIBAN = function formatIBAN(normalizedIBAN) {\n return normalizedIBAN\n // Add a space after every four characters, except at the end\n .replace(/(.{4})(?!$)/g, '$1 ');\n};\nvar IBANData = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n value = _ref.value,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$D);\n var normalized = normalizeIBAN(value);\n var formatted = formatIBAN(normalized);\n console.log({\n value: value,\n normalized: normalized,\n formatted: formatted\n });\n return jsx(\"data\", _objectSpread$F(_objectSpread$F({}, restProps), {}, {\n ref: ref,\n value: normalized,\n className: clsx('utrecht-iban-data', className),\n translate: \"no\",\n children: children || formatted\n }));\n});\nIBANData.displayName = 'IBANData';\nvar css_248z$t = \".utrecht-icon{block-size:var(--utrecht-icon-size);color:var(--utrecht-icon-color);display:inline-block;font-size:var(--utrecht-icon-size);inline-size:var(--utrecht-icon-size);inset-block-start:var(--utrecht-icon-inset-block-start,0);position:relative}.utrecht-icon svg{height:100%;pointer-events:none;width:100%}\";\nstyleInject(css_248z$t);\nvar _excluded$C = [\"children\", \"className\"];\nfunction ownKeys$E(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$E(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$E(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$E(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Icon = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$C);\n return jsx(\"span\", _objectSpread$E(_objectSpread$E({\n \"aria-hidden\": \"true\",\n ref: ref,\n className: clsx('utrecht-icon', className)\n }, restProps), {}, {\n children: children\n }));\n});\nIcon.displayName = 'Icon';\nvar css_248z$s = \".utrecht-img{height:auto;width:auto}.utrecht-img--photo,.utrecht-img--scale-down{max-height:100%;max-width:100%}\";\nstyleInject(css_248z$s);\nvar _excluded$B = [\"className\", \"photo\"];\nfunction ownKeys$D(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$D(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Image$1 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n photo = _ref.photo,\n restProps = _objectWithoutProperties$1(_ref, _excluded$B);\n return jsx(\"img\", _objectSpread$D(_objectSpread$D({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-img', {\n 'utrecht-img--photo': photo\n }, className)\n }));\n});\nImage$1.displayName = 'Image';\nvar css_248z$r = \".utrecht-link{--utrecht-icon-size:var(--utrecht-link-icon-size,1em);color:var(--_utrecht-link-state-color,var(--utrecht-link-color,var(--_utrecht-link-forced-colors-color)))}.utrecht-link:any-link{--_utrecht-link-forced-colors-color:linktext;text-decoration-color:var(--_utrecht-link-state-text-decoration-color,var(--utrecht-link-text-decoration-color,currentColor));text-decoration-line:var(--_utrecht-link-state-text-decoration,var(--utrecht-link-text-decoration,underline));text-decoration-skip-ink:all;text-decoration-thickness:max(var(--_utrecht-link-state-text-decoration-thickness,var(--utrecht-link-text-decoration-thickness)),1px);text-underline-offset:var(--utrecht-link-text-underline-offset)}.utrecht-link--icon-left{background-image:var(--utrecht-link-icon-left-background-image,none);background-position:0 .25em;background-repeat:no-repeat;color:var(--utrecht-link-color,LinkText);font-weight:var(--utrecht-typography-weight-scale-bold-font-weight);padding-inline-start:var(--utrecht-space-block-md);text-decoration-line:none}.utrecht-link--visited{--_utrecht-link-forced-colors-color:visitedtext;--_utrecht-link-state-color:var(--utrecht-link-visited-color)}.utrecht-link--hover,.utrecht-link--html-a:any-link:hover{--_utrecht-link-forced-colors-color:linktext;--_utrecht-link-state-color:var(--utrecht-link-hover-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-hover-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-hover-text-decoration-thickness);text-decoration-skip:none;text-decoration-skip-ink:none}.utrecht-link--focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;background-color:var(--utrecht-link-focus-background-color,transparent);text-decoration-skip-ink:none}.utrecht-link--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-link--html-a:any-link:focus,.utrecht-link--html-span:focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-link-focus-background-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);text-decoration-skip-ink:none;z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-link--html-a:any-link:focus:not(:focus-visible),.utrecht-link--html-span:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-link--active,.utrecht-link--html-a:any-link:active,.utrecht-link--html-span:active{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-link--telephone{white-space:nowrap}.utrecht-link--current{cursor:var(--utrecht-action-inert-cursor,normal);font-weight:var(--utrecht-link-current-font-weight)}.utrecht-link--box-content:any-link{color:unset;display:inline-block;text-decoration-line:unset;text-decoration-skip-ink:unset;text-decoration-thickness:unset;text-underline-offset:unset}.utrecht-link--placeholder{--_utrecht-link-forced-colors-color:GrayText;--_utrecht-link-state-color:var(--utrecht-link-placeholder-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed);font-weight:var(--utrecht-link-placeholder-font-weight);text-decoration-line:none}.utrecht-link--forced-colors{--utrecht-focus-outline-color:Highlight;--utrecht-focus-inverse-outline-color:HighlightText;--utrecht-link-color:linktext;--utrecht-link-hover-color:linktext;--utrecht-link-focus-color:linktext;--utrecht-link-active-color:activetext;--utrecht-link-visited-color:visitedtext;--utrecht-link-placeholder-color:GrayText}\";\nstyleInject(css_248z$r);\nvar css_248z$q = \".utrecht-link-button{--utrecht-icon-size:var(--utrecht-link-icon-size,1em);--_utrecht-link-forced-colors-color:linktext;--utrecht-icon-size:var(--utrecht-button-icon-size,1em);align-items:center;color:var(--_utrecht-link-state-color,var(--utrecht-link-color,var(--_utrecht-link-forced-colors-color)));cursor:pointer;display:inline-flex;font-family:var(--utrecht-button-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-button-font-size,var(--utrecht-document-font-family));font-weight:var(--utrecht-button-font-weight);gap:var(--utrecht-button-icon-gap);inline-size:var(--utrecht-button-inline-size,auto);justify-content:center;line-height:inherit;min-block-size:var(--utrecht-button-min-block-size,44px);min-inline-size:var(--utrecht-button-min-inline-size,44px);padding-block-end:var(--utrecht-button-padding-block-end);padding-block-start:var(--utrecht-button-padding-block-start);padding-inline-end:var(--utrecht-button-padding-inline-end);padding-inline-start:var(--utrecht-button-padding-inline-start);text-decoration-color:var(--_utrecht-link-state-text-decoration-color,var(--utrecht-link-text-decoration-color,currentColor));text-decoration-line:var(--_utrecht-link-state-text-decoration,var(--utrecht-link-text-decoration,underline));text-decoration-skip-ink:all;text-decoration-thickness:max(var(--_utrecht-link-state-text-decoration-thickness,var(--utrecht-link-text-decoration-thickness)),1px);text-transform:var(--utrecht-button-text-transform);text-underline-offset:var(--utrecht-link-text-underline-offset);-webkit-user-select:none;user-select:none}.utrecht-link-button--hover,.utrecht-link-button--html-button:not(:disabled):hover{--_utrecht-link-forced-colors-color:linktext;--_utrecht-link-state-color:var(--utrecht-link-hover-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-hover-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-hover-text-decoration-thickness);text-decoration-skip:none;text-decoration-skip-ink:none}.utrecht-link-button--disabled{--_utrecht-link-forced-colors-color:GrayText;--_utrecht-link-state-color:var(--utrecht-link-placeholder-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed);font-weight:var(--utrecht-link-placeholder-font-weight);text-decoration-line:none}.utrecht-link-button--focus,.utrecht-link-button--html-button:not(:disabled):focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;background-color:var(--utrecht-link-focus-background-color,transparent);text-decoration-skip-ink:none}.utrecht-link-button--focus-visible,.utrecht-link-button--html-button:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-link-button--active,.utrecht-link-button--html-button:not(:disabled):active{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-link-button--inline{--utrecht-icon-inset-block-start:var(--utrecht-icon-baseline-inset-block-start);min-block-size:auto;min-inline-size:auto;padding-block-end:0;padding-block-start:0;padding-inline-end:0;padding-inline-start:0}.utrecht-link-button--pressed{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-link-button--html-button{background-color:transparent;border-width:0}\";\nstyleInject(css_248z$q);\nvar _excluded$A = [\"children\", \"disabled\", \"inline\", \"className\", \"pressed\", \"type\"];\nfunction ownKeys$C(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$C(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$C(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$C(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar LinkButton = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n inline = _ref.inline,\n className = _ref.className,\n pressed = _ref.pressed,\n type = _ref.type,\n restProps = _objectWithoutProperties$1(_ref, _excluded$A);\n return jsx(\"button\", _objectSpread$C(_objectSpread$C({\n ref: ref,\n \"aria-pressed\": typeof pressed === 'boolean' ? pressed : undefined,\n className: clsx('utrecht-link-button', 'utrecht-link-button--html-button', {\n 'utrecht-link-button--disabled': disabled,\n 'utrecht-link-button--inline': inline,\n 'utrecht-link-button--pressed': pressed\n }, className),\n disabled: disabled,\n type: type || 'button'\n }, restProps), {}, {\n children: children\n }));\n});\nLinkButton.displayName = 'LinkButton';\nvar css_248z$p = \".utrecht-link-social{--utrecht-icon-size:var(--utrecht-link-social-icon-size);--utrecht-icon-color:currentColor;align-items:center;background-color:var(--utrecht-link-social-background-color);block-size:var(--utrecht-link-social-size);border-color:var(--utrecht-link-social-border-color);border-radius:50%;border-style:solid;border-width:var(--utrecht-link-social-border-width);color:var(--utrecht-link-social-color);display:inline-flex;inline-size:var(--utrecht-link-social-size);justify-content:center}.utrecht-link-social--hover,.utrecht-link-social:hover{background-color:var(--utrecht-link-social-hover-background-color,var(--utrecht-link-social-background-color));color:var(--utrecht-link-social-hover-color,var(--utrecht-link-social-color));transform:var(--utrecht-link-social-hover-transform-scale)}.utrecht-link-social--focus-visible,.utrecht-link-social:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-link-social--distanced{margin-inline-start:var(--utrecht-link-social-margin-inline-start)}\";\nstyleInject(css_248z$p);\nvar _excluded$z = [\"children\", \"className\", \"external\"];\nfunction ownKeys$B(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$B(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar LinkSocial = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n external = _ref.external,\n restProps = _objectWithoutProperties$1(_ref, _excluded$z);\n return jsx(\"a\", _objectSpread$B(_objectSpread$B({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-link-social', className),\n rel: external !== false ? 'external noopener noreferrer' : undefined,\n children: children\n }));\n});\nLinkSocial.displayName = 'LinkSocial';\nvar css_248z$o = \".utrecht-list-social{display:flex;margin-block-end:var(--utrecht-list-social-margin-block-end);margin-block-start:var(--utrecht-list-social-margin-block-start);padding-inline-end:var(--utrecht-list-social-padding-inline-end);padding-inline-start:var(--utrecht-list-social-padding-inline-start)}.utrecht-list-social__item{list-style-type:none;margin-inline-end:var(--utrecht-list-social-item-margin-inline-end)}.utrecht-list-social__item:last-child{margin-inline-end:0}\";\nstyleInject(css_248z$o);\nvar ListSocial = function ListSocial(_ref) {\n var children = _ref.children;\n return jsx(\"ul\", {\n className: clsx('utrecht-list-social'),\n children: children\n });\n};\nvar ListSocialItem = function ListSocialItem(_ref2) {\n var children = _ref2.children;\n return jsx(\"li\", {\n className: clsx('utrecht-list-social__item'),\n children: children\n });\n};\nvar css_248z$n = \".utrecht-logo{display:block;max-block-size:var(--utrecht-logo-max-block-size,192px);max-inline-size:var(--utrecht-logo-max-inline-size,96px);min-block-size:var(--utrecht-logo-min-block-size);min-inline-size:var(--utrecht-logo-min-inline-size)}.utrecht-logo>*{block-size:100%;display:inline-block;inline-size:auto}\";\nstyleInject(css_248z$n);\nvar _excluded$y = [\"children\", \"className\"];\nfunction ownKeys$A(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$A(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Logo = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$y);\n return jsx(\"div\", _objectSpread$A(_objectSpread$A({\n ref: ref,\n className: clsx('utrecht-logo', className)\n }, restProps), {}, {\n children: children\n }));\n});\nLogo.displayName = 'Logo';\nfunction ownKeys$z(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$z(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$z(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$z(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar LogoImage = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var restProps = _extends$1({}, (_objectDestructuringEmpty(_ref), _ref));\n return jsxs(\"svg\", _objectSpread$z(_objectSpread$z({\n width: \"192\",\n height: \"100\",\n viewBox: \"0 0 192 100\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref\n }, restProps), {}, {\n children: [jsxs(\"g\", {\n clipPath: \"url(#clip0_908_6292)\",\n children: [jsx(\"path\", {\n d: \"M124.75 61.3114C126.41 60.4985 127.932 59.5127 129.264 58.3712C129.558 57.9561 129.887 57.6448 130.267 57.4373C132.844 54.8084 134.453 51.4013 134.453 47.2331C134.453 47.2331 134.453 44.2583 134.453 43.5147C134.349 43.5492 134.245 43.5665 134.124 43.5665C134.003 43.5665 133.882 43.5492 133.761 43.5147L133.484 45.0885C130.924 44.6043 131.201 42.0619 132.931 41.1971C133.917 40.6955 134.228 40.3323 133.934 39.9519C133.847 39.8481 133.744 39.7962 133.623 39.7962C133.259 39.7962 132.723 40.194 132.204 40.5745C131.979 40.7474 131.685 40.8339 131.374 40.8339C130.7 40.8339 129.973 40.4015 129.662 39.3811L128.763 39.8827C128.607 37.9629 129.8 37.0117 131.011 37.0117C131.582 37.0117 132.17 37.2192 132.619 37.6343C132.792 37.79 132.965 37.8591 133.138 37.8591C133.692 37.8591 134.072 37.1673 133.329 36.7695C132.619 36.389 131.945 35.213 132.602 34.4693L131.53 33.4662C132.014 33.1721 132.533 33.0338 133.017 33.0338C133.536 33.0338 134.038 33.2067 134.453 33.5526V19.9932C134.124 19.924 133.744 19.5954 133.744 19.1285C133.744 18.6096 134.055 18.2983 134.453 18.1426V17.0184C133.64 17.1914 133.034 17.693 132.792 18.3848L131.651 18.4021C131.599 17.5373 132.014 16.759 132.896 16.465V15.3408C132.152 15.4965 131.668 15.8597 131.374 16.1883C131.288 16.2748 131.219 16.3785 131.132 16.4823L130.267 16.4996C130.233 15.6694 130.648 14.9257 131.426 14.6663V14.1474H128.261H92.2871H89.122V14.6663C89.9176 14.9257 90.3327 15.6694 90.2808 16.4996L89.4161 16.4823C89.3469 16.3785 89.2604 16.292 89.1739 16.1883C88.8799 15.877 88.3783 15.5138 87.652 15.3408V16.465C88.5167 16.759 88.9318 17.5373 88.8972 18.4021L87.7557 18.3848C87.5136 17.693 86.9083 17.2087 86.0954 17.0184V18.1426C86.4932 18.2983 86.7872 18.6096 86.7872 19.1285C86.7872 19.5781 86.424 19.924 86.0954 19.9932V33.5353C86.5105 33.1894 86.9947 33.0338 87.5136 33.0338C88.0151 33.0338 88.534 33.1894 89.001 33.4662L87.9287 34.4693C88.5686 35.2303 87.8941 36.389 87.2023 36.7695C86.4586 37.1673 86.8564 37.8591 87.3925 37.8591C87.5655 37.8591 87.7384 37.79 87.9114 37.6343C88.3611 37.2192 88.9491 37.0117 89.5198 37.0117C90.7305 37.0117 91.9239 37.9456 91.7682 39.8827L90.8343 39.3638C90.523 40.3842 89.7966 40.8166 89.122 40.8166C88.8107 40.8166 88.5167 40.7301 88.2919 40.5572C87.773 40.1767 87.2369 39.7789 86.8737 39.7789C86.7526 39.7789 86.6315 39.8308 86.5624 39.9346C86.2856 40.315 86.5797 40.6955 87.5655 41.1798C89.3123 42.0446 89.589 44.587 87.012 45.0712L86.7353 43.4974C86.6142 43.532 86.4932 43.5492 86.3721 43.5492C86.2683 43.5492 86.1646 43.532 86.0608 43.5147V47.2331C86.0608 51.4186 87.6865 54.8257 90.2808 57.4546C90.6094 57.6448 90.9207 57.9388 91.1975 58.3193C92.5292 59.4954 94.0858 60.4812 95.7634 61.3114C95.7634 61.3114 124.75 61.3114 124.75 61.3114Z\",\n fill: \"white\"\n }), jsx(\"path\", {\n d: \"M135.162 2.40404C135.162 2.21379 135.145 2.04084 135.127 1.85059H132.516C132.498 3.33798 132.118 4.77348 131.461 5.89766C131.011 6.65865 130.475 7.22939 129.87 7.5753H130.06C132.879 7.59259 135.162 5.27504 135.162 2.40404ZM132.516 12.3142C132.308 12.2796 132.118 12.2623 131.91 12.2623C131.755 12.2623 131.599 12.2796 131.443 12.2969C130.959 12.3488 130.475 12.5044 130.094 12.7811C129.662 13.0925 129.351 13.6113 129.333 14.1648H130.146C130.509 13.8707 130.942 13.6632 131.409 13.5594V14.6836C130.613 14.943 130.198 15.6867 130.25 16.5169L131.115 16.4996C131.184 16.3958 131.27 16.3094 131.357 16.2056C131.651 15.8943 132.152 15.5311 132.879 15.3581V16.4823C132.014 16.7763 131.599 17.5546 131.634 18.4194L132.775 18.4021C133.035 17.6757 133.674 17.1741 134.539 17.0185V18.1254C134.09 18.2637 133.726 18.575 133.726 19.1458C133.726 19.6473 134.176 20.0105 134.539 20.0105L134.505 20.9618C134.505 20.9618 134.505 20.9618 134.522 20.9618C134.764 20.9618 134.972 20.8926 135.196 20.7888C135.906 20.4083 136.182 19.5781 136.165 18.8172L137.203 18.3156C137.203 18.3502 137.22 18.3848 137.22 18.4367C137.306 19.0766 137.22 19.6992 137.012 20.2354L138.967 22.0859C139.347 21.152 139.849 20.27 140.454 19.4571C140.679 19.1804 140.904 18.9036 141.146 18.6615C140.299 18.0216 139.261 17.226 138.915 16.9666C137.825 16.1537 136.822 15.2544 135.784 14.3723C135.145 13.8361 134.487 13.3 133.796 12.833C133.398 12.5736 132.965 12.4007 132.516 12.3142ZM150.658 46.6451C150.814 46.7316 150.97 46.7662 151.125 46.7662C151.506 46.7662 151.869 46.5586 152.077 46.23C152.042 46.0398 151.973 45.8322 151.921 45.642C151.748 45.1231 151.488 44.6216 151.125 44.1373C150.658 43.5147 150.036 42.9439 149.206 42.477C149.084 42.4078 148.946 42.3213 148.79 42.2348C149.344 42.9093 149.673 43.3936 149.88 43.8087C150.105 44.2238 150.209 44.5524 150.364 44.8637C150.312 44.9156 150.278 44.9675 150.243 45.0194C149.863 45.5901 150.088 46.3511 150.658 46.6451ZM70.6335 43.7914C70.8411 43.3936 71.1697 42.892 71.7231 42.2175C71.5848 42.304 71.4291 42.3905 71.308 42.4597C70.4779 42.9266 69.8552 43.4974 69.3883 44.12C69.0251 44.6043 68.7829 45.1231 68.5927 45.6247C68.5235 45.8149 68.4716 46.0225 68.437 46.2127C68.6446 46.5413 69.0078 46.7489 69.3883 46.7489C69.5439 46.7489 69.6996 46.7143 69.8552 46.6278C70.426 46.3338 70.6508 45.5728 70.253 44.9848C70.2184 44.9329 70.1839 44.881 70.132 44.8291C70.3049 44.5351 70.4087 44.2065 70.6335 43.7914ZM142.287 13.1098C142.495 13.1098 142.72 13.0925 142.945 13.0752C142.27 12.833 141.734 12.4352 141.388 11.8818C140.904 11.1381 140.835 10.3425 141.025 9.63342C140.99 9.63342 140.956 9.65072 140.921 9.65072C140.108 9.82367 139.693 10.4463 139.849 11.2765C140.074 12.5217 140.852 13.1098 142.287 13.1098ZM152.163 48.0633C152.18 47.8904 152.198 47.7174 152.198 47.5272C151.869 47.7174 151.488 47.8212 151.108 47.8212C150.762 47.8212 150.451 47.7347 150.139 47.579C149.534 47.2677 149.119 46.697 148.998 46.0225C148.912 45.5901 148.963 45.1404 149.136 44.7426C149.136 44.7426 149.136 44.7253 149.119 44.7253C148.652 44.6389 148.133 44.5697 147.562 44.5005C146.611 44.3967 145.746 44.3448 144.951 44.3448C137.514 44.3448 136.909 48.4265 136.909 48.4265C135.75 52.7676 139.226 54.7219 139.226 54.7219C139.226 54.7219 140.022 58.6825 138.258 60.1872L136.424 59.5646L135.508 59.2533L134.989 59.0803C134.159 57.9043 132.81 57.0741 131.53 57.0741C130.285 57.0741 129.091 57.8697 128.503 59.9278L129.8 59.6511C129.8 60.9828 130.233 61.3287 130.907 61.3287C131.046 61.3287 131.201 61.3114 131.357 61.2941C131.547 61.2595 131.737 61.2249 131.945 61.1903C132.585 61.0693 133.052 60.9309 133.38 60.9309C133.692 60.9309 133.899 61.052 134.02 61.3806C134.193 61.8822 133.709 62.1935 133.086 62.3491C131.564 62.695 130.7 63.7673 130.976 65.2028C131.046 65.5314 131.149 65.86 131.34 66.2232C131.409 66.3789 131.495 66.5173 131.599 66.6729C131.599 66.6729 131.616 66.6729 131.616 66.6902L133.121 65.7736C133.346 65.9984 133.605 66.0849 133.865 66.0849C134.435 66.0849 134.989 65.6698 135.196 65.3066C135.214 65.272 135.231 65.2374 135.248 65.2028C135.421 64.8569 135.439 64.4591 135.439 64.0959C135.439 63.8884 135.421 63.6809 135.421 63.4906C135.421 63.2658 135.421 63.0755 135.473 62.9372C135.56 62.6604 135.784 62.4702 136.027 62.3664C136.113 62.3318 136.217 62.3145 136.303 62.3145C136.459 62.3145 136.615 62.3664 136.753 62.4702C137.116 62.7296 137.116 63.1274 137.064 63.5252C137.012 63.9403 136.943 64.3208 137.168 64.6667C137.185 64.7013 137.203 64.7186 137.22 64.7532C137.306 64.8569 137.41 64.9607 137.514 65.0472C137.583 65.0991 137.894 65.3239 137.894 65.4104L137.739 67.2437C138.707 67.1745 139.78 66.9669 140.299 66.0849C140.402 65.9119 140.489 65.6871 140.541 65.4623C140.731 64.7877 140.817 63.9576 140.921 62.7988C141.354 62.6258 141.734 62.401 142.063 62.107C142.478 61.7438 142.806 61.2941 142.997 60.7234C143.515 59.1668 143.965 56.0537 143.273 52.7676C143.273 52.7676 150.243 51.9028 151.748 51.1418C151.886 50.0868 152.025 49.0318 152.163 48.0633ZM146.023 7.93849C146.023 7.93849 145.072 8.50924 145.262 9.40858C145.574 10.0658 145.971 10.7403 146.473 11.3283L147.441 10.3598C148.583 9.30481 149.586 8.92432 150.416 8.92432C151.506 8.92432 152.267 9.61613 152.578 10.4117C153.062 11.6224 153.01 12.5909 152.838 13.2135C152.699 13.6805 152.319 14.061 151.454 14.1302C151.298 14.1475 151.125 14.1475 150.952 14.1475C149.171 14.1475 146.836 13.5075 146.836 13.5075C146.473 15.4446 146.248 15.8251 149.015 15.8251C149.655 15.8251 150.451 15.8078 151.437 15.7732L148.669 17.0358C148.358 17.0185 148.064 17.0012 147.77 17.0012C145.729 17.0012 144.103 17.6065 142.824 18.5923C142.53 18.8172 142.253 19.0593 141.993 19.3187C141.008 20.3218 140.299 21.5671 139.797 22.8815C139.659 23.262 139.538 23.6425 139.434 24.023C138.898 26.0293 138.828 28.122 139.105 29.7996C139.313 29.5402 139.52 29.298 139.762 29.0559L139.883 28.9348C140.714 28.122 142.115 26.7211 143.792 25.8563C144.415 25.3029 145.003 24.7494 145.574 24.1441C146.801 22.8469 147.891 21.4114 148.704 19.7857C148.202 21.5325 147.355 23.2101 146.352 24.7494C145.954 25.3547 145.539 25.9428 145.107 26.5135C144.726 26.6692 144.38 26.8421 144.034 27.0497C142.564 27.8798 141.319 29.1597 140.593 29.8861C140.16 30.3012 139.814 30.7681 139.486 31.2524C139.226 31.6329 139.001 32.0134 138.759 32.4112C138.586 32.7052 138.396 33.0165 138.223 33.3105C137.445 34.5731 136.407 35.8183 135.819 35.8183C135.612 35.8183 135.456 35.6627 135.387 35.3168C135.075 33.7429 134.09 33.0511 133.017 33.0511C132.516 33.0511 131.997 33.2067 131.53 33.4835L132.602 34.4866C131.962 35.2476 132.637 36.4064 133.329 36.7869C134.072 37.1846 133.674 37.8764 133.138 37.8764C132.965 37.8764 132.792 37.8073 132.619 37.6516C132.17 37.2365 131.582 37.029 131.011 37.029C129.8 37.029 128.607 37.9629 128.763 39.9L129.697 39.3811C130.008 40.4015 130.734 40.8339 131.409 40.8339C131.72 40.8339 132.014 40.7474 132.239 40.5745C132.758 40.194 133.294 39.7962 133.657 39.7962C133.778 39.7962 133.899 39.8481 133.968 39.9519C134.245 40.3324 133.951 40.7129 132.965 41.1971C131.219 42.0619 130.942 44.6043 133.519 45.0885L133.796 43.5147C133.917 43.5493 134.038 43.5666 134.159 43.5666C134.902 43.5666 135.421 42.9093 135.508 42.4251C135.629 41.716 135.594 41.2836 135.629 40.8339C135.646 40.4361 135.906 40.2632 136.165 40.2632C136.476 40.2632 136.788 40.488 136.822 40.8858C136.874 41.6295 136.857 42.598 138.171 42.8229L138.586 44.1546C139.832 43.7222 141.077 42.2867 138.811 39.8654C138.777 38.6374 140.074 37.9283 141.89 36.9079C142.201 36.735 142.53 36.5447 142.858 36.3545C143.031 36.2507 143.204 36.1469 143.377 36.0432C143.74 35.8183 145.141 34.7979 146.369 33.7429L147.441 34.3136C147.217 34.5039 146.974 34.7114 146.698 34.9536C145.591 35.8702 144.397 36.7696 143.948 37.029C143.861 37.0809 143.775 37.1328 143.688 37.1846C144.864 38.2742 146.127 39.2255 147.268 39.9865C147.735 40.2978 148.185 40.5918 148.6 40.8512C149.015 41.1106 149.413 41.3355 149.742 41.5257C150.658 42.0446 151.385 42.6845 151.938 43.4109C152.301 43.8779 152.578 44.3794 152.786 44.881C152.993 45.3653 153.132 45.8668 153.201 46.3684C153.235 46.5413 153.253 46.697 153.27 46.8699C153.304 47.3369 153.287 47.7866 153.235 48.219C153.166 48.6859 153.114 49.1529 153.045 49.6199C152.959 50.329 152.889 51.0208 152.838 51.7299C152.768 52.5601 152.734 53.3729 152.734 54.1858C152.734 56.6763 153.114 58.4577 154.844 60.1526C156.089 61.3806 157.836 61.6746 159.531 61.7957C160.413 61.8476 162.886 62.2108 164.564 62.4702C165.532 62.6086 166.259 63.4214 166.31 64.4072C166.38 65.739 166.362 67.4858 165.895 68.0738L163.612 67.7625C163.076 66.9669 161.796 66.3443 160.551 66.3443C159.583 66.3443 158.631 66.7248 158.095 67.7279C157.94 68.0219 157.801 68.3678 157.732 68.7829C157.715 68.904 157.697 69.0251 157.68 69.1634L158.407 68.8694L158.822 68.6965C158.839 68.8002 158.856 68.8867 158.874 68.9732C159.116 69.9763 159.635 70.3395 160.257 70.3395C160.551 70.3395 160.862 70.253 161.191 70.132C161.226 70.1147 161.26 70.0974 161.312 70.0801C161.9 69.8379 162.315 69.6477 162.627 69.6477C162.834 69.6477 162.99 69.7342 163.128 69.9763C163.318 70.3049 163.128 70.5816 162.8 70.8065C162.696 70.8756 162.557 70.9448 162.436 70.9967C160.69 71.7231 160.188 73.418 161.796 75.1821L163.007 74.1098C163.197 74.2309 163.388 74.2828 163.561 74.2828C164.149 74.2828 164.685 73.7466 164.823 73.3489C165.048 72.7435 164.806 72.0517 164.719 71.5502C164.702 71.4118 164.685 71.2734 164.702 71.1697C164.737 70.8929 164.927 70.6681 165.152 70.547C165.255 70.4952 165.359 70.4606 165.48 70.4606C165.584 70.4606 165.688 70.4779 165.792 70.5297C165.895 70.5816 165.982 70.6508 166.051 70.7373C166.207 70.9275 166.241 71.187 166.241 71.4464C166.241 71.5847 166.241 71.7404 166.259 71.8788C166.293 72.1209 166.362 72.3457 166.57 72.536C166.674 72.6225 166.777 72.6916 166.881 72.7608C166.95 72.7954 167.279 72.9511 167.296 73.0202L167.452 74.7152C168.663 74.4212 169.994 73.8331 169.666 71.9479C169.614 71.6366 169.51 71.2734 169.337 70.8756C169.285 70.7373 169.216 70.5816 169.13 70.426C170.185 69.9071 170.876 68.9213 171.049 67.7625C171.205 66.7075 171.032 62.9545 170.911 60.8098C170.859 59.9451 170.202 59.236 169.354 59.1149C168.386 58.9766 167.141 58.7863 166.224 58.5961C164.771 58.2848 163.37 57.6448 163.042 56.6071C162.765 55.7078 162.921 55.604 163.007 54.6874C163.076 53.9783 163.163 53.2519 163.215 52.5428C163.215 52.439 163.232 52.3179 163.232 52.2142C163.249 51.7991 163.232 51.3667 163.18 50.9516C163.267 51.0035 163.353 51.0554 163.439 51.1073C163.716 51.2629 164.01 51.3667 164.304 51.4532C164.633 51.5396 164.961 51.5742 165.307 51.5742C166.034 51.5742 166.743 51.384 167.383 50.9862C168.542 50.2771 169.216 49.0491 169.181 47.7001C169.13 45.2961 167.763 43.6012 166.449 41.9581C165.826 41.1798 165.169 40.367 164.685 39.5022C163.145 36.735 162.782 33.7256 163.612 30.5606C163.976 29.177 164.806 27.9317 165.688 26.6C166.016 26.0984 166.328 25.6315 166.639 25.1126C166.639 25.1126 167.331 25.4239 167.781 25.3201C167.902 25.2856 168.023 25.2337 168.161 25.1472C169.216 24.49 170.34 21.8092 170.288 18.5923C170.254 16.0326 169.648 13.9053 168.455 12.1585C168.715 12.8849 168.939 13.6459 169.078 14.4069C169.233 15.2371 169.285 16.1018 169.233 16.932C169.181 17.7795 169.008 18.5923 168.732 19.3533C168.853 18.5404 168.853 17.7276 168.749 16.932C168.645 16.1364 168.438 15.3754 168.144 14.649C167.884 14.0091 167.573 13.3865 167.21 12.7984C167.452 14.2858 167.452 15.7905 167.054 17.6584C166.812 18.8172 166.31 19.9241 165.878 20.8926C165.48 21.7746 165.186 22.4837 165.065 23.0718C164.927 23.7117 165.013 24.196 165.446 24.5938C165.377 24.7148 165.29 24.8359 165.221 24.9569C165.031 25.251 164.823 25.5623 164.616 25.8736C163.716 27.2399 162.782 28.6408 162.367 30.232C161.468 33.691 161.883 37.1155 163.561 40.1421C164.097 41.1106 164.788 41.9581 165.446 42.7883C166.674 44.3275 167.85 45.7803 167.902 47.752C167.919 48.6513 167.487 49.4296 166.726 49.8966C165.93 50.3809 164.979 50.4155 164.166 50.0177C164.149 50.0004 164.114 50.0004 164.097 49.9831C163.474 49.6545 162.921 49.0318 162.592 48.3054C162.575 48.2708 162.575 48.2363 162.557 48.2017C162.16 47.0429 161.675 45.9014 161.122 44.8118C159.496 41.5603 157.473 38.5164 156.193 35.0919C155.086 32.1517 155.587 28.5716 155.587 28.5716C156.712 29.0213 158.355 29.0732 158.355 29.0732C158.303 25.4066 166.172 16.8974 161.381 6.52029C161.053 7.05644 160.62 7.60989 160.015 8.18063L159.583 8.59571V7.09103C162.09 4.49675 160.932 2.02354 159.998 1.19337C159.289 1.4528 158.476 2.23109 157.87 3.18232L156.815 2.83642C157.075 2.40404 157.369 1.98895 157.697 1.60846C157.594 1.53928 157.49 1.48739 157.369 1.4701C157.317 1.4701 157.248 1.4528 157.161 1.4528C155.587 1.4528 149.672 2.81912 149.084 3.13043L148.617 4.72159C147.009 5.15397 145.522 6.01873 144.467 6.58947C144.553 7.03914 145.037 8.05956 146.023 7.93849ZM157.767 18.0908C158.199 16.8974 158.545 15.6694 158.822 14.4242C158.683 15.704 158.493 16.9666 158.199 18.2291C157.905 19.4917 157.507 20.7196 157.04 21.9303C156.573 23.141 156.037 24.317 155.484 25.4758C155.034 26.3924 154.567 27.2918 154.1 28.1911C153.668 28.0528 153.149 27.8279 152.578 27.4993C153.91 25.5796 155.19 23.6252 156.262 21.5671C156.833 20.4429 157.352 19.2841 157.767 18.0908ZM153.218 19.9759C152.941 20.8061 152.665 21.6536 152.319 22.4837C151.973 23.3139 151.54 24.1268 151.091 24.8878C150.814 25.3547 150.537 25.8217 150.261 26.2887C149.672 26.0811 149.084 25.9601 148.514 25.9255C149.015 25.3374 149.534 24.7321 150.018 24.1441C150.572 23.4696 151.073 22.7951 151.54 22.0859C151.99 21.3596 152.405 20.5986 152.803 19.8203C153.201 19.042 153.581 18.2464 153.979 17.4681C153.737 18.2983 153.477 19.1458 153.218 19.9759ZM152.872 5.01561C151.661 6.20898 151.264 6.93537 151.264 6.93537C149.655 7.00455 149.309 5.98414 149.309 4.98102C150.883 5.4134 152.872 5.01561 152.872 5.01561ZM131.426 8.68219H89.1567V11.2073C89.7274 11.2592 90.4538 11.4494 91.0937 11.8991C91.8201 12.4352 92.2698 13.2654 92.2871 14.1129V14.1475H128.244V14.1129C128.261 13.2654 128.711 12.4352 129.437 11.8991C130.094 11.4148 130.855 11.2419 131.426 11.19V8.68219ZM98.0118 13.2308L94.5355 11.5013L98.0118 9.77178L101.488 11.5013L98.0118 13.2308ZM110.274 13.0406C108.579 13.0406 107.196 12.3488 107.196 11.5013C107.196 10.6538 108.579 9.96203 110.274 9.96203C111.969 9.96203 113.353 10.6538 113.353 11.5013C113.353 12.3488 111.969 13.0406 110.274 13.0406ZM122.536 13.2308L119.06 11.5013L122.536 9.77178L126.013 11.5013L122.536 13.2308ZM86.4413 61.3806C86.5624 61.052 86.7699 60.9309 87.0812 60.9309C87.4099 60.9309 87.8768 61.052 88.5167 61.1903C88.7243 61.2249 88.9145 61.2595 89.1048 61.2941C89.2604 61.3114 89.4161 61.3287 89.5545 61.3287C90.229 61.3287 90.6613 61.0001 90.6613 59.6511L91.9585 59.9278C91.3704 57.8697 90.1771 57.0741 88.9318 57.0741C87.652 57.0741 86.303 57.9216 85.4728 59.0803L84.9539 59.2533L84.0719 59.5992L82.2386 60.2218C80.4572 58.7171 81.2701 54.7565 81.2701 54.7565C81.2701 54.7565 84.7464 52.8022 83.5876 48.4611C83.5876 48.4611 82.9823 44.3794 75.5454 44.3794C74.7498 44.3794 73.885 44.4313 72.9338 44.5351C72.363 44.6043 71.8442 44.6735 71.3772 44.7599C71.3772 44.7599 71.3772 44.7772 71.3599 44.7772C71.5329 45.175 71.5848 45.6247 71.4983 46.0571C71.3772 46.7316 70.9621 47.3023 70.3568 47.6136C70.0628 47.7693 69.7342 47.8558 69.3883 47.8558C69.0078 47.8558 68.6446 47.752 68.2987 47.5617C68.2987 47.752 68.316 47.9249 68.3333 48.0979C68.4716 49.0664 68.61 50.1041 68.6965 51.1937C70.2012 51.9547 77.1711 52.8195 77.1711 52.8195C76.4966 56.1056 76.929 59.2187 77.4478 60.7753C77.6381 61.346 77.9667 61.7957 78.3818 62.1589C78.7104 62.4529 79.0909 62.6777 79.5233 62.8507C79.6097 63.9922 79.6962 64.8396 79.9037 65.5141C79.9556 65.7563 80.0421 65.9638 80.1459 66.1368C80.6647 67.0188 81.737 67.2264 82.7056 67.2955L82.5499 65.4623C82.5499 65.3758 82.8785 65.1509 82.9304 65.0991C83.0342 65.0126 83.1379 64.9088 83.2244 64.805C83.2417 64.7704 83.259 64.7532 83.2763 64.7186C83.5011 64.3554 83.432 63.9749 83.3801 63.5771C83.3282 63.1793 83.3282 62.7815 83.6914 62.5221C83.8298 62.4183 83.9854 62.3664 84.1411 62.3664C84.2448 62.3664 84.3313 62.3837 84.4178 62.4183C84.6599 62.5048 84.8848 62.7123 84.9712 62.989C85.0231 63.1274 85.0231 63.3177 85.0231 63.5425C85.0231 63.7327 85.0058 63.9403 85.0058 64.1478C85.0058 64.511 85.0404 64.9088 85.1961 65.2547C85.2134 65.2893 85.2307 65.3239 85.248 65.3585C85.4555 65.7044 86.0089 66.1368 86.5797 66.1368C86.8391 66.1368 87.0985 66.0503 87.3234 65.8255L88.8281 66.7421C88.8281 66.7421 88.8454 66.7421 88.8454 66.7248C88.9491 66.5691 89.0183 66.4135 89.1048 66.2751C89.2777 65.9119 89.3988 65.5833 89.468 65.2547C89.7447 63.8019 88.8799 62.7469 87.358 62.401C86.7699 62.2108 86.2684 61.8994 86.4413 61.3806ZM143.066 69.3883C142.651 68.7483 142.149 68.2987 141.682 67.9528C141.509 67.849 141.336 67.7625 141.146 67.6587L140.662 67.4166C139.832 68.1257 138.707 68.2987 137.877 68.3505L136.615 68.437L136.718 67.1745L136.822 65.86C136.684 65.739 136.545 65.6006 136.407 65.4277C136.407 65.4104 136.39 65.4104 136.39 65.3931C136.338 65.5487 136.269 65.7044 136.182 65.8428C135.802 66.5 134.902 67.1572 133.917 67.1572C133.657 67.1572 133.415 67.1053 133.173 67.0188L132.602 67.3647C132.637 67.3993 132.689 67.4339 132.723 67.4685C134.574 69.1807 135.957 69.371 138.31 69.9071C139.901 70.2703 141.388 71.187 141.89 72.83C142.184 73.7812 142.132 74.8189 142.08 75.8048C142.08 75.8048 145.331 73.9542 143.602 70.3049C143.464 70.0455 143.273 69.7169 143.066 69.3883ZM120.876 68.1257C119.856 67.088 118.766 66.206 117.676 65.6871C116.777 65.2547 115.878 64.9607 115.03 64.7704C114.477 64.6494 113.941 64.5629 113.439 64.511C113.145 64.4764 112.868 64.4591 112.592 64.4418C111.865 64.4764 111.087 64.4937 110.274 64.4937C109.461 64.4937 108.683 64.4764 107.957 64.4418C107.68 64.4591 107.403 64.4764 107.092 64.511C106.59 64.5629 106.054 64.6494 105.501 64.7704C104.653 64.9607 103.754 65.2547 102.854 65.6871C101.765 66.2232 100.675 67.088 99.6548 68.1257C99.5857 68.1949 99.5338 68.2468 99.4819 68.316C97.2681 70.72 97.8561 73.0721 97.8561 73.0721C97.8561 73.0721 100.693 69.3018 104.93 69.3018C106.953 69.3018 108.7 69.9763 109.6 70.426L110.257 70.7719L110.914 70.426C111.813 69.9936 113.56 69.3018 115.584 69.3018C119.821 69.3018 122.657 73.0721 122.657 73.0721C122.657 73.0721 123.263 70.72 121.032 68.316C120.997 68.2641 120.945 68.1949 120.876 68.1257ZM98.8766 67.3647C100.554 65.6698 102.405 64.5975 104.082 64.0268C102.56 63.7846 101.263 63.4733 100.105 63.1101C99.9835 63.1101 99.8624 63.0928 99.7413 63.0928C99.3781 63.0928 99.0149 63.1101 98.6863 63.1447C97.7178 63.2658 96.8011 63.4387 95.9191 63.4387C93.6188 63.4387 91.5953 63.0928 89.9522 62.6431C90.1252 62.868 90.2809 63.1101 90.3846 63.3868C90.644 64.0268 90.6959 64.7532 90.5403 65.4968C90.6095 65.5141 90.6613 65.5314 90.7305 65.5487C91.0418 65.6179 91.3359 65.6871 91.578 65.7217C92.045 65.8082 92.3217 65.8255 92.3217 65.8255C92.3217 65.8255 91.9066 66.0503 91.3186 66.4481C90.6095 66.9323 89.6582 67.6587 88.8454 68.5408C85.0231 72.7435 89.2431 75.9258 89.2431 75.9258C89.2431 75.9258 88.3092 71.7923 90.2981 70.4779C93.4805 68.4024 95.1754 70.1838 98.7382 67.4685C98.7901 67.4685 98.8247 67.4166 98.8766 67.3647ZM87.9287 67.3993L87.358 67.0534C87.1331 67.1399 86.8737 67.1918 86.6143 67.1918C85.6112 67.1918 84.7118 66.5346 84.3486 65.8773C84.2621 65.7217 84.193 65.5833 84.1411 65.4277C84.1411 65.445 84.1238 65.445 84.1238 65.4623C83.9854 65.6352 83.847 65.7736 83.7087 65.8946L83.8125 67.2091L83.9162 68.4716L82.6537 68.3851C81.8235 68.3333 80.7166 68.1603 79.8692 67.4512L79.3849 67.6933C79.1946 67.7971 79.0217 67.8836 78.8487 67.9874C78.3645 68.3333 77.8802 68.7829 77.4651 69.4229C77.2403 69.7515 77.0673 70.0628 76.929 70.3741C75.1995 74.0234 78.451 75.874 78.451 75.874C78.3991 74.8881 78.3645 73.8504 78.6412 72.8992C79.1428 71.2561 80.6301 70.3568 82.2213 69.9763C84.5907 69.4229 85.9571 69.2499 87.8076 67.5377C87.8595 67.4685 87.8941 67.4339 87.9287 67.3993ZM129.212 66.4827C128.624 66.0849 128.209 65.86 128.209 65.86C128.209 65.86 128.503 65.8255 128.953 65.7563C129.195 65.7217 129.489 65.6525 129.8 65.5833C129.852 65.566 129.921 65.5487 129.991 65.5314C129.835 64.7877 129.887 64.0613 130.146 63.4214C130.25 63.162 130.406 62.9026 130.579 62.6777C128.936 63.1274 126.912 63.4733 124.612 63.4733C123.73 63.4733 122.813 63.2831 121.845 63.1793C121.516 63.1447 121.153 63.1274 120.79 63.1274C120.668 63.1274 120.565 63.1274 120.444 63.1274C119.285 63.4906 117.97 63.8019 116.466 64.0441C118.143 64.6148 119.994 65.6698 121.672 67.382C121.723 67.4339 121.758 67.4685 121.793 67.5204C125.355 70.2357 127.05 68.4543 130.233 70.5297C132.222 71.8269 131.288 75.9777 131.288 75.9777C131.288 75.9777 135.49 72.7954 131.686 68.5927C130.873 67.6933 129.904 66.9496 129.212 66.4827ZM170.738 71.8615C170.859 72.6052 170.79 73.2624 170.513 73.8504C169.925 75.0957 168.628 75.5453 167.711 75.7875L166.483 76.0988L166.362 74.8362L166.241 73.6602C166.138 73.591 166.016 73.5045 165.913 73.418C165.895 73.5218 165.861 73.6256 165.826 73.7293C165.532 74.5422 164.598 75.3724 163.543 75.3724C163.439 75.3724 163.336 75.3724 163.232 75.3551L162.488 76.0123L161.693 76.7214L160.966 75.9258C159.946 74.8189 159.531 73.5737 159.79 72.4322C159.877 72.069 160.015 71.7231 160.223 71.4118C159.583 71.4118 159.012 71.1697 158.58 70.72C158.424 70.547 158.268 70.3568 158.164 70.132L158.095 70.1492L156.418 70.8411L156.608 69.0424C156.608 68.9732 156.625 68.9213 156.625 68.8521C155.881 68.9732 154.982 69.2499 153.841 69.6823C153.685 69.7688 153.512 69.8379 153.356 69.8898C153.27 69.9244 153.201 69.959 153.114 69.9763C153.477 70.1838 153.841 70.3914 154.169 70.5989C155.812 71.6539 156.936 72.7954 157.525 73.9888C157.888 74.3693 158.286 74.7844 158.718 75.2513C160.499 77.1538 162.903 78.0359 165.377 78.0359C169.614 78.0359 173.99 75.4243 175.529 70.8238C175.512 70.8411 173.419 71.5502 170.738 71.8615ZM153.495 71.481C151.298 70.0974 148.877 69.3191 148.877 69.3191C149.309 69.3537 149.707 69.371 150.088 69.371C151.039 69.371 151.817 69.2499 152.457 69.0597C152.82 68.9559 153.149 68.8175 153.426 68.6792C155.449 67.6414 155.518 65.7909 155.518 65.7909C153.91 66.8805 152.492 67.261 151.177 67.261C149.482 67.261 147.943 66.6556 146.369 66.2059C145.902 66.0676 145.435 66.0157 144.986 66.0157C143.688 66.0157 142.564 66.5 141.924 66.8459C142.737 67.3474 143.429 67.9874 143.965 68.8002C144.173 69.1288 144.363 69.4574 144.519 69.7688C145.037 70.4779 145.366 71.1005 145.885 71.5156C147.078 72.5187 148.739 72.7262 150.243 72.83C154.809 73.1759 156.677 77.2922 156.677 77.2922C157.058 76.3409 156.988 75.4416 156.625 74.6287C156.054 73.3834 154.826 72.3284 153.495 71.481ZM78.5893 66.8459C77.9494 66.5 76.8425 66.0157 75.5281 66.0157C75.0784 66.0157 74.6287 66.0676 74.1444 66.2059C72.5533 66.6556 71.0313 67.261 69.3364 67.261C68.022 67.261 66.6038 66.8978 64.9953 65.7909C64.9953 65.7909 65.0818 67.6414 67.088 68.6792C67.3647 68.8175 67.6933 68.9559 68.0565 69.0597C68.6965 69.2499 69.4921 69.371 70.426 69.371C70.8065 69.371 71.2043 69.3537 71.6366 69.3191C71.6366 69.3191 69.2153 70.0974 67.0188 71.481C65.6871 72.3284 64.4592 73.3834 63.9057 74.6287C63.5425 75.4416 63.4733 76.3236 63.8538 77.2922C63.8538 77.2922 65.7044 73.1759 70.2876 72.83C71.7923 72.7089 73.4353 72.5014 74.646 71.5156C75.1649 71.0832 75.4935 70.4606 76.0123 69.7688C76.168 69.4401 76.3582 69.1288 76.5658 68.8002C77.0846 67.9874 77.7764 67.3301 78.5893 66.8459ZM51.4013 70.4433C51.3321 70.5989 51.2629 70.7546 51.1937 70.8929C51.0381 71.2907 50.917 71.6366 50.8651 71.9652C50.5192 73.8504 51.8683 74.4385 53.0789 74.7325L53.2346 73.0375C53.2519 72.9684 53.5805 72.8127 53.6497 72.7781C53.7534 72.7089 53.8745 72.6398 53.961 72.5533C54.1685 72.363 54.2377 72.1382 54.2723 71.8961C54.2896 71.7577 54.2896 71.6193 54.2896 71.4637C54.3069 71.2043 54.3415 70.9448 54.4798 70.7546C54.549 70.6681 54.6182 70.5989 54.7393 70.547C54.843 70.4952 54.9468 70.4779 55.0506 70.4779C55.1716 70.4779 55.2754 70.5124 55.3792 70.5643C55.604 70.6854 55.7943 70.9102 55.8289 71.187C55.8461 71.2907 55.8289 71.4291 55.8116 71.5675C55.7251 72.069 55.483 72.7608 55.7078 73.3662C55.8462 73.7639 56.3823 74.3001 56.9703 74.3001C57.1606 74.3001 57.3335 74.2482 57.5238 74.1271L58.7344 75.1994C60.3429 73.4353 59.8413 71.7404 58.0945 71.014C57.9562 70.9621 57.8351 70.8929 57.7313 70.8238C57.4027 70.5989 57.2125 70.3049 57.4027 69.9936C57.5411 69.7515 57.6967 69.665 57.9043 69.665C58.2156 69.665 58.6134 69.8552 59.2187 70.0974C59.2533 70.1147 59.2879 70.132 59.3398 70.1492C59.6684 70.2703 59.9797 70.3568 60.2737 70.3568C60.8963 70.3568 61.3979 69.9936 61.6573 68.9905C61.6746 68.904 61.6919 68.8002 61.7092 68.7138L62.1243 68.8867L62.8507 69.1807C62.8334 69.0596 62.8161 68.9213 62.7988 68.8002C62.7296 68.3851 62.5913 68.0392 62.4356 67.7452C61.8995 66.7594 60.9482 66.3616 59.9797 66.3616C58.7344 66.3616 57.4546 66.9842 56.9185 67.7798L54.6355 68.0911C54.1685 67.5031 54.1512 65.7736 54.2204 64.4245C54.2723 63.4387 54.9987 62.6431 55.9672 62.4875C57.6276 62.2454 60.1181 61.8822 61.0001 61.813C62.6777 61.6919 64.4246 61.3979 65.6871 60.1699C67.4166 58.4577 67.7971 56.6763 67.7971 54.2031C67.7971 53.3902 67.7625 52.5773 67.6933 51.7472C67.6415 51.0381 67.555 50.329 67.4858 49.6372C67.4339 49.1702 67.3647 48.7032 67.2956 48.2363C67.2264 47.8039 67.2264 47.3369 67.261 46.8872C67.2783 46.7143 67.2956 46.5586 67.3302 46.3857C67.4166 45.8841 67.555 45.3998 67.7452 44.8983C67.9528 44.3794 68.2468 43.8952 68.5927 43.4282C69.1461 42.7018 69.8725 42.0619 70.7892 41.543C71.1178 41.3528 71.5156 41.1279 71.9307 40.8685C72.3458 40.6091 72.7954 40.3324 73.2624 40.0038C74.4039 39.2428 75.6664 38.2915 76.8425 37.2019C76.756 37.15 76.6695 37.0982 76.5831 37.0463C76.1507 36.7869 74.9573 35.9048 73.8331 34.9709C73.5564 34.746 73.3143 34.5385 73.0894 34.3309L74.1617 33.7602C75.407 34.8152 76.7906 35.8529 77.1538 36.0605C77.3268 36.1642 77.4997 36.268 77.6727 36.3718C78.0013 36.562 78.3299 36.7523 78.6412 36.9252C80.4572 37.9629 81.7543 38.672 81.7197 39.8827C79.4714 42.304 80.6993 43.7395 81.9446 44.1719L82.3597 42.8402C83.6741 42.6153 83.6568 41.6468 83.7087 40.9031C83.7433 40.5053 84.0546 40.2805 84.3659 40.2805C84.6253 40.2805 84.8848 40.4534 84.9021 40.8512C84.9366 41.2836 84.9021 41.7333 85.0231 42.4424C85.1096 42.9266 85.6284 43.5839 86.3721 43.5839C86.4932 43.5839 86.6143 43.5666 86.7353 43.532L87.0121 45.1058C89.5718 44.6216 89.295 42.0792 87.5655 41.2144C86.5797 40.7129 86.2684 40.3497 86.5624 39.9692C86.6489 39.8481 86.7526 39.8135 86.8737 39.8135C87.2369 39.8135 87.7731 40.2113 88.2919 40.5918C88.5167 40.7647 88.8108 40.8512 89.1221 40.8512C89.7966 40.8512 90.523 40.4188 90.8343 39.3984L91.7682 39.9173C91.9239 37.9975 90.7305 37.0463 89.5199 37.0463C88.9491 37.0463 88.3611 37.2538 87.9114 37.6689C87.7385 37.8246 87.5655 37.8937 87.3926 37.8937C86.8391 37.8937 86.4586 37.2019 87.2023 36.8041C87.9114 36.4237 88.5859 35.2476 87.9287 34.5039L89.001 33.5008C88.5167 33.2067 87.9979 33.0684 87.5136 33.0684C86.4413 33.0684 85.4555 33.7602 85.1442 35.3341C85.075 35.6973 84.9193 35.8356 84.7118 35.8356C84.1238 35.8356 83.0861 34.5731 82.3078 33.3278C82.1175 33.0338 81.9446 32.7225 81.7716 32.4285C81.5468 32.0307 81.3047 31.6502 81.0452 31.2697C80.7166 30.7854 80.3707 30.3185 79.9383 29.9034C79.2119 29.177 77.9494 27.9144 76.4966 27.067C76.1507 26.8767 75.7875 26.6865 75.4243 26.5308C74.9919 25.9601 74.5595 25.372 74.179 24.7667C73.1586 23.2101 72.3112 21.5498 71.8269 19.803C72.6225 21.446 73.7294 22.8815 74.9573 24.1614C75.5281 24.7667 76.1161 25.3201 76.7387 25.8736C78.4164 26.7384 79.8173 28.1393 80.6474 28.9521L80.7685 29.0732C81.0106 29.3153 81.2355 29.5575 81.4257 29.8169C81.7024 28.122 81.6333 26.0293 81.0971 24.0403C80.9933 23.6598 80.8723 23.262 80.7339 22.8988C80.2324 21.5671 79.5233 20.3218 78.5374 19.336C78.278 19.0766 78.0013 18.8345 77.7073 18.6096C76.4274 17.6238 74.8017 17.0185 72.7608 17.0185C72.4668 17.0185 72.1728 17.0358 71.8615 17.0531L69.0943 15.7905C70.0801 15.8078 70.8757 15.8424 71.5156 15.8424C74.2828 15.8424 74.058 15.4619 73.6948 13.5248C73.6948 13.5248 71.3599 14.1648 69.5785 14.1648C69.4056 14.1648 69.2326 14.1648 69.077 14.1475C68.2122 14.0783 67.8317 13.6978 67.6933 13.2308C67.5204 12.6082 67.4685 11.6397 67.9528 10.429C68.2641 9.63342 69.0251 8.94161 70.1147 8.94161C70.9448 8.94161 71.948 9.3394 73.0894 10.3771L74.058 11.3456C74.5595 10.7576 74.9573 10.0831 75.2686 9.42588C75.4762 8.52653 74.5077 7.95579 74.5077 7.95579C75.4935 8.07686 75.9777 7.05644 76.1334 6.58947C75.0784 6.01873 73.5737 5.15397 71.9826 4.72159L71.5156 3.13043C70.9103 2.81912 64.9953 1.4528 63.4387 1.4528C63.3523 1.4528 63.3004 1.4528 63.2312 1.4701C63.1101 1.48739 62.9891 1.53928 62.9026 1.60846C63.2312 1.97166 63.5252 2.38674 63.7846 2.83642L62.7296 3.18232C62.1416 2.23109 61.3287 1.43551 60.6023 1.19337C59.6511 2.02354 58.5096 4.49675 61.0174 7.09103V8.59571L60.585 8.18063C59.9797 7.60989 59.5473 7.05644 59.2187 6.52029C54.428 16.8974 62.2973 25.4066 62.2454 29.0732C62.2454 29.0732 63.8884 29.0213 65.0126 28.5716C65.0126 28.5716 65.5142 32.1517 64.4073 35.0919C63.1274 38.5164 61.1039 41.5603 59.4781 44.8118C58.9247 45.9187 58.4404 47.0429 58.0426 48.2017C58.0253 48.2363 58.0253 48.2708 58.0081 48.3054C57.6794 49.0145 57.126 49.6372 56.5034 49.9831C56.4861 50.0004 56.4515 50.0004 56.4342 50.0177C55.6213 50.4327 54.6701 50.3809 53.8745 49.8966C53.0962 49.4296 52.6811 48.634 52.6984 47.752C52.7503 45.7803 53.9091 44.3275 55.1543 42.7883C55.8116 41.9581 56.5034 41.1106 57.0395 40.1421C58.7172 37.1155 59.1322 33.691 58.2329 30.232C57.8178 28.6408 56.8839 27.2399 55.9845 25.8736C55.777 25.5623 55.5867 25.2683 55.3792 24.9569C55.2927 24.8359 55.2235 24.7148 55.1543 24.5938C55.5867 24.196 55.6732 23.7117 55.5348 23.0718C55.4138 22.4837 55.1025 21.7746 54.722 20.8926C54.2896 19.9241 53.788 18.8172 53.5459 17.6584C53.1481 15.7905 53.1481 14.2858 53.3902 12.7984C53.027 13.3865 52.7157 14.0091 52.4563 14.649C52.1623 15.3754 51.9547 16.1364 51.851 16.932C51.7472 17.7276 51.7472 18.5404 51.8683 19.3533C51.5915 18.5923 51.4186 17.7622 51.3667 16.932C51.3148 16.0845 51.3667 15.2371 51.5224 14.4069C51.6607 13.6459 51.8683 12.8849 52.145 12.1585C50.9516 13.9053 50.3463 16.0326 50.3117 18.5923C50.2771 21.8092 51.384 24.5073 52.439 25.1472C52.5774 25.2337 52.6984 25.2856 52.8195 25.3201C53.2692 25.4239 53.961 25.1126 53.961 25.1126C54.2723 25.6315 54.5836 26.0984 54.9122 26.6C55.7943 27.9317 56.6244 29.1943 56.9876 30.5606C57.8005 33.7256 57.4546 36.735 55.9153 39.5022C55.4311 40.367 54.7911 41.1798 54.1512 41.9581C52.8368 43.6012 51.4705 45.2961 51.4186 47.7001C51.384 49.0491 52.0585 50.2771 53.2173 50.9862C53.8399 51.3667 54.5663 51.5742 55.2927 51.5742C55.6213 51.5742 55.9672 51.5223 56.2958 51.4532C56.5898 51.3667 56.8839 51.2629 57.1606 51.1073C57.2471 51.0554 57.3335 51.0035 57.42 50.9516C57.3681 51.3667 57.3508 51.7991 57.3681 52.2142C57.3681 52.3179 57.3854 52.439 57.3854 52.5428C57.4373 53.2519 57.5411 53.9783 57.593 54.6874C57.6794 55.604 57.8351 55.7078 57.5584 56.6071C57.2298 57.6448 55.8289 58.2675 54.3761 58.5961C53.4594 58.8036 52.2142 58.9939 51.2456 59.1149C50.3809 59.236 49.741 59.9451 49.6891 60.8098C49.568 62.9372 49.395 66.7075 49.5507 67.7625C49.6545 68.9386 50.3463 69.9244 51.4013 70.4433ZM71.2216 4.98102C71.2216 5.96684 70.8584 7.00455 69.2672 6.93537C69.2672 6.93537 68.8521 6.20898 67.6588 5.01561C67.6415 5.01561 69.6304 5.4134 71.2216 4.98102ZM67.7106 19.8203C68.1084 20.5986 68.5235 21.3596 68.9732 22.0859C69.4402 22.8123 69.9417 23.4869 70.4952 24.1441C70.9794 24.7321 71.4983 25.3374 71.9999 25.9255C71.4291 25.9601 70.8584 26.0811 70.253 26.2887C69.9763 25.8217 69.6996 25.3547 69.4229 24.8878C68.9732 24.1268 68.5581 23.3139 68.1949 22.4837C67.849 21.6536 67.555 20.8234 67.2956 19.9759C67.0188 19.1458 66.7767 18.2983 66.5346 17.4508C66.9324 18.2464 67.3129 19.042 67.7106 19.8203ZM65.0472 25.4758C64.4764 24.317 63.9403 23.141 63.4906 21.9303C63.0236 20.7196 62.6432 19.4744 62.3318 18.2291C62.0378 16.9666 61.8303 15.704 61.7092 14.4242C61.9859 15.6694 62.3318 16.8974 62.7642 18.0908C63.1966 19.2841 63.7155 20.4429 64.2862 21.5671C65.3585 23.6252 66.6383 25.5796 67.9701 27.4993C67.3993 27.8279 66.8805 28.0528 66.4481 28.1911C65.9638 27.2918 65.4969 26.3924 65.0472 25.4758ZM97.7524 5.11938H98.9457C99.2571 6.1225 99.7586 6.96996 100.381 7.59259H102.803C102.197 7.24669 101.644 6.67595 101.211 5.91496C100.554 4.79077 100.174 3.35527 100.156 1.86789H96.732C96.7147 3.35527 96.3342 4.79077 95.6769 5.91496C95.2273 6.67595 94.6911 7.24669 94.0858 7.59259H96.3515C96.9395 6.96996 97.4411 6.1225 97.7524 5.11938ZM90.7651 7.59259H91.0245C90.4192 7.24669 89.8658 6.67595 89.4334 5.91496C88.7762 4.79077 88.3957 3.35527 88.3784 1.86789H85.6976C85.6803 2.02354 85.6803 2.1792 85.6803 2.35215C85.6457 5.18856 87.9979 7.59259 90.7651 7.59259ZM109.686 5.11938H110.879C111.191 6.1225 111.692 6.96996 112.315 7.59259H114.892C114.287 7.24669 113.75 6.67595 113.301 5.91496C112.644 4.79077 112.263 3.35527 112.246 1.86789H108.51C108.493 3.35527 108.112 4.79077 107.455 5.91496C107.005 6.67595 106.469 7.24669 105.864 7.59259H108.285C108.873 6.96996 109.375 6.1225 109.686 5.11938ZM66.3616 70.6162C66.6902 70.4087 67.0361 70.2011 67.4166 69.9936C67.3302 69.959 67.261 69.9244 67.1745 69.9071C67.0015 69.8379 66.8459 69.7688 66.6902 69.6996C65.5487 69.2499 64.6494 68.9905 63.9057 68.8694C63.9057 68.9386 63.923 68.9905 63.923 69.0597L64.1132 70.8584L62.4356 70.1665L62.3664 70.1492C62.2454 70.3741 62.107 70.5643 61.9513 70.7373C61.519 71.187 60.9482 71.4291 60.3083 71.4291C60.5158 71.7404 60.6542 72.0863 60.7407 72.4495C61.0001 73.591 60.5677 74.8362 59.5646 75.9431L58.8382 76.7387L58.0426 76.0296L57.2989 75.3724C57.1952 75.3897 57.0914 75.3897 56.9876 75.3897C55.9326 75.3897 54.9987 74.5595 54.7047 73.7466C54.6701 73.6429 54.6355 73.5391 54.6182 73.4353C54.5144 73.5218 54.3934 73.6083 54.2896 73.6775L54.1685 74.8535L54.0475 76.1161L52.8195 75.8048C51.9029 75.5799 50.6057 75.113 50.0177 73.8677C49.741 73.2797 49.6718 72.6225 49.7928 71.8788C47.1121 71.5675 45.0021 70.8584 45.0021 70.8584C46.5413 75.4762 50.917 78.0704 55.1543 78.0704C57.6276 78.0704 60.0489 77.1884 61.813 75.2859C62.2454 74.8362 62.6259 74.4039 63.0064 74.0234C63.5944 72.8127 64.7186 71.6712 66.3616 70.6162ZM121.81 5.11938H123.003C123.315 6.1225 123.816 6.96996 124.439 7.59259H126.808C126.203 7.24669 125.649 6.67595 125.217 5.91496C124.56 4.79077 124.179 3.35527 124.162 1.86789H120.617C120.599 3.35527 120.219 4.79077 119.562 5.91496C119.112 6.67595 118.576 7.22939 117.97 7.59259H120.392C120.997 6.96996 121.499 6.1225 121.81 5.11938ZM80.0767 19.4398C80.682 20.2354 81.1836 21.1347 81.5641 22.0687L83.5184 20.2008C83.3109 19.6646 83.2417 19.042 83.3109 18.4021C83.3109 18.3675 83.3282 18.3329 83.3282 18.281L84.3659 18.7826C84.3313 19.5609 84.6253 20.3737 85.3344 20.7542C85.5593 20.8753 85.7495 20.9272 86.0089 20.9272C86.0089 20.9272 86.0089 20.9272 86.0262 20.9272L85.9917 19.9759C86.3376 19.9759 86.8045 19.6127 86.8045 19.1112C86.8045 18.5404 86.4413 18.2291 85.9917 18.0908V16.9839C86.8564 17.1395 87.4963 17.6584 87.7558 18.3675L88.8972 18.3848C88.9491 17.52 88.534 16.7417 87.652 16.4477V15.3235C88.3957 15.4792 88.8799 15.8424 89.174 16.171C89.2604 16.2575 89.3296 16.3612 89.4161 16.465L90.2809 16.4823C90.3154 15.6521 89.9004 14.9085 89.1221 14.649V13.5248C89.6063 13.6286 90.0214 13.8189 90.3846 14.1302H91.1975C91.1802 13.594 90.8689 13.0752 90.4365 12.7466C90.0733 12.4871 89.6063 12.3315 89.1394 12.2623C88.9664 12.245 88.7762 12.2277 88.6032 12.2277C88.413 12.2277 88.24 12.245 88.0498 12.2796C87.5828 12.3488 87.1158 12.539 86.718 12.7984C86.0262 13.2654 85.369 13.8016 84.7291 14.3377C83.6914 15.2025 82.6883 16.1191 81.5987 16.932C81.2528 17.1914 80.1978 17.987 79.3676 18.6269C79.627 18.9036 79.8519 19.1631 80.0767 19.4398ZM80.682 11.2765C80.8377 10.4463 80.4226 9.84096 79.6097 9.65072C79.5751 9.65072 79.5405 9.63342 79.506 9.63342C79.6962 10.3425 79.6097 11.1208 79.1428 11.8818C78.7969 12.4179 78.2607 12.833 77.5862 13.0752C77.811 13.1098 78.0359 13.1098 78.2434 13.1098C79.6789 13.1098 80.4572 12.5217 80.682 11.2765Z\",\n fill: \"white\"\n }), jsx(\"path\", {\n d: \"M66.5691 89.1393C65.2201 89.1393 64.217 89.6582 63.5598 90.6959C62.9544 89.6582 62.0205 89.1393 60.7753 89.1393C59.53 89.1393 58.5961 89.6236 57.9734 90.5748V89.3988H55.8461V99.2051H57.9734V93.7053C57.9734 92.8578 58.181 92.2179 58.5788 91.7682C58.9766 91.3358 59.5127 91.111 60.1526 91.111C60.7407 91.111 61.1903 91.3012 61.5189 91.6644C61.8476 92.0449 62.0032 92.5638 62.0032 93.2383V99.1878H64.1305V93.688C64.1305 92.8232 64.3208 92.1833 64.7013 91.7509C65.0818 91.3185 65.6006 91.111 66.2578 91.111C66.8459 91.111 67.3128 91.3012 67.6587 91.6644C68.0046 92.0449 68.1776 92.5638 68.1776 93.2383V99.1878H70.3049V93.0999C70.3049 91.8893 69.959 90.9207 69.2845 90.1943C68.5754 89.5025 67.676 89.1393 66.5691 89.1393Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M180.06 89.1393C178.676 89.1393 177.656 89.6409 177.016 90.644V85.4555H174.889V99.1878H177.016V93.9301C177.016 92.9789 177.241 92.2698 177.708 91.8028C178.158 91.3358 178.763 91.111 179.507 91.111C180.181 91.111 180.717 91.3012 181.115 91.699C181.513 92.0968 181.703 92.6502 181.703 93.3939V99.2051H183.83V93.1864C183.83 91.9238 183.484 90.938 182.793 90.2289C182.084 89.5025 181.184 89.1393 180.06 89.1393Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M36.1988 94.1203H40.7993C40.5918 95.0716 40.1075 95.8326 39.3292 96.4033C38.5683 96.9741 37.5651 97.2508 36.3545 97.2508C34.8325 97.2508 33.6045 96.7838 32.6706 95.8499C31.7367 94.9159 31.2697 93.7572 31.2697 92.3389C31.2697 90.9207 31.7367 89.7447 32.6706 88.8107C33.6045 87.8768 34.7806 87.3925 36.2161 87.3925C37.0982 87.3925 37.911 87.6001 38.6374 87.9979C39.3638 88.3956 39.9 88.9318 40.2632 89.5717L41.8198 87.8941C41.2663 87.1677 40.5745 86.5451 39.727 86.0781C38.672 85.4901 37.496 85.196 36.2161 85.196C34.1753 85.196 32.4631 85.8878 31.0794 87.2715C29.6958 88.6551 29.004 90.3327 29.004 92.3216C29.004 94.3279 29.6958 96.0055 31.0794 97.3891C32.4631 98.7555 34.2099 99.4473 36.3372 99.4473C38.3434 99.4473 39.9692 98.8419 41.1971 97.6486C42.4424 96.4552 43.065 94.9159 43.065 93.0307V92.1141H36.1988V94.1203Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M191.233 91.4396V89.3988H188.794V86.6488H186.667V89.3988H184.868V91.4396H186.667V96.1439C186.667 97.4237 187.013 98.3058 187.722 98.79C188.431 99.2743 189.59 99.4127 191.215 99.2051V97.3027C190.679 97.3373 190.23 97.3372 189.866 97.32C189.503 97.3027 189.226 97.1989 189.054 97.0259C188.863 96.853 188.777 96.559 188.777 96.1439V91.4396C188.777 91.4396 191.233 91.4396 191.233 91.4396Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M49.4642 89.1393C47.9422 89.1393 46.697 89.6409 45.7285 90.6267C44.7772 91.6126 44.293 92.8405 44.293 94.3106C44.293 95.798 44.7772 97.0432 45.7631 98.0118C46.7489 98.9803 48.0287 99.4819 49.6372 99.4819C51.3321 99.4819 52.6638 98.8938 53.6151 97.7523L52.1796 96.3168C51.6088 97.1297 50.7787 97.5275 49.6545 97.5275C48.8416 97.5275 48.1498 97.32 47.5963 96.9222C47.0256 96.5244 46.6797 95.9536 46.524 95.21H54.3415C54.3933 94.8468 54.4279 94.5527 54.4279 94.3279C54.4279 92.8924 53.961 91.6644 53.0443 90.6613C52.0931 89.6409 50.8997 89.1393 49.4642 89.1393ZM46.4895 93.4804C46.6278 92.7367 46.9737 92.1487 47.4926 91.7163C48.0114 91.2839 48.6686 91.0764 49.4469 91.0764C50.1387 91.0764 50.7441 91.2839 51.2629 91.6817C51.7818 92.0795 52.1104 92.6849 52.2487 93.4804H46.4895Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M76.9117 89.1393C75.3897 89.1393 74.1445 89.6409 73.1759 90.6267C72.2074 91.6126 71.7231 92.8405 71.7231 94.3106C71.7231 95.798 72.2074 97.0432 73.1932 98.0118C74.1791 98.9803 75.4589 99.4819 77.0674 99.4819C78.7623 99.4819 80.094 98.8938 81.0452 97.7523L79.6097 96.3168C79.039 97.1297 78.2088 97.5275 77.0846 97.5275C76.2718 97.5275 75.58 97.32 75.0265 96.9222C74.4558 96.5244 74.1099 95.9536 73.9542 95.21H81.7716C81.8235 94.8468 81.8581 94.5527 81.8581 94.3279C81.8581 92.8924 81.3911 91.6644 80.4745 90.6613C79.5233 89.6409 78.3472 89.1393 76.9117 89.1393ZM73.9196 93.4804C74.058 92.7367 74.4039 92.1487 74.9227 91.7163C75.4416 91.2839 76.0988 91.0764 76.8771 91.0764C77.5689 91.0764 78.1742 91.2839 78.6931 91.6817C79.212 92.0795 79.5406 92.6849 79.6789 93.4804H73.9196Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M87.9806 89.1393C86.4586 89.1393 85.2133 89.6409 84.2448 90.6267C83.2763 91.6126 82.792 92.8405 82.792 94.3106C82.792 95.798 83.2763 97.0432 84.2621 98.0118C85.2479 98.9803 86.5278 99.4819 88.1362 99.4819C89.8311 99.4819 91.1629 98.8938 92.1141 97.7523L90.6786 96.3168C90.1079 97.1297 89.2777 97.5275 88.1535 97.5275C87.3406 97.5275 86.6488 97.32 86.0954 96.9222C85.5246 96.5244 85.1787 95.9536 85.0231 95.21H92.8405C92.8924 94.8468 92.927 94.5527 92.927 94.3279C92.927 92.8924 92.46 91.6644 91.5434 90.6613C90.6094 89.6409 89.4333 89.1393 87.9806 89.1393ZM85.0058 93.4804C85.1441 92.7367 85.49 92.1487 86.0089 91.7163C86.5278 91.2839 87.185 91.0764 87.9633 91.0764C88.6551 91.0764 89.2604 91.2839 89.7793 91.6817C90.2981 92.0795 90.6267 92.6849 90.7651 93.4804H85.0058Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M116.777 89.1393C115.255 89.1393 114.01 89.6409 113.041 90.6267C112.073 91.6126 111.589 92.8405 111.589 94.3106C111.589 95.798 112.073 97.0432 113.059 98.0118C114.044 98.9803 115.324 99.4819 116.933 99.4819C118.628 99.4819 119.959 98.8938 120.911 97.7523L119.475 96.3168C118.904 97.1297 118.074 97.5275 116.95 97.5275C116.137 97.5275 115.445 97.32 114.892 96.9222C114.321 96.5244 113.975 95.9536 113.82 95.21H121.637C121.689 94.8468 121.723 94.5527 121.723 94.3279C121.723 92.8924 121.257 91.6644 120.34 90.6613C119.406 89.6409 118.213 89.1393 116.777 89.1393ZM113.802 93.4804C113.941 92.7367 114.287 92.1487 114.805 91.7163C115.324 91.2839 115.981 91.0764 116.76 91.0764C117.452 91.0764 118.057 91.2839 118.576 91.6817C119.095 92.0795 119.423 92.6849 119.562 93.4804H113.802Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M158.199 89.1393C156.677 89.1393 155.432 89.6409 154.463 90.6267C153.495 91.6126 153.01 92.8405 153.01 94.3106C153.01 95.798 153.495 97.0432 154.481 98.0118C155.466 98.9803 156.746 99.4819 158.355 99.4819C160.05 99.4819 161.381 98.8938 162.333 97.7523L160.897 96.3168C160.326 97.1297 159.496 97.5275 158.372 97.5275C157.559 97.5275 156.867 97.32 156.314 96.9222C155.743 96.5244 155.397 95.9536 155.242 95.21H163.059C163.111 94.8468 163.145 94.5527 163.145 94.3279C163.145 92.8924 162.678 91.6644 161.762 90.6613C160.828 89.6409 159.652 89.1393 158.199 89.1393ZM155.224 93.4804C155.363 92.7367 155.708 92.1487 156.227 91.7163C156.746 91.2839 157.403 91.0764 158.182 91.0764C158.873 91.0764 159.479 91.2839 159.998 91.6817C160.517 92.0795 160.845 92.6849 160.984 93.4804H155.224Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M108.337 86.6488H106.21V89.3988H104.411V91.4396H106.21V96.1439C106.21 97.4237 106.556 98.3058 107.265 98.79C107.974 99.2743 109.133 99.4127 110.758 99.2051V97.3027C110.222 97.3373 109.772 97.3372 109.409 97.32C109.046 97.3027 108.769 97.1989 108.596 97.0259C108.406 96.853 108.32 96.559 108.32 96.1439V91.4396H110.758V89.3988H108.32L108.337 86.6488C108.337 86.6488 108.32 86.6488 108.337 86.6488Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M135.819 94.5181C135.819 95.3483 135.577 96.0228 135.075 96.5244C134.591 97.0259 133.847 97.2681 132.862 97.2681C131.876 97.2681 131.149 97.0259 130.648 96.5244C130.164 96.0228 129.904 95.3656 129.904 94.5181V85.4728H127.638V94.6565C127.638 96.1266 128.123 97.2854 129.091 98.1674C130.06 99.0322 131.305 99.4646 132.844 99.4646C134.384 99.4646 135.629 99.0322 136.597 98.1674C137.566 97.3027 138.05 96.1266 138.05 94.6565V85.4728H135.785V94.5181H135.819Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M143.36 86.6488H141.232V89.3988H139.434V91.4396H141.232V96.1439C141.232 97.4237 141.578 98.3058 142.287 98.79C142.996 99.2743 144.155 99.4127 145.781 99.2051V97.3027C145.245 97.3373 144.795 97.3372 144.432 97.32C144.069 97.3027 143.792 97.1989 143.619 97.0259C143.429 96.853 143.342 96.559 143.342 96.1439V91.4396H145.781V89.3988H143.342V86.6488H143.36Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M99.6029 89.1393C98.2193 89.1393 97.1989 89.6409 96.559 90.644V89.3815H94.4316V99.1878H96.559V93.9301C96.559 92.9789 96.7838 92.2698 97.2508 91.8028C97.7004 91.3358 98.3058 91.111 99.0495 91.111C99.724 91.111 100.26 91.3012 100.658 91.699C101.056 92.0968 101.246 92.6503 101.246 93.394V99.2051H103.373V93.1864C103.373 91.9239 103.027 90.938 102.336 90.2289C101.626 89.5025 100.727 89.1393 99.6029 89.1393Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M149.655 91.0418V89.3987H147.528V99.2051H149.655V94.2587C149.655 93.2556 149.949 92.5292 150.555 92.0968C151.16 91.6644 151.869 91.4742 152.682 91.5261V89.2258C151.195 89.2258 150.191 89.8311 149.655 91.0418Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M172.122 95.798C171.672 96.7319 170.807 97.3546 169.752 97.5102C169.735 97.5102 169.718 97.5102 169.7 97.5102C169.562 97.5275 169.406 97.5448 169.251 97.5448C167.521 97.5448 166.189 96.2131 166.189 94.3106C166.189 92.4081 167.521 91.0764 169.251 91.0764C169.406 91.0764 169.545 91.0937 169.683 91.111C169.7 91.111 169.718 91.111 169.735 91.111C170.79 91.2494 171.637 91.872 172.104 92.7713L173.522 91.3531C172.589 90.0041 171.032 89.1566 169.251 89.1566C166.38 89.1566 164.097 91.405 164.097 94.3279C164.097 97.2335 166.38 99.4819 169.251 99.4819C171.049 99.4819 172.606 98.5998 173.54 97.2508L172.122 95.798Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M110.274 13.0405C111.974 13.0405 113.353 12.3514 113.353 11.5013C113.353 10.6512 111.974 9.96201 110.274 9.96201C108.574 9.96201 107.196 10.6512 107.196 11.5013C107.196 12.3514 108.574 13.0405 110.274 13.0405Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M101.471 11.5013L98.0118 9.75447L94.5355 11.5013L98.0118 13.2308L101.471 11.5013Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M126.013 11.5013L122.536 9.75447L119.077 11.5013L122.536 13.2308L126.013 11.5013Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M175.183 69.8206C175.148 69.8379 173.125 70.4951 170.565 70.7892C171.395 70.0801 171.949 69.0769 172.122 67.9355C172.243 67.0707 172.208 64.6494 171.983 60.7753C171.914 59.3916 170.859 58.2502 169.493 58.0772C168.213 57.9043 167.158 57.7313 166.449 57.5756C164.979 57.247 164.183 56.7109 164.079 56.3304C163.941 55.9153 163.958 55.8634 164.01 55.4829C164.028 55.31 164.062 55.1024 164.097 54.8257C164.131 54.5144 164.149 54.2204 164.2 53.8918C164.252 53.494 164.287 53.0789 164.322 52.6638C164.322 52.6465 164.322 52.6119 164.322 52.5946C164.65 52.6638 164.996 52.6984 165.325 52.6984C166.241 52.6984 167.158 52.4563 167.954 51.9547C169.441 51.0381 170.306 49.4642 170.271 47.7174C170.202 44.9502 168.663 43.0131 167.296 41.3182C166.674 40.5399 166.068 39.7962 165.636 39.0179C164.235 36.4928 163.906 33.7602 164.667 30.8719C164.979 29.6785 165.757 28.4852 166.587 27.2399C166.76 26.9805 166.933 26.7038 167.106 26.4443C167.227 26.4616 167.348 26.4789 167.469 26.4789C167.988 26.4789 168.42 26.306 168.732 26.1157C170.721 24.8878 171.413 20.8753 171.378 18.6269C171.326 13.9226 169.475 10.5328 165.757 8.26709L164.477 7.48881L164.961 8.90702C166.086 12.1758 166.691 14.1993 165.982 17.4854C165.757 18.5404 165.307 19.5436 164.875 20.5121C164.2 22.0341 163.543 23.5041 164.114 24.6975C163.976 24.9051 163.837 25.1299 163.699 25.3374C162.748 26.7729 161.762 28.2603 161.312 30.0244C160.344 33.7602 160.793 37.4614 162.609 40.7301C163.18 41.7679 163.906 42.6672 164.598 43.532C165.757 44.9848 166.777 46.23 166.812 47.8385C166.829 48.513 166.397 48.8762 166.155 49.0318C165.671 49.3258 165.1 49.3431 164.598 49.0837C164.2 48.8762 163.82 48.4611 163.578 47.9768C163.197 46.8526 162.713 45.6766 162.056 44.3794C161.468 43.2034 160.828 42.0446 160.205 40.9204C159.064 38.845 157.974 36.8906 157.179 34.7633C156.573 33.1203 156.504 31.2351 156.539 30.0244C157.403 30.1801 158.164 30.2147 158.303 30.2147L159.427 30.2493L159.41 29.1251C159.392 28.2776 160.067 26.8075 160.828 25.0953C162.921 20.4602 166.086 13.4729 162.021 5.46528C161.987 5.41339 161.969 5.34421 161.935 5.29232C162.108 4.73888 162.16 4.23732 162.142 3.82223C162.125 2.28296 161.364 1.0723 160.672 0.449675L160.188 0.0172952L159.583 0.224837C159.185 0.363199 158.804 0.605331 158.424 0.899349C158.164 0.657217 157.836 0.484265 157.455 0.432379C157.352 0.415084 157.248 0.415084 157.109 0.415084C155.432 0.415084 149.327 1.7987 148.531 2.21378L148.116 2.42132L147.978 2.871L147.684 3.89142C146.335 4.34109 145.107 5.0156 144.19 5.51716C144.069 5.58634 143.948 5.65552 143.827 5.70741L143.135 6.0879L143.291 6.86619C143.308 6.98725 143.913 10.0312 145.677 12.0893L145.764 12.1758C145.331 12.2104 144.951 12.245 144.605 12.245C143.55 12.245 142.72 11.9337 142.322 11.311C141.699 10.3425 142.149 9.30481 142.876 8.76865C142.478 8.5957 142.097 8.49193 141.63 8.49193C141.354 8.49193 141.042 8.52652 140.696 8.613C139.313 8.92431 138.534 10.0831 138.794 11.484C139.088 13.1616 140.264 14.1993 142.305 14.1993C142.72 14.1993 143.152 14.1647 143.636 14.0783C144.328 13.9572 145.037 13.7497 145.746 13.5248C145.746 13.5594 145.729 13.5767 145.729 13.6113C145.556 14.5798 145.401 15.41 145.937 16.0845C144.449 16.3612 143.1 16.9839 141.959 17.9178C141.025 17.2087 139.762 16.2575 139.572 16.1018C138.828 15.5484 138.137 14.943 137.393 14.3204C137.099 14.061 136.788 13.8016 136.476 13.5421C135.836 13.006 135.145 12.4525 134.401 11.9337C133.847 11.5532 133.208 11.311 132.516 11.2246V8.16332C134.712 7.19479 136.251 4.96372 136.251 2.42132C136.251 1.85058 136.182 1.31443 136.027 0.795578H131.374C131.409 1.10689 131.426 1.4182 131.426 1.74681C131.426 4.51404 130.042 6.95266 128.33 6.95266C126.618 6.95266 125.234 4.51404 125.234 1.74681C125.234 1.4182 125.252 1.10689 125.286 0.795578H119.458C119.492 1.10689 119.51 1.4182 119.51 1.74681C119.51 4.51404 118.126 6.95266 116.414 6.95266C114.702 6.95266 113.318 4.51404 113.318 1.74681C113.318 1.4182 113.335 1.10689 113.37 0.795578H107.351C107.386 1.10689 107.403 1.4182 107.403 1.74681C107.403 4.51404 106.019 6.95266 104.307 6.95266C102.595 6.95266 101.211 4.51404 101.211 1.74681C101.211 1.4182 101.229 1.10689 101.263 0.795578H95.5732C95.6078 1.10689 95.6251 1.4182 95.6251 1.74681C95.6251 4.51404 94.2415 6.95266 92.5292 6.95266C90.817 6.95266 89.4334 4.51404 89.4334 1.74681C89.4334 1.4182 89.4507 1.10689 89.4853 0.795578H84.7637C84.6253 1.29714 84.5562 1.81599 84.5562 2.35214C84.5562 4.80806 85.9917 7.00455 88.0498 8.04226V11.2246C87.358 11.311 86.6835 11.5532 86.1127 11.951C85.369 12.4525 84.6772 13.0233 84.0373 13.5594C83.726 13.8188 83.432 14.0783 83.1207 14.3377C82.377 14.9603 81.6852 15.5657 80.9415 16.1191C80.7512 16.2575 79.4887 17.2087 78.5547 17.9351C77.4132 17.0012 76.0815 16.3785 74.5768 16.1018C75.113 15.41 74.9573 14.5798 74.7844 13.6286C74.7844 13.6113 74.7671 13.5767 74.7671 13.5421C75.4762 13.7843 76.1853 13.9745 76.8771 14.0956C77.3614 14.182 77.7937 14.2166 78.2088 14.2166C80.2497 14.2166 81.4257 13.1789 81.7197 11.5013C81.9792 10.1004 81.2009 8.94161 79.8173 8.63029C79.4714 8.56111 79.1601 8.50923 78.8833 8.50923C78.4164 8.50923 78.0359 8.613 77.6381 8.78595C78.3645 9.3221 78.8142 10.3598 78.1915 11.3283C77.7937 11.9683 76.9463 12.2623 75.9086 12.2623C75.5454 12.2623 75.1649 12.2277 74.7844 12.1585L74.8709 12.072C76.635 10.0139 77.2403 6.98725 77.2576 6.84889L77.4132 6.07061L76.7214 5.69011C76.6004 5.62093 76.4793 5.56905 76.3582 5.49987C75.4243 4.99831 74.2136 4.32379 72.8646 3.87412L72.5706 2.8537L72.4322 2.40403L72.0171 2.19649C71.2216 1.7814 65.1164 0.397789 63.4387 0.397789C63.3177 0.397789 63.1966 0.397789 63.0928 0.415084C62.7123 0.46697 62.3837 0.639922 62.1243 0.882054C61.7438 0.570741 61.346 0.345904 60.9655 0.207542L60.3602 0L59.8586 0.397789C59.1668 1.02042 58.4058 2.23108 58.3885 3.77035C58.3885 4.18543 58.4404 4.68699 58.5961 5.24044C58.5615 5.30962 58.5269 5.36151 58.5096 5.41339C54.4452 13.4211 57.6103 20.4083 59.703 25.0434C60.464 26.7383 61.1385 28.2084 61.1212 29.0732L61.1039 30.1974L62.2281 30.1628C62.3491 30.1628 63.1101 30.1282 63.9922 29.9725C64.0268 31.1832 63.9749 33.0857 63.3523 34.7114C62.5567 36.8387 61.4671 38.7931 60.3256 40.8685C59.703 41.9927 59.0631 43.1515 58.475 44.3275C57.8351 45.6247 57.3335 46.8008 56.953 47.9249C56.7109 48.4092 56.3477 48.8243 55.9326 49.0318C55.4311 49.2913 54.8603 49.274 54.3761 48.9799C54.1166 48.8243 53.7016 48.4611 53.7188 47.7866C53.7534 46.1954 54.7566 44.9329 55.9326 43.4801C56.6244 42.6153 57.3335 41.7333 57.9216 40.6783C59.7376 37.4095 60.1872 33.7083 59.2187 29.9725C58.769 28.2084 57.7832 26.7211 56.832 25.2856C56.6936 25.078 56.5553 24.8532 56.4169 24.6456C56.9876 23.4523 56.3477 21.9822 55.6559 20.4602C55.2235 19.4917 54.7739 18.4885 54.549 17.4335C53.8399 14.1302 54.4452 12.1239 55.5694 8.85513L56.0537 7.43693L54.7739 8.21521C51.0554 10.4809 49.2048 13.8707 49.1529 18.575C49.1183 20.8234 49.8274 24.8532 51.7991 26.0638C52.1104 26.2541 52.5255 26.427 53.0616 26.427C53.1827 26.427 53.2865 26.4097 53.4248 26.3924C53.5978 26.6519 53.7707 26.9286 53.9437 27.188C54.7739 28.4333 55.5521 29.6266 55.8634 30.82C56.6071 33.7083 56.2785 36.4582 54.8949 38.966C54.4625 39.7443 53.8745 40.488 53.2346 41.2663C51.8683 42.9612 50.329 44.881 50.2598 47.6655C50.2252 49.395 51.09 50.9862 52.5774 51.9028C53.3729 52.4044 54.2896 52.6465 55.2062 52.6465C55.5521 52.6465 55.8807 52.6119 56.2094 52.5427C56.2094 52.56 56.2094 52.5946 56.2094 52.6119C56.2439 53.027 56.2785 53.4421 56.3304 53.8399C56.365 54.1685 56.3996 54.4625 56.4342 54.7738C56.4515 55.0506 56.4861 55.2581 56.5207 55.4311C56.5726 55.7943 56.5898 55.8634 56.4515 56.2785C56.3304 56.659 55.5521 57.1952 54.082 57.5238C53.3729 57.6794 52.3179 57.8524 51.0381 58.0253C49.6718 58.2156 48.6168 59.3571 48.5476 60.7234C48.34 64.5975 48.2882 67.0188 48.4092 67.8836C48.5822 69.0251 49.1356 70.0282 49.9658 70.7373C47.4061 70.4433 45.3653 69.7687 45.348 69.7687L43.2899 69.0769L43.9817 71.1351C44.7945 73.5564 46.3338 75.5972 48.4611 77.0327C50.4328 78.3645 52.8022 79.0909 55.1543 79.0909C58.0253 79.0909 60.6369 78.0186 62.5221 76.0642C62.5394 76.6003 62.6432 77.1192 62.8507 77.6554L63.8019 80.0248L64.8569 77.7072C64.9261 77.5689 66.5346 74.179 70.3741 73.885C72.0171 73.7639 73.885 73.5218 75.3378 72.3111C75.3378 72.3111 75.3378 72.3111 75.3551 72.3111C75.3551 72.7089 75.3897 73.0894 75.4935 73.4699C76.0123 75.6145 77.8629 76.7041 77.9321 76.7387L79.6443 77.7245L79.5406 75.7529C79.506 74.9054 79.4541 73.9369 79.6962 73.1413C80.1286 71.7058 81.6333 71.1697 82.4807 70.9621C82.6883 70.9102 82.8958 70.8583 83.0861 70.8238C84.487 70.5124 85.6285 70.253 86.8045 69.5612C86.303 70.547 86.0954 71.5502 86.1992 72.5706C86.4413 75.113 88.5167 76.7041 88.6032 76.7733L90.9727 78.5547L90.3154 75.6664C90.0733 74.5595 89.8831 72.0344 90.9035 71.3772C92.166 70.547 93.1173 70.4433 94.2242 70.3222C95.1408 70.2184 96.1266 70.0974 97.2854 69.5958C96.3861 71.5847 96.7666 73.2105 96.8011 73.297L97.3546 75.4935L98.7209 73.6775C98.7382 73.6429 101.298 70.3395 104.93 70.3395C107.559 70.3395 109.686 71.6366 109.703 71.6539L110.274 71.9998L110.845 71.6539C110.862 71.6366 112.989 70.3395 115.618 70.3395C119.25 70.3395 121.81 73.6602 121.827 73.6775L123.194 75.4935L123.747 73.297C123.764 73.2105 124.162 71.5847 123.263 69.5958C124.422 70.0974 125.407 70.2184 126.324 70.3222C127.431 70.4433 128.399 70.5643 129.645 71.3772C130.665 72.0517 130.492 74.5595 130.233 75.6664L129.576 78.5547L131.945 76.7733C132.031 76.7041 134.107 75.113 134.349 72.5706C134.453 71.5502 134.245 70.547 133.744 69.5612C134.92 70.2357 136.061 70.4951 137.462 70.8238C137.652 70.8756 137.86 70.9102 138.067 70.9621C138.915 71.1524 140.42 71.7058 140.852 73.1413C141.094 73.9369 141.042 74.9054 141.008 75.7529L140.904 77.7245L142.616 76.7387C142.703 76.6868 144.553 75.6145 145.055 73.4699C145.141 73.0894 145.193 72.6916 145.193 72.3111C145.193 72.3111 145.193 72.3111 145.21 72.3111C146.663 73.5218 148.531 73.7466 150.174 73.885C154.014 74.179 155.622 77.5689 155.691 77.7072L156.746 80.0248L157.697 77.6554C157.905 77.1192 158.026 76.5831 158.026 76.0642C159.911 78.0186 162.523 79.0909 165.394 79.0909C167.746 79.0909 170.115 78.3645 172.087 77.0327C174.214 75.5972 175.771 73.5564 176.567 71.1351L177.258 69.0769L175.183 69.8206ZM142.287 13.1097C140.835 13.1097 140.074 12.5217 139.849 11.2765C139.693 10.4463 140.108 9.84096 140.921 9.65071C140.956 9.65071 140.99 9.63341 141.025 9.63341C140.835 10.3425 140.921 11.1208 141.388 11.8818C141.734 12.4179 142.27 12.833 142.945 13.0752C142.72 13.0924 142.495 13.1097 142.287 13.1097ZM79.1255 11.8818C79.6097 11.1381 79.6789 10.3425 79.4887 9.63341C79.5233 9.63341 79.5578 9.65071 79.5924 9.65071C80.4053 9.82366 80.8204 10.4463 80.6647 11.2765C80.4399 12.5217 79.6616 13.1097 78.2261 13.1097C78.0186 13.1097 77.7937 13.0924 77.5689 13.0752C78.2434 12.833 78.7796 12.4352 79.1255 11.8818ZM142.011 19.3014C142.27 19.042 142.547 18.7999 142.841 18.575C144.121 17.5892 145.746 16.9839 147.787 16.9839C148.081 16.9839 148.375 17.0012 148.687 17.0185L151.454 15.7559C150.468 15.7732 149.673 15.8078 149.033 15.8078C146.265 15.8078 146.49 15.4273 146.853 13.4902C146.853 13.4902 149.188 14.1302 150.97 14.1302C151.143 14.1302 151.316 14.1302 151.471 14.1129C152.336 14.0437 152.716 13.6632 152.855 13.1962C153.028 12.5736 153.08 11.6051 152.595 10.3944C152.284 9.59882 151.523 8.90702 150.434 8.90702C149.603 8.90702 148.6 9.30481 147.459 10.3425L146.49 11.311C145.989 10.723 145.591 10.0485 145.28 9.39128C145.072 8.49193 146.041 7.92119 146.041 7.92119C145.055 8.04226 144.57 7.02184 144.415 6.55487C145.47 5.98413 146.974 5.11937 148.566 4.68699L149.033 3.09584C149.638 2.78452 155.553 1.4182 157.109 1.4182C157.196 1.4182 157.248 1.4182 157.317 1.4355C157.438 1.45279 157.559 1.50468 157.646 1.57386C157.317 1.93706 157.023 2.35214 156.764 2.80182L157.819 3.14772C158.407 2.19649 159.219 1.40091 159.946 1.15878C160.897 1.98895 162.039 4.46216 159.531 7.05643V8.56111L159.963 8.14603C160.568 7.57529 161.001 7.02184 161.329 6.48569C166.12 16.8628 158.251 25.372 158.303 29.0386C158.303 29.0386 156.66 28.9867 155.536 28.537C155.536 28.537 155.034 32.1171 156.141 35.0573C157.421 38.4818 159.444 41.5257 161.07 44.7772C161.623 45.8841 162.108 47.0083 162.506 48.1671C162.523 48.2017 162.523 48.2363 162.54 48.2708C162.869 48.9799 163.422 49.6026 164.045 49.9485C164.062 49.9658 164.097 49.9658 164.114 49.9831C164.927 50.3981 165.878 50.3463 166.674 49.862C167.452 49.395 167.867 48.5995 167.85 47.7174C167.798 45.7457 166.639 44.293 165.394 42.7537C164.737 41.9235 164.045 41.076 163.509 40.1075C161.831 37.0809 161.416 33.6564 162.315 30.1974C162.73 28.6062 163.664 27.2053 164.564 25.839C164.771 25.5277 164.961 25.2337 165.169 24.9224C165.255 24.8013 165.325 24.6802 165.394 24.5592C164.961 24.1614 164.875 23.6771 165.013 23.0372C165.134 22.4491 165.446 21.74 165.826 20.858C166.259 19.8895 166.76 18.7826 167.002 17.6238C167.4 15.7559 167.4 14.2512 167.158 12.7638C167.521 13.3519 167.832 13.9745 168.092 14.6144C168.386 15.3408 168.593 16.1018 168.697 16.8974C168.801 17.693 168.801 18.5058 168.68 19.3187C168.957 18.5577 169.13 17.7276 169.181 16.8974C169.233 16.0499 169.181 15.2025 169.026 14.3723C168.887 13.6113 168.68 12.8503 168.403 12.1239C169.597 13.8707 170.202 15.998 170.236 18.5577C170.271 21.7746 169.164 24.4727 168.109 25.1126C167.971 25.1991 167.85 25.251 167.729 25.2856C167.279 25.3893 166.587 25.078 166.587 25.078C166.276 25.5969 165.965 26.0638 165.636 26.5654C164.754 27.8971 163.924 29.1597 163.561 30.526C162.748 33.691 163.094 36.7004 164.633 39.4676C165.117 40.3324 165.757 41.1452 166.397 41.9235C167.711 43.5666 169.078 45.2615 169.13 47.6655C169.164 49.0145 168.49 50.2425 167.331 50.9516C166.708 51.3321 165.982 51.5396 165.255 51.5396C164.927 51.5396 164.581 51.4877 164.252 51.4186C163.958 51.3321 163.664 51.2283 163.388 51.0727C163.301 51.0208 163.215 50.9689 163.128 50.917C163.18 51.3321 163.197 51.7645 163.18 52.1796C163.18 52.2833 163.163 52.4044 163.163 52.5082C163.111 53.2173 163.007 53.9437 162.955 54.6528C162.869 55.5694 162.713 55.6732 162.99 56.5725C163.318 57.6102 164.719 58.2329 166.172 58.5615C167.089 58.769 168.334 58.9593 169.303 59.0803C170.167 59.2014 170.807 59.9105 170.859 60.7753C170.98 62.9026 171.153 66.6729 170.997 67.7279C170.825 68.8867 170.15 69.8725 169.078 70.3914C169.147 70.547 169.216 70.7027 169.285 70.8411C169.441 71.2388 169.562 71.5847 169.614 71.9134C169.96 73.7985 168.611 74.3866 167.4 74.6806L167.244 72.9857C167.227 72.9165 166.899 72.7608 166.829 72.7262C166.726 72.657 166.604 72.5879 166.518 72.5014C166.31 72.3111 166.241 72.0863 166.207 71.8442C166.189 71.7058 166.189 71.5674 166.189 71.4118C166.172 71.1524 166.138 70.8929 165.999 70.7027C165.93 70.6162 165.861 70.547 165.74 70.4951C165.636 70.4433 165.532 70.426 165.428 70.426C165.307 70.426 165.204 70.4606 165.1 70.5124C164.875 70.6335 164.685 70.8583 164.65 71.1351C164.633 71.2388 164.65 71.3772 164.667 71.5156C164.754 72.0171 164.996 72.7089 164.771 73.3143C164.633 73.7121 164.097 74.2482 163.509 74.2482C163.318 74.2482 163.145 74.1963 162.955 74.0753L161.745 75.1476C160.136 73.3834 160.638 71.6885 162.384 70.9621C162.523 70.9102 162.644 70.8411 162.748 70.7719C163.076 70.547 163.267 70.253 163.076 69.9417C162.938 69.6996 162.782 69.6131 162.575 69.6131C162.263 69.6131 161.866 69.8033 161.26 70.0455C161.226 70.0628 161.191 70.0801 161.139 70.0974C160.811 70.2184 160.499 70.3049 160.205 70.3049C159.583 70.3049 159.081 69.9417 158.822 68.9386C158.804 68.8521 158.787 68.7483 158.77 68.6619L158.355 68.8348L157.628 69.1288C157.646 69.0078 157.663 68.8694 157.68 68.7483C157.749 68.3332 157.888 67.9874 158.043 67.6933C158.58 66.7075 159.531 66.3097 160.499 66.3097C161.745 66.3097 163.024 66.9323 163.561 67.7279L165.843 68.0392C166.31 67.4512 166.328 65.7217 166.259 64.3727C166.207 63.3868 165.48 62.5913 164.512 62.4356C162.851 62.1935 160.361 61.8303 159.479 61.7611C157.801 61.64 156.054 61.346 154.792 60.118C153.062 58.4058 152.682 56.6244 152.682 54.1512C152.682 53.3383 152.716 52.5255 152.786 51.6953C152.838 50.9862 152.924 50.2771 152.993 49.5853C153.045 49.1183 153.114 48.6513 153.183 48.1844C153.253 47.752 153.253 47.285 153.218 46.8353C153.201 46.6624 153.183 46.5067 153.149 46.3338C153.062 45.8322 152.924 45.348 152.734 44.8464C152.526 44.3275 152.232 43.8433 151.886 43.3763C151.333 42.6499 150.606 42.01 149.69 41.4911C149.361 41.3009 148.963 41.076 148.548 40.8166C148.133 40.5572 147.684 40.2805 147.217 39.9519C146.075 39.1909 144.813 38.2396 143.636 37.15C143.723 37.0982 143.809 37.0463 143.896 36.9944C144.328 36.735 145.522 35.8529 146.646 34.919C146.923 34.6941 147.165 34.4866 147.39 34.279L146.317 33.7083C145.072 34.7633 143.688 35.801 143.325 36.0086C143.152 36.1123 142.979 36.2161 142.806 36.3199C142.478 36.5101 142.149 36.7004 141.838 36.8733C140.022 37.911 138.725 38.6201 138.759 39.8308C141.008 42.2521 139.78 43.6876 138.534 44.12L138.119 42.7883C136.805 42.5634 136.822 41.5949 136.77 40.8512C136.736 40.4534 136.424 40.2286 136.113 40.2286C135.854 40.2286 135.594 40.4015 135.577 40.7993C135.542 41.2317 135.577 41.6814 135.456 42.3905C135.369 42.8747 134.851 43.532 134.107 43.532C133.986 43.532 133.865 43.5147 133.744 43.4801L133.467 45.0539C130.907 44.5697 131.184 42.0273 132.913 41.1625C133.899 40.661 134.211 40.2978 133.917 39.9173C133.83 39.8135 133.726 39.7616 133.605 39.7616C133.242 39.7616 132.706 40.1594 132.187 40.5399C131.962 40.7129 131.668 40.7993 131.357 40.7993C130.682 40.7993 129.956 40.3669 129.645 39.3465L128.763 39.8827C128.607 37.9629 129.8 37.0117 131.011 37.0117C131.582 37.0117 132.17 37.2192 132.619 37.6343C132.792 37.79 132.965 37.8591 133.138 37.8591C133.692 37.8591 134.072 37.1673 133.329 36.7695C132.619 36.3891 131.945 35.213 132.602 34.4693L131.53 33.4662C132.014 33.1722 132.533 33.0338 133.017 33.0338C134.09 33.0338 135.075 33.7256 135.387 35.2995C135.456 35.6627 135.612 35.801 135.819 35.801C136.407 35.801 137.445 34.5385 138.223 33.2932C138.413 32.9992 138.586 32.6879 138.759 32.3939C138.984 31.9961 139.226 31.6156 139.486 31.2351C139.814 30.7508 140.16 30.2839 140.593 29.8688C141.319 29.1424 142.581 27.8798 144.034 27.0324C144.38 26.8421 144.743 26.6519 145.107 26.4962C145.539 25.9255 145.971 25.3374 146.352 24.7321C147.372 23.1755 148.22 21.5152 148.704 19.7684C147.908 21.4114 146.802 22.8469 145.574 24.1268C145.003 24.7321 144.415 25.2855 143.792 25.839C142.115 26.7038 140.714 28.1047 139.883 28.9175L139.762 29.0386C139.52 29.2807 139.295 29.5229 139.105 29.7823C138.828 28.0874 138.898 25.9947 139.434 24.0057C139.538 23.6252 139.659 23.2274 139.797 22.8642C140.299 21.5498 141.025 20.3045 142.011 19.3014ZM148.479 12.4352C149.136 12.2104 149.794 12.0374 150.416 12.0374C150.935 12.0374 151.419 12.1585 151.869 12.4179C151.852 12.6255 151.817 12.7984 151.8 12.8849C151.8 12.9022 151.8 12.9022 151.8 12.9022C151.8 12.9022 151.713 12.9887 151.367 13.0233C151.246 13.0406 151.108 13.0406 150.952 13.0406C150.278 13.0406 149.517 12.9368 148.842 12.8157C148.168 12.712 147.147 12.4871 147.147 12.4871C147.044 11.9337 147.13 11.3456 147.338 11.3629C147.58 11.4148 147.753 12.0029 148.479 12.4352ZM147.77 11.5705L148.185 11.1381C149.223 10.2042 149.967 9.99661 150.399 9.99661C151.177 9.99661 151.488 10.6019 151.558 10.7922C151.627 10.9651 151.679 11.1381 151.731 11.2938C151.316 11.1035 150.866 11.0343 150.399 11.0343C149.569 11.0343 148.687 11.2938 147.77 11.5705ZM154.93 64.8915C153.65 65.7563 152.457 66.1714 151.194 66.1714C150.018 66.1714 148.877 65.8254 147.666 65.445C147.338 65.3412 147.009 65.2374 146.663 65.1509C146.127 64.9953 145.556 64.9261 144.986 64.9261C143.602 64.9261 142.409 65.3758 141.63 65.7736C141.717 65.4795 141.993 64.3727 141.993 63.5252C143.014 62.9545 143.723 62.1416 144.069 61.0866C144.588 59.5127 145.003 56.7282 144.588 53.7188C145.401 53.6151 146.559 53.4421 147.718 53.2519C148.981 53.0443 150.018 52.8368 150.779 52.6465C151.143 52.56 151.437 52.4736 151.696 52.3871C151.661 52.9924 151.644 53.5978 151.644 54.2031C151.644 55.7078 151.783 56.832 152.094 57.8178C152.474 58.9939 153.114 60.0143 154.065 60.9482C155.587 62.4529 157.628 62.7815 159.427 62.9026C160.067 62.9545 161.831 63.1793 164.373 63.5598C164.823 63.629 165.186 64.0095 165.204 64.4764C165.273 65.7217 165.221 66.4654 165.152 66.8805L164.149 66.7421C163.318 65.8427 161.9 65.2547 160.517 65.2547C158.77 65.2547 157.455 66.1714 156.867 67.7279C156.556 67.7625 156.21 67.8144 155.864 67.9009C156.521 66.8978 156.573 65.9638 156.591 65.8427L156.677 63.6809L154.93 64.8915ZM137.549 65.0818C137.445 64.9953 137.341 64.8915 137.255 64.7877C137.237 64.7532 137.22 64.7359 137.203 64.7013C136.978 64.3381 137.047 63.9576 137.099 63.5598C137.151 63.162 137.151 62.7642 136.788 62.5048C136.649 62.401 136.494 62.3491 136.338 62.3491C136.234 62.3491 136.148 62.3664 136.061 62.401C135.819 62.4875 135.594 62.695 135.508 62.9717C135.456 63.1101 135.456 63.3004 135.456 63.5252C135.456 63.7154 135.473 63.923 135.473 64.1305C135.473 64.4937 135.439 64.8915 135.283 65.2374C135.266 65.272 135.248 65.3066 135.231 65.3412C135.023 65.6871 134.47 66.1195 133.899 66.1195C133.64 66.1195 133.38 66.033 133.156 65.8082L131.651 66.7248C131.651 66.7248 131.634 66.7248 131.634 66.7075C131.53 66.5519 131.461 66.3962 131.374 66.2578C131.201 65.8946 131.08 65.566 131.011 65.2374C130.734 63.7846 131.599 62.7296 133.121 62.3837C133.744 62.2454 134.245 61.9167 134.055 61.4152C133.934 61.0866 133.726 60.9655 133.415 60.9655C133.086 60.9655 132.619 61.0866 131.98 61.2249C131.772 61.2595 131.582 61.2941 131.392 61.3287C131.236 61.346 131.08 61.3633 130.942 61.3633C130.267 61.3633 129.835 61.0347 129.835 59.6857L128.538 59.9624C129.126 57.9043 130.319 57.1087 131.564 57.1087C132.844 57.1087 134.193 57.9561 135.023 59.1149L135.542 59.2879L136.459 59.5992L138.292 60.2218C140.074 58.7171 139.261 54.7565 139.261 54.7565C139.261 54.7565 135.784 52.8022 136.943 48.4611C136.943 48.4611 137.549 44.3794 144.986 44.3794C145.781 44.3794 146.646 44.4313 147.597 44.5351C148.168 44.6043 148.687 44.6734 149.154 44.7599C149.154 44.7599 149.154 44.7772 149.171 44.7772C148.998 45.175 148.946 45.6247 149.033 46.0571C149.154 46.7316 149.569 47.3023 150.174 47.6136C150.468 47.7693 150.797 47.8558 151.143 47.8558C151.523 47.8558 151.886 47.752 152.232 47.5617C152.232 47.752 152.215 47.9249 152.198 48.0979C152.059 49.0664 151.921 50.1041 151.834 51.1937C150.33 51.9547 143.36 52.8195 143.36 52.8195C144.034 56.1056 143.602 59.2187 143.083 60.7753C142.893 61.346 142.564 61.7957 142.149 62.1589C141.82 62.4529 141.44 62.6777 141.008 62.8507C140.921 63.9922 140.835 64.8396 140.627 65.5141C140.575 65.7563 140.489 65.9638 140.385 66.1368C139.866 67.0188 138.794 67.2264 137.825 67.2955L137.981 65.4623C137.929 65.3585 137.618 65.1336 137.549 65.0818ZM140.022 39.5541C140.316 39.0871 141.302 38.551 142.322 37.9629C142.443 37.8937 142.581 37.8246 142.72 37.7381C142.91 37.911 143.1 38.084 143.291 38.2569C143.758 38.672 144.242 39.0698 144.726 39.4503L144.743 39.4676L147.13 41.9581C147.753 42.6153 148.185 43.1169 148.479 43.532L145.003 43.2898C143.291 43.2898 141.907 43.4974 140.783 43.826C140.938 43.5838 141.06 43.3071 141.129 43.0304C141.405 41.716 140.765 40.488 140.022 39.5541ZM149.897 43.7914C149.69 43.3936 149.361 42.892 148.808 42.2175C148.946 42.304 149.102 42.3905 149.223 42.4597C150.053 42.9266 150.676 43.4974 151.143 44.12C151.506 44.6043 151.748 45.1231 151.938 45.6247C152.007 45.8149 152.059 46.0225 152.094 46.2127C151.886 46.5413 151.523 46.7489 151.143 46.7489C150.987 46.7489 150.831 46.7143 150.676 46.6278C150.105 46.3338 149.88 45.5728 150.278 44.9848C150.312 44.9329 150.347 44.881 150.399 44.8291C150.226 44.5351 150.105 44.2065 149.897 43.7914ZM133.778 12.833C134.47 13.3 135.127 13.8361 135.767 14.3723C136.805 15.2371 137.808 16.1537 138.898 16.9666C139.244 17.226 140.299 18.0216 141.129 18.6615C140.887 18.9209 140.662 19.1804 140.437 19.4571C139.832 20.2527 139.33 21.152 138.949 22.0859L136.995 20.2354C137.203 19.6992 137.272 19.0766 137.203 18.4367C137.203 18.4021 137.185 18.3675 137.185 18.3156L136.148 18.8172C136.182 19.5954 135.888 20.4083 135.179 20.7888C134.954 20.9099 134.764 20.9618 134.505 20.9618C134.505 20.9618 134.505 20.9618 134.487 20.9618L134.522 20.0105C134.176 20.0105 133.709 19.6473 133.709 19.1458C133.709 18.575 134.072 18.2637 134.522 18.1253V17.0185C133.657 17.1741 133.017 17.693 132.758 18.4021L131.616 18.4194C131.564 17.5546 131.98 16.7763 132.862 16.4823V15.3581C132.118 15.5138 131.634 15.877 131.34 16.2056C131.253 16.2921 131.184 16.3958 131.097 16.4996L130.233 16.5169C130.198 15.6867 130.613 14.943 131.392 14.6836V13.5594C130.907 13.6632 130.492 13.8534 130.129 14.1648H129.316C129.333 13.6286 129.645 13.1097 130.077 12.7811C130.458 12.5044 130.942 12.3488 131.426 12.2969C131.582 12.2796 131.737 12.2623 131.893 12.2623C132.101 12.2623 132.308 12.2796 132.498 12.3142C132.965 12.4006 133.398 12.5736 133.778 12.833ZM131.461 5.91495C132.118 4.79076 132.498 3.35526 132.516 1.86788H135.127C135.145 2.05813 135.162 2.23108 135.162 2.42132C135.162 5.27503 132.879 7.59258 130.06 7.59258H129.87C130.475 7.22938 131.011 6.67594 131.461 5.91495ZM119.544 5.91495C120.202 4.79076 120.582 3.35526 120.599 1.86788H124.145C124.162 3.35526 124.543 4.79076 125.2 5.91495C125.65 6.67594 126.186 7.24668 126.791 7.59258H124.422C123.816 6.96996 123.315 6.12249 122.986 5.11937H121.793C121.481 6.12249 120.98 6.96996 120.357 7.59258H117.936C118.558 7.22938 119.112 6.67594 119.544 5.91495ZM107.455 5.91495C108.112 4.79076 108.493 3.35526 108.51 1.86788H112.246C112.263 3.35526 112.644 4.79076 113.301 5.91495C113.75 6.67594 114.287 7.22938 114.892 7.59258H112.315C111.71 6.96996 111.208 6.12249 110.879 5.11937H109.686C109.375 6.12249 108.873 6.96996 108.251 7.59258H105.829C106.452 7.22938 107.005 6.67594 107.455 5.91495ZM95.6597 5.91495C96.3169 4.79076 96.6974 3.35526 96.7147 1.86788H100.139C100.156 3.35526 100.537 4.79076 101.194 5.91495C101.644 6.67594 102.18 7.24668 102.785 7.59258H100.364C99.7586 6.96996 99.2571 6.12249 98.9284 5.11937H97.7351C97.4238 6.12249 96.9222 6.96996 96.2996 7.59258H94.0339C94.6738 7.22938 95.2273 6.67594 95.6597 5.91495ZM85.6457 2.33485C85.6457 2.17919 85.6457 2.02354 85.663 1.85058H88.3438C88.3611 3.33797 88.7416 4.77347 89.3988 5.89766C89.8485 6.65864 90.3846 7.22938 90.99 7.57529H90.7305C87.9979 7.59258 85.6457 5.18855 85.6457 2.33485ZM81.616 16.9493C82.7056 16.1364 83.7087 15.2371 84.7464 14.355C85.3863 13.8188 86.0435 13.2827 86.7353 12.8157C87.1331 12.539 87.5828 12.3661 88.0671 12.2969C88.24 12.2623 88.4303 12.245 88.6205 12.245C88.7935 12.245 88.9664 12.2623 89.1567 12.2796C89.6236 12.3488 90.0906 12.4871 90.4538 12.7638C90.8862 13.0752 91.1975 13.594 91.2148 14.1475H90.4019C90.0387 13.8534 89.6063 13.6459 89.1394 13.5421V14.6663C89.935 14.9257 90.35 15.6694 90.2982 16.4996L89.4334 16.4823C89.3642 16.3785 89.2777 16.2921 89.1913 16.1883C88.8972 15.877 88.3957 15.5138 87.6693 15.3408V16.465C88.534 16.759 88.9491 17.5373 88.9145 18.4021L87.7731 18.3848C87.5136 17.6584 86.8737 17.1568 86.0089 17.0012V18.1081C86.4586 18.2464 86.8218 18.5577 86.8218 19.1285C86.8218 19.63 86.3721 19.9932 86.0089 19.9932L86.0435 20.9445C86.0435 20.9445 86.0435 20.9445 86.0262 20.9445C85.7841 20.9445 85.5766 20.8753 85.3517 20.7715C84.6426 20.391 84.3659 19.5608 84.3832 18.7999L83.3455 18.2983C83.3455 18.3329 83.3282 18.3675 83.3282 18.4194C83.2417 19.0593 83.3282 19.6819 83.5357 20.2181L81.5814 22.0859C81.2009 21.152 80.6993 20.2699 80.094 19.4571C79.8692 19.1804 79.6443 18.9036 79.4022 18.6615C80.2151 18.0043 81.2701 17.2087 81.616 16.9493ZM49.4815 67.7798C49.3259 66.7248 49.4988 62.9717 49.6199 60.8271C49.6718 59.9624 50.329 59.2533 51.1765 59.1322C52.145 58.9939 53.3902 58.8036 54.3069 58.6134C55.7597 58.3021 57.1606 57.6621 57.4892 56.6244C57.7659 55.7251 57.6103 55.6213 57.5238 54.7046C57.4546 53.9955 57.3681 53.2691 57.3162 52.56C57.3162 52.4563 57.299 52.3352 57.299 52.2314C57.2817 51.8164 57.2989 51.384 57.3508 50.9689C57.2644 51.0208 57.1779 51.0727 57.0914 51.1245C56.8147 51.2802 56.5207 51.384 56.2266 51.4705C55.898 51.5569 55.5694 51.5915 55.2235 51.5915C54.4971 51.5915 53.788 51.4013 53.1481 51.0035C51.9893 50.2944 51.3148 49.0664 51.3494 47.7174C51.4013 45.3134 52.7676 43.6184 54.082 41.9754C54.7047 41.1971 55.3619 40.3842 55.8462 39.5195C57.3854 36.7523 57.7486 33.7429 56.9185 30.5779C56.5553 29.1943 55.7251 27.949 54.843 26.6173C54.5144 26.1157 54.2031 25.6487 53.8918 25.1299C53.8918 25.1299 53.2 25.4412 52.7503 25.3374C52.6293 25.3028 52.5082 25.251 52.3698 25.1645C51.3148 24.5073 50.1906 21.8265 50.2425 18.6096C50.2771 16.0499 50.8824 13.9226 52.0758 12.1758C51.8164 12.9022 51.5915 13.6632 51.4532 14.4242C51.2975 15.2543 51.2456 16.1191 51.2975 16.9493C51.3494 17.7967 51.5224 18.6096 51.7991 19.3706C51.678 18.5577 51.678 17.7449 51.7818 16.9493C51.8856 16.1537 52.0931 15.3927 52.3871 14.6663C52.6465 14.0264 52.9579 13.4038 53.3211 12.8157C53.0789 14.3031 53.0789 15.8078 53.4767 17.6757C53.7188 18.8344 54.2204 19.9413 54.6528 20.9099C55.0506 21.7919 55.3446 22.501 55.4657 23.0891C55.604 23.729 55.5175 24.2132 55.0852 24.611C55.1543 24.7321 55.2408 24.8532 55.31 24.9742C55.5003 25.2683 55.7078 25.5796 55.9153 25.8909C56.8147 27.2572 57.7486 28.6581 58.1637 30.2493C59.0631 33.7083 58.648 37.1327 56.9703 40.1594C56.4342 41.1279 55.7424 41.9754 55.0852 42.8056C53.8572 44.3448 52.6811 45.7976 52.6293 47.7693C52.612 48.6686 53.0443 49.4469 53.8053 49.9139C54.6009 50.3982 55.5521 50.4327 56.365 50.035C56.3823 50.0177 56.4169 50.0177 56.4342 50.0004C57.0568 49.6718 57.6103 49.0491 57.9389 48.3227C57.9562 48.2881 57.9562 48.2535 57.9735 48.219C58.3713 47.0602 58.8555 45.9187 59.409 44.8291C61.0347 41.5776 63.0582 38.5337 64.3381 35.1092C65.445 32.169 64.9434 28.5889 64.9434 28.5889C63.8192 29.0386 62.1762 29.0905 62.1762 29.0905C62.2281 25.4239 54.3588 16.9147 59.1495 6.53758C59.4781 7.07373 59.9105 7.62717 60.5159 8.19791L60.9482 8.613V7.10832C58.4404 4.51404 59.5992 2.04083 60.5331 1.21066C61.2423 1.47009 62.0551 2.24837 62.6605 3.19961L63.7155 2.8537C63.456 2.42132 63.162 2.00624 62.8334 1.62575C62.9372 1.55657 63.041 1.50468 63.162 1.48739C63.2139 1.48739 63.2831 1.47009 63.3696 1.47009C64.9434 1.47009 70.8584 2.83641 71.4464 3.14772L71.9653 4.72158C73.5737 5.15396 75.0611 6.01872 76.1161 6.58946C75.9432 7.03914 75.4589 8.05955 74.4904 7.95578C74.4904 7.95578 75.4416 8.52652 75.2513 9.42587C74.94 10.0831 74.5422 10.7576 74.0407 11.3456L73.0722 10.3771C71.9307 9.3221 70.9275 8.94161 70.0974 8.94161C69.0078 8.94161 68.2468 9.63341 67.9355 10.429C67.4512 11.6397 67.5031 12.6082 67.6761 13.2308C67.8144 13.6978 68.1949 14.0783 69.0597 14.1475C69.2153 14.1647 69.3883 14.1648 69.5612 14.1648C71.3426 14.1648 73.6775 13.5248 73.6775 13.5248C74.0407 15.4619 74.2655 15.8424 71.4983 15.8424C70.8584 15.8424 70.0628 15.8251 69.077 15.7905L71.8442 17.053C72.1555 17.0357 72.4495 17.0185 72.7435 17.0185C74.7844 17.0185 76.4101 17.6238 77.69 18.6096C77.984 18.8344 78.2607 19.0766 78.5201 19.336C79.506 20.3391 80.2151 21.5844 80.7166 22.8988C80.855 23.2793 80.9761 23.6598 81.0798 24.0403C81.616 26.0465 81.6852 28.1393 81.4084 29.8169C81.2009 29.5575 80.9933 29.3153 80.7512 29.0732L80.6301 28.9521C79.8 28.1393 78.3991 26.7383 76.7214 25.8736C76.0988 25.3201 75.5108 24.7667 74.94 24.1614C73.7121 22.8642 72.6225 21.4287 71.8096 19.803C72.3112 21.5498 73.1586 23.2274 74.1618 24.7667C74.5595 25.372 74.9746 25.9601 75.407 26.5308C75.7875 26.6865 76.1334 26.8594 76.4793 27.067C77.9494 27.8971 79.1946 29.177 79.921 29.9034C80.3534 30.3184 80.6993 30.7854 81.0279 31.2697C81.2874 31.6502 81.5122 32.0307 81.7543 32.4285C81.9273 32.7225 82.1175 33.0338 82.2905 33.3278C83.0688 34.5904 84.1065 35.8356 84.6945 35.8356C84.9021 35.8356 85.0577 35.68 85.1269 35.334C85.4382 33.7602 86.424 33.0684 87.4963 33.0684C87.9979 33.0684 88.5168 33.224 88.9837 33.5008L87.9114 34.5039C88.5513 35.2649 87.8768 36.4236 87.185 36.8041C86.4413 37.2019 86.8391 37.8937 87.3753 37.8937C87.5482 37.8937 87.7212 37.8246 87.8941 37.6689C88.3438 37.2538 88.9318 37.0463 89.5026 37.0463C90.7132 37.0463 91.9066 37.9802 91.7509 39.9173L90.817 39.3984C90.5057 40.4188 89.7793 40.8512 89.1048 40.8512C88.7935 40.8512 88.4995 40.7647 88.2746 40.5918C87.7558 40.2113 87.2196 39.8135 86.8564 39.8135C86.7353 39.8135 86.6143 39.8654 86.5451 39.9692C86.2684 40.3497 86.5624 40.7301 87.5482 41.2144C89.295 42.0792 89.5718 44.6216 86.9948 45.1058L86.718 43.532C86.597 43.5666 86.4759 43.5838 86.3549 43.5838C85.6112 43.5838 85.0923 42.9266 85.0058 42.4424C84.8848 41.7333 84.9194 41.3009 84.8848 40.8512C84.8675 40.4534 84.608 40.2805 84.3486 40.2805C84.0373 40.2805 83.726 40.5053 83.6914 40.9031C83.6395 41.6468 83.6568 42.6153 82.3424 42.8402L81.9273 44.1719C80.682 43.7395 79.4368 42.304 81.7025 39.8827C81.737 38.6547 80.4399 37.9456 78.6239 36.9252C78.3126 36.7523 77.984 36.562 77.6554 36.3718C77.4824 36.268 77.3095 36.1642 77.1365 36.0604C76.7733 35.8356 75.3724 34.8152 74.1445 33.7602L73.0722 34.3309C73.297 34.5212 73.5391 34.7287 73.8158 34.9708C74.9227 35.8875 76.1161 36.7868 76.5658 37.0463C76.6523 37.0982 76.7387 37.15 76.8252 37.2019C75.6491 38.2915 74.3866 39.2428 73.2451 40.0037C72.7781 40.3151 72.3285 40.6091 71.9134 40.8685C71.4983 41.1279 71.1005 41.3528 70.7719 41.543C69.8552 42.0619 69.1289 42.7018 68.5754 43.4282C68.2122 43.8952 67.9355 44.3967 67.7279 44.8983C67.5204 45.3825 67.382 45.8841 67.3129 46.3857C67.2783 46.5586 67.261 46.7143 67.2437 46.8872C67.2091 47.3542 67.2264 47.8039 67.2783 48.2363C67.3475 48.7032 67.3993 49.1702 67.4685 49.6372C67.555 50.3463 67.6242 51.0381 67.6761 51.7472C67.7452 52.5773 67.7798 53.3902 67.7798 54.2031C67.7798 56.6936 67.3993 58.475 65.6698 60.1699C64.4246 61.3979 62.6777 61.6919 60.9828 61.813C60.1008 61.8649 57.6276 62.2281 55.9499 62.4875C54.9814 62.6258 54.255 63.4387 54.2031 64.4245C54.1339 65.7563 54.1512 67.5031 54.6182 68.0911L56.9012 67.7798C57.4373 66.9842 58.7172 66.3616 59.9624 66.3616C60.9309 66.3616 61.8822 66.7421 62.4183 67.7452C62.574 68.0392 62.7123 68.3851 62.7815 68.8002C62.7988 68.9213 62.8161 69.0424 62.8334 69.1807L62.107 68.8867L61.6919 68.7137C61.6746 68.8175 61.6573 68.904 61.64 68.9905C61.3979 69.9936 60.8791 70.3568 60.2564 70.3568C59.9624 70.3568 59.6511 70.2703 59.3225 70.1492C59.2879 70.1319 59.2533 70.1147 59.2014 70.0974C58.6134 69.8552 58.1983 69.665 57.887 69.665C57.6794 69.665 57.5238 69.7515 57.3854 69.9936C57.1952 70.3222 57.3854 70.5989 57.714 70.8238C57.8178 70.8929 57.9562 70.9621 58.0772 71.014C59.824 71.7404 60.3256 73.4353 58.7172 75.1994L57.5065 74.1271C57.3162 74.2482 57.126 74.3001 56.953 74.3001C56.365 74.3001 55.8289 73.7639 55.6905 73.3661C55.4657 72.7608 55.7078 72.069 55.7943 71.5674C55.8116 71.4291 55.8289 71.2907 55.8116 71.187C55.777 70.9102 55.5867 70.6854 55.3619 70.5643C55.2581 70.5124 55.1543 70.4779 55.0333 70.4779C54.9295 70.4779 54.8257 70.4951 54.722 70.547C54.6182 70.5989 54.5317 70.6681 54.4625 70.7546C54.3069 70.9448 54.2723 71.2043 54.2723 71.4637C54.2723 71.602 54.2723 71.7577 54.255 71.8961C54.2204 72.1382 54.1512 72.363 53.9437 72.5533C53.8399 72.6397 53.7361 72.7089 53.6324 72.7781C53.5632 72.8127 53.2346 72.9684 53.2173 73.0375L53.0616 74.7325C51.851 74.4385 50.5192 73.8504 50.8478 71.9652C50.8997 71.6539 51.0035 71.2907 51.1765 70.8929C51.2283 70.7546 51.2975 70.5989 51.384 70.4433C50.3463 69.9244 49.6545 68.9386 49.4815 67.7798ZM70.1147 12.0374C70.7373 12.0374 71.3772 12.1931 72.0517 12.4352C72.7781 11.9856 72.9338 11.4148 73.2105 11.3802C73.4181 11.3629 73.5045 11.951 73.4008 12.5044C73.4008 12.5044 72.3803 12.7293 71.7058 12.833C71.0313 12.9541 70.2703 13.0579 69.5958 13.0579C69.4402 13.0579 69.3018 13.0579 69.1807 13.0406C68.8521 13.006 68.7484 12.9368 68.7484 12.9195C68.7484 12.9195 68.7484 12.9195 68.7484 12.9022C68.7138 12.7984 68.6792 12.6428 68.6792 12.4352C69.1116 12.1585 69.5958 12.0374 70.1147 12.0374ZM68.7829 11.2938C68.8175 11.1381 68.8867 10.9651 68.9559 10.7922C69.0251 10.6019 69.3364 9.99661 70.1147 9.99661C70.5644 9.99661 71.308 10.1869 72.3285 11.1381L72.7435 11.5705C71.8269 11.2765 70.9275 11.0343 70.0974 11.0343C69.6477 11.0343 69.2153 11.1208 68.7829 11.2938ZM82.2213 60.2218L84.0719 59.5992L84.9885 59.2879L85.5074 59.1149C86.3376 57.9388 87.6866 57.1087 88.9664 57.1087C90.2117 57.1087 91.405 57.9043 91.9931 59.9624L90.6959 59.6857C90.6959 61.0174 90.2636 61.3633 89.589 61.3633C89.4507 61.3633 89.295 61.346 89.1394 61.3287C88.9491 61.2941 88.7589 61.2595 88.5513 61.2249C87.9114 61.1039 87.4444 60.9655 87.1158 60.9655C86.8045 60.9655 86.597 61.0866 86.4759 61.4152C86.303 61.9167 86.7872 62.2281 87.4099 62.3837C88.9318 62.7296 89.7966 63.8019 89.5199 65.2374C89.4507 65.566 89.3469 65.8946 89.1567 66.2578C89.0875 66.4135 89.001 66.5519 88.8972 66.7075C88.8972 66.7075 88.8799 66.7075 88.8799 66.7248L87.3753 65.8082C87.1504 66.033 86.891 66.1195 86.6316 66.1195C86.0608 66.1195 85.5074 65.7044 85.2998 65.3412C85.2825 65.3066 85.2653 65.272 85.248 65.2374C85.075 64.8915 85.0577 64.4937 85.0577 64.1305C85.0577 63.923 85.075 63.7154 85.075 63.5252C85.075 63.3004 85.075 63.1101 85.0231 62.9717C84.9366 62.695 84.7118 62.5048 84.4697 62.401C84.3832 62.3664 84.2794 62.3491 84.193 62.3491C84.0373 62.3491 83.8816 62.401 83.7433 62.5048C83.3801 62.7642 83.3801 63.162 83.432 63.5598C83.4839 63.9749 83.553 64.3554 83.3282 64.7013C83.3109 64.7359 83.2936 64.7532 83.2763 64.7877C83.1898 64.8915 83.0861 64.9953 82.9823 65.0818C82.9131 65.1336 82.6018 65.3585 82.6018 65.445L82.7575 67.2782C81.7889 67.2091 80.7166 67.0015 80.1978 66.1195C80.094 65.9465 80.0075 65.7217 79.9556 65.4968C79.7654 64.8223 79.6789 63.9922 79.5751 62.8334C79.1428 62.6604 78.7623 62.4356 78.4337 62.1416C78.0186 61.7784 77.69 61.3287 77.4997 60.758C76.9809 59.2014 76.5312 56.0883 77.223 52.8022C77.223 52.8022 70.253 51.9374 68.7484 51.1764C68.6446 50.0868 68.5235 49.0318 68.3852 48.0806C68.3679 47.9076 68.3506 47.7347 68.3506 47.5444C68.6792 47.7347 69.0597 47.8385 69.4402 47.8385C69.7861 47.8385 70.0974 47.752 70.4087 47.5963C71.014 47.285 71.4291 46.7143 71.5502 46.0398C71.6367 45.6074 71.5848 45.1577 71.4118 44.7599C71.4118 44.7599 71.4118 44.7426 71.4291 44.7426C71.8961 44.6561 72.4149 44.587 72.9857 44.5178C73.9369 44.414 74.8017 44.3621 75.5972 44.3621C83.0342 44.3621 83.6395 48.4438 83.6395 48.4438C84.7983 52.7849 81.322 54.7392 81.322 54.7392C81.322 54.7392 80.4572 58.7171 82.2213 60.2218ZM63.9057 65.8427C63.9057 65.9638 63.9749 66.8978 64.6321 67.9009C64.2689 67.8144 63.9403 67.7625 63.629 67.7279C63.041 66.1714 61.7265 65.2547 59.9797 65.2547C58.5961 65.2547 57.1779 65.8427 56.3477 66.7421L55.3446 66.8805C55.2754 66.4481 55.2235 65.7044 55.2927 64.4764C55.31 64.0095 55.6732 63.629 56.1229 63.5598C58.6653 63.1793 60.4294 62.9372 61.0693 62.9026C62.868 62.7815 64.9088 62.4529 66.4308 60.9482C67.382 60.0143 68.0393 58.9766 68.4025 57.8178C68.7138 56.832 68.8521 55.7251 68.8521 54.2031C68.8521 53.5978 68.8348 52.9924 68.8002 52.3871C69.0597 52.4736 69.371 52.56 69.7169 52.6465C70.4779 52.8368 71.5156 53.0443 72.7781 53.2519C73.9369 53.4421 75.0957 53.6151 75.9086 53.7188C75.4935 56.7455 75.8913 59.5127 76.4274 61.0866C76.7733 62.1243 77.4824 62.9545 78.5028 63.5252C78.5028 64.6321 78.8487 65.739 78.8487 65.7736C78.0705 65.3758 76.8771 64.9261 75.4935 64.9261C74.9227 64.9261 74.352 65.0126 73.8158 65.1509C73.4699 65.2547 73.1413 65.3585 72.8127 65.445C71.6021 65.8082 70.4779 66.1714 69.2845 66.1714C68.022 66.1714 66.8286 65.7736 65.5488 64.8915L63.7673 63.6809L63.9057 65.8427ZM70.2703 45.0021C70.6508 45.5901 70.4433 46.3511 69.8725 46.6451C69.7169 46.7316 69.5612 46.7662 69.4056 46.7662C69.0251 46.7662 68.6619 46.5586 68.4543 46.23C68.4889 46.0398 68.5581 45.8322 68.61 45.642C68.7829 45.1231 69.0424 44.6216 69.4056 44.1373C69.8725 43.5147 70.4952 42.9439 71.3253 42.477C71.4464 42.4078 71.5848 42.3213 71.7404 42.2348C71.187 42.9093 70.8584 43.3936 70.6508 43.8087C70.426 44.2238 70.3222 44.5524 70.1666 44.8637C70.1839 44.8983 70.2357 44.9502 70.2703 45.0021ZM77.2403 38.2742C77.4305 38.1013 77.6208 37.9283 77.811 37.7554C77.9494 37.8246 78.0705 37.911 78.2088 37.9802C79.2292 38.551 80.1978 39.1044 80.5091 39.5714C79.7654 40.488 79.1082 41.7333 79.4368 43.0304C79.506 43.3071 79.627 43.5838 79.7827 43.826C78.6585 43.4974 77.2749 43.2898 75.5627 43.2898L72.0863 43.532C72.3803 43.1169 72.7954 42.6153 73.4354 41.9581L75.8221 39.4676L75.8394 39.4503C76.2891 39.0871 76.7733 38.6893 77.2403 38.2742ZM61.813 75.2686C60.0316 77.1711 57.6276 78.0531 55.1543 78.0531C50.917 78.0531 46.5413 75.4416 45.0021 70.8411C45.0021 70.8411 47.0948 71.5502 49.7928 71.8615C49.6718 72.6052 49.741 73.2624 50.0177 73.8504C50.6057 75.0957 51.9029 75.5453 52.8195 75.7875L54.0475 76.0988L54.1685 74.8362L54.2896 73.6602C54.3934 73.591 54.5144 73.5045 54.6182 73.418C54.6355 73.5218 54.6701 73.6256 54.7047 73.7293C54.9987 74.5422 55.9326 75.3724 56.9876 75.3724C57.0914 75.3724 57.1952 75.3724 57.299 75.3551L58.0426 76.0123L58.8382 76.7214L59.5646 75.9258C60.585 74.8189 61.0001 73.5737 60.7407 72.4322C60.6542 72.069 60.5159 71.7231 60.3083 71.4118C60.9482 71.4118 61.519 71.1697 61.9514 70.72C62.107 70.547 62.2627 70.3568 62.3664 70.132L62.4356 70.1492L64.1133 70.8411L63.923 69.0424C63.923 68.9732 63.9057 68.9213 63.9057 68.8521C64.6494 68.9732 65.5488 69.2499 66.6902 69.6823C66.8459 69.7688 67.0188 69.8379 67.1745 69.8898C67.261 69.9244 67.3302 69.959 67.4166 69.9763C67.0534 70.1838 66.6902 70.3914 66.3616 70.5989C64.7186 71.6539 63.5944 72.7954 63.0064 73.9888C62.6432 74.4039 62.2454 74.8189 61.813 75.2686ZM74.6287 71.5156C73.4354 72.5187 71.775 72.7262 70.2703 72.83C65.7044 73.1759 63.8365 77.2922 63.8365 77.2922C63.456 76.3409 63.5252 75.4416 63.8884 74.6287C64.4419 73.3834 65.6871 72.3111 67.0015 71.481C69.198 70.0974 71.6194 69.3191 71.6194 69.3191C71.187 69.3537 70.7892 69.371 70.4087 69.371C69.4575 69.371 68.6792 69.2499 68.0393 69.0596C67.6761 68.9559 67.3474 68.8175 67.0707 68.6792C65.0472 67.6414 64.978 65.7909 64.978 65.7909C66.5865 66.8805 68.0047 67.261 69.3191 67.261C71.014 67.261 72.5533 66.6556 74.1272 66.2059C74.5941 66.0676 75.0611 66.0157 75.5108 66.0157C76.8079 66.0157 77.9321 66.5 78.572 66.8459C77.7591 67.3474 77.0673 67.9873 76.5312 68.8002C76.3236 69.1288 76.1334 69.4574 75.9777 69.7687C75.4762 70.4779 75.1476 71.1005 74.6287 71.5156ZM82.2213 69.9417C80.6301 70.3049 79.1428 71.2215 78.6412 72.8646C78.3472 73.8158 78.3991 74.8535 78.451 75.8394C78.451 75.8394 75.1995 73.9888 76.929 70.3395C77.0673 70.0455 77.2576 69.7169 77.4651 69.3883C77.8802 68.7483 78.3818 68.2987 78.8487 67.9528C79.0217 67.849 79.1946 67.7625 79.3849 67.6587L79.8692 67.4166C80.6993 68.1257 81.8235 68.2987 82.6537 68.3505L83.9162 68.437L83.8125 67.1745L83.7087 65.86C83.8471 65.739 83.9854 65.6006 84.1238 65.4277C84.1238 65.4104 84.1411 65.4104 84.1411 65.3931C84.193 65.5487 84.2621 65.7044 84.3486 65.8427C84.7291 66.5 85.6285 67.1572 86.6143 67.1572C86.8737 67.1572 87.1158 67.1053 87.358 67.0188L87.9287 67.3647C87.8941 67.3993 87.8422 67.4339 87.8076 67.4685C85.9571 69.2153 84.5907 69.4056 82.2213 69.9417ZM131.288 75.9604C131.288 75.9604 132.222 71.8269 130.233 70.5124C127.05 68.437 125.355 70.2184 121.793 67.5031C121.758 67.4512 121.706 67.4166 121.672 67.3647C119.994 65.6698 118.143 64.5975 116.466 64.0268C115.307 64.217 114.027 64.3554 112.609 64.4245C112.886 64.4418 113.162 64.4591 113.456 64.4937C113.958 64.5456 114.494 64.6321 115.048 64.7532C115.895 64.9434 116.794 65.2374 117.694 65.6698C118.783 66.2059 119.873 67.0707 120.893 68.1084C120.963 68.1776 121.014 68.2295 121.066 68.2987C123.28 70.7027 122.692 73.0548 122.692 73.0548C122.692 73.0548 119.856 69.2845 115.618 69.2845C113.595 69.2845 111.848 69.959 110.949 70.4087L110.291 70.7546L109.634 70.4087C108.735 69.9763 106.988 69.2845 104.964 69.2845C100.727 69.2845 97.8907 73.0548 97.8907 73.0548C97.8907 73.0548 97.2854 70.7027 99.5165 68.2987C99.5684 68.2295 99.6376 68.1776 99.6894 68.1084C100.71 67.0707 101.799 66.1886 102.889 65.6698C103.788 65.2374 104.688 64.9434 105.535 64.7532C106.089 64.6321 106.625 64.5456 107.126 64.4937C107.42 64.4591 107.714 64.4418 107.991 64.4245C106.573 64.3554 105.293 64.217 104.117 64.0268C102.439 64.5975 100.589 65.6525 98.9111 67.3647C98.8593 67.4166 98.8247 67.4512 98.7901 67.5031C95.2273 70.2184 93.5324 68.437 90.35 70.5124C88.3611 71.8096 89.295 75.9604 89.295 75.9604C89.295 75.9604 85.0923 72.7781 88.8972 68.5754C89.6928 67.6933 90.6614 66.9669 91.3705 66.4827C91.9585 66.0849 92.3736 65.86 92.3736 65.86C92.3736 65.86 92.0277 65.8255 91.578 65.739C91.3359 65.7044 91.0418 65.6352 90.7305 65.566C90.6786 65.5487 90.6095 65.5314 90.5403 65.5141C90.6959 64.7704 90.6441 64.044 90.3846 63.4041C90.2809 63.1447 90.1252 62.8853 89.9522 62.6604C91.5953 63.1101 93.6188 63.456 95.9191 63.456C96.8011 63.456 97.7178 63.2658 98.6863 63.162C99.0149 63.1274 99.3781 63.1101 99.7413 63.1101C99.8624 63.1101 99.9835 63.1101 100.105 63.1274C99.2052 62.8507 98.4096 62.5394 97.6832 62.2281C97.0952 62.3145 96.5071 62.401 95.9191 62.401C94.1031 62.401 92.4773 62.1762 91.0764 61.8476C91.3359 61.5881 91.4915 61.2941 91.5953 60.9655L91.7509 61.0001L93.5151 61.3806L93.0135 59.6338C92.0796 56.3477 89.8658 56.0018 88.9491 56.0018C87.479 56.0018 85.8879 56.8493 84.8329 58.181L82.5845 58.942C82.0829 58.0253 82.1175 56.3996 82.2559 55.3792C82.6537 55.0851 83.2244 54.5836 83.7433 53.8399C84.5389 52.7157 85.3344 50.8305 84.6426 48.2017C84.5734 47.8558 84.2102 46.524 82.792 45.348L83.0515 44.5005L83.2763 43.7568C83.6222 43.6184 83.8989 43.4109 84.1065 43.1861C84.4178 43.826 85.0231 44.414 85.7841 44.6043L85.9052 45.2615L86.0954 46.403L87.2196 46.1954C88.7762 45.9014 89.8139 44.9329 90.0041 43.6184C90.0906 43.0304 89.9868 42.4251 89.7274 41.8716C90.3154 41.7333 90.8516 41.4047 91.2494 40.9031L92.7195 41.7333L92.8578 39.9692C92.9789 38.4299 92.4255 37.4614 91.9412 36.9425C91.3186 36.268 90.4192 35.8875 89.4853 35.8875C89.3815 35.8875 89.295 35.8875 89.1913 35.9048C89.2086 35.8183 89.2431 35.7318 89.2604 35.6454C89.3123 35.3513 89.3123 35.0573 89.2604 34.7633L89.762 34.2963L90.8689 33.2586L89.5718 32.4803C88.9145 32.0826 88.2054 31.875 87.4963 31.875C86.3203 31.875 84.9712 32.4803 84.2967 34.1061C84.02 33.7775 83.6568 33.3105 83.259 32.6706C83.1034 32.4112 82.9477 32.1517 82.792 31.8923C82.6191 31.5983 82.4288 31.287 82.2386 30.993V30.9757C82.8093 28.8311 82.792 25.8909 81.9446 23.1582L84.0719 21.1347C84.2794 21.3768 84.5389 21.5671 84.8156 21.7054C85.2134 21.913 85.5766 22.0168 85.9917 22.0168H86.0089L87.1331 21.9995V20.6159C87.1677 20.5813 87.2196 20.5467 87.2542 20.5121C87.5655 20.2181 87.7558 19.8549 87.8249 19.4398L88.8627 19.4571L89.9004 19.4744L89.9522 18.4367C89.9695 18.1253 89.935 17.8313 89.8831 17.5373H90.2636L91.3013 17.5546L91.3532 16.5169C91.3705 16.0499 91.3013 15.6003 91.1456 15.2025H91.1802H92.2871L92.2525 14.0956C92.2352 13.2308 91.7855 12.4006 91.0591 11.8818C90.4192 11.4148 89.6928 11.2419 89.1221 11.19V8.66488H131.392V11.1727C130.821 11.2246 130.06 11.3975 129.403 11.8818C128.676 12.4179 128.226 13.2481 128.209 14.0956L128.175 15.2025H129.281H129.316C129.16 15.6003 129.074 16.0499 129.109 16.5169L129.16 17.5546L130.198 17.5373H130.579C130.509 17.814 130.492 18.1253 130.509 18.4367L130.561 19.4744L131.599 19.4571L132.637 19.4398C132.706 19.8376 132.896 20.2181 133.207 20.5121C133.242 20.5467 133.294 20.5813 133.329 20.6159V21.9995L134.453 22.0168H134.47C134.885 22.0168 135.248 21.913 135.646 21.7054C135.923 21.5498 136.182 21.3595 136.39 21.1347L138.517 23.1582C137.67 25.8909 137.635 28.8311 138.223 30.9757V30.993C138.033 31.287 137.843 31.5983 137.67 31.8923C137.514 32.1517 137.358 32.4112 137.203 32.6706C136.822 33.2932 136.442 33.7948 136.165 34.1234C135.49 32.4976 134.141 31.8923 132.965 31.8923C132.256 31.8923 131.547 32.0998 130.89 32.4976L129.593 33.2759L130.7 34.3136L131.201 34.7806C131.149 35.0573 131.149 35.3513 131.201 35.6627C131.219 35.7491 131.236 35.8356 131.27 35.9221C131.167 35.9221 131.08 35.9048 130.976 35.9048C130.025 35.9048 129.126 36.2853 128.52 36.9598C128.036 37.4959 127.483 38.4472 127.604 39.9865L127.742 41.7506L129.212 40.9204C129.61 41.4047 130.146 41.7333 130.734 41.8889C130.475 42.4424 130.371 43.0304 130.458 43.6357C130.648 44.9675 131.686 45.936 133.242 46.2127L134.366 46.4203L134.557 45.2788L134.678 44.6216C135.456 44.414 136.061 43.8433 136.355 43.2034C136.563 43.4282 136.839 43.6184 137.185 43.7741L137.376 44.3967L137.41 44.5178L137.67 45.3653C136.251 46.5586 135.888 47.8731 135.819 48.219C135.127 50.8478 135.923 52.733 136.718 53.8572C137.237 54.6009 137.808 55.1024 138.206 55.3965C138.344 56.4169 138.379 58.0426 137.877 58.9593L135.629 58.1983C134.557 56.8665 132.983 56.0191 131.513 56.0191C130.596 56.0191 128.382 56.365 127.448 59.6511L126.947 61.3979L128.711 61.0174L128.866 60.9828C128.97 61.2941 129.126 61.6054 129.385 61.8649C127.984 62.1762 126.359 62.4183 124.543 62.4183C123.955 62.4183 123.367 62.3318 122.778 62.2453C122.052 62.5567 121.257 62.868 120.357 63.1447C120.478 63.1447 120.582 63.1447 120.703 63.1447C121.066 63.1447 121.429 63.162 121.758 63.1966C122.727 63.3176 123.643 63.4906 124.525 63.4906C126.826 63.4906 128.849 63.1447 130.492 62.695C130.319 62.9199 130.164 63.162 130.06 63.4387C129.8 64.0786 129.748 64.805 129.904 65.5487C129.835 65.566 129.783 65.5833 129.714 65.6006C129.403 65.6698 129.109 65.739 128.866 65.7736C128.399 65.86 128.123 65.8773 128.123 65.8773C128.123 65.8773 128.538 66.1022 129.126 66.5C129.835 66.9842 130.786 67.7106 131.599 68.5927C135.49 72.7781 131.288 75.9604 131.288 75.9604ZM142.08 75.8394C142.132 74.8535 142.166 73.8158 141.89 72.8646C141.388 71.2215 139.901 70.3222 138.31 69.9417C135.94 69.3883 134.574 69.2153 132.723 67.5031C132.689 67.4685 132.637 67.4339 132.602 67.3993L133.173 67.0534C133.398 67.1399 133.657 67.1918 133.917 67.1918C134.92 67.1918 135.819 66.5346 136.182 65.8773C136.269 65.7217 136.338 65.5833 136.39 65.4277C136.39 65.445 136.407 65.445 136.407 65.4623C136.545 65.6352 136.684 65.7736 136.822 65.8946L136.718 67.2091L136.615 68.4716L137.877 68.3851C138.707 68.3333 139.814 68.1603 140.662 67.4512L141.146 67.6933C141.336 67.7971 141.509 67.8836 141.682 67.9873C142.166 68.3333 142.651 68.7829 143.066 69.4229C143.291 69.7515 143.464 70.0628 143.602 70.3741C145.331 73.9888 142.08 75.8394 142.08 75.8394ZM156.66 77.3094C156.66 77.3094 154.809 73.1932 150.226 72.8473C148.721 72.7262 147.078 72.5187 145.868 71.5329C145.349 71.1005 145.02 70.4779 144.501 69.786C144.346 69.4574 144.155 69.1461 143.948 68.8175C143.412 68.0046 142.737 67.3474 141.907 66.8632C142.547 66.5173 143.654 66.033 144.968 66.033C145.418 66.033 145.868 66.0849 146.352 66.2232C147.943 66.6729 149.465 67.2782 151.16 67.2782C152.474 67.2782 153.893 66.915 155.501 65.8082C155.501 65.8082 155.415 67.6587 153.408 68.6964C153.132 68.8348 152.803 68.9732 152.44 69.0769C151.8 69.2672 151.004 69.3883 150.07 69.3883C149.69 69.3883 149.292 69.371 148.86 69.3364C148.86 69.3364 151.281 70.1147 153.477 71.4983C154.809 72.3457 156.037 73.4007 156.591 74.646C156.971 75.4589 157.058 76.3409 156.66 77.3094ZM165.377 78.0531C162.903 78.0531 160.482 77.1711 158.718 75.2686C158.285 74.8189 157.905 74.3866 157.525 74.0061C156.936 72.7954 155.812 71.6712 154.169 70.6162C153.841 70.4087 153.495 70.2011 153.114 69.9936C153.201 69.959 153.27 69.9244 153.356 69.9071C153.529 69.8379 153.685 69.7688 153.841 69.6996C154.982 69.2499 155.881 68.9905 156.625 68.8694C156.625 68.9386 156.608 68.9905 156.608 69.0596L156.418 70.8583L158.095 70.1665L158.164 70.1492C158.286 70.3741 158.424 70.5643 158.58 70.7373C159.012 71.187 159.583 71.4291 160.223 71.4291C160.015 71.7404 159.877 72.0863 159.79 72.4495C159.531 73.591 159.963 74.8362 160.966 75.9431L161.693 76.7387L162.488 76.0296L163.232 75.3724C163.336 75.3897 163.439 75.3897 163.543 75.3897C164.598 75.3897 165.532 74.5595 165.826 73.7466C165.861 73.6429 165.895 73.5391 165.913 73.4353C166.034 73.5218 166.138 73.6083 166.241 73.6775L166.362 74.8535L166.483 76.1161L167.711 75.8048C168.628 75.5799 169.925 75.113 170.513 73.8677C170.79 73.2797 170.859 72.6225 170.738 71.8788C173.419 71.5674 175.529 70.8583 175.529 70.8583C173.972 75.4589 169.597 78.0531 165.377 78.0531ZM71.2216 4.98101C69.6477 5.41339 67.6588 4.99831 67.6588 4.99831C68.8694 6.19167 69.2672 6.91807 69.2672 6.91807C70.8584 7.00455 71.2216 5.96684 71.2216 4.98101ZM149.309 4.98101C149.309 5.96684 149.673 7.00455 151.264 6.93537C151.264 6.93537 151.679 6.20897 152.872 5.0156C152.872 5.0156 150.883 5.41339 149.309 4.98101ZM150.261 26.2887C150.537 25.8217 150.814 25.3547 151.091 24.8878C151.54 24.1268 151.955 23.3139 152.319 22.4837C152.665 21.6536 152.959 20.8234 153.218 19.9759C153.495 19.1458 153.737 18.2983 153.979 17.4508C153.599 18.2464 153.218 19.0247 152.803 19.803C152.405 20.5813 151.99 21.3423 151.54 22.0686C151.073 22.795 150.572 23.4696 150.018 24.1268C149.534 24.7148 149.015 25.3201 148.514 25.9082C149.084 25.9774 149.673 26.0811 150.261 26.2887ZM68.2122 22.4837C68.5581 23.3139 68.9905 24.1268 69.4402 24.8878C69.7169 25.3547 69.9936 25.8217 70.2703 26.2887C70.8584 26.0811 71.4464 25.9601 72.0171 25.9255C71.5156 25.3374 70.9967 24.7321 70.5125 24.1441C69.959 23.4696 69.4575 22.795 68.9905 22.0859C68.5408 21.3595 68.1257 20.5986 67.7279 19.8203C67.3302 19.042 66.9497 18.2464 66.5519 17.4681C66.794 18.3156 67.0534 19.1458 67.3129 19.9932C67.5723 20.8234 67.8663 21.6536 68.2122 22.4837ZM67.9528 27.4993C66.6211 25.5796 65.3412 23.6252 64.2689 21.5671C63.6809 20.4429 63.162 19.2841 62.7469 18.0908C62.3145 16.8974 61.9686 15.6694 61.6919 14.4242C61.8303 15.704 62.0205 16.9666 62.3145 18.2291C62.6086 19.4917 63.0064 20.7196 63.4733 21.9303C63.9403 23.1409 64.4764 24.317 65.0299 25.4758C65.4796 26.3924 65.9465 27.2918 66.4135 28.1911C66.8632 28.0528 67.382 27.8279 67.9528 27.4993ZM154.083 28.1911C154.567 27.2918 155.034 26.3924 155.466 25.4758C156.037 24.317 156.573 23.1409 157.023 21.9303C157.49 20.7196 157.87 19.4744 158.182 18.2291C158.476 16.9666 158.683 15.704 158.804 14.4242C158.528 15.6694 158.182 16.8974 157.749 18.0908C157.317 19.2841 156.798 20.4429 156.227 21.5671C155.155 23.6252 153.875 25.5796 152.544 27.4993C153.149 27.8279 153.65 28.0528 154.083 28.1911Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M128.469 14.1474H128.244H92.2871H92.1314L91.6298 15.2025H128.745L128.469 14.1474ZM133.38 20.5467V33.0511C133.761 33.1203 134.124 33.2759 134.435 33.5353V20.7542L133.38 20.5467ZM133.761 43.5147L133.484 45.0885C133.45 45.0885 133.415 45.0712 133.38 45.0712V47.2504C133.38 50.1733 132.516 52.8368 130.838 55.137C130.423 55.6905 129.973 56.2266 129.472 56.7455L88.3265 15.5657C88.1362 15.4792 87.9114 15.3927 87.652 15.3408V16.465C88.5167 16.759 88.9318 17.5373 88.8972 18.4021L87.7557 18.3848C87.5136 17.693 86.9083 17.2087 86.0954 17.0184V18.1426C86.4932 18.2983 86.7872 18.6096 86.7872 19.1285C86.7872 19.5781 86.424 19.924 86.0954 19.9932V33.4489C86.5105 33.103 87.012 32.9819 87.5309 32.9819C88.0324 32.9819 88.534 33.1721 89.001 33.4489L87.9287 34.452C88.5686 35.213 87.8941 36.3717 87.2023 36.7522C86.4586 37.15 86.8564 37.8418 87.3925 37.8418C87.5655 37.8418 87.7384 37.7727 87.9114 37.617C88.3611 37.2019 88.9491 36.9944 89.5198 36.9944C90.7305 36.9944 91.9239 37.9283 91.7682 39.8654L90.8343 39.3465C90.523 40.3669 89.7965 40.7993 89.122 40.7993C88.8107 40.7993 88.5167 40.7128 88.2919 40.5399C87.773 40.1594 87.2369 39.7616 86.8737 39.7616C86.7526 39.7616 86.6315 39.8135 86.5624 39.9173C86.2856 40.2978 86.5797 40.6782 87.5655 41.1625C89.2258 41.9927 89.5544 44.3794 87.3752 45.0193L87.012 45.0539L86.7353 43.4801C86.6142 43.5147 86.4932 43.532 86.3721 43.532C86.2683 43.532 86.1646 43.5147 86.0608 43.4974V47.2158C86.0608 50.8997 87.3233 53.9782 89.3815 56.4515C89.3988 56.4687 89.4161 56.486 89.4161 56.5033C89.4852 56.5898 89.5717 56.6763 89.6409 56.7628C89.6582 56.7801 89.6755 56.7974 89.6928 56.8146C89.7793 56.9184 89.8657 57.0049 89.9522 57.1087C89.9522 57.1087 89.9522 57.126 89.9695 57.126C90.056 57.2297 90.1598 57.3162 90.2462 57.42L90.2635 57.4373C90.3846 57.5065 90.4884 57.5929 90.5921 57.6794C90.7997 57.8524 91.0072 58.0599 91.1802 58.302C92.5119 59.4781 94.0685 60.4639 95.7461 61.2941C95.9363 61.3979 96.1266 61.5016 96.3341 61.5881C99.1014 62.9717 103.148 64.4764 110.222 64.4764C117.296 64.4764 121.343 62.9717 124.11 61.5881C124.318 61.4843 124.508 61.3806 124.698 61.2941C126.359 60.4812 127.881 59.4954 129.212 58.3539C129.247 58.302 129.281 58.2501 129.316 58.1983C129.333 58.181 129.351 58.1637 129.368 58.1291C129.385 58.1118 129.403 58.0772 129.437 58.0599C129.454 58.0253 129.489 58.008 129.506 57.9734C129.524 57.9561 129.524 57.9388 129.541 57.9388C129.575 57.9042 129.61 57.8697 129.645 57.8351L129.662 57.8178C129.697 57.7832 129.731 57.7486 129.766 57.714C129.766 57.714 129.766 57.714 129.783 57.6967C129.818 57.6621 129.869 57.6275 129.904 57.5929C129.991 57.5238 130.077 57.4719 130.163 57.42C130.181 57.4027 130.198 57.4027 130.215 57.3854C132.792 54.7565 134.401 51.3494 134.401 47.1812V43.5147C134.297 43.5492 134.193 43.5665 134.072 43.5665C134.003 43.5665 133.882 43.5492 133.761 43.5147Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M11.9378 1H0V99.487H11.9378V1Z\",\n fill: \"#FFCC00\"\n })]\n }), jsx(\"defs\", {\n children: jsx(\"clipPath\", {\n id: \"clip0_908_6292\",\n children: jsx(\"rect\", {\n width: \"192\",\n height: \"100\",\n fill: \"white\"\n })\n })\n })]\n }));\n});\nLogoImage.displayName = 'LogoImage';\nvar css_248z$m = \".utrecht-mark{background-color:var(--utrecht-mark-background-color,revert);color:var(--utrecht-mark-color,revert)}@media print{.utrecht-mark{outline-color:currentColor;outline-style:dotted;outline-width:.1em}}@media screen and (-ms-high-contrast:active){.utrecht-mark{background-color:Highlight;color:HighlightText}}.utrecht-mark--print{outline-color:currentColor;outline-style:dotted;outline-width:.1em}.utrecht-mark--windows-high-contrast{background-color:Highlight;color:HighlightText}\";\nstyleInject(css_248z$m);\nvar _excluded$x = [\"children\", \"className\"];\nfunction ownKeys$y(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$y(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$y(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$y(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Mark$3 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$x);\n return jsx(\"mark\", _objectSpread$y(_objectSpread$y({\n ref: ref,\n className: clsx('utrecht-mark', className)\n }, restProps), {}, {\n children: children\n }));\n});\nMark$3.displayName = 'Mark';\nvar css_248z$l = \".utrecht-value-number{font-variant-numeric:lining-nums tabular-nums}.utrecht-value-number--positive{color:var(--utrecht-value-number-positive-color)}.utrecht-value-number--negative{color:var(--utrecht-value-number-negative-color)}\";\nstyleInject(css_248z$l);\nvar _excluded$w = [\"children\", \"className\", \"value\"];\nfunction ownKeys$x(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$x(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$x(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$x(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar NumberValue = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n value = _ref.value,\n restProps = _objectWithoutProperties$1(_ref, _excluded$w);\n return jsx(\"data\", _objectSpread$x(_objectSpread$x({\n value: typeof value === 'string' || typeof value === 'number' ? String(value) : undefined\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-value-number', className),\n children: children\n }));\n});\nNumberValue.displayName = 'NumberValue';\nvar css_248z$k = \".utrecht-ordered-list,.utrecht-ordered-list--html-content ol{box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit)));line-height:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit)));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-end, var(--utrecht-unordered-list-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-start, var(--utrecht-unordered-list-margin-block-start, 0)));padding-inline-start:var(--utrecht-ordered-list-padding-inline-start,var(--utrecht-unordered-list-padding-inline-start,2ch));text-align:start}.utrecht-ordered-list--center{inline-size:max-content;margin-inline-end:auto;margin-inline-start:auto;max-inline-size:100%}.utrecht-ordered-list--distanced{--utrecht-space-around:1}.utrecht-ordered-list--arabic{list-style:arabic-indic}.utrecht-ordered-list--html-content ol>li,.utrecht-ordered-list--html-content>li,.utrecht-ordered-list__item{margin-block-end:var(--utrecht-ordered-list-item-margin-block-end,var(--utrecht-unordered-list-item-margin-block-end));margin-block-start:var(--utrecht-ordered-list-item-margin-block-start,var(--utrecht-unordered-list-item-margin-block-start));padding-inline-start:var(--utrecht-ordered-list-item-padding-inline-start,var(--utrecht-unordered-list-item-padding-inline-start,1ch))}\";\nstyleInject(css_248z$k);\nvar _excluded$v = [\"children\", \"className\"];\nfunction ownKeys$w(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$w(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$w(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$w(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar OrderedList = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$v);\n return jsx(\"ol\", _objectSpread$w(_objectSpread$w({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-ordered-list', className),\n children: children\n }));\n});\nOrderedList.displayName = 'OrderedList';\nvar _excluded$u = [\"children\", \"className\"];\nfunction ownKeys$v(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$v(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$v(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$v(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar OrderedListItem = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$u);\n return jsx(\"li\", _objectSpread$v(_objectSpread$v({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-ordered-list__item', className),\n children: children\n }));\n});\nOrderedListItem.displayName = 'OrderedListItem';\nvar css_248z$j = \".utrecht-page{margin-inline-end:auto;margin-inline-start:auto;max-inline-size:calc(var(--utrecht-page-max-inline-size) - var(--utrecht-page-margin-inline-start, 0px) - var(--utrecht-page-margin-inline-end, 0px));padding-inline-end:var(--utrecht-page-margin-inline-end);padding-inline-start:var(--utrecht-page-margin-inline-start)}.utrecht-page__content{background-color:var(--utrecht-page-background-color);color:var(--utrecht-page-color);max-inline-size:var(--utrecht-page-max-inline-size)}\";\nstyleInject(css_248z$j);\nvar _excluded$t = [\"children\", \"className\"];\nfunction ownKeys$u(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$u(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$u(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$u(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Page = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$t);\n return jsx(\"div\", _objectSpread$u(_objectSpread$u({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page', className),\n children: children\n }));\n});\nPage.displayName = 'Page';\nvar css_248z$i = \".utrecht-page-content{padding-block-end:var(--utrecht-page-content-padding-block-end);padding-block-start:var(--utrecht-page-content-padding-block-start);padding-inline-end:var(--utrecht-page-padding-inline-end);padding-inline-start:var(--utrecht-page-padding-inline-start)}.utrecht-page-content__main{grid-area:main}.utrecht-page-content__aside{grid-area:aside}\";\nstyleInject(css_248z$i);\nvar _excluded$s = [\"children\", \"className\"],\n _excluded2$1 = [\"children\", \"className\"];\nfunction ownKeys$t(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$t(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$t(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$t(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PageContent = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$s);\n return jsx(\"div\", _objectSpread$t(_objectSpread$t({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page-content', className),\n children: children\n }));\n});\nPageContent.displayName = 'PageContent';\nvar PageContentMain = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var children = _ref2.children,\n className = _ref2.className,\n restProps = _objectWithoutProperties$1(_ref2, _excluded2$1);\n return jsx(\"main\", _objectSpread$t(_objectSpread$t({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page-content__main', className),\n children: children\n }));\n});\nPageContentMain.displayName = 'PageContentMain';\nvar css_248z$h = \".utrecht-page-footer{--utrecht-document-color:currentColor;--utrecht-heading-color:currentColor;--utrecht-link-color:currentColor;--utrecht-link-focus-color:currentColor;--utrecht-link-hover-color:currentColor;--utrecht-link-active-color:currentColor;--utrecht-link-visited-color:currentColor;background-color:var(--utrecht-page-footer-background-color);background-image:var(--utrecht-page-footer-background-image);color:var(--utrecht-page-footer-color);font-family:var(--utrecht-document-font-family);font-size:var(--utrecht-document-font-size);padding-block-end:var(--utrecht-page-footer-padding-block-end);padding-block-start:var(--utrecht-page-footer-padding-block-start);padding-inline-end:var(--utrecht-page-footer-padding-inline-end);padding-inline-start:var(--utrecht-page-footer-padding-inline-start)}.utrecht-page-footer__address--reset-address{font-style:inherit;margin-block-end:0;margin-block-start:0}\";\nstyleInject(css_248z$h);\nvar _excluded$r = [\"children\", \"className\"];\nfunction ownKeys$s(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$s(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$s(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$s(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PageFooter = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$r);\n return jsx(\"footer\", _objectSpread$s(_objectSpread$s({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page-footer', className),\n children: children\n }));\n});\nPageFooter.displayName = 'PageFooter';\nvar css_248z$g = \".utrecht-page-header{background-color:var(--utrecht-page-header-background-color);color:var(--utrecht-page-header-color);grid-area:\\\"utrecht-header\\\";padding-block-end:var(--utrecht-page-header-padding-block-end);padding-block-start:var(--utrecht-page-header-padding-block-start);padding-inline-end:var(--utrecht-page-padding-inline-end);padding-inline-start:var(--utrecht-page-padding-inline-start)}.utrecht-page-header__content{max-inline-size:var(--utrecht-page-max-inline-size)}\";\nstyleInject(css_248z$g);\nvar _excluded$q = [\"children\", \"className\"];\nfunction ownKeys$r(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$r(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$r(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$r(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PageHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$q);\n return jsx(\"header\", _objectSpread$r(_objectSpread$r({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page-header', className),\n children: children\n }));\n});\nPageHeader.displayName = 'PageHeader';\nvar css_248z$f = \".utrecht-paragraph{color:var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit));font-family:var(--utrecht-paragraph-font-family,var(--utrecht-document-font-family,inherit));font-size:var(--utrecht-paragraph-font-size,var(--utrecht-document-font-size,inherit));font-weight:var(--utrecht-paragraph-font-weight,inherit);line-height:var(--utrecht-paragraph-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-start, 0))}.utrecht-paragraph--lead{color:var(--utrecht-paragraph-lead-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-lead-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-lead-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-lead-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-paragraph--small{color:var(--utrecht-paragraph-small-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-small-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-small-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-small-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-paragraph__small{font-size:inherit}.utrecht-paragraph__b{font-weight:inherit}.utrecht-paragraph--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$f);\nvar _excluded$p = [\"children\", \"className\", \"lead\", \"small\"];\nfunction ownKeys$q(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$q(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$q(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$q(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Paragraph = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n lead = _ref.lead,\n small = _ref.small,\n restProps = _objectWithoutProperties$1(_ref, _excluded$p);\n return jsx(\"p\", _objectSpread$q(_objectSpread$q({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-paragraph', lead && 'utrecht-paragraph--lead', small && 'utrecht-paragraph--small', className),\n children: lead ? jsx(\"b\", {\n className: \"utrecht-paragraph__b\",\n children: children\n }) : small ? jsx(\"small\", {\n className: \"utrecht-paragraph__small\",\n children: children\n }) : children\n }));\n});\nParagraph.displayName = 'Paragraph';\nvar css_248z$e = \".utrecht-data-placeholder{background-color:var(--utrecht-data-placeholder-background-color,currentColor);block-size:1em;display:inline-block;inline-size:min(100%,var(--utrecht-data-placeholder-max-inline-size));max-inline-size:var(--utrecht-data-placeholder-max-inline-size);min-inline-size:var(--utrecht-data-placeholder-min-inline-size,10ch);vertical-align:-.1em}@media print{.utrecht-data-placeholder{outline-color:currentColor;outline-style:dashed;outline-width:.1em}}@media screen and (prefers-contrast:more){.utrecht-data-placeholder{background-color:var(--utrecht-data-placeholder-high-contrast-background-color,var(--utrecht-data-placeholder-background-color,currentColor))}}@media screen and (forced-colors:active){.utrecht-data-placeholder{background-color:GrayText}}.utrecht-data-placeholder--loading{cursor:var(--utrecht-action-busy-cursor,busy)}.utrecht-data-placeholder--print{outline-color:currentColor;outline-style:dashed;outline-width:.1em}.utrecht-data-placeholder--forced-colors{background-color:GrayText}.utrecht-data-placeholder--high-contrast{cursor:var(--utrecht-action-busy-cursor,busy)}\";\nstyleInject(css_248z$e);\nvar _excluded$o = [\"loading\", \"className\"];\nfunction ownKeys$p(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$p(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$p(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$p(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar DataPlaceholder = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var loading = _ref.loading,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$o);\n return jsx(\"span\", _objectSpread$p({\n ref: ref,\n className: clsx('utrecht-data-placeholder', {\n 'utrecht-data-placeholder--loading': loading\n }, className)\n }, restProps));\n});\nDataPlaceholder.displayName = 'DataPlaceholder';\nvar css_248z$d = \".utrecht-pre-heading{color:var(--utrecht-pre-heading-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-pre-heading-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-pre-heading-font-size);font-weight:var(--utrecht-pre-heading-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-pre-heading-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-pre-heading-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-pre-heading-margin-block-start, 0));order:var(--utrecht-pre-heading-order,0)}.utrecht-pre-heading--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$d);\nvar _excluded$n = [\"children\", \"className\"];\nfunction ownKeys$o(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$o(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$o(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$o(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PreHeading = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$n);\n return jsx(\"p\", _objectSpread$o(_objectSpread$o({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-pre-heading', className),\n children: children\n }));\n});\nPreHeading.displayName = 'PreHeading';\nvar css_248z$c = \".utrecht-radio-button{--_utrecht-radio-button-background-color:var(\\n --_utrecht-radio-button-interactive-background-color,var(--_utrecht-radio-button-state-background-color,var(--utrecht-radio-button-background-color))\\n );--_utrecht-radio-button-border-color:var(\\n --_utrecht-radio-button-interactive-border-color,var(--_utrecht-radio-button-state-border-color,var(--utrecht-radio-button-border-color,currentColor))\\n );--_utrecht-radio-button-border-width:var(\\n --_utrecht-radio-button-interactive-border-width,var(--_utrecht-radio-button-state-border-width,var(--utrecht-radio-button-border-width))\\n );--_utrecht-radio-button-color:var(\\n --_utrecht-radio-button-interactive-color,var(--_utrecht-radio-button-state-color,var(--utrecht-radio-button-color,currentColor))\\n );--_utrecht-radio-button-icon-size:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--_utrecht-radio-button-background-color);background-image:radial-gradient(circle,var(--_utrecht-radio-button-color,transparent) calc(var(--_utrecht-radio-button-icon-size, 50%) - 5%),var(--_utrecht-radio-button-background-color,currentColor) var(--_utrecht-radio-button-icon-size,50%));background-position:50%;background-repeat:no-repeat;background-size:contain;block-size:var(--utrecht-radio-button-size,1em);border-color:var(--_utrecht-radio-button-border-color);border-radius:50%;border-style:solid;border-width:var(--_utrecht-radio-button-border-width);cursor:var(--utrecht-action-activate-cursor,revert);inline-size:var(--utrecht-radio-button-size,1em);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-end:var(--utrecht-radio-button-margin-inline-end);margin-inline-start:0;min-block-size:24px;min-inline-size:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:top}.utrecht-radio-button--checked{--_utrecht-radio-button-icon-size:var(--utrecht-radio-button-icon-size,50%);--_utrecht-radio-button-state-background-color:var(--utrecht-radio-button-checked-background-color);--_utrecht-radio-button-state-border-color:var(--utrecht-radio-button-checked-border-color);--_utrecht-radio-button-state-border-width:var(--utrecht-radio-button-checked-border-width);--_utrecht-radio-button-state-color:var(--utrecht-radio-button-checked-color);--_utrecht-radio-button-state-active-background-color:var(--utrecht-radio-button-checked-active-background-color);--_utrecht-radio-button-state-active-border-color:var(--utrecht-radio-button-checked-active-border-color);--_utrecht-radio-button-state-active-border-width:var(--utrecht-radio-button-checked-active-border-width);--_utrecht-radio-button-state-active-color:var(--utrecht-radio-button-checked-active-color);--_utrecht-radio-button-state-focus-background-color:var(--utrecht-radio-button-checked-focus-background-color);--_utrecht-radio-button-state-focus-border-color:var(--utrecht-radio-button-checked-focus-border-color);--_utrecht-radio-button-state-focus-border-width:var(--utrecht-radio-button-checked-focus-border-width);--_utrecht-radio-button-state-focus-color:var(--utrecht-radio-button-checked-focus-color);--_utrecht-radio-button-state-hover-background-color:var(--utrecht-radio-button-checked-hover-background-color);--_utrecht-radio-button-state-hover-border-color:var(--utrecht-radio-button-checked-hover-border-color);--_utrecht-radio-button-state-hover-border-width:var(--utrecht-radio-button-checked-hover-border-width);--_utrecht-radio-button-state-hover-color:var(--utrecht-radio-button-checked-hover-color)}.utrecht-radio-button--hover{--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-hover-background-color,var(--utrecht-radio-button-hover-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-hover-border-color,var(--utrecht-radio-button-hover-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-hover-border-width,var(--utrecht-radio-button-hover-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-hover-color,var(--utrecht-radio-button-hover-color)\\n )}.utrecht-radio-button--focus{--_utrecht-radio-button-interactive-background-color:var(\\n --utrecht-radio-button-focus-background-color,var(--utrecht-radio-button-focus-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --utrecht-radio-button-focus-border-color,var(--utrecht-radio-button-focus-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --utrecht-radio-button-focus-border-width,var(--utrecht-radio-button-focus-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --utrecht-radio-button-focus-color,var(--utrecht-radio-button-focus-color)\\n )}.utrecht-radio-button--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-radio-button--active{--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-active-background-color,var(--utrecht-radio-button-active-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-active-border-color,var(--utrecht-radio-button-active-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-active-border-width,var(--utrecht-radio-button-active-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-active-color,var(--utrecht-radio-button-active-color)\\n )}.utrecht-radio-button--disabled{--_utrecht-radio-button-background-color:var(--utrecht-radio-button-disabled-background-color);--_utrecht-radio-button-border-color:var(--utrecht-radio-button-disabled-border-color);--_utrecht-radio-button-border-width:var(--utrecht-radio-button-disabled-border-width);--_utrecht-radio-button-color:var(--utrecht-radio-button-disabled-color);--_utrecht-radio-button-focus-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-focus-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-focus-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-focus-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-active-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-active-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-active-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-active-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-hover-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-hover-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-hover-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-hover-color:var(--_utrecht-radio-button-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-radio-button--invalid{border-color:var(--utrecht-radio-button-invalid-border-color,var(--utrecht-radio-button-border-color));border-width:var(--utrecht-radio-button-invalid-border-width,var(--utrecht-radio-button-border-width));color:var(--utrecht-radio-button-invalid-color,var(--utrecht-radio-button-color))}.utrecht-radio-button--html-input:checked{--_utrecht-radio-button-icon-size:var(--utrecht-radio-button-icon-size,50%);--_utrecht-radio-button-state-background-color:var(--utrecht-radio-button-checked-background-color);--_utrecht-radio-button-state-border-color:var(--utrecht-radio-button-checked-border-color);--_utrecht-radio-button-state-border-width:var(--utrecht-radio-button-checked-border-width);--_utrecht-radio-button-state-color:var(--utrecht-radio-button-checked-color);--_utrecht-radio-button-state-active-background-color:var(--utrecht-radio-button-checked-active-background-color);--_utrecht-radio-button-state-active-border-color:var(--utrecht-radio-button-checked-active-border-color);--_utrecht-radio-button-state-active-border-width:var(--utrecht-radio-button-checked-active-border-width);--_utrecht-radio-button-state-active-color:var(--utrecht-radio-button-checked-active-color);--_utrecht-radio-button-state-focus-background-color:var(--utrecht-radio-button-checked-focus-background-color);--_utrecht-radio-button-state-focus-border-color:var(--utrecht-radio-button-checked-focus-border-color);--_utrecht-radio-button-state-focus-border-width:var(--utrecht-radio-button-checked-focus-border-width);--_utrecht-radio-button-state-focus-color:var(--utrecht-radio-button-checked-focus-color);--_utrecht-radio-button-state-hover-background-color:var(--utrecht-radio-button-checked-hover-background-color);--_utrecht-radio-button-state-hover-border-color:var(--utrecht-radio-button-checked-hover-border-color);--_utrecht-radio-button-state-hover-border-width:var(--utrecht-radio-button-checked-hover-border-width);--_utrecht-radio-button-state-hover-color:var(--utrecht-radio-button-checked-hover-color)}.utrecht-radio-button--html-input:disabled{--_utrecht-radio-button-background-color:var(--utrecht-radio-button-disabled-background-color);--_utrecht-radio-button-border-color:var(--utrecht-radio-button-disabled-border-color);--_utrecht-radio-button-border-width:var(--utrecht-radio-button-disabled-border-width);--_utrecht-radio-button-color:var(--utrecht-radio-button-disabled-color);--_utrecht-radio-button-focus-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-focus-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-focus-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-focus-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-active-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-active-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-active-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-active-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-hover-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-hover-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-hover-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-hover-color:var(--_utrecht-radio-button-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-radio-button--html-input:invalid,.utrecht-radio-button--html-input[aria-invalid=true]{border-color:var(--utrecht-radio-button-invalid-border-color,var(--utrecht-radio-button-border-color));border-width:var(--utrecht-radio-button-invalid-border-width,var(--utrecht-radio-button-border-width));color:var(--utrecht-radio-button-invalid-color,var(--utrecht-radio-button-color))}.utrecht-radio-button--html-input:focus:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --utrecht-radio-button-focus-background-color,var(--utrecht-radio-button-focus-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --utrecht-radio-button-focus-border-color,var(--utrecht-radio-button-focus-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --utrecht-radio-button-focus-border-width,var(--utrecht-radio-button-focus-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --utrecht-radio-button-focus-color,var(--utrecht-radio-button-focus-color)\\n )}.utrecht-radio-button--html-input:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-radio-button--html-input:hover:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-hover-background-color,var(--utrecht-radio-button-hover-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-hover-border-color,var(--utrecht-radio-button-hover-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-hover-border-width,var(--utrecht-radio-button-hover-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-hover-color,var(--utrecht-radio-button-hover-color)\\n )}.utrecht-radio-button--html-input:active:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-active-background-color,var(--utrecht-radio-button-active-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-active-border-color,var(--utrecht-radio-button-active-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-active-border-width,var(--utrecht-radio-button-active-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-active-color,var(--utrecht-radio-button-active-color)\\n )}\";\nstyleInject(css_248z$c);\nvar _excluded$m = [\"disabled\", \"required\", \"className\", \"invalid\"];\nfunction ownKeys$n(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$n(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$n(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$n(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar RadioButton = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var disabled = _ref.disabled,\n required = _ref.required,\n className = _ref.className,\n invalid = _ref.invalid,\n restProps = _objectWithoutProperties$1(_ref, _excluded$m);\n return jsx(\"input\", _objectSpread$n({\n type: \"radio\",\n \"aria-invalid\": invalid || undefined,\n disabled: disabled,\n required: required,\n ref: ref,\n className: clsx('utrecht-radio-button', 'utrecht-radio-button--html-input', disabled && 'utrecht-radio-button--disabled', invalid && 'utrecht-radio-button--invalid', className)\n }, restProps));\n});\nRadioButton.displayName = 'RadioButton';\nvar css_248z$b = \".utrecht-select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:var(--utrecht-select-background-color,var(--utrecht-form-control-background-color));background-image:var(--utrecht-select-background-image);background-position:100%;background-repeat:no-repeat;background-size:1.4em;border-block-end-width:var(--utrecht-select-border-block-end-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width)));border-block-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-color:var(--utrecht-select-border-color,var(--utrecht-form-control-border-color));border-inline-end-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-inline-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-radius:var(--utrecht-select-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;color:var(--utrecht-select-color,var(--utrecht-form-control-color));font-family:var(--utrecht-select-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-select-font-size,var(--utrecht-form-control-font-size));inline-size:100%;max-inline-size:var(--utrecht-select-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-select-padding-block-end,var(--utrecht-form-control-padding-block-end));padding-block-start:var(--utrecht-select-padding-block-start,var(--utrecht-form-control-padding-block-start));padding-inline-end:var(--utrecht-select-padding-inline-end,var(--utrecht-form-control-padding-inline-end));padding-inline-start:var(--utrecht-select-padding-inline-start,var(--utrecht-form-control-padding-inline-start))}.utrecht-select--disabled{background-color:var(--utrecht-select-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-select--focus{background-color:var(--utrecht-select-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-select-color,var(--utrecht-form-control-color))))}.utrecht-select--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-select--busy{cursor:var(--utrecht-action-busy-cursor,busy)}.utrecht-select--invalid{--_utrecht-select-border-width:var(\\n --utrecht-select-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-select-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-select-border-width);border-block-end-width:var(--utrecht-select-invalid-border-block-end-width,var(--utrecht-form-control-invalid-border-block-end-width,var(--utrecht-select-border-block-end-width,var(--utrecht-form-control-border-block-end-width,var(--_utrecht-select-border-width)))));border-color:var(--utrecht-select-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))))}.utrecht-select--html-select:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-select-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-select-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-select--html-select:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-select--html-select:disabled{background-color:var(--utrecht-select-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}\";\nstyleInject(css_248z$b);\nvar _excluded$l = [\"busy\", \"invalid\", \"required\", \"className\", \"noscript\", \"children\"],\n _excluded2 = [\"disabled\", \"invalid\", \"value\", \"children\", \"className\"];\nfunction ownKeys$m(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$m(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$m(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$m(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Select = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var busy = _ref.busy,\n invalid = _ref.invalid,\n required = _ref.required,\n className = _ref.className,\n noscript = _ref.noscript,\n children = _ref.children,\n restProps = _objectWithoutProperties$1(_ref, _excluded$l);\n return jsx(\"select\", _objectSpread$m(_objectSpread$m({\n \"aria-busy\": busy || undefined,\n \"aria-invalid\": invalid || undefined,\n required: noscript ? required : false,\n \"aria-required\": noscript ? undefined : required,\n className: clsx('utrecht-select', 'utrecht-select--html-select', busy && 'utrecht-select--busy', invalid && 'utrecht-select--invalid', required && 'utrecht-select--required', className),\n ref: ref\n }, restProps), {}, {\n children: children\n }));\n});\nSelect.displayName = 'Select';\nvar SelectOption = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var disabled = _ref2.disabled,\n invalid = _ref2.invalid,\n value = _ref2.value,\n children = _ref2.children,\n className = _ref2.className,\n restProps = _objectWithoutProperties$1(_ref2, _excluded2);\n return jsx(\"option\", _objectSpread$m(_objectSpread$m({}, restProps), {}, {\n ref: ref,\n disabled: disabled,\n value: value,\n className: clsx('utrecht-select__option', disabled && 'utrecht-select__option--disabled', invalid && 'utrecht-select__option--invalid', className),\n children: children\n }));\n});\nSelectOption.displayName = 'SelectOption';\nvar css_248z$a = \".utrecht-separator{border-color:var(--utrecht-separator-color);border-style:solid;border-width:0 0 var(--utrecht-separator-block-size) 0;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-start, 0))}.utrecht-separator--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$a);\nvar _excluded$k = [\"className\", \"children\"];\nfunction ownKeys$l(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$l(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$l(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$l(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n// Do not pass `children` along with `restProps` and use _children as it's unused\nvar Separator = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className;\n _ref.children;\n var restProps = _objectWithoutProperties$1(_ref, _excluded$k);\n return jsx(\"hr\", _objectSpread$l(_objectSpread$l({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-separator', className)\n }));\n});\nSeparator.displayName = 'Separator';\nvar css_248z$9 = \".utrecht-skip-link{align-items:center;background-color:var(--utrecht-skip-link-background-color,ButtonFace);box-sizing:border-box;color:var(--utrecht-skip-link-color,ButtonText);display:inline-flex;justify-content:center;min-block-size:var(--utrecht-skip-link-min-block-size,44px);min-inline-size:var(--utrecht-skip-link-min-inline-size,44px);padding-block-end:var(--utrecht-skip-link-padding-block-end);padding-block-start:var(--utrecht-skip-link-padding-block-start);padding-inline-end:var(--utrecht-skip-link-padding-inline-end);padding-inline-start:var(--utrecht-skip-link-padding-inline-start);text-decoration:var(--utrecht-skip-link-text-decoration)}.utrecht-skip-link--hidden,.utrecht-skip-link--visible-on-focus{inset-block-start:-200%;position:fixed}.utrecht-skip-link--visible,.utrecht-skip-link--visible-on-focus:focus{--_utrecht-skip-link-inset:calc(var(--utrecht-focus-outline-width, 0px) + var(--utrecht-focus-outline-offset, 0px));inset-block-start:var(--_utrecht-skip-link-inset,0);inset-inline-start:var(--_utrecht-skip-link-inset,0);position:fixed;z-index:var(--utrecht-skip-link-z-index,var(--utrecht-layer-focus-z-index))}.utrecht-skip-link--focus,.utrecht-skip-link:focus,.utrecht-skip-link:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);text-decoration:var(--utrecht-skip-link-focus-text-decoration)}\";\nstyleInject(css_248z$9);\nvar _excluded$j = [\"children\", \"className\"];\nfunction ownKeys$k(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$k(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$k(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$k(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar SkipLink = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$j);\n return jsx(\"p\", {\n children: jsx(\"a\", _objectSpread$k(_objectSpread$k({\n ref: ref\n }, restProps), {}, {\n className: clsx('utrecht-skip-link', 'utrecht-skip-link--visible-on-focus', className),\n children: children\n }))\n });\n});\nSkipLink.displayName = 'SkipLink';\nvar css_248z$8 = \".utrecht-spotlight-section{background-color:var(--_utrecht-spotlight-section-background-color,var(--utrecht-spotlight-section-background-color));border-color:var(--_utrecht-spotlight-section-border-color,var(--utrecht-spotlight-section-border-color));border-style:solid;border-width:var(--_utrecht-spotlight-section-border-width,var(--utrecht-spotlight-section-border-width,0));color:var(--_utrecht-spotlight-section-color,var(--utrecht-spotlight-section-color));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-spotlight-section-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-spotlight-section-margin-block-start, 0));padding-block-end:var(--utrecht-spotlight-section-padding-block-end);padding-block-start:var(--utrecht-spotlight-section-padding-block-start);padding-inline-end:var(--utrecht-spotlight-section-padding-inline-end);padding-inline-start:var(--utrecht-spotlight-section-padding-inline-start)}.utrecht-spotlight-section--info{--_utrecht-spotlight-section-icon-color:var(--utrecht-spotlight-section-icon-info-color);--_utrecht-spotlight-section-background-color:var(--utrecht-spotlight-section-info-background-color);--_utrecht-spotlight-section-border-color:var(--utrecht-spotlight-section-info-border-color);--_utrecht-spotlight-section-border-width:var(--utrecht-spotlight-section-info-border-width);--_utrecht-spotlight-section-color:var(--utrecht-spotlight-section-info-color)}.utrecht-spotlight-section--warning{--_utrecht-spotlight-section-icon-color:var(--utrecht-spotlight-section-icon-warning-color);--_utrecht-spotlight-section-background-color:var(--utrecht-spotlight-section-warning-background-color);--_utrecht-spotlight-section-border-color:var(--utrecht-spotlight-section-warning-border-color);--_utrecht-spotlight-section-border-width:var(--utrecht-spotlight-section-warning-border-width);--_utrecht-spotlight-section-color:var(--utrecht-spotlight-section-warning-color)}\";\nstyleInject(css_248z$8);\nvar _excluded$i = [\"aside\", \"children\", \"className\", \"type\"];\nfunction ownKeys$j(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$j(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$j(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$j(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar SpotlightSection = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var aside = _ref.aside,\n children = _ref.children,\n className = _ref.className,\n type = _ref.type,\n restProps = _objectWithoutProperties$1(_ref, _excluded$i);\n var props = _objectSpread$j(_objectSpread$j({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-spotlight-section', {\n 'utrecht-spotlight-section--info': type === 'info',\n 'utrecht-spotlight-section--warning': type === 'warning'\n }, className)\n });\n return aside ? jsx(\"aside\", _objectSpread$j(_objectSpread$j({}, props), {}, {\n children: children\n })) : jsx(\"section\", _objectSpread$j(_objectSpread$j({}, props), {}, {\n children: children\n }));\n});\nSpotlightSection.displayName = 'SpotlightSection';\nvar css_248z$7 = \".utrecht-badge-status{background-color:var(--utrecht-badge-background-color,#000);border-radius:var(--utrecht-badge-border-radius,.5ch);color:var(--utrecht-badge-color,#fff);display:inline-block;font-family:var(--utrecht-document-font-family,sans-serif);font-size:var(--utrecht-badge-font-size,inherit);font-style:var(--utrecht-badge-font-style,normal);font-weight:var(--utrecht-badge-font-weight,bold);letter-spacing:var(--utrecht-badge-status-letter-spacing,inherit);line-height:var(--utrecht-badge-line-height,1em);max-block-size:max-content;max-inline-size:max-content;min-block-size:1em;min-inline-size:1em;padding-block-end:var(--utrecht-badge-padding-block,.5ex);padding-block-start:var(--utrecht-badge-padding-block,.5ex);padding-inline-end:var(--utrecht-badge-padding-inline,.5ch);padding-inline-start:var(--utrecht-badge-padding-inline,.5ch);text-decoration:none;text-transform:var(--utrecht-badge-status-text-transform,inherit)}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-badge-status{border:1px solid}}.utrecht-badge-status--danger{background-color:var(--utrecht-feedback-danger-fill-background-color,#c00);color:var(--utrecht-feedback-danger-fill-color,#fff)}.utrecht-badge-status--warning{background-color:var(--utrecht-feedback-warning-fill-background-color,#fc0);color:var(--utrecht-feedback-warning-fill-color,#fff)}.utrecht-badge-status--safe{background-color:var(--utrecht-feedback-safe-fill-background-color,#80a659);color:var(--utrecht-feedback-safe-fill-color,#fff)}.utrecht-badge-status--neutral{background-color:var(--utrecht-feedback-neutral-fill-background-color,#000);color:var(--utrecht-feedback-neutral-fill-color,#fff)}.utrecht-badge-status--valid{background-color:var(--utrecht-feedback-valid-fill-background-color,var(--utrecht-feedback-safe-fill-background-color,#80a659));color:var(--utrecht-feedback-valid-fill-color,var(--utrecht-feedback-safe-fill-color,#fff))}.utrecht-badge-status--invalid{background-color:var(--utrecht-feedback-invalid-fill-background-color,var(--utrecht-feedback-danger-fill-background-color,#ffa600));color:var(--utrecht-feedback-invalid-fill-color,var(--utrecht-feedback-danger-fill-color,#fff))}.utrecht-badge-status--error{background-color:var(--utrecht-feedback-error-fill-background-color,var(--utrecht-feedback-danger-fill-background-color,#900));color:var(--utrecht-feedback-error-fill-color,var(--utrecht-feedback-danger-fill-color,#fff))}.utrecht-badge-status--success{background-color:var(--utrecht-feedback-success-fill-background-color,var(--utrecht-feedback-safe-fill-background-color,#80a659));color:var(--utrecht-feedback-success-fill-color,var(--utrecht-feedback-safe-fill-color,#fff))}.utrecht-badge-status--active{background-color:var(--utrecht-feedback-active-fill-background-color,var(--utrecht-feedback-safe-fill-background-color,#80a659));color:var(--utrecht-feedback-active-fill-color,var(--utrecht-feedback-safe-fill-color,#fff))}.utrecht-badge-status--inactive{background-color:var(--utrecht-feedback-inactive-fill-background-color,var(--utrecht-feedback-danger-fill-background-color,#c00));color:var(--utrecht-feedback-inactive-fill-color,var(--utrecht-feedback-danger-fill-color,#fff))}\";\nstyleInject(css_248z$7);\nvar _excluded$h = [\"className\", \"status\"];\nfunction ownKeys$i(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$i(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$i(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$i(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar StatusBadge = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n status = _ref.status,\n restProps = _objectWithoutProperties$1(_ref, _excluded$h);\n return jsx(\"span\", _objectSpread$i(_objectSpread$i({\n className: clsx('utrecht-badge-status', \"utrecht-badge-status--\".concat(status ? status : 'neutral'), className)\n }, restProps), {}, {\n ref: ref\n }));\n});\nStatusBadge.displayName = 'StatusBadge';\nvar _excluded$g = [\"children\", \"className\"];\nfunction ownKeys$h(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$h(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$h(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$h(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Strong = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$g);\n return jsx(\"strong\", _objectSpread$h(_objectSpread$h({\n ref: ref,\n className: clsx('utrecht-emphasis', 'utrecht-emphasis--strong', className)\n }, restProps), {}, {\n children: children\n }));\n});\nStrong.displayName = 'Strong';\nvar css_248z$6 = \".utrecht-surface{background-color:var(--utrecht-surface-background-color,inherit);color:var(--utrecht-surface-color,inherit)}.utrecht-surface--html-body{margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-start:0}\";\nstyleInject(css_248z$6);\nvar _excluded$f = [\"children\", \"className\"];\nfunction ownKeys$g(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$g(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Surface = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$f);\n return jsx(\"div\", _objectSpread$g(_objectSpread$g({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-surface', className),\n children: children\n }));\n});\nSurface.displayName = 'Surface';\nvar css_248z$5 = \".utrecht-table{border-collapse:separate;border-color:var(--utrecht-table-border-color,0);border-spacing:0;border-style:solid;border-width:var(--utrecht-table-border-width,0);font-family:var(--utrecht-table-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-table-font-size,inherit);inline-size:100%;line-height:var(--utrecht-table-line-height,inherit);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-start, 0))}.utrecht-table--distanced{--utrecht-space-around:1}.utrecht-table--html-table>caption,.utrecht-table__caption{color:var(--utrecht-table-caption-color);font-family:var(--utrecht-table-caption-font-family);font-size:var(--utrecht-table-caption-font-size);font-weight:var(--utrecht-table-caption-font-weight);line-height:var(--utrecht-table-caption-line-height);margin-block-end:var(--utrecht-table-caption-margin-block-end);page-break-after:avoid;text-align:var(--utrecht-table-caption-text-align,center)}.utrecht-table--html-table>thead,.utrecht-table__header{--_utrecht-table-header-cell-vertical-align:bottom;--_utrecht-table-header-cell-z-index:8;background-color:var(--utrecht-table-header-background-color);color:var(--utrecht-table-header-color);font-weight:var(--utrecht-table-header-font-weight);page-break-inside:avoid;text-transform:var(--utrecht-table-header-text-transform)}.utrecht-table__header--sticky th{background-color:var(--utrecht-table-header-sticky-background-color);color:var(--utrecht-table-header-sticky-color);inset-block-start:0;position:sticky}.utrecht-table__header--sticky tr:last-child>th{border-block-end-color:var(--utrecht-table-header-sticky-border-block-end-color,var(--utrecht-table-header-border-block-end-color,transparent));border-block-end-style:solid;border-block-end-width:var(--utrecht-table-header-sticky-border-block-end-width,var(--utrecht-table-header-border-block-end-width,0))}.utrecht-table__footer{--_utrecht-table-header-cell-z-index:5;z-index:3}.utrecht-table__footer--sticky{background-color:var(--utrecht-table-footer-sticky-background-color,var(--utrecht-table-footer-background-color));color:var(--utrecht-table-footer-sticky-color,var(--utrecht-table-footer-color));inset-block-end:0;position:sticky}.utrecht-table__footer--sticky tr:first-child>td,.utrecht-table__footer--sticky tr:first-child>th{border-block-start-color:var(--utrecht-table-header-sticky-border-block-start-color,var(--utrecht-table-header-border-block-start-color,transparent));border-block-start-style:solid;border-block-start-width:var(--utrecht-table-header-sticky-border-block-start-width,var(--utrecht-table-header-border-block-start-width,0))}.utrecht-table--html-table>tbody,.utrecht-table__body{--_utrecht-table-header-cell-z-index:2}.utrecht-table--fixed{inline-size:fit-content;table-layout:fixed}.utrecht-table--fixed th,.utrecht-table--oneline td,.utrecht-table--oneline th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.utrecht-table--html-table>tbody>tr,.utrecht-table--html-table>tfoot>tr,.utrecht-table--html-table>thead>tr,.utrecht-table--html-table>tr,.utrecht-table__row{page-break-inside:avoid}.utrecht-table__row--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table--html-table>tbody>tr>th,.utrecht-table--html-table>tfoot>tr>th,.utrecht-table--html-table>thead>tr>th,.utrecht-table--html-table>tr>th,.utrecht-table__header-cell{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);color:var(--utrecht-table-header-cell-color);font-size:var(--utrecht-table-header-cell-font-size);font-weight:var(--utrecht-table-header-cell-font-weight,bold);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start;text-transform:var(--utrecht-table-header-cell-text-transform);vertical-align:var(--_utrecht-table-header-cell-vertical-align,top);z-index:var(--_utrecht-table-header-cell-z-index)}.utrecht-table__header-cell--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table__header-cell--sticky-block{background-color:#eee;color:#000;inset-block-start:0;position:sticky;z-index:calc(var(--_utrecht-table-header-cell-z-index, 0) + 2)}.utrecht-table__header-cell--sticky-inline{background-color:#eee;color:#000;inset-inline-start:0;position:sticky;z-index:calc(var(--_utrecht-table-header-cell-z-index, 0) + 1)}.utrecht-table--html-table>tbody>tr>td,.utrecht-table--html-table>tfoot>tr>td,.utrecht-table--html-table>thead>tr>td,.utrecht-table--html-table>tr>td,.utrecht-table__cell{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);border-block-end-color:var(--utrecht-table-row-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-row-border-block-end-width,0);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start;vertical-align:top}.utrecht-table--html-table>tbody>tr>td:first-child,.utrecht-table--html-table>tfoot>tr>td:first-child,.utrecht-table--html-table>thead>tr>td:first-child,.utrecht-table--html-table>tr>td:first-child,.utrecht-table__cell--first{padding-inline-start:var(--utrecht-table-row-padding-inline-start,var(--utrecht-table-cell-padding-inline-start,0))}.utrecht-table--html-table>tbody>tr>td:last-child,.utrecht-table--html-table>tfoot>tr>td:last-child,.utrecht-table--html-table>thead>tr>td:last-child,.utrecht-table--html-table>tr>td:last-child,.utrecht-table__cell--last{padding-inline-end:var(--utrecht-table-row-padding-inline-end,var(--utrecht-table-cell-padding-inline-end,0))}.utrecht-table__cell--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table__cell--numeric-column,.utrecht-table__header-cell--numeric-column{--_utrecht-table-cell-text-align:right;text-align:var(--_utrecht-table-cell-text-align)}.utrecht-table__cell--numeric-data{font-variant-numeric:lining-nums tabular-nums}.utrecht-table__row--alternate-odd{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-table__row--alternate-even{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-table__header-cell{--utrecht-button-font-size:inherit;--utrecht-button-font-weight:inherit;--utrecht-button-padding-inline-start:var(--utrecht-table-cell-padding-inline-start);--utrecht-button-padding-inline-end:var(--utrecht-table-cell-padding-inline-end);--utrecht-button-padding-block-start:var(--utrecht-table-cell-padding-block-start);--utrecht-button-padding-block-end:var(--utrecht-table-cell-padding-block-end);--utrecht-button-hover-scale:1;--utrecht-button-focus-scale:1;--utrecht-button-min-block-size:100%;--utrecht-button-min-inline-size:100%;--utrecht-button-border-color:transparent;--utrecht-button-border-size:1px}.utrecht-table__header-cell:has(.utrecht-button){padding-block-end:0;padding-block-start:0;padding-inline-end:0;padding-inline-start:0}.utrecht-table__header-cell-button{justify-content:var(--_utrecht-table-cell-text-align,start)}.utrecht-table__data--truncate{display:block;max-inline-size:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.utrecht-table__container{max-inline-size:100%;overflow-inline:scroll}.utrecht-table__header--hidden{clip:rect(1px,1px,1px,1px);block-size:1px;border:0 solid silver;clip-path:inset(50%);inline-size:1px;outline:1px solid red;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.utrecht-table--busy{cursor:var(--utrecht-action-busy-cursor,busy)}.utrecht-table--alternate-row-color .utrecht-table__body .utrecht-table__row:nth-child(odd){background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-table--alternate-row-color .utrecht-table__body .utrecht-table__row:nth-child(2n){background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-table--row-hover .utrecht-table__body .utrecht-table__row:hover .utrecht-table__cell,.utrecht-table--row-hover .utrecht-table__body .utrecht-table__row:hover .utrecht-table__header-cell{background-color:#ffefd5;color:maroon}.utrecht-table--row-focus-within .utrecht-table__body .utrecht-table__row:focus-within .utrecht-table__cell,.utrecht-table--row-focus-within .utrecht-table__body .utrecht-table__row:focus-within .utrecht-table__header-cell{background-color:#ffefd5;color:maroon}\";\nstyleInject(css_248z$5);\nvar _excluded$e = [\"busy\", \"children\", \"className\"];\nfunction ownKeys$f(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$f(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Table = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var busy = _ref.busy,\n children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$e);\n return jsx(\"table\", _objectSpread$f(_objectSpread$f({\n \"aria-busy\": busy\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table', {\n 'utrecht-table--busy': busy\n }, className),\n children: children\n }));\n});\nTable.displayName = 'Table';\nvar _excluded$d = [\"children\", \"className\"];\nfunction ownKeys$e(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$e(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$d);\n return jsx(\"tbody\", _objectSpread$e(_objectSpread$e({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__body', className),\n children: children\n }));\n});\nTableBody.displayName = 'TableBody';\nvar _excluded$c = [\"children\", \"className\"];\nfunction ownKeys$d(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$d(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableCaption = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$c);\n return jsx(\"caption\", _objectSpread$d(_objectSpread$d({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__caption', className),\n children: children\n }));\n});\nTableCaption.displayName = 'TableCaption';\nvar _excluded$b = [\"children\", \"className\", \"numericColumn\", \"selected\"];\nfunction ownKeys$c(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$c(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableCell = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n numericColumn = _ref.numericColumn,\n selected = _ref.selected,\n restProps = _objectWithoutProperties$1(_ref, _excluded$b);\n return jsx(\"td\", _objectSpread$c(_objectSpread$c({\n \"aria-selected\": selected ? true : undefined\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__cell', {\n 'utrecht-table__cell--selected': selected,\n 'utrecht-table__cell--numeric-column': numericColumn\n }, className),\n children: children\n }));\n});\nTableCell.displayName = 'TableCell';\nvar _excluded$a = [\"children\", \"className\", \"sticky\"];\nfunction ownKeys$b(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$b(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableFooter = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n sticky = _ref.sticky,\n restProps = _objectWithoutProperties$1(_ref, _excluded$a);\n return jsx(\"tfoot\", _objectSpread$b(_objectSpread$b({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__footer', {\n 'utrecht-table__footer--sticky': sticky\n }, className),\n children: children\n }));\n});\nTableFooter.displayName = 'TableFooter';\nvar _excluded$9 = [\"children\", \"className\", \"sticky\"];\nfunction ownKeys$a(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$a(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n sticky = _ref.sticky,\n restProps = _objectWithoutProperties$1(_ref, _excluded$9);\n return jsx(\"thead\", _objectSpread$a(_objectSpread$a({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__header', {\n 'utrecht-table__header--sticky': sticky\n }, className),\n children: children\n }));\n});\nTableHeader.displayName = 'TableHeader';\nvar _excluded$8 = [\"children\", \"className\", \"numericColumn\", \"selected\", \"sticky\", \"scope\"];\nfunction ownKeys$9(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$9(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableHeaderCell = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n numericColumn = _ref.numericColumn,\n selected = _ref.selected,\n sticky = _ref.sticky,\n scope = _ref.scope,\n restProps = _objectWithoutProperties$1(_ref, _excluded$8);\n return jsx(\"th\", _objectSpread$9(_objectSpread$9({\n \"aria-selected\": selected ? true : undefined,\n scope: scope\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__header-cell', {\n 'utrecht-table__header-cell--numeric-column': numericColumn,\n 'utrecht-table__header-cell--selected': selected,\n 'utrecht-table__header-cell--sticky-inline': sticky && scope === 'row',\n 'utrecht-table__header-cell--sticky-block': sticky && scope === 'col'\n }, className),\n children: children\n }));\n});\nTableHeaderCell.displayName = 'TableHeaderCell';\nvar _excluded$7 = [\"children\", \"className\", \"selected\"];\nfunction ownKeys$8(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$8(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableRow = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n selected = _ref.selected,\n restProps = _objectWithoutProperties$1(_ref, _excluded$7);\n return jsx(\"tr\", _objectSpread$8(_objectSpread$8({\n \"aria-selected\": selected ? true : undefined\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__row', {\n 'utrecht-table__row--selected': selected\n }, className),\n children: children\n }));\n});\nTableRow.displayName = 'TableRow';\nvar css_248z$4 = \".utrecht-textarea{background-color:var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textarea-border-bottom-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textarea-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textarea-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textarea-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textarea-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textarea-line-height,initial);max-inline-size:var(--utrecht-textarea-max-inline-size,var(--utrecht-form-control-max-inline-size));min-block-size:var(--utrecht-textarea-min-block-size);padding-block-end:var(--utrecht-textarea-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textarea-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textarea-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textarea-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial));resize:vertical;resize:block}.utrecht-textarea--invalid{--_utrecht-textarea-border-width:var(\\n --utrecht-textarea-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textarea-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textarea-border-width);border-block-end-width:var(--utrecht-textarea-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textarea-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textarea-border-width)))));border-color:var(--utrecht-textarea-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea--disabled{background-color:var(--utrecht-textarea-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-textarea--focus{background-color:var(--utrecht-textarea-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-textarea--read-only{background-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textarea-border,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textarea-border,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea__placeholder{color:var(--utrecht-textarea-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-textarea--html-textarea:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textarea-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textarea-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-textarea--html-textarea:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-textarea--html-textarea:invalid,.utrecht-textarea--html-textarea[aria-invalid=true]{--_utrecht-textarea-border-width:var(\\n --utrecht-textarea-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textarea-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textarea-border-width);border-block-end-width:var(--utrecht-textarea-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textarea-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textarea-border-width)))));border-color:var(--utrecht-textarea-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea--html-textarea:read-only{background-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textarea-border,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textarea-border,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea--html-textarea:disabled{background-color:var(--utrecht-textarea-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-textarea--html-textarea::placeholder{color:var(--utrecht-textarea-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}\";\nstyleInject(css_248z$4);\nvar _excluded$6 = [\"dir\", \"disabled\", \"invalid\", \"readOnly\", \"required\", \"className\"];\nfunction ownKeys$7(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$7(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Textarea = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var dir = _ref.dir,\n disabled = _ref.disabled,\n invalid = _ref.invalid,\n readOnly = _ref.readOnly,\n required = _ref.required,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$6);\n return jsx(\"textarea\", _objectSpread$7(_objectSpread$7({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-textarea', 'utrecht-textarea--html-textarea', disabled && 'utrecht-textarea--disabled', invalid && 'utrecht-textarea--invalid', readOnly && 'utrecht-textarea--readonly', required && 'utrecht-textarea--required', className),\n dir: dir !== null && dir !== void 0 ? dir : 'auto',\n disabled: disabled,\n readOnly: readOnly,\n required: required,\n \"aria-invalid\": invalid || undefined\n }));\n});\nTextarea.displayName = 'Textarea';\nvar css_248z$3 = \".utrecht-textbox{background-color:var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textbox-border-bottom-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textbox-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textbox-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textbox-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textbox-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textbox-line-height,var(--utrecht-form-control-line-height,initial));max-inline-size:var(--utrecht-textbox-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-textbox-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textbox-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textbox-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textbox-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial))}.utrecht-textbox--invalid{--_utrecht-textbox-border-width:var(\\n --utrecht-textbox-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textbox-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textbox-border-width);border-block-end-width:var(--utrecht-textbox-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textbox-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textbox-border-width)))));border-color:var(--utrecht-textbox-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-textbox--disabled{background-color:var(--utrecht-textbox-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-textbox--focus{background-color:var(--utrecht-textbox-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textbox--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-textbox--read-only{background-color:var(--utrecht-textbox-read-only-background-color,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-read-only-border-color,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-textbox__placeholder{color:var(--utrecht-textbox-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-textbox--numeric{-moz-appearance:textfield;font-variant-numeric:lining-nums tabular-nums}.utrecht-textbox--password{font-variant-ligatures:none;font-variant-numeric:slashed-zero}.utrecht-textbox--placeholder-ltr::placeholder,.utrecht-textbox--placeholder-ltr:placeholder-shown{direction:ltr}.utrecht-textbox--placeholder-rtl::placeholder,.utrecht-textbox--placeholder-rtl:placeholder-shown{direction:rtl}.utrecht-textbox--url{font-variant-ligatures:none}.utrecht-textbox--html-input:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textbox-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textbox-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-textbox--html-input:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-textbox--html-input:invalid,.utrecht-textbox--html-input[aria-invalid=true]{--_utrecht-textbox-border-width:var(\\n --utrecht-textbox-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textbox-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textbox-border-width);border-block-end-width:var(--utrecht-textbox-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textbox-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textbox-border-width)))));border-color:var(--utrecht-textbox-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-textbox--html-input:read-only{background-color:var(--utrecht-textbox-read-only-background-color,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-read-only-border-color,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-textbox--html-input:disabled{background-color:var(--utrecht-textbox-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-textbox--html-input::placeholder{color:var(--utrecht-textbox-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-textbox--html-input[type=password i]{font-variant-ligatures:none;font-variant-numeric:slashed-zero}.utrecht-textbox--html-input[inputMode=email i],.utrecht-textbox--html-input[inputMode=url i],.utrecht-textbox--html-input[type=email i],.utrecht-textbox--html-input[type=url i]{font-variant-ligatures:none}.utrecht-textbox--html-input[inputMode=decimal i],.utrecht-textbox--html-input[inputMode=numeric i],.utrecht-textbox--html-input[inputMode=tel i],.utrecht-textbox--html-input[pattern=\\\"[0-9]*\\\"],.utrecht-textbox--html-input[pattern=\\\"\\\\\\\\d*\\\"],.utrecht-textbox--html-input[type=number i],.utrecht-textbox--html-input[type=tel i]{-moz-appearance:textfield;font-variant-numeric:lining-nums tabular-nums}\";\nstyleInject(css_248z$3);\nvar _excluded$5 = [\"dir\", \"disabled\", \"invalid\", \"readOnly\", \"required\", \"className\", \"type\", \"maxLength\", \"inputMode\"];\nfunction ownKeys$6(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$6(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Textbox = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var dir = _ref.dir,\n disabled = _ref.disabled,\n invalid = _ref.invalid,\n readOnly = _ref.readOnly,\n required = _ref.required,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'text' : _ref$type,\n maxLength = _ref.maxLength,\n inputMode = _ref.inputMode,\n restProps = _objectWithoutProperties$1(_ref, _excluded$5);\n return jsx(\"input\", _objectSpread$6(_objectSpread$6({}, restProps), {}, {\n ref: ref,\n type: type,\n className: clsx('utrecht-textbox', 'utrecht-textbox--html-input', disabled && 'utrecht-textbox--disabled', invalid && 'utrecht-textbox--invalid', readOnly && 'utrecht-textbox--readonly', required && 'utrecht-textbox--required', className),\n maxLength: maxLength,\n dir: dir !== null && dir !== void 0 ? dir : 'auto',\n disabled: disabled,\n readOnly: readOnly,\n required: required,\n \"aria-invalid\": invalid || undefined,\n inputMode: inputMode || (type === 'number' ? 'numeric' : undefined)\n }));\n});\nTextbox.displayName = 'Textbox';\nvar css_248z$2 = \".utrecht-url{font-variant-ligatures:none;hyphens:none;page-break-inside:avoid}\";\nstyleInject(css_248z$2);\nvar _excluded$4 = [\"children\", \"className\"];\nfunction ownKeys$5(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$5(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar URLValue = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$4);\n return jsx(\"bdi\", _objectSpread$5(_objectSpread$5({\n translate: \"no\"\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-url', className),\n children: children\n }));\n});\nURLValue.displayName = 'URLValue';\nvar css_248z$1 = \"@charset \\\"UTF-8\\\";.utrecht-unordered-list,.utrecht-unordered-list--html-content ul{box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit));line-height:var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-end, var(--utrecht-paragraph-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-start, var(--utrecht-paragraph-margin-block-start, 0)));padding-inline-start:var(--utrecht-unordered-list-padding-inline-start,2ch);text-align:start}.utrecht-unordered-list--center{inline-size:max-content;margin-inline-end:auto;margin-inline-start:auto;max-inline-size:100%}.utrecht-unordered-list--distanced{--utrecht-space-around:1}.utrecht-unordered-list--html-content ul,.utrecht-unordered-list--nested{margin-block-end:0;margin-inline-start:2ch}.utrecht-unordered-list--html-content ul>li,.utrecht-unordered-list--html-content>li,.utrecht-unordered-list__item{margin-block-end:var(--utrecht-unordered-list-item-margin-block-end);margin-block-start:var(--utrecht-unordered-list-item-margin-block-start);padding-inline-start:var(--utrecht-unordered-list-item-padding-inline-start,1ch)}.utrecht-unordered-list--html-content ul>li::marker,.utrecht-unordered-list--html-content>li::marker,.utrecht-unordered-list__item::marker,.utrecht-unordered-list__marker{color:var(--utrecht-unordered-list-marker-color);content:\\\"ā—\\\"}\";\nstyleInject(css_248z$1);\nvar _excluded$3 = [\"children\", \"className\"];\nfunction ownKeys$4(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$4(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar UnorderedList = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$3);\n return jsx(\"ul\", _objectSpread$4(_objectSpread$4({\n role: \"list\"\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-unordered-list', className),\n children: children\n }));\n});\nUnorderedList.displayName = 'UnorderedList';\nvar _excluded$2 = [\"children\", \"className\"];\nfunction ownKeys$3(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$3(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar UnorderedListItem = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties$1(_ref, _excluded$2);\n return jsx(\"li\", _objectSpread$3(_objectSpread$3({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-unordered-list__item', className),\n children: children\n }));\n});\nUnorderedListItem.displayName = 'UnorderedListItem';\nvar css_248z = \".utrecht-vega-visualisation{display:inline-block}\";\nstyleInject(css_248z);\nfunction getDefaultExportFromCjs$1(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar propTypes = {\n exports: {}\n};\nvar reactIs = {\n exports: {}\n};\nvar reactIs_production_min = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min;\nfunction requireReactIs_production_min() {\n if (hasRequiredReactIs_production_min) return reactIs_production_min;\n hasRequiredReactIs_production_min = 1;\n var b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n function z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n }\n function A(a) {\n return z(a) === m;\n }\n reactIs_production_min.AsyncMode = l;\n reactIs_production_min.ConcurrentMode = m;\n reactIs_production_min.ContextConsumer = k;\n reactIs_production_min.ContextProvider = h;\n reactIs_production_min.Element = c;\n reactIs_production_min.ForwardRef = n;\n reactIs_production_min.Fragment = e;\n reactIs_production_min.Lazy = t;\n reactIs_production_min.Memo = r;\n reactIs_production_min.Portal = d;\n reactIs_production_min.Profiler = g;\n reactIs_production_min.StrictMode = f;\n reactIs_production_min.Suspense = p;\n reactIs_production_min.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n };\n reactIs_production_min.isConcurrentMode = A;\n reactIs_production_min.isContextConsumer = function (a) {\n return z(a) === k;\n };\n reactIs_production_min.isContextProvider = function (a) {\n return z(a) === h;\n };\n reactIs_production_min.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n };\n reactIs_production_min.isForwardRef = function (a) {\n return z(a) === n;\n };\n reactIs_production_min.isFragment = function (a) {\n return z(a) === e;\n };\n reactIs_production_min.isLazy = function (a) {\n return z(a) === t;\n };\n reactIs_production_min.isMemo = function (a) {\n return z(a) === r;\n };\n reactIs_production_min.isPortal = function (a) {\n return z(a) === d;\n };\n reactIs_production_min.isProfiler = function (a) {\n return z(a) === g;\n };\n reactIs_production_min.isStrictMode = function (a) {\n return z(a) === f;\n };\n reactIs_production_min.isSuspense = function (a) {\n return z(a) === p;\n };\n reactIs_production_min.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n };\n reactIs_production_min.typeOf = z;\n return reactIs_production_min;\n}\nvar reactIs_development = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development;\nfunction requireReactIs_development() {\n if (hasRequiredReactIs_development) return reactIs_development;\n hasRequiredReactIs_development = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development.AsyncMode = AsyncMode;\n reactIs_development.ConcurrentMode = ConcurrentMode;\n reactIs_development.ContextConsumer = ContextConsumer;\n reactIs_development.ContextProvider = ContextProvider;\n reactIs_development.Element = Element;\n reactIs_development.ForwardRef = ForwardRef;\n reactIs_development.Fragment = Fragment;\n reactIs_development.Lazy = Lazy;\n reactIs_development.Memo = Memo;\n reactIs_development.Portal = Portal;\n reactIs_development.Profiler = Profiler;\n reactIs_development.StrictMode = StrictMode;\n reactIs_development.Suspense = Suspense;\n reactIs_development.isAsyncMode = isAsyncMode;\n reactIs_development.isConcurrentMode = isConcurrentMode;\n reactIs_development.isContextConsumer = isContextConsumer;\n reactIs_development.isContextProvider = isContextProvider;\n reactIs_development.isElement = isElement;\n reactIs_development.isForwardRef = isForwardRef;\n reactIs_development.isFragment = isFragment;\n reactIs_development.isLazy = isLazy;\n reactIs_development.isMemo = isMemo;\n reactIs_development.isPortal = isPortal;\n reactIs_development.isProfiler = isProfiler;\n reactIs_development.isStrictMode = isStrictMode;\n reactIs_development.isSuspense = isSuspense;\n reactIs_development.isValidElementType = isValidElementType;\n reactIs_development.typeOf = typeOf;\n })();\n }\n return reactIs_development;\n}\nvar hasRequiredReactIs;\nfunction requireReactIs() {\n if (hasRequiredReactIs) return reactIs.exports;\n hasRequiredReactIs = 1;\n if (process.env.NODE_ENV === 'production') {\n reactIs.exports = requireReactIs_production_min();\n } else {\n reactIs.exports = requireReactIs_development();\n }\n return reactIs.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign;\nvar hasRequiredObjectAssign;\nfunction requireObjectAssign() {\n if (hasRequiredObjectAssign) return objectAssign;\n hasRequiredObjectAssign = 1;\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n return objectAssign;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1;\nvar hasRequiredReactPropTypesSecret;\nfunction requireReactPropTypesSecret() {\n if (hasRequiredReactPropTypesSecret) return ReactPropTypesSecret_1;\n hasRequiredReactPropTypesSecret = 1;\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1;\n}\nvar has$2;\nvar hasRequiredHas;\nfunction requireHas() {\n if (hasRequiredHas) return has$2;\n hasRequiredHas = 1;\n has$2 = Function.call.bind(Object.prototype.hasOwnProperty);\n return has$2;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1;\nvar hasRequiredCheckPropTypes;\nfunction requireCheckPropTypes() {\n if (hasRequiredCheckPropTypes) return checkPropTypes_1;\n hasRequiredCheckPropTypes = 1;\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = requireReactPropTypesSecret();\n var loggedTypeFailures = {};\n var has = requireHas();\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {/**/}\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1 = checkPropTypes;\n return checkPropTypes_1;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers;\nvar hasRequiredFactoryWithTypeCheckers;\nfunction requireFactoryWithTypeCheckers() {\n if (hasRequiredFactoryWithTypeCheckers) return factoryWithTypeCheckers;\n hasRequiredFactoryWithTypeCheckers = 1;\n var ReactIs = requireReactIs();\n var assign = requireObjectAssign();\n var ReactPropTypesSecret = requireReactPropTypesSecret();\n var has = requireHas();\n var checkPropTypes = requireCheckPropTypes();\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data : {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {\n expectedType: expectedType\n });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? ', expected one of type [' + expectedTypes.join(', ') + ']' : '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.');\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims;\nvar hasRequiredFactoryWithThrowingShims;\nfunction requireFactoryWithThrowingShims() {\n if (hasRequiredFactoryWithThrowingShims) return factoryWithThrowingShims;\n hasRequiredFactoryWithThrowingShims = 1;\n var ReactPropTypesSecret = requireReactPropTypesSecret();\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = requireReactIs();\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes.exports = requireFactoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes.exports = requireFactoryWithThrowingShims()();\n}\nvar propTypesExports = propTypes.exports;\nvar _pt = /*@__PURE__*/getDefaultExportFromCjs$1(propTypesExports);\nconst EMPTY$1 = {};\nfunction shallowEqual(a, b) {\n if (a === void 0) {\n a = EMPTY$1;\n }\n if (b === void 0) {\n b = EMPTY$1;\n }\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n return a === b || aKeys.length === bKeys.length && aKeys.every(key => a[key] === b[key]);\n}\n\n/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nfunction _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nfunction _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj));\n //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null;\n //this is how JSON.stringify behaves for array items\n default:\n return obj;\n //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nfunction isInteger$1(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nfunction escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1) return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nfunction unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nfunction hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n } else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, {\n name: name,\n index: index,\n operation: operation,\n tree: tree\n })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, {\n name: name,\n index: index,\n operation: operation,\n tree: tree\n });\n return _this;\n }\n return PatchError;\n}(Error);\nvar JsonPatchError = PatchError;\nvar deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return {\n newDocument: document\n };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return {\n newDocument: document,\n removed: removed\n };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return {\n newDocument: document,\n removed: removed\n };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, {\n op: \"remove\",\n path: this.from\n }).removed;\n applyOperation(document, {\n op: \"add\",\n path: this.path,\n value: originalValue\n });\n return {\n newDocument: document,\n removed: removed\n };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, {\n op: \"add\",\n path: this.path,\n value: _deepClone(valueToCopy)\n });\n return {\n newDocument: document\n };\n },\n test: function (obj, key, document) {\n return {\n newDocument: document,\n test: _areEquals(obj[key], this.value)\n };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return {\n newDocument: document\n };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (isInteger$1(i)) {\n arr.splice(i, 0, this.value);\n } else {\n // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return {\n newDocument: document,\n index: i\n };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return {\n newDocument: document,\n removed: removedList[0]\n };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return {\n newDocument: document,\n removed: removed\n };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nfunction getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = {\n op: \"_get\",\n path: pointer\n };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nfunction applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) {\n validateOperation = false;\n }\n if (mutateDocument === void 0) {\n mutateDocument = true;\n }\n if (banPrototypeModifications === void 0) {\n banPrototypeModifications = true;\n }\n if (index === void 0) {\n index = 0;\n }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n } else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = {\n newDocument: document\n };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n } else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n } else if (operation.op === 'move' || operation.op === 'copy') {\n // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') {\n // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n } else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n } else if (operation.op === 'remove') {\n // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n } else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n } else {\n /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n } else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n } else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications && (key == '__proto__' || key == 'prototype' && t > 0 && keys[t - 1] == 'constructor')) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n } else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n } else {\n if (validateOperation && !isInteger$1(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger$1(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n } else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nfunction applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) {\n mutateDocument = true;\n }\n if (banPrototypeModifications === void 0) {\n banPrototypeModifications = true;\n }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nfunction applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) {\n // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nfunction validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n } else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n } else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n } else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n } else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n } else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n } else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n } else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n } else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n } else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = {\n op: \"_get\",\n path: operation.from,\n value: undefined\n };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nfunction validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n } else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n } catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n } else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nfunction _areEquals(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i,\n length,\n key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!_areEquals(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!b.hasOwnProperty(keys[i])) return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key])) return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\nvar core = /*#__PURE__*/Object.freeze({\n __proto__: null,\n JsonPatchError: JsonPatchError,\n _areEquals: _areEquals,\n applyOperation: applyOperation,\n applyPatch: applyPatch,\n applyReducer: applyReducer,\n deepClone: deepClone,\n getValueByPointer: getValueByPointer,\n validate: validate,\n validator: validator\n});\n\n/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}();\nvar ObserverInfo = /** @class */function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}();\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nfunction unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nfunction observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n } else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate$1(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') {\n //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate$1(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nfunction generate$1(observer, invertible) {\n if (invertible === void 0) {\n invertible = false;\n }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n } else {\n if (oldVal !== newVal) {\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(oldVal)\n });\n }\n patches.push({\n op: \"replace\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(newVal)\n });\n }\n }\n } else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(oldVal)\n });\n }\n patches.push({\n op: \"remove\",\n path: path + \"/\" + escapePathComponent(key)\n });\n deleted = true; // property has been deleted\n } else {\n if (invertible) {\n patches.push({\n op: \"test\",\n path: path,\n value: mirror\n });\n }\n patches.push({\n op: \"replace\",\n path: path,\n value: obj\n });\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({\n op: \"add\",\n path: path + \"/\" + escapePathComponent(key),\n value: _deepClone(obj[key])\n });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nfunction compare$9(tree1, tree2, invertible) {\n if (invertible === void 0) {\n invertible = false;\n }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\nvar duplex = /*#__PURE__*/Object.freeze({\n __proto__: null,\n compare: compare$9,\n generate: generate$1,\n observe: observe,\n unobserve: unobserve\n});\nObject.assign({}, core, duplex, {\n JsonPatchError: PatchError,\n deepClone: _deepClone,\n escapePathComponent,\n unescapePathComponent\n});\n\n// Note: This regex matches even invalid JSON strings, but since weā€™re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we donā€™t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\nvar jsonStringifyPrettyCompact = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n options = options || {};\n indent = JSON.stringify([1], undefined, options.indent === undefined ? 2 : options.indent).slice(2, -3);\n maxLength = indent === \"\" ? Infinity : options.maxLength === undefined ? 80 : options.maxLength;\n replacer = options.replacer;\n return function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n string = JSON.stringify(obj, replacer);\n if (string === undefined) {\n return string;\n }\n length = maxLength - currentIndent.length - reserved;\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function (match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(_stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) || \"null\");\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(obj[key], nextIndent, keyPart.length + (index === length - 1 ? 0 : 1));\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\"\\n\" + currentIndent);\n }\n }\n return string;\n }(passedObj, \"\", 0);\n};\nvar stringify$2 = /*@__PURE__*/getDefaultExportFromCjs$1(jsonStringifyPrettyCompact);\nfunction accessor(fn, fields, name) {\n fn.fields = fields || [];\n fn.fname = name;\n return fn;\n}\nfunction accessorName(fn) {\n return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n return fn == null ? null : fn.fields;\n}\nfunction getter(path) {\n return path.length === 1 ? get1(path[0]) : getN(path);\n}\nconst get1 = field => function (obj) {\n return obj[field];\n};\nconst getN = path => {\n const len = path.length;\n return function (obj) {\n for (let i = 0; i < len; ++i) {\n obj = obj[path[i]];\n }\n return obj;\n };\n};\nfunction error(message) {\n throw Error(message);\n}\nfunction splitAccessPath(p) {\n const path = [],\n n = p.length;\n let q = null,\n b = 0,\n s = '',\n i,\n j,\n c;\n p = p + '';\n function push() {\n path.push(s + p.substring(i, j));\n s = '';\n i = j + 1;\n }\n for (i = j = 0; j < n; ++j) {\n c = p[j];\n if (c === '\\\\') {\n s += p.substring(i, j++);\n i = j;\n } else if (c === q) {\n push();\n q = null;\n b = -1;\n } else if (q) {\n continue;\n } else if (i === b && c === '\"') {\n i = j + 1;\n q = c;\n } else if (i === b && c === \"'\") {\n i = j + 1;\n q = c;\n } else if (c === '.' && !b) {\n if (j > i) {\n push();\n } else {\n i = j + 1;\n }\n } else if (c === '[') {\n if (j > i) push();\n b = i = j + 1;\n } else if (c === ']') {\n if (!b) error('Access path missing open bracket: ' + p);\n if (b > 0) push();\n b = 0;\n i = j + 1;\n }\n }\n if (b) error('Access path missing closing bracket: ' + p);\n if (q) error('Access path missing closing quote: ' + p);\n if (j > i) {\n j++;\n push();\n }\n return path;\n}\nfunction field$1(field, name, opt) {\n const path = splitAccessPath(field);\n field = path.length === 1 ? path[0] : field;\n return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\nconst id = field$1('id');\nconst identity$6 = accessor(_ => _, [], 'identity');\nconst zero$5 = accessor(() => 0, [], 'zero');\nconst one$2 = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\nfunction log$1$1(method, level, input) {\n const args = [level].concat([].slice.call(input));\n console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None$2 = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger(_, method) {\n let handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : log$1$1;\n let level = _ || None$2;\n return {\n level(_) {\n if (arguments.length) {\n level = +_;\n return this;\n } else {\n return level;\n }\n },\n error() {\n if (level >= Error$1) handler(method || 'error', 'ERROR', arguments);\n return this;\n },\n warn() {\n if (level >= Warn) handler(method || 'warn', 'WARN', arguments);\n return this;\n },\n info() {\n if (level >= Info) handler(method || 'log', 'INFO', arguments);\n return this;\n },\n debug() {\n if (level >= Debug) handler(method || 'log', 'DEBUG', arguments);\n return this;\n }\n };\n}\nvar isArray = Array.isArray;\nfunction isObject(_) {\n return _ === Object(_);\n}\nconst isLegalKey = key => key !== '__proto__';\nfunction mergeConfig() {\n for (var _len = arguments.length, configs = new Array(_len), _key = 0; _key < _len; _key++) {\n configs[_key] = arguments[_key];\n }\n return configs.reduce((out, source) => {\n for (const key in source) {\n if (key === 'signals') {\n // for signals, we merge the signals arrays\n // source signals take precedence over\n // existing signals with the same name\n out.signals = mergeNamed(out.signals, source.signals);\n } else {\n // otherwise, merge objects subject to recursion constraints\n // for legend block, recurse for the layout entry only\n // for style block, recurse for all properties\n // otherwise, no recursion: objects overwrite, no merging\n const r = key === 'legend' ? {\n layout: 1\n } : key === 'style' ? true : null;\n writeConfig(out, key, source[key], r);\n }\n }\n return out;\n }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n if (!isLegalKey(key)) return;\n let k, o;\n if (isObject(value) && !isArray(value)) {\n o = isObject(output[key]) ? output[key] : output[key] = {};\n for (k in value) {\n if (recurse && (recurse === true || recurse[k])) {\n writeConfig(o, k, value[k]);\n } else if (isLegalKey(k)) {\n o[k] = value[k];\n }\n }\n } else {\n output[key] = value;\n }\n}\nfunction mergeNamed(a, b) {\n if (a == null) return b;\n const map = {},\n out = [];\n function add(_) {\n if (!map[_.name]) {\n map[_.name] = 1;\n out.push(_);\n }\n }\n b.forEach(add);\n a.forEach(add);\n return out;\n}\nfunction peek$1(array) {\n return array[array.length - 1];\n}\nfunction toNumber(_) {\n return _ == null || _ === '' ? null : +_;\n}\nconst exp$2 = sign => x => sign * Math.exp(x);\nconst log$4 = sign => x => Math.log(sign * x);\nconst symlog$1 = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\nconst pow$4 = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\nfunction pan(domain, delta, lift, ground) {\n const d0 = lift(domain[0]),\n d1 = lift(peek$1(domain)),\n dd = (d1 - d0) * delta;\n return [ground(d0 - dd), ground(d1 - dd)];\n}\nfunction panLinear(domain, delta) {\n return pan(domain, delta, toNumber, identity$6);\n}\nfunction panLog(domain, delta) {\n var sign = Math.sign(domain[0]);\n return pan(domain, delta, log$4(sign), exp$2(sign));\n}\nfunction panPow(domain, delta, exponent) {\n return pan(domain, delta, pow$4(exponent), pow$4(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n return pan(domain, delta, symlog$1(constant), symexp(constant));\n}\nfunction zoom$2(domain, anchor, scale, lift, ground) {\n const d0 = lift(domain[0]),\n d1 = lift(peek$1(domain)),\n da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\nfunction zoomLinear(domain, anchor, scale) {\n return zoom$2(domain, anchor, scale, toNumber, identity$6);\n}\nfunction zoomLog(domain, anchor, scale) {\n const sign = Math.sign(domain[0]);\n return zoom$2(domain, anchor, scale, log$4(sign), exp$2(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n return zoom$2(domain, anchor, scale, pow$4(exponent), pow$4(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n return zoom$2(domain, anchor, scale, symlog$1(constant), symexp(constant));\n}\nfunction quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\nfunction array$5(_) {\n return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange(range, min, max) {\n let lo = range[0],\n hi = range[1],\n span;\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n span = hi - lo;\n return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\nfunction isFunction$1(_) {\n return typeof _ === 'function';\n}\nconst DESCENDING = 'descending';\nfunction compare$8(fields, orders, opt) {\n opt = opt || {};\n orders = array$5(orders) || [];\n const ord = [],\n get = [],\n fmap = {},\n gen = opt.comparator || comparator$1;\n array$5(fields).forEach((f, i) => {\n if (f == null) return;\n ord.push(orders[i] === DESCENDING ? -1 : 1);\n get.push(f = isFunction$1(f) ? f : field$1(f, null, opt));\n (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n });\n return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending$3 = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\nconst comparator$1 = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\nconst compare1 = (field, order) => function (a, b) {\n return ascending$3(field(a), field(b)) * order;\n};\nconst compareN = (fields, orders, n) => {\n orders.push(0); // pad zero for convenient lookup\n return function (a, b) {\n let f,\n c = 0,\n i = -1;\n while (c === 0 && ++i < n) {\n f = fields[i];\n c = ascending$3(f(a), f(b));\n }\n return c * orders[i];\n };\n};\nfunction constant$5(_) {\n return isFunction$1(_) ? _ : () => _;\n}\nfunction debounce(delay, handler) {\n let tid;\n return e => {\n if (tid) clearTimeout(tid);\n tid = setTimeout(() => (handler(e), tid = null), delay);\n };\n}\nfunction extend$1(_) {\n for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n x = arguments[i];\n for (k in x) {\n _[k] = x[k];\n }\n }\n return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent(array, f) {\n let i = 0,\n n,\n v,\n min,\n max;\n if (array && (n = array.length)) {\n if (f == null) {\n // find first valid value\n for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n min = max = v;\n\n // visit all other values\n for (; i < n; ++i) {\n v = array[i];\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n } else {\n // find first valid value\n for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n min = max = v;\n\n // visit all other values\n for (; i < n; ++i) {\n v = f(array[i]);\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n }\n }\n return [min, max];\n}\nfunction extentIndex(array, f) {\n const n = array.length;\n let i = -1,\n a,\n b,\n c,\n u,\n v;\n if (f == null) {\n while (++i < n) {\n b = array[i];\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n if (i === n) return [-1, -1];\n u = v = i;\n while (++i < n) {\n b = array[i];\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n } else {\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n if (i === n) return [-1, -1];\n u = v = i;\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n }\n return [u, v];\n}\nconst hop = Object.prototype.hasOwnProperty;\nfunction has$1(object, property) {\n return hop.call(object, property);\n}\nconst NULL = {};\nfunction fastmap(input) {\n let obj = {},\n test;\n function has$1$1(key) {\n return has$1(obj, key) && obj[key] !== NULL;\n }\n const map = {\n size: 0,\n empty: 0,\n object: obj,\n has: has$1$1,\n get(key) {\n return has$1$1(key) ? obj[key] : undefined;\n },\n set(key, value) {\n if (!has$1$1(key)) {\n ++map.size;\n if (obj[key] === NULL) --map.empty;\n }\n obj[key] = value;\n return this;\n },\n delete(key) {\n if (has$1$1(key)) {\n --map.size;\n ++map.empty;\n obj[key] = NULL;\n }\n return this;\n },\n clear() {\n map.size = map.empty = 0;\n map.object = obj = {};\n },\n test(_) {\n if (arguments.length) {\n test = _;\n return map;\n } else {\n return test;\n }\n },\n clean() {\n const next = {};\n let size = 0;\n for (const key in obj) {\n const value = obj[key];\n if (value !== NULL && (!test || !test(value))) {\n next[key] = value;\n ++size;\n }\n }\n map.size = size;\n map.empty = 0;\n map.object = obj = next;\n }\n };\n if (input) Object.keys(input).forEach(key => {\n map.set(key, input[key]);\n });\n return map;\n}\nfunction flush(range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n const t = +threshold;\n let a = range[0],\n b = peek$1(range),\n l;\n\n // swap endpoints if range is reversed\n if (b < a) {\n l = a;\n a = b;\n b = l;\n }\n\n // compare value to endpoints\n l = Math.abs(value - a);\n const r = Math.abs(b - value);\n\n // adjust if value is within threshold distance of endpoint\n return l < r && l <= t ? left : r <= t ? right : center;\n}\nfunction inherits(child, parent, members) {\n const proto = child.prototype = Object.create(parent.prototype);\n Object.defineProperty(proto, 'constructor', {\n value: child,\n writable: true,\n enumerable: true,\n configurable: true\n });\n return extend$1(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange(value, range, left, right) {\n let r0 = range[0],\n r1 = range[range.length - 1],\n t;\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n left = left === undefined || left;\n right = right === undefined || right;\n return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\nfunction isBoolean$2(_) {\n return typeof _ === 'boolean';\n}\nfunction isDate$1(_) {\n return Object.prototype.toString.call(_) === '[object Date]';\n}\nfunction isIterable(_) {\n return _ && isFunction$1(_[Symbol.iterator]);\n}\nfunction isNumber$1(_) {\n return typeof _ === 'number';\n}\nfunction isRegExp(_) {\n return Object.prototype.toString.call(_) === '[object RegExp]';\n}\nfunction isString(_) {\n return typeof _ === 'string';\n}\nfunction key(fields, flat, opt) {\n if (fields) {\n fields = flat ? array$5(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array$5(fields);\n }\n const len = fields && fields.length,\n gen = opt && opt.get || getter,\n map = f => gen(flat ? [f] : splitAccessPath(f));\n let fn;\n if (!len) {\n fn = function () {\n return '';\n };\n } else if (len === 1) {\n const get = map(fields[0]);\n fn = function (_) {\n return '' + get(_);\n };\n } else {\n const get = fields.map(map);\n fn = function (_) {\n let s = '' + get[0](_),\n i = 0;\n while (++i < len) s += '|' + get[i](_);\n return s;\n };\n }\n return accessor(fn, fields, 'key');\n}\nfunction lerp(array, frac) {\n const lo = array[0],\n hi = peek$1(array),\n f = +frac;\n return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\nconst DEFAULT_MAX_SIZE = 10000;\n\n// adapted from https://github.com/dominictarr/hashlru/ (MIT License)\nfunction lruCache$1(maxsize) {\n maxsize = +maxsize || DEFAULT_MAX_SIZE;\n let curr, prev, size;\n const clear = () => {\n curr = {};\n prev = {};\n size = 0;\n };\n const update = (key, value) => {\n if (++size > maxsize) {\n prev = curr;\n curr = {};\n size = 1;\n }\n return curr[key] = value;\n };\n clear();\n return {\n clear,\n has: key => has$1(curr, key) || has$1(prev, key),\n get: key => has$1(curr, key) ? curr[key] : has$1(prev, key) ? update(key, prev[key]) : undefined,\n set: (key, value) => has$1(curr, key) ? curr[key] = value : update(key, value)\n };\n}\nfunction merge$3(compare, array0, array1, output) {\n const n0 = array0.length,\n n1 = array1.length;\n if (!n1) return array0;\n if (!n0) return array1;\n const merged = output || new array0.constructor(n0 + n1);\n let i0 = 0,\n i1 = 0,\n i = 0;\n for (; i0 < n0 && i1 < n1; ++i) {\n merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n }\n for (; i0 < n0; ++i0, ++i) {\n merged[i] = array0[i0];\n }\n for (; i1 < n1; ++i1, ++i) {\n merged[i] = array1[i1];\n }\n return merged;\n}\nfunction repeat(str, reps) {\n let s = '';\n while (--reps >= 0) s += str;\n return s;\n}\nfunction pad$2(str, length, padchar, align) {\n const c = padchar || ' ',\n s = str + '',\n n = length - s.length;\n return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nfunction span(array) {\n return array && peek$1(array) - array[0] || 0;\n}\nfunction $(x) {\n return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ?\n // Output valid JSON and JS source strings.\n // See http://timelessrepo.com/json-isnt-a-javascript-subset\n JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\nfunction toBoolean(_) {\n return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\nconst defaultParser = _ => isNumber$1(_) ? _ : isDate$1(_) ? _ : Date.parse(_);\nfunction toDate(_, parser) {\n parser = parser || defaultParser;\n return _ == null || _ === '' ? null : parser(_);\n}\nfunction toString(_) {\n return _ == null || _ === '' ? null : _ + '';\n}\nfunction toSet(_) {\n const s = {},\n n = _.length;\n for (let i = 0; i < n; ++i) s[_[i]] = true;\n return s;\n}\nfunction truncate$1(str, length, align, ellipsis) {\n const e = ellipsis != null ? ellipsis : '\\u2026',\n s = str + '',\n n = s.length,\n l = Math.max(0, length - e.length);\n return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\nfunction visitArray(array, filter, visitor) {\n if (array) {\n if (filter) {\n const n = array.length;\n for (let i = 0; i < n; ++i) {\n const t = filter(array[i]);\n if (t) visitor(t, i, array);\n }\n } else {\n array.forEach(visitor);\n }\n }\n}\nvar EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function (name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function (row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n rows.forEach(function (row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n return columns;\n}\nfunction pad$1(value, width) {\n var s = value + \"\",\n length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\nfunction formatYear$1(year) {\n return year < 0 ? \"-\" + pad$1(-year, 6) : year > 9999 ? \"+\" + pad$1(year, 6) : pad$1(year, 4);\n}\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\" : formatYear$1(date.getUTCFullYear()) + \"-\" + pad$1(date.getUTCMonth() + 1, 2) + \"-\" + pad$1(date.getUTCDate(), 2) + (milliseconds ? \"T\" + pad$1(hours, 2) + \":\" + pad$1(minutes, 2) + \":\" + pad$1(seconds, 2) + \".\" + pad$1(milliseconds, 3) + \"Z\" : seconds ? \"T\" + pad$1(hours, 2) + \":\" + pad$1(minutes, 2) + \":\" + pad$1(seconds, 2) + \"Z\" : minutes || hours ? \"T\" + pad$1(hours, 2) + \":\" + pad$1(minutes, 2) + \"Z\" : \"\");\n}\nfunction dsvFormat(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n function parse(text, f) {\n var convert,\n columns,\n rows = parseRows(text, function (row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n function parseRows(text, f) {\n var rows = [],\n // output rows\n N = text.length,\n I = 0,\n // current character index\n n = 0,\n // current line number\n t,\n // current token\n eof = N <= 0,\n // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i,\n j = I,\n c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;else if (c === RETURN) {\n eol = true;\n if (text.charCodeAt(I) === NEWLINE) ++I;\n }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;else if (c === RETURN) {\n eol = true;\n if (text.charCodeAt(I) === NEWLINE) ++I;\n } else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n return rows;\n }\n function preformatBody(rows, columns) {\n return rows.map(function (row) {\n return columns.map(function (column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(value) {\n return value == null ? \"\" : value instanceof Date ? formatDate(value) : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\" : value;\n }\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\nfunction identity$5(x) {\n return x;\n}\nfunction transform$3(transform) {\n if (transform == null) return identity$5;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function (input, i) {\n if (!i) x0 = y0 = 0;\n var j = 2,\n n = input.length,\n output = new Array(n);\n output[0] = (x0 += input[0]) * kx + dx;\n output[1] = (y0 += input[1]) * ky + dy;\n while (j < n) output[j] = input[j], ++j;\n return output;\n };\n}\nfunction reverse$2(array, n) {\n var t,\n j = array.length,\n i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\nfunction feature(topology, o) {\n if (typeof o === \"string\") o = topology.objects[o];\n return o.type === \"GeometryCollection\" ? {\n type: \"FeatureCollection\",\n features: o.geometries.map(function (o) {\n return feature$1(topology, o);\n })\n } : feature$1(topology, o);\n}\nfunction feature$1(topology, o) {\n var id = o.id,\n bbox = o.bbox,\n properties = o.properties == null ? {} : o.properties,\n geometry = object$1(topology, o);\n return id == null && bbox == null ? {\n type: \"Feature\",\n properties: properties,\n geometry: geometry\n } : bbox == null ? {\n type: \"Feature\",\n id: id,\n properties: properties,\n geometry: geometry\n } : {\n type: \"Feature\",\n id: id,\n bbox: bbox,\n properties: properties,\n geometry: geometry\n };\n}\nfunction object$1(topology, o) {\n var transformPoint = transform$3(topology.transform),\n arcs = topology.arcs;\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n points.push(transformPoint(a[k], k));\n }\n if (i < 0) reverse$2(points, n);\n }\n function point(p) {\n return transformPoint(p);\n }\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n return points;\n }\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n return points;\n }\n function polygon(arcs) {\n return arcs.map(ring);\n }\n function geometry(o) {\n var type = o.type,\n coordinates;\n switch (type) {\n case \"GeometryCollection\":\n return {\n type: type,\n geometries: o.geometries.map(geometry)\n };\n case \"Point\":\n coordinates = point(o.coordinates);\n break;\n case \"MultiPoint\":\n coordinates = o.coordinates.map(point);\n break;\n case \"LineString\":\n coordinates = line(o.arcs);\n break;\n case \"MultiLineString\":\n coordinates = o.arcs.map(line);\n break;\n case \"Polygon\":\n coordinates = polygon(o.arcs);\n break;\n case \"MultiPolygon\":\n coordinates = o.arcs.map(polygon);\n break;\n default:\n return null;\n }\n return {\n type: type,\n coordinates: coordinates\n };\n }\n return geometry(o);\n}\nfunction stitch(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function (i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i],\n t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n arcs.forEach(function (i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f,\n g;\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i],\n p0 = arc[0],\n p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function (dp) {\n p1[0] += dp[0], p1[1] += dp[1];\n });else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function (i) {\n stitchedArcs[i < 0 ? ~i : i] = 1;\n });\n fragments.push(f);\n }\n }\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function (i) {\n if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]);\n });\n return fragments;\n}\nfunction mesh(topology) {\n return object$1(topology, meshArcs.apply(this, arguments));\n}\nfunction meshArcs(topology, object, filter) {\n var arcs, i, n;\n if (arguments.length > 1) arcs = extractArcs(topology, object, filter);else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n return {\n type: \"MultiLineString\",\n arcs: stitch(topology, arcs)\n };\n}\nfunction extractArcs(topology, object, filter) {\n var arcs = [],\n geomsByArc = [],\n geom;\n function extract0(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({\n i: i,\n g: geom\n });\n }\n function extract1(arcs) {\n arcs.forEach(extract0);\n }\n function extract2(arcs) {\n arcs.forEach(extract1);\n }\n function extract3(arcs) {\n arcs.forEach(extract2);\n }\n function geometry(o) {\n switch (geom = o, o.type) {\n case \"GeometryCollection\":\n o.geometries.forEach(geometry);\n break;\n case \"LineString\":\n extract1(o.arcs);\n break;\n case \"MultiLineString\":\n case \"Polygon\":\n extract2(o.arcs);\n break;\n case \"MultiPolygon\":\n extract3(o.arcs);\n break;\n }\n }\n geometry(object);\n geomsByArc.forEach(filter == null ? function (geoms) {\n arcs.push(geoms[0].i);\n } : function (geoms) {\n if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i);\n });\n return arcs;\n}\nfunction ascending$2(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nfunction descending$2(a, b) {\n return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\nfunction bisector$1(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We canā€™t do this\n // for a comparator (except for specific, known comparators) because we canā€™t\n // tell if the comparator is symmetric, and an asymmetric comparator canā€™t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending$2;\n compare2 = (d, x) => ascending$2(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending$2 || f === descending$2 ? f : zero$4;\n compare2 = f;\n delta = f;\n }\n function left(a, x) {\n let lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = lo + hi >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function right(a, x) {\n let lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = lo + hi >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function center(a, x) {\n let lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n return {\n left,\n center,\n right\n };\n}\nfunction zero$4() {\n return 0;\n}\nfunction number$6(x) {\n return x === null ? NaN : +x;\n}\nfunction* numbers$2(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\nconst ascendingBisect = bisector$1(ascending$2);\nconst bisectRight$1 = ascendingBisect.right;\nconst bisectLeft$1 = ascendingBisect.left;\nbisector$1(number$6).center;\nvar bisect$1 = bisectRight$1;\nfunction variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\nfunction deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n\n// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nclass Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n,\n x,\n y,\n lo,\n hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && (lo < 0 && p[n - 1] < 0 || lo > 0 && p[n - 1] > 0)) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\nclass InternMap extends Map {\n constructor(entries) {\n let key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : keyof;\n super();\n Object.defineProperties(this, {\n _intern: {\n value: new Map()\n },\n _key: {\n value: key\n }\n });\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\nclass InternSet extends Set {\n constructor(values) {\n let key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : keyof;\n super();\n Object.defineProperties(this, {\n _intern: {\n value: new Map()\n },\n _key: {\n value: key\n }\n });\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\nfunction intern_get(_ref6, value) {\n let {\n _intern,\n _key\n } = _ref6;\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\nfunction intern_set(_ref7, value) {\n let {\n _intern,\n _key\n } = _ref7;\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\nfunction intern_delete(_ref8, value) {\n let {\n _intern,\n _key\n } = _ref8;\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\nfunction permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\nfunction compareDefined() {\n let compare = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ascending$2;\n if (compare === ascending$2) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\nfunction ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\nconst e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\nfunction ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start,\n [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1,\n ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\nfunction tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\nfunction tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start,\n inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\nfunction max$2(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n }\n }\n return max;\n}\nfunction min$2(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n }\n }\n return min;\n}\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nfunction quickselect(array, k) {\n let left = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let right = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Infinity;\n let compare = arguments.length > 4 ? arguments[4] : undefined;\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n if (!(left <= k && k <= right)) return array;\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n const t = array[k];\n let i = left;\n let j = right;\n swap$1(array, left, k);\n if (compare(array[right], t) > 0) swap$1(array, left, right);\n while (i < j) {\n swap$1(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n if (compare(array[left], t) === 0) swap$1(array, left, j);else ++j, swap$1(array, j, right);\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\nfunction swap$1(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\nfunction quantile$1(values, p, valueof) {\n values = Float64Array.from(numbers$2(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min$2(values);\n if (p >= 1) return max$2(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max$2(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min$2(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\nfunction quantileSorted(values, p) {\n let valueof = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : number$6;\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\nfunction mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\nfunction median(values, valueof) {\n return quantile$1(values, 0.5, valueof);\n}\nfunction* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\nfunction merge$2(arrays) {\n return Array.from(flatten(arrays));\n}\nfunction range$5(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n while (++i < n) {\n range[i] = start + i * step;\n }\n return range;\n}\nfunction sum$1(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\nfunction formatDecimal(x) {\n return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString(\"en\").replace(/,/g, \"\") : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, Ā±Infinity\n var i,\n coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)];\n}\nfunction exponent(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\nfunction formatGroup(grouping, thousands) {\n return function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n}\nfunction formatNumerals(numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n}\n\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re$2 = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nfunction formatSpecifier(specifier) {\n if (!(match = re$2.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\nFormatSpecifier.prototype.toString = function () {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width === undefined ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0)) + (this.trim ? \"~\" : \"\") + this.type;\n};\n\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nfunction formatTrim(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\":\n i0 = i1 = i;\n break;\n case \"0\":\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n default:\n if (!+s[i]) break out;\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\nvar prefixExponent;\nfunction formatPrefixAuto(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n\nfunction formatRounded(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\nvar formatTypes = {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": x => Math.round(x).toString(2),\n \"c\": x => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": x => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": x => Math.round(x).toString(16).toUpperCase(),\n \"x\": x => Math.round(x).toString(16)\n};\nfunction identity$4(x) {\n return x;\n}\nvar map$1 = Array.prototype.map,\n prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"Āµ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\nfunction formatLocale$1(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity$4 : formatGroup(map$1.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity$4 : formatNumerals(map$1.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"āˆ’\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i,\n n,\n c;\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : minus : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer ā€œvalueā€ part that can be\n // grouped, and fractional or exponential ā€œsuffixā€ part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n return numerals(value);\n }\n format.toString = function () {\n return specifier + \"\";\n };\n return format;\n }\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\nvar locale$2;\nvar format$3;\nvar formatPrefix;\ndefaultLocale$2({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\nfunction defaultLocale$2(definition) {\n locale$2 = formatLocale$1(definition);\n format$3 = locale$2.format;\n formatPrefix = locale$2.formatPrefix;\n return locale$2;\n}\nfunction precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\nfunction precisionPrefix(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\nfunction precisionRound(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\nconst t0$2 = new Date(),\n t1$1 = new Date();\nfunction timeInterval$1(floori, offseti, count, field) {\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date() : new Date(+date)), date;\n }\n interval.floor = date => {\n return floori(date = new Date(+date)), date;\n };\n interval.ceil = date => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n interval.round = date => {\n const d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start); while (previous < start && start < stop);\n return range;\n };\n interval.filter = test => {\n return timeInterval$1(date => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0$2.setTime(+start), t1$1.setTime(+end);\n floori(t0$2), floori(t1$1);\n return Math.floor(count(t0$2, t1$1));\n };\n interval.every = step => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? d => field(d) % step === 0 : d => interval.count(0, d) % step === 0);\n };\n }\n return interval;\n}\nconst millisecond = timeInterval$1(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = k => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval$1(date => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\nmillisecond.range;\nconst durationSecond$1 = 1000;\nconst durationMinute$1 = durationSecond$1 * 60;\nconst durationHour$1 = durationMinute$1 * 60;\nconst durationDay$1 = durationHour$1 * 24;\nconst durationWeek$1 = durationDay$1 * 7;\nconst durationMonth$1 = durationDay$1 * 30;\nconst durationYear$1 = durationDay$1 * 365;\nconst second = timeInterval$1(date => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond$1);\n}, (start, end) => {\n return (end - start) / durationSecond$1;\n}, date => {\n return date.getUTCSeconds();\n});\nsecond.range;\nconst timeMinute = timeInterval$1(date => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond$1);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute$1);\n}, (start, end) => {\n return (end - start) / durationMinute$1;\n}, date => {\n return date.getMinutes();\n});\ntimeMinute.range;\nconst utcMinute = timeInterval$1(date => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute$1);\n}, (start, end) => {\n return (end - start) / durationMinute$1;\n}, date => {\n return date.getUTCMinutes();\n});\nutcMinute.range;\nconst timeHour = timeInterval$1(date => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond$1 - date.getMinutes() * durationMinute$1);\n}, (date, step) => {\n date.setTime(+date + step * durationHour$1);\n}, (start, end) => {\n return (end - start) / durationHour$1;\n}, date => {\n return date.getHours();\n});\ntimeHour.range;\nconst utcHour = timeInterval$1(date => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour$1);\n}, (start, end) => {\n return (end - start) / durationHour$1;\n}, date => {\n return date.getUTCHours();\n});\nutcHour.range;\nconst timeDay = timeInterval$1(date => date.setHours(0, 0, 0, 0), (date, step) => date.setDate(date.getDate() + step), (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute$1) / durationDay$1, date => date.getDate() - 1);\ntimeDay.range;\nconst utcDay = timeInterval$1(date => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay$1;\n}, date => {\n return date.getUTCDate() - 1;\n});\nutcDay.range;\nconst unixDay = timeInterval$1(date => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay$1;\n}, date => {\n return Math.floor(date / durationDay$1);\n});\nunixDay.range;\nfunction timeWeekday(i) {\n return timeInterval$1(date => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute$1) / durationWeek$1;\n });\n}\nconst timeSunday = timeWeekday(0);\nconst timeMonday = timeWeekday(1);\nconst timeTuesday = timeWeekday(2);\nconst timeWednesday = timeWeekday(3);\nconst timeThursday = timeWeekday(4);\nconst timeFriday = timeWeekday(5);\nconst timeSaturday = timeWeekday(6);\ntimeSunday.range;\ntimeMonday.range;\ntimeTuesday.range;\ntimeWednesday.range;\ntimeThursday.range;\ntimeFriday.range;\ntimeSaturday.range;\nfunction utcWeekday(i) {\n return timeInterval$1(date => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek$1;\n });\n}\nconst utcSunday = utcWeekday(0);\nconst utcMonday = utcWeekday(1);\nconst utcTuesday = utcWeekday(2);\nconst utcWednesday = utcWeekday(3);\nconst utcThursday = utcWeekday(4);\nconst utcFriday = utcWeekday(5);\nconst utcSaturday = utcWeekday(6);\nutcSunday.range;\nutcMonday.range;\nutcTuesday.range;\nutcWednesday.range;\nutcThursday.range;\nutcFriday.range;\nutcSaturday.range;\nconst timeMonth = timeInterval$1(date => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, date => {\n return date.getMonth();\n});\ntimeMonth.range;\nconst utcMonth = timeInterval$1(date => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, date => {\n return date.getUTCMonth();\n});\nutcMonth.range;\nconst timeYear = timeInterval$1(date => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, date => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = k => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval$1(date => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\ntimeYear.range;\nconst utcYear = timeInterval$1(date => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, date => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = k => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval$1(date => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\nutcYear.range;\nfunction ticker(year, month, week, day, hour, minute) {\n const tickIntervals = [[second, 1, durationSecond$1], [second, 5, 5 * durationSecond$1], [second, 15, 15 * durationSecond$1], [second, 30, 30 * durationSecond$1], [minute, 1, durationMinute$1], [minute, 5, 5 * durationMinute$1], [minute, 15, 15 * durationMinute$1], [minute, 30, 30 * durationMinute$1], [hour, 1, durationHour$1], [hour, 3, 3 * durationHour$1], [hour, 6, 6 * durationHour$1], [hour, 12, 12 * durationHour$1], [day, 1, durationDay$1], [day, 2, 2 * durationDay$1], [week, 1, durationWeek$1], [month, 1, durationMonth$1], [month, 3, 3 * durationMonth$1], [year, 1, durationYear$1]];\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector$1(_ref9 => {\n let [,, step] = _ref9;\n return step;\n }).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear$1, stop / durationYear$1, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n return [ticks, tickInterval];\n}\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\nconst YEAR = 'year';\nconst QUARTER = 'quarter';\nconst MONTH = 'month';\nconst WEEK = 'week';\nconst DATE = 'date';\nconst DAY = 'day';\nconst DAYOFYEAR = 'dayofyear';\nconst HOURS = 'hours';\nconst MINUTES = 'minutes';\nconst SECONDS = 'seconds';\nconst MILLISECONDS = 'milliseconds';\nconst TIME_UNITS = [YEAR, QUARTER, MONTH, WEEK, DATE, DAY, DAYOFYEAR, HOURS, MINUTES, SECONDS, MILLISECONDS];\nconst UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});\nfunction timeUnits(units) {\n const u = array$5(units).slice(),\n m = {};\n\n // check validity\n if (!u.length) error('Missing time unit.');\n u.forEach(unit => {\n if (has$1(UNITS, unit)) {\n m[unit] = 1;\n } else {\n error(\"Invalid time unit: \".concat(unit, \".\"));\n }\n });\n const numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);\n if (numTypes > 1) {\n error(\"Incompatible time units: \".concat(units));\n }\n\n // ensure proper sort order\n u.sort((a, b) => UNITS[a] - UNITS[b]);\n return u;\n}\nconst defaultSpecifiers = {\n [YEAR]: '%Y ',\n [QUARTER]: 'Q%q ',\n [MONTH]: '%b ',\n [DATE]: '%d ',\n [WEEK]: 'W%U ',\n [DAY]: '%a ',\n [DAYOFYEAR]: '%j ',\n [HOURS]: '%H:00',\n [MINUTES]: '00:%M',\n [SECONDS]: ':%S',\n [MILLISECONDS]: '.%L',\n [\"\".concat(YEAR, \"-\").concat(MONTH)]: '%Y-%m ',\n [\"\".concat(YEAR, \"-\").concat(MONTH, \"-\").concat(DATE)]: '%Y-%m-%d ',\n [\"\".concat(HOURS, \"-\").concat(MINUTES)]: '%H:%M'\n};\nfunction timeUnitSpecifier(units, specifiers) {\n const s = extend$1({}, defaultSpecifiers, specifiers),\n u = timeUnits(units),\n n = u.length;\n let fmt = '',\n start = 0,\n end,\n key;\n for (start = 0; start < n;) {\n for (end = u.length; end > start; --end) {\n key = u.slice(start, end).join('-');\n if (s[key] != null) {\n fmt += s[key];\n start = end;\n break;\n }\n }\n }\n return fmt.trim();\n}\nconst t0$1 = new Date();\nfunction localYear(y) {\n t0$1.setFullYear(y);\n t0$1.setMonth(0);\n t0$1.setDate(1);\n t0$1.setHours(0, 0, 0, 0);\n return t0$1;\n}\nfunction dayofyear(d) {\n return localDayOfYear(new Date(d));\n}\nfunction week(d) {\n return localWeekNum(new Date(d));\n}\nfunction localDayOfYear(d) {\n return timeDay.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localWeekNum(d) {\n return timeSunday.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localFirst(y) {\n return localYear(y).getDay();\n}\nfunction localDate$1(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n const date = new Date(-1, m, d, H, M, S, L);\n date.setFullYear(y);\n return date;\n }\n return new Date(y, m, d, H, M, S, L);\n}\nfunction utcdayofyear(d) {\n return utcDayOfYear(new Date(d));\n}\nfunction utcweek(d) {\n return utcWeekNum(new Date(d));\n}\nfunction utcDayOfYear(d) {\n const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcDay.count(y - 1, d);\n}\nfunction utcWeekNum(d) {\n const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcSunday.count(y - 1, d);\n}\nfunction utcFirst(y) {\n t0$1.setTime(Date.UTC(y, 0, 1));\n return t0$1.getUTCDay();\n}\nfunction utcDate$1(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n const date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\nfunction floor(units, step, get, inv, newDate) {\n const s = step || 1,\n b = peek$1(units),\n _ = (unit, p, key) => {\n key = key || unit;\n return getUnit(get[key], inv[key], unit === b && s, p);\n };\n const t = new Date(),\n u = toSet(units),\n y = u[YEAR] ? _(YEAR) : constant$5(2012),\n m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : zero$5,\n d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : one$2,\n H = u[HOURS] ? _(HOURS) : zero$5,\n M = u[MINUTES] ? _(MINUTES) : zero$5,\n S = u[SECONDS] ? _(SECONDS) : zero$5,\n L = u[MILLISECONDS] ? _(MILLISECONDS) : zero$5;\n return function (v) {\n t.setTime(+v);\n const year = y(t);\n return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n };\n}\nfunction getUnit(f, inv, step, phase) {\n const u = step <= 1 ? f : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step) : (d, y) => step * Math.floor(f(d, y) / step);\n return inv ? (d, y) => inv(u(d, y), y) : u;\n}\n\n// returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\nfunction weekday(week, day, firstDay) {\n return day + week * 7 - (firstDay + 6) % 7;\n}\n\n// -- LOCAL TIME --\n\nconst localGet = {\n [YEAR]: d => d.getFullYear(),\n [QUARTER]: d => Math.floor(d.getMonth() / 3),\n [MONTH]: d => d.getMonth(),\n [DATE]: d => d.getDate(),\n [HOURS]: d => d.getHours(),\n [MINUTES]: d => d.getMinutes(),\n [SECONDS]: d => d.getSeconds(),\n [MILLISECONDS]: d => d.getMilliseconds(),\n [DAYOFYEAR]: d => localDayOfYear(d),\n [WEEK]: d => localWeekNum(d),\n [WEEK + DAY]: (d, y) => weekday(localWeekNum(d), d.getDay(), localFirst(y)),\n [DAY]: (d, y) => weekday(1, d.getDay(), localFirst(y))\n};\nconst localInv = {\n [QUARTER]: q => 3 * q,\n [WEEK]: (w, y) => weekday(w, 0, localFirst(y))\n};\nfunction timeFloor(units, step) {\n return floor(units, step || 1, localGet, localInv, localDate$1);\n}\n\n// -- UTC TIME --\n\nconst utcGet = {\n [YEAR]: d => d.getUTCFullYear(),\n [QUARTER]: d => Math.floor(d.getUTCMonth() / 3),\n [MONTH]: d => d.getUTCMonth(),\n [DATE]: d => d.getUTCDate(),\n [HOURS]: d => d.getUTCHours(),\n [MINUTES]: d => d.getUTCMinutes(),\n [SECONDS]: d => d.getUTCSeconds(),\n [MILLISECONDS]: d => d.getUTCMilliseconds(),\n [DAYOFYEAR]: d => utcDayOfYear(d),\n [WEEK]: d => utcWeekNum(d),\n [DAY]: (d, y) => weekday(1, d.getUTCDay(), utcFirst(y)),\n [WEEK + DAY]: (d, y) => weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y))\n};\nconst utcInv = {\n [QUARTER]: q => 3 * q,\n [WEEK]: (w, y) => weekday(w, 0, utcFirst(y))\n};\nfunction utcFloor(units, step) {\n return floor(units, step || 1, utcGet, utcInv, utcDate$1);\n}\nconst timeIntervals = {\n [YEAR]: timeYear,\n [QUARTER]: timeMonth.every(3),\n [MONTH]: timeMonth,\n [WEEK]: timeSunday,\n [DATE]: timeDay,\n [DAY]: timeDay,\n [DAYOFYEAR]: timeDay,\n [HOURS]: timeHour,\n [MINUTES]: timeMinute,\n [SECONDS]: second,\n [MILLISECONDS]: millisecond\n};\nconst utcIntervals = {\n [YEAR]: utcYear,\n [QUARTER]: utcMonth.every(3),\n [MONTH]: utcMonth,\n [WEEK]: utcSunday,\n [DATE]: utcDay,\n [DAY]: utcDay,\n [DAYOFYEAR]: utcDay,\n [HOURS]: utcHour,\n [MINUTES]: utcMinute,\n [SECONDS]: second,\n [MILLISECONDS]: millisecond\n};\nfunction timeInterval(unit) {\n return timeIntervals[unit];\n}\nfunction utcInterval(unit) {\n return utcIntervals[unit];\n}\nfunction offset$3(ival, date, step) {\n return ival ? ival.offset(date, step) : undefined;\n}\nfunction timeOffset(unit, date, step) {\n return offset$3(timeInterval(unit), date, step);\n}\nfunction utcOffset(unit, date, step) {\n return offset$3(utcInterval(unit), date, step);\n}\nfunction sequence$1(ival, start, stop, step) {\n return ival ? ival.range(start, stop, step) : undefined;\n}\nfunction timeSequence(unit, start, stop, step) {\n return sequence$1(timeInterval(unit), start, stop, step);\n}\nfunction utcSequence(unit, start, stop, step) {\n return sequence$1(utcInterval(unit), start, stop, step);\n}\nconst durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\nconst Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n Seconds = Milli.slice(0, -1),\n Minutes = Seconds.slice(0, -1),\n Hours = Minutes.slice(0, -1),\n Day = Hours.slice(0, -1),\n Week = [YEAR, WEEK],\n Month = [YEAR, MONTH],\n Year = [YEAR];\nconst intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];\nfunction bin$2(opt) {\n const ext = opt.extent,\n max = opt.maxbins || 40,\n target = Math.abs(span(ext)) / max;\n let i = bisector$1(i => i[2]).right(intervals, target),\n units,\n step;\n if (i === intervals.length) {\n units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);\n } else if (i) {\n i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n units = i[0];\n step = i[1];\n } else {\n units = Milli;\n step = Math.max(tickStep(ext[0], ext[1], max), 1);\n }\n return {\n units,\n step\n };\n}\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\nfunction newDate(y, m, d) {\n return {\n y: y,\n m: m,\n d: d,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nfunction formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n if (!(date instanceof Date)) date = new Date(+date);\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n function newParse(specifier, Z) {\n return function (string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n return {\n format: function (specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function (specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function (specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function (specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n}\nvar pads = {\n \"-\": \"\",\n \"_\": \" \",\n \"0\": \"0\"\n },\n numberRe = /^\\s*\\d+/,\n // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction dISO(d) {\n var day = d.getDay();\n return day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n}\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n}\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n}\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\nfunction formatUTCZone() {\n return \"+0000\";\n}\nfunction formatLiteralPercent() {\n return \"%\";\n}\nfunction formatUnixTimestamp(d) {\n return +d;\n}\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\nvar locale$1;\nvar timeFormat$2;\nvar timeParse$1;\nvar utcFormat$1;\nvar utcParse$1;\ndefaultLocale$1({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\nfunction defaultLocale$1(definition) {\n locale$1 = formatLocale(definition);\n timeFormat$2 = locale$1.format;\n timeParse$1 = locale$1.parse;\n utcFormat$1 = locale$1.utcFormat;\n utcParse$1 = locale$1.utcParse;\n return locale$1;\n}\nfunction memoize(method) {\n const cache = {};\n return spec => cache[spec] || (cache[spec] = method(spec));\n}\nfunction trimZeroes(numberFormat, decimalChar) {\n return x => {\n const str = numberFormat(x),\n dec = str.indexOf(decimalChar);\n if (dec < 0) return str;\n let idx = rightmostDigit(str, dec);\n const end = idx < str.length ? str.slice(idx) : '';\n while (--idx > dec) if (str[idx] !== '0') {\n ++idx;\n break;\n }\n return str.slice(0, idx) + end;\n };\n}\nfunction rightmostDigit(str, dec) {\n let i = str.lastIndexOf('e'),\n c;\n if (i > 0) return i;\n for (i = str.length; --i > dec;) {\n c = str.charCodeAt(i);\n if (c >= 48 && c <= 57) return i + 1; // is digit\n }\n}\n\nfunction numberLocale(locale) {\n const format = memoize(locale.format),\n formatPrefix = locale.formatPrefix;\n return {\n format,\n formatPrefix,\n formatFloat(spec) {\n const s = formatSpecifier(spec || ',');\n if (s.precision == null) {\n s.precision = 12;\n switch (s.type) {\n case '%':\n s.precision -= 2;\n break;\n case 'e':\n s.precision -= 1;\n break;\n }\n return trimZeroes(format(s),\n // number format\n format('.1f')(1)[1] // decimal point character\n );\n } else {\n return format(s);\n }\n },\n formatSpan(start, stop, count, specifier) {\n specifier = formatSpecifier(specifier == null ? ',f' : specifier);\n const step = tickStep(start, stop, count),\n value = Math.max(Math.abs(start), Math.abs(stop));\n let precision;\n if (specifier.precision == null) {\n switch (specifier.type) {\n case 's':\n {\n if (!isNaN(precision = precisionPrefix(step, value))) {\n specifier.precision = precision;\n }\n return formatPrefix(specifier, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r':\n {\n if (!isNaN(precision = precisionRound(step, value))) {\n specifier.precision = precision - (specifier.type === 'e');\n }\n break;\n }\n case 'f':\n case '%':\n {\n if (!isNaN(precision = precisionFixed(step))) {\n specifier.precision = precision - (specifier.type === '%') * 2;\n }\n break;\n }\n }\n }\n return format(specifier);\n }\n };\n}\nlet defaultNumberLocale;\nresetNumberFormatDefaultLocale();\nfunction resetNumberFormatDefaultLocale() {\n return defaultNumberLocale = numberLocale({\n format: format$3,\n formatPrefix: formatPrefix\n });\n}\nfunction numberFormatLocale(definition) {\n return numberLocale(formatLocale$1(definition));\n}\nfunction numberFormatDefaultLocale(definition) {\n return arguments.length ? defaultNumberLocale = numberFormatLocale(definition) : defaultNumberLocale;\n}\nfunction timeMultiFormat(format, interval, spec) {\n spec = spec || {};\n if (!isObject(spec)) {\n error(\"Invalid time multi-format specifier: \".concat(spec));\n }\n const second = interval(SECONDS),\n minute = interval(MINUTES),\n hour = interval(HOURS),\n day = interval(DATE),\n week = interval(WEEK),\n month = interval(MONTH),\n quarter = interval(QUARTER),\n year = interval(YEAR),\n L = format(spec[MILLISECONDS] || '.%L'),\n S = format(spec[SECONDS] || ':%S'),\n M = format(spec[MINUTES] || '%I:%M'),\n H = format(spec[HOURS] || '%I %p'),\n d = format(spec[DATE] || spec[DAY] || '%a %d'),\n w = format(spec[WEEK] || '%b %d'),\n m = format(spec[MONTH] || '%B'),\n q = format(spec[QUARTER] || '%B'),\n y = format(spec[YEAR] || '%Y');\n return date => (second(date) < date ? L : minute(date) < date ? S : hour(date) < date ? M : day(date) < date ? H : month(date) < date ? week(date) < date ? d : w : year(date) < date ? quarter(date) < date ? m : q : y)(date);\n}\nfunction timeLocale(locale) {\n const timeFormat = memoize(locale.format),\n utcFormat = memoize(locale.utcFormat);\n return {\n timeFormat: spec => isString(spec) ? timeFormat(spec) : timeMultiFormat(timeFormat, timeInterval, spec),\n utcFormat: spec => isString(spec) ? utcFormat(spec) : timeMultiFormat(utcFormat, utcInterval, spec),\n timeParse: memoize(locale.parse),\n utcParse: memoize(locale.utcParse)\n };\n}\nlet defaultTimeLocale;\nresetTimeFormatDefaultLocale();\nfunction resetTimeFormatDefaultLocale() {\n return defaultTimeLocale = timeLocale({\n format: timeFormat$2,\n parse: timeParse$1,\n utcFormat: utcFormat$1,\n utcParse: utcParse$1\n });\n}\nfunction timeFormatLocale(definition) {\n return timeLocale(formatLocale(definition));\n}\nfunction timeFormatDefaultLocale(definition) {\n return arguments.length ? defaultTimeLocale = timeFormatLocale(definition) : defaultTimeLocale;\n}\nconst createLocale = (number, time) => extend$1({}, number, time);\nfunction locale(numberSpec, timeSpec) {\n const number = numberSpec ? numberFormatLocale(numberSpec) : numberFormatDefaultLocale();\n const time = timeSpec ? timeFormatLocale(timeSpec) : timeFormatDefaultLocale();\n return createLocale(number, time);\n}\nfunction defaultLocale(numberSpec, timeSpec) {\n const args = arguments.length;\n if (args && args !== 2) {\n error('defaultLocale expects either zero or two arguments.');\n }\n return args ? createLocale(numberFormatDefaultLocale(numberSpec), timeFormatDefaultLocale(timeSpec)) : createLocale(numberFormatDefaultLocale(), timeFormatDefaultLocale());\n}\nfunction resetDefaultLocale() {\n resetNumberFormatDefaultLocale();\n resetTimeFormatDefaultLocale();\n return defaultLocale();\n}\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nconst protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nconst allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nconst whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nconst fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nfunction loaderFactory(fetch, fs) {\n return options => ({\n options: options || {},\n sanitize: sanitize,\n load: load$1,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n });\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load$1(uri, options) {\n const opt = await this.sanitize(uri, options),\n url = opt.href;\n return opt.localFile ? this.file(url) : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n options = extend$1({}, this.options, options);\n const fileAccess = this.fileAccess,\n result = {\n href: null\n };\n let isFile, loadFile, base;\n const isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n if (uri == null || typeof uri !== 'string' || !isAllowed) {\n error('Sanitize failure, invalid URI: ' + $(uri));\n }\n const hasProtocol = protocol_re.test(uri);\n\n // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && !base.endsWith('/')) {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {\n value: !!loadFile\n });\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // provide control over cross-origin image handling (#2238)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n if (options.context === 'image' && options.crossOrigin) {\n result.crossOrigin = options.crossOrigin + '';\n }\n\n // return\n return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n return fs ? filename => new Promise((accept, reject) => {\n fs.readFile(filename, (error, data) => {\n if (error) reject(error);else accept(data);\n });\n }) : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n error('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n return fetch ? async function (url, options) {\n const opt = extend$1({}, this.options.http, options),\n type = options && options.response,\n response = await fetch(url, opt);\n return !response.ok ? error(response.status + '' + response.statusText) : isFunction$1(response[type]) ? response[type]() : response.text();\n } : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n error('No HTTP fetch method available.');\n}\nconst isValid = _ => _ != null && _ === _;\nconst isBoolean$1 = _ => _ === 'true' || _ === 'false' || _ === true || _ === false;\nconst isDate = _ => !Number.isNaN(Date.parse(_));\nconst isNumber = _ => !Number.isNaN(+_) && !(_ instanceof Date);\nconst isInteger = _ => isNumber(_) && Number.isInteger(+_);\nconst typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity$6\n};\nconst typeTests = [isBoolean$1, isInteger, isNumber, isDate];\nconst typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n const n = values.length,\n m = typeTests.length,\n a = typeTests.map((_, i) => i + 1);\n for (let i = 0, t = 0, j, value; i < n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j = 0; j < m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n return typeList[a.reduce((u, v) => u === 0 ? v : u, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n return fields.reduce((types, field) => {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\nfunction delimitedFormat(delimiter) {\n const parse = function (data, format) {\n const delim = {\n delimiter: delimiter\n };\n return dsv(data, format ? extend$1(format, delim) : delim);\n };\n parse.responseType = 'text';\n return parse;\n}\nfunction dsv(data, format) {\n if (format.header) {\n data = format.header.map($).join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\nfunction isBuffer(_) {\n return typeof Buffer === 'function' && isFunction$1(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n const prop = format && format.property ? field$1(format.property) : identity$6;\n return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n if (!isArray(data) && isIterable(data)) {\n data = [...data];\n }\n return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\nconst filters = {\n interior: (a, b) => a !== b,\n exterior: (a, b) => a === b\n};\nfunction topojson(data, format) {\n let method, object, property, filter;\n data = json(data, format);\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n return object && object.features || [object];\n}\ntopojson.responseType = 'json';\nconst format$2 = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\nfunction formats$1(name, reader) {\n if (arguments.length > 1) {\n format$2[name] = reader;\n return this;\n } else {\n return has$1(format$2, name) ? format$2[name] : null;\n }\n}\nfunction responseType(type) {\n const f = formats$1(type);\n return f && f.responseType || 'text';\n}\nfunction read(data, schema, timeParser, utcParser) {\n schema = schema || {};\n const reader = formats$1(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n data = reader(data, schema);\n if (schema.parse) parse$6(data, schema.parse, timeParser, utcParser);\n if (has$1(data, 'columns')) delete data.columns;\n return data;\n}\nfunction parse$6(data, types, timeParser, utcParser) {\n if (!data.length) return; // early exit for empty data\n\n const locale = timeFormatDefaultLocale();\n timeParser = timeParser || locale.timeParse;\n utcParser = utcParser || locale.utcParse;\n let fields = data.columns || Object.keys(data[0]),\n datum,\n field,\n i,\n j,\n n,\n m;\n if (types === 'auto') types = inferTypes(data, fields);\n fields = Object.keys(types);\n const parsers = fields.map(field => {\n const type = types[field];\n let parts, pattern;\n if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n pattern = pattern.slice(1, -1);\n }\n const parse = parts[0] === 'utc' ? utcParser : timeParser;\n return parse(pattern);\n }\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n return typeParsers[type];\n });\n for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n datum = data[i];\n for (j = 0; j < m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\nconst loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nfunction UniqueList(idFunc) {\n const $ = idFunc || identity$6,\n list = [],\n ids = {};\n list.add = _ => {\n const id = $(_);\n if (!ids[id]) {\n ids[id] = 1;\n list.push(_);\n }\n return list;\n };\n list.remove = _ => {\n const id = $(_);\n if (ids[id]) {\n ids[id] = 0;\n const idx = list.indexOf(_);\n if (idx >= 0) list.splice(idx, 1);\n }\n return list;\n };\n return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n * and then await. The dataflow will be passed as the single\n * argument to the function.\n */\nasync function asyncCallback(df, callback) {\n try {\n await callback(df);\n } catch (err) {\n df.error(err);\n }\n}\nconst TUPLE_ID_KEY = Symbol('vega_id');\nlet TUPLE_ID = 1;\n\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\nfunction isTuple(t) {\n return !!(t && tupleid(t));\n}\n\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\nfunction tupleid(t) {\n return t[TUPLE_ID_KEY];\n}\n\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\nfunction setid(t, id) {\n t[TUPLE_ID_KEY] = id;\n return t;\n}\n\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\nfunction ingest$1(datum) {\n const t = datum === Object(datum) ? datum : {\n data: datum\n };\n return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\nfunction derive(t) {\n return rederive(t, ingest$1({}));\n}\n\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\nfunction rederive(t, d) {\n for (const k in t) d[k] = t[k];\n return d;\n}\n\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\nfunction replace$1(t, d) {\n return setid(d, tupleid(t));\n}\n\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\nfunction stableCompare(cmp, f) {\n return !cmp ? null : f ? (a, b) => cmp(a, b) || tupleid(f(a)) - tupleid(f(b)) : (a, b) => cmp(a, b) || tupleid(a) - tupleid(b);\n}\nfunction isChangeSet(v) {\n return v && v.constructor === changeset;\n}\nfunction changeset() {\n const add = [],\n // insert tuples\n rem = [],\n // remove tuples\n mod = [],\n // modify tuples\n remp = [],\n // remove by predicate\n modp = []; // modify by predicate\n let clean = null,\n reflow = false;\n return {\n constructor: changeset,\n insert(t) {\n const d = array$5(t),\n n = d.length;\n for (let i = 0; i < n; ++i) add.push(d[i]);\n return this;\n },\n remove(t) {\n const a = isFunction$1(t) ? remp : rem,\n d = array$5(t),\n n = d.length;\n for (let i = 0; i < n; ++i) a.push(d[i]);\n return this;\n },\n modify(t, field, value) {\n const m = {\n field: field,\n value: constant$5(value)\n };\n if (isFunction$1(t)) {\n m.filter = t;\n modp.push(m);\n } else {\n m.tuple = t;\n mod.push(m);\n }\n return this;\n },\n encode(t, set) {\n if (isFunction$1(t)) modp.push({\n filter: t,\n field: set\n });else mod.push({\n tuple: t,\n field: set\n });\n return this;\n },\n clean(value) {\n clean = value;\n return this;\n },\n reflow() {\n reflow = true;\n return this;\n },\n pulse(pulse, tuples) {\n const cur = {},\n out = {};\n let i, n, m, f, t, id;\n\n // build lookup table of current tuples\n for (i = 0, n = tuples.length; i < n; ++i) {\n cur[tupleid(tuples[i])] = 1;\n }\n\n // process individual tuples to remove\n for (i = 0, n = rem.length; i < n; ++i) {\n t = rem[i];\n cur[tupleid(t)] = -1;\n }\n\n // process predicate-based removals\n for (i = 0, n = remp.length; i < n; ++i) {\n f = remp[i];\n tuples.forEach(t => {\n if (f(t)) cur[tupleid(t)] = -1;\n });\n }\n\n // process all add tuples\n for (i = 0, n = add.length; i < n; ++i) {\n t = add[i];\n id = tupleid(t);\n if (cur[id]) {\n // tuple already resides in dataset\n // if flagged for both add and remove, cancel\n cur[id] = 1;\n } else {\n // tuple does not reside in dataset, add\n pulse.add.push(ingest$1(add[i]));\n }\n }\n\n // populate pulse rem list\n for (i = 0, n = tuples.length; i < n; ++i) {\n t = tuples[i];\n if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n }\n\n // modify helper method\n function modify(t, f, v) {\n if (v) {\n t[f] = v(t);\n } else {\n pulse.encode = f;\n }\n if (!reflow) out[tupleid(t)] = t;\n }\n\n // process individual tuples to modify\n for (i = 0, n = mod.length; i < n; ++i) {\n m = mod[i];\n t = m.tuple;\n f = m.field;\n id = cur[tupleid(t)];\n if (id > 0) {\n modify(t, f, m.value);\n pulse.modifies(f);\n }\n }\n\n // process predicate-based modifications\n for (i = 0, n = modp.length; i < n; ++i) {\n m = modp[i];\n f = m.filter;\n tuples.forEach(t => {\n if (f(t) && cur[tupleid(t)] > 0) {\n modify(t, m.field, m.value);\n }\n });\n pulse.modifies(m.field);\n }\n\n // upon reflow request, populate mod with all non-removed tuples\n // otherwise, populate mod with modified tuples only\n if (reflow) {\n pulse.mod = rem.length || remp.length ? tuples.filter(t => cur[tupleid(t)] > 0) : tuples.slice();\n } else {\n for (id in out) pulse.mod.push(out[id]);\n }\n\n // set pulse garbage collection request\n if (clean || clean == null && (rem.length || remp.length)) {\n pulse.clean(true);\n }\n return pulse;\n }\n };\n}\nconst CACHE$1 = '_:mod:_';\n\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\nfunction Parameters() {\n Object.defineProperty(this, CACHE$1, {\n writable: true,\n value: {}\n });\n}\nParameters.prototype = {\n /**\n * Set a parameter value. If the parameter value changes, the parameter\n * will be recorded as modified.\n * @param {string} name - The parameter name.\n * @param {number} index - The index into an array-value parameter. Ignored if\n * the argument is undefined, null or less than zero.\n * @param {*} value - The parameter value to set.\n * @param {boolean} [force=false] - If true, records the parameter as modified\n * even if the value is unchanged.\n * @return {Parameters} - This parameter object.\n */\n set(name, index, value, force) {\n const o = this,\n v = o[name],\n mod = o[CACHE$1];\n if (index != null && index >= 0) {\n if (v[index] !== value || force) {\n v[index] = value;\n mod[index + ':' + name] = -1;\n mod[name] = -1;\n }\n } else if (v !== value || force) {\n o[name] = value;\n mod[name] = isArray(value) ? 1 + value.length : -1;\n }\n return o;\n },\n /**\n * Tests if one or more parameters has been modified. If invoked with no\n * arguments, returns true if any parameter value has changed. If the first\n * argument is array, returns trues if any parameter name in the array has\n * changed. Otherwise, tests if the given name and optional array index has\n * changed.\n * @param {string} name - The parameter name to test.\n * @param {number} [index=undefined] - The parameter array index to test.\n * @return {boolean} - Returns true if a queried parameter was modified.\n */\n modified(name, index) {\n const mod = this[CACHE$1];\n if (!arguments.length) {\n for (const k in mod) {\n if (mod[k]) return true;\n }\n return false;\n } else if (isArray(name)) {\n for (let k = 0; k < name.length; ++k) {\n if (mod[name[k]]) return true;\n }\n return false;\n }\n return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n },\n /**\n * Clears the modification records. After calling this method,\n * all parameters are considered unmodified.\n */\n clear() {\n this[CACHE$1] = {};\n return this;\n }\n};\nlet OP_ID = 0;\nconst PULSE = 'pulse',\n NO_PARAMS = new Parameters();\n\n// Boolean Flags\nconst SKIP$1$1 = 1,\n MODIFIED = 2;\n\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n * evaluation of this operator, the update function will be invoked and the\n * return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @see parameters\n */\nfunction Operator(init, update, params, react) {\n this.id = ++OP_ID;\n this.value = init;\n this.stamp = -1;\n this.rank = -1;\n this.qrank = -1;\n this.flags = 0;\n if (update) {\n this._update = update;\n }\n if (params) this.parameters(params, react);\n}\nfunction flag(bit) {\n return function (state) {\n const f = this.flags;\n if (arguments.length === 0) return !!(f & bit);\n this.flags = state ? f | bit : f & ~bit;\n return this;\n };\n}\nOperator.prototype = {\n /**\n * Returns a list of target operators dependent on this operator.\n * If this list does not exist, it is created and then returned.\n * @return {UniqueList}\n */\n targets() {\n return this._targets || (this._targets = UniqueList(id));\n },\n /**\n * Sets the value of this operator.\n * @param {*} value - the value to set.\n * @return {Number} Returns 1 if the operator value has changed\n * according to strict equality, returns 0 otherwise.\n */\n set(value) {\n if (this.value !== value) {\n this.value = value;\n return 1;\n } else {\n return 0;\n }\n },\n /**\n * Indicates that operator evaluation should be skipped on the next pulse.\n * This operator will still propagate incoming pulses, but its update function\n * will not be invoked. The skip flag is reset after every pulse, so calling\n * this method will affect processing of the next pulse only.\n */\n skip: flag(SKIP$1$1),\n /**\n * Indicates that this operator's value has been modified on its most recent\n * pulse. Normally modification is checked via strict equality; however, in\n * some cases it is more efficient to update the internal state of an object.\n * In those cases, the modified flag can be used to trigger propagation. Once\n * set, the modification flag persists across pulses until unset. The flag can\n * be used with the last timestamp to test if a modification is recent.\n */\n modified: flag(MODIFIED),\n /**\n * Sets the parameters for this operator. The parameter values are analyzed for\n * operator instances. If found, this operator will be added as a dependency\n * of the parameterizing operator. Operator values are dynamically marshalled\n * from each operator parameter prior to evaluation. If a parameter value is\n * an array, the array will also be searched for Operator instances. However,\n * the search does not recurse into sub-arrays or object properties.\n * @param {object} params - A hash of operator parameters.\n * @param {boolean} [react=true] - A flag indicating if this operator should\n * automatically update (react) when parameter values change. In other words,\n * this flag determines if the operator registers itself as a listener on\n * any upstream operators included in the parameters.\n * @param {boolean} [initonly=false] - A flag indicating if this operator\n * should calculate an update only upon its initial evaluation, then\n * deregister dependencies and suppress all future update invocations.\n * @return {Operator[]} - An array of upstream dependencies.\n */\n parameters(params, react, initonly) {\n react = react !== false;\n const argval = this._argval = this._argval || new Parameters(),\n argops = this._argops = this._argops || [],\n deps = [];\n let name, value, n, i;\n const add = (name, index, value) => {\n if (value instanceof Operator) {\n if (value !== this) {\n if (react) value.targets().add(this);\n deps.push(value);\n }\n argops.push({\n op: value,\n name: name,\n index: index\n });\n } else {\n argval.set(name, index, value);\n }\n };\n for (name in params) {\n value = params[name];\n if (name === PULSE) {\n array$5(value).forEach(op => {\n if (!(op instanceof Operator)) {\n error('Pulse parameters must be operator instances.');\n } else if (op !== this) {\n op.targets().add(this);\n deps.push(op);\n }\n });\n this.source = value;\n } else if (isArray(value)) {\n argval.set(name, -1, Array(n = value.length));\n for (i = 0; i < n; ++i) add(name, i, value[i]);\n } else {\n add(name, -1, value);\n }\n }\n this.marshall().clear(); // initialize values\n if (initonly) argops.initonly = true;\n return deps;\n },\n /**\n * Internal method for marshalling parameter values.\n * Visits each operator dependency to pull the latest value.\n * @return {Parameters} A Parameters object to pass to the update function.\n */\n marshall(stamp) {\n const argval = this._argval || NO_PARAMS,\n argops = this._argops;\n let item, i, op, mod;\n if (argops) {\n const n = argops.length;\n for (i = 0; i < n; ++i) {\n item = argops[i];\n op = item.op;\n mod = op.modified() && op.stamp === stamp;\n argval.set(item.name, item.index, op.value, mod);\n }\n if (argops.initonly) {\n for (i = 0; i < n; ++i) {\n item = argops[i];\n item.op.targets().remove(this);\n }\n this._argops = null;\n this._update = null;\n }\n }\n return argval;\n },\n /**\n * Detach this operator from the dataflow.\n * Unregisters listeners on upstream dependencies.\n */\n detach() {\n const argops = this._argops;\n let i, n, item, op;\n if (argops) {\n for (i = 0, n = argops.length; i < n; ++i) {\n item = argops[i];\n op = item.op;\n if (op._targets) {\n op._targets.remove(this);\n }\n }\n }\n\n // remove references to the source and pulse object,\n // if present, to prevent memory leaks of old data.\n this.pulse = null;\n this.source = null;\n },\n /**\n * Delegate method to perform operator processing.\n * Subclasses can override this method to perform custom processing.\n * By default, it marshalls parameters and calls the update function\n * if that function is defined. If the update function does not\n * change the operator value then StopPropagation is returned.\n * If no update function is defined, this method does nothing.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return The output pulse or StopPropagation. A falsy return value\n * (including undefined) will let the input pulse pass through.\n */\n evaluate(pulse) {\n const update = this._update;\n if (update) {\n const params = this.marshall(pulse.stamp),\n v = update.call(this, params, pulse);\n params.clear();\n if (v !== this.value) {\n this.value = v;\n } else if (!this.modified()) {\n return pulse.StopPropagation;\n }\n }\n },\n /**\n * Run this operator for the current pulse. If this operator has already\n * been run at (or after) the pulse timestamp, returns StopPropagation.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\n run(pulse) {\n if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n let rv;\n if (this.skip()) {\n this.skip(false);\n rv = 0;\n } else {\n rv = this.evaluate(pulse);\n }\n return this.pulse = rv || pulse;\n }\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n * the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\nfunction add$4(init, update, params, react) {\n let shift = 1,\n op;\n if (init instanceof Operator) {\n op = init;\n } else if (init && init.prototype instanceof Operator) {\n op = new init();\n } else if (isFunction$1(init)) {\n op = new Operator(null, init);\n } else {\n shift = 0;\n op = new Operator(init, update);\n }\n this.rank(op);\n if (shift) {\n react = params;\n params = update;\n }\n if (params) this.connect(op, op.parameters(params, react));\n this.touch(op);\n return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array} - The source operators that should propagate\n * to the target operator.\n */\nfunction connect(target, sources) {\n const targetRank = target.rank,\n n = sources.length;\n for (let i = 0; i < n; ++i) {\n if (targetRank < sources[i].rank) {\n this.rerank(target);\n return;\n }\n }\n}\nlet STREAM_ID = 0;\n\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n * upon receipt of a new event. Use to override standard event processing.\n */\nfunction EventStream(filter, apply, receive) {\n this.id = ++STREAM_ID;\n this.value = null;\n if (receive) this.receive = receive;\n if (filter) this._filter = filter;\n if (apply) this._apply = apply;\n}\n\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @see EventStream\n */\nfunction stream(filter, apply, receive) {\n return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n _filter: truthy,\n _apply: identity$6,\n targets() {\n return this._targets || (this._targets = UniqueList(id));\n },\n consume(_) {\n if (!arguments.length) return !!this._consume;\n this._consume = !!_;\n return this;\n },\n receive(evt) {\n if (this._filter(evt)) {\n const val = this.value = this._apply(evt),\n trg = this._targets,\n n = trg ? trg.length : 0;\n for (let i = 0; i < n; ++i) trg[i].receive(val);\n if (this._consume) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n },\n filter(filter) {\n const s = stream(filter);\n this.targets().add(s);\n return s;\n },\n apply(apply) {\n const s = stream(null, apply);\n this.targets().add(s);\n return s;\n },\n merge() {\n const s = stream();\n this.targets().add(s);\n for (let i = 0, n = arguments.length; i < n; ++i) {\n arguments[i].targets().add(s);\n }\n return s;\n },\n throttle(pause) {\n let t = -1;\n return this.filter(() => {\n const now = Date.now();\n if (now - t > pause) {\n t = now;\n return 1;\n } else {\n return 0;\n }\n });\n },\n debounce(delay) {\n const s = stream();\n this.targets().add(stream(null, null, debounce(delay, e => {\n const df = e.dataflow;\n s.receive(e);\n if (df && df.run) df.run();\n })));\n return s;\n },\n between(a, b) {\n let active = false;\n a.targets().add(stream(null, null, () => active = true));\n b.targets().add(stream(null, null, () => active = false));\n return this.filter(() => active);\n },\n detach() {\n // ensures compatibility with operators (#2753)\n // remove references to other streams and filter functions that may\n // be bound to subcontexts that need to be garbage collected.\n this._filter = truthy;\n this._targets = null;\n }\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n * support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n * If provided, this function will be invoked and the result will be\n * used as the downstream event value.\n * @return {EventStream}\n */\nfunction events$1(source, type, filter, apply) {\n const df = this,\n s = stream(filter, apply),\n send = function (e) {\n e.dataflow = df;\n try {\n s.receive(e);\n } catch (error) {\n df.error(error);\n } finally {\n df.run();\n }\n };\n let sources;\n if (typeof source === 'string' && typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n } else {\n sources = array$5(source);\n }\n const n = sources.length;\n for (let i = 0; i < n; ++i) {\n sources[i].addEventListener(type, send);\n }\n return s;\n}\nfunction parse$5(data, format) {\n const locale = this.locale();\n return read(data, format, locale.timeParse, locale.utcParse);\n}\n\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n * typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n * be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\nfunction ingest(target, data, format) {\n data = this.parse(data, format);\n return this.pulse(target, this.changeset().insert(data));\n}\n\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n * is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n * The resolved object contains the following properties:\n * - data: an array of parsed data (or null upon error)\n * - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\nasync function request(url, format) {\n const df = this;\n let status = 0,\n data;\n try {\n data = await df.loader().load(url, {\n context: 'dataflow',\n response: responseType(format && format.type)\n });\n try {\n data = df.parse(data, format);\n } catch (err) {\n status = -2;\n df.warn('Data ingestion failed', url, err);\n }\n } catch (err) {\n status = -1;\n df.warn('Loading failed', url, err);\n }\n return {\n data,\n status\n };\n}\nasync function preload(target, url, format) {\n const df = this,\n pending = df._pending || loadPending(df);\n pending.requests += 1;\n const res = await df.request(url, format);\n df.pulse(target, df.changeset().remove(truthy).insert(res.data || []));\n pending.done();\n return res;\n}\nfunction loadPending(df) {\n let accept;\n const pending = new Promise(a => accept = a);\n pending.requests = 0;\n pending.done = () => {\n if (--pending.requests === 0) {\n df._pending = null;\n accept(df);\n }\n };\n return df._pending = pending;\n}\nconst SKIP$2 = {\n skip: true\n};\n\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n * This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n * This argument can either be an Operator instance or (if the source\n * argument is an EventStream), a function that accepts an event object as\n * input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n * to compute the new operator value, or a literal value to set. Update\n * functions expect to receive a parameter object and event as arguments.\n * This function can either return a new operator value or (if the source\n * argument is an EventStream) a {@link ChangeSet} instance to pulse\n * the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n * updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\nfunction on(source, target, update, params, options) {\n const fn = source instanceof Operator ? onOperator : onStream;\n fn(this, source, target, update, params, options);\n return this;\n}\nfunction onStream(df, stream, target, update, params, options) {\n const opt = extend$1({}, options, SKIP$2);\n let func, op;\n if (!isFunction$1(target)) target = constant$5(target);\n if (update === undefined) {\n func = e => df.touch(target(e));\n } else if (isFunction$1(update)) {\n op = new Operator(null, update, params, false);\n func = e => {\n op.evaluate(e);\n const t = target(e),\n v = op.value;\n isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n };\n } else {\n func = e => df.update(target(e), update, opt);\n }\n stream.apply(func);\n}\nfunction onOperator(df, source, target, update, params, options) {\n if (update === undefined) {\n source.targets().add(target);\n } else {\n const opt = options || {},\n op = new Operator(null, updater(target, update), params, false);\n op.modified(opt.force);\n op.rank = source.rank; // immediately follow source\n source.targets().add(op); // add dependency\n\n if (target) {\n op.skip(true); // skip first invocation\n op.value = target.value; // initialize value\n op.targets().add(target); // chain dependencies\n df.connect(target, [op]); // rerank as needed, #1672\n }\n }\n}\n\nfunction updater(target, update) {\n update = isFunction$1(update) ? update : constant$5(update);\n return target ? function (_, pulse) {\n const value = update(_, pulse);\n if (!target.skip()) {\n target.skip(value !== this.value).value = value;\n }\n return value;\n } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\nfunction rank(op) {\n op.rank = ++this._rank;\n}\n\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\nfunction rerank(op) {\n const queue = [op];\n let cur, list, i;\n while (queue.length) {\n this.rank(cur = queue.pop());\n if (list = cur._targets) {\n for (i = list.length; --i >= 0;) {\n queue.push(cur = list[i]);\n if (cur === op) error('Cycle detected in dataflow graph.');\n }\n }\n }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nconst StopPropagation = {};\n\n// Pulse visit type flags\nconst ADD = 1 << 0,\n REM = 1 << 1,\n MOD$1 = 1 << 2,\n ADD_REM = ADD | REM,\n ADD_MOD = ADD | MOD$1,\n ALL = ADD | REM | MOD$1,\n REFLOW = 1 << 3,\n SOURCE = 1 << 4,\n NO_SOURCE = 1 << 5,\n NO_FIELDS = 1 << 6;\n\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n * accessible as Pulse.encode. Operators can respond to (or ignore) this\n * setting as appropriate. This parameter can be used in conjunction with\n * the Encode transform in the vega-encode module.\n */\nfunction Pulse(dataflow, stamp, encode) {\n this.dataflow = dataflow;\n this.stamp = stamp == null ? -1 : stamp;\n this.add = [];\n this.rem = [];\n this.mod = [];\n this.fields = null;\n this.encode = encode || null;\n}\nfunction materialize(data, filter) {\n const out = [];\n visitArray(data, filter, _ => out.push(_));\n return out;\n}\nfunction filter$1(pulse, flags) {\n const map = {};\n pulse.visit(flags, t => {\n map[tupleid(t)] = 1;\n });\n return t => map[tupleid(t)] ? null : t;\n}\nfunction addFilter(a, b) {\n return a ? (t, i) => a(t, i) && b(t, i) : b;\n}\nPulse.prototype = {\n /**\n * Sentinel value indicating pulse propagation should stop.\n */\n StopPropagation,\n /**\n * Boolean flag indicating ADD (added) tuples.\n */\n ADD,\n /**\n * Boolean flag indicating REM (removed) tuples.\n */\n REM,\n /**\n * Boolean flag indicating MOD (modified) tuples.\n */\n MOD: MOD$1,\n /**\n * Boolean flag indicating ADD (added) and REM (removed) tuples.\n */\n ADD_REM,\n /**\n * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n */\n ADD_MOD,\n /**\n * Boolean flag indicating ADD, REM and MOD tuples.\n */\n ALL,\n /**\n * Boolean flag indicating all tuples in a data source\n * except for the ADD, REM and MOD tuples.\n */\n REFLOW,\n /**\n * Boolean flag indicating a 'pass-through' to a\n * backing data source, ignoring ADD, REM and MOD tuples.\n */\n SOURCE,\n /**\n * Boolean flag indicating that source data should be\n * suppressed when creating a forked pulse.\n */\n NO_SOURCE,\n /**\n * Boolean flag indicating that field modifications should be\n * suppressed when creating a forked pulse.\n */\n NO_FIELDS,\n /**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created.\n * @return {Pulse} - The forked pulse instance.\n * @see init\n */\n fork(flags) {\n return new Pulse(this.dataflow).init(this, flags);\n },\n /**\n * Creates a copy of this pulse with new materialized array\n * instances for the ADD, REM, MOD, and SOURCE arrays.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse} - The cloned pulse instance.\n * @see init\n */\n clone() {\n const p = this.fork(ALL);\n p.add = p.add.slice();\n p.rem = p.rem.slice();\n p.mod = p.mod.slice();\n if (p.source) p.source = p.source.slice();\n return p.materialize(ALL | SOURCE);\n },\n /**\n * Returns a pulse that adds all tuples from a backing source. This is\n * useful for cases where operators are added to a dataflow after an\n * upstream data pipeline has already been processed, ensuring that\n * new operators can observe all tuples within a stream.\n * @return {Pulse} - A pulse instance with all source tuples included\n * in the add array. If the current pulse already has all source\n * tuples in its add array, it is returned directly. If the current\n * pulse does not have a backing source, it is returned directly.\n */\n addAll() {\n let p = this;\n const reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n || !p.rem.length && p.source.length === p.add.length;\n if (reuse) {\n return p;\n } else {\n p = new Pulse(this.dataflow).init(this);\n p.add = p.source;\n p.rem = []; // new operators can ignore rem #2769\n return p;\n }\n },\n /**\n * Initialize this pulse based on the values of another pulse. This method\n * is used internally by {@link fork} to initialize a new forked tuple.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {Pulse} src - The source pulse to copy from.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created. By default, source data arrays are copied\n * to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n * @return {Pulse} - Returns this Pulse instance.\n */\n init(src, flags) {\n const p = this;\n p.stamp = src.stamp;\n p.encode = src.encode;\n if (src.fields && !(flags & NO_FIELDS)) {\n p.fields = src.fields;\n }\n if (flags & ADD) {\n p.addF = src.addF;\n p.add = src.add;\n } else {\n p.addF = null;\n p.add = [];\n }\n if (flags & REM) {\n p.remF = src.remF;\n p.rem = src.rem;\n } else {\n p.remF = null;\n p.rem = [];\n }\n if (flags & MOD$1) {\n p.modF = src.modF;\n p.mod = src.mod;\n } else {\n p.modF = null;\n p.mod = [];\n }\n if (flags & NO_SOURCE) {\n p.srcF = null;\n p.source = null;\n } else {\n p.srcF = src.srcF;\n p.source = src.source;\n if (src.cleans) p.cleans = src.cleans;\n }\n return p;\n },\n /**\n * Schedules a function to run after pulse propagation completes.\n * @param {function} func - The function to run.\n */\n runAfter(func) {\n this.dataflow.runAfter(func);\n },\n /**\n * Indicates if tuples have been added, removed or modified.\n * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n * Defaults to ALL, returning true if any tuple type has changed.\n * @return {boolean} - Returns true if one or more queried tuple types have\n * changed, false otherwise.\n */\n changed(flags) {\n const f = flags || ALL;\n return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD$1 && this.mod.length;\n },\n /**\n * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n * source are added to the MOD set, unless already present in the ADD set.\n * @param {boolean} [fork=false] - If true, returns a forked copy of this\n * pulse, and invokes reflow on that derived pulse.\n * @return {Pulse} - The reflowed pulse instance.\n */\n reflow(fork) {\n if (fork) return this.fork(ALL).reflow();\n const len = this.add.length,\n src = this.source && this.source.length;\n if (src && src !== len) {\n this.mod = this.source;\n if (len) this.filter(MOD$1, filter$1(this, ADD));\n }\n return this;\n },\n /**\n * Get/set metadata to pulse requesting garbage collection\n * to reclaim currently unused resources.\n */\n clean(value) {\n if (arguments.length) {\n this.cleans = !!value;\n return this;\n } else {\n return this.cleans;\n }\n },\n /**\n * Marks one or more data field names as modified to assist dependency\n * tracking and incremental processing by transform operators.\n * @param {string|Array} _ - The field(s) to mark as modified.\n * @return {Pulse} - This pulse instance.\n */\n modifies(_) {\n const hash = this.fields || (this.fields = {});\n if (isArray(_)) {\n _.forEach(f => hash[f] = true);\n } else {\n hash[_] = true;\n }\n return this;\n },\n /**\n * Checks if one or more data fields have been modified during this pulse\n * propagation timestamp.\n * @param {string|Array} _ - The field(s) to check for modified.\n * @param {boolean} nomod - If true, will check the modified flag even if\n * no mod tuples exist. If false (default), mod tuples must be present.\n * @return {boolean} - Returns true if any of the provided fields has been\n * marked as modified, false otherwise.\n */\n modified(_, nomod) {\n const fields = this.fields;\n return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : isArray(_) ? _.some(f => fields[f]) : fields[_];\n },\n /**\n * Adds a filter function to one more tuple sets. Filters are applied to\n * backing tuple arrays, to determine the actual set of tuples considered\n * added, removed or modified. They can be used to delay materialization of\n * a tuple set in order to avoid expensive array copies. In addition, the\n * filter functions can serve as value transformers: unlike standard predicate\n * function (which return boolean values), Pulse filters should return the\n * actual tuple value to process. If a tuple set is already filtered, the\n * new filter function will be appended into a conjuntive ('and') query.\n * @param {number} flags - Flags indicating the tuple set(s) to filter.\n * @param {function(*):object} filter - Filter function that will be applied\n * to the tuple set array, and should return a data tuple if the value\n * should be included in the tuple set, and falsy (or null) otherwise.\n * @return {Pulse} - Returns this pulse instance.\n */\n filter(flags, filter) {\n const p = this;\n if (flags & ADD) p.addF = addFilter(p.addF, filter);\n if (flags & REM) p.remF = addFilter(p.remF, filter);\n if (flags & MOD$1) p.modF = addFilter(p.modF, filter);\n if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n return p;\n },\n /**\n * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n * a registered filter function, it will be applied and the tuple set(s) will\n * be replaced with materialized tuple arrays.\n * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n * @return {Pulse} - Returns this pulse instance.\n */\n materialize(flags) {\n flags = flags || ALL;\n const p = this;\n if (flags & ADD && p.addF) {\n p.add = materialize(p.add, p.addF);\n p.addF = null;\n }\n if (flags & REM && p.remF) {\n p.rem = materialize(p.rem, p.remF);\n p.remF = null;\n }\n if (flags & MOD$1 && p.modF) {\n p.mod = materialize(p.mod, p.modF);\n p.modF = null;\n }\n if (flags & SOURCE && p.srcF) {\n p.source = p.source.filter(p.srcF);\n p.srcF = null;\n }\n return p;\n },\n /**\n * Visit one or more tuple sets in this pulse.\n * @param {number} flags - Flags indicating the tuple set(s) to visit.\n * Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n * has been set).\n * @param {function(object):*} - Visitor function invoked per-tuple.\n * @return {Pulse} - Returns this pulse instance.\n */\n visit(flags, visitor) {\n const p = this,\n v = visitor;\n if (flags & SOURCE) {\n visitArray(p.source, p.srcF, v);\n return p;\n }\n if (flags & ADD) visitArray(p.add, p.addF, v);\n if (flags & REM) visitArray(p.rem, p.remF, v);\n if (flags & MOD$1) visitArray(p.mod, p.modF, v);\n const src = p.source;\n if (flags & REFLOW && src) {\n const sum = p.add.length + p.mod.length;\n if (sum === src.length) ;else if (sum) {\n visitArray(src, filter$1(p, ADD_MOD), v);\n } else {\n // if no add/rem/mod tuples, visit source\n visitArray(src, p.srcF, v);\n }\n }\n return p;\n }\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array} pulses - The sub-pulses for this multi-pulse.\n */\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n const p = this;\n let c = 0;\n this.dataflow = dataflow;\n this.stamp = stamp;\n this.fields = null;\n this.encode = encode || null;\n this.pulses = pulses;\n for (const pulse of pulses) {\n if (pulse.stamp !== stamp) continue;\n if (pulse.fields) {\n const hash = p.fields || (p.fields = {});\n for (const f in pulse.fields) {\n hash[f] = 1;\n }\n }\n if (pulse.changed(p.ADD)) c |= p.ADD;\n if (pulse.changed(p.REM)) c |= p.REM;\n if (pulse.changed(p.MOD)) c |= p.MOD;\n }\n this.changes = c;\n}\ninherits(MultiPulse, Pulse, {\n /**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse}\n */\n fork(flags) {\n const p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n if (flags !== undefined) {\n if (flags & p.ADD) this.visit(p.ADD, t => p.add.push(t));\n if (flags & p.REM) this.visit(p.REM, t => p.rem.push(t));\n if (flags & p.MOD) this.visit(p.MOD, t => p.mod.push(t));\n }\n return p;\n },\n changed(flags) {\n return this.changes & flags;\n },\n modified(_) {\n const p = this,\n fields = p.fields;\n return !(fields && p.changes & p.MOD) ? 0 : isArray(_) ? _.some(f => fields[f]) : fields[_];\n },\n filter() {\n error('MultiPulse does not support filtering.');\n },\n materialize() {\n error('MultiPulse does not support materialization.');\n },\n visit(flags, visitor) {\n const p = this,\n pulses = p.pulses,\n n = pulses.length;\n let i = 0;\n if (flags & p.SOURCE) {\n for (; i < n; ++i) {\n pulses[i].visit(flags, visitor);\n }\n } else {\n for (; i < n; ++i) {\n if (pulses[i].stamp === p.stamp) {\n pulses[i].visit(flags, visitor);\n }\n }\n }\n return p;\n }\n});\n\n/* eslint-disable require-atomic-updates */\n\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nasync function evaluate(encode, prerun, postrun) {\n const df = this,\n async = [];\n\n // if the pulse value is set, this is a re-entrant call\n if (df._pulse) return reentrant(df);\n\n // wait for pending datasets to load\n if (df._pending) await df._pending;\n\n // invoke prerun function, if provided\n if (prerun) await asyncCallback(df, prerun);\n\n // exit early if there are no updates\n if (!df._touched.length) {\n df.debug('Dataflow invoked, but nothing to do.');\n return df;\n }\n\n // increment timestamp clock\n const stamp = ++df._clock;\n\n // set the current pulse\n df._pulse = new Pulse(df, stamp, encode);\n\n // initialize priority queue, reset touched operators\n df._touched.forEach(op => df._enqueue(op, true));\n df._touched = UniqueList(id);\n let count = 0,\n op,\n next,\n error;\n try {\n while (df._heap.size() > 0) {\n // dequeue operator with highest priority\n op = df._heap.pop();\n\n // re-queue if rank changed\n if (op.rank !== op.qrank) {\n df._enqueue(op, true);\n continue;\n }\n\n // otherwise, evaluate the operator\n next = op.run(df._getPulse(op, encode));\n if (next.then) {\n // await if operator returns a promise directly\n next = await next;\n } else if (next.async) {\n // queue parallel asynchronous execution\n async.push(next.async);\n next = StopPropagation;\n }\n\n // propagate evaluation, enqueue dependent operators\n if (next !== StopPropagation) {\n if (op._targets) op._targets.forEach(op => df._enqueue(op));\n }\n\n // increment visit counter\n ++count;\n }\n } catch (err) {\n df._heap.clear();\n error = err;\n }\n\n // reset pulse map\n df._input = {};\n df._pulse = null;\n df.debug(\"Pulse \".concat(stamp, \": \").concat(count, \" operators\"));\n if (error) {\n df._postrun = [];\n df.error(error);\n }\n\n // invoke callbacks queued via runAfter\n if (df._postrun.length) {\n const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n df._postrun = [];\n for (let i = 0; i < pr.length; ++i) {\n await asyncCallback(df, pr[i].callback);\n }\n }\n\n // invoke postrun function, if provided\n if (postrun) await asyncCallback(df, postrun);\n\n // handle non-blocking asynchronous callbacks\n if (async.length) {\n Promise.all(async).then(cb => df.runAsync(null, () => {\n cb.forEach(f => {\n try {\n f(df);\n } catch (err) {\n df.error(err);\n }\n });\n }));\n }\n return df;\n}\n\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nasync function runAsync(encode, prerun, postrun) {\n // await previously queued functions\n while (this._running) await this._running;\n\n // run dataflow, manage running promise\n const clear = () => this._running = null;\n (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n return this._running;\n}\n\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\nfunction run(encode, prerun, postrun) {\n return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n * The callback will be invoked with this Dataflow instance as its\n * sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n * callback should be queued up to run after the next propagation\n * cycle, suppressing immediate invocation when propagation is not\n * currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n * callbacks to determine execution order. This argument is intended\n * for internal Vega use only.\n */\nfunction runAfter(callback, enqueue, priority) {\n if (this._pulse || enqueue) {\n // pulse propagation is currently running, queue to run after\n this._postrun.push({\n priority: priority || 0,\n callback: callback\n });\n } else {\n // pulse propagation already complete, invoke immediately\n try {\n callback(this);\n } catch (err) {\n this.error(err);\n }\n }\n}\n\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\nfunction reentrant(df) {\n df.error('Dataflow already running. Use runAsync() to chain invocations.');\n return df;\n}\n\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n * forceably added to the queue, even if it has already been previously\n * enqueued during the current pulse propagation. This is useful when the\n * dataflow graph is dynamically modified and the operator rank changes.\n */\nfunction enqueue(op, force) {\n const q = op.stamp < this._clock;\n if (q) op.stamp = this._clock;\n if (q || force) {\n op.qrank = op.rank;\n this._heap.push(op);\n }\n}\n\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n * annotate the returned pulse. See {@link run} for more information.\n */\nfunction getPulse(op, encode) {\n const s = op.source,\n stamp = this._clock;\n return s && isArray(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\nfunction singlePulse(p, s) {\n if (s && s.stamp === p.stamp) {\n return s;\n }\n p = p.fork();\n if (s && s !== StopPropagation) {\n p.source = s.source;\n }\n return p;\n}\nconst NO_OPT = {\n skip: false,\n force: false\n};\n\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction touch(op, options) {\n const opt = options || NO_OPT;\n if (this._pulse) {\n // if in midst of propagation, add to priority queue\n this._enqueue(op);\n } else {\n // otherwise, queue for next propagation\n this._touched.add(op);\n }\n if (opt.skip) op.skip(true);\n return this;\n}\n\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction update$6(op, value, options) {\n const opt = options || NO_OPT;\n if (op.set(value) || opt.force) {\n this.touch(op, opt);\n }\n return this;\n}\n\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction pulse(op, changeset, options) {\n this.touch(op, options || NO_OPT);\n const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n t = op.pulse && op.pulse.source || [];\n p.target = op;\n this._input[op.id] = changeset.pulse(p, t);\n return this;\n}\nfunction Heap(cmp) {\n let nodes = [];\n return {\n clear: () => nodes = [],\n size: () => nodes.length,\n peek: () => nodes[0],\n push: x => {\n nodes.push(x);\n return siftdown(nodes, 0, nodes.length - 1, cmp);\n },\n pop: () => {\n const last = nodes.pop();\n let item;\n if (nodes.length) {\n item = nodes[0];\n nodes[0] = last;\n siftup(nodes, 0, cmp);\n } else {\n item = last;\n }\n return item;\n }\n };\n}\nfunction siftdown(array, start, idx, cmp) {\n let parent, pidx;\n const item = array[idx];\n while (idx > start) {\n pidx = idx - 1 >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return array[idx] = item;\n}\nfunction siftup(array, idx, cmp) {\n const start = idx,\n end = array.length,\n item = array[idx];\n let cidx = (idx << 1) + 1,\n ridx;\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = (idx << 1) + 1;\n }\n array[idx] = item;\n return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\nfunction Dataflow() {\n this.logger(logger());\n this.logLevel(Error$1);\n this._clock = 0;\n this._rank = 0;\n this._locale = defaultLocale();\n try {\n this._loader = loader();\n } catch (e) {\n // do nothing if loader module is unavailable\n }\n this._touched = UniqueList(id);\n this._input = {};\n this._pulse = null;\n this._heap = Heap((a, b) => a.qrank - b.qrank);\n this._postrun = [];\n}\nfunction logMethod(method) {\n return function () {\n return this._log[method].apply(this, arguments);\n };\n}\nDataflow.prototype = {\n /**\n * The current timestamp of this dataflow. This value reflects the\n * timestamp of the previous dataflow run. The dataflow is initialized\n * with a stamp value of 0. The initial run of the dataflow will have\n * a timestap of 1, and so on. This value will match the\n * {@link Pulse.stamp} property.\n * @return {number} - The current timestamp value.\n */\n stamp() {\n return this._clock;\n },\n /**\n * Gets or sets the loader instance to use for data file loading. A\n * loader object must provide a \"load\" method for loading files and a\n * \"sanitize\" method for checking URL/filename validity. Both methods\n * should accept a URI and options hash as arguments, and return a Promise\n * that resolves to the loaded file contents (load) or a hash containing\n * sanitized URI data with the sanitized url assigned to the \"href\" property\n * (sanitize).\n * @param {object} _ - The loader instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current loader instance. Otherwise returns this Dataflow instance.\n */\n loader(_) {\n if (arguments.length) {\n this._loader = _;\n return this;\n } else {\n return this._loader;\n }\n },\n /**\n * Gets or sets the locale instance to use for formatting and parsing\n * string values. The locale object should be provided by the\n * vega-format library, and include methods such as format, timeFormat,\n * utcFormat, timeParse, and utcParse.\n * @param {object} _ - The locale instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current locale instance. Otherwise returns this Dataflow instance.\n */\n locale(_) {\n if (arguments.length) {\n this._locale = _;\n return this;\n } else {\n return this._locale;\n }\n },\n /**\n * Get or set the logger instance used to log messages. If no arguments are\n * provided, returns the current logger instance. Otherwise, sets the logger\n * and return this Dataflow instance. Provided loggers must support the full\n * API of logger objects generated by the vega-util logger method. Note that\n * by default the log level of the new logger will be used; use the logLevel\n * method to adjust the log level as needed.\n */\n logger(logger) {\n if (arguments.length) {\n this._log = logger;\n return this;\n } else {\n return this._log;\n }\n },\n /**\n * Logs an error message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit error messages.\n */\n error: logMethod('error'),\n /**\n * Logs a warning message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit warning messages.\n */\n warn: logMethod('warn'),\n /**\n * Logs a information message. By default, logged messages are written to\n * console output. The message will only be logged if the current log level is\n * high enough to permit information messages.\n */\n info: logMethod('info'),\n /**\n * Logs a debug message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit debug messages.\n */\n debug: logMethod('debug'),\n /**\n * Get or set the current log level. If an argument is provided, it\n * will be used as the new log level.\n * @param {number} [level] - Should be one of None, Warn, Info\n * @return {number} - The current log level.\n */\n logLevel: logMethod('level'),\n /**\n * Empty entry threshold for garbage cleaning. Map data structures will\n * perform cleaning once the number of empty entries exceeds this value.\n */\n cleanThreshold: 1e4,\n // OPERATOR REGISTRATION\n add: add$4,\n connect,\n rank,\n rerank,\n // OPERATOR UPDATES\n pulse,\n touch,\n update: update$6,\n changeset,\n // DATA LOADING\n ingest,\n parse: parse$5,\n preload,\n request,\n // EVENT HANDLING\n events: events$1,\n on,\n // PULSE PROPAGATION\n evaluate,\n run,\n runAsync,\n runAfter,\n _enqueue: enqueue,\n _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\nfunction Transform(init, params) {\n Operator.call(this, init, null, params);\n}\ninherits(Transform, Operator, {\n /**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\n run(pulse) {\n if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n let rv;\n if (this.skip()) {\n this.skip(false);\n } else {\n rv = this.evaluate(pulse);\n }\n rv = rv || pulse;\n if (rv.then) {\n rv = rv.then(_ => this.pulse = _);\n } else if (rv !== pulse.StopPropagation) {\n this.pulse = rv;\n }\n return rv;\n },\n /**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Marshalls parameter values and then invokes {@link transform}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n value (including undefined) will let the input pulse pass through.\n */\n evaluate(pulse) {\n const params = this.marshall(pulse.stamp),\n out = this.transform(params, pulse);\n params.clear();\n return out;\n },\n /**\n * Process incoming pulses.\n * Subclasses should override this method to implement transforms.\n * @param {Parameters} _ - The operator parameter values.\n * @param {Pulse} pulse - The current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n * value (including undefined) will let the input pulse pass through.\n */\n transform() {}\n});\nconst transforms = {};\nfunction definition$1(type) {\n const t = transform$2(type);\n return t && t.Definition || null;\n}\nfunction transform$2(type) {\n type = type && type.toLowerCase();\n return has$1(transforms, type) ? transforms[type] : null;\n}\nfunction* numbers$1(values, valueof) {\n if (valueof == null) {\n for (let value of values) {\n if (value != null && value !== '' && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n value = valueof(value, ++index, values);\n if (value != null && value !== '' && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\nfunction quantiles(array, p, f) {\n const values = Float64Array.from(numbers$1(array, f));\n\n // don't depend on return value from typed array sort call\n // protects against undefined sort results in Safari (vega/vega-lite#4964)\n values.sort(ascending$2);\n return p.map(_ => quantileSorted(values, _));\n}\nfunction quartiles(array, f) {\n return quantiles(array, [0.25, 0.50, 0.75], f);\n}\n\n// Scott, D. W. (1992) Multivariate Density Estimation:\n// Theory, Practice, and Visualization. Wiley.\nfunction estimateBandwidth(array, f) {\n const n = array.length,\n d = deviation(array, f),\n q = quartiles(array, f),\n h = (q[2] - q[0]) / 1.34,\n v = Math.min(d, h) || d || Math.abs(q[0]) || 1;\n return 1.06 * v * Math.pow(n, -0.2);\n}\nfunction bin$1(_) {\n // determine range\n const maxb = _.maxbins || 20,\n base = _.base || 10,\n logb = Math.log(base),\n div = _.divide || [5, 2];\n let min = _.extent[0],\n max = _.extent[1],\n step,\n level,\n minstep,\n v,\n i,\n n;\n const span = _.span || max - min || Math.abs(min) || 1;\n if (_.step) {\n // if step size is explicitly given, use that\n step = _.step;\n } else if (_.steps) {\n // if provided, limit choice to acceptable step sizes\n v = span / maxb;\n for (i = 0, n = _.steps.length; i < n && _.steps[i] < v; ++i);\n step = _.steps[Math.max(0, i - 1)];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = _.minstep || 0;\n step = Math.max(minstep, Math.pow(base, Math.round(Math.log(span) / logb) - level));\n\n // increase step size if too many bins\n while (Math.ceil(span / step) > maxb) {\n step *= base;\n }\n\n // decrease step size if allowed\n for (i = 0, n = div.length; i < n; ++i) {\n v = step / div[i];\n if (v >= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n const precision = v >= 0 ? 0 : ~~(-v / logb) + 1,\n eps = Math.pow(base, -precision - 1);\n if (_.nice || _.nice === undefined) {\n v = Math.floor(min / step + eps) * step;\n min = min < v ? v - step : v;\n max = Math.ceil(max / step) * step;\n }\n return {\n start: min,\n stop: max === min ? min + step : max,\n step: step\n };\n}\nvar random = Math.random;\nfunction setRandom(r) {\n random = r;\n}\nfunction bootstrapCI(array, samples, alpha, f) {\n if (!array.length) return [undefined, undefined];\n const values = Float64Array.from(numbers$1(array, f)),\n n = values.length,\n m = samples;\n let a, i, j, mu;\n for (j = 0, mu = Array(m); j < m; ++j) {\n for (a = 0, i = 0; i < n; ++i) {\n a += values[~~(random() * n)];\n }\n mu[j] = a / n;\n }\n mu.sort(ascending$2);\n return [quantile$1(mu, alpha / 2), quantile$1(mu, 1 - alpha / 2)];\n}\n\n// Dot density binning for dot plot construction.\n// Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n// https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\nfunction dotbin(array, step, smooth, f) {\n f = f || (_ => _);\n const n = array.length,\n v = new Float64Array(n);\n let i = 0,\n j = 1,\n a = f(array[0]),\n b = a,\n w = a + step,\n x;\n for (; j < n; ++j) {\n x = f(array[j]);\n if (x >= w) {\n b = (a + b) / 2;\n for (; i < j; ++i) v[i] = b;\n w = x + step;\n a = x;\n }\n b = x;\n }\n b = (a + b) / 2;\n for (; i < j; ++i) v[i] = b;\n return smooth ? smoothing(v, step + step / 4) : v;\n}\n\n// perform smoothing to reduce variance\n// swap points between \"adjacent\" stacks\n// Wilkinson defines adjacent as within step/4 units\nfunction smoothing(v, thresh) {\n const n = v.length;\n let a = 0,\n b = 1,\n c,\n d;\n\n // get left stack\n while (v[a] === v[b]) ++b;\n while (b < n) {\n // get right stack\n c = b + 1;\n while (v[b] === v[c]) ++c;\n\n // are stacks adjacent?\n // if so, compare sizes and swap as needed\n if (v[b] - v[b - 1] < thresh) {\n d = b + (a + c - b - b >> 1);\n while (d < b) v[d++] = v[b];\n while (d > b) v[d--] = v[a];\n }\n\n // update left stack indices\n a = b;\n b = c;\n }\n return v;\n}\nfunction lcg$2(seed) {\n // Random numbers using a Linear Congruential Generator with seed value\n // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n return function () {\n seed = (1103515245 * seed + 12345) % 2147483647;\n return seed / 2147483647;\n };\n}\nfunction integer(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n let a, b, d;\n const dist = {\n min(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n },\n max(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n },\n sample() {\n return a + Math.floor(d * random());\n },\n pdf(x) {\n return x === Math.floor(x) && x >= a && x < b ? 1 / d : 0;\n },\n cdf(x) {\n const v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n },\n icdf(p) {\n return p >= 0 && p <= 1 ? a - 1 + Math.floor(p * d) : NaN;\n }\n };\n return dist.min(min).max(max);\n}\nconst SQRT2PI = Math.sqrt(2 * Math.PI);\nconst SQRT2 = Math.SQRT2;\nlet nextSample = NaN;\nfunction sampleNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n let x = 0,\n y = 0,\n rds,\n c;\n if (nextSample === nextSample) {\n x = nextSample;\n nextSample = NaN;\n } else {\n do {\n x = random() * 2 - 1;\n y = random() * 2 - 1;\n rds = x * x + y * y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n x *= c;\n nextSample = y * c;\n }\n return mean + x * stdev;\n}\nfunction densityNormal(value, mean, stdev) {\n stdev = stdev == null ? 1 : stdev;\n const z = (value - (mean || 0)) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI);\n}\n\n// Approximation from West (2009)\n// Better Approximations to Cumulative Normal Functions\nfunction cumulativeNormal(value, mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n const z = (value - mean) / stdev,\n Z = Math.abs(z);\n let cd;\n if (Z > 37) {\n cd = 0;\n } else {\n const exp = Math.exp(-Z * Z / 2);\n let sum;\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n}\n\n// Approximation of Probit function using inverse error function.\nfunction quantileNormal(p, mean, stdev) {\n if (p < 0 || p > 1) return NaN;\n return (mean || 0) + (stdev == null ? 1 : stdev) * SQRT2 * erfinv(2 * p - 1);\n}\n\n// Approximate inverse error function. Implementation from \"Approximating\n// the erfinv function\" by Mike Giles, GPU Computing Gems, volume 2, 2010.\n// Ported from Apache Commons Math, http://www.apache.org/licenses/LICENSE-2.0\nfunction erfinv(x) {\n // beware that the logarithm argument must be\n // commputed as (1.0 - x) * (1.0 + x),\n // it must NOT be simplified as 1.0 - x * x as this\n // would induce rounding errors near the boundaries +/-1\n let w = -Math.log((1 - x) * (1 + x)),\n p;\n if (w < 6.25) {\n w -= 3.125;\n p = -3.6444120640178196996e-21;\n p = -1.685059138182016589e-19 + p * w;\n p = 1.2858480715256400167e-18 + p * w;\n p = 1.115787767802518096e-17 + p * w;\n p = -1.333171662854620906e-16 + p * w;\n p = 2.0972767875968561637e-17 + p * w;\n p = 6.6376381343583238325e-15 + p * w;\n p = -4.0545662729752068639e-14 + p * w;\n p = -8.1519341976054721522e-14 + p * w;\n p = 2.6335093153082322977e-12 + p * w;\n p = -1.2975133253453532498e-11 + p * w;\n p = -5.4154120542946279317e-11 + p * w;\n p = 1.051212273321532285e-09 + p * w;\n p = -4.1126339803469836976e-09 + p * w;\n p = -2.9070369957882005086e-08 + p * w;\n p = 4.2347877827932403518e-07 + p * w;\n p = -1.3654692000834678645e-06 + p * w;\n p = -1.3882523362786468719e-05 + p * w;\n p = 0.0001867342080340571352 + p * w;\n p = -0.00074070253416626697512 + p * w;\n p = -0.0060336708714301490533 + p * w;\n p = 0.24015818242558961693 + p * w;\n p = 1.6536545626831027356 + p * w;\n } else if (w < 16.0) {\n w = Math.sqrt(w) - 3.25;\n p = 2.2137376921775787049e-09;\n p = 9.0756561938885390979e-08 + p * w;\n p = -2.7517406297064545428e-07 + p * w;\n p = 1.8239629214389227755e-08 + p * w;\n p = 1.5027403968909827627e-06 + p * w;\n p = -4.013867526981545969e-06 + p * w;\n p = 2.9234449089955446044e-06 + p * w;\n p = 1.2475304481671778723e-05 + p * w;\n p = -4.7318229009055733981e-05 + p * w;\n p = 6.8284851459573175448e-05 + p * w;\n p = 2.4031110387097893999e-05 + p * w;\n p = -0.0003550375203628474796 + p * w;\n p = 0.00095328937973738049703 + p * w;\n p = -0.0016882755560235047313 + p * w;\n p = 0.0024914420961078508066 + p * w;\n p = -0.0037512085075692412107 + p * w;\n p = 0.005370914553590063617 + p * w;\n p = 1.0052589676941592334 + p * w;\n p = 3.0838856104922207635 + p * w;\n } else if (Number.isFinite(w)) {\n w = Math.sqrt(w) - 5.0;\n p = -2.7109920616438573243e-11;\n p = -2.5556418169965252055e-10 + p * w;\n p = 1.5076572693500548083e-09 + p * w;\n p = -3.7894654401267369937e-09 + p * w;\n p = 7.6157012080783393804e-09 + p * w;\n p = -1.4960026627149240478e-08 + p * w;\n p = 2.9147953450901080826e-08 + p * w;\n p = -6.7711997758452339498e-08 + p * w;\n p = 2.2900482228026654717e-07 + p * w;\n p = -9.9298272942317002539e-07 + p * w;\n p = 4.5260625972231537039e-06 + p * w;\n p = -1.9681778105531670567e-05 + p * w;\n p = 7.5995277030017761139e-05 + p * w;\n p = -0.00021503011930044477347 + p * w;\n p = -0.00013871931833623122026 + p * w;\n p = 1.0103004648645343977 + p * w;\n p = 4.8499064014085844221 + p * w;\n } else {\n p = Infinity;\n }\n return p * x;\n}\nfunction gaussian(mean, stdev) {\n let mu, sigma;\n const dist = {\n mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n sample: () => sampleNormal(mu, sigma),\n pdf: value => densityNormal(value, mu, sigma),\n cdf: value => cumulativeNormal(value, mu, sigma),\n icdf: p => quantileNormal(p, mu, sigma)\n };\n return dist.mean(mean).stdev(stdev);\n}\nfunction kde(support, bandwidth) {\n const kernel = gaussian();\n let n = 0;\n const dist = {\n data(_) {\n if (arguments.length) {\n support = _;\n n = _ ? _.length : 0;\n return dist.bandwidth(bandwidth);\n } else {\n return support;\n }\n },\n bandwidth(_) {\n if (!arguments.length) return bandwidth;\n bandwidth = _;\n if (!bandwidth && support) bandwidth = estimateBandwidth(support);\n return dist;\n },\n sample() {\n return support[~~(random() * n)] + bandwidth * kernel.sample();\n },\n pdf(x) {\n let y = 0,\n i = 0;\n for (; i < n; ++i) {\n y += kernel.pdf((x - support[i]) / bandwidth);\n }\n return y / bandwidth / n;\n },\n cdf(x) {\n let y = 0,\n i = 0;\n for (; i < n; ++i) {\n y += kernel.cdf((x - support[i]) / bandwidth);\n }\n return y / n;\n },\n icdf() {\n throw Error('KDE icdf not supported.');\n }\n };\n return dist.data(support);\n}\nfunction sampleLogNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n return Math.exp(mean + sampleNormal() * stdev);\n}\nfunction densityLogNormal(value, mean, stdev) {\n if (value <= 0) return 0;\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n const z = (Math.log(value) - mean) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI * value);\n}\nfunction cumulativeLogNormal(value, mean, stdev) {\n return cumulativeNormal(Math.log(value), mean, stdev);\n}\nfunction quantileLogNormal(p, mean, stdev) {\n return Math.exp(quantileNormal(p, mean, stdev));\n}\nfunction lognormal(mean, stdev) {\n let mu, sigma;\n const dist = {\n mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n sample: () => sampleLogNormal(mu, sigma),\n pdf: value => densityLogNormal(value, mu, sigma),\n cdf: value => cumulativeLogNormal(value, mu, sigma),\n icdf: p => quantileLogNormal(p, mu, sigma)\n };\n return dist.mean(mean).stdev(stdev);\n}\nfunction mixture$1(dists, weights) {\n let m = 0,\n w;\n function normalize(x) {\n const w = [];\n let sum = 0,\n i;\n for (i = 0; i < m; ++i) {\n sum += w[i] = x[i] == null ? 1 : +x[i];\n }\n for (i = 0; i < m; ++i) {\n w[i] /= sum;\n }\n return w;\n }\n const dist = {\n weights(_) {\n if (arguments.length) {\n w = normalize(weights = _ || []);\n return dist;\n }\n return weights;\n },\n distributions(_) {\n if (arguments.length) {\n if (_) {\n m = _.length;\n dists = _;\n } else {\n m = 0;\n dists = [];\n }\n return dist.weights(weights);\n }\n return dists;\n },\n sample() {\n const r = random();\n let d = dists[m - 1],\n v = w[0],\n i = 0;\n\n // first select distribution\n for (; i < m - 1; v += w[++i]) {\n if (r < v) {\n d = dists[i];\n break;\n }\n }\n // then sample from it\n return d.sample();\n },\n pdf(x) {\n let p = 0,\n i = 0;\n for (; i < m; ++i) {\n p += w[i] * dists[i].pdf(x);\n }\n return p;\n },\n cdf(x) {\n let p = 0,\n i = 0;\n for (; i < m; ++i) {\n p += w[i] * dists[i].cdf(x);\n }\n return p;\n },\n icdf() {\n throw Error('Mixture icdf not supported.');\n }\n };\n return dist.distributions(dists).weights(weights);\n}\nfunction sampleUniform(min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return min + (max - min) * random();\n}\nfunction densityUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return value >= min && value <= max ? 1 / (max - min) : 0;\n}\nfunction cumulativeUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return value < min ? 0 : value > max ? 1 : (value - min) / (max - min);\n}\nfunction quantileUniform(p, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return p >= 0 && p <= 1 ? min + p * (max - min) : NaN;\n}\nfunction uniform(min, max) {\n let a, b;\n const dist = {\n min(_) {\n if (arguments.length) {\n a = _ || 0;\n return dist;\n } else {\n return a;\n }\n },\n max(_) {\n if (arguments.length) {\n b = _ == null ? 1 : _;\n return dist;\n } else {\n return b;\n }\n },\n sample: () => sampleUniform(a, b),\n pdf: value => densityUniform(value, a, b),\n cdf: value => cumulativeUniform(value, a, b),\n icdf: p => quantileUniform(p, a, b)\n };\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return dist.min(min).max(max);\n}\nfunction constant$4(data, x, y) {\n let mean = 0,\n n = 0;\n for (const d of data) {\n const val = y(d);\n if (x(d) == null || val == null || isNaN(val)) continue;\n mean += (val - mean) / ++n;\n }\n return {\n coef: [mean],\n predict: () => mean,\n rSquared: 0\n };\n}\n\n// Ordinary Least Squares\nfunction ols(uX, uY, uXY, uX2) {\n const delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n}\nfunction points(data, x, y, sort) {\n data = data.filter(d => {\n let u = x(d),\n v = y(d);\n return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n });\n if (sort) {\n data.sort((a, b) => x(a) - x(b));\n }\n const n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n);\n\n // extract values, calculate means\n let i = 0,\n ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n for (d of data) {\n X[i] = xv = +x(d);\n Y[i] = yv = +y(d);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n }\n\n // mean center the data\n for (i = 0; i < n; ++i) {\n X[i] -= ux;\n Y[i] -= uy;\n }\n return [X, Y, ux, uy];\n}\nfunction visitPoints(data, x, y, callback) {\n let i = -1,\n u,\n v;\n for (const d of data) {\n u = x(d);\n v = y(d);\n if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n callback(u, v, ++i);\n }\n }\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction rSquared(data, x, y, uY, predict) {\n let SSE = 0,\n SST = 0;\n visitPoints(data, x, y, (dx, dy) => {\n const sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction linear$2(data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] + coef[1] * x;\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction log$3(data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n ++n;\n dx = Math.log(dx);\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] + coef[1] * Math.log(x);\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\nfunction exp$1(data, x, y) {\n // eslint-disable-next-line no-unused-vars\n const [xv, yv, ux, uy] = points(data, x, y);\n let YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n n = 0,\n dx,\n ly,\n xy;\n visitPoints(data, x, y, (_, dy) => {\n dx = xv[n++];\n ly = Math.log(dy);\n xy = dx * dy;\n YL += (dy * ly - YL) / n;\n XY += (xy - XY) / n;\n XYL += (xy * ly - XYL) / n;\n X2Y += (dx * xy - X2Y) / n;\n });\n const [c0, c1] = ols(XY / uy, YL / uy, XYL / uy, X2Y / uy),\n predict = x => Math.exp(c0 + c1 * (x - ux));\n return {\n coef: [Math.exp(c0 - c1 * ux), c1],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction pow$3(data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n const lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n });\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] * Math.pow(x, coef[1]);\n coef[0] = Math.exp(coef[0]);\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, YS, predict)\n };\n}\nfunction quad(data, x, y) {\n const [xv, yv, ux, uy] = points(data, x, y),\n n = xv.length;\n let X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n const X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n predict = x => {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n\n // transform coefficients back from mean-centered space\n return {\n coef: [c - b * ux + a * ux * ux + uy, b - 2 * a * ux, a],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n// License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\nfunction poly(data, x, y, order) {\n // use more efficient methods for lower orders\n if (order === 0) return constant$4(data, x, y);\n if (order === 1) return linear$2(data, x, y);\n if (order === 2) return quad(data, x, y);\n const [xv, yv, ux, uy] = points(data, x, y),\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n let i, j, l, v, c;\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n lhs.push(v);\n c = new Float64Array(k);\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n c[j] = v;\n }\n rhs.push(c);\n }\n rhs.push(lhs);\n const coef = gaussianElimination(rhs),\n predict = x => {\n x -= ux;\n let y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n for (i = 3; i < k; ++i) y += coef[i] * Math.pow(x, i);\n return y;\n };\n return {\n coef: uncenter(k, coef, -ux, uy),\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\nfunction uncenter(k, a, x, y) {\n const z = Array(k);\n let i, j, v, c;\n\n // initialize to zero\n for (i = 0; i < k; ++i) z[i] = 0;\n\n // polynomial expansion\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n z[i - j] += v * Math.pow(x, j) * c;\n }\n }\n\n // bias term\n z[0] += y;\n return z;\n}\n\n// Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\nfunction gaussianElimination(matrix) {\n const n = matrix.length - 1,\n coef = [];\n let i, j, k, r, t;\n for (i = 0; i < n; ++i) {\n r = i; // max row\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n return coef;\n}\nconst maxiters = 2,\n epsilon$6 = 1e-12;\n\n// Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\nfunction loess(data, x, y, bandwidth) {\n const [xv, yv, ux, uy] = points(data, x, y, true),\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n // # nearest neighbors\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n for (let iter = -1; ++iter <= maxiters;) {\n const interval = [0, bw - 1];\n for (let i = 0; i < n; ++i) {\n const dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n let W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0;\n const denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n for (let k = i0; k <= i1; ++k) {\n const xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n }\n\n // linear regression fit\n const [a, b] = ols(X / W, Y / W, XY / W, X2 / W);\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n if (iter === maxiters) {\n break;\n }\n const medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon$6) break;\n for (let i = 0, arg, w; i < n; ++i) {\n arg = residuals[i] / (6 * medianResidual);\n // default to epsilon (rather than zero) for large deviations\n // keeping weights tiny but non-zero prevents singularites\n robustWeights[i] = arg >= 1 ? epsilon$6 : (w = 1 - arg * arg) * w;\n }\n }\n return output$1(xv, yhat, ux, uy);\n}\n\n// weighting kernel for local regression\nfunction tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n}\n\n// advance sliding window interval of nearest neighbors\nfunction updateInterval(xv, i, interval) {\n const val = xv[i];\n let left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return;\n\n // step right if distance to new right edge is <= distance to old left edge\n // step when distance is equal to ensure movement over duplicate x values\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n}\n\n// generate smoothed output points\n// average points with repeated x values\nfunction output$1(xv, yhat, ux, uy) {\n const n = xv.length,\n out = [];\n let i = 0,\n cnt = 0,\n prev = [],\n v;\n for (; i < n; ++i) {\n v = xv[i] + ux;\n if (prev[0] === v) {\n // average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n prev[1] += uy;\n return out;\n}\n\n// subdivide up to accuracy of 0.5 degrees\nconst MIN_RADIANS = 0.5 * Math.PI / 180;\n\n// Adaptively sample an interpolated function over a domain extent\nfunction sampleCurve(f, extent, minSteps, maxSteps) {\n minSteps = minSteps || 25;\n maxSteps = Math.max(minSteps, maxSteps || 200);\n const point = x => [x, f(x)],\n minX = extent[0],\n maxX = extent[1],\n span = maxX - minX,\n stop = span / maxSteps,\n prev = [point(minX)],\n next = [];\n if (minSteps === maxSteps) {\n // no adaptation, sample uniform grid directly and return\n for (let i = 1; i < maxSteps; ++i) {\n prev.push(point(minX + i / minSteps * span));\n }\n prev.push(point(maxX));\n return prev;\n } else {\n // sample minimum points on uniform grid\n // then move on to perform adaptive refinement\n next.push(point(maxX));\n for (let i = minSteps; --i > 0;) {\n next.push(point(minX + i / minSteps * span));\n }\n }\n let p0 = prev[0];\n let p1 = next[next.length - 1];\n const sx = 1 / span;\n const sy = scaleY(p0[1], next);\n while (p1) {\n // midpoint for potential curve subdivision\n const pm = point((p0[0] + p1[0]) / 2);\n const dx = pm[0] - p0[0] >= stop;\n if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {\n // maximum resolution has not yet been met, and\n // subdivision midpoint is sufficiently different from endpoint\n // save subdivision, push midpoint onto the visitation stack\n next.push(pm);\n } else {\n // subdivision midpoint sufficiently similar to endpoint\n // skip subdivision, store endpoint, move to next point on the stack\n p0 = p1;\n prev.push(p1);\n next.pop();\n }\n p1 = next[next.length - 1];\n }\n return prev;\n}\nfunction scaleY(init, points) {\n let ymin = init;\n let ymax = init;\n const n = points.length;\n for (let i = 0; i < n; ++i) {\n const y = points[i][1];\n if (y < ymin) ymin = y;\n if (y > ymax) ymax = y;\n }\n return 1 / (ymax - ymin);\n}\nfunction angleDelta(p, q, r, sx, sy) {\n const a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),\n a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));\n return Math.abs(a0 - a1);\n}\nfunction multikey(f) {\n return x => {\n const n = f.length;\n let i = 1,\n k = String(f[0](x));\n for (; i < n; ++i) {\n k += '|' + f[i](x);\n }\n return k;\n };\n}\nfunction groupkey(fields) {\n return !fields || !fields.length ? function () {\n return '';\n } : fields.length === 1 ? fields[0] : multikey(fields);\n}\nfunction measureName(op, field, as) {\n return as || op + (!field ? '' : '_' + field);\n}\nconst noop$4 = () => {};\nconst base_op = {\n init: noop$4,\n add: noop$4,\n rem: noop$4,\n idx: 0\n};\nconst AggregateOps = {\n values: {\n init: m => m.cell.store = true,\n value: m => m.cell.data.values(),\n idx: -1\n },\n count: {\n value: m => m.cell.num\n },\n __count__: {\n value: m => m.missing + m.valid\n },\n missing: {\n value: m => m.missing\n },\n valid: {\n value: m => m.valid\n },\n sum: {\n init: m => m.sum = 0,\n value: m => m.sum,\n add: (m, v) => m.sum += +v,\n rem: (m, v) => m.sum -= v\n },\n product: {\n init: m => m.product = 1,\n value: m => m.valid ? m.product : undefined,\n add: (m, v) => m.product *= v,\n rem: (m, v) => m.product /= v\n },\n mean: {\n init: m => m.mean = 0,\n value: m => m.valid ? m.mean : undefined,\n add: (m, v) => (m.mean_d = v - m.mean, m.mean += m.mean_d / m.valid),\n rem: (m, v) => (m.mean_d = v - m.mean, m.mean -= m.valid ? m.mean_d / m.valid : m.mean)\n },\n average: {\n value: m => m.valid ? m.mean : undefined,\n req: ['mean'],\n idx: 1\n },\n variance: {\n init: m => m.dev = 0,\n value: m => m.valid > 1 ? m.dev / (m.valid - 1) : undefined,\n add: (m, v) => m.dev += m.mean_d * (v - m.mean),\n rem: (m, v) => m.dev -= m.mean_d * (v - m.mean),\n req: ['mean'],\n idx: 1\n },\n variancep: {\n value: m => m.valid > 1 ? m.dev / m.valid : undefined,\n req: ['variance'],\n idx: 2\n },\n stdev: {\n value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid - 1)) : undefined,\n req: ['variance'],\n idx: 2\n },\n stdevp: {\n value: m => m.valid > 1 ? Math.sqrt(m.dev / m.valid) : undefined,\n req: ['variance'],\n idx: 2\n },\n stderr: {\n value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid * (m.valid - 1))) : undefined,\n req: ['variance'],\n idx: 2\n },\n distinct: {\n value: m => m.cell.data.distinct(m.get),\n req: ['values'],\n idx: 3\n },\n ci0: {\n value: m => m.cell.data.ci0(m.get),\n req: ['values'],\n idx: 3\n },\n ci1: {\n value: m => m.cell.data.ci1(m.get),\n req: ['values'],\n idx: 3\n },\n median: {\n value: m => m.cell.data.q2(m.get),\n req: ['values'],\n idx: 3\n },\n q1: {\n value: m => m.cell.data.q1(m.get),\n req: ['values'],\n idx: 3\n },\n q3: {\n value: m => m.cell.data.q3(m.get),\n req: ['values'],\n idx: 3\n },\n min: {\n init: m => m.min = undefined,\n value: m => m.min = Number.isNaN(m.min) ? m.cell.data.min(m.get) : m.min,\n add: (m, v) => {\n if (v < m.min || m.min === undefined) m.min = v;\n },\n rem: (m, v) => {\n if (v <= m.min) m.min = NaN;\n },\n req: ['values'],\n idx: 4\n },\n max: {\n init: m => m.max = undefined,\n value: m => m.max = Number.isNaN(m.max) ? m.cell.data.max(m.get) : m.max,\n add: (m, v) => {\n if (v > m.max || m.max === undefined) m.max = v;\n },\n rem: (m, v) => {\n if (v >= m.max) m.max = NaN;\n },\n req: ['values'],\n idx: 4\n },\n argmin: {\n init: m => m.argmin = undefined,\n value: m => m.argmin || m.cell.data.argmin(m.get),\n add: (m, v, t) => {\n if (v < m.min) m.argmin = t;\n },\n rem: (m, v) => {\n if (v <= m.min) m.argmin = undefined;\n },\n req: ['min', 'values'],\n idx: 3\n },\n argmax: {\n init: m => m.argmax = undefined,\n value: m => m.argmax || m.cell.data.argmax(m.get),\n add: (m, v, t) => {\n if (v > m.max) m.argmax = t;\n },\n rem: (m, v) => {\n if (v >= m.max) m.argmax = undefined;\n },\n req: ['max', 'values'],\n idx: 3\n }\n};\nconst ValidAggregateOps = Object.keys(AggregateOps).filter(d => d !== '__count__');\nfunction measure(key, value) {\n return out => extend$1({\n name: key,\n out: out || key\n }, base_op, value);\n}\n[...ValidAggregateOps, '__count__'].forEach(key => {\n AggregateOps[key] = measure(key, AggregateOps[key]);\n});\nfunction createMeasure(op, name) {\n return AggregateOps[op](name);\n}\nfunction compareIndex(a, b) {\n return a.idx - b.idx;\n}\nfunction resolve(agg) {\n const map = {};\n agg.forEach(a => map[a.name] = a);\n const getreqs = a => {\n if (!a.req) return;\n a.req.forEach(key => {\n if (!map[key]) getreqs(map[key] = AggregateOps[key]());\n });\n };\n agg.forEach(getreqs);\n return Object.values(map).sort(compareIndex);\n}\nfunction init() {\n this.valid = 0;\n this.missing = 0;\n this._ops.forEach(op => op.init(this));\n}\nfunction add$3(v, t) {\n if (v == null || v === '') {\n ++this.missing;\n return;\n }\n if (v !== v) return;\n ++this.valid;\n this._ops.forEach(op => op.add(this, v, t));\n}\nfunction rem(v, t) {\n if (v == null || v === '') {\n --this.missing;\n return;\n }\n if (v !== v) return;\n --this.valid;\n this._ops.forEach(op => op.rem(this, v, t));\n}\nfunction set$5(t) {\n this._out.forEach(op => t[op.out] = op.value(this));\n return t;\n}\nfunction compileMeasures(agg, field) {\n const get = field || identity$6,\n ops = resolve(agg),\n out = agg.slice().sort(compareIndex);\n function ctr(cell) {\n this._ops = ops;\n this._out = out;\n this.cell = cell;\n this.init();\n }\n ctr.prototype.init = init;\n ctr.prototype.add = add$3;\n ctr.prototype.rem = rem;\n ctr.prototype.set = set$5;\n ctr.prototype.get = get;\n ctr.fields = agg.map(op => op.out);\n return ctr;\n}\nfunction TupleStore(key) {\n this._key = key ? field$1(key) : tupleid;\n this.reset();\n}\nconst prototype$1 = TupleStore.prototype;\nprototype$1.reset = function () {\n this._add = [];\n this._rem = [];\n this._ext = null;\n this._get = null;\n this._q = null;\n};\nprototype$1.add = function (v) {\n this._add.push(v);\n};\nprototype$1.rem = function (v) {\n this._rem.push(v);\n};\nprototype$1.values = function () {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n const a = this._add,\n r = this._rem,\n k = this._key,\n n = a.length,\n m = r.length,\n x = Array(n - m),\n map = {};\n let i, j, v;\n\n // use unique key field to clear removed values\n for (i = 0; i < m; ++i) {\n map[k(r[i])] = 1;\n }\n for (i = 0, j = 0; i < n; ++i) {\n if (map[k(v = a[i])]) {\n map[k(v)] = 0;\n } else {\n x[j++] = v;\n }\n }\n this._rem = [];\n return this._add = x;\n};\n\n// memoizing statistics methods\n\nprototype$1.distinct = function (get) {\n const v = this.values(),\n map = {};\n let n = v.length,\n count = 0,\n s;\n while (--n >= 0) {\n s = get(v[n]) + '';\n if (!has$1(map, s)) {\n map[s] = 1;\n ++count;\n }\n }\n return count;\n};\nprototype$1.extent = function (get) {\n if (this._get !== get || !this._ext) {\n const v = this.values(),\n i = extentIndex(v, get);\n this._ext = [v[i[0]], v[i[1]]];\n this._get = get;\n }\n return this._ext;\n};\nprototype$1.argmin = function (get) {\n return this.extent(get)[0] || {};\n};\nprototype$1.argmax = function (get) {\n return this.extent(get)[1] || {};\n};\nprototype$1.min = function (get) {\n const m = this.extent(get)[0];\n return m != null ? get(m) : undefined;\n};\nprototype$1.max = function (get) {\n const m = this.extent(get)[1];\n return m != null ? get(m) : undefined;\n};\nprototype$1.quartile = function (get) {\n if (this._get !== get || !this._q) {\n this._q = quartiles(this.values(), get);\n this._get = get;\n }\n return this._q;\n};\nprototype$1.q1 = function (get) {\n return this.quartile(get)[0];\n};\nprototype$1.q2 = function (get) {\n return this.quartile(get)[1];\n};\nprototype$1.q3 = function (get) {\n return this.quartile(get)[2];\n};\nprototype$1.ci = function (get) {\n if (this._get !== get || !this._ci) {\n this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n this._get = get;\n }\n return this._ci;\n};\nprototype$1.ci0 = function (get) {\n return this.ci(get)[0];\n};\nprototype$1.ci1 = function (get) {\n return this.ci(get)[1];\n};\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {Array} [params.fields] - An array of accessors to aggregate.\n * @param {Array} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n * cross-product of groupby values should be generated, including empty cells.\n * If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\nfunction Aggregate$1(params) {\n Transform.call(this, null, params);\n this._adds = []; // array of added output tuples\n this._mods = []; // array of modified output tuples\n this._alen = 0; // number of active added tuples\n this._mlen = 0; // number of active modified tuples\n this._drop = true; // should empty aggregation cells be removed\n this._cross = false; // produce full cross-product of group-by values\n\n this._dims = []; // group-by dimension accessors\n this._dnames = []; // group-by dimension names\n\n this._measures = []; // collection of aggregation monoids\n this._countOnly = false; // flag indicating only count aggregation\n this._counts = null; // collection of count fields\n this._prev = null; // previous aggregation cells\n\n this._inputs = null; // array of dependent input tuple field names\n this._outputs = null; // array of output tuple field names\n}\n\nAggregate$1.Definition = {\n 'type': 'Aggregate',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidAggregateOps\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'drop',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'cross',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(Aggregate$1, Transform, {\n transform(_, pulse) {\n const aggr = this,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n mod = _.modified();\n aggr.stamp = out.stamp;\n if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n aggr._prev = aggr.value;\n aggr.value = mod ? aggr.init(_) : Object.create(null);\n pulse.visit(pulse.SOURCE, t => aggr.add(t));\n } else {\n aggr.value = aggr.value || aggr.init(_);\n pulse.visit(pulse.REM, t => aggr.rem(t));\n pulse.visit(pulse.ADD, t => aggr.add(t));\n }\n\n // Indicate output fields and return aggregate tuples.\n out.modifies(aggr._outputs);\n\n // Should empty cells be dropped?\n aggr._drop = _.drop !== false;\n\n // If domain cross-product requested, generate empty cells as needed\n // and ensure that empty cells are not dropped\n if (_.cross && aggr._dims.length > 1) {\n aggr._drop = false;\n aggr.cross();\n }\n if (pulse.clean() && aggr._drop) {\n out.clean(true).runAfter(() => this.clean());\n }\n return aggr.changes(out);\n },\n cross() {\n const aggr = this,\n curr = aggr.value,\n dims = aggr._dnames,\n vals = dims.map(() => ({})),\n n = dims.length;\n\n // collect all group-by domain values\n function collect(cells) {\n let key, i, t, v;\n for (key in cells) {\n t = cells[key].tuple;\n for (i = 0; i < n; ++i) {\n vals[i][v = t[dims[i]]] = v;\n }\n }\n }\n collect(aggr._prev);\n collect(curr);\n\n // iterate over key cross-product, create cells as needed\n function generate(base, tuple, index) {\n const name = dims[index],\n v = vals[index++];\n for (const k in v) {\n const key = base ? base + '|' + k : k;\n tuple[name] = v[k];\n if (index < n) generate(key, tuple, index);else if (!curr[key]) aggr.cell(key, tuple);\n }\n }\n generate('', {}, 0);\n },\n init(_) {\n // initialize input and output fields\n const inputs = this._inputs = [],\n outputs = this._outputs = [],\n inputMap = {};\n function inputVisit(get) {\n const fields = array$5(accessorFields(get)),\n n = fields.length;\n let i = 0,\n f;\n for (; i < n; ++i) {\n if (!inputMap[f = fields[i]]) {\n inputMap[f] = 1;\n inputs.push(f);\n }\n }\n }\n\n // initialize group-by dimensions\n this._dims = array$5(_.groupby);\n this._dnames = this._dims.map(d => {\n const dname = accessorName(d);\n inputVisit(d);\n outputs.push(dname);\n return dname;\n });\n this.cellkey = _.key ? _.key : groupkey(this._dims);\n\n // initialize aggregate measures\n this._countOnly = true;\n this._counts = [];\n this._measures = [];\n const fields = _.fields || [null],\n ops = _.ops || ['count'],\n as = _.as || [],\n n = fields.length,\n map = {};\n let field, op, m, mname, outname, i;\n if (n !== ops.length) {\n error('Unmatched number of fields and aggregate ops.');\n }\n for (i = 0; i < n; ++i) {\n field = fields[i];\n op = ops[i];\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n mname = accessorName(field);\n outname = measureName(op, mname, as[i]);\n outputs.push(outname);\n if (op === 'count') {\n this._counts.push(outname);\n continue;\n }\n m = map[mname];\n if (!m) {\n inputVisit(field);\n m = map[mname] = [];\n m.field = field;\n this._measures.push(m);\n }\n if (op !== 'count') this._countOnly = false;\n m.push(createMeasure(op, outname));\n }\n this._measures = this._measures.map(m => compileMeasures(m, m.field));\n return Object.create(null); // aggregation cells (this.value)\n },\n\n // -- Cell Management -----\n\n cellkey: groupkey(),\n cell(key, t) {\n let cell = this.value[key];\n if (!cell) {\n cell = this.value[key] = this.newcell(key, t);\n this._adds[this._alen++] = cell;\n } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._adds[this._alen++] = cell;\n } else if (cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._mods[this._mlen++] = cell;\n }\n return cell;\n },\n newcell(key, t) {\n const cell = {\n key: key,\n num: 0,\n agg: null,\n tuple: this.newtuple(t, this._prev && this._prev[key]),\n stamp: this.stamp,\n store: false\n };\n if (!this._countOnly) {\n const measures = this._measures,\n n = measures.length;\n cell.agg = Array(n);\n for (let i = 0; i < n; ++i) {\n cell.agg[i] = new measures[i](cell);\n }\n }\n if (cell.store) {\n cell.data = new TupleStore();\n }\n return cell;\n },\n newtuple(t, p) {\n const names = this._dnames,\n dims = this._dims,\n n = dims.length,\n x = {};\n for (let i = 0; i < n; ++i) {\n x[names[i]] = dims[i](t);\n }\n return p ? replace$1(p.tuple, x) : ingest$1(x);\n },\n clean() {\n const cells = this.value;\n for (const key in cells) {\n if (cells[key].num === 0) {\n delete cells[key];\n }\n }\n },\n // -- Process Tuples -----\n\n add(t) {\n const key = this.cellkey(t),\n cell = this.cell(key, t);\n cell.num += 1;\n if (this._countOnly) return;\n if (cell.store) cell.data.add(t);\n const agg = cell.agg;\n for (let i = 0, n = agg.length; i < n; ++i) {\n agg[i].add(agg[i].get(t), t);\n }\n },\n rem(t) {\n const key = this.cellkey(t),\n cell = this.cell(key, t);\n cell.num -= 1;\n if (this._countOnly) return;\n if (cell.store) cell.data.rem(t);\n const agg = cell.agg;\n for (let i = 0, n = agg.length; i < n; ++i) {\n agg[i].rem(agg[i].get(t), t);\n }\n },\n celltuple(cell) {\n const tuple = cell.tuple,\n counts = this._counts;\n\n // consolidate stored values\n if (cell.store) {\n cell.data.values();\n }\n\n // update tuple properties\n for (let i = 0, n = counts.length; i < n; ++i) {\n tuple[counts[i]] = cell.num;\n }\n if (!this._countOnly) {\n const agg = cell.agg;\n for (let i = 0, n = agg.length; i < n; ++i) {\n agg[i].set(tuple);\n }\n }\n return tuple;\n },\n changes(out) {\n const adds = this._adds,\n mods = this._mods,\n prev = this._prev,\n drop = this._drop,\n add = out.add,\n rem = out.rem,\n mod = out.mod;\n let cell, key, i, n;\n if (prev) for (key in prev) {\n cell = prev[key];\n if (!drop || cell.num) rem.push(cell.tuple);\n }\n for (i = 0, n = this._alen; i < n; ++i) {\n add.push(this.celltuple(adds[i]));\n adds[i] = null; // for garbage collection\n }\n\n for (i = 0, n = this._mlen; i < n; ++i) {\n cell = mods[i];\n (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n this._prev = null;\n return out;\n }\n});\n\n// epsilon bias to offset floating point error (#1737)\nconst EPSILON$1 = 1e-14;\n\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n * provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\nfunction Bin(params) {\n Transform.call(this, null, params);\n}\nBin.Definition = {\n 'type': 'Bin',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'interval',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'anchor',\n 'type': 'number'\n }, {\n 'name': 'maxbins',\n 'type': 'number',\n 'default': 20\n }, {\n 'name': 'base',\n 'type': 'number',\n 'default': 10\n }, {\n 'name': 'divide',\n 'type': 'number',\n 'array': true,\n 'default': [5, 2]\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'span',\n 'type': 'number'\n }, {\n 'name': 'step',\n 'type': 'number'\n }, {\n 'name': 'steps',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'minstep',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'name',\n 'type': 'string'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['bin0', 'bin1']\n }]\n};\ninherits(Bin, Transform, {\n transform(_, pulse) {\n const band = _.interval !== false,\n bins = this._bins(_),\n start = bins.start,\n step = bins.step,\n as = _.as || ['bin0', 'bin1'],\n b0 = as[0],\n b1 = as[1];\n let flag;\n if (_.modified()) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n } else {\n flag = pulse.modified(accessorFields(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n }\n pulse.visit(flag, band ? t => {\n const v = bins(t);\n // minimum bin value (inclusive)\n t[b0] = v;\n // maximum bin value (exclusive)\n // use convoluted math for better floating point agreement\n // see https://github.com/vega/vega/issues/830\n // infinite values propagate through this formula! #2227\n t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n } : t => t[b0] = bins(t));\n return pulse.modifies(band ? as : b0);\n },\n _bins(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n const field = _.field,\n bins = bin$1(_),\n step = bins.step;\n let start = bins.start,\n stop = start + Math.ceil((bins.stop - start) / step) * step,\n a,\n d;\n if ((a = _.anchor) != null) {\n d = a - (start + step * Math.floor((a - start) / step));\n start += d;\n stop += d;\n }\n const f = function (t) {\n let v = toNumber(field(t));\n return v == null ? null : v < start ? -Infinity : v > stop ? +Infinity : (v = Math.max(start, Math.min(v, stop - step)), start + step * Math.floor(EPSILON$1 + (v - start) / step));\n };\n f.start = start;\n f.stop = bins.stop;\n f.step = step;\n return this.value = accessor(f, accessorFields(field), _.name || 'bin_' + accessorName(field));\n }\n});\nfunction SortedList(idFunc, source, input) {\n const $ = idFunc;\n let data = source || [],\n add = input || [],\n rem = {},\n cnt = 0;\n return {\n add: t => add.push(t),\n remove: t => rem[$(t)] = ++cnt,\n size: () => data.length,\n data: (compare, resort) => {\n if (cnt) {\n data = data.filter(t => !rem[$(t)]);\n rem = {};\n cnt = 0;\n }\n if (resort && compare) {\n data.sort(compare);\n }\n if (add.length) {\n data = compare ? merge$3(compare, data, add.sort(compare)) : data.concat(add);\n add = [];\n }\n return data;\n }\n };\n}\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for additionally sorting the collected tuples.\n */\nfunction Collect$1(params) {\n Transform.call(this, [], params);\n}\nCollect$1.Definition = {\n 'type': 'Collect',\n 'metadata': {\n 'source': true\n },\n 'params': [{\n 'name': 'sort',\n 'type': 'compare'\n }]\n};\ninherits(Collect$1, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.ALL),\n list = SortedList(tupleid, this.value, out.materialize(out.ADD).add),\n sort = _.sort,\n mod = pulse.changed() || sort && (_.modified('sort') || pulse.modified(sort.fields));\n out.visit(out.REM, list.remove);\n this.modified(mod);\n this.value = out.source = list.data(stableCompare(sort), mod);\n\n // propagate tree root if defined\n if (pulse.source && pulse.source.root) {\n this.value.root = pulse.source.root;\n }\n return out;\n }\n});\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - The fields to compare.\n * @param {Array} [params.orders] - The sort orders.\n * Each entry should be one of \"ascending\" (default) or \"descending\".\n */\nfunction Compare$1(params) {\n Operator.call(this, null, update$5, params);\n}\ninherits(Compare$1, Operator);\nfunction update$5(_) {\n return this.value && !_.modified() ? this.value : compare$8(_.fields, _.orders);\n}\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\nfunction CountPattern(params) {\n Transform.call(this, null, params);\n}\nCountPattern.Definition = {\n 'type': 'CountPattern',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'case',\n 'type': 'enum',\n 'values': ['upper', 'lower', 'mixed'],\n 'default': 'mixed'\n }, {\n 'name': 'pattern',\n 'type': 'string',\n 'default': '[\\\\w\"]+'\n }, {\n 'name': 'stopwords',\n 'type': 'string',\n 'default': ''\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['text', 'count']\n }]\n};\nfunction tokenize(text, tcase, match) {\n switch (tcase) {\n case 'upper':\n text = text.toUpperCase();\n break;\n case 'lower':\n text = text.toLowerCase();\n break;\n }\n return text.match(match);\n}\ninherits(CountPattern, Transform, {\n transform(_, pulse) {\n const process = update => tuple => {\n var tokens = tokenize(get(tuple), _.case, match) || [],\n t;\n for (var i = 0, n = tokens.length; i < n; ++i) {\n if (!stop.test(t = tokens[i])) update(t);\n }\n };\n const init = this._parameterCheck(_, pulse),\n counts = this._counts,\n match = this._match,\n stop = this._stop,\n get = _.field,\n as = _.as || ['text', 'count'],\n add = process(t => counts[t] = 1 + (counts[t] || 0)),\n rem = process(t => counts[t] -= 1);\n if (init) {\n pulse.visit(pulse.SOURCE, add);\n } else {\n pulse.visit(pulse.ADD, add);\n pulse.visit(pulse.REM, rem);\n }\n return this._finish(pulse, as); // generate output tuples\n },\n\n _parameterCheck(_, pulse) {\n let init = false;\n if (_.modified('stopwords') || !this._stop) {\n this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n init = true;\n }\n if (_.modified('pattern') || !this._match) {\n this._match = new RegExp(_.pattern || '[\\\\w\\']+', 'g');\n init = true;\n }\n if (_.modified('field') || pulse.modified(_.field.fields)) {\n init = true;\n }\n if (init) this._counts = {};\n return init;\n },\n _finish(pulse, as) {\n const counts = this._counts,\n tuples = this._tuples || (this._tuples = {}),\n text = as[0],\n count = as[1],\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n let w, t, c;\n for (w in counts) {\n t = tuples[w];\n c = counts[w] || 0;\n if (!t && c) {\n tuples[w] = t = ingest$1({});\n t[text] = w;\n t[count] = c;\n out.add.push(t);\n } else if (c === 0) {\n if (t) out.rem.push(t);\n counts[w] = null;\n tuples[w] = null;\n } else if (t[count] !== c) {\n t[count] = c;\n out.mod.push(t);\n }\n }\n return out.modifies(as);\n }\n});\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n * function for selectively including tuples in the cross product.\n * @param {Array} [params.as] - The names of the output fields.\n */\nfunction Cross(params) {\n Transform.call(this, null, params);\n}\nCross.Definition = {\n 'type': 'Cross',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'filter',\n 'type': 'expr'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['a', 'b']\n }]\n};\ninherits(Cross, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n as = _.as || ['a', 'b'],\n a = as[0],\n b = as[1],\n reset = !this.value || pulse.changed(pulse.ADD_REM) || _.modified('as') || _.modified('filter');\n let data = this.value;\n if (reset) {\n if (data) out.rem = data;\n data = pulse.materialize(pulse.SOURCE).source;\n out.add = this.value = cross(data, a, b, _.filter || truthy);\n } else {\n out.mod = data;\n }\n out.source = this.value;\n return out.modifies(as);\n }\n});\nfunction cross(input, a, b, filter) {\n var data = [],\n t = {},\n n = input.length,\n i = 0,\n j,\n left;\n for (; i < n; ++i) {\n t[a] = left = input[i];\n for (j = 0; j < n; ++j) {\n t[b] = input[j];\n if (filter(t)) {\n data.push(ingest$1(t));\n t = {};\n t[a] = left;\n }\n }\n }\n return data;\n}\nconst Distributions = {\n kde: kde,\n mixture: mixture$1,\n normal: gaussian,\n lognormal: lognormal,\n uniform: uniform\n};\nconst DISTRIBUTIONS = 'distributions',\n FUNCTION = 'function',\n FIELD = 'field';\n\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array} - A method for requesting\n * source data. Used for distributions (such as KDE) that\n * require sample data points. This method will only be\n * invoked if the 'from' parameter for a target data source\n * is not provided. Typically this method returns backing\n * source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\nfunction parse$4(def, data) {\n const func = def[FUNCTION];\n if (!has$1(Distributions, func)) {\n error('Unknown distribution function: ' + func);\n }\n const d = Distributions[func]();\n for (const name in def) {\n // if data field, extract values\n if (name === FIELD) {\n d.data((def.from || data()).map(def[name]));\n }\n\n // if distribution mixture, recurse to parse each definition\n else if (name === DISTRIBUTIONS) {\n d[name](def[name].map(_ => parse$4(_, data)));\n }\n\n // otherwise, simply set the parameter\n else if (typeof d[name] === FUNCTION) {\n d[name](def[name]);\n }\n }\n return d;\n}\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n * is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n * One of 'pdf' or 'cdf'.\n * @param {Array} [params.extent] - The [min, max] extent over which\n * to sample the distribution. This argument is required in most cases, but\n * can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n * that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction Density(params) {\n Transform.call(this, null, params);\n}\nconst distributions = [{\n 'key': {\n 'function': 'normal'\n },\n 'params': [{\n 'name': 'mean',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'stdev',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'lognormal'\n },\n 'params': [{\n 'name': 'mean',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'stdev',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'uniform'\n },\n 'params': [{\n 'name': 'min',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'max',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'kde'\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'from',\n 'type': 'data'\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0\n }]\n}];\nconst mixture = {\n 'key': {\n 'function': 'mixture'\n },\n 'params': [{\n 'name': 'distributions',\n 'type': 'param',\n 'array': true,\n 'params': distributions\n }, {\n 'name': 'weights',\n 'type': 'number',\n 'array': true\n }]\n};\nDensity.Definition = {\n 'type': 'Density',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'steps',\n 'type': 'number'\n }, {\n 'name': 'minsteps',\n 'type': 'number',\n 'default': 25\n }, {\n 'name': 'maxsteps',\n 'type': 'number',\n 'default': 200\n }, {\n 'name': 'method',\n 'type': 'string',\n 'default': 'pdf',\n 'values': ['pdf', 'cdf']\n }, {\n 'name': 'distribution',\n 'type': 'param',\n 'params': distributions.concat(mixture)\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['value', 'density']\n }]\n};\ninherits(Density, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n const dist = parse$4(_.distribution, source$1(pulse)),\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200;\n let method = _.method || 'pdf';\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (!_.extent && !dist.data) {\n error('Missing density extent parameter.');\n }\n method = dist[method];\n const as = _.as || ['value', 'density'],\n domain = _.extent || extent(dist.data()),\n values = sampleCurve(method, domain, minsteps, maxsteps).map(v => {\n const tuple = {};\n tuple[as[0]] = v[0];\n tuple[as[1]] = v[1];\n return ingest$1(tuple);\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nfunction source$1(pulse) {\n return () => pulse.materialize(pulse.SOURCE).source;\n}\n\n// use either provided alias or accessor field name\nfunction fieldNames(fields, as) {\n if (!fields) return null;\n return fields.map((f, i) => as[i] || accessorName(f));\n}\nfunction partition$1$1(data, groupby, field) {\n const groups = [],\n get = f => f(t);\n let map, i, n, t, k, g;\n\n // partition data points into groups\n if (groupby == null) {\n groups.push(data.map(field));\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(field(t));\n }\n }\n return groups;\n}\nconst Output$5 = 'bin';\n\n/**\n * Dot density binning for dot plot construction.\n * Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n * https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to bin.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.step] - The step size (bin width) within which dots should be\n * stacked. Defaults to 1/30 of the extent of the data *field*.\n * @param {boolean} [params.smooth=false] - A boolean flag indicating if dot density\n * stacks should be smoothed to reduce variance.\n */\nfunction DotBin(params) {\n Transform.call(this, null, params);\n}\nDotBin.Definition = {\n 'type': 'DotBin',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number'\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': Output$5\n }]\n};\nconst autostep = (data, field) => span(extent(data, field)) / 30;\ninherits(DotBin, Transform, {\n transform(_, pulse) {\n if (this.value && !(_.modified() || pulse.changed())) {\n return pulse; // early exit\n }\n\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1$1(pulse.source, _.groupby, identity$6),\n smooth = _.smooth || false,\n field = _.field,\n step = _.step || autostep(source, field),\n sort = stableCompare((a, b) => field(a) - field(b)),\n as = _.as || Output$5,\n n = groups.length;\n\n // compute dotplot bins per group\n let min = Infinity,\n max = -Infinity,\n i = 0,\n j;\n for (; i < n; ++i) {\n const g = groups[i].sort(sort);\n j = -1;\n for (const v of dotbin(g, step, smooth, field)) {\n if (v < min) min = v;\n if (v > max) max = v;\n g[++j][as] = v;\n }\n }\n this.value = {\n start: min,\n stop: max,\n step: step\n };\n return pulse.reflow(true).modifies(as);\n }\n});\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n * function should accept both a datum and a parameter object.\n * This operator's value will be a new function that wraps the\n * expression function with access to this operator's parameters.\n */\nfunction Expression$1(params) {\n Operator.call(this, null, update$4, params);\n this.modified(true);\n}\ninherits(Expression$1, Operator);\nfunction update$4(_) {\n const expr = _.expr;\n return this.value && !_.modified('expr') ? this.value : accessor(datum => expr(datum, _), accessorFields(expr), accessorName(expr));\n}\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\nfunction Extent(params) {\n Transform.call(this, [undefined, undefined], params);\n}\nExtent.Definition = {\n 'type': 'Extent',\n 'metadata': {},\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }]\n};\ninherits(Extent, Transform, {\n transform(_, pulse) {\n const extent = this.value,\n field = _.field,\n mod = pulse.changed() || pulse.modified(field.fields) || _.modified('field');\n let min = extent[0],\n max = extent[1];\n if (mod || min == null) {\n min = +Infinity;\n max = -Infinity;\n }\n pulse.visit(mod ? pulse.SOURCE : pulse.ADD, t => {\n const v = toNumber(field(t));\n if (v != null) {\n // NaNs will fail all comparisons!\n if (v < min) min = v;\n if (v > max) max = v;\n }\n });\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n let name = accessorName(field);\n if (name) name = \" for field \\\"\".concat(name, \"\\\"\");\n pulse.dataflow.warn(\"Infinite extent\".concat(name, \": [\").concat(min, \", \").concat(max, \"]\"));\n min = max = undefined;\n }\n this.value = [min, max];\n }\n});\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n */\nfunction Subflow(pulse, parent) {\n Operator.call(this, pulse);\n this.parent = parent;\n this.count = 0;\n}\ninherits(Subflow, Operator, {\n /**\n * Routes pulses from this subflow to a target transform.\n * @param {Transform} target - A transform that receives the subflow of tuples.\n */\n connect(target) {\n this.detachSubflow = target.detachSubflow;\n this.targets().add(target);\n return target.source = this;\n },\n /**\n * Add an 'add' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being added.\n */\n add(t) {\n this.count += 1;\n this.value.add.push(t);\n },\n /**\n * Add a 'rem' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being removed.\n */\n rem(t) {\n this.count -= 1;\n this.value.rem.push(t);\n },\n /**\n * Add a 'mod' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being modified.\n */\n mod(t) {\n this.value.mod.push(t);\n },\n /**\n * Re-initialize this operator's pulse value.\n * @param {Pulse} pulse - The pulse to copy from.\n * @see Pulse.init\n */\n init(pulse) {\n this.value.init(pulse, pulse.NO_SOURCE);\n },\n /**\n * Evaluate this operator. This method overrides the\n * default behavior to simply return the contained pulse value.\n * @return {Pulse}\n */\n evaluate() {\n // assert: this.value.stamp === pulse.stamp\n return this.value;\n }\n});\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\nfunction Facet$1(params) {\n Transform.call(this, {}, params);\n this._keys = fastmap(); // cache previously calculated key values\n\n // keep track of active subflows, use as targets array for listeners\n // this allows us to limit propagation to only updated subflows\n const a = this._targets = [];\n a.active = 0;\n a.forEach = f => {\n for (let i = 0, n = a.active; i < n; ++i) {\n f(a[i], i, a);\n }\n };\n}\ninherits(Facet$1, Transform, {\n activate(flow) {\n this._targets[this._targets.active++] = flow;\n },\n // parent argument provided by PreFacet subclass\n subflow(key, flow, pulse, parent) {\n const flows = this.value;\n let sf = has$1(flows, key) && flows[key],\n df,\n p;\n if (!sf) {\n p = parent || (p = this._group[key]) && p.tuple;\n df = pulse.dataflow;\n sf = new Subflow(pulse.fork(pulse.NO_SOURCE), this);\n df.add(sf).connect(flow(df, key, p));\n flows[key] = sf;\n this.activate(sf);\n } else if (sf.value.stamp < pulse.stamp) {\n sf.init(pulse);\n this.activate(sf);\n }\n return sf;\n },\n clean() {\n const flows = this.value;\n let detached = 0;\n for (const key in flows) {\n if (flows[key].count === 0) {\n const detach = flows[key].detachSubflow;\n if (detach) detach();\n delete flows[key];\n ++detached;\n }\n }\n\n // remove inactive targets from the active targets array\n if (detached) {\n const active = this._targets.filter(sf => sf && sf.count > 0);\n this.initTargets(active);\n }\n },\n initTargets(act) {\n const a = this._targets,\n n = a.length,\n m = act ? act.length : 0;\n let i = 0;\n for (; i < m; ++i) {\n a[i] = act[i];\n }\n for (; i < n && a[i] != null; ++i) {\n a[i] = null; // ensure old flows can be garbage collected\n }\n\n a.active = m;\n },\n transform(_, pulse) {\n const df = pulse.dataflow,\n key = _.key,\n flow = _.subflow,\n cache = this._keys,\n rekey = _.modified('key'),\n subflow = key => this.subflow(key, flow, pulse);\n this._group = _.group || {};\n this.initTargets(); // reset list of active subflows\n\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t),\n k = cache.get(id);\n if (k !== undefined) {\n cache.delete(id);\n subflow(k).rem(t);\n }\n });\n pulse.visit(pulse.ADD, t => {\n const k = key(t);\n cache.set(tupleid(t), k);\n subflow(k).add(t);\n });\n if (rekey || pulse.modified(key.fields)) {\n pulse.visit(pulse.MOD, t => {\n const id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 === k1) {\n subflow(k1).mod(t);\n } else {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n } else if (pulse.changed(pulse.MOD)) {\n pulse.visit(pulse.MOD, t => {\n subflow(cache.get(tupleid(t))).mod(t);\n });\n }\n if (rekey) {\n pulse.visit(pulse.REFLOW, t => {\n const id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 !== k1) {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n }\n if (pulse.clean()) {\n df.runAfter(() => {\n this.clean();\n cache.clean();\n });\n } else if (cache.empty > df.cleanThreshold) {\n df.runAfter(cache.clean);\n }\n return pulse;\n }\n});\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\nfunction Field$1(params) {\n Operator.call(this, null, update$3, params);\n}\ninherits(Field$1, Operator);\nfunction update$3(_) {\n return this.value && !_.modified() ? this.value : isArray(_.name) ? array$5(_.name).map(f => field$1(f)) : field$1(_.name, _.as);\n}\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n * that determines a tuple's filter status. Truthy values pass the filter.\n */\nfunction Filter(params) {\n Transform.call(this, fastmap(), params);\n}\nFilter.Definition = {\n 'type': 'Filter',\n 'metadata': {\n 'changes': true\n },\n 'params': [{\n 'name': 'expr',\n 'type': 'expr',\n 'required': true\n }]\n};\ninherits(Filter, Transform, {\n transform(_, pulse) {\n const df = pulse.dataflow,\n cache = this.value,\n // cache ids of filtered tuples\n output = pulse.fork(),\n add = output.add,\n rem = output.rem,\n mod = output.mod,\n test = _.expr;\n let isMod = true;\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t);\n if (!cache.has(id)) rem.push(t);else cache.delete(id);\n });\n pulse.visit(pulse.ADD, t => {\n if (test(t, _)) add.push(t);else cache.set(tupleid(t), 1);\n });\n function revisit(t) {\n const id = tupleid(t),\n b = test(t, _),\n s = cache.get(id);\n if (b && s) {\n cache.delete(id);\n add.push(t);\n } else if (!b && !s) {\n cache.set(id, 1);\n rem.push(t);\n } else if (isMod && b && !s) {\n mod.push(t);\n }\n }\n pulse.visit(pulse.MOD, revisit);\n if (_.modified()) {\n isMod = false;\n pulse.visit(pulse.REFLOW, revisit);\n }\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return output;\n }\n});\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - An array of field\n * accessors for the tuple fields that should be flattened.\n * @param {string} [params.index] - Optional output field name for index\n * value. If unspecified, no index field is included in the output.\n * @param {Array} [params.as] - Output field names for flattened\n * array fields. Any unspecified fields will use the field name provided\n * by the fields accessors.\n */\nfunction Flatten(params) {\n Transform.call(this, [], params);\n}\nFlatten.Definition = {\n 'type': 'Flatten',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'index',\n 'type': 'string'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Flatten, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(fields, _.as || []),\n index = _.index || null,\n m = as.length;\n\n // remove any previous results\n out.rem = this.value;\n\n // generate flattened tuples\n pulse.visit(pulse.SOURCE, t => {\n const arrays = fields.map(f => f(t)),\n maxlen = arrays.reduce((l, a) => Math.max(l, a.length), 0);\n let i = 0,\n j,\n d,\n v;\n for (; i < maxlen; ++i) {\n d = derive(t);\n for (j = 0; j < m; ++j) {\n d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n }\n if (index) {\n d[index] = i;\n }\n out.add.push(d);\n }\n });\n this.value = out.source = out.add;\n if (index) out.modifies(index);\n return out.modifies(as);\n }\n});\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n * for the tuple fields that should be folded.\n * @param {Array} [params.as] - Output field names for folded key\n * and value fields, defaults to ['key', 'value'].\n */\nfunction Fold(params) {\n Transform.call(this, [], params);\n}\nFold.Definition = {\n 'type': 'Fold',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['key', 'value']\n }]\n};\ninherits(Fold, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n fnames = fields.map(accessorName),\n as = _.as || ['key', 'value'],\n k = as[0],\n v = as[1],\n n = fields.length;\n out.rem = this.value;\n pulse.visit(pulse.SOURCE, t => {\n for (let i = 0, d; i < n; ++i) {\n d = derive(t);\n d[k] = fnames[i];\n d[v] = fields[i](t);\n out.add.push(d);\n }\n });\n this.value = out.source = out.add;\n return out.modifies(as);\n }\n});\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n * added tuples only, and does not update in response to modifications.\n */\nfunction Formula(params) {\n Transform.call(this, null, params);\n}\nFormula.Definition = {\n 'type': 'Formula',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'expr',\n 'type': 'expr',\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'required': true\n }, {\n 'name': 'initonly',\n 'type': 'boolean'\n }]\n};\ninherits(Formula, Transform, {\n transform(_, pulse) {\n const func = _.expr,\n as = _.as,\n mod = _.modified(),\n flag = _.initonly ? pulse.ADD : mod ? pulse.SOURCE : pulse.modified(func.fields) || pulse.modified(as) ? pulse.ADD_MOD : pulse.ADD;\n if (mod) {\n // parameters updated, need to reflow\n pulse = pulse.materialize().reflow(true);\n }\n if (!_.initonly) {\n pulse.modifies(as);\n }\n return pulse.visit(flag, t => t[as] = func(t, _));\n }\n});\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n * function. This function is given the operator parameters as input.\n * Changes to any additional parameters will not trigger re-calculation\n * of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\nfunction Generate(params) {\n Transform.call(this, [], params);\n}\ninherits(Generate, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.ALL),\n gen = _.generator;\n let data = this.value,\n num = _.size - data.length,\n add,\n rem,\n t;\n if (num > 0) {\n // need more tuples, generate and add\n for (add = []; --num >= 0;) {\n add.push(t = ingest$1(gen(_)));\n data.push(t);\n }\n out.add = out.add.length ? out.materialize(out.ADD).add.concat(add) : add;\n } else {\n // need fewer tuples, remove\n rem = data.slice(0, -num);\n out.rem = out.rem.length ? out.materialize(out.REM).rem.concat(rem) : rem;\n data = data.slice(-num);\n }\n out.source = this.value = data;\n return out;\n }\n});\nconst Methods$1 = {\n value: 'value',\n median: median,\n mean: mean,\n min: min$2,\n max: max$2\n};\nconst Empty$1 = [];\n\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array} [params.groupby] - An array of\n * accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n * Each key value should be unique within a group. New tuples will be\n * imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n * values. New tuples will be imputed for any key values that are not\n * found within a group. In addition, these values will be automatically\n * augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n * 'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n * when using method 'value'.\n */\nfunction Impute(params) {\n Transform.call(this, [], params);\n}\nImpute.Definition = {\n 'type': 'Impute',\n 'metadata': {\n 'changes': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'keyvals',\n 'array': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'value',\n 'values': ['value', 'mean', 'median', 'max', 'min']\n }, {\n 'name': 'value',\n 'default': 0\n }]\n};\nfunction getValue(_) {\n var m = _.method || Methods$1.value,\n v;\n if (Methods$1[m] == null) {\n error('Unrecognized imputation method: ' + m);\n } else if (m === Methods$1.value) {\n v = _.value !== undefined ? _.value : 0;\n return () => v;\n } else {\n return Methods$1[m];\n }\n}\nfunction getField$1(_) {\n const f = _.field;\n return t => t ? f(t) : NaN;\n}\ninherits(Impute, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n impute = getValue(_),\n field = getField$1(_),\n fName = accessorName(_.field),\n kName = accessorName(_.key),\n gNames = (_.groupby || []).map(accessorName),\n groups = partition$4(pulse.source, _.groupby, _.key, _.keyvals),\n curr = [],\n prev = this.value,\n m = groups.domain.length,\n group,\n value,\n gVals,\n kVal,\n g,\n i,\n j,\n l,\n n,\n t;\n for (g = 0, l = groups.length; g < l; ++g) {\n group = groups[g];\n gVals = group.values;\n value = NaN;\n\n // add tuples for missing values\n for (j = 0; j < m; ++j) {\n if (group[j] != null) continue;\n kVal = groups.domain[j];\n t = {\n _impute: true\n };\n for (i = 0, n = gVals.length; i < n; ++i) t[gNames[i]] = gVals[i];\n t[kName] = kVal;\n t[fName] = Number.isNaN(value) ? value = impute(group, field) : value;\n curr.push(ingest$1(t));\n }\n }\n\n // update pulse with imputed tuples\n if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n this.value = curr;\n return out;\n }\n});\nfunction partition$4(data, groupby, key, keyvals) {\n var get = f => f(t),\n groups = [],\n domain = keyvals ? keyvals.slice() : [],\n kMap = {},\n gMap = {},\n gVals,\n gKey,\n group,\n i,\n j,\n k,\n n,\n t;\n domain.forEach((k, i) => kMap[k] = i + 1);\n for (i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = key(t);\n j = kMap[k] || (kMap[k] = domain.push(k));\n gKey = (gVals = groupby ? groupby.map(get) : Empty$1) + '';\n if (!(group = gMap[gKey])) {\n group = gMap[gKey] = [];\n groups.push(group);\n group.values = gVals;\n }\n group[j - 1] = t;\n }\n groups.domain = domain;\n return groups;\n}\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\nfunction JoinAggregate(params) {\n Aggregate$1.call(this, params);\n}\nJoinAggregate.Definition = {\n 'type': 'JoinAggregate',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidAggregateOps\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(JoinAggregate, Aggregate$1, {\n transform(_, pulse) {\n const aggr = this,\n mod = _.modified();\n let cells;\n\n // process all input tuples to calculate aggregates\n if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n cells = aggr.value = mod ? aggr.init(_) : {};\n pulse.visit(pulse.SOURCE, t => aggr.add(t));\n } else {\n cells = aggr.value = aggr.value || this.init(_);\n pulse.visit(pulse.REM, t => aggr.rem(t));\n pulse.visit(pulse.ADD, t => aggr.add(t));\n }\n\n // update aggregation cells\n aggr.changes();\n\n // write aggregate values to input tuples\n pulse.visit(pulse.SOURCE, t => {\n extend$1(t, cells[aggr.cellkey(t)].tuple);\n });\n return pulse.reflow(mod).modifies(this._outputs);\n },\n changes() {\n const adds = this._adds,\n mods = this._mods;\n let i, n;\n for (i = 0, n = this._alen; i < n; ++i) {\n this.celltuple(adds[i]);\n adds[i] = null; // for garbage collection\n }\n\n for (i = 0, n = this._mlen; i < n; ++i) {\n this.celltuple(mods[i]);\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n }\n});\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n * to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernel bandwidth.\n * If zero or unspecified, the bandwidth is automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n * output values should be probability estimates (false, default) or\n * smoothed counts (true).\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n * density (false) or cumulative distribution (true) should be generated.\n * @param {Array} [params.extent] - The domain extent over which to\n * plot the density. If unspecified, the [min, max] data extent is used.\n * @param {string} [params.resolve='independent'] - Indicates how parameters for\n * multiple densities should be resolved. If \"independent\" (the default), each\n * density may have its own domain extent and dynamic number of curve sample\n * steps. If \"shared\", the KDE transform will ensure that all densities are\n * defined over a shared domain and curve steps, enabling stacking.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction KDE(params) {\n Transform.call(this, null, params);\n}\nKDE.Definition = {\n 'type': 'KDE',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'cumulative',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'counts',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'steps',\n 'type': 'number'\n }, {\n 'name': 'minsteps',\n 'type': 'number',\n 'default': 25\n }, {\n 'name': 'maxsteps',\n 'type': 'number',\n 'default': 200\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['value', 'density']\n }]\n};\ninherits(KDE, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1$1(source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n bandwidth = _.bandwidth,\n method = _.cumulative ? 'cdf' : 'pdf',\n as = _.as || ['value', 'density'],\n values = [];\n let domain = _.extent,\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200;\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (_.resolve === 'shared') {\n if (!domain) domain = extent(source, _.field);\n minsteps = maxsteps = _.steps || maxsteps;\n }\n groups.forEach(g => {\n const density = kde(g, bandwidth)[method],\n scale = _.counts ? g.length : 1,\n local = domain || extent(g);\n sampleCurve(density, local, minsteps, maxsteps).forEach(v => {\n const t = {};\n for (let i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = v[0];\n t[as[1]] = v[1] * scale;\n values.push(ingest$1(t));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n * should be treated as flat property names, side-stepping nested field\n * lookups normally indicated by dot or bracket notation.\n */\nfunction Key$1(params) {\n Operator.call(this, null, update$2, params);\n}\ninherits(Key$1, Operator);\nfunction update$2(_) {\n return this.value && !_.modified() ? this.value : key(_.fields, _.flat);\n}\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\nfunction Load$1(params) {\n Transform.call(this, [], params);\n this._pending = null;\n}\ninherits(Load$1, Transform, {\n transform(_, pulse) {\n const df = pulse.dataflow;\n if (this._pending) {\n // update state and return pulse\n return output(this, pulse, this._pending);\n }\n if (stop(_)) return pulse.StopPropagation;\n if (_.values) {\n // parse and ingest values, return output pulse\n return output(this, pulse, df.parse(_.values, _.format));\n } else if (_.async) {\n // return promise for non-blocking async loading\n const p = df.request(_.url, _.format).then(res => {\n this._pending = array$5(res.data);\n return df => df.touch(this);\n });\n return {\n async: p\n };\n } else {\n // return promise for synchronous loading\n return df.request(_.url, _.format).then(res => output(this, pulse, array$5(res.data)));\n }\n }\n});\nfunction stop(_) {\n return _.modified('async') && !(_.modified('values') || _.modified('url') || _.modified('format'));\n}\nfunction output(op, pulse, data) {\n data.forEach(ingest$1);\n const out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n out.rem = op.value;\n op.value = out.source = out.add = data;\n op._pending = null;\n if (out.rem.length) out.clean(true);\n return out;\n}\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\nfunction Lookup(params) {\n Transform.call(this, {}, params);\n}\nLookup.Definition = {\n 'type': 'Lookup',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'index',\n 'type': 'index',\n 'params': [{\n 'name': 'from',\n 'type': 'data',\n 'required': true\n }, {\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }]\n }, {\n 'name': 'values',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }, {\n 'name': 'default',\n 'default': null\n }]\n};\ninherits(Lookup, Transform, {\n transform(_, pulse) {\n const keys = _.fields,\n index = _.index,\n values = _.values,\n defaultValue = _.default == null ? null : _.default,\n reset = _.modified(),\n n = keys.length;\n let flag = reset ? pulse.SOURCE : pulse.ADD,\n out = pulse,\n as = _.as,\n set,\n m,\n mods;\n if (values) {\n m = values.length;\n if (n > 1 && !as) {\n error('Multi-field lookup requires explicit \"as\" parameter.');\n }\n if (as && as.length !== n * m) {\n error('The \"as\" parameter has too few output field names.');\n }\n as = as || values.map(accessorName);\n set = function (t) {\n for (var i = 0, k = 0, j, v; i < n; ++i) {\n v = index.get(keys[i](t));\n if (v == null) for (j = 0; j < m; ++j, ++k) t[as[k]] = defaultValue;else for (j = 0; j < m; ++j, ++k) t[as[k]] = values[j](v);\n }\n };\n } else {\n if (!as) {\n error('Missing output field names.');\n }\n set = function (t) {\n for (var i = 0, v; i < n; ++i) {\n v = index.get(keys[i](t));\n t[as[i]] = v == null ? defaultValue : v;\n }\n };\n }\n if (reset) {\n out = pulse.reflow(true);\n } else {\n mods = keys.some(k => pulse.modified(k.fields));\n flag |= mods ? pulse.MOD : 0;\n }\n pulse.visit(flag, set);\n return out.modifies(as);\n }\n});\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array>} params.extents - The input extents.\n */\nfunction MultiExtent$1(params) {\n Operator.call(this, null, update$1, params);\n}\ninherits(MultiExtent$1, Operator);\nfunction update$1(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n const ext = _.extents,\n n = ext.length;\n let min = +Infinity,\n max = -Infinity,\n i,\n e;\n for (i = 0; i < n; ++i) {\n e = ext[i];\n if (e[0] < min) min = e[0];\n if (e[1] > max) max = e[1];\n }\n return [min, max];\n}\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array>} params.values - The input value arrrays.\n */\nfunction MultiValues$1(params) {\n Operator.call(this, null, update, params);\n}\ninherits(MultiValues$1, Operator);\nfunction update(_) {\n return this.value && !_.modified() ? this.value : _.values.reduce((data, _) => data.concat(_), []);\n}\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Params$2(params) {\n Transform.call(this, null, params);\n}\ninherits(Params$2, Transform, {\n transform(_, pulse) {\n this.modified(_.modified());\n this.value = _;\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n }\n});\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n * values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n * The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n * applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n * number of pivoted fields to generate. The pivoted field names are sorted in\n * ascending order prior to enforcing the limit.\n */\nfunction Pivot(params) {\n Aggregate$1.call(this, params);\n}\nPivot.Definition = {\n 'type': 'Pivot',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'value',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'op',\n 'type': 'enum',\n 'values': ValidAggregateOps,\n 'default': 'sum'\n }, {\n 'name': 'limit',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(Pivot, Aggregate$1, {\n _transform: Aggregate$1.prototype.transform,\n transform(_, pulse) {\n return this._transform(aggregateParams(_, pulse), pulse);\n }\n});\n\n// Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\nfunction aggregateParams(_, pulse) {\n const key = _.field,\n value = _.value,\n op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n fields = accessorFields(key).concat(accessorFields(value)),\n keys = pivotKeys(key, _.limit || 0, pulse);\n\n // if data stream content changes, pivot fields may change\n // flag parameter modification to ensure re-initialization\n if (pulse.changed()) _.set('__pivot__', null, null, true);\n return {\n key: _.key,\n groupby: _.groupby,\n ops: keys.map(() => op),\n fields: keys.map(k => get$5(k, key, value, fields)),\n as: keys.map(k => k + ''),\n modified: _.modified.bind(_)\n };\n}\n\n// Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\nfunction get$5(k, key, value, fields) {\n return accessor(d => key(d) === k ? value(d) : NaN, fields, k + '');\n}\n\n// Collect (and optionally limit) all unique pivot values.\nfunction pivotKeys(key, limit, pulse) {\n const map = {},\n list = [];\n pulse.visit(pulse.SOURCE, t => {\n const k = key(t);\n if (!map[k]) {\n map[k] = 1;\n list.push(k);\n }\n });\n list.sort(ascending$3);\n return limit ? list.slice(0, limit) : list;\n}\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array} params.field - The field\n * accessor for an array of subflow tuple objects.\n */\nfunction PreFacet$1(params) {\n Facet$1.call(this, params);\n}\ninherits(PreFacet$1, Facet$1, {\n transform(_, pulse) {\n const flow = _.subflow,\n field = _.field,\n subflow = t => this.subflow(tupleid(t), flow, pulse, t);\n if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n error('PreFacet does not support field modification.');\n }\n this.initTargets(); // reset list of active subflows\n\n if (field) {\n pulse.visit(pulse.MOD, t => {\n const sf = subflow(t);\n field(t).forEach(_ => sf.mod(_));\n });\n pulse.visit(pulse.ADD, t => {\n const sf = subflow(t);\n field(t).forEach(_ => sf.add(ingest$1(_)));\n });\n pulse.visit(pulse.REM, t => {\n const sf = subflow(t);\n field(t).forEach(_ => sf.rem(_));\n });\n } else {\n pulse.visit(pulse.MOD, t => subflow(t).mod(t));\n pulse.visit(pulse.ADD, t => subflow(t).add(t));\n pulse.visit(pulse.REM, t => subflow(t).rem(t));\n }\n if (pulse.clean()) {\n pulse.runAfter(() => this.clean());\n }\n return pulse;\n }\n});\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.as] - Output field names for each projected\n * field. Any unspecified fields will use the field name provided by\n * the field accessor.\n */\nfunction Project(params) {\n Transform.call(this, null, params);\n}\nProject.Definition = {\n 'type': 'Project',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }]\n};\ninherits(Project, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(_.fields, _.as || []),\n derive = fields ? (s, t) => project$1(s, t, fields, as) : rederive;\n let lut;\n if (this.value) {\n lut = this.value;\n } else {\n pulse = pulse.addAll();\n lut = this.value = {};\n }\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n pulse.visit(pulse.ADD, t => {\n const dt = derive(t, ingest$1({}));\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n pulse.visit(pulse.MOD, t => {\n out.mod.push(derive(t, lut[tupleid(t)]));\n });\n return out;\n }\n});\nfunction project$1(s, t, fields, as) {\n for (let i = 0, n = fields.length; i < n; ++i) {\n t[as[i]] = fields[i](s);\n }\n return t;\n}\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\nfunction Proxy$1(params) {\n Transform.call(this, null, params);\n}\ninherits(Proxy$1, Transform, {\n transform(_, pulse) {\n this.value = _.value;\n return _.modified('value') ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n }\n});\n\n/**\n * Generates sample quantile values from an input data stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the data field\n * over which to calculate quantile values.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {Array} [params.probs] - An array of probabilities in\n * the range (0, 1) for which to compute quantile values. If not specified,\n * the *step* parameter will be used.\n * @param {Array} [params.step=0.01] - A probability step size for\n * sampling quantile values. All values from one-half the step size up to\n * 1 (exclusive) will be sampled. This parameter is only used if the\n * *quantiles* parameter is not provided.\n */\nfunction Quantile$1(params) {\n Transform.call(this, null, params);\n}\nQuantile$1.Definition = {\n 'type': 'Quantile',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'probs',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 0.01\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['prob', 'value']\n }]\n};\nconst EPSILON$2 = 1e-14;\ninherits(Quantile$1, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n as = _.as || ['prob', 'value'];\n if (this.value && !_.modified() && !pulse.changed()) {\n out.source = this.value;\n return out;\n }\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1$1(source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n values = [],\n step = _.step || 0.01,\n p = _.probs || range$5(step / 2, 1 - EPSILON$2, step),\n n = p.length;\n groups.forEach(g => {\n const q = quantiles(g, p);\n for (let i = 0; i < n; ++i) {\n const t = {};\n for (let i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[i];\n t[as[1]] = q[i];\n values.push(ingest$1(t));\n }\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n return out;\n }\n});\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n * the transform should make derived copies of incoming tuples.\n * @constructor\n */\nfunction Relay$1(params) {\n Transform.call(this, null, params);\n}\ninherits(Relay$1, Transform, {\n transform(_, pulse) {\n let out, lut;\n if (this.value) {\n lut = this.value;\n } else {\n out = pulse = pulse.addAll();\n lut = this.value = {};\n }\n if (_.derive) {\n out = pulse.fork(pulse.NO_SOURCE);\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n pulse.visit(pulse.ADD, t => {\n const dt = derive(t);\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n pulse.visit(pulse.MOD, t => {\n const dt = lut[tupleid(t)];\n for (const k in t) {\n dt[k] = t[k];\n // down stream writes may overwrite re-derived tuples\n // conservatively mark all source fields as modified\n out.modifies(k);\n }\n out.mod.push(dt);\n });\n }\n return out;\n }\n});\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\nfunction Sample(params) {\n Transform.call(this, [], params);\n this.count = 0;\n}\nSample.Definition = {\n 'type': 'Sample',\n 'metadata': {},\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'default': 1000\n }]\n};\ninherits(Sample, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n mod = _.modified('size'),\n num = _.size,\n map = this.value.reduce((m, t) => (m[tupleid(t)] = 1, m), {});\n let res = this.value,\n cnt = this.count,\n cap = 0;\n\n // sample reservoir update function\n function update(t) {\n let p, idx;\n if (res.length < num) {\n res.push(t);\n } else {\n idx = ~~((cnt + 1) * random());\n if (idx < res.length && idx >= cap) {\n p = res[idx];\n if (map[tupleid(p)]) out.rem.push(p); // eviction\n res[idx] = t;\n }\n }\n ++cnt;\n }\n if (pulse.rem.length) {\n // find all tuples that should be removed, add to output\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t);\n if (map[id]) {\n map[id] = -1;\n out.rem.push(t);\n }\n --cnt;\n });\n\n // filter removed tuples out of the sample reservoir\n res = res.filter(t => map[tupleid(t)] !== -1);\n }\n if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n // replenish sample if backing data source is available\n cap = cnt = res.length;\n pulse.visit(pulse.SOURCE, t => {\n // update, but skip previously sampled tuples\n if (!map[tupleid(t)]) update(t);\n });\n cap = -1;\n }\n if (mod && res.length > num) {\n const n = res.length - num;\n for (let i = 0; i < n; ++i) {\n map[tupleid(res[i])] = -1;\n out.rem.push(res[i]);\n }\n res = res.slice(n);\n }\n if (pulse.mod.length) {\n // propagate modified tuples in the sample reservoir\n pulse.visit(pulse.MOD, t => {\n if (map[tupleid(t)]) out.mod.push(t);\n });\n }\n if (pulse.add.length) {\n // update sample reservoir\n pulse.visit(pulse.ADD, update);\n }\n if (pulse.add.length || cap < 0) {\n // output newly added tuples\n out.add = res.filter(t => !map[tupleid(t)]);\n }\n this.count = cnt;\n this.value = out.source = res;\n return out;\n }\n});\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\nfunction Sequence(params) {\n Transform.call(this, null, params);\n}\nSequence.Definition = {\n 'type': 'Sequence',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'start',\n 'type': 'number',\n 'required': true\n }, {\n 'name': 'stop',\n 'type': 'number',\n 'required': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'data'\n }]\n};\ninherits(Sequence, Transform, {\n transform(_, pulse) {\n if (this.value && !_.modified()) return;\n const out = pulse.materialize().fork(pulse.MOD),\n as = _.as || 'data';\n out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n this.value = range$5(_.start, _.stop, _.step || 1).map(v => {\n const t = {};\n t[as] = v;\n return ingest$1(t);\n });\n out.add = pulse.add.concat(this.value);\n return out;\n }\n});\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\nfunction Sieve$1(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Sieve$1, Transform, {\n transform(_, pulse) {\n this.value = pulse.source;\n return pulse.changed() ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n }\n});\n\n/**\n * Discretize dates to specific time units.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The data field containing date/time values.\n */\nfunction TimeUnit(params) {\n Transform.call(this, null, params);\n}\nconst OUTPUT = ['unit0', 'unit1'];\nTimeUnit.Definition = {\n 'type': 'TimeUnit',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'interval',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'units',\n 'type': 'enum',\n 'values': TIME_UNITS,\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'maxbins',\n 'type': 'number',\n 'default': 40\n }, {\n 'name': 'extent',\n 'type': 'date',\n 'array': true\n }, {\n 'name': 'timezone',\n 'type': 'enum',\n 'default': 'local',\n 'values': ['local', 'utc']\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': OUTPUT\n }]\n};\ninherits(TimeUnit, Transform, {\n transform(_, pulse) {\n const field = _.field,\n band = _.interval !== false,\n utc = _.timezone === 'utc',\n floor = this._floor(_, pulse),\n offset = (utc ? utcInterval : timeInterval)(floor.unit).offset,\n as = _.as || OUTPUT,\n u0 = as[0],\n u1 = as[1],\n step = floor.step;\n let min = floor.start || Infinity,\n max = floor.stop || -Infinity,\n flag = pulse.ADD;\n if (_.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(field))) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n min = Infinity;\n max = -Infinity;\n }\n pulse.visit(flag, t => {\n const v = field(t);\n let a, b;\n if (v == null) {\n t[u0] = null;\n if (band) t[u1] = null;\n } else {\n t[u0] = a = b = floor(v);\n if (band) t[u1] = b = offset(a, step);\n if (a < min) min = a;\n if (b > max) max = b;\n }\n });\n floor.start = min;\n floor.stop = max;\n return pulse.modifies(band ? as : u0);\n },\n _floor(_, pulse) {\n const utc = _.timezone === 'utc';\n\n // get parameters\n const {\n units,\n step\n } = _.units ? {\n units: _.units,\n step: _.step || 1\n } : bin$2({\n extent: _.extent || extent(pulse.materialize(pulse.SOURCE).source, _.field),\n maxbins: _.maxbins\n });\n\n // check / standardize time units\n const tunits = timeUnits(units),\n prev = this.value || {},\n floor = (utc ? utcFloor : timeFloor)(tunits, step);\n floor.unit = peek$1(tunits);\n floor.units = tunits;\n floor.step = step;\n floor.start = prev.start;\n floor.stop = prev.stop;\n return this.value = floor;\n }\n});\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\nfunction TupleIndex(params) {\n Transform.call(this, fastmap(), params);\n}\ninherits(TupleIndex, Transform, {\n transform(_, pulse) {\n const df = pulse.dataflow,\n field = _.field,\n index = this.value,\n set = t => index.set(field(t), t);\n let mod = true;\n if (_.modified('field') || pulse.modified(field.fields)) {\n index.clear();\n pulse.visit(pulse.SOURCE, set);\n } else if (pulse.changed()) {\n pulse.visit(pulse.REM, t => index.delete(field(t)));\n pulse.visit(pulse.ADD, set);\n } else {\n mod = false;\n }\n this.modified(mod);\n if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n return pulse.fork();\n }\n});\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting the values. The comparator will be\n * applied to backing tuples prior to value extraction.\n */\nfunction Values$1(params) {\n Transform.call(this, null, params);\n}\ninherits(Values$1, Transform, {\n transform(_, pulse) {\n const run = !this.value || _.modified('field') || _.modified('sort') || pulse.changed() || _.sort && pulse.modified(_.sort.fields);\n if (run) {\n this.value = (_.sort ? pulse.source.slice().sort(stableCompare(_.sort)) : pulse.source).map(_.field);\n }\n }\n});\nfunction WindowOp(op, field, param, as) {\n const fn = WindowOps[op](field, param);\n return {\n init: fn.init || zero$5,\n update: function (w, t) {\n t[as] = fn.next(w);\n }\n };\n}\nconst WindowOps = {\n row_number: function () {\n return {\n next: w => w.index + 1\n };\n },\n rank: function () {\n let rank;\n return {\n init: () => rank = 1,\n next: w => {\n const i = w.index,\n data = w.data;\n return i && w.compare(data[i - 1], data[i]) ? rank = i + 1 : rank;\n }\n };\n },\n dense_rank: function () {\n let drank;\n return {\n init: () => drank = 1,\n next: w => {\n const i = w.index,\n d = w.data;\n return i && w.compare(d[i - 1], d[i]) ? ++drank : drank;\n }\n };\n },\n percent_rank: function () {\n const rank = WindowOps.rank(),\n next = rank.next;\n return {\n init: rank.init,\n next: w => (next(w) - 1) / (w.data.length - 1)\n };\n },\n cume_dist: function () {\n let cume;\n return {\n init: () => cume = 0,\n next: w => {\n const d = w.data,\n c = w.compare;\n let i = w.index;\n if (cume < i) {\n while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n cume = i;\n }\n return (1 + cume) / d.length;\n }\n };\n },\n ntile: function (field, num) {\n num = +num;\n if (!(num > 0)) error('ntile num must be greater than zero.');\n const cume = WindowOps.cume_dist(),\n next = cume.next;\n return {\n init: cume.init,\n next: w => Math.ceil(num * next(w))\n };\n },\n lag: function (field, offset) {\n offset = +offset || 1;\n return {\n next: w => {\n const i = w.index - offset;\n return i >= 0 ? field(w.data[i]) : null;\n }\n };\n },\n lead: function (field, offset) {\n offset = +offset || 1;\n return {\n next: w => {\n const i = w.index + offset,\n d = w.data;\n return i < d.length ? field(d[i]) : null;\n }\n };\n },\n first_value: function (field) {\n return {\n next: w => field(w.data[w.i0])\n };\n },\n last_value: function (field) {\n return {\n next: w => field(w.data[w.i1 - 1])\n };\n },\n nth_value: function (field, nth) {\n nth = +nth;\n if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n return {\n next: w => {\n const i = w.i0 + (nth - 1);\n return i < w.i1 ? field(w.data[i]) : null;\n }\n };\n },\n prev_value: function (field) {\n let prev;\n return {\n init: () => prev = null,\n next: w => {\n const v = field(w.data[w.index]);\n return v != null ? prev = v : prev;\n }\n };\n },\n next_value: function (field) {\n let v, i;\n return {\n init: () => (v = null, i = -1),\n next: w => {\n const d = w.data;\n return w.index <= i ? v : (i = find$2(field, d, w.index)) < 0 ? (i = d.length, v = null) : v = field(d[i]);\n }\n };\n }\n};\nfunction find$2(field, data, index) {\n for (let n = data.length; index < n; ++index) {\n const v = field(data[index]);\n if (v != null) return index;\n }\n return -1;\n}\nconst ValidWindowOps = Object.keys(WindowOps);\nfunction WindowState(_) {\n const ops = array$5(_.ops),\n fields = array$5(_.fields),\n params = array$5(_.params),\n as = array$5(_.as),\n outputs = this.outputs = [],\n windows = this.windows = [],\n inputs = {},\n map = {},\n counts = [],\n measures = [];\n let countOnly = true;\n function visitInputs(f) {\n array$5(accessorFields(f)).forEach(_ => inputs[_] = 1);\n }\n visitInputs(_.sort);\n ops.forEach((op, i) => {\n const field = fields[i],\n mname = accessorName(field),\n name = measureName(op, mname, as[i]);\n visitInputs(field);\n outputs.push(name);\n\n // Window operation\n if (has$1(WindowOps, op)) {\n windows.push(WindowOp(op, fields[i], params[i], name));\n }\n\n // Aggregate operation\n else {\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n if (op === 'count') {\n counts.push(name);\n return;\n }\n countOnly = false;\n let m = map[mname];\n if (!m) {\n m = map[mname] = [];\n m.field = field;\n measures.push(m);\n }\n m.push(createMeasure(op, name));\n }\n });\n if (counts.length || measures.length) {\n this.cell = cell(measures, counts, countOnly);\n }\n this.inputs = Object.keys(inputs);\n}\nconst prototype = WindowState.prototype;\nprototype.init = function () {\n this.windows.forEach(_ => _.init());\n if (this.cell) this.cell.init();\n};\nprototype.update = function (w, t) {\n const cell = this.cell,\n wind = this.windows,\n data = w.data,\n m = wind && wind.length;\n let j;\n if (cell) {\n for (j = w.p0; j < w.i0; ++j) cell.rem(data[j]);\n for (j = w.p1; j < w.i1; ++j) cell.add(data[j]);\n cell.set(t);\n }\n for (j = 0; j < m; ++j) wind[j].update(w, t);\n};\nfunction cell(measures, counts, countOnly) {\n measures = measures.map(m => compileMeasures(m, m.field));\n const cell = {\n num: 0,\n agg: null,\n store: false,\n count: counts\n };\n if (!countOnly) {\n var n = measures.length,\n a = cell.agg = Array(n),\n i = 0;\n for (; i < n; ++i) a[i] = new measures[i](cell);\n }\n if (cell.store) {\n var store = cell.data = new TupleStore();\n }\n cell.add = function (t) {\n cell.num += 1;\n if (countOnly) return;\n if (store) store.add(t);\n for (let i = 0; i < n; ++i) {\n a[i].add(a[i].get(t), t);\n }\n };\n cell.rem = function (t) {\n cell.num -= 1;\n if (countOnly) return;\n if (store) store.rem(t);\n for (let i = 0; i < n; ++i) {\n a[i].rem(a[i].get(t), t);\n }\n };\n cell.set = function (t) {\n let i, n;\n\n // consolidate stored values\n if (store) store.values();\n\n // update tuple properties\n for (i = 0, n = counts.length; i < n; ++i) t[counts[i]] = cell.num;\n if (!countOnly) for (i = 0, n = a.length; i < n; ++i) a[i].set(t);\n };\n cell.init = function () {\n cell.num = 0;\n if (store) store.reset();\n for (let i = 0; i < n; ++i) a[i].init();\n };\n return cell;\n}\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array} params.ops - An array of strings indicating window operations to perform.\n * @param {Array} [params.fields] - An array of accessors\n * for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array} [params.as] - An array of output field names for window operations.\n * @param {Array} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n * number alone, ignoring peers with identical sort values. If false (default),\n * the window boundaries will be adjusted to include peer values.\n */\nfunction Window(params) {\n Transform.call(this, {}, params);\n this._mlen = 0;\n this._mods = [];\n}\nWindow.Definition = {\n 'type': 'Window',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidWindowOps.concat(ValidAggregateOps)\n }, {\n 'name': 'params',\n 'type': 'number',\n 'null': true,\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'frame',\n 'type': 'number',\n 'null': true,\n 'array': true,\n 'length': 2,\n 'default': [null, 0]\n }, {\n 'name': 'ignorePeers',\n 'type': 'boolean',\n 'default': false\n }]\n};\ninherits(Window, Transform, {\n transform(_, pulse) {\n this.stamp = pulse.stamp;\n const mod = _.modified(),\n cmp = stableCompare(_.sort),\n key = groupkey(_.groupby),\n group = t => this.group(key(t));\n\n // initialize window state\n let state = this.state;\n if (!state || mod) {\n state = this.state = new WindowState(_);\n }\n\n // partition input tuples\n if (mod || pulse.modified(state.inputs)) {\n this.value = {};\n pulse.visit(pulse.SOURCE, t => group(t).add(t));\n } else {\n pulse.visit(pulse.REM, t => group(t).remove(t));\n pulse.visit(pulse.ADD, t => group(t).add(t));\n }\n\n // perform window calculations for each modified partition\n for (let i = 0, n = this._mlen; i < n; ++i) {\n processPartition(this._mods[i], state, cmp, _);\n }\n this._mlen = 0;\n this._mods = [];\n\n // TODO don't reflow everything?\n return pulse.reflow(mod).modifies(state.outputs);\n },\n group(key) {\n let group = this.value[key];\n if (!group) {\n group = this.value[key] = SortedList(tupleid);\n group.stamp = -1;\n }\n if (group.stamp < this.stamp) {\n group.stamp = this.stamp;\n this._mods[this._mlen++] = group;\n }\n return group;\n }\n});\nfunction processPartition(list, state, cmp, _) {\n const sort = _.sort,\n range = sort && !_.ignorePeers,\n frame = _.frame || [null, 0],\n data = list.data(cmp),\n // use cmp for stable sort\n n = data.length,\n b = range ? bisector$1(sort) : null,\n w = {\n i0: 0,\n i1: 0,\n p0: 0,\n p1: 0,\n index: 0,\n data: data,\n compare: sort || constant$5(-1)\n };\n state.init();\n for (let i = 0; i < n; ++i) {\n setWindow(w, frame, i, n);\n if (range) adjustRange(w, b);\n state.update(w, data[i]);\n }\n}\nfunction setWindow(w, f, i, n) {\n w.p0 = w.i0;\n w.p1 = w.i1;\n w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n w.index = i;\n}\n\n// if frame type is 'range', adjust window for peer values\nfunction adjustRange(w, bisect) {\n const r0 = w.i0,\n r1 = w.i1 - 1,\n c = w.compare,\n d = w.data,\n n = d.length - 1;\n if (r0 > 0 && !c(d[r0], d[r0 - 1])) w.i0 = bisect.left(d, d[r0]);\n if (r1 < n && !c(d[r1], d[r1 + 1])) w.i1 = bisect.right(d, d[r1]);\n}\nvar tx = /*#__PURE__*/Object.freeze({\n __proto__: null,\n aggregate: Aggregate$1,\n bin: Bin,\n collect: Collect$1,\n compare: Compare$1,\n countpattern: CountPattern,\n cross: Cross,\n density: Density,\n dotbin: DotBin,\n expression: Expression$1,\n extent: Extent,\n facet: Facet$1,\n field: Field$1,\n filter: Filter,\n flatten: Flatten,\n fold: Fold,\n formula: Formula,\n generate: Generate,\n impute: Impute,\n joinaggregate: JoinAggregate,\n kde: KDE,\n key: Key$1,\n load: Load$1,\n lookup: Lookup,\n multiextent: MultiExtent$1,\n multivalues: MultiValues$1,\n params: Params$2,\n pivot: Pivot,\n prefacet: PreFacet$1,\n project: Project,\n proxy: Proxy$1,\n quantile: Quantile$1,\n relay: Relay$1,\n sample: Sample,\n sequence: Sequence,\n sieve: Sieve$1,\n subflow: Subflow,\n timeunit: TimeUnit,\n tupleindex: TupleIndex,\n values: Values$1,\n window: Window\n});\nfunction constant$3(x) {\n return function constant() {\n return x;\n };\n}\nconst abs$2 = Math.abs;\nconst atan2$1 = Math.atan2;\nconst cos$2 = Math.cos;\nconst max$1 = Math.max;\nconst min$1 = Math.min;\nconst sin$2 = Math.sin;\nconst sqrt$3 = Math.sqrt;\nconst epsilon$5 = 1e-12;\nconst pi$3 = Math.PI;\nconst halfPi$2 = pi$3 / 2;\nconst tau$3 = 2 * pi$3;\nfunction acos$1(x) {\n return x > 1 ? 0 : x < -1 ? pi$3 : Math.acos(x);\n}\nfunction asin$2(x) {\n return x >= 1 ? halfPi$2 : x <= -1 ? -halfPi$2 : Math.asin(x);\n}\nconst pi$2 = Math.PI,\n tau$2 = 2 * pi$2,\n epsilon$4 = 1e-6,\n tauEpsilon = tau$2 - epsilon$4;\nfunction append$1(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\nfunction appendRound$1(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(\"invalid digits: \".concat(digits));\n if (d > 15) return append$1;\n const k = 10 ** d;\n return function (strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\nlet Path$1 = class Path {\n constructor(digits) {\n this._x0 = this._y0 =\n // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append$1 : appendRound$1(digits);\n }\n moveTo(x, y) {\n this._append(_templateObject || (_templateObject = _taggedTemplateLiteral([\"M\", \",\", \"\"])), this._x0 = this._x1 = +x, this._y0 = this._y1 = +y);\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"Z\"])));\n }\n }\n lineTo(x, y) {\n this._append(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), this._x1 = +x, this._y1 = +y);\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"Q\", \",\", \",\", \",\", \"\"])), +x1, +y1, this._x1 = +x, this._y1 = +y);\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"C\", \",\", \",\", \",\", \",\", \",\", \"\"])), +x1, +y1, +x2, +y2, this._x1 = +x, this._y1 = +y);\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \".concat(r));\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), this._x1 = x1, this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon$4)) ;\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$4) || !r) {\n this._append(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), this._x1 = x1, this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi$2 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon$4) {\n this._append(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x1 + t01 * x01, y1 + t01 * y01);\n }\n this._append(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"A\", \",\", \",0,0,\", \",\", \",\", \"\"])), r, r, +(y01 * x20 > x01 * y20), this._x1 = x1 + t21 * x21, this._y1 = y1 + t21 * y21);\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \".concat(r));\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x0, y0);\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon$4 || Math.abs(this._y1 - y0) > epsilon$4) {\n this._append(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x0, y0);\n }\n\n // Is this arc empty? Weā€™re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau$2 + tau$2;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"A\", \",\", \",0,1,\", \",\", \",\", \"A\", \",\", \",0,1,\", \",\", \",\", \"\"])), r, r, cw, x - dx, y - dy, r, r, cw, this._x1 = x0, this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon$4) {\n this._append(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"A\", \",\", \",0,\", \",\", \",\", \",\", \"\"])), r, r, +(da >= pi$2), cw, this._x1 = x + r * Math.cos(a1), this._y1 = y + r * Math.sin(a1));\n }\n }\n rect(x, y, w, h) {\n this._append(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"M\", \",\", \"h\", \"v\", \"h\", \"Z\"])), this._x0 = this._x1 = +x, this._y0 = this._y1 = +y, w = +w, +h, -w);\n }\n toString() {\n return this._;\n }\n};\nfunction path$3() {\n return new Path$1();\n}\n\n// Allow instanceof d3.path\npath$3.prototype = Path$1.prototype;\nfunction withPath(shape) {\n let digits = 3;\n shape.digits = function (_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(_));\n digits = d;\n }\n return shape;\n };\n return () => new Path$1(digits);\n}\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect$3(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0,\n y10 = y1 - y0,\n x32 = x3 - x2,\n y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon$5) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt$3(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt$3(max$1(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\nfunction arc$2$1() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant$3(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi$2,\n a1 = endAngle.apply(this, arguments) - halfPi$2,\n da = abs$2(a1 - a0),\n cw = a1 > a0;\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon$5)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau$3 - epsilon$5) {\n context.moveTo(r1 * cos$2(a0), r1 * sin$2(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon$5) {\n context.moveTo(r0 * cos$2(a1), r0 * sin$2(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = ap > epsilon$5 && (padRadius ? +padRadius.apply(this, arguments) : sqrt$3(r0 * r0 + r1 * r1)),\n rc = min$1(abs$2(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ā‰„ r0, da1 ā‰„ da0.\n if (rp > epsilon$5) {\n var p0 = asin$2(rp / r0 * sin$2(ap)),\n p1 = asin$2(rp / r1 * sin$2(ap));\n if ((da0 -= p0 * 2) > epsilon$5) p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon$5) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n var x01 = r1 * cos$2(a01),\n y01 = r1 * sin$2(a01),\n x10 = r0 * cos$2(a10),\n y10 = r0 * sin$2(a10);\n\n // Apply rounded corners?\n if (rc > epsilon$5) {\n var x11 = r1 * cos$2(a11),\n y11 = r1 * sin$2(a11),\n x00 = r0 * cos$2(a00),\n y00 = r0 * sin$2(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, itā€™s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi$3) {\n if (oc = intersect$3(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin$2(acos$1((ax * bx + ay * by) / (sqrt$3(ax * ax + ay * ay) * sqrt$3(bx * bx + by * by))) / 2),\n lc = sqrt$3(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min$1(rc, (r0 - lc) / (kc - 1));\n rc1 = min$1(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon$5)) context.moveTo(x01, y01);\n\n // Does the sectorā€™s outer ring have rounded corners?\n else if (rc1 > epsilon$5) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and itā€™s a circular sector?\n // Or perhaps itā€™s an annular sector collapsed due to padding?\n if (!(r0 > epsilon$5) || !(da0 > epsilon$5)) context.lineTo(x10, y10);\n\n // Does the sectorā€™s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon$5) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n context.closePath();\n if (buffer) return context = null, buffer + \"\" || null;\n }\n arc.centroid = function () {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi$3 / 2;\n return [cos$2(a) * r, sin$2(a) * r];\n };\n arc.innerRadius = function (_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant$3(+_), arc) : innerRadius;\n };\n arc.outerRadius = function (_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant$3(+_), arc) : outerRadius;\n };\n arc.cornerRadius = function (_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant$3(+_), arc) : cornerRadius;\n };\n arc.padRadius = function (_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant$3(+_), arc) : padRadius;\n };\n arc.startAngle = function (_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant$3(+_), arc) : startAngle;\n };\n arc.endAngle = function (_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant$3(+_), arc) : endAngle;\n };\n arc.padAngle = function (_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant$3(+_), arc) : padAngle;\n };\n arc.context = function (_) {\n return arguments.length ? (context = _ == null ? null : _, arc) : context;\n };\n return arc;\n}\nfunction array$4(x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nfunction Linear$1(context) {\n this._context = context;\n}\nLinear$1.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n // falls through\n default:\n this._context.lineTo(x, y);\n break;\n }\n }\n};\nfunction curveLinear(context) {\n return new Linear$1(context);\n}\nfunction x$3(p) {\n return p[0];\n}\nfunction y$3(p) {\n return p[1];\n}\nfunction line$2$1(x, y) {\n var defined = constant$3(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n x = typeof x === \"function\" ? x : x === undefined ? x$3 : constant$3(x);\n y = typeof y === \"function\" ? y : y === undefined ? y$3 : constant$3(y);\n function line(data) {\n var i,\n n = (data = array$4(data)).length,\n d,\n defined0 = false,\n buffer;\n if (context == null) output = curve(buffer = path());\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n if (buffer) return output = null, buffer + \"\" || null;\n }\n line.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant$3(+_), line) : x;\n };\n line.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant$3(+_), line) : y;\n };\n line.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant$3(!!_), line) : defined;\n };\n line.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n line.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n return line;\n}\nfunction area$2$1(x0, y0, y1) {\n var x1 = null,\n defined = constant$3(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n x0 = typeof x0 === \"function\" ? x0 : x0 === undefined ? x$3 : constant$3(+x0);\n y0 = typeof y0 === \"function\" ? y0 : y0 === undefined ? constant$3(0) : constant$3(+y0);\n y1 = typeof y1 === \"function\" ? y1 : y1 === undefined ? y$3 : constant$3(+y1);\n function area(data) {\n var i,\n j,\n k,\n n = (data = array$4(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n if (context == null) output = curve(buffer = path());\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n if (buffer) return output = null, buffer + \"\" || null;\n }\n function arealine() {\n return line$2$1().defined(defined).curve(curve).context(context);\n }\n area.x = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant$3(+_), x1 = null, area) : x0;\n };\n area.x0 = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant$3(+_), area) : x0;\n };\n area.x1 = function (_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant$3(+_), area) : x1;\n };\n area.y = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant$3(+_), y1 = null, area) : y0;\n };\n area.y0 = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant$3(+_), area) : y0;\n };\n area.y1 = function (_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant$3(+_), area) : y1;\n };\n area.lineX0 = area.lineY0 = function () {\n return arealine().x(x0).y(y0);\n };\n area.lineY1 = function () {\n return arealine().x(x0).y(y1);\n };\n area.lineX1 = function () {\n return arealine().x(x1).y(y0);\n };\n area.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant$3(!!_), area) : defined;\n };\n area.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n area.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n return area;\n}\nvar circle$1 = {\n draw(context, size) {\n const r = sqrt$3(size / pi$3);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau$3);\n }\n};\nfunction Symbol$1(type, size) {\n let context = null,\n path = withPath(symbol);\n type = typeof type === \"function\" ? type : constant$3(type || circle$1);\n size = typeof size === \"function\" ? size : constant$3(size === undefined ? 64 : +size);\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n symbol.type = function (_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant$3(_), symbol) : type;\n };\n symbol.size = function (_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant$3(+_), symbol) : size;\n };\n symbol.context = function (_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n return symbol;\n}\nfunction noop$3() {}\nfunction point$7(that, x, y) {\n that._context.bezierCurveTo((2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, (that._x0 + 2 * that._x1) / 3, (that._y0 + 2 * that._y1) / 3, (that._x0 + 4 * that._x1 + x) / 6, (that._y0 + 4 * that._y1 + y) / 6);\n}\nfunction Basis(context) {\n this._context = context;\n}\nBasis.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 3:\n point$7(this, this._x1, this._y1);\n // falls through\n case 2:\n this._context.lineTo(this._x1, this._y1);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6);\n // falls through\n default:\n point$7(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nfunction curveBasis(context) {\n return new Basis(context);\n}\nfunction BasisClosed(context) {\n this._context = context;\n}\nBasisClosed.prototype = {\n areaStart: noop$3,\n areaEnd: noop$3,\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x2 = x, this._y2 = y;\n break;\n case 1:\n this._point = 2;\n this._x3 = x, this._y3 = y;\n break;\n case 2:\n this._point = 3;\n this._x4 = x, this._y4 = y;\n this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6);\n break;\n default:\n point$7(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nfunction curveBasisClosed(context) {\n return new BasisClosed(context);\n}\nfunction BasisOpen(context) {\n this._context = context;\n}\nBasisOpen.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n var x0 = (this._x0 + 4 * this._x1 + x) / 6,\n y0 = (this._y0 + 4 * this._y1 + y) / 6;\n this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n point$7(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\nfunction curveBasisOpen(context) {\n return new BasisOpen(context);\n}\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\nBundle.prototype = {\n lineStart: function () {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function () {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n while (++i <= j) {\n t = i / j;\n this._basis.point(this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), this._beta * y[i] + (1 - this._beta) * (y0 + t * dy));\n }\n }\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function (x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\nvar curveBundle = function custom(beta) {\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n bundle.beta = function (beta) {\n return custom(+beta);\n };\n return bundle;\n}(0.85);\nfunction point$6(that, x, y) {\n that._context.bezierCurveTo(that._x1 + that._k * (that._x2 - that._x0), that._y1 + that._k * (that._y2 - that._y0), that._x2 + that._k * (that._x1 - x), that._y2 + that._k * (that._y1 - y), that._x2, that._y2);\n}\nfunction Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinal.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x2, this._y2);\n break;\n case 3:\n point$6(this, this._x1, this._y1);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n this._x1 = x, this._y1 = y;\n break;\n case 2:\n this._point = 3;\n // falls through\n default:\n point$6(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nvar curveCardinal = function custom(tension) {\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n}(0);\nfunction CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinalClosed.prototype = {\n areaStart: noop$3,\n areaEnd: noop$3,\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x3 = x, this._y3 = y;\n break;\n case 1:\n this._point = 2;\n this._context.moveTo(this._x4 = x, this._y4 = y);\n break;\n case 2:\n this._point = 3;\n this._x5 = x, this._y5 = y;\n break;\n default:\n point$6(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nvar curveCardinalClosed = function custom(tension) {\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n}(0);\nfunction CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\nCardinalOpen.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n point$6(this, x, y);\n break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nvar curveCardinalOpen = function custom(tension) {\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n return cardinal;\n}(0);\nfunction point$5(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n if (that._l01_a > epsilon$5) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n if (that._l23_a > epsilon$5) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRom.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x2, this._y2);\n break;\n case 3:\n this.point(this._x2, this._y2);\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n // falls through\n default:\n point$5(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nvar curveCatmullRom = function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n}(0.5);\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRomClosed.prototype = {\n areaStart: noop$3,\n areaEnd: noop$3,\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2:\n {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3:\n {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function (x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x3 = x, this._y3 = y;\n break;\n case 1:\n this._point = 2;\n this._context.moveTo(this._x4 = x, this._y4 = y);\n break;\n case 2:\n this._point = 3;\n this._x5 = x, this._y5 = y;\n break;\n default:\n point$5(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nvar curveCatmullRomClosed = function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n}(0.5);\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\nCatmullRomOpen.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);\n break;\n case 3:\n this._point = 4;\n // falls through\n default:\n point$5(this, x, y);\n break;\n }\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\nvar curveCatmullRomOpen = function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n return catmullRom;\n}(0.5);\nfunction LinearClosed(context) {\n this._context = context;\n}\nLinearClosed.prototype = {\n areaStart: noop$3,\n areaEnd: noop$3,\n lineStart: function () {\n this._point = 0;\n },\n lineEnd: function () {\n if (this._point) this._context.closePath();\n },\n point: function (x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);else this._point = 1, this._context.moveTo(x, y);\n }\n};\nfunction curveLinearClosed(context) {\n return new LinearClosed(context);\n}\nfunction sign$1(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign$1(s0) + sign$1(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic BĆ©zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point$4(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\nfunction MonotoneX(context) {\n this._context = context;\n}\nMonotoneX.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x1, this._y1);\n break;\n case 3:\n point$4(this, this._t0, slope2(this, this._t0));\n break;\n }\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n var t1 = NaN;\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n point$4(this, slope2(this, t1 = slope3(this, x, y)), t1);\n break;\n default:\n point$4(this, this._t0, t1 = slope3(this, x, y));\n break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n};\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function (x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\nfunction ReflectContext(context) {\n this._context = context;\n}\nReflectContext.prototype = {\n moveTo: function (x, y) {\n this._context.moveTo(y, x);\n },\n closePath: function () {\n this._context.closePath();\n },\n lineTo: function (x, y) {\n this._context.lineTo(y, x);\n },\n bezierCurveTo: function (x1, y1, x2, y2, x, y) {\n this._context.bezierCurveTo(y1, x1, y2, x2, y, x);\n }\n};\nfunction monotoneX(context) {\n return new MonotoneX(context);\n}\nfunction monotoneY(context) {\n return new MonotoneY(context);\n}\nfunction Natural(context) {\n this._context = context;\n}\nNatural.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x = [];\n this._y = [];\n },\n lineEnd: function () {\n var x = this._x,\n y = this._y,\n n = x.length;\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n if (this._line || this._line !== 0 && n === 1) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function (x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\nfunction curveNatural(context) {\n return new Natural(context);\n}\nfunction Step(context, t) {\n this._context = context;\n this._t = t;\n}\nStep.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n // falls through\n default:\n {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\nfunction curveStep(context) {\n return new Step(context, 0.5);\n}\nfunction stepBefore(context) {\n return new Step(context, 0);\n}\nfunction stepAfter(context) {\n return new Step(context, 1);\n}\nfunction domCanvas(w, h) {\n if (typeof document !== 'undefined' && document.createElement) {\n const c = document.createElement('canvas');\n if (c && c.getContext) {\n c.width = w;\n c.height = h;\n return c;\n }\n }\n return null;\n}\nconst domImage = () => typeof Image !== 'undefined' ? Image : null;\nfunction initRange(domain, range) {\n switch (arguments.length) {\n case 0:\n break;\n case 1:\n this.range(domain);\n break;\n default:\n this.range(range).domain(domain);\n break;\n }\n return this;\n}\nfunction initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0:\n break;\n case 1:\n {\n if (typeof domain === \"function\") this.interpolator(domain);else this.range(domain);\n break;\n }\n default:\n {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);else this.range(interpolator);\n break;\n }\n }\n return this;\n}\nconst implicit = Symbol(\"implicit\");\nfunction ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return ordinal(domain, range).unknown(unknown);\n };\n initRange.apply(scale, arguments);\n return scale;\n}\nfunction define(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\nfunction Color() {}\nvar darker = 0.7;\nvar brighter = 1 / darker;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\".concat(reI, \",\").concat(reI, \",\").concat(reI, \"\\\\)$\")),\n reRgbPercent = new RegExp(\"^rgb\\\\(\".concat(reP, \",\").concat(reP, \",\").concat(reP, \"\\\\)$\")),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\".concat(reI, \",\").concat(reI, \",\").concat(reI, \",\").concat(reN, \"\\\\)$\")),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\".concat(reP, \",\").concat(reP, \",\").concat(reP, \",\").concat(reN, \"\\\\)$\")),\n reHslPercent = new RegExp(\"^hsl\\\\(\".concat(reN, \",\").concat(reP, \",\").concat(reP, \"\\\\)$\")),\n reHslaPercent = new RegExp(\"^hsla\\\\(\".concat(reN, \",\").concat(reP, \",\").concat(reP, \",\").concat(reN, \"\\\\)$\"));\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\ndefine(Color, color$3, {\n copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\nfunction color$3(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb(m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba(m >> 12 & 0xf | m >> 8 & 0xf0, m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, ((m & 0xf) << 4 | m & 0xf) / 0xff) // #f000\n : null // invalid hex\n ) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color$3(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nfunction rgb$1(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Rgb, rgb$1, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n return \"#\".concat(hex(this.r)).concat(hex(this.g)).concat(hex(this.b));\n}\nfunction rgb_formatHex8() {\n return \"#\".concat(hex(this.r)).concat(hex(this.g)).concat(hex(this.b)).concat(hex((isNaN(this.opacity) ? 1 : this.opacity) * 255));\n}\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return \"\".concat(a === 1 ? \"rgb(\" : \"rgba(\").concat(clampi(this.r), \", \").concat(clampi(this.g), \", \").concat(clampi(this.b)).concat(a === 1 ? \")\" : \", \".concat(a, \")\"));\n}\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color$3(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\nfunction hsl$2(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Hsl, hsl$2, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return \"\".concat(a === 1 ? \"hsl(\" : \"hsla(\").concat(clamph(this.h), \", \").concat(clampt(this.s) * 100, \"%, \").concat(clampt(this.l) * 100, \"%\").concat(a === 1 ? \")\" : \", \".concat(a, \")\"));\n }\n}));\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n}\nconst radians$1 = Math.PI / 180;\nconst degrees$2 = 180 / Math.PI;\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn),\n x,\n z;\n if (r === g && g === b) x = z = y;else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\nfunction lab$1(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\nfunction Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Lab, lab$1, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(lrgb2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), lrgb2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z), this.opacity);\n }\n}));\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees$2;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\nfunction hcl$2(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians$1;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\ndefine(Hcl, hcl$2, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\nvar A = -0.14861,\n B$1 = +1.78277,\n C$1 = -0.29227,\n D$1 = -0.90649,\n E = +1.97294,\n ED = E * D$1,\n EB = E * B$1,\n BC_DA = B$1 * C$1 - D$1 * A;\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C$1 * bl) / D$1,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)),\n // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees$2 - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\nfunction cubehelix$2(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\nfunction Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Cubehelix, cubehelix$2, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians$1,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(255 * (l + a * (A * cosh + B$1 * sinh)), 255 * (l + a * (C$1 * cosh + D$1 * sinh)), 255 * (l + a * (E * cosh)), this.opacity);\n }\n}));\nfunction basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1,\n t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;\n}\nfunction basis$1(values) {\n var n = values.length - 1;\n return function (t) {\n var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\nfunction basisClosed(values) {\n var n = values.length;\n return function (t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\nvar constant$2 = x => () => x;\nfunction linear$1(a, d) {\n return function (t) {\n return a + t * d;\n };\n}\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n return Math.pow(a + t * b, y);\n };\n}\nfunction hue$1(a, b) {\n var d = b - a;\n return d ? linear$1(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$2(isNaN(a) ? b : a);\n}\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function (a, b) {\n return b - a ? exponential(a, b, y) : constant$2(isNaN(a) ? b : a);\n };\n}\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear$1(a, d) : constant$2(isNaN(a) ? b : a);\n}\nvar rgb = function rgbGamma(y) {\n var color = gamma(y);\n function rgb(start, end) {\n var r = color((start = rgb$1(start)).r, (end = rgb$1(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n rgb.gamma = rgbGamma;\n return rgb;\n}(1);\nfunction rgbSpline(spline) {\n return function (colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i,\n color;\n for (i = 0; i < n; ++i) {\n color = rgb$1(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function (t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\nvar rgbBasis = rgbSpline(basis$1);\nvar rgbBasisClosed = rgbSpline(basisClosed);\nfunction numberArray(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function (t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\nfunction array$3(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n for (i = 0; i < na; ++i) x[i] = interpolate$1$1(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n return function (t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\nfunction date$1(a, b) {\n var d = new Date();\n return a = +a, b = +b, function (t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\nfunction interpolateNumber(a, b) {\n return a = +a, b = +b, function (t) {\n return a * (1 - t) + b * t;\n };\n}\nfunction object(a, b) {\n var i = {},\n c = {},\n k;\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n for (k in b) {\n if (k in a) {\n i[k] = interpolate$1$1(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function (t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\nfunction zero$3(b) {\n return function () {\n return b;\n };\n}\nfunction one$1(b) {\n return function (t) {\n return b(t) + \"\";\n };\n}\nfunction string(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0,\n // scan index for next number in b\n am,\n // current match in a\n bm,\n // current match in b\n bs,\n // string preceding current number in b, if any\n i = -1,\n // index in s\n s = [],\n // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else {\n // interpolate non-matching numbers\n s[++i] = null;\n q.push({\n i: i,\n x: interpolateNumber(am, bm)\n });\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? q[0] ? one$1(q[0].x) : zero$3(b) : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\nfunction interpolate$1$1(a, b) {\n var t = typeof b,\n c;\n return b == null || t === \"boolean\" ? constant$2(b) : (t === \"number\" ? interpolateNumber : t === \"string\" ? (c = color$3(b)) ? (b = c, rgb) : string : b instanceof color$3 ? rgb : b instanceof Date ? date$1 : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : interpolateNumber)(a, b);\n}\nfunction discrete$1(range) {\n var n = range.length;\n return function (t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\nfunction hue(a, b) {\n var i = hue$1(+a, +b);\n return function (t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\nfunction interpolateRound(a, b) {\n return a = +a, b = +b, function (t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\nvar degrees$1 = 180 / Math.PI;\nvar identity$3 = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction decompose(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees$1,\n skewX: Math.atan(skewX) * degrees$1,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\nvar svgNode;\n\n/* eslint-disable no-undef */\nfunction parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity$3 : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\nfunction parseSvg(value) {\n if (value == null) return identity$3;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity$3;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({\n i: i - 4,\n x: interpolateNumber(xa, xb)\n }, {\n i: i - 2,\n x: interpolateNumber(ya, yb)\n });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path\n q.push({\n i: s.push(pop(s) + \"rotate(\", null, degParen) - 2,\n x: interpolateNumber(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({\n i: s.push(pop(s) + \"skewX(\", null, degParen) - 2,\n x: interpolateNumber(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: interpolateNumber(xa, xb)\n }, {\n i: i - 2,\n x: interpolateNumber(ya, yb)\n });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n return function (a, b) {\n var s = [],\n // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\nvar epsilon2$1 = 1e-12;\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\nvar zoom$1 = function zoomRho(rho, rho2, rho4) {\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0],\n uy0 = p0[1],\n w0 = p0[2],\n ux1 = p1[0],\n uy1 = p1[1],\n w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ā‰… u1.\n if (d2 < epsilon2$1) {\n S = Math.log(w1 / w0) / rho;\n i = function (t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(rho * t * S)];\n };\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function (t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / cosh(rho * s + r0)];\n };\n }\n i.duration = S * 1000 * rho / Math.SQRT2;\n return i;\n }\n zoom.rho = function (_) {\n var _1 = Math.max(1e-3, +_),\n _2 = _1 * _1,\n _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n return zoom;\n}(Math.SQRT2, 2, 4);\nfunction hsl(hue) {\n return function (start, end) {\n var h = hue((start = hsl$2(start)).h, (end = hsl$2(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n}\nvar hsl$1 = hsl(hue$1);\nvar hslLong = hsl(nogamma);\nfunction lab(start, end) {\n var l = nogamma((start = lab$1(start)).l, (end = lab$1(end)).l),\n a = nogamma(start.a, end.a),\n b = nogamma(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\nfunction hcl(hue) {\n return function (start, end) {\n var h = hue((start = hcl$2(start)).h, (end = hcl$2(end)).h),\n c = nogamma(start.c, end.c),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n}\nvar hcl$1 = hcl(hue$1);\nvar hclLong = hcl(nogamma);\nfunction cubehelix(hue) {\n return function cubehelixGamma(y) {\n y = +y;\n function cubehelix(start, end) {\n var h = hue((start = cubehelix$2(start)).h, (end = cubehelix$2(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n cubehelix.gamma = cubehelixGamma;\n return cubehelix;\n }(1);\n}\nvar cubehelix$1 = cubehelix(hue$1);\nvar cubehelixLong = cubehelix(nogamma);\nfunction piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = interpolate$1$1;\n var i = 0,\n n = values.length - 1,\n v = values[0],\n I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function (t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\nfunction quantize$2(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\nvar $$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n interpolate: interpolate$1$1,\n interpolateArray: array$3,\n interpolateBasis: basis$1,\n interpolateBasisClosed: basisClosed,\n interpolateCubehelix: cubehelix$1,\n interpolateCubehelixLong: cubehelixLong,\n interpolateDate: date$1,\n interpolateDiscrete: discrete$1,\n interpolateHcl: hcl$1,\n interpolateHclLong: hclLong,\n interpolateHsl: hsl$1,\n interpolateHslLong: hslLong,\n interpolateHue: hue,\n interpolateLab: lab,\n interpolateNumber: interpolateNumber,\n interpolateNumberArray: numberArray,\n interpolateObject: object,\n interpolateRgb: rgb,\n interpolateRgbBasis: rgbBasis,\n interpolateRgbBasisClosed: rgbBasisClosed,\n interpolateRound: interpolateRound,\n interpolateString: string,\n interpolateTransformCss: interpolateTransformCss,\n interpolateTransformSvg: interpolateTransformSvg,\n interpolateZoom: zoom$1,\n piecewise: piecewise,\n quantize: quantize$2\n});\nfunction constants$1(x) {\n return function () {\n return x;\n };\n}\nfunction number$5(x) {\n return +x;\n}\nvar unit = [0, 1];\nfunction identity$2(x) {\n return x;\n}\nfunction normalize$2(a, b) {\n return (b -= a = +a) ? function (x) {\n return (x - a) / b;\n } : constants$1(isNaN(b) ? NaN : 0.5);\n}\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function (x) {\n return Math.max(a, Math.min(b, x));\n };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0],\n d1 = domain[1],\n r0 = range[0],\n r1 = range[1];\n if (d1 < d0) d0 = normalize$2(d1, d0), r0 = interpolate(r1, r0);else d0 = normalize$2(d0, d1), r0 = interpolate(r0, r1);\n return function (x) {\n return r0(d0(x));\n };\n}\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++i < j) {\n d[i] = normalize$2(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n return function (x) {\n var i = bisect$1(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\nfunction copy$2(source, target) {\n return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown());\n}\nfunction transformer$3() {\n var domain = unit,\n range = unit,\n interpolate = interpolate$1$1,\n transform,\n untransform,\n unknown,\n clamp = identity$2,\n piecewise,\n output,\n input;\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity$2) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n scale.invert = function (y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_, number$5), rescale()) : domain.slice();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n scale.rangeRound = function (_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = _ ? true : identity$2, rescale()) : clamp !== identity$2;\n };\n scale.interpolate = function (_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\nfunction continuous$1() {\n return transformer$3()(identity$2, identity$2);\n}\nfunction tickFormat$1(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\":\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\":\n {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\":\n {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format$3(specifier);\n}\nfunction linearish(scale) {\n var domain = scale.domain;\n scale.ticks = function (count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n scale.tickFormat = function (count, specifier) {\n var d = domain();\n return tickFormat$1(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n scale.nice = function (count) {\n if (count == null) count = 10;\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start;\n d[i1] = stop;\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n return scale;\n };\n return scale;\n}\nfunction linear() {\n var scale = continuous$1();\n scale.copy = function () {\n return copy$2(scale, linear());\n };\n initRange.apply(scale, arguments);\n return linearish(scale);\n}\nfunction identity$1(domain) {\n var unknown;\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n scale.invert = scale;\n scale.domain = scale.range = function (_) {\n return arguments.length ? (domain = Array.from(_, number$5), scale) : domain.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return identity$1(domain).unknown(unknown);\n };\n domain = arguments.length ? Array.from(domain, number$5) : [0, 1];\n return linearish(scale);\n}\nfunction nice$1(domain, interval) {\n domain = domain.slice();\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\nfunction transformLog(x) {\n return Math.log(x);\n}\nfunction transformExp(x) {\n return Math.exp(x);\n}\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\nfunction powp(base) {\n return base === 10 ? pow10 : base === Math.E ? Math.exp : x => Math.pow(base, x);\n}\nfunction logp(base) {\n return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), x => Math.log(x) / base);\n}\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\nfunction loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n scale.base = function (_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n if (r) [u, v] = [v, u];\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format$3(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n scale.nice = () => {\n return domain(nice$1(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n return scale;\n}\nfunction log$2() {\n const scale = loggish(transformer$3()).domain([1, 10]);\n scale.copy = () => copy$2(scale, log$2()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\nfunction transformSymlog(c) {\n return function (x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\nfunction transformSymexp(c) {\n return function (x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\nfunction symlogish(transform) {\n var c = 1,\n scale = transform(transformSymlog(c), transformSymexp(c));\n scale.constant = function (_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n return linearish(scale);\n}\nfunction symlog() {\n var scale = symlogish(transformer$3());\n scale.copy = function () {\n return copy$2(scale, symlog()).constant(scale.constant());\n };\n return initRange.apply(scale, arguments);\n}\nfunction transformPow(exponent) {\n return function (x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\nfunction powish(transform) {\n var scale = transform(identity$2, identity$2),\n exponent = 1;\n function rescale() {\n return exponent === 1 ? transform(identity$2, identity$2) : exponent === 0.5 ? transform(transformSqrt, transformSquare) : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n scale.exponent = function (_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n return linearish(scale);\n}\nfunction pow$2() {\n var scale = powish(transformer$3());\n scale.copy = function () {\n return copy$2(scale, pow$2()).exponent(scale.exponent());\n };\n initRange.apply(scale, arguments);\n return scale;\n}\nfunction sqrt$2() {\n return pow$2.apply(null, arguments).exponent(0.5);\n}\nfunction quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n function rescale() {\n var i = 0,\n n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = quantileSorted(domain, i / n);\n return scale;\n }\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect$1(thresholds, x)];\n }\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [i > 0 ? thresholds[i - 1] : domain[0], i < thresholds.length ? thresholds[i] : domain[domain.length - 1]];\n };\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending$2);\n return rescale();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.quantiles = function () {\n return thresholds.slice();\n };\n scale.copy = function () {\n return quantile().domain(domain).range(range).unknown(unknown);\n };\n return initRange.apply(scale, arguments);\n}\nfunction quantize$1() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n function scale(x) {\n return x != null && x <= x ? range[bisect$1(domain, x, 0, n)] : unknown;\n }\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n scale.domain = function (_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n scale.range = function (_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : i < 1 ? [x0, domain[0]] : i >= n ? [domain[n - 1], x1] : [domain[i - 1], domain[i]];\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n scale.thresholds = function () {\n return domain.slice();\n };\n scale.copy = function () {\n return quantize$1().domain([x0, x1]).range(range).unknown(unknown);\n };\n return initRange.apply(linearish(scale), arguments);\n}\nfunction threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n function scale(x) {\n return x != null && x <= x ? range[bisect$1(domain, x, 0, n)] : unknown;\n }\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n scale.copy = function () {\n return threshold().domain(domain).range(range).unknown(unknown);\n };\n return initRange.apply(scale, arguments);\n}\nfunction date(t) {\n return new Date(t);\n}\nfunction number$4(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\nfunction calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous$1(),\n invert = scale.invert,\n domain = scale.domain;\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date);\n }\n scale.invert = function (y) {\n return new Date(invert(y));\n };\n scale.domain = function (_) {\n return arguments.length ? domain(Array.from(_, number$4)) : domain().map(date);\n };\n scale.ticks = function (interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n scale.tickFormat = function (count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n scale.nice = function (interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice$1(d, interval)) : scale;\n };\n scale.copy = function () {\n return copy$2(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n return scale;\n}\nfunction time$1() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute, second, timeFormat$2).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\nfunction utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, utcFormat$1).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\nfunction transformer$2() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity$2,\n clamp = false,\n unknown;\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n scale.domain = function (_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n function range(interpolate) {\n return function (_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n scale.range = range(interpolate$1$1);\n scale.rangeRound = range(interpolateRound);\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\nfunction copy$1(source, target) {\n return target.domain(source.domain()).interpolator(source.interpolator()).clamp(source.clamp()).unknown(source.unknown());\n}\nfunction sequential() {\n var scale = linearish(transformer$2()(identity$2));\n scale.copy = function () {\n return copy$1(scale, sequential());\n };\n return initInterpolator.apply(scale, arguments);\n}\nfunction sequentialLog() {\n var scale = loggish(transformer$2()).domain([1, 10]);\n scale.copy = function () {\n return copy$1(scale, sequentialLog()).base(scale.base());\n };\n return initInterpolator.apply(scale, arguments);\n}\nfunction sequentialSymlog() {\n var scale = symlogish(transformer$2());\n scale.copy = function () {\n return copy$1(scale, sequentialSymlog()).constant(scale.constant());\n };\n return initInterpolator.apply(scale, arguments);\n}\nfunction sequentialPow() {\n var scale = powish(transformer$2());\n scale.copy = function () {\n return copy$1(scale, sequentialPow()).exponent(scale.exponent());\n };\n return initInterpolator.apply(scale, arguments);\n}\nfunction sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\nfunction transformer$1() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity$2,\n transform,\n clamp = false,\n unknown;\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n scale.domain = function (_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n function range(interpolate) {\n return function (_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n scale.range = range(interpolate$1$1);\n scale.rangeRound = range(interpolateRound);\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n return function (t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\nfunction diverging() {\n var scale = linearish(transformer$1()(identity$2));\n scale.copy = function () {\n return copy$1(scale, diverging());\n };\n return initInterpolator.apply(scale, arguments);\n}\nfunction divergingLog() {\n var scale = loggish(transformer$1()).domain([0.1, 1, 10]);\n scale.copy = function () {\n return copy$1(scale, divergingLog()).base(scale.base());\n };\n return initInterpolator.apply(scale, arguments);\n}\nfunction divergingSymlog() {\n var scale = symlogish(transformer$1());\n scale.copy = function () {\n return copy$1(scale, divergingSymlog()).constant(scale.constant());\n };\n return initInterpolator.apply(scale, arguments);\n}\nfunction divergingPow() {\n var scale = powish(transformer$1());\n scale.copy = function () {\n return copy$1(scale, divergingPow()).exponent(scale.exponent());\n };\n return initInterpolator.apply(scale, arguments);\n}\nfunction divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\nfunction bandSpace(count, paddingInner, paddingOuter) {\n const space = count - paddingInner + paddingOuter * 2;\n return count ? space > 0 ? space : 1 : 0;\n}\nconst Identity = 'identity';\nconst Linear = 'linear';\nconst Log = 'log';\nconst Pow = 'pow';\nconst Sqrt = 'sqrt';\nconst Symlog = 'symlog';\nconst Time = 'time';\nconst UTC = 'utc';\nconst Sequential = 'sequential';\nconst Diverging = 'diverging';\nconst Quantile = 'quantile';\nconst Quantize = 'quantize';\nconst Threshold = 'threshold';\nconst Ordinal = 'ordinal';\nconst Point = 'point';\nconst Band = 'band';\nconst BinOrdinal = 'bin-ordinal';\n\n// categories\nconst Continuous = 'continuous';\nconst Discrete$1 = 'discrete';\nconst Discretizing = 'discretizing';\nconst Interpolating = 'interpolating';\nconst Temporal = 'temporal';\nfunction invertRange(scale) {\n return function (_) {\n let lo = _[0],\n hi = _[1],\n t;\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n return [scale.invert(lo), scale.invert(hi)];\n };\n}\nfunction invertRangeExtent(scale) {\n return function (_) {\n const range = scale.range();\n let lo = _[0],\n hi = _[1],\n min = -1,\n max,\n t,\n i,\n n;\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n for (i = 0, n = range.length; i < n; ++i) {\n if (range[i] >= lo && range[i] <= hi) {\n if (min < 0) min = i;\n max = i;\n }\n }\n if (min < 0) return undefined;\n lo = scale.invertExtent(range[min]);\n hi = scale.invertExtent(range[max]);\n return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n };\n}\nfunction band() {\n const scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range;\n let range$1 = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n delete scale.unknown;\n function rescale() {\n const n = domain().length,\n reverse = range$1[1] < range$1[0],\n stop = range$1[1 - reverse],\n space = bandSpace(n, paddingInner, paddingOuter);\n let start = range$1[reverse - 0];\n step = (stop - start) / (space || 1);\n if (round) {\n step = Math.floor(step);\n }\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) {\n start = Math.round(start);\n bandwidth = Math.round(bandwidth);\n }\n const values = range$5(n).map(i => start + step * i);\n return ordinalRange(reverse ? values.reverse() : values);\n }\n scale.domain = function (_) {\n if (arguments.length) {\n domain(_);\n return rescale();\n } else {\n return domain();\n }\n };\n scale.range = function (_) {\n if (arguments.length) {\n range$1 = [+_[0], +_[1]];\n return rescale();\n } else {\n return range$1.slice();\n }\n };\n scale.rangeRound = function (_) {\n range$1 = [+_[0], +_[1]];\n round = true;\n return rescale();\n };\n scale.bandwidth = function () {\n return bandwidth;\n };\n scale.step = function () {\n return step;\n };\n scale.round = function (_) {\n if (arguments.length) {\n round = !!_;\n return rescale();\n } else {\n return round;\n }\n };\n scale.padding = function (_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n paddingInner = paddingOuter;\n return rescale();\n } else {\n return paddingInner;\n }\n };\n scale.paddingInner = function (_) {\n if (arguments.length) {\n paddingInner = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingInner;\n }\n };\n scale.paddingOuter = function (_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingOuter;\n }\n };\n scale.align = function (_) {\n if (arguments.length) {\n align = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return align;\n }\n };\n scale.invertRange = function (_) {\n // bail if range has null or undefined values\n if (_[0] == null || _[1] == null) return;\n const reverse = range$1[1] < range$1[0],\n values = reverse ? ordinalRange().reverse() : ordinalRange(),\n n = values.length - 1;\n let lo = +_[0],\n hi = +_[1],\n a,\n b,\n t;\n\n // bail if either range endpoint is invalid\n if (lo !== lo || hi !== hi) return;\n\n // order range inputs, bail if outside of scale range\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n if (hi < values[0] || lo > range$1[1 - reverse]) return;\n\n // binary search to index into scale range\n a = Math.max(0, bisectRight$1(values, lo) - 1);\n b = lo === hi ? a : bisectRight$1(values, hi) - 1;\n\n // increment index a if lo is within padding gap\n if (lo - values[a] > bandwidth + 1e-10) ++a;\n if (reverse) {\n // map + swap\n t = a;\n a = n - b;\n b = n - t;\n }\n return a > b ? undefined : domain().slice(a, b + 1);\n };\n scale.invert = function (_) {\n const value = scale.invertRange([_, _]);\n return value ? value[0] : value;\n };\n scale.copy = function () {\n return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n return rescale();\n}\nfunction pointish(scale) {\n const copy = scale.copy;\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n scale.copy = function () {\n return pointish(copy());\n };\n return scale;\n}\nfunction point$3() {\n return pointish(band().paddingInner(1));\n}\nvar map = Array.prototype.map;\nfunction numbers(_) {\n return map.call(_, toNumber);\n}\nconst slice$2 = Array.prototype.slice;\nfunction scaleBinOrdinal() {\n let domain = [],\n range = [];\n function scale(x) {\n return x == null || x !== x ? undefined : range[(bisect$1(domain, x) - 1) % range.length];\n }\n scale.domain = function (_) {\n if (arguments.length) {\n domain = numbers(_);\n return scale;\n } else {\n return domain.slice();\n }\n };\n scale.range = function (_) {\n if (arguments.length) {\n range = slice$2.call(_);\n return scale;\n } else {\n return range.slice();\n }\n };\n scale.tickFormat = function (count, specifier) {\n return tickFormat$1(domain[0], peek$1(domain), count == null ? 10 : count, specifier);\n };\n scale.copy = function () {\n return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n };\n return scale;\n}\n\n/** Private scale registry: should not be exported */\nconst scales = new Map();\nconst VEGA_SCALE = Symbol('vega_scale');\nfunction registerScale(scale) {\n scale[VEGA_SCALE] = true;\n return scale;\n}\n\n/**\n * Return true if object was created by a constructor from the vega-scale `scale` function.\n */\nfunction isRegisteredScale(scale) {\n return scale && scale[VEGA_SCALE] === true;\n}\n\n/**\n * Augment scales with their type and needed inverse methods.\n */\nfunction create$2(type, constructor, metadata) {\n const ctr = function scale() {\n const s = constructor();\n if (!s.invertRange) {\n s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n }\n s.type = type;\n return registerScale(s);\n };\n ctr.metadata = toSet(array$5(metadata));\n return ctr;\n}\n\n/**\n * Registry function for adding and accessing scale constructor functions.\n * The *type* argument is a String indicating the name of the scale type.\n *\n * If the *scale* argument is not specified, this method returns the matching scale constructor in the registry, or `null` if not found.\n * If the *scale* argument is provided, it must be a scale constructor function to add to the registry under the given *type* name.\n * The *metadata* argument provides additional information to guide appropriate use of scales within Vega.\n *\n * *metadata* can be either a string or string array. The valid string values are:\n * - `\"continuous\"` - the scale is defined over a continuous-valued domain.\n * - `\"discrete\"` - the scale is defined over a discrete domain and range.\n * - `\"discretizing\"` - the scale discretizes a continuous domain to a discrete range.\n * - `\"interpolating\"` - the scale range is defined using a color interpolator.\n * - `\"log\"` - the scale performs a logarithmic transform of the continuous domain.\n * - `\"temporal\"` - the scale domain is defined over date-time values.\n */\nfunction scale$4(type, scale, metadata) {\n if (arguments.length > 1) {\n scales.set(type, create$2(type, scale, metadata));\n return this;\n } else {\n return isValidScaleType(type) ? scales.get(type) : undefined;\n }\n}\n\n// identity scale\nscale$4(Identity, identity$1);\n\n// continuous scales\nscale$4(Linear, linear, Continuous);\nscale$4(Log, log$2, [Continuous, Log]);\nscale$4(Pow, pow$2, Continuous);\nscale$4(Sqrt, sqrt$2, Continuous);\nscale$4(Symlog, symlog, Continuous);\nscale$4(Time, time$1, [Continuous, Temporal]);\nscale$4(UTC, utcTime, [Continuous, Temporal]);\n\n// sequential scales\nscale$4(Sequential, sequential, [Continuous, Interpolating]); // backwards compat\nscale$4(\"\".concat(Sequential, \"-\").concat(Linear), sequential, [Continuous, Interpolating]);\nscale$4(\"\".concat(Sequential, \"-\").concat(Log), sequentialLog, [Continuous, Interpolating, Log]);\nscale$4(\"\".concat(Sequential, \"-\").concat(Pow), sequentialPow, [Continuous, Interpolating]);\nscale$4(\"\".concat(Sequential, \"-\").concat(Sqrt), sequentialSqrt, [Continuous, Interpolating]);\nscale$4(\"\".concat(Sequential, \"-\").concat(Symlog), sequentialSymlog, [Continuous, Interpolating]);\n\n// diverging scales\nscale$4(\"\".concat(Diverging, \"-\").concat(Linear), diverging, [Continuous, Interpolating]);\nscale$4(\"\".concat(Diverging, \"-\").concat(Log), divergingLog, [Continuous, Interpolating, Log]);\nscale$4(\"\".concat(Diverging, \"-\").concat(Pow), divergingPow, [Continuous, Interpolating]);\nscale$4(\"\".concat(Diverging, \"-\").concat(Sqrt), divergingSqrt, [Continuous, Interpolating]);\nscale$4(\"\".concat(Diverging, \"-\").concat(Symlog), divergingSymlog, [Continuous, Interpolating]);\n\n// discretizing scales\nscale$4(Quantile, quantile, [Discretizing, Quantile]);\nscale$4(Quantize, quantize$1, Discretizing);\nscale$4(Threshold, threshold, Discretizing);\n\n// discrete scales\nscale$4(BinOrdinal, scaleBinOrdinal, [Discrete$1, Discretizing]);\nscale$4(Ordinal, ordinal, Discrete$1);\nscale$4(Band, band, Discrete$1);\nscale$4(Point, point$3, Discrete$1);\nfunction isValidScaleType(type) {\n return scales.has(type);\n}\nfunction hasType(key, type) {\n const s = scales.get(key);\n return s && s.metadata[type];\n}\nfunction isContinuous$1(key) {\n return hasType(key, Continuous);\n}\nfunction isDiscrete$2(key) {\n return hasType(key, Discrete$1);\n}\nfunction isDiscretizing$1(key) {\n return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n return hasType(key, Log);\n}\nfunction isTemporal(key) {\n return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n return hasType(key, Interpolating);\n}\nfunction isQuantile$1(key) {\n return hasType(key, Quantile);\n}\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange$1(interpolator, range) {\n const start = range[0],\n span = peek$1(range) - start;\n return function (i) {\n return interpolator(start + i * span);\n };\n}\nfunction interpolateColors(colors, type, gamma) {\n return piecewise(interpolate$1(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n const samples = new Array(count),\n n = count + 1;\n for (let i = 0; i < count;) samples[i] = interpolator(++i / n);\n return samples;\n}\nfunction scaleFraction(scale$1, min, max) {\n const delta = max - min;\n let i, t, s;\n if (!delta || !Number.isFinite(delta)) {\n return constant$5(0.5);\n } else {\n i = (t = scale$1.type).indexOf('-');\n t = i < 0 ? t : t.slice(i + 1);\n s = scale$4(t)().domain([min, max]).range([0, 1]);\n scaleProps.forEach(m => scale$1[m] ? s[m](scale$1[m]()) : 0);\n return s;\n }\n}\nfunction interpolate$1(type, gamma) {\n const interp = $$1[method(type)];\n return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\nfunction method(type) {\n return 'interpolate' + type.toLowerCase().split('-').map(s => s[0].toUpperCase() + s.slice(1)).join('');\n}\nconst continuous = {\n blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nconst discrete = {\n category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\nfunction colors(palette) {\n const n = palette.length / 6 | 0,\n c = new Array(n);\n for (let i = 0; i < n;) {\n c[i] = '#' + palette.slice(i * 6, ++i * 6);\n }\n return c;\n}\nfunction apply$1(_, f) {\n for (const k in _) scheme$1(k, f(_[k]));\n}\nconst schemes = {};\napply$1(discrete, colors);\napply$1(continuous, _ => interpolateColors(colors(_)));\nfunction scheme$1(name, scheme) {\n name = name && name.toLowerCase();\n if (arguments.length > 1) {\n schemes[name] = scheme;\n return this;\n } else {\n return schemes[name];\n }\n}\nconst SymbolLegend = 'symbol';\nconst DiscreteLegend = 'discrete';\nconst GradientLegend = 'gradient';\nconst defaultFormatter = value => isArray(value) ? value.map(v => String(v)) : String(value);\nconst ascending$1 = (a, b) => a[1] - b[1];\nconst descending$1 = (a, b) => b[1] - a[1];\n\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\nfunction tickCount(scale, count, minStep) {\n let step;\n if (isNumber$1(count)) {\n if (scale.bins) {\n count = Math.max(count, scale.bins.length);\n }\n if (minStep != null) {\n count = Math.min(count, Math.floor(span(scale.domain()) / minStep || 1));\n }\n }\n if (isObject(count)) {\n step = count.step;\n count = count.interval;\n }\n if (isString(count)) {\n count = scale.type === Time ? timeInterval(count) : scale.type == UTC ? utcInterval(count) : error('Only time and utc scales accept interval strings.');\n if (step) count = count.every(step);\n }\n return count;\n}\n\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\nfunction validTicks(scale, ticks, count) {\n let range = scale.range(),\n lo = range[0],\n hi = peek$1(range),\n cmp = ascending$1;\n if (lo > hi) {\n range = hi;\n hi = lo;\n lo = range;\n cmp = descending$1;\n }\n lo = Math.floor(lo);\n hi = Math.ceil(hi);\n\n // filter ticks to valid values within the range\n // additionally sort ticks in range order (#2579)\n ticks = ticks.map(v => [v, scale(v)]).filter(_ => lo <= _[1] && _[1] <= hi).sort(cmp).map(_ => _[0]);\n if (count > 0 && ticks.length > 1) {\n const endpoints = [ticks[0], peek$1(ticks)];\n while (ticks.length > count && ticks.length >= 3) {\n ticks = ticks.filter((_, i) => !(i % 2));\n }\n if (ticks.length < 3) {\n ticks = endpoints;\n }\n }\n return ticks;\n}\n\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nfunction tickValues(scale, count) {\n return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n * specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n * time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n const type = scale.type;\n let format = defaultFormatter;\n if (type === Time || formatType === Time) {\n format = locale.timeFormat(specifier);\n } else if (type === UTC || formatType === UTC) {\n format = locale.utcFormat(specifier);\n } else if (isLogarithmic(type)) {\n const varfmt = locale.formatFloat(specifier);\n if (noSkip || scale.bins) {\n format = varfmt;\n } else {\n const test = tickLog(scale, count, false);\n format = _ => test(_) ? varfmt(_) : '';\n }\n } else if (scale.tickFormat) {\n // if d3 scale has tickFormat, it must be continuous\n const d = scale.domain();\n format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n } else if (specifier) {\n format = locale.format(specifier);\n }\n return format;\n}\nfunction tickLog(scale, count, values) {\n const ticks = tickValues(scale, count),\n base = scale.base(),\n logb = Math.log(base),\n k = Math.max(1, base * count / ticks.length);\n\n // apply d3-scale's log format filter criteria\n const test = d => {\n let i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n if (i * base < base - 0.5) i *= base;\n return i <= k;\n };\n return values ? ticks.filter(test) : test;\n}\nconst symbols$2 = {\n [Quantile]: 'quantiles',\n [Quantize]: 'thresholds',\n [Threshold]: 'domain'\n};\nconst formats = {\n [Quantile]: 'quantiles',\n [Quantize]: 'domain'\n};\nfunction labelValues(scale, count) {\n return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols$2[scale.type] ? thresholdValues(scale[symbols$2[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n const _ = scale[formats[scale.type]](),\n n = _.length;\n let d = n > 1 ? _[1] - _[0] : _[0],\n i;\n for (i = 1; i < n; ++i) {\n d = Math.min(d, _[i] - _[i - 1]);\n }\n\n // tickCount = 3 ticks times 10 for increased resolution\n return locale.formatSpan(0, d, 3 * 10, specifier);\n}\nfunction thresholdValues(thresholds) {\n const values = [-Infinity].concat(thresholds);\n values.max = +Infinity;\n return values;\n}\nfunction binValues(bins) {\n const values = bins.slice(0, -1);\n values.max = peek$1(bins);\n return values;\n}\nconst isDiscreteRange = scale => symbols$2[scale.type] || scale.bins;\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n const format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\nconst formatRange = format => (value, index, array) => {\n const limit = get$4(array[index + 1], get$4(array.max, +Infinity)),\n lo = formatValue$2(value, format),\n hi = formatValue$2(limit, format);\n return lo && hi ? lo + ' \\u2013 ' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n};\nconst get$4 = (value, dflt) => value != null ? value : dflt;\nconst formatDiscrete = format => (value, index) => index ? format(value) : null;\nconst formatPoint = format => value => format(value);\nconst formatValue$2 = (value, format) => Number.isFinite(value) ? format(value) : null;\nfunction labelFraction(scale) {\n const domain = scale.domain(),\n count = domain.length - 1;\n let lo = +domain[0],\n hi = +peek$1(domain),\n span = hi - lo;\n if (scale.type === Threshold) {\n const adjust = count ? span / count : 0.1;\n lo -= adjust;\n hi += adjust;\n span = hi - lo;\n }\n return value => (value - lo) / span;\n}\nfunction format$1(locale, scale, specifier, formatType) {\n const type = formatType || scale.type;\n\n // replace abbreviated time specifiers to improve screen reader experience\n if (isString(specifier) && isTemporal(type)) {\n specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n }\n return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\nfunction domainCaption(locale, scale, opt) {\n opt = opt || {};\n const max = Math.max(3, opt.maxlen || 7),\n fmt = format$1(locale, scale, opt.format, opt.formatType);\n\n // if scale breaks domain into bins, describe boundaries\n if (isDiscretizing$1(scale.type)) {\n const v = labelValues(scale).slice(1).map(fmt),\n n = v.length;\n return \"\".concat(n, \" boundar\").concat(n === 1 ? 'y' : 'ies', \": \").concat(v.join(', '));\n }\n\n // if scale domain is discrete, list values\n else if (isDiscrete$2(scale.type)) {\n const d = scale.domain(),\n n = d.length,\n v = n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n return \"\".concat(n, \" value\").concat(n === 1 ? '' : 's', \": \").concat(v);\n }\n\n // if scale domain is continuous, describe value range\n else {\n const d = scale.domain();\n return \"values from \".concat(fmt(d[0]), \" to \").concat(fmt(peek$1(d)));\n }\n}\nlet gradient_id = 0;\nfunction resetSVGGradientId() {\n gradient_id = 0;\n}\nconst patternPrefix = 'p_';\nfunction isGradient(value) {\n return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n const type = g.gradient;\n let id = g.id,\n prefix = type === 'radial' ? patternPrefix : '';\n\n // check id, assign default values as needed\n if (!id) {\n id = g.id = 'gradient_' + gradient_id++;\n if (type === 'radial') {\n g.x1 = get$3(g.x1, 0.5);\n g.y1 = get$3(g.y1, 0.5);\n g.r1 = get$3(g.r1, 0);\n g.x2 = get$3(g.x2, 0.5);\n g.y2 = get$3(g.y2, 0.5);\n g.r2 = get$3(g.r2, 0.5);\n prefix = patternPrefix;\n } else {\n g.x1 = get$3(g.x1, 0);\n g.y1 = get$3(g.y1, 0);\n g.x2 = get$3(g.x2, 1);\n g.y2 = get$3(g.y2, 0);\n }\n }\n\n // register definition\n defs[id] = g;\n\n // return url reference\n return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\nfunction get$3(val, def) {\n return val != null ? val : def;\n}\nfunction Gradient$1(p0, p1) {\n var stops = [],\n gradient;\n return gradient = {\n gradient: 'linear',\n x1: p0 ? p0[0] : 0,\n y1: p0 ? p0[1] : 0,\n x2: p1 ? p1[0] : 1,\n y2: p1 ? p1[1] : 0,\n stops: stops,\n stop: function (offset, color) {\n stops.push({\n offset: offset,\n color: color\n });\n return gradient;\n }\n };\n}\nconst lookup$4 = {\n 'basis': {\n curve: curveBasis\n },\n 'basis-closed': {\n curve: curveBasisClosed\n },\n 'basis-open': {\n curve: curveBasisOpen\n },\n 'bundle': {\n curve: curveBundle,\n tension: 'beta',\n value: 0.85\n },\n 'cardinal': {\n curve: curveCardinal,\n tension: 'tension',\n value: 0\n },\n 'cardinal-open': {\n curve: curveCardinalOpen,\n tension: 'tension',\n value: 0\n },\n 'cardinal-closed': {\n curve: curveCardinalClosed,\n tension: 'tension',\n value: 0\n },\n 'catmull-rom': {\n curve: curveCatmullRom,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-closed': {\n curve: curveCatmullRomClosed,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-open': {\n curve: curveCatmullRomOpen,\n tension: 'alpha',\n value: 0.5\n },\n 'linear': {\n curve: curveLinear\n },\n 'linear-closed': {\n curve: curveLinearClosed\n },\n 'monotone': {\n horizontal: monotoneY,\n vertical: monotoneX\n },\n 'natural': {\n curve: curveNatural\n },\n 'step': {\n curve: curveStep\n },\n 'step-after': {\n curve: stepAfter\n },\n 'step-before': {\n curve: stepBefore\n }\n};\nfunction curves(type, orientation, tension) {\n var entry = has$1(lookup$4, type) && lookup$4[type],\n curve = null;\n if (entry) {\n curve = entry.curve || entry[orientation || 'vertical'];\n if (entry.tension && tension != null) {\n curve = curve[entry.tension](tension);\n }\n }\n return curve;\n}\nconst paramCounts = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n z: 0,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n};\nconst commandPattern = /[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi;\nconst numberPattern = /^[+-]?(([0-9]*\\.[0-9]+)|([0-9]+\\.)|([0-9]+))([eE][+-]?[0-9]+)?/;\nconst spacePattern = /^((\\s+,?\\s*)|(,\\s*))/;\nconst flagPattern = /^[01]/;\nfunction parse$3(path) {\n const commands = [];\n const matches = path.match(commandPattern) || [];\n matches.forEach(str => {\n let cmd = str[0];\n const type = cmd.toLowerCase();\n\n // parse parameters\n const paramCount = paramCounts[type];\n const params = parseParams(type, paramCount, str.slice(1).trim());\n const count = params.length;\n\n // error checking based on parameter count\n if (count < paramCount || count && count % paramCount !== 0) {\n throw Error('Invalid SVG path, incorrect parameter count');\n }\n\n // register the command\n commands.push([cmd, ...params.slice(0, paramCount)]);\n\n // exit now if we're done, also handles zero-param 'z'\n if (count === paramCount) {\n return;\n }\n\n // handle implicit line-to\n if (type === 'm') {\n cmd = cmd === 'M' ? 'L' : 'l';\n }\n\n // repeat command when given extended param list\n for (let i = paramCount; i < count; i += paramCount) {\n commands.push([cmd, ...params.slice(i, i + paramCount)]);\n }\n });\n return commands;\n}\nfunction parseParams(type, paramCount, segment) {\n const params = [];\n for (let index = 0; paramCount && index < segment.length;) {\n for (let i = 0; i < paramCount; ++i) {\n const pattern = type === 'a' && (i === 3 || i === 4) ? flagPattern : numberPattern;\n const match = segment.slice(index).match(pattern);\n if (match === null) {\n throw Error('Invalid SVG path, incorrect parameter type');\n }\n index += match[0].length;\n params.push(+match[0]);\n const ws = segment.slice(index).match(spacePattern);\n if (ws !== null) {\n index += ws[0].length;\n }\n }\n }\n return params;\n}\nconst DegToRad = Math.PI / 180;\nconst Epsilon = 1e-14;\nconst HalfPi = Math.PI / 2;\nconst Tau = Math.PI * 2;\nconst HalfSqrt3 = Math.sqrt(3) / 2;\nvar segmentCache = {};\nvar bezierCache = {};\nvar join$1 = [].join;\n\n// Copied from Inkscape svgtopdf, thanks!\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n const key = join$1.call(arguments);\n if (segmentCache[key]) {\n return segmentCache[key];\n }\n const th = rotateX * DegToRad;\n const sin_th = Math.sin(th);\n const cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n const px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n const py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n let pl = px * px / (rx * rx) + py * py / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n const a00 = cos_th / rx;\n const a01 = sin_th / rx;\n const a10 = -sin_th / ry;\n const a11 = cos_th / ry;\n const x0 = a00 * ox + a01 * oy;\n const y0 = a10 * ox + a11 * oy;\n const x1 = a00 * x + a01 * y;\n const y1 = a10 * x + a11 * y;\n const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n let sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n let sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n const th0 = Math.atan2(y0 - yc, x0 - xc);\n const th1 = Math.atan2(y1 - yc, x1 - xc);\n let th_arc = th1 - th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += Tau;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= Tau;\n }\n const segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n const result = [];\n for (let i = 0; i < segs; ++i) {\n const th2 = th0 + i * th_arc / segs;\n const th3 = th0 + (i + 1) * th_arc / segs;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n return segmentCache[key] = result;\n}\nfunction bezier(params) {\n const key = join$1.call(params);\n if (bezierCache[key]) {\n return bezierCache[key];\n }\n var cx = params[0],\n cy = params[1],\n th0 = params[2],\n th1 = params[3],\n rx = params[4],\n ry = params[5],\n sin_th = params[6],\n cos_th = params[7];\n const a00 = cos_th * rx;\n const a01 = -sin_th * ry;\n const a10 = sin_th * rx;\n const a11 = cos_th * ry;\n const cos_th0 = Math.cos(th0);\n const sin_th0 = Math.sin(th0);\n const cos_th1 = Math.cos(th1);\n const sin_th1 = Math.sin(th1);\n const th_half = 0.5 * (th1 - th0);\n const sin_th_h2 = Math.sin(th_half * 0.5);\n const t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n const x1 = cx + cos_th0 - t * sin_th0;\n const y1 = cy + sin_th0 + t * cos_th0;\n const x3 = cx + cos_th1;\n const y3 = cy + sin_th1;\n const x2 = x3 + t * sin_th1;\n const y2 = y3 - t * cos_th1;\n return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\nfunction scale$1$1(current, sX, sY) {\n const c = temp[0] = current[0];\n if (c === 'a' || c === 'A') {\n temp[1] = sX * current[1];\n temp[2] = sY * current[2];\n temp[3] = current[3];\n temp[4] = current[4];\n temp[5] = current[5];\n temp[6] = sX * current[6];\n temp[7] = sY * current[7];\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * current[1];\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * current[1];\n } else {\n for (var i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n }\n }\n return temp;\n}\nfunction pathRender(context, path, l, t, sX, sY) {\n var current,\n // current instruction\n previous = null,\n x = 0,\n // current x\n y = 0,\n // current y\n controlX = 0,\n // current control point x\n controlY = 0,\n // current control point y\n tempX,\n tempY,\n tempControlX,\n tempControlY,\n anchorX = 0,\n anchorY = 0;\n if (l == null) l = 0;\n if (t == null) t = 0;\n if (sX == null) sX = 1;\n if (sY == null) sY = sX;\n if (context.beginPath) context.beginPath();\n for (var i = 0, len = path.length; i < len; ++i) {\n current = path[i];\n if (sX !== 1 || sY !== 1) {\n current = scale$1$1(current, sX, sY);\n }\n switch (current[0]) {\n // first letter\n\n case 'l':\n // lineto, relative\n x += current[1];\n y += current[2];\n context.lineTo(x + l, y + t);\n break;\n case 'L':\n // lineto, absolute\n x = current[1];\n y = current[2];\n context.lineTo(x + l, y + t);\n break;\n case 'h':\n // horizontal lineto, relative\n x += current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'H':\n // horizontal lineto, absolute\n x = current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'v':\n // vertical lineto, relative\n y += current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'V':\n // verical lineto, absolute\n y = current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'm':\n // moveTo, relative\n x += current[1];\n y += current[2];\n anchorX = x;\n anchorY = y;\n context.moveTo(x + l, y + t);\n break;\n case 'M':\n // moveTo, absolute\n x = current[1];\n y = current[2];\n anchorX = x;\n anchorY = y;\n context.moveTo(x + l, y + t);\n break;\n case 'c':\n // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n context.bezierCurveTo(x + current[1] + l,\n // x1\n y + current[2] + t,\n // y1\n controlX + l,\n // x2\n controlY + t,\n // y2\n tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'C':\n // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n break;\n case 's':\n // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t);\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + current[1];\n controlY = y + current[2];\n x = tempX;\n y = tempY;\n break;\n case 'S':\n // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1];\n controlY = current[2];\n break;\n case 'q':\n // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n controlX = x + current[1];\n controlY = y + current[2];\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'Q':\n // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n case 't':\n // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous[0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - tempControlX;\n controlY = 2 * y - tempControlY;\n } else if (previous[0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n tempControlX = controlX;\n tempControlY = controlY;\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + current[1];\n controlY = y + current[2];\n break;\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'a':\n drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n x += current[6];\n y += current[7];\n break;\n case 'A':\n drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n x = current[6];\n y = current[7];\n break;\n case 'z':\n case 'Z':\n x = anchorX;\n y = anchorY;\n context.closePath();\n break;\n }\n previous = current;\n }\n}\nfunction drawArc(context, x, y, coords) {\n const seg = segments(coords[5],\n // end x\n coords[6],\n // end y\n coords[0],\n // radius x\n coords[1],\n // radius y\n coords[3],\n // large flag\n coords[4],\n // sweep flag\n coords[2],\n // rotation\n x, y);\n for (let i = 0; i < seg.length; ++i) {\n const bez = bezier(seg[i]);\n context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n }\n}\nconst Tan30 = 0.5773502691896257;\nconst builtins = {\n 'circle': {\n draw: function (context, size) {\n const r = Math.sqrt(size) / 2;\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, Tau);\n }\n },\n 'cross': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 2.5;\n context.moveTo(-r, -s);\n context.lineTo(-r, s);\n context.lineTo(-s, s);\n context.lineTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, s);\n context.lineTo(r, s);\n context.lineTo(r, -s);\n context.lineTo(s, -s);\n context.lineTo(s, -r);\n context.lineTo(-s, -r);\n context.lineTo(-s, -s);\n context.closePath();\n }\n },\n 'diamond': {\n draw: function (context, size) {\n const r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.closePath();\n }\n },\n 'square': {\n draw: function (context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n },\n 'arrow': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 7,\n t = r / 2.5,\n v = r / 8;\n context.moveTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, -v);\n context.lineTo(t, -v);\n context.lineTo(0, -r);\n context.lineTo(-t, -v);\n context.lineTo(-s, -v);\n context.closePath();\n }\n },\n 'wedge': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = h - r * Tan30,\n b = r / 4;\n context.moveTo(0, -h - o);\n context.lineTo(-b, h - o);\n context.lineTo(b, h - o);\n context.closePath();\n }\n },\n 'triangle': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = h - r * Tan30;\n context.moveTo(0, -h - o);\n context.lineTo(-r, h - o);\n context.lineTo(r, h - o);\n context.closePath();\n }\n },\n 'triangle-up': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, -h);\n context.lineTo(-r, h);\n context.lineTo(r, h);\n context.closePath();\n }\n },\n 'triangle-down': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, h);\n context.lineTo(-r, -h);\n context.lineTo(r, -h);\n context.closePath();\n }\n },\n 'triangle-right': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(h, 0);\n context.lineTo(-h, -r);\n context.lineTo(-h, r);\n context.closePath();\n }\n },\n 'triangle-left': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(-h, 0);\n context.lineTo(h, -r);\n context.lineTo(h, r);\n context.closePath();\n }\n },\n 'stroke': {\n draw: function (context, size) {\n const r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n }\n }\n};\nfunction symbols$1(_) {\n return has$1(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\nfunction customSymbol(path) {\n if (!has$1(custom, path)) {\n const parsed = parse$3(path);\n custom[path] = {\n draw: function (context, size) {\n pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n }\n };\n }\n return custom[path];\n}\n\n// See http://spencermortensen.com/articles/bezier-circle/\nconst C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n return d.x;\n}\nfunction rectangleY(d) {\n return d.y;\n}\nfunction rectangleWidth(d) {\n return d.width;\n}\nfunction rectangleHeight(d) {\n return d.height;\n}\nfunction number$3(_) {\n return typeof _ === 'function' ? _ : () => +_;\n}\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(value, max));\n}\nfunction vg_rect() {\n var x = rectangleX,\n y = rectangleY,\n width = rectangleWidth,\n height = rectangleHeight,\n crTL = number$3(0),\n crTR = crTL,\n crBL = crTL,\n crBR = crTL,\n context = null;\n function rectangle(_, x0, y0) {\n var buffer,\n x1 = x0 != null ? x0 : +x.call(this, _),\n y1 = y0 != null ? y0 : +y.call(this, _),\n w = +width.call(this, _),\n h = +height.call(this, _),\n s = Math.min(w, h) / 2,\n tl = clamp(+crTL.call(this, _), 0, s),\n tr = clamp(+crTR.call(this, _), 0, s),\n bl = clamp(+crBL.call(this, _), 0, s),\n br = clamp(+crBR.call(this, _), 0, s);\n if (!context) context = buffer = path$3();\n if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n context.rect(x1, y1, w, h);\n } else {\n var x2 = x1 + w,\n y2 = y1 + h;\n context.moveTo(x1 + tl, y1);\n context.lineTo(x2 - tr, y1);\n context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n context.lineTo(x2, y2 - br);\n context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n context.lineTo(x1 + bl, y2);\n context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n context.lineTo(x1, y1 + tl);\n context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n context.closePath();\n }\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n rectangle.x = function (_) {\n if (arguments.length) {\n x = number$3(_);\n return rectangle;\n } else {\n return x;\n }\n };\n rectangle.y = function (_) {\n if (arguments.length) {\n y = number$3(_);\n return rectangle;\n } else {\n return y;\n }\n };\n rectangle.width = function (_) {\n if (arguments.length) {\n width = number$3(_);\n return rectangle;\n } else {\n return width;\n }\n };\n rectangle.height = function (_) {\n if (arguments.length) {\n height = number$3(_);\n return rectangle;\n } else {\n return height;\n }\n };\n rectangle.cornerRadius = function (tl, tr, br, bl) {\n if (arguments.length) {\n crTL = number$3(tl);\n crTR = tr != null ? number$3(tr) : crTL;\n crBR = br != null ? number$3(br) : crTL;\n crBL = bl != null ? number$3(bl) : crTR;\n return rectangle;\n } else {\n return crTL;\n }\n };\n rectangle.context = function (_) {\n if (arguments.length) {\n context = _ == null ? null : _;\n return rectangle;\n } else {\n return context;\n }\n };\n return rectangle;\n}\nfunction vg_trail() {\n var x,\n y,\n size,\n defined,\n context = null,\n ready,\n x1,\n y1,\n r1;\n function point(x2, y2, w2) {\n const r2 = w2 / 2;\n if (ready) {\n var ux = y1 - y2,\n uy = x2 - x1;\n if (ux || uy) {\n // get normal vector\n var ud = Math.sqrt(ux * ux + uy * uy),\n rx = (ux /= ud) * r1,\n ry = (uy /= ud) * r1,\n t = Math.atan2(uy, ux);\n\n // draw segment\n context.moveTo(x1 - rx, y1 - ry);\n context.lineTo(x2 - ux * r2, y2 - uy * r2);\n context.arc(x2, y2, r2, t - Math.PI, t);\n context.lineTo(x1 + rx, y1 + ry);\n context.arc(x1, y1, r1, t, t + Math.PI);\n } else {\n context.arc(x2, y2, r2, 0, Tau);\n }\n context.closePath();\n } else {\n ready = 1;\n }\n x1 = x2;\n y1 = y2;\n r1 = r2;\n }\n function trail(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n if (context == null) context = buffer = path$3();\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) ready = 0;\n }\n if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n }\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n trail.x = function (_) {\n if (arguments.length) {\n x = _;\n return trail;\n } else {\n return x;\n }\n };\n trail.y = function (_) {\n if (arguments.length) {\n y = _;\n return trail;\n } else {\n return y;\n }\n };\n trail.size = function (_) {\n if (arguments.length) {\n size = _;\n return trail;\n } else {\n return size;\n }\n };\n trail.defined = function (_) {\n if (arguments.length) {\n defined = _;\n return trail;\n } else {\n return defined;\n }\n };\n trail.context = function (_) {\n if (arguments.length) {\n if (_ == null) {\n context = null;\n } else {\n context = _;\n }\n return trail;\n } else {\n return context;\n }\n };\n return trail;\n}\nfunction value$1(a, b) {\n return a != null ? a : b;\n}\nconst x$2 = item => item.x || 0,\n y$2 = item => item.y || 0,\n w$1 = item => item.width || 0,\n h = item => item.height || 0,\n xw = item => (item.x || 0) + (item.width || 0),\n yh = item => (item.y || 0) + (item.height || 0),\n sa = item => item.startAngle || 0,\n ea = item => item.endAngle || 0,\n pa = item => item.padAngle || 0,\n ir = item => item.innerRadius || 0,\n or = item => item.outerRadius || 0,\n cr = item => item.cornerRadius || 0,\n tl = item => value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0,\n tr = item => value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0,\n br = item => value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0,\n bl = item => value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0,\n sz = item => value$1(item.size, 64),\n ts = item => item.size || 1,\n def = item => !(item.defined === false),\n type$1 = item => symbols$1(item.shape || 'circle');\nconst arcShape = arc$2$1().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n areavShape = area$2$1().x(x$2).y1(y$2).y0(yh).defined(def),\n areahShape = area$2$1().y(y$2).x1(x$2).x0(xw).defined(def),\n lineShape = line$2$1().x(x$2).y(y$2).defined(def),\n rectShape = vg_rect().x(x$2).y(y$2).width(w$1).height(h).cornerRadius(tl, tr, br, bl),\n symbolShape = Symbol$1().type(type$1).size(sz),\n trailShape = vg_trail().x(x$2).y(y$2).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1$1(context, item) {\n return arcShape.context(context)(item);\n}\nfunction area$1$1(context, items) {\n const item = items[0],\n interp = item.interpolate || 'linear';\n return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1$1(context, items) {\n const item = items[0],\n interp = item.interpolate || 'linear';\n return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n return trailShape.context(context)(items);\n}\nvar clip_id = 1;\nfunction resetSVGClipId() {\n clip_id = 1;\n}\nfunction clip$1$1(renderer, item, size) {\n var clip = item.clip,\n defs = renderer._defs,\n id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n c = defs.clipping[id] || (defs.clipping[id] = {\n id: id\n });\n if (isFunction$1(clip)) {\n c.path = clip(null);\n } else if (hasCornerRadius(size)) {\n c.path = rectangle(null, size, 0, 0);\n } else {\n c.width = size.width || 0;\n c.height = size.height || 0;\n }\n return 'url(#' + id + ')';\n}\nfunction Bounds(b) {\n this.clear();\n if (b) this.union(b);\n}\nBounds.prototype = {\n clone() {\n return new Bounds(this);\n },\n clear() {\n this.x1 = +Number.MAX_VALUE;\n this.y1 = +Number.MAX_VALUE;\n this.x2 = -Number.MAX_VALUE;\n this.y2 = -Number.MAX_VALUE;\n return this;\n },\n empty() {\n return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n },\n equals(b) {\n return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n },\n set(x1, y1, x2, y2) {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n } else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n } else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n },\n add(x, y) {\n if (x < this.x1) this.x1 = x;\n if (y < this.y1) this.y1 = y;\n if (x > this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n },\n expand(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n },\n round() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n },\n scale(s) {\n this.x1 *= s;\n this.y1 *= s;\n this.x2 *= s;\n this.y2 *= s;\n return this;\n },\n translate(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n },\n rotate(angle, x, y) {\n const p = this.rotatedPoints(angle, x, y);\n return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n },\n rotatedPoints(angle, x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this,\n cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x * cos + y * sin,\n cy = y - x * sin - y * cos;\n return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n },\n union(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n },\n intersect(b) {\n if (b.x1 > this.x1) this.x1 = b.x1;\n if (b.y1 > this.y1) this.y1 = b.y1;\n if (b.x2 < this.x2) this.x2 = b.x2;\n if (b.y2 < this.y2) this.y2 = b.y2;\n return this;\n },\n encloses(b) {\n return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n },\n alignsWith(b) {\n return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n },\n intersects(b) {\n return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n },\n contains(x, y) {\n return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n },\n width() {\n return this.x2 - this.x1;\n },\n height() {\n return this.y2 - this.y1;\n }\n};\nfunction Item(mark) {\n this.mark = mark;\n this.bounds = this.bounds || new Bounds();\n}\nfunction GroupItem(mark) {\n Item.call(this, mark);\n this.items = this.items || [];\n}\ninherits(GroupItem, Item);\nfunction ResourceLoader(customLoader) {\n this._pending = 0;\n this._loader = customLoader || loader();\n}\nfunction increment(loader) {\n loader._pending += 1;\n}\nfunction decrement(loader) {\n loader._pending -= 1;\n}\nResourceLoader.prototype = {\n pending() {\n return this._pending;\n },\n sanitizeURL(uri) {\n const loader = this;\n increment(loader);\n return loader._loader.sanitize(uri, {\n context: 'href'\n }).then(opt => {\n decrement(loader);\n return opt;\n }).catch(() => {\n decrement(loader);\n return null;\n });\n },\n loadImage(uri) {\n const loader = this,\n Image = domImage();\n increment(loader);\n return loader._loader.sanitize(uri, {\n context: 'image'\n }).then(opt => {\n const url = opt.href;\n if (!url || !Image) throw {\n url: url\n };\n const img = new Image();\n\n // set crossOrigin only if cors is defined; empty string sets anonymous mode\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n const cors = has$1(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n if (cors != null) img.crossOrigin = cors;\n\n // attempt to load image resource\n img.onload = () => decrement(loader);\n img.onerror = () => decrement(loader);\n img.src = url;\n return img;\n }).catch(e => {\n decrement(loader);\n return {\n complete: false,\n width: 0,\n height: 0,\n src: e && e.url || ''\n };\n });\n },\n ready() {\n const loader = this;\n return new Promise(accept => {\n function poll(value) {\n if (!loader.pending()) accept(value);else setTimeout(() => {\n poll(true);\n }, 10);\n }\n poll(false);\n });\n }\n};\nfunction boundStroke(bounds, item, miter) {\n if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n const sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n }\n return bounds;\n}\nfunction miterAdjustment(item, strokeWidth) {\n // TODO: more sophisticated adjustment? Or miter support in boundContext?\n return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\nconst circleThreshold = Tau - 1e-8;\nlet bounds, lx, ly, rot, ma, mb, mc, md;\nconst add$2 = (x, y) => bounds.add(x, y);\nconst addL = (x, y) => add$2(lx = x, ly = y);\nconst addX = x => add$2(x, bounds.y1);\nconst addY = y => add$2(bounds.x1, y);\nconst px = (x, y) => ma * x + mc * y;\nconst py = (x, y) => mb * x + md * y;\nconst addp = (x, y) => add$2(px(x, y), py(x, y));\nconst addpL = (x, y) => addL(px(x, y), py(x, y));\nfunction boundContext(_, deg) {\n bounds = _;\n if (deg) {\n rot = deg * DegToRad;\n ma = md = Math.cos(rot);\n mb = Math.sin(rot);\n mc = -mb;\n } else {\n ma = md = 1;\n rot = mb = mc = 0;\n }\n return context$1;\n}\nconst context$1 = {\n beginPath() {},\n closePath() {},\n moveTo: addpL,\n lineTo: addpL,\n rect(x, y, w, h) {\n if (rot) {\n addp(x + w, y);\n addp(x + w, y + h);\n addp(x, y + h);\n addpL(x, y);\n } else {\n add$2(x + w, y + h);\n addL(x, y);\n }\n },\n quadraticCurveTo(x1, y1, x2, y2) {\n const px1 = px(x1, y1),\n py1 = py(x1, y1),\n px2 = px(x2, y2),\n py2 = py(x2, y2);\n quadExtrema(lx, px1, px2, addX);\n quadExtrema(ly, py1, py2, addY);\n addL(px2, py2);\n },\n bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n const px1 = px(x1, y1),\n py1 = py(x1, y1),\n px2 = px(x2, y2),\n py2 = py(x2, y2),\n px3 = px(x3, y3),\n py3 = py(x3, y3);\n cubicExtrema(lx, px1, px2, px3, addX);\n cubicExtrema(ly, py1, py2, py3, addY);\n addL(px3, py3);\n },\n arc(cx, cy, r, sa, ea, ccw) {\n sa += rot;\n ea += rot;\n\n // store last point on path\n lx = r * Math.cos(ea) + cx;\n ly = r * Math.sin(ea) + cy;\n if (Math.abs(ea - sa) > circleThreshold) {\n // treat as full circle\n add$2(cx - r, cy - r);\n add$2(cx + r, cy + r);\n } else {\n const update = a => add$2(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n let s, i;\n\n // sample end points\n update(sa);\n update(ea);\n\n // sample interior points aligned with 90 degrees\n if (ea !== sa) {\n sa = sa % Tau;\n if (sa < 0) sa += Tau;\n ea = ea % Tau;\n if (ea < 0) ea += Tau;\n if (ea < sa) {\n ccw = !ccw; // flip direction\n s = sa;\n sa = ea;\n ea = s; // swap end-points\n }\n\n if (ccw) {\n ea -= Tau;\n s = sa - sa % HalfPi;\n for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n } else {\n s = sa - sa % HalfPi + HalfPi;\n for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n }\n }\n }\n }\n};\nfunction quadExtrema(x0, x1, x2, cb) {\n const t = (x0 - x1) / (x0 + x2 - 2 * x1);\n if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n const a = x3 - x0 + 3 * x1 - 3 * x2,\n b = x0 + x2 - 2 * x1,\n c = x0 - x1;\n let t0 = 0,\n t1 = 0,\n r;\n\n // solve for parameter t\n if (Math.abs(a) > Epsilon) {\n // quadratic equation\n r = b * b + c * a;\n if (r >= 0) {\n r = Math.sqrt(r);\n t0 = (-b + r) / a;\n t1 = (-b - r) / a;\n }\n } else {\n // linear equation\n t0 = 0.5 * c / b;\n }\n\n // calculate position\n if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\nfunction cubic(t, x0, x1, x2, x3) {\n const s = 1 - t,\n s2 = s * s,\n t2 = t * t;\n return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\nvar context$2 = (context$2 = domCanvas(1, 1)) ? context$2.getContext('2d') : null;\nconst b = new Bounds();\nfunction intersectPath(draw) {\n return function (item, brush) {\n // rely on (inaccurate) bounds intersection if no context\n if (!context$2) return true;\n\n // add path to offscreen graphics context\n draw(context$2, item);\n\n // get bounds intersection region\n b.clear().union(item.bounds).intersect(brush).round();\n const {\n x1,\n y1,\n x2,\n y2\n } = b;\n\n // iterate over intersection region\n // perform fine grained inclusion test\n for (let y = y1; y <= y2; ++y) {\n for (let x = x1; x <= x2; ++x) {\n if (context$2.isPointInPath(x, y)) {\n return true;\n }\n }\n }\n\n // false if no hits in intersection region\n return false;\n };\n}\nfunction intersectPoint(item, box) {\n return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n const x = item.x || 0,\n y = item.y || 0,\n w = item.width || 0,\n h = item.height || 0;\n return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n const x = item.x || 0,\n y = item.y || 0,\n x2 = item.x2 != null ? item.x2 : x,\n y2 = item.y2 != null ? item.y2 : y;\n return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n const {\n x1,\n y1,\n x2,\n y2\n } = box,\n dx = u - x,\n dy = v - y;\n let t0 = 0,\n t1 = 1,\n p,\n q,\n r,\n e;\n for (e = 0; e < 4; ++e) {\n if (e === 0) {\n p = -dx;\n q = -(x1 - x);\n }\n if (e === 1) {\n p = dx;\n q = x2 - x;\n }\n if (e === 2) {\n p = -dy;\n q = -(y1 - y);\n }\n if (e === 3) {\n p = dy;\n q = y2 - y;\n }\n if (Math.abs(p) < 1e-10 && q < 0) return false;\n r = q / p;\n if (p < 0) {\n if (r > t1) return false;else if (r > t0) t0 = r;\n } else if (p > 0) {\n if (r < t0) return false;else if (r < t1) t1 = r;\n }\n }\n return true;\n}\nfunction blend(context, item) {\n context.globalCompositeOperation = item.blend || 'source-over';\n}\nfunction value$2(value, dflt) {\n return value == null ? dflt : value;\n}\nfunction addStops(gradient, stops) {\n const n = stops.length;\n for (let i = 0; i < n; ++i) {\n gradient.addColorStop(stops[i].offset, stops[i].color);\n }\n return gradient;\n}\nfunction gradient$2(context, spec, bounds) {\n const w = bounds.width(),\n h = bounds.height();\n let gradient;\n if (spec.gradient === 'radial') {\n gradient = context.createRadialGradient(bounds.x1 + value$2(spec.x1, 0.5) * w, bounds.y1 + value$2(spec.y1, 0.5) * h, Math.max(w, h) * value$2(spec.r1, 0), bounds.x1 + value$2(spec.x2, 0.5) * w, bounds.y1 + value$2(spec.y2, 0.5) * h, Math.max(w, h) * value$2(spec.r2, 0.5));\n } else {\n // linear gradient\n const x1 = value$2(spec.x1, 0),\n y1 = value$2(spec.y1, 0),\n x2 = value$2(spec.x2, 1),\n y2 = value$2(spec.y2, 0);\n if (x1 === x2 || y1 === y2 || w === h) {\n // axis aligned: use normal gradient\n gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n } else {\n // not axis aligned: render gradient into a pattern (#2365)\n // this allows us to use normalized bounding box coordinates\n const image = domCanvas(Math.ceil(w), Math.ceil(h)),\n ictx = image.getContext('2d');\n ictx.scale(w, h);\n ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n ictx.fillRect(0, 0, w, h);\n return context.createPattern(image, 'no-repeat');\n }\n }\n return addStops(gradient, spec.stops);\n}\nfunction color$2(context, item, value) {\n return isGradient(value) ? gradient$2(context, value, item.bounds) : value;\n}\nfunction fill(context, item, opacity) {\n opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.fillStyle = color$2(context, item, item.fill);\n return true;\n } else {\n return false;\n }\n}\nvar Empty = [];\nfunction stroke(context, item, opacity) {\n var lw = (lw = item.strokeWidth) != null ? lw : 1;\n if (lw <= 0) return false;\n opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.strokeStyle = color$2(context, item, item.stroke);\n context.lineWidth = lw;\n context.lineCap = item.strokeCap || 'butt';\n context.lineJoin = item.strokeJoin || 'miter';\n context.miterLimit = item.strokeMiterLimit || 10;\n if (context.setLineDash) {\n context.setLineDash(item.strokeDash || Empty);\n context.lineDashOffset = item.strokeDashOffset || 0;\n }\n return true;\n } else {\n return false;\n }\n}\nfunction compare$7(a, b) {\n return a.zindex - b.zindex || a.index - b.index;\n}\nfunction zorder(scene) {\n if (!scene.zdirty) return scene.zitems;\n var items = scene.items,\n output = [],\n item,\n i,\n n;\n for (i = 0, n = items.length; i < n; ++i) {\n item = items[i];\n item.index = i;\n if (item.zindex) output.push(item);\n }\n scene.zdirty = false;\n return scene.zitems = output.sort(compare$7);\n}\nfunction visit(scene, visitor) {\n var items = scene.items,\n i,\n n;\n if (!items || !items.length) return;\n const zitems = zorder(scene);\n if (zitems && zitems.length) {\n for (i = 0, n = items.length; i < n; ++i) {\n if (!items[i].zindex) visitor(items[i]);\n }\n items = zitems;\n }\n for (i = 0, n = items.length; i < n; ++i) {\n visitor(items[i]);\n }\n}\nfunction pickVisit(scene, visitor) {\n var items = scene.items,\n hit,\n i;\n if (!items || !items.length) return null;\n const zitems = zorder(scene);\n if (zitems && zitems.length) items = zitems;\n for (i = items.length; --i >= 0;) {\n if (hit = visitor(items[i])) return hit;\n }\n if (items === zitems) {\n for (items = scene.items, i = items.length; --i >= 0;) {\n if (!items[i].zindex) {\n if (hit = visitor(items[i])) return hit;\n }\n }\n }\n return null;\n}\nfunction drawAll(path) {\n return function (context, scene, bounds) {\n visit(scene, item => {\n if (!bounds || bounds.intersects(item.bounds)) {\n drawPath(path, context, item, item);\n }\n });\n };\n}\nfunction drawOne(path) {\n return function (context, scene, bounds) {\n if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n drawPath(path, context, scene.items[0], scene.items);\n }\n };\n}\nfunction drawPath(path, context, item, items) {\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0) return;\n if (path(context, items)) return;\n blend(context, item);\n if (item.fill && fill(context, item, opacity)) {\n context.fill();\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.stroke();\n }\n}\nfunction pick$1(test) {\n test = test || truthy;\n return function (context, scene, x, y, gx, gy) {\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return pickVisit(scene, item => {\n const b = item.bounds;\n // first hit test against bounding box\n if (b && !b.contains(gx, gy) || !b) return;\n // if in bounding box, perform more careful test\n if (test(context, item, x, y, gx, gy)) return item;\n });\n };\n}\nfunction hitPath(path, filled) {\n return function (context, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = filled == null ? item.fill : filled,\n stroke = item.stroke && context.isPointInStroke,\n lw,\n lc;\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n context.lineWidth = lw != null ? lw : 1;\n context.lineCap = lc != null ? lc : 'butt';\n }\n return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n };\n}\nfunction pickPath(path) {\n return pick$1(hitPath(path));\n}\nfunction translate$2(x, y) {\n return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n return 'rotate(' + a + ')';\n}\nfunction scale$3(scaleX, scaleY) {\n return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n return translate$2(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n return translate$2(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n return translate$2(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale$3(item.scaleX || 1, item.scaleY || 1) : '');\n}\nfunction markItemPath(type, shape, isect) {\n function attr(emit, item) {\n emit('transform', rotateItem(item));\n emit('d', shape(null, item));\n }\n function bound(bounds, item) {\n shape(boundContext(bounds, item.angle), item);\n return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n }\n function draw(context, item) {\n var x = item.x || 0,\n y = item.y || 0,\n a = item.angle || 0;\n context.translate(x, y);\n if (a) context.rotate(a *= DegToRad);\n context.beginPath();\n shape(context, item);\n if (a) context.rotate(-a);\n context.translate(-x, -y);\n }\n return {\n type: type,\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw),\n isect: isect || intersectPath(draw)\n };\n}\nvar arc$2 = markItemPath('arc', arc$1$1);\nfunction pickArea(a, p) {\n var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n z = a[0].orient === 'horizontal' ? 'y' : 'x',\n i = a.length,\n min = +Infinity,\n hit,\n d;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n d = Math.abs(a[i][z] - v);\n if (d < min) {\n min = d;\n hit = a[i];\n }\n }\n return hit;\n}\nfunction pickLine(a, p) {\n var t = Math.pow(a[0].strokeWidth || 1, 2),\n i = a.length,\n dx,\n dy,\n dd;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n if (dd < t) return a[i];\n }\n return null;\n}\nfunction pickTrail(a, p) {\n var i = a.length,\n dx,\n dy,\n dd;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n dx = a[i].size || 1;\n if (dd < dx * dx) return a[i];\n }\n return null;\n}\nfunction markMultiItemPath(type, shape, tip) {\n function attr(emit, item) {\n var items = item.mark.items;\n if (items.length) emit('d', shape(null, items));\n }\n function bound(bounds, mark) {\n var items = mark.items;\n if (items.length === 0) {\n return bounds;\n } else {\n shape(boundContext(bounds), items);\n return boundStroke(bounds, items[0]);\n }\n }\n function draw(context, items) {\n context.beginPath();\n shape(context, items);\n }\n const hit = hitPath(draw);\n function pick(context, scene, x, y, gx, gy) {\n var items = scene.items,\n b = scene.bounds;\n if (!items || !items.length || b && !b.contains(gx, gy)) {\n return null;\n }\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return hit(context, items, x, y) ? items[0] : null;\n }\n return {\n type: type,\n tag: 'path',\n nested: true,\n attr: attr,\n bound: bound,\n draw: drawOne(draw),\n pick: pick,\n isect: intersectPoint,\n tip: tip\n };\n}\nvar area$2 = markMultiItemPath('area', area$1$1, pickArea);\nfunction clip$2(context, scene) {\n var clip = scene.clip;\n context.save();\n if (isFunction$1(clip)) {\n context.beginPath();\n clip(context);\n context.clip();\n } else {\n clipGroup(context, scene.group);\n }\n}\nfunction clipGroup(context, group) {\n context.beginPath();\n hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n context.clip();\n}\nfunction offset$1(item) {\n const sw = value$2(item.strokeWidth, 1);\n return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\nfunction attr$5(emit, item) {\n emit('transform', translateItem(item));\n}\nfunction emitRectangle(emit, item) {\n const off = offset$1(item);\n emit('d', rectangle(null, item, off, off));\n}\nfunction background$1(emit, item) {\n emit('class', 'background');\n emit('aria-hidden', true);\n emitRectangle(emit, item);\n}\nfunction foreground(emit, item) {\n emit('class', 'foreground');\n emit('aria-hidden', true);\n if (item.strokeForeground) {\n emitRectangle(emit, item);\n } else {\n emit('d', '');\n }\n}\nfunction content(emit, item, renderer) {\n const url = item.clip ? clip$1$1(renderer, item, item) : null;\n emit('clip-path', url);\n}\nfunction bound$5(bounds, group) {\n if (!group.clip && group.items) {\n const items = group.items,\n m = items.length;\n for (let j = 0; j < m; ++j) {\n bounds.union(items[j].bounds);\n }\n }\n if ((group.clip || group.width || group.height) && !group.noBound) {\n bounds.add(0, 0).add(group.width || 0, group.height || 0);\n }\n boundStroke(bounds, group);\n return bounds.translate(group.x || 0, group.y || 0);\n}\nfunction rectanglePath(context, group, x, y) {\n const off = offset$1(group);\n context.beginPath();\n rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\nconst hitBackground = hitPath(rectanglePath);\nconst hitForeground = hitPath(rectanglePath, false);\nconst hitCorner = hitPath(rectanglePath, true);\nfunction draw$4(context, scene, bounds) {\n visit(scene, group => {\n const gx = group.x || 0,\n gy = group.y || 0,\n fore = group.strokeForeground,\n opacity = group.opacity == null ? 1 : group.opacity;\n\n // draw group background\n if ((group.stroke || group.fill) && opacity) {\n rectanglePath(context, group, gx, gy);\n blend(context, group);\n if (group.fill && fill(context, group, opacity)) {\n context.fill();\n }\n if (group.stroke && !fore && stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n\n // setup graphics context, set clip and bounds\n context.save();\n context.translate(gx, gy);\n if (group.clip) clipGroup(context, group);\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n visit(group, item => {\n this.draw(context, item, bounds);\n });\n\n // restore graphics context\n if (bounds) bounds.translate(gx, gy);\n context.restore();\n\n // draw group foreground\n if (fore && group.stroke && opacity) {\n rectanglePath(context, group, gx, gy);\n blend(context, group);\n if (stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n });\n}\nfunction pick$2(context, scene, x, y, gx, gy) {\n if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n return null;\n }\n const cx = x * context.pixelRatio,\n cy = y * context.pixelRatio;\n return pickVisit(scene, group => {\n let hit, dx, dy;\n\n // first hit test bounding box\n const b = group.bounds;\n if (b && !b.contains(gx, gy)) return;\n\n // passed bounds check, test rectangular clip\n dx = group.x || 0;\n dy = group.y || 0;\n const dw = dx + (group.width || 0),\n dh = dy + (group.height || 0),\n c = group.clip;\n if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return;\n\n // adjust coordinate system\n context.save();\n context.translate(dx, dy);\n dx = gx - dx;\n dy = gy - dy;\n\n // test background for rounded corner clip\n if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n context.restore();\n return null;\n }\n const fore = group.strokeForeground,\n ix = scene.interactive !== false;\n\n // hit test against group foreground\n if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n context.restore();\n return group;\n }\n\n // hit test against contained marks\n hit = pickVisit(group, mark => pickMark(mark, dx, dy) ? this.pick(mark, x, y, dx, dy) : null);\n\n // hit test against group background\n if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n hit = group;\n }\n\n // restore state and return\n context.restore();\n return hit || null;\n });\n}\nfunction pickMark(mark, x, y) {\n return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\nvar group = {\n type: 'group',\n tag: 'g',\n nested: false,\n attr: attr$5,\n bound: bound$5,\n draw: draw$4,\n pick: pick$2,\n isect: intersectRect,\n content: content,\n background: background$1,\n foreground: foreground\n};\nvar metadata = {\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n 'version': '1.1'\n};\nfunction getImage(item, renderer) {\n var image = item.image;\n if (!image || item.url && item.url !== image.url) {\n image = {\n complete: false,\n width: 0,\n height: 0\n };\n renderer.loadImage(item.url).then(image => {\n item.image = image;\n item.image.url = item.url;\n });\n }\n return image;\n}\nfunction imageWidth(item, image) {\n return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\nfunction imageHeight(item, image) {\n return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\nfunction imageXOffset(align, w) {\n return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\nfunction imageYOffset(baseline, h) {\n return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\nfunction attr$4(emit, item, renderer) {\n const img = getImage(item, renderer),\n w = imageWidth(item, img),\n h = imageHeight(item, img),\n x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h),\n i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n emit('transform', translate$2(x, y));\n emit('width', w);\n emit('height', h);\n emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\nfunction bound$4(bounds, item) {\n const img = item.image,\n w = imageWidth(item, img),\n h = imageHeight(item, img),\n x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h);\n return bounds.set(x, y, x + w, y + h);\n}\nfunction draw$3(context, scene, bounds) {\n visit(scene, item => {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n const img = getImage(item, this);\n let w = imageWidth(item, img);\n let h = imageHeight(item, img);\n if (w === 0 || h === 0) return; // early exit\n\n let x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h),\n opacity,\n ar0,\n ar1,\n t;\n if (item.aspect !== false) {\n ar0 = img.width / img.height;\n ar1 = item.width / item.height;\n if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n if (ar1 < ar0) {\n t = w / ar0;\n y += (h - t) / 2;\n h = t;\n } else {\n t = h * ar0;\n x += (w - t) / 2;\n w = t;\n }\n }\n }\n if (img.complete || img.toDataURL) {\n blend(context, item);\n context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n context.imageSmoothingEnabled = item.smooth !== false;\n context.drawImage(img, x, y, w, h);\n }\n });\n}\nvar image$1 = {\n type: 'image',\n tag: 'image',\n nested: false,\n attr: attr$4,\n bound: bound$4,\n draw: draw$3,\n pick: pick$1(),\n isect: truthy,\n // bounds check is sufficient\n get: getImage,\n xOffset: imageXOffset,\n yOffset: imageYOffset\n};\nvar line$2 = markMultiItemPath('line', line$1$1, pickLine);\nfunction attr$3(emit, item) {\n var sx = item.scaleX || 1,\n sy = item.scaleY || 1;\n if (sx !== 1 || sy !== 1) {\n emit('vector-effect', 'non-scaling-stroke');\n }\n emit('transform', transformItem(item));\n emit('d', item.path);\n}\nfunction path$1(context, item) {\n var path = item.path;\n if (path == null) return true;\n var x = item.x || 0,\n y = item.y || 0,\n sx = item.scaleX || 1,\n sy = item.scaleY || 1,\n a = (item.angle || 0) * DegToRad,\n cache = item.pathCache;\n if (!cache || cache.path !== path) {\n (item.pathCache = cache = parse$3(path)).path = path;\n }\n if (a && context.rotate && context.translate) {\n context.translate(x, y);\n context.rotate(a);\n pathRender(context, cache, 0, 0, sx, sy);\n context.rotate(-a);\n context.translate(-x, -y);\n } else {\n pathRender(context, cache, x, y, sx, sy);\n }\n}\nfunction bound$3(bounds, item) {\n return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\nvar path$2 = {\n type: 'path',\n tag: 'path',\n nested: false,\n attr: attr$3,\n bound: bound$3,\n draw: drawAll(path$1),\n pick: pickPath(path$1),\n isect: intersectPath(path$1)\n};\nfunction attr$2(emit, item) {\n emit('d', rectangle(null, item));\n}\nfunction bound$2(bounds, item) {\n var x, y;\n return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\nfunction draw$2(context, item) {\n context.beginPath();\n rectangle(context, item);\n}\nvar rect$1 = {\n type: 'rect',\n tag: 'path',\n nested: false,\n attr: attr$2,\n bound: bound$2,\n draw: drawAll(draw$2),\n pick: pickPath(draw$2),\n isect: intersectRect\n};\nfunction attr$1(emit, item) {\n emit('transform', translateItem(item));\n emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\nfunction bound$1(bounds, item) {\n var x1, y1;\n return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\nfunction path(context, item, opacity) {\n var x1, y1, x2, y2;\n if (item.stroke && stroke(context, item, opacity)) {\n x1 = item.x || 0;\n y1 = item.y || 0;\n x2 = item.x2 != null ? item.x2 : x1;\n y2 = item.y2 != null ? item.y2 : y1;\n context.beginPath();\n context.moveTo(x1, y1);\n context.lineTo(x2, y2);\n return true;\n }\n return false;\n}\nfunction draw$1(context, scene, bounds) {\n visit(scene, item => {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity && path(context, item, opacity)) {\n blend(context, item);\n context.stroke();\n }\n });\n}\nfunction hit$1(context, item, x, y) {\n if (!context.isPointInStroke) return false;\n return path(context, item, 1) && context.isPointInStroke(x, y);\n}\nvar rule$2 = {\n type: 'rule',\n tag: 'line',\n nested: false,\n attr: attr$1,\n bound: bound$1,\n draw: draw$1,\n pick: pick$1(hit$1),\n isect: intersectRule\n};\nvar shape = markItemPath('shape', shape$1);\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\n// memoize text width measurement\nconst widthCache = lruCache$1();\nvar textMetrics = {\n height: fontSize,\n measureWidth: measureWidth,\n estimateWidth: estimateWidth,\n width: estimateWidth,\n canvas: useCanvas\n};\nuseCanvas(true);\nfunction useCanvas(use) {\n textMetrics.width = use && context$2 ? measureWidth : estimateWidth;\n}\n\n// make simple estimate if no canvas is available\nfunction estimateWidth(item, text) {\n return _estimateWidth(textValue(item, text), fontSize(item));\n}\nfunction _estimateWidth(text, currentFontHeight) {\n return ~~(0.8 * text.length * currentFontHeight);\n}\n\n// measure text width if canvas is available\nfunction measureWidth(item, text) {\n return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font$1(item));\n}\nfunction _measureWidth(text, currentFont) {\n const key = \"(\".concat(currentFont, \") \").concat(text);\n let width = widthCache.get(key);\n if (width === undefined) {\n context$2.font = currentFont;\n width = context$2.measureText(text).width;\n widthCache.set(key, width);\n }\n return width;\n}\nfunction fontSize(item) {\n return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\nfunction lineArray(_) {\n return isArray(_) ? _.length > 1 ? _ : _[0] : _;\n}\nfunction textLines(item) {\n return lineArray(item.lineBreak && item.text && !isArray(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n const tl = textLines(item);\n return (isArray(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n const text = line == null ? '' : (line + '').trim();\n return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\nfunction widthGetter(item) {\n if (textMetrics.width === measureWidth) {\n // we are using canvas\n const currentFont = font$1(item);\n return text => _measureWidth(text, currentFont);\n } else {\n // we are relying on estimates\n const currentFontHeight = fontSize(item);\n return text => _estimateWidth(text, currentFontHeight);\n }\n}\nfunction truncate(item, text) {\n var limit = +item.limit,\n width = widthGetter(item);\n if (width(text) < limit) return text;\n var ellipsis = item.ellipsis || '\\u2026',\n rtl = item.dir === 'rtl',\n lo = 0,\n hi = text.length,\n mid;\n limit -= width(ellipsis);\n if (rtl) {\n while (lo < hi) {\n mid = lo + hi >>> 1;\n if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n }\n return ellipsis + text.slice(lo);\n } else {\n while (lo < hi) {\n mid = 1 + (lo + hi >>> 1);\n if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n }\n return text.slice(0, lo) + ellipsis;\n }\n}\nfunction fontFamily(item, quote) {\n var font = item.font;\n return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font$1(item, quote) {\n return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset$2(item) {\n // perform our own font baseline calculation\n // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n // this also ensures consistent layout across renderers\n var baseline = item.baseline,\n h = fontSize(item);\n return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\nconst textAlign = {\n 'left': 'start',\n 'center': 'middle',\n 'right': 'end'\n};\nconst tempBounds$1 = new Bounds();\nfunction anchorPoint(item) {\n var x = item.x || 0,\n y = item.y || 0,\n r = item.radius || 0,\n t;\n if (r) {\n t = (item.theta || 0) - HalfPi;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n tempBounds$1.x1 = x;\n tempBounds$1.y1 = y;\n return tempBounds$1;\n}\nfunction attr(emit, item) {\n var dx = item.dx || 0,\n dy = (item.dy || 0) + offset$2(item),\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n a = item.angle || 0,\n t;\n emit('text-anchor', textAlign[item.align] || 'start');\n if (a) {\n t = translate$2(x, y) + ' ' + rotate(a);\n if (dx || dy) t += ' ' + translate$2(dx, dy);\n } else {\n t = translate$2(x + dx, y + dy);\n }\n emit('transform', t);\n}\nfunction bound(bounds, item, mode) {\n var h = textMetrics.height(item),\n a = item.align,\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n dx = item.dx || 0,\n dy = (item.dy || 0) + offset$2(item) - Math.round(0.8 * h),\n // use 4/5 offset\n tl = textLines(item),\n w;\n\n // get dimensions\n if (isArray(tl)) {\n // multi-line text\n h += lineHeight(item) * (tl.length - 1);\n w = tl.reduce((w, t) => Math.max(w, textMetrics.width(item, t)), 0);\n } else {\n // single-line text\n w = textMetrics.width(item, tl);\n }\n\n // horizontal alignment\n if (a === 'center') {\n dx -= w / 2;\n } else if (a === 'right') {\n dx -= w;\n } else ;\n bounds.set(dx += x, dy += y, dx + w, dy + h);\n if (item.angle && !mode) {\n bounds.rotate(item.angle * DegToRad, x, y);\n } else if (mode === 2) {\n return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n }\n return bounds;\n}\nfunction draw$5(context, scene, bounds) {\n visit(scene, item => {\n var opacity = item.opacity == null ? 1 : item.opacity,\n p,\n x,\n y,\n i,\n lh,\n tl,\n str;\n if (bounds && !bounds.intersects(item.bounds) ||\n // bounds check\n opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n context.font = font$1(item);\n context.textAlign = item.align || 'left';\n p = anchorPoint(item);\n x = p.x1, y = p.y1;\n if (item.angle) {\n context.save();\n context.translate(x, y);\n context.rotate(item.angle * DegToRad);\n x = y = 0; // reset x, y\n }\n\n x += item.dx || 0;\n y += (item.dy || 0) + offset$2(item);\n tl = textLines(item);\n blend(context, item);\n if (isArray(tl)) {\n lh = lineHeight(item);\n for (i = 0; i < tl.length; ++i) {\n str = textValue(item, tl[i]);\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n y += lh;\n }\n } else {\n str = textValue(item, tl);\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n }\n if (item.angle) context.restore();\n });\n}\nfunction hit(context, item, x, y, gx, gy) {\n if (item.fontSize <= 0) return false;\n if (!item.angle) return true; // bounds sufficient if no rotation\n\n // project point into space of unrotated bounds\n var p = anchorPoint(item),\n ax = p.x1,\n ay = p.y1,\n b = bound(tempBounds$1, item, 1),\n a = -item.angle * DegToRad,\n cos = Math.cos(a),\n sin = Math.sin(a),\n px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n return b.contains(px, py);\n}\nfunction intersectText(item, box) {\n const p = bound(tempBounds$1, item, 2);\n return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\nvar text$2 = {\n type: 'text',\n tag: 'text',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw$5,\n pick: pick$1(hit),\n isect: intersectText\n};\nvar trail$2 = markMultiItemPath('trail', trail$1, pickTrail);\nvar Marks = {\n arc: arc$2,\n area: area$2,\n group: group,\n image: image$1,\n line: line$2,\n path: path$2,\n rect: rect$1,\n rule: rule$2,\n shape: shape,\n symbol: symbol,\n text: text$2,\n trail: trail$2\n};\nfunction boundItem$1(item, func, opt) {\n var type = Marks[item.mark.marktype],\n bound = func || type.bound;\n if (type.nested) item = item.mark;\n return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\nvar DUMMY = {\n mark: null\n};\nfunction boundMark(mark, bounds, opt) {\n var type = Marks[mark.marktype],\n bound = type.bound,\n items = mark.items,\n hasItems = items && items.length,\n i,\n n,\n item,\n b;\n if (type.nested) {\n if (hasItems) {\n item = items[0];\n } else {\n // no items, fake it\n DUMMY.mark = mark;\n item = DUMMY;\n }\n b = boundItem$1(item, bound, opt);\n bounds = bounds && bounds.union(b) || b;\n return bounds;\n }\n bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n if (hasItems) {\n for (i = 0, n = items.length; i < n; ++i) {\n bounds.union(boundItem$1(items[i], bound, opt));\n }\n }\n return mark.bounds = bounds;\n}\nconst keys$2 = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline',\n// layout\n'fill', 'fillOpacity', 'opacity', 'blend',\n// fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap',\n// stroke\n'strokeDash', 'strokeDashOffset',\n// stroke dash\n'strokeForeground', 'strokeOffset',\n// group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius',\n// arc\n'cornerRadius', 'padAngle',\n// arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight',\n// rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined',\n// area, line\n'url', 'aspect', 'smooth',\n// image\n'path', 'scaleX', 'scaleY',\n// path\n'x2', 'y2',\n// rule\n'size', 'shape',\n// symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy',\n// text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant',\n// font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\n\nfunction sceneToJSON(scene, indent) {\n return JSON.stringify(scene, keys$2, indent);\n}\nfunction sceneFromJSON(json) {\n const scene = typeof json === 'string' ? JSON.parse(json) : json;\n return initialize$1(scene);\n}\nfunction initialize$1(scene) {\n var type = scene.marktype,\n items = scene.items,\n parent,\n i,\n n;\n if (items) {\n for (i = 0, n = items.length; i < n; ++i) {\n parent = type ? 'mark' : 'group';\n items[i][parent] = scene;\n if (items[i].zindex) items[i][parent].zdirty = true;\n if ('group' === (type || parent)) initialize$1(items[i]);\n }\n }\n if (type) boundMark(scene);\n return scene;\n}\nfunction Scenegraph(scene) {\n if (arguments.length) {\n this.root = sceneFromJSON(scene);\n } else {\n this.root = createMark({\n marktype: 'group',\n name: 'root',\n role: 'frame'\n });\n this.root.items = [new GroupItem(this.root)];\n }\n}\nScenegraph.prototype = {\n toJSON(indent) {\n return sceneToJSON(this.root, indent || 0);\n },\n mark(markdef, group, index) {\n group = group || this.root.items[0];\n const mark = createMark(markdef, group);\n group.items[index] = mark;\n if (mark.zindex) mark.group.zdirty = true;\n return mark;\n }\n};\nfunction createMark(def, group) {\n const mark = {\n bounds: new Bounds(),\n clip: !!def.clip,\n group: group,\n interactive: def.interactive === false ? false : true,\n items: [],\n marktype: def.marktype,\n name: def.name || undefined,\n role: def.role || undefined,\n zindex: def.zindex || 0\n };\n\n // add accessibility properties if defined\n if (def.aria != null) {\n mark.aria = def.aria;\n }\n if (def.description) {\n mark.description = def.description;\n }\n return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n if (!doc && typeof document !== 'undefined' && document.createElement) {\n doc = document;\n }\n return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n}\n\n// find first child element with matching tag\nfunction domFind(el, tag) {\n tag = tag.toLowerCase();\n var nodes = el.childNodes,\n i = 0,\n n = nodes.length;\n for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n return nodes[i];\n }\n}\n\n// retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\nfunction domChild(el, index, tag, ns) {\n var a = el.childNodes[index],\n b;\n if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n b = a || null;\n a = domCreate(el.ownerDocument, tag, ns);\n el.insertBefore(a, b);\n }\n return a;\n}\n\n// remove all child elements at or above the given index\nfunction domClear(el, index) {\n var nodes = el.childNodes,\n curr = nodes.length;\n while (curr > index) el.removeChild(nodes[--curr]);\n return el;\n}\n\n// generate css class name for mark\nfunction cssClass(mark) {\n return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\nfunction point$2(event, el) {\n const rect = el.getBoundingClientRect();\n return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\nfunction resolveItem(item, event, el, origin) {\n var mark = item && item.mark,\n mdef,\n p;\n if (mark && (mdef = Marks[mark.marktype]).tip) {\n p = point$2(event, el);\n p[0] -= origin[0];\n p[1] -= origin[1];\n while (item = item.mark.group) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n }\n item = mdef.tip(mark.items, p);\n }\n return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n * href URL sanitization. If not specified, a standard loader\n * instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n * function for custom tooltip display.\n * @constructor\n */\nfunction Handler$1(customLoader, customTooltip) {\n this._active = null;\n this._handlers = {};\n this._loader = customLoader || loader();\n this._tooltip = customTooltip || defaultTooltip$1;\n}\n\n// The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\nfunction defaultTooltip$1(handler, event, item, value) {\n handler.element().setAttribute('title', value || '');\n}\nHandler$1.prototype = {\n /**\n * Initialize a new Handler instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {object} [obj] - Optional context object that should serve as\n * the \"this\" context for event callbacks.\n * @return {Handler} - This handler instance.\n */\n initialize(el, origin, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.origin(origin);\n },\n /**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\n element() {\n return this._el;\n },\n /**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\n canvas() {\n return this._el && this._el.firstChild;\n },\n /**\n * Get / set the origin coordinates of the visualization.\n */\n origin(origin) {\n if (arguments.length) {\n this._origin = origin || [0, 0];\n return this;\n } else {\n return this._origin.slice();\n }\n },\n /**\n * Get / set the scenegraph root.\n */\n scene(scene) {\n if (!arguments.length) return this._scene;\n this._scene = scene;\n return this;\n },\n /**\n * Add an event handler. Subclasses should override this method.\n */\n on( /*type, handler*/) {},\n /**\n * Remove an event handler. Subclasses should override this method.\n */\n off( /*type, handler*/) {},\n /**\n * Utility method for finding the array index of an event handler.\n * @param {Array} h - An array of registered event handlers.\n * @param {string} type - The event type.\n * @param {function} handler - The event handler instance to find.\n * @return {number} - The handler's array index or -1 if not registered.\n */\n _handlerIndex(h, type, handler) {\n for (let i = h ? h.length : 0; --i >= 0;) {\n if (h[i].type === type && (!handler || h[i].handler === handler)) {\n return i;\n }\n }\n return -1;\n },\n /**\n * Returns an array with registered event handlers.\n * @param {string} [type] - The event type to query. Any annotations\n * are ignored; for example, for the argument \"click.foo\", \".foo\" will\n * be ignored and the method returns all \"click\" handlers. If type is\n * null or unspecified, this method returns handlers for all types.\n * @return {Array} - A new array containing all registered event handlers.\n */\n handlers(type) {\n const h = this._handlers,\n a = [];\n if (type) {\n a.push(...h[this.eventName(type)]);\n } else {\n for (const k in h) {\n a.push(...h[k]);\n }\n }\n return a;\n },\n /**\n * Parses an event name string to return the specific event type.\n * For example, given \"click.foo\" returns \"click\"\n * @param {string} name - The input event type string.\n * @return {string} - A string with the event type only.\n */\n eventName(name) {\n const i = name.indexOf('.');\n return i < 0 ? name : name.slice(0, i);\n },\n /**\n * Handle hyperlink navigation in response to an item.href value.\n * @param {Event} event - The event triggering hyperlink navigation.\n * @param {Item} item - The scenegraph item.\n * @param {string} href - The URL to navigate to.\n */\n handleHref(event, item, href) {\n this._loader.sanitize(href, {\n context: 'href'\n }).then(opt => {\n const e = new MouseEvent(event.type, event),\n a = domCreate(null, 'a');\n for (const name in opt) a.setAttribute(name, opt[name]);\n a.dispatchEvent(e);\n }).catch(() => {/* do nothing */});\n },\n /**\n * Handle tooltip display in response to an item.tooltip value.\n * @param {Event} event - The event triggering tooltip display.\n * @param {Item} item - The scenegraph item.\n * @param {boolean} show - A boolean flag indicating whether\n * to show or hide a tooltip for the given item.\n */\n handleTooltip(event, item, show) {\n if (item && item.tooltip != null) {\n item = resolveItem(item, event, this.canvas(), this._origin);\n const value = show && item && item.tooltip || null;\n this._tooltip.call(this._obj, this, event, item, value);\n }\n },\n /**\n * Returns the size of a scenegraph item and its position relative\n * to the viewport.\n * @param {Item} item - The scenegraph item.\n * @return {object} - A bounding box object (compatible with the\n * DOMRect type) consisting of x, y, width, heigh, top, left,\n * right, and bottom properties.\n */\n getItemBoundingClientRect(item) {\n const el = this.canvas();\n if (!el) return;\n const rect = el.getBoundingClientRect(),\n origin = this._origin,\n bounds = item.bounds,\n width = bounds.width(),\n height = bounds.height();\n let x = bounds.x1 + origin[0] + rect.left,\n y = bounds.y1 + origin[1] + rect.top;\n\n // translate coordinate for each parent group\n while (item.mark && (item = item.mark.group)) {\n x += item.x || 0;\n y += item.y || 0;\n }\n\n // return DOMRect-compatible bounding box\n return {\n x,\n y,\n width,\n height,\n left: x,\n top: y,\n right: x + width,\n bottom: y + height\n };\n }\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n * image and href URL sanitization. If not specified, a\n * standard loader instance will be generated.\n * @constructor\n */\nfunction Renderer(loader) {\n this._el = null;\n this._bgcolor = null;\n this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n /**\n * Initialize a new Renderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance.\n */\n initialize(el, width, height, origin, scaleFactor) {\n this._el = el;\n return this.resize(width, height, origin, scaleFactor);\n },\n /**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\n element() {\n return this._el;\n },\n /**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\n canvas() {\n return this._el && this._el.firstChild;\n },\n /**\n * Get / set the background color.\n */\n background(bgcolor) {\n if (arguments.length === 0) return this._bgcolor;\n this._bgcolor = bgcolor;\n return this;\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance;\n */\n resize(width, height, origin, scaleFactor) {\n this._width = width;\n this._height = height;\n this._origin = origin || [0, 0];\n this._scale = scaleFactor || 1;\n return this;\n },\n /**\n * Report a dirty item whose bounds should be redrawn.\n * This base class method does nothing. Subclasses that perform\n * incremental should implement this method.\n * @param {Item} item - The dirty item whose bounds should be redrawn.\n */\n dirty( /*item*/) {},\n /**\n * Render an input scenegraph, potentially with a set of dirty items.\n * This method will perform an immediate rendering with available resources.\n * The renderer may also need to perform image loading to perform a complete\n * render. This process can lead to asynchronous re-rendering of the scene\n * after this method returns. To receive notification when rendering is\n * complete, use the renderAsync method instead.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Renderer} - This renderer instance.\n */\n render(scene) {\n const r = this;\n\n // bind arguments into a render call, and cache it\n // this function may be subsequently called for async redraw\n r._call = function () {\n r._render(scene);\n };\n\n // invoke the renderer\n r._call();\n\n // clear the cached call for garbage collection\n // async redraws will stash their own copy\n r._call = null;\n return r;\n },\n /**\n * Internal rendering method. Renderer subclasses should override this\n * method to actually perform rendering.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render( /*scene*/\n ) {\n // subclasses to override\n },\n /**\n * Asynchronous rendering method. Similar to render, but returns a Promise\n * that resolves when all rendering is completed. Sometimes a renderer must\n * perform image loading to get a complete rendering. The returned\n * Promise will not resolve until this process completes.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @return {Promise} - A Promise that resolves when rendering is complete.\n */\n renderAsync(scene) {\n const r = this.render(scene);\n return this._ready ? this._ready.then(() => r) : Promise.resolve(r);\n },\n /**\n * Internal method for asynchronous resource loading.\n * Proxies method calls to the ImageLoader, and tracks loading\n * progress to invoke a re-render once complete.\n * @param {string} method - The method name to invoke on the ImageLoader.\n * @param {string} uri - The URI for the requested resource.\n * @return {Promise} - A Promise that resolves to the requested resource.\n */\n _load(method, uri) {\n var r = this,\n p = r._loader[method](uri);\n if (!r._ready) {\n // re-render the scene when loading completes\n const call = r._call;\n r._ready = r._loader.ready().then(redraw => {\n if (redraw) call();\n r._ready = null;\n });\n }\n return p;\n },\n /**\n * Sanitize a URL to include as a hyperlink in the rendered scene.\n * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string to sanitize.\n * @return {Promise} - A Promise that resolves to the sanitized URL.\n */\n sanitizeURL(uri) {\n return this._load('sanitizeURL', uri);\n },\n /**\n * Requests an image to include in the rendered scene.\n * This method proxies a call to ImageLoader.loadImage, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string of the image.\n * @return {Promise} - A Promise that resolves to the loaded Image.\n */\n loadImage(uri) {\n return this._load('loadImage', uri);\n }\n};\nconst KeyDownEvent = 'keydown';\nconst KeyPressEvent = 'keypress';\nconst KeyUpEvent = 'keyup';\nconst DragEnterEvent = 'dragenter';\nconst DragLeaveEvent = 'dragleave';\nconst DragOverEvent = 'dragover';\nconst MouseDownEvent = 'mousedown';\nconst MouseUpEvent = 'mouseup';\nconst MouseMoveEvent = 'mousemove';\nconst MouseOutEvent = 'mouseout';\nconst MouseOverEvent = 'mouseover';\nconst ClickEvent = 'click';\nconst DoubleClickEvent = 'dblclick';\nconst WheelEvent = 'wheel';\nconst MouseWheelEvent = 'mousewheel';\nconst TouchStartEvent = 'touchstart';\nconst TouchMoveEvent = 'touchmove';\nconst TouchEndEvent = 'touchend';\nconst Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nconst TooltipShowEvent = MouseMoveEvent;\nconst TooltipHideEvent = MouseOutEvent;\nconst HrefEvent = ClickEvent;\nfunction CanvasHandler(loader, tooltip) {\n Handler$1.call(this, loader, tooltip);\n this._down = null;\n this._touch = null;\n this._first = true;\n this._events = {};\n}\nconst eventBundle = type => type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type];\n\n// lazily add listeners to the canvas as needed\nfunction eventListenerCheck(handler, type) {\n eventBundle(type).forEach(_ => addEventListener(handler, _));\n}\nfunction addEventListener(handler, type) {\n const canvas = handler.canvas();\n if (canvas && !handler._events[type]) {\n handler._events[type] = 1;\n canvas.addEventListener(type, handler[type] ? evt => handler[type](evt) : evt => handler.fire(type, evt));\n }\n}\nfunction move(moveEvent, overEvent, outEvent) {\n return function (evt) {\n const a = this._active,\n p = this.pickEvent(evt);\n if (p === a) {\n // active item and picked item are the same\n this.fire(moveEvent, evt); // fire move\n } else {\n // active item and picked item are different\n if (!a || !a.exit) {\n // fire out for prior active item\n // suppress if active item was removed from scene\n this.fire(outEvent, evt);\n }\n this._active = p; // set new active item\n this.fire(overEvent, evt); // fire over for new active item\n this.fire(moveEvent, evt); // fire move for new active item\n }\n };\n}\n\nfunction inactive(type) {\n return function (evt) {\n this.fire(type, evt);\n this._active = null;\n };\n}\ninherits(CanvasHandler, Handler$1, {\n initialize(el, origin, obj) {\n this._canvas = el && domFind(el, 'canvas');\n\n // add minimal events required for proper state management\n [ClickEvent, MouseDownEvent, MouseMoveEvent, MouseOutEvent, DragLeaveEvent].forEach(type => eventListenerCheck(this, type));\n return Handler$1.prototype.initialize.call(this, el, origin, obj);\n },\n // return the backing canvas instance\n canvas() {\n return this._canvas;\n },\n // retrieve the current canvas context\n context() {\n return this._canvas.getContext('2d');\n },\n // supported events\n events: Events,\n // to keep old versions of firefox happy\n DOMMouseScroll(evt) {\n this.fire(MouseWheelEvent, evt);\n },\n mousemove: move(MouseMoveEvent, MouseOverEvent, MouseOutEvent),\n dragover: move(DragOverEvent, DragEnterEvent, DragLeaveEvent),\n mouseout: inactive(MouseOutEvent),\n dragleave: inactive(DragLeaveEvent),\n mousedown(evt) {\n this._down = this._active;\n this.fire(MouseDownEvent, evt);\n },\n click(evt) {\n if (this._down === this._active) {\n this.fire(ClickEvent, evt);\n this._down = null;\n }\n },\n touchstart(evt) {\n this._touch = this.pickEvent(evt.changedTouches[0]);\n if (this._first) {\n this._active = this._touch;\n this._first = false;\n }\n this.fire(TouchStartEvent, evt, true);\n },\n touchmove(evt) {\n this.fire(TouchMoveEvent, evt, true);\n },\n touchend(evt) {\n this.fire(TouchEndEvent, evt, true);\n this._touch = null;\n },\n // fire an event\n fire(type, evt, touch) {\n const a = touch ? this._touch : this._active,\n h = this._handlers[type];\n\n // set event type relative to scenegraph items\n evt.vegaType = type;\n\n // handle hyperlinks and tooltips first\n if (type === HrefEvent && a && a.href) {\n this.handleHref(evt, a, a.href);\n } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n this.handleTooltip(evt, a, type !== TooltipHideEvent);\n }\n\n // invoke all registered handlers\n if (h) {\n for (let i = 0, len = h.length; i < len; ++i) {\n h[i].handler.call(this._obj, evt, a);\n }\n }\n },\n // add an event handler\n on(type, handler) {\n const name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n if (i < 0) {\n eventListenerCheck(this, type);\n (h[name] || (h[name] = [])).push({\n type: type,\n handler: handler\n });\n }\n return this;\n },\n // remove an event handler\n off(type, handler) {\n const name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n if (i >= 0) {\n h.splice(i, 1);\n }\n return this;\n },\n pickEvent(evt) {\n const p = point$2(evt, this._canvas),\n o = this._origin;\n return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n },\n // find the scenegraph item at the current mouse position\n // x, y -- the absolute x, y mouse coordinates on the canvas element\n // gx, gy -- the relative coordinates within the current group\n pick(scene, x, y, gx, gy) {\n const g = this.context(),\n mark = Marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n }\n});\nfunction devicePixelRatio() {\n return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\nvar pixelRatio = devicePixelRatio();\nfunction resize(canvas, width, height, origin, scaleFactor, opt) {\n const inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n context = canvas.getContext('2d'),\n ratio = inDOM ? pixelRatio : scaleFactor;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n for (const key in opt) {\n context[key] = opt[key];\n }\n if (inDOM && ratio !== 1) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n context.pixelRatio = ratio;\n context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n return canvas;\n}\nfunction CanvasRenderer(loader) {\n Renderer.call(this, loader);\n this._options = {};\n this._redraw = false;\n this._dirty = new Bounds();\n this._tempb = new Bounds();\n}\nconst base$1 = Renderer.prototype;\nconst viewBounds = (origin, width, height) => new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\nfunction clipToBounds(g, b, origin) {\n // expand bounds by 1 pixel, then round to pixel boundaries\n b.expand(1).round();\n\n // align to base pixel grid in case of non-integer scaling (#2425)\n if (g.pixelRatio % 1) {\n b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n }\n\n // to avoid artifacts translate if origin has fractional pixels\n b.translate(-(origin[0] % 1), -(origin[1] % 1));\n\n // set clip path\n g.beginPath();\n g.rect(b.x1, b.y1, b.width(), b.height());\n g.clip();\n return b;\n}\ninherits(CanvasRenderer, Renderer, {\n initialize(el, width, height, origin, scaleFactor, options) {\n this._options = options || {};\n this._canvas = this._options.externalContext ? null : domCanvas(1, 1, this._options.type); // instantiate a small canvas\n\n if (el && this._canvas) {\n domClear(el, 0).appendChild(this._canvas);\n this._canvas.setAttribute('class', 'marks');\n }\n\n // this method will invoke resize to size the canvas appropriately\n return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n resize(width, height, origin, scaleFactor) {\n base$1.resize.call(this, width, height, origin, scaleFactor);\n if (this._canvas) {\n // configure canvas size and transform\n resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n } else {\n // external context needs to be scaled and positioned to origin\n const ctx = this._options.externalContext;\n if (!ctx) error('CanvasRenderer is missing a valid canvas or context');\n ctx.scale(this._scale, this._scale);\n ctx.translate(this._origin[0], this._origin[1]);\n }\n this._redraw = true;\n return this;\n },\n canvas() {\n return this._canvas;\n },\n context() {\n return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n },\n dirty(item) {\n const b = this._tempb.clear().union(item.bounds);\n let g = item.mark.group;\n while (g) {\n b.translate(g.x || 0, g.y || 0);\n g = g.mark.group;\n }\n this._dirty.union(b);\n },\n _render(scene) {\n const g = this.context(),\n o = this._origin,\n w = this._width,\n h = this._height,\n db = this._dirty,\n vb = viewBounds(o, w, h);\n\n // setup\n g.save();\n const b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n this.clear(-o[0], -o[1], w, h);\n\n // render\n this.draw(g, scene, b);\n\n // takedown\n g.restore();\n db.clear();\n return this;\n },\n draw(ctx, scene, bounds) {\n const mark = Marks[scene.marktype];\n if (scene.clip) clip$2(ctx, scene);\n mark.draw.call(this, ctx, scene, bounds);\n if (scene.clip) ctx.restore();\n },\n clear(x, y, w, h) {\n const opt = this._options,\n g = this.context();\n if (opt.type !== 'pdf' && !opt.externalContext) {\n // calling clear rect voids vector output in pdf mode\n // and could remove external context content (#2615)\n g.clearRect(x, y, w, h);\n }\n if (this._bgcolor != null) {\n g.fillStyle = this._bgcolor;\n g.fillRect(x, y, w, h);\n }\n }\n});\nfunction SVGHandler(loader, tooltip) {\n Handler$1.call(this, loader, tooltip);\n const h = this;\n h._hrefHandler = listener(h, (evt, item) => {\n if (item && item.href) h.handleHref(evt, item, item.href);\n });\n h._tooltipHandler = listener(h, (evt, item) => {\n h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n });\n}\n\n// wrap an event listener for the SVG DOM\nconst listener = (context, handler) => evt => {\n let item = evt.target.__data__;\n item = Array.isArray(item) ? item[0] : item;\n evt.vegaType = evt.type;\n handler.call(context._obj, evt, item);\n};\ninherits(SVGHandler, Handler$1, {\n initialize(el, origin, obj) {\n let svg = this._svg;\n if (svg) {\n svg.removeEventListener(HrefEvent, this._hrefHandler);\n svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n this._svg = svg = el && domFind(el, 'svg');\n if (svg) {\n svg.addEventListener(HrefEvent, this._hrefHandler);\n svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n return Handler$1.prototype.initialize.call(this, el, origin, obj);\n },\n canvas() {\n return this._svg;\n },\n // add an event handler\n on(type, handler) {\n const name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n if (i < 0) {\n const x = {\n type,\n handler,\n listener: listener(this, handler)\n };\n (h[name] || (h[name] = [])).push(x);\n if (this._svg) {\n this._svg.addEventListener(name, x.listener);\n }\n }\n return this;\n },\n // remove an event handler\n off(type, handler) {\n const name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n if (i >= 0) {\n if (this._svg) {\n this._svg.removeEventListener(name, h[i].listener);\n }\n h.splice(i, 1);\n }\n return this;\n }\n});\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_LABEL = 'aria-label';\nconst ARIA_ROLE = 'role';\nconst ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nconst GRAPHICS_OBJECT = 'graphics-object';\nconst GRAPHICS_SYMBOL = 'graphics-symbol';\nconst bundle = (role, roledesc, label) => ({\n [ARIA_ROLE]: role,\n [ARIA_ROLEDESCRIPTION]: roledesc,\n [ARIA_LABEL]: label || undefined\n});\n\n// these roles are covered by related roles\n// we can ignore them, no need to generate attributes\nconst AriaIgnore = toSet(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']);\n\n// aria attribute generators for guide roles\nconst AriaGuides = {\n 'axis': {\n desc: 'axis',\n caption: axisCaption\n },\n 'legend': {\n desc: 'legend',\n caption: legendCaption\n },\n 'title-text': {\n desc: 'title',\n caption: item => \"Title text '\".concat(titleCaption(item), \"'\")\n },\n 'title-subtitle': {\n desc: 'subtitle',\n caption: item => \"Subtitle text '\".concat(titleCaption(item), \"'\")\n }\n};\n\n// aria properties generated for mark item encoding channels\nconst AriaEncode = {\n ariaRole: ARIA_ROLE,\n ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n const hide = item.aria === false;\n emit(ARIA_HIDDEN, hide || undefined);\n if (hide || item.description == null) {\n for (const prop in AriaEncode) {\n emit(AriaEncode[prop], undefined);\n }\n } else {\n const type = item.mark.marktype;\n emit(ARIA_LABEL, item.description);\n emit(ARIA_ROLE, item.ariaRole || (type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || \"\".concat(type, \" mark\"));\n }\n}\nfunction ariaMarkAttributes(mark) {\n return mark.aria === false ? {\n [ARIA_HIDDEN]: true\n } : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\nfunction ariaMark(mark) {\n const type = mark.marktype;\n const recurse = type === 'group' || type === 'text' || mark.items.some(_ => _.description != null && _.aria !== false);\n return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, \"\".concat(type, \" mark container\"), mark.description);\n}\nfunction ariaGuide(mark, opt) {\n try {\n const item = mark.items[0],\n caption = opt.caption || (() => '');\n return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n } catch (err) {\n return null;\n }\n}\nfunction titleCaption(item) {\n return array$5(item.text).join(' ');\n}\nfunction axisCaption(item) {\n const datum = item.datum,\n orient = item.orient,\n title = datum.title ? extractTitle(item) : null,\n ctx = item.context,\n scale = ctx.scales[datum.scale].value,\n locale = ctx.dataflow.locale(),\n type = scale.type,\n xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n return \"\".concat(xy, \"-axis\") + (title ? \" titled '\".concat(title, \"'\") : '') + \" for a \".concat(isDiscrete$2(type) ? 'discrete' : type, \" scale\") + \" with \".concat(domainCaption(locale, scale, item));\n}\nfunction legendCaption(item) {\n const datum = item.datum,\n title = datum.title ? extractTitle(item) : null,\n type = \"\".concat(datum.type || '', \" legend\").trim(),\n scales = datum.scales,\n props = Object.keys(scales),\n ctx = item.context,\n scale = ctx.scales[scales[props[0]]].value,\n locale = ctx.dataflow.locale();\n return capitalize(type) + (title ? \" titled '\".concat(title, \"'\") : '') + \" for \".concat(channelCaption(props)) + \" with \".concat(domainCaption(locale, scale, item));\n}\nfunction extractTitle(item) {\n try {\n return array$5(peek$1(item.items).items[0].text).join(' ');\n } catch (err) {\n return null;\n }\n}\nfunction channelCaption(props) {\n props = props.map(p => p + (p === 'fill' || p === 'stroke' ? ' color' : ''));\n return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + peek$1(props);\n}\nfunction capitalize(s) {\n return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\nconst innerText = val => (val + '').replace(/&/g, '&').replace(//g, '>');\nconst attrText = val => innerText(val).replace(/\"/g, '"').replace(/\\t/g, ' ').replace(/\\n/g, ' ').replace(/\\r/g, ' ');\nfunction markup() {\n let buf = '',\n outer = '',\n inner = '';\n const stack = [],\n clear = () => outer = inner = '',\n push = tag => {\n if (outer) {\n buf += \"\".concat(outer, \">\").concat(inner);\n clear();\n }\n stack.push(tag);\n },\n attr = (name, value) => {\n if (value != null) outer += \" \".concat(name, \"=\\\"\").concat(attrText(value), \"\\\"\");\n return m;\n },\n m = {\n open(tag) {\n push(tag);\n outer = '<' + tag;\n for (var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n attrs[_key - 1] = arguments[_key];\n }\n for (const set of attrs) {\n for (const key in set) attr(key, set[key]);\n }\n return m;\n },\n close() {\n const tag = stack.pop();\n if (outer) {\n buf += outer + (inner ? \">\".concat(inner, \"\") : '/>');\n } else {\n buf += \"\");\n }\n clear();\n return m;\n },\n attr,\n text: t => (inner += innerText(t), m),\n toString: () => buf\n };\n return m;\n}\nconst serializeXML = node => _serialize(markup(), node) + '';\nfunction _serialize(m, node) {\n m.open(node.tagName);\n if (node.hasAttributes()) {\n const attrs = node.attributes,\n n = attrs.length;\n for (let i = 0; i < n; ++i) {\n m.attr(attrs[i].name, attrs[i].value);\n }\n }\n if (node.hasChildNodes()) {\n const children = node.childNodes;\n for (const child of children) {\n child.nodeType === 3 // text node\n ? m.text(child.nodeValue) : _serialize(m, child);\n }\n }\n return m.close();\n}\nconst stylesAttr = {\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n stroke: 'stroke',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n strokeCap: 'stroke-linecap',\n strokeJoin: 'stroke-linejoin',\n strokeDash: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeMiterLimit: 'stroke-miterlimit',\n opacity: 'opacity'\n};\nconst stylesCss = {\n blend: 'mix-blend-mode'\n};\n\n// ensure miter limit default is consistent with canvas (#2498)\nconst rootAttributes = {\n 'fill': 'none',\n 'stroke-miterlimit': 10\n};\nconst RootIndex = 0,\n xmlns = 'http://www.w3.org/2000/xmlns/',\n svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n Renderer.call(this, loader);\n this._dirtyID = 0;\n this._dirty = [];\n this._svg = null;\n this._root = null;\n this._defs = null;\n}\nconst base = Renderer.prototype;\ninherits(SVGRenderer, Renderer, {\n /**\n * Initialize a new SVGRenderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance.\n */\n initialize(el, width, height, origin, scaleFactor) {\n // create the svg definitions cache\n this._defs = {};\n this._clearDefs();\n if (el) {\n this._svg = domChild(el, 0, 'svg', svgns);\n this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n this._svg.setAttribute('version', metadata['version']);\n this._svg.setAttribute('class', 'marks');\n domClear(el, 1);\n\n // set the svg root group\n this._root = domChild(this._svg, RootIndex, 'g', svgns);\n setAttributes(this._root, rootAttributes);\n\n // ensure no additional child elements\n domClear(this._svg, RootIndex + 1);\n }\n\n // set background color if defined\n this.background(this._bgcolor);\n return base.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n /**\n * Get / set the background color.\n */\n background(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base.background.apply(this, arguments);\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance;\n */\n resize(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n if (this._svg) {\n setAttributes(this._svg, {\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: \"0 0 \".concat(this._width, \" \").concat(this._height)\n });\n this._root.setAttribute('transform', \"translate(\".concat(this._origin, \")\"));\n }\n this._dirty = [];\n return this;\n },\n /**\n * Returns the SVG element of the visualization.\n * @return {DOMElement} - The SVG element.\n */\n canvas() {\n return this._svg;\n },\n /**\n * Returns an SVG text string for the rendered content,\n * or null if this renderer is currently headless.\n */\n svg() {\n const svg = this._svg,\n bg = this._bgcolor;\n if (!svg) return null;\n let node;\n if (bg) {\n svg.removeAttribute('style');\n node = domChild(svg, RootIndex, 'rect', svgns);\n setAttributes(node, {\n width: this._width,\n height: this._height,\n fill: bg\n });\n }\n const text = serializeXML(svg);\n if (bg) {\n svg.removeChild(node);\n this._svg.style.setProperty('background-color', bg);\n }\n return text;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render(scene) {\n // perform spot updates and re-render markup\n if (this._dirtyCheck()) {\n if (this._dirtyAll) this._clearDefs();\n this.mark(this._root, scene);\n domClear(this._root, 1);\n }\n this.defs();\n this._dirty = [];\n ++this._dirtyID;\n return this;\n },\n // -- Manage rendering of items marked as dirty --\n\n /**\n * Flag a mark item as dirty.\n * @param {Item} item - The mark item.\n */\n dirty(item) {\n if (item.dirty !== this._dirtyID) {\n item.dirty = this._dirtyID;\n this._dirty.push(item);\n }\n },\n /**\n * Check if a mark item is considered dirty.\n * @param {Item} item - The mark item.\n */\n isDirty(item) {\n return this._dirtyAll || !item._svg || !item._svg.ownerSVGElement || item.dirty === this._dirtyID;\n },\n /**\n * Internal method to check dirty status and, if possible,\n * make targetted updates without a full rendering pass.\n */\n _dirtyCheck() {\n this._dirtyAll = true;\n const items = this._dirty;\n if (!items.length || !this._dirtyID) return true;\n const id = ++this._dirtyID;\n let item, mark, type, mdef, i, n, o;\n for (i = 0, n = items.length; i < n; ++i) {\n item = items[i];\n mark = item.mark;\n if (mark.marktype !== type) {\n // memoize mark instance lookup\n type = mark.marktype;\n mdef = Marks[type];\n }\n if (mark.zdirty && mark.dirty !== id) {\n this._dirtyAll = false;\n dirtyParents(item, id);\n mark.items.forEach(i => {\n i.dirty = id;\n });\n }\n if (mark.zdirty) continue; // handle in standard drawing pass\n\n if (item.exit) {\n // EXIT\n if (mdef.nested && mark.items.length) {\n // if nested mark with remaining points, update instead\n o = mark.items[0];\n if (o._svg) this._update(mdef, o._svg, o);\n } else if (item._svg) {\n // otherwise remove from DOM\n o = item._svg.parentNode;\n if (o) o.removeChild(item._svg);\n }\n item._svg = null;\n continue;\n }\n item = mdef.nested ? mark.items[0] : item;\n if (item._update === id) continue; // already visited\n\n if (!item._svg || !item._svg.ownerSVGElement) {\n // ENTER\n this._dirtyAll = false;\n dirtyParents(item, id);\n } else {\n // IN-PLACE UPDATE\n this._update(mdef, item._svg, item);\n }\n item._update = id;\n }\n return !this._dirtyAll;\n },\n // -- Construct & maintain scenegraph to SVG mapping ---\n\n /**\n * Render a set of mark items.\n * @param {SVGElement} el - The parent element in the SVG tree.\n * @param {object} scene - The mark parent to render.\n * @param {SVGElement} prev - The previous sibling in the SVG tree.\n */\n mark(el, scene, prev) {\n if (!this.isDirty(scene)) {\n return scene._svg;\n }\n const svg = this._svg,\n mdef = Marks[scene.marktype],\n events = scene.interactive === false ? 'none' : null,\n isGroup = mdef.tag === 'g';\n const parent = bind$1(scene, el, prev, 'g', svg);\n parent.setAttribute('class', cssClass(scene));\n\n // apply aria attributes to parent container element\n const aria = ariaMarkAttributes(scene);\n for (const key in aria) setAttribute(parent, key, aria[key]);\n if (!isGroup) {\n setAttribute(parent, 'pointer-events', events);\n }\n setAttribute(parent, 'clip-path', scene.clip ? clip$1$1(this, scene, scene.group) : null);\n let sibling = null,\n i = 0;\n const process = item => {\n const dirty = this.isDirty(item),\n node = bind$1(item, parent, sibling, mdef.tag, svg);\n if (dirty) {\n this._update(mdef, node, item);\n if (isGroup) recurse(this, node, item);\n }\n sibling = node;\n ++i;\n };\n if (mdef.nested) {\n if (scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n domClear(parent, i);\n return parent;\n },\n /**\n * Update the attributes of an SVG element for a mark item.\n * @param {object} mdef - The mark definition object\n * @param {SVGElement} el - The SVG element.\n * @param {Item} item - The mark item.\n */\n _update(mdef, el, item) {\n // set dom element and values cache\n // provides access to emit method\n element$1 = el;\n values$2 = el.__values__;\n\n // apply aria-specific properties\n ariaItemAttributes(emit, item);\n\n // apply svg attributes\n mdef.attr(emit, item, this);\n\n // some marks need special treatment\n const extra = mark_extras[mdef.type];\n if (extra) extra.call(this, mdef, el, item);\n\n // apply svg style attributes\n // note: element state may have been modified by 'extra' method\n if (element$1) this.style(element$1, item);\n },\n /**\n * Update the presentation attributes of an SVG element for a mark item.\n * @param {SVGElement} el - The SVG element.\n * @param {Item} item - The mark item.\n */\n style(el, item) {\n if (item == null) return;\n for (const prop in stylesAttr) {\n let value = prop === 'font' ? fontFamily(item) : item[prop];\n if (value === values$2[prop]) continue;\n const name = stylesAttr[prop];\n if (value == null) {\n el.removeAttribute(name);\n } else {\n if (isGradient(value)) {\n value = gradientRef(value, this._defs.gradient, href());\n }\n el.setAttribute(name, value + '');\n }\n values$2[prop] = value;\n }\n for (const prop in stylesCss) {\n setStyle(el, stylesCss[prop], item[prop]);\n }\n },\n /**\n * Render SVG defs, as needed.\n * Must be called *after* marks have been processed to ensure the\n * collected state is current and accurate.\n */\n defs() {\n const svg = this._svg,\n defs = this._defs;\n let el = defs.el,\n index = 0;\n for (const id in defs.gradient) {\n if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n index = updateGradient(el, defs.gradient[id], index);\n }\n for (const id in defs.clipping) {\n if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n index = updateClipping(el, defs.clipping[id], index);\n }\n\n // clean-up\n if (el) {\n index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n }\n },\n /**\n * Clear defs caches.\n */\n _clearDefs() {\n const def = this._defs;\n def.gradient = {};\n def.clipping = {};\n }\n});\n\n// mark ancestor chain with a dirty id\nfunction dirtyParents(item, id) {\n for (; item && item.dirty !== id; item = item.mark.group) {\n item.dirty = id;\n if (item.mark && item.mark.dirty !== id) {\n item.mark.dirty = id;\n } else return;\n }\n}\n\n// update gradient definitions\nfunction updateGradient(el, grad, index) {\n let i, n, stop;\n if (grad.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // We wrap the radial gradient in a pattern element, allowing us to\n // maintain a circular gradient that matches what canvas provides.\n let pt = domChild(el, index++, 'pattern', svgns);\n setAttributes(pt, {\n id: patternPrefix + grad.id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n pt = domChild(pt, 0, 'rect', svgns);\n setAttributes(pt, {\n width: 1,\n height: 1,\n fill: \"url(\".concat(href(), \"#\").concat(grad.id, \")\")\n });\n el = domChild(el, index++, 'radialGradient', svgns);\n setAttributes(el, {\n id: grad.id,\n fx: grad.x1,\n fy: grad.y1,\n fr: grad.r1,\n cx: grad.x2,\n cy: grad.y2,\n r: grad.r2\n });\n } else {\n el = domChild(el, index++, 'linearGradient', svgns);\n setAttributes(el, {\n id: grad.id,\n x1: grad.x1,\n x2: grad.x2,\n y1: grad.y1,\n y2: grad.y2\n });\n }\n for (i = 0, n = grad.stops.length; i < n; ++i) {\n stop = domChild(el, i, 'stop', svgns);\n stop.setAttribute('offset', grad.stops[i].offset);\n stop.setAttribute('stop-color', grad.stops[i].color);\n }\n domClear(el, i);\n return index;\n}\n\n// update clipping path definitions\nfunction updateClipping(el, clip, index) {\n let mask;\n el = domChild(el, index, 'clipPath', svgns);\n el.setAttribute('id', clip.id);\n if (clip.path) {\n mask = domChild(el, 0, 'path', svgns);\n mask.setAttribute('d', clip.path);\n } else {\n mask = domChild(el, 0, 'rect', svgns);\n setAttributes(mask, {\n x: 0,\n y: 0,\n width: clip.width,\n height: clip.height\n });\n }\n domClear(el, 1);\n return index + 1;\n}\n\n// Recursively process group contents.\nfunction recurse(renderer, el, group) {\n // child 'g' element is second to last among children (path, g, path)\n // other children here are foreground and background path elements\n el = el.lastChild.previousSibling;\n let prev,\n idx = 0;\n visit(group, item => {\n prev = renderer.mark(el, item, prev);\n ++idx;\n });\n\n // remove any extraneous DOM elements\n domClear(el, 1 + idx);\n}\n\n// Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\nfunction bind$1(item, el, sibling, tag, svg) {\n let node = item._svg,\n doc;\n\n // create a new dom node if needed\n if (!node) {\n doc = el.ownerDocument;\n node = domCreate(doc, tag, svgns);\n item._svg = node;\n if (item.mark) {\n node.__data__ = item;\n node.__values__ = {\n fill: 'default'\n };\n\n // if group, create background, content, and foreground elements\n if (tag === 'g') {\n const bg = domCreate(doc, 'path', svgns);\n node.appendChild(bg);\n bg.__data__ = item;\n const cg = domCreate(doc, 'g', svgns);\n node.appendChild(cg);\n cg.__data__ = item;\n const fg = domCreate(doc, 'path', svgns);\n node.appendChild(fg);\n fg.__data__ = item;\n fg.__values__ = {\n fill: 'default'\n };\n }\n }\n }\n\n // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n }\n return node;\n}\n\n// check if two nodes are ordered siblings\nfunction siblingCheck(node, sibling) {\n return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n}\n\n// -- Set attributes & styles on SVG elements ---\n\nlet element$1 = null,\n // temp var for current SVG element\n values$2 = null; // temp var for current values hash\n\n// Extra configuration for certain mark types\nconst mark_extras = {\n group(mdef, el, item) {\n const fg = element$1 = el.childNodes[2];\n values$2 = fg.__values__;\n mdef.foreground(emit, item, this);\n values$2 = el.__values__; // use parent's values hash\n element$1 = el.childNodes[1];\n mdef.content(emit, item, this);\n const bg = element$1 = el.childNodes[0];\n mdef.background(emit, item, this);\n const value = item.mark.interactive === false ? 'none' : null;\n if (value !== values$2.events) {\n setAttribute(fg, 'pointer-events', value);\n setAttribute(bg, 'pointer-events', value);\n values$2.events = value;\n }\n if (item.strokeForeground && item.stroke) {\n const fill = item.fill;\n setAttribute(fg, 'display', null);\n\n // set style of background\n this.style(bg, item);\n setAttribute(bg, 'stroke', null);\n\n // set style of foreground\n if (fill) item.fill = null;\n values$2 = fg.__values__;\n this.style(fg, item);\n if (fill) item.fill = fill;\n\n // leave element null to prevent downstream styling\n element$1 = null;\n } else {\n // ensure foreground is ignored\n setAttribute(fg, 'display', 'none');\n }\n },\n image(mdef, el, item) {\n if (item.smooth === false) {\n setStyle(el, 'image-rendering', 'optimizeSpeed');\n setStyle(el, 'image-rendering', 'pixelated');\n } else {\n setStyle(el, 'image-rendering', null);\n }\n },\n text(mdef, el, item) {\n const tl = textLines(item);\n let key, value, doc, lh;\n if (isArray(tl)) {\n // multi-line text\n value = tl.map(_ => textValue(item, _));\n key = value.join('\\n'); // content cache key\n\n if (key !== values$2.text) {\n domClear(el, 0);\n doc = el.ownerDocument;\n lh = lineHeight(item);\n value.forEach((t, i) => {\n const ts = domCreate(doc, 'tspan', svgns);\n ts.__data__ = item; // data binding\n ts.textContent = t;\n if (i) {\n ts.setAttribute('x', 0);\n ts.setAttribute('dy', lh);\n }\n el.appendChild(ts);\n });\n values$2.text = key;\n }\n } else {\n // single-line text\n value = textValue(item, tl);\n if (value !== values$2.text) {\n el.textContent = value;\n values$2.text = value;\n }\n }\n setAttribute(el, 'font-family', fontFamily(item));\n setAttribute(el, 'font-size', fontSize(item) + 'px');\n setAttribute(el, 'font-style', item.fontStyle);\n setAttribute(el, 'font-variant', item.fontVariant);\n setAttribute(el, 'font-weight', item.fontWeight);\n }\n};\nfunction emit(name, value, ns) {\n // early exit if value is unchanged\n if (value === values$2[name]) return;\n\n // use appropriate method given namespace (ns)\n if (ns) {\n setAttributeNS(element$1, name, value, ns);\n } else {\n setAttribute(element$1, name, value);\n }\n\n // note current value for future comparison\n values$2[name] = value;\n}\nfunction setStyle(el, name, value) {\n if (value !== values$2[name]) {\n if (value == null) {\n el.style.removeProperty(name);\n } else {\n el.style.setProperty(name, value + '');\n }\n values$2[name] = value;\n }\n}\nfunction setAttributes(el, attrs) {\n for (const key in attrs) {\n setAttribute(el, key, attrs[key]);\n }\n}\nfunction setAttribute(el, name, value) {\n if (value != null) {\n // if value is provided, update DOM attribute\n el.setAttribute(name, value);\n } else {\n // else remove DOM attribute\n el.removeAttribute(name);\n }\n}\nfunction setAttributeNS(el, name, value, ns) {\n if (value != null) {\n // if value is provided, update DOM attribute\n el.setAttributeNS(ns, name, value);\n } else {\n // else remove DOM attribute\n el.removeAttributeNS(ns, name);\n }\n}\nfunction href() {\n let loc;\n return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\nfunction SVGStringRenderer(loader) {\n Renderer.call(this, loader);\n this._text = null;\n this._defs = {\n gradient: {},\n clipping: {}\n };\n}\ninherits(SVGStringRenderer, Renderer, {\n /**\n * Returns the rendered SVG text string,\n * or null if rendering has not yet occurred.\n */\n svg() {\n return this._text;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render(scene) {\n const m = markup();\n\n // svg tag\n m.open('svg', extend$1({}, metadata, {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: \"0 0 \".concat(this._width, \" \").concat(this._height)\n }));\n\n // background, if defined\n const bg = this._bgcolor;\n if (bg && bg !== 'transparent' && bg !== 'none') {\n m.open('rect', {\n width: this._width,\n height: this._height,\n fill: bg\n }).close();\n }\n\n // root content group\n m.open('g', rootAttributes, {\n transform: 'translate(' + this._origin + ')'\n });\n this.mark(m, scene);\n m.close(); // \n\n // defs\n this.defs(m);\n\n // get SVG text string\n this._text = m.close() + '';\n return this;\n },\n /**\n * Render a set of mark items.\n * @param {object} m - The markup context.\n * @param {object} scene - The mark parent to render.\n */\n mark(m, scene) {\n const mdef = Marks[scene.marktype],\n tag = mdef.tag,\n attrList = [ariaItemAttributes, mdef.attr];\n\n // render opening group tag\n m.open('g', {\n 'class': cssClass(scene),\n 'clip-path': scene.clip ? clip$1$1(this, scene, scene.group) : null\n }, ariaMarkAttributes(scene), {\n 'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n });\n\n // render contained elements\n const process = item => {\n const href = this.href(item);\n if (href) m.open('a', href);\n m.open(tag, this.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n if (tag === 'text') {\n const tl = textLines(item);\n if (isArray(tl)) {\n // multi-line text\n const attrs = {\n x: 0,\n dy: lineHeight(item)\n };\n for (let i = 0; i < tl.length; ++i) {\n m.open('tspan', i ? attrs : null).text(textValue(item, tl[i])).close();\n }\n } else {\n // single-line text\n m.text(textValue(item, tl));\n }\n } else if (tag === 'g') {\n const fore = item.strokeForeground,\n fill = item.fill,\n stroke = item.stroke;\n if (fore && stroke) {\n item.stroke = null;\n }\n m.open('path', this.attr(scene, item, mdef.background, 'bgrect')).close();\n\n // recurse for group content\n m.open('g', this.attr(scene, item, mdef.content));\n visit(item, scene => this.mark(m, scene));\n m.close();\n if (fore && stroke) {\n if (fill) item.fill = null;\n item.stroke = stroke;\n m.open('path', this.attr(scene, item, mdef.foreground, 'bgrect')).close();\n if (fill) item.fill = fill;\n } else {\n m.open('path', this.attr(scene, item, mdef.foreground, 'bgfore')).close();\n }\n }\n m.close(); // \n if (href) m.close(); // \n };\n\n if (mdef.nested) {\n if (scene.items && scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n // render closing group tag\n return m.close(); // \n },\n\n /**\n * Get href attributes for a hyperlinked mark item.\n * @param {Item} item - The mark item.\n */\n href(item) {\n const href = item.href;\n let attr;\n if (href) {\n if (attr = this._hrefs && this._hrefs[href]) {\n return attr;\n } else {\n this.sanitizeURL(href).then(attr => {\n // rewrite to use xlink namespace\n attr['xlink:href'] = attr.href;\n attr.href = null;\n (this._hrefs || (this._hrefs = {}))[href] = attr;\n });\n }\n }\n return null;\n },\n /**\n * Get an object of SVG attributes for a mark item.\n * @param {object} scene - The mark parent.\n * @param {Item} item - The mark item.\n * @param {array|function} attrs - One or more attribute emitters.\n * @param {string} tag - The tag being rendered.\n */\n attr(scene, item, attrs, tag) {\n const object = {},\n emit = (name, value, ns, prefixed) => {\n object[prefixed || name] = value;\n };\n\n // apply mark specific attributes\n if (Array.isArray(attrs)) {\n attrs.forEach(fn => fn(emit, item, this));\n } else {\n attrs(emit, item, this);\n }\n\n // apply style attributes\n if (tag) {\n style(object, item, scene, tag, this._defs);\n }\n return object;\n },\n /**\n * Render SVG defs, as needed.\n * Must be called *after* marks have been processed to ensure the\n * collected state is current and accurate.\n * @param {object} m - The markup context.\n */\n defs(m) {\n const gradient = this._defs.gradient,\n clipping = this._defs.clipping,\n count = Object.keys(gradient).length + Object.keys(clipping).length;\n if (count === 0) return; // nothing to do\n\n m.open('defs');\n for (const id in gradient) {\n const def = gradient[id],\n stops = def.stops;\n if (def.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // We wrap the radial gradient in a pattern element, allowing us to\n // maintain a circular gradient that matches what canvas provides.\n\n m.open('pattern', {\n id: patternPrefix + id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n m.open('rect', {\n width: '1',\n height: '1',\n fill: 'url(#' + id + ')'\n }).close();\n m.close(); // \n\n m.open('radialGradient', {\n id: id,\n fx: def.x1,\n fy: def.y1,\n fr: def.r1,\n cx: def.x2,\n cy: def.y2,\n r: def.r2\n });\n } else {\n m.open('linearGradient', {\n id: id,\n x1: def.x1,\n x2: def.x2,\n y1: def.y1,\n y2: def.y2\n });\n }\n for (let i = 0; i < stops.length; ++i) {\n m.open('stop', {\n offset: stops[i].offset,\n 'stop-color': stops[i].color\n }).close();\n }\n m.close();\n }\n for (const id in clipping) {\n const def = clipping[id];\n m.open('clipPath', {\n id: id\n });\n if (def.path) {\n m.open('path', {\n d: def.path\n }).close();\n } else {\n m.open('rect', {\n x: 0,\n y: 0,\n width: def.width,\n height: def.height\n }).close();\n }\n m.close();\n }\n m.close();\n }\n});\n\n// Helper function for attr for style presentation attributes\nfunction style(s, item, scene, tag, defs) {\n let styleList;\n if (item == null) return s;\n if (tag === 'bgrect' && scene.interactive === false) {\n s['pointer-events'] = 'none';\n }\n if (tag === 'bgfore') {\n if (scene.interactive === false) {\n s['pointer-events'] = 'none';\n }\n s.display = 'none';\n if (item.fill !== null) return s;\n }\n if (tag === 'image' && item.smooth === false) {\n styleList = ['image-rendering: optimizeSpeed;', 'image-rendering: pixelated;'];\n }\n if (tag === 'text') {\n s['font-family'] = fontFamily(item);\n s['font-size'] = fontSize(item) + 'px';\n s['font-style'] = item.fontStyle;\n s['font-variant'] = item.fontVariant;\n s['font-weight'] = item.fontWeight;\n }\n for (const prop in stylesAttr) {\n let value = item[prop];\n const name = stylesAttr[prop];\n if (value === 'transparent' && (name === 'fill' || name === 'stroke')) ;else if (value != null) {\n if (isGradient(value)) {\n value = gradientRef(value, defs.gradient, '');\n }\n s[name] = value;\n }\n }\n for (const prop in stylesCss) {\n const value = item[prop];\n if (value != null) {\n styleList = styleList || [];\n styleList.push(\"\".concat(stylesCss[prop], \": \").concat(value, \";\"));\n }\n }\n if (styleList) {\n s.style = styleList.join(' ');\n }\n return s;\n}\nconst Canvas = 'canvas';\nconst PNG = 'png';\nconst SVG = 'svg';\nconst None$1 = 'none';\nconst RenderType = {\n Canvas: Canvas,\n PNG: PNG,\n SVG: SVG,\n None: None$1\n};\nconst modules = {};\nmodules[Canvas] = modules[PNG] = {\n renderer: CanvasRenderer,\n headless: CanvasRenderer,\n handler: CanvasHandler\n};\nmodules[SVG] = {\n renderer: SVGRenderer,\n headless: SVGStringRenderer,\n handler: SVGHandler\n};\nmodules[None$1] = {};\nfunction renderModule(name, _) {\n name = String(name || '').toLowerCase();\n if (arguments.length > 1) {\n modules[name] = _;\n return this;\n } else {\n return modules[name];\n }\n}\nfunction intersect$2(scene, bounds, filter) {\n const hits = [],\n // intersection results\n box = new Bounds().union(bounds),\n // defensive copy\n type = scene.marktype;\n return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : error('Intersect scene must be mark node or group item.');\n}\nfunction intersectMark(mark, box, filter, hits) {\n if (visitMark(mark, box, filter)) {\n const items = mark.items,\n type = mark.marktype,\n n = items.length;\n let i = 0;\n if (type === 'group') {\n for (; i < n; ++i) {\n intersectGroup(items[i], box, filter, hits);\n }\n } else {\n for (const test = Marks[type].isect; i < n; ++i) {\n const item = items[i];\n if (intersectItem(item, box, test)) hits.push(item);\n }\n }\n }\n return hits;\n}\nfunction visitMark(mark, box, filter) {\n // process if bounds intersect and if\n // (1) mark is a group mark (so we must recurse), or\n // (2) mark is interactive and passes filter\n return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\nfunction intersectGroup(group, box, filter, hits) {\n // test intersect against group\n // skip groups by default unless filter says otherwise\n if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n hits.push(group);\n }\n\n // recursively test children marks\n // translate box to group coordinate space\n const marks = group.items,\n n = marks && marks.length;\n if (n) {\n const x = group.x || 0,\n y = group.y || 0;\n box.translate(-x, -y);\n for (let i = 0; i < n; ++i) {\n intersectMark(marks[i], box, filter, hits);\n }\n box.translate(x, y);\n }\n return hits;\n}\nfunction intersectItem(item, box, test) {\n // test bounds enclosure, bounds intersection, then detailed test\n const bounds = item.bounds;\n return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\nconst clipBounds = new Bounds();\nfunction boundClip(mark) {\n const clip = mark.clip;\n if (isFunction$1(clip)) {\n clip(boundContext(clipBounds.clear()));\n } else if (clip) {\n clipBounds.set(0, 0, mark.group.width, mark.group.height);\n } else return;\n mark.bounds.intersect(clipBounds);\n}\nconst TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : isNumber$1(a) && isNumber$1(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !isObject(a) && !isObject(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n return sceneEqual(parse$3(a), parse$3(b));\n}\nfunction objectEqual(a, b) {\n var ka = Object.keys(a),\n kb = Object.keys(b),\n key,\n i;\n if (ka.length !== kb.length) return false;\n ka.sort();\n kb.sort();\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n }\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!sceneEqual(a[key], b[key], key)) return false;\n }\n return typeof a === typeof b;\n}\nfunction resetSVGDefIds() {\n resetSVGClipId();\n resetSVGGradientId();\n}\nconst Top$1 = 'top';\nconst Left$1 = 'left';\nconst Right$1 = 'right';\nconst Bottom$1 = 'bottom';\nconst TopLeft = 'top-left';\nconst TopRight = 'top-right';\nconst BottomLeft = 'bottom-left';\nconst BottomRight = 'bottom-right';\nconst Start$1 = 'start';\nconst Middle$1 = 'middle';\nconst End$1 = 'end';\nconst X$1 = 'x';\nconst Y$1 = 'y';\nconst Group = 'group';\nconst AxisRole$1 = 'axis';\nconst TitleRole$1 = 'title';\nconst FrameRole$1 = 'frame';\nconst ScopeRole$1 = 'scope';\nconst LegendRole$1 = 'legend';\nconst RowHeader = 'row-header';\nconst RowFooter = 'row-footer';\nconst RowTitle = 'row-title';\nconst ColHeader = 'column-header';\nconst ColFooter = 'column-footer';\nconst ColTitle = 'column-title';\nconst Padding$1 = 'padding';\nconst Symbols$1 = 'symbol';\nconst Fit = 'fit';\nconst FitX = 'fit-x';\nconst FitY = 'fit-y';\nconst Pad = 'pad';\nconst None = 'none';\nconst All = 'all';\nconst Each = 'each';\nconst Flush = 'flush';\nconst Column = 'column';\nconst Row = 'row';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\nfunction Bound$1(params) {\n Transform.call(this, null, params);\n}\ninherits(Bound$1, Transform, {\n transform(_, pulse) {\n const view = pulse.dataflow,\n mark = _.mark,\n type = mark.marktype,\n entry = Marks[type],\n bound = entry.bound;\n let markBounds = mark.bounds,\n rebound;\n if (entry.nested) {\n // multi-item marks have a single bounds instance\n if (mark.items.length) view.dirty(mark.items[0]);\n markBounds = boundItem(mark, bound);\n mark.items.forEach(item => {\n item.bounds.clear().union(markBounds);\n });\n } else if (type === Group || _.modified()) {\n // operator parameters modified -> re-bound all items\n // updates group bounds in response to modified group content\n pulse.visit(pulse.MOD, item => view.dirty(item));\n markBounds.clear();\n mark.items.forEach(item => markBounds.union(boundItem(item, bound)));\n\n // force reflow for axes/legends/titles to propagate any layout changes\n switch (mark.role) {\n case AxisRole$1:\n case LegendRole$1:\n case TitleRole$1:\n pulse.reflow();\n }\n } else {\n // incrementally update bounds, re-bound mark as needed\n rebound = pulse.changed(pulse.REM);\n pulse.visit(pulse.ADD, item => {\n markBounds.union(boundItem(item, bound));\n });\n pulse.visit(pulse.MOD, item => {\n rebound = rebound || markBounds.alignsWith(item.bounds);\n view.dirty(item);\n markBounds.union(boundItem(item, bound));\n });\n if (rebound) {\n markBounds.clear();\n mark.items.forEach(item => markBounds.union(item.bounds));\n }\n }\n\n // ensure mark bounds do not exceed any clipping region\n boundClip(mark);\n return pulse.modifies('bounds');\n }\n});\nfunction boundItem(item, bound, opt) {\n return bound(item.bounds.clear(), item, opt);\n}\nconst COUNTER_NAME = ':vega_identifier:';\n\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\nfunction Identifier$1(params) {\n Transform.call(this, 0, params);\n}\nIdentifier$1.Definition = {\n 'type': 'Identifier',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'as',\n 'type': 'string',\n 'required': true\n }]\n};\ninherits(Identifier$1, Transform, {\n transform(_, pulse) {\n const counter = getCounter(pulse.dataflow),\n as = _.as;\n let id = counter.value;\n pulse.visit(pulse.ADD, t => t[as] = t[as] || ++id);\n counter.set(this.value = id);\n return pulse;\n }\n});\nfunction getCounter(view) {\n return view._signals[COUNTER_NAME] || (view._signals[COUNTER_NAME] = view.add(0));\n}\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n * This is an object of legal scenegraph mark properties which *must* include\n * the 'marktype' property.\n */\nfunction Mark$2(params) {\n Transform.call(this, null, params);\n}\ninherits(Mark$2, Transform, {\n transform(_, pulse) {\n let mark = this.value;\n\n // acquire mark on first invocation, bind context and group\n if (!mark) {\n mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup$1$1(_), _.index);\n mark.group.context = _.context;\n if (!_.context.group) _.context.group = mark.group;\n mark.source = this.source; // point to upstream collector\n mark.clip = _.clip;\n mark.interactive = _.interactive;\n this.value = mark;\n }\n\n // initialize entering items\n const Init = mark.marktype === Group ? GroupItem : Item;\n pulse.visit(pulse.ADD, item => Init.call(item, mark));\n\n // update clipping and/or interactive status\n if (_.modified('clip') || _.modified('interactive')) {\n mark.clip = _.clip;\n mark.interactive = !!_.interactive;\n mark.zdirty = true; // force scenegraph re-eval\n pulse.reflow();\n }\n\n // bind items array to scenegraph mark\n mark.items = pulse.source;\n return pulse;\n }\n});\nfunction lookup$1$1(_) {\n const g = _.groups,\n p = _.parent;\n return g && g.size === 1 ? g.get(Object.keys(g.object)[0]) : g && p ? g.lookup(p) : null;\n}\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n * One of 'parity' (default, hide every other item until there is no\n * more overlap) or 'greedy' (sequentially scan and hide and items that\n * overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n * to bound the items. Items exceeding the bounds of the scale range\n * will be treated as overlapping. If null or undefined, no bounds check\n * will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n * (top, bottom, left, or right) used to bound items. This parameter is\n * ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n * bound inclusion testing (default 1). This specifies by how many pixels\n * an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\nfunction Overlap$1(params) {\n Transform.call(this, null, params);\n}\nconst methods = {\n parity: items => items.filter((item, i) => i % 2 ? item.opacity = 0 : 1),\n greedy: (items, sep) => {\n let a;\n return items.filter((b, i) => !i || !intersect$1(a.bounds, b.bounds, sep) ? (a = b, 1) : b.opacity = 0);\n }\n};\n\n// compute bounding box intersection\n// including padding pixels of separation\nconst intersect$1 = (a, b, sep) => sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);\nconst hasOverlap = (items, pad) => {\n for (var i = 1, n = items.length, a = items[0].bounds, b; i < n; a = b, ++i) {\n if (intersect$1(a, b = items[i].bounds, pad)) return true;\n }\n};\nconst hasBounds = item => {\n const b = item.bounds;\n return b.width() > 1 && b.height() > 1;\n};\nconst boundTest = (scale, orient, tolerance) => {\n var range = scale.range(),\n b = new Bounds();\n if (orient === Top$1 || orient === Bottom$1) {\n b.set(range[0], -Infinity, range[1], +Infinity);\n } else {\n b.set(-Infinity, range[0], +Infinity, range[1]);\n }\n b.expand(tolerance || 1);\n return item => b.encloses(item.bounds);\n};\n\n// reset all items to be fully opaque\nconst reset$1 = source => {\n source.forEach(item => item.opacity = 1);\n return source;\n};\n\n// add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\nconst reflow = (pulse, _) => pulse.reflow(_.modified()).modifies('opacity');\ninherits(Overlap$1, Transform, {\n transform(_, pulse) {\n const reduce = methods[_.method] || methods.parity,\n sep = _.separation || 0;\n let source = pulse.materialize(pulse.SOURCE).source,\n items,\n test;\n if (!source || !source.length) return;\n if (!_.method) {\n // early exit if method is falsy\n if (_.modified('method')) {\n reset$1(source);\n pulse = reflow(pulse, _);\n }\n return pulse;\n }\n\n // skip labels with no content\n source = source.filter(hasBounds);\n\n // early exit, nothing to do\n if (!source.length) return;\n if (_.sort) {\n source = source.slice().sort(_.sort);\n }\n items = reset$1(source);\n pulse = reflow(pulse, _);\n if (items.length >= 3 && hasOverlap(items, sep)) {\n do {\n items = reduce(items, sep);\n } while (items.length >= 3 && hasOverlap(items, sep));\n if (items.length < 3 && !peek$1(source).opacity) {\n if (items.length > 1) peek$1(items).opacity = 0;\n peek$1(source).opacity = 1;\n }\n }\n if (_.boundScale && _.boundTolerance >= 0) {\n test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n source.forEach(item => {\n if (!test(item)) item.opacity = 0;\n });\n }\n\n // re-calculate mark bounds\n const bounds = items[0].mark.bounds.clear();\n source.forEach(item => {\n if (item.opacity) bounds.union(item.bounds);\n });\n return pulse;\n }\n});\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\nfunction Render$1(params) {\n Transform.call(this, null, params);\n}\ninherits(Render$1, Transform, {\n transform(_, pulse) {\n const view = pulse.dataflow;\n pulse.visit(pulse.ALL, item => view.dirty(item));\n\n // set z-index dirty flag as needed\n if (pulse.fields && pulse.fields['zindex']) {\n const item = pulse.source && pulse.source[0];\n if (item) item.mark.zdirty = true;\n }\n }\n});\nconst tempBounds = new Bounds();\nfunction set$4(item, property, value) {\n return item[property] === value ? 0 : (item[property] = value, 1);\n}\nfunction isYAxis(mark) {\n var orient = mark.items[0].orient;\n return orient === Left$1 || orient === Right$1;\n}\nfunction axisIndices(datum) {\n let index = +datum.grid;\n return [datum.ticks ? index++ : -1,\n // ticks index\n datum.labels ? index++ : -1,\n // labels index\n index + +datum.domain // title index\n ];\n}\n\nfunction axisLayout(view, axis, width, height) {\n var item = axis.items[0],\n datum = item.datum,\n delta = item.translate != null ? item.translate : 0.5,\n orient = item.orient,\n indices = axisIndices(datum),\n range = item.range,\n offset = item.offset,\n position = item.position,\n minExtent = item.minExtent,\n maxExtent = item.maxExtent,\n title = datum.title && item.items[indices[2]].items[0],\n titlePadding = item.titlePadding,\n bounds = item.bounds,\n dl = title && multiLineOffset(title),\n x = 0,\n y = 0,\n i,\n s;\n tempBounds.clear().union(bounds);\n bounds.clear();\n if ((i = indices[0]) > -1) bounds.union(item.items[i].bounds);\n if ((i = indices[1]) > -1) bounds.union(item.items[i].bounds);\n\n // position axis group and title\n switch (orient) {\n case Top$1:\n x = position || 0;\n y = -offset;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n bounds.add(0, -s).add(range, 0);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 0, -1, bounds);\n break;\n case Left$1:\n x = -offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n bounds.add(-s, 0).add(0, range);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, -1, bounds);\n break;\n case Right$1:\n x = width + offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n bounds.add(0, 0).add(s, range);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, 1, bounds);\n break;\n case Bottom$1:\n x = position || 0;\n y = height + offset;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n bounds.add(0, 0).add(range, s);\n if (title) axisTitleLayout(view, title, s, titlePadding, 0, 0, 1, bounds);\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n // update bounds\n boundStroke(bounds.translate(x, y), item);\n if (set$4(item, 'x', x + delta) | set$4(item, 'y', y + delta)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n return item.mark.bounds.clear().union(bounds);\n}\nfunction axisTitleLayout(view, title, offset, pad, dl, isYAxis, sign, bounds) {\n const b = title.bounds;\n if (title.auto) {\n const v = sign * (offset + dl + pad);\n let dx = 0,\n dy = 0;\n view.dirty(title);\n isYAxis ? dx = (title.x || 0) - (title.x = v) : dy = (title.y || 0) - (title.y = v);\n title.mark.bounds.clear().union(b.translate(-dx, -dy));\n view.dirty(title);\n }\n bounds.union(b);\n}\n\n// aggregation functions for grid margin determination\nconst min = (a, b) => Math.floor(Math.min(a, b));\nconst max = (a, b) => Math.ceil(Math.max(a, b));\nfunction gridLayoutGroups(group) {\n var groups = group.items,\n n = groups.length,\n i = 0,\n mark,\n items;\n const views = {\n marks: [],\n rowheaders: [],\n rowfooters: [],\n colheaders: [],\n colfooters: [],\n rowtitle: null,\n coltitle: null\n };\n\n // layout axes, gather legends, collect bounds\n for (; i < n; ++i) {\n mark = groups[i];\n items = mark.items;\n if (mark.marktype === Group) {\n switch (mark.role) {\n case AxisRole$1:\n case LegendRole$1:\n case TitleRole$1:\n break;\n case RowHeader:\n views.rowheaders.push(...items);\n break;\n case RowFooter:\n views.rowfooters.push(...items);\n break;\n case ColHeader:\n views.colheaders.push(...items);\n break;\n case ColFooter:\n views.colfooters.push(...items);\n break;\n case RowTitle:\n views.rowtitle = items[0];\n break;\n case ColTitle:\n views.coltitle = items[0];\n break;\n default:\n views.marks.push(...items);\n }\n }\n }\n return views;\n}\nfunction bboxFlush(item) {\n return new Bounds().set(0, 0, item.width || 0, item.height || 0);\n}\nfunction bboxFull(item) {\n const b = item.bounds.clone();\n return b.empty() ? b.set(0, 0, 0, 0) : b.translate(-(item.x || 0), -(item.y || 0));\n}\nfunction get$2(opt, key, d) {\n const v = isObject(opt) ? opt[key] : opt;\n return v != null ? v : d !== undefined ? d : 0;\n}\nfunction offsetValue$1(v) {\n return v < 0 ? Math.ceil(-v) : 0;\n}\nfunction gridLayout(view, groups, opt) {\n var dirty = !opt.nodirty,\n bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n bounds = tempBounds.set(0, 0, 0, 0),\n alignCol = get$2(opt.align, Column),\n alignRow = get$2(opt.align, Row),\n padCol = get$2(opt.padding, Column),\n padRow = get$2(opt.padding, Row),\n ncols = opt.columns || groups.length,\n nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n n = groups.length,\n xOffset = Array(n),\n xExtent = Array(ncols),\n xMax = 0,\n yOffset = Array(n),\n yExtent = Array(nrows),\n yMax = 0,\n dx = Array(n),\n dy = Array(n),\n boxes = Array(n),\n m,\n i,\n c,\n r,\n b,\n g,\n px,\n py,\n x,\n y,\n offset;\n for (i = 0; i < ncols; ++i) xExtent[i] = 0;\n for (i = 0; i < nrows; ++i) yExtent[i] = 0;\n\n // determine offsets for each group\n for (i = 0; i < n; ++i) {\n g = groups[i];\n b = boxes[i] = bbox(g);\n g.x = g.x || 0;\n dx[i] = 0;\n g.y = g.y || 0;\n dy[i] = 0;\n c = i % ncols;\n r = ~~(i / ncols);\n xMax = Math.max(xMax, px = Math.ceil(b.x2));\n yMax = Math.max(yMax, py = Math.ceil(b.y2));\n xExtent[c] = Math.max(xExtent[c], px);\n yExtent[r] = Math.max(yExtent[r], py);\n xOffset[i] = padCol + offsetValue$1(b.x1);\n yOffset[i] = padRow + offsetValue$1(b.y1);\n if (dirty) view.dirty(groups[i]);\n }\n\n // set initial alignment offsets\n for (i = 0; i < n; ++i) {\n if (i % ncols === 0) xOffset[i] = 0;\n if (i < ncols) yOffset[i] = 0;\n }\n\n // enforce column alignment constraints\n if (alignCol === Each) {\n for (c = 1; c < ncols; ++c) {\n for (offset = 0, i = c; i < n; i += ncols) {\n if (offset < xOffset[i]) offset = xOffset[i];\n }\n for (i = c; i < n; i += ncols) {\n xOffset[i] = offset + xExtent[c - 1];\n }\n }\n } else if (alignCol === All) {\n for (offset = 0, i = 0; i < n; ++i) {\n if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n }\n for (i = 0; i < n; ++i) {\n if (i % ncols) xOffset[i] = offset + xMax;\n }\n } else {\n for (alignCol = false, c = 1; c < ncols; ++c) {\n for (i = c; i < n; i += ncols) {\n xOffset[i] += xExtent[c - 1];\n }\n }\n }\n\n // enforce row alignment constraints\n if (alignRow === Each) {\n for (r = 1; r < nrows; ++r) {\n for (offset = 0, i = r * ncols, m = i + ncols; i < m; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i = r * ncols; i < m; ++i) {\n yOffset[i] = offset + yExtent[r - 1];\n }\n }\n } else if (alignRow === All) {\n for (offset = 0, i = ncols; i < n; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i = ncols; i < n; ++i) {\n yOffset[i] = offset + yMax;\n }\n } else {\n for (alignRow = false, r = 1; r < nrows; ++r) {\n for (i = r * ncols, m = i + ncols; i < m; ++i) {\n yOffset[i] += yExtent[r - 1];\n }\n }\n }\n\n // perform horizontal grid layout\n for (x = 0, i = 0; i < n; ++i) {\n x = xOffset[i] + (i % ncols ? x : 0);\n dx[i] += x - groups[i].x;\n }\n\n // perform vertical grid layout\n for (c = 0; c < ncols; ++c) {\n for (y = 0, i = c; i < n; i += ncols) {\n y += yOffset[i];\n dy[i] += y - groups[i].y;\n }\n }\n\n // perform horizontal centering\n if (alignCol && get$2(opt.center, Column) && nrows > 1) {\n for (i = 0; i < n; ++i) {\n b = alignCol === All ? xMax : xExtent[i % ncols];\n x = b - boxes[i].x2 - groups[i].x - dx[i];\n if (x > 0) dx[i] += x / 2;\n }\n }\n\n // perform vertical centering\n if (alignRow && get$2(opt.center, Row) && ncols !== 1) {\n for (i = 0; i < n; ++i) {\n b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n y = b - boxes[i].y2 - groups[i].y - dy[i];\n if (y > 0) dy[i] += y / 2;\n }\n }\n\n // position grid relative to anchor\n for (i = 0; i < n; ++i) {\n bounds.union(boxes[i].translate(dx[i], dy[i]));\n }\n x = get$2(opt.anchor, X$1);\n y = get$2(opt.anchor, Y$1);\n switch (get$2(opt.anchor, Column)) {\n case End$1:\n x -= bounds.width();\n break;\n case Middle$1:\n x -= bounds.width() / 2;\n }\n switch (get$2(opt.anchor, Row)) {\n case End$1:\n y -= bounds.height();\n break;\n case Middle$1:\n y -= bounds.height() / 2;\n }\n x = Math.round(x);\n y = Math.round(y);\n\n // update mark positions, bounds, dirty\n bounds.clear();\n for (i = 0; i < n; ++i) {\n groups[i].mark.bounds.clear();\n }\n for (i = 0; i < n; ++i) {\n g = groups[i];\n g.x += dx[i] += x;\n g.y += dy[i] += y;\n bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n if (dirty) view.dirty(g);\n }\n return bounds;\n}\nfunction trellisLayout(view, group, opt) {\n var views = gridLayoutGroups(group),\n groups = views.marks,\n bbox = opt.bounds === Flush ? boundFlush : boundFull,\n off = opt.offset,\n ncols = opt.columns || groups.length,\n nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n cells = nrows * ncols,\n x,\n y,\n x2,\n y2,\n anchor,\n band,\n offset;\n\n // -- initial grid layout\n const bounds = gridLayout(view, groups, opt);\n if (bounds.empty()) bounds.set(0, 0, 0, 0); // empty grid\n\n // -- layout grid headers and footers --\n\n // perform row header layout\n if (views.rowheaders) {\n band = get$2(opt.headerBand, Row, null);\n x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get$2(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n }\n\n // perform column header layout\n if (views.colheaders) {\n band = get$2(opt.headerBand, Column, null);\n y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get$2(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n }\n\n // perform row footer layout\n if (views.rowfooters) {\n band = get$2(opt.footerBand, Row, null);\n x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get$2(off, 'rowFooter'), max, 0, bbox, 'x2', ncols - 1, ncols, 1, band);\n }\n\n // perform column footer layout\n if (views.colfooters) {\n band = get$2(opt.footerBand, Column, null);\n y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get$2(off, 'columnFooter'), max, 1, bbox, 'y2', cells - ncols, 1, ncols, band);\n }\n\n // perform row title layout\n if (views.rowtitle) {\n anchor = get$2(opt.titleAnchor, Row);\n offset = get$2(off, 'rowTitle');\n offset = anchor === End$1 ? x2 + offset : x - offset;\n band = get$2(opt.titleBand, Row, 0.5);\n layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n }\n\n // perform column title layout\n if (views.coltitle) {\n anchor = get$2(opt.titleAnchor, Column);\n offset = get$2(off, 'columnTitle');\n offset = anchor === End$1 ? y2 + offset : y - offset;\n band = get$2(opt.titleBand, Column, 0.5);\n layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n }\n}\nfunction boundFlush(item, field) {\n return field === 'x1' ? item.x || 0 : field === 'y1' ? item.y || 0 : field === 'x2' ? (item.x || 0) + (item.width || 0) : field === 'y2' ? (item.y || 0) + (item.height || 0) : undefined;\n}\nfunction boundFull(item, field) {\n return item.bounds[field];\n}\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n var n = groups.length,\n init = 0,\n edge = 0,\n i,\n j,\n k,\n m,\n b,\n h,\n g,\n x,\n y;\n\n // if no groups, early exit and return 0\n if (!n) return init;\n\n // compute margin\n for (i = start; i < n; i += stride) {\n if (groups[i]) init = agg(init, bound(groups[i], bf));\n }\n\n // if no headers, return margin calculation\n if (!headers.length) return init;\n\n // check if number of headers exceeds number of rows or columns\n if (headers.length > limit) {\n view.warn('Grid headers exceed limit: ' + limit);\n headers = headers.slice(0, limit);\n }\n\n // apply offset\n init += offset;\n\n // clear mark bounds for all headers\n for (j = 0, m = headers.length; j < m; ++j) {\n view.dirty(headers[j]);\n headers[j].mark.bounds.clear();\n }\n\n // layout each header\n for (i = start, j = 0, m = headers.length; j < m; ++j, i += stride) {\n h = headers[j];\n b = h.mark.bounds;\n\n // search for nearest group to align to\n // necessary if table has empty cells\n for (k = i; k >= 0 && (g = groups[k]) == null; k -= back);\n\n // assign coordinates and update bounds\n if (isX) {\n x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n y = init;\n } else {\n x = init;\n y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n }\n b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n h.x = x;\n h.y = y;\n view.dirty(h);\n\n // update current edge of layout bounds\n edge = agg(edge, b[bf]);\n }\n return edge;\n}\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n if (!g) return;\n view.dirty(g);\n\n // compute title coordinates\n var x = offset,\n y = offset;\n isX ? x = Math.round(bounds.x1 + band * bounds.width()) : y = Math.round(bounds.y1 + band * bounds.height());\n\n // assign coordinates and update bounds\n g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n g.mark.bounds.clear().union(g.bounds);\n g.x = x;\n g.y = y;\n\n // queue title for redraw\n view.dirty(g);\n}\n\n// utility for looking up legend layout configuration\nfunction lookup$3(config, orient) {\n const opt = config[orient] || {};\n return (key, d) => opt[key] != null ? opt[key] : config[key] != null ? config[key] : d;\n}\n\n// if legends specify offset directly, use the maximum specified value\nfunction offsets(legends, value) {\n let max = -Infinity;\n legends.forEach(item => {\n if (item.offset != null) max = Math.max(max, item.offset);\n });\n return max > -Infinity ? max : value;\n}\nfunction legendParams(g, orient, config, xb, yb, w, h) {\n const _ = lookup$3(config, orient),\n offset = offsets(g, _('offset', 0)),\n anchor = _('anchor', Start$1),\n mult = anchor === End$1 ? 1 : anchor === Middle$1 ? 0.5 : 0;\n const p = {\n align: Each,\n bounds: _('bounds', Flush),\n columns: _('direction') === 'vertical' ? 1 : g.length,\n padding: _('margin', 8),\n center: _('center'),\n nodirty: true\n };\n switch (orient) {\n case Left$1:\n p.anchor = {\n x: Math.floor(xb.x1) - offset,\n column: End$1,\n y: mult * (h || xb.height() + 2 * xb.y1),\n row: anchor\n };\n break;\n case Right$1:\n p.anchor = {\n x: Math.ceil(xb.x2) + offset,\n y: mult * (h || xb.height() + 2 * xb.y1),\n row: anchor\n };\n break;\n case Top$1:\n p.anchor = {\n y: Math.floor(yb.y1) - offset,\n row: End$1,\n x: mult * (w || yb.width() + 2 * yb.x1),\n column: anchor\n };\n break;\n case Bottom$1:\n p.anchor = {\n y: Math.ceil(yb.y2) + offset,\n x: mult * (w || yb.width() + 2 * yb.x1),\n column: anchor\n };\n break;\n case TopLeft:\n p.anchor = {\n x: offset,\n y: offset\n };\n break;\n case TopRight:\n p.anchor = {\n x: w - offset,\n y: offset,\n column: End$1\n };\n break;\n case BottomLeft:\n p.anchor = {\n x: offset,\n y: h - offset,\n row: End$1\n };\n break;\n case BottomRight:\n p.anchor = {\n x: w - offset,\n y: h - offset,\n column: End$1,\n row: End$1\n };\n break;\n }\n return p;\n}\nfunction legendLayout(view, legend) {\n var item = legend.items[0],\n datum = item.datum,\n orient = item.orient,\n bounds = item.bounds,\n x = item.x,\n y = item.y,\n w,\n h;\n\n // cache current bounds for later comparison\n item._bounds ? item._bounds.clear().union(bounds) : item._bounds = bounds.clone();\n bounds.clear();\n\n // adjust legend to accommodate padding and title\n legendGroupLayout(view, item, item.items[0].items[0]);\n\n // aggregate bounds to determine size, and include origin\n bounds = legendBounds(item, bounds);\n w = 2 * item.padding;\n h = 2 * item.padding;\n if (!bounds.empty()) {\n w = Math.ceil(bounds.width() + w);\n h = Math.ceil(bounds.height() + h);\n }\n if (datum.type === Symbols$1) {\n legendEntryLayout(item.items[0].items[0].items[0].items);\n }\n if (orient !== None) {\n item.x = x = 0;\n item.y = y = 0;\n }\n item.width = w;\n item.height = h;\n boundStroke(bounds.set(x, y, x + w, y + h), item);\n item.mark.bounds.clear().union(bounds);\n return item;\n}\nfunction legendBounds(item, b) {\n // aggregate item bounds\n item.items.forEach(_ => b.union(_.bounds));\n\n // anchor to legend origin\n b.x1 = item.padding;\n b.y1 = item.padding;\n return b;\n}\nfunction legendGroupLayout(view, item, entry) {\n var pad = item.padding,\n ex = pad - entry.x,\n ey = pad - entry.y;\n if (!item.datum.title) {\n if (ex || ey) translate$1(view, entry, ex, ey);\n } else {\n var title = item.items[1].items[0],\n anchor = title.anchor,\n tpad = item.titlePadding || 0,\n tx = pad - title.x,\n ty = pad - title.y;\n switch (title.orient) {\n case Left$1:\n ex += Math.ceil(title.bounds.width()) + tpad;\n break;\n case Right$1:\n case Bottom$1:\n break;\n default:\n ey += title.bounds.height() + tpad;\n }\n if (ex || ey) translate$1(view, entry, ex, ey);\n switch (title.orient) {\n case Left$1:\n ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n break;\n case Right$1:\n tx += legendTitleOffset(item, entry, title, End$1, 0, 0) + tpad;\n ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n break;\n case Bottom$1:\n tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n ty += legendTitleOffset(item, entry, title, End$1, -1, 0, 1) + tpad;\n break;\n default:\n tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n }\n if (tx || ty) translate$1(view, title, tx, ty);\n\n // translate legend if title pushes into negative coordinates\n if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n translate$1(view, entry, -tx, 0);\n translate$1(view, title, -tx, 0);\n }\n }\n}\nfunction legendTitleOffset(item, entry, title, anchor, y, lr, noBar) {\n const grad = item.datum.type !== 'symbol',\n vgrad = title.datum.vgrad,\n e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n s = e.bounds[y ? 'y2' : 'x2'] - item.padding,\n u = vgrad && lr ? s : 0,\n v = vgrad && lr ? 0 : s,\n o = y <= 0 ? 0 : multiLineOffset(title);\n return Math.round(anchor === Start$1 ? u : anchor === End$1 ? v - o : 0.5 * (s - o));\n}\nfunction translate$1(view, item, dx, dy) {\n item.x += dx;\n item.y += dy;\n item.bounds.translate(dx, dy);\n item.mark.bounds.translate(dx, dy);\n view.dirty(item);\n}\nfunction legendEntryLayout(entries) {\n // get max widths for each column\n const widths = entries.reduce((w, g) => {\n w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n return w;\n }, {});\n\n // set dimensions of legend entry groups\n entries.forEach(g => {\n g.width = widths[g.column];\n g.height = g.bounds.y2 - g.y;\n });\n}\nfunction titleLayout(view, mark, width, height, viewBounds) {\n var group = mark.items[0],\n frame = group.frame,\n orient = group.orient,\n anchor = group.anchor,\n offset = group.offset,\n padding = group.padding,\n title = group.items[0].items[0],\n subtitle = group.items[1] && group.items[1].items[0],\n end = orient === Left$1 || orient === Right$1 ? height : width,\n start = 0,\n x = 0,\n y = 0,\n sx = 0,\n sy = 0,\n pos;\n if (frame !== Group) {\n orient === Left$1 ? (start = viewBounds.y2, end = viewBounds.y1) : orient === Right$1 ? (start = viewBounds.y1, end = viewBounds.y2) : (start = viewBounds.x1, end = viewBounds.x2);\n } else if (orient === Left$1) {\n start = height, end = 0;\n }\n pos = anchor === Start$1 ? start : anchor === End$1 ? end : (start + end) / 2;\n if (subtitle && subtitle.text) {\n // position subtitle\n switch (orient) {\n case Top$1:\n case Bottom$1:\n sy = title.bounds.height() + padding;\n break;\n case Left$1:\n sx = title.bounds.width() + padding;\n break;\n case Right$1:\n sx = -title.bounds.width() - padding;\n break;\n }\n tempBounds.clear().union(subtitle.bounds);\n tempBounds.translate(sx - (subtitle.x || 0), sy - (subtitle.y || 0));\n if (set$4(subtitle, 'x', sx) | set$4(subtitle, 'y', sy)) {\n view.dirty(subtitle);\n subtitle.bounds.clear().union(tempBounds);\n subtitle.mark.bounds.clear().union(tempBounds);\n view.dirty(subtitle);\n }\n tempBounds.clear().union(subtitle.bounds);\n } else {\n tempBounds.clear();\n }\n tempBounds.union(title.bounds);\n\n // position title group\n switch (orient) {\n case Top$1:\n x = pos;\n y = viewBounds.y1 - tempBounds.height() - offset;\n break;\n case Left$1:\n x = viewBounds.x1 - tempBounds.width() - offset;\n y = pos;\n break;\n case Right$1:\n x = viewBounds.x2 + tempBounds.width() + offset;\n y = pos;\n break;\n case Bottom$1:\n x = pos;\n y = viewBounds.y2 + offset;\n break;\n default:\n x = group.x;\n y = group.y;\n }\n if (set$4(group, 'x', x) | set$4(group, 'y', y)) {\n tempBounds.translate(x, y);\n view.dirty(group);\n group.bounds.clear().union(tempBounds);\n mark.bounds.clear().union(tempBounds);\n view.dirty(group);\n }\n return group.bounds;\n}\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\nfunction ViewLayout$1(params) {\n Transform.call(this, null, params);\n}\ninherits(ViewLayout$1, Transform, {\n transform(_, pulse) {\n const view = pulse.dataflow;\n _.mark.items.forEach(group => {\n if (_.layout) trellisLayout(view, group, _.layout);\n layoutGroup(view, group, _);\n });\n return shouldReflow(_.mark.group) ? pulse.reflow() : pulse;\n }\n});\nfunction shouldReflow(group) {\n // We typically should reflow if layout is invoked (#2568), as child items\n // may have resized and reflow ensures group bounds are re-calculated.\n // However, legend entries have a special exception to avoid instability.\n // For example, if a selected legend symbol gains a stroke on hover,\n // we don't want to re-position subsequent elements in the legend.\n return group && group.mark.role !== 'legend-entry';\n}\nfunction layoutGroup(view, group, _) {\n var items = group.items,\n width = Math.max(0, group.width || 0),\n height = Math.max(0, group.height || 0),\n viewBounds = new Bounds().set(0, 0, width, height),\n xBounds = viewBounds.clone(),\n yBounds = viewBounds.clone(),\n legends = [],\n title,\n mark,\n orient,\n b,\n i,\n n;\n\n // layout axes, gather legends, collect bounds\n for (i = 0, n = items.length; i < n; ++i) {\n mark = items[i];\n switch (mark.role) {\n case AxisRole$1:\n b = isYAxis(mark) ? xBounds : yBounds;\n b.union(axisLayout(view, mark, width, height));\n break;\n case TitleRole$1:\n title = mark;\n break;\n case LegendRole$1:\n legends.push(legendLayout(view, mark));\n break;\n case FrameRole$1:\n case ScopeRole$1:\n case RowHeader:\n case RowFooter:\n case RowTitle:\n case ColHeader:\n case ColFooter:\n case ColTitle:\n xBounds.union(mark.bounds);\n yBounds.union(mark.bounds);\n break;\n default:\n viewBounds.union(mark.bounds);\n }\n }\n\n // layout legends, adjust viewBounds\n if (legends.length) {\n // group legends by orient\n const l = {};\n legends.forEach(item => {\n orient = item.orient || Right$1;\n if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n });\n\n // perform grid layout for each orient group\n for (const orient in l) {\n const g = l[orient];\n gridLayout(view, g, legendParams(g, orient, _.legends, xBounds, yBounds, width, height));\n }\n\n // update view bounds\n legends.forEach(item => {\n const b = item.bounds;\n if (!b.equals(item._bounds)) {\n item.bounds = item._bounds;\n view.dirty(item); // dirty previous location\n item.bounds = b;\n view.dirty(item);\n }\n if (_.autosize && (_.autosize.type === Fit || _.autosize.type === FitX || _.autosize.type === FitY)) {\n // For autosize fit, incorporate the orthogonal dimension only.\n // Legends that overrun the chart area will then be clipped;\n // otherwise the chart area gets reduced to nothing!\n switch (item.orient) {\n case Left$1:\n case Right$1:\n viewBounds.add(b.x1, 0).add(b.x2, 0);\n break;\n case Top$1:\n case Bottom$1:\n viewBounds.add(0, b.y1).add(0, b.y2);\n }\n } else {\n viewBounds.union(b);\n }\n });\n }\n\n // combine bounding boxes\n viewBounds.union(xBounds).union(yBounds);\n\n // layout title, adjust bounds\n if (title) {\n viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n }\n\n // override aggregated view bounds if content is clipped\n if (group.clip) {\n viewBounds.set(0, 0, group.width || 0, group.height || 0);\n }\n\n // perform size adjustment\n viewSizeLayout(view, group, viewBounds, _);\n}\nfunction viewSizeLayout(view, group, viewBounds, _) {\n const auto = _.autosize || {},\n type = auto.type;\n if (view._autosize < 1 || !type) return;\n let viewWidth = view._width,\n viewHeight = view._height,\n width = Math.max(0, group.width || 0),\n left = Math.max(0, Math.ceil(-viewBounds.x1)),\n height = Math.max(0, group.height || 0),\n top = Math.max(0, Math.ceil(-viewBounds.y1));\n const right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n if (auto.contains === Padding$1) {\n const padding = view.padding();\n viewWidth -= padding.left + padding.right;\n viewHeight -= padding.top + padding.bottom;\n }\n if (type === None) {\n left = 0;\n top = 0;\n width = viewWidth;\n height = viewHeight;\n } else if (type === Fit) {\n width = Math.max(0, viewWidth - left - right);\n height = Math.max(0, viewHeight - top - bottom);\n } else if (type === FitX) {\n width = Math.max(0, viewWidth - left - right);\n viewHeight = height + top + bottom;\n } else if (type === FitY) {\n viewWidth = width + left + right;\n height = Math.max(0, viewHeight - top - bottom);\n } else if (type === Pad) {\n viewWidth = width + left + right;\n viewHeight = height + top + bottom;\n }\n view._resizeView(viewWidth, viewHeight, width, height, [left, top], auto.resize);\n}\nvar vtx = /*#__PURE__*/Object.freeze({\n __proto__: null,\n bound: Bound$1,\n identifier: Identifier$1,\n mark: Mark$2,\n overlap: Overlap$1,\n render: Render$1,\n viewlayout: ViewLayout$1\n});\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nfunction AxisTicks$1(params) {\n Transform.call(this, null, params);\n}\ninherits(AxisTicks$1, Transform, {\n transform(_, pulse) {\n if (this.value && !_.modified()) {\n return pulse.StopPropagation;\n }\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n ticks = this.value,\n scale = _.scale,\n tally = _.count == null ? _.values ? _.values.length : 10 : _.count,\n count = tickCount(scale, tally, _.minstep),\n format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values),\n values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n if (ticks) out.rem = ticks;\n ticks = values.map((value, i) => ingest$1({\n index: i / (values.length - 1 || 1),\n value: value,\n label: format(value)\n }));\n if (_.extra && ticks.length) {\n // add an extra tick pegged to the initial domain value\n // this is used to generate axes with 'binned' domains\n ticks.push(ingest$1({\n index: -1,\n extra: {\n value: ticks[0].value\n },\n label: ''\n }));\n }\n out.source = ticks;\n out.add = ticks;\n this.value = ticks;\n return out;\n }\n});\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nfunction DataJoin$1(params) {\n Transform.call(this, null, params);\n}\nfunction defaultItemCreate() {\n return ingest$1({});\n}\nfunction newMap(key) {\n const map = fastmap().test(t => t.exit);\n map.lookup = t => map.get(key(t));\n return map;\n}\ninherits(DataJoin$1, Transform, {\n transform(_, pulse) {\n var df = pulse.dataflow,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n item = _.item || defaultItemCreate,\n key = _.key || tupleid,\n map = this.value;\n\n // prevent transient (e.g., hover) requests from\n // cascading across marks derived from marks\n if (isArray(out.encode)) {\n out.encode = null;\n }\n if (map && (_.modified('key') || pulse.modified(key))) {\n error('DataJoin does not support modified key function or fields.');\n }\n if (!map) {\n pulse = pulse.addAll();\n this.value = map = newMap(key);\n }\n pulse.visit(pulse.ADD, t => {\n const k = key(t);\n let x = map.get(k);\n if (x) {\n if (x.exit) {\n map.empty--;\n out.add.push(x);\n } else {\n out.mod.push(x);\n }\n } else {\n x = item(t);\n map.set(k, x);\n out.add.push(x);\n }\n x.datum = t;\n x.exit = false;\n });\n pulse.visit(pulse.MOD, t => {\n const k = key(t),\n x = map.get(k);\n if (x) {\n x.datum = t;\n out.mod.push(x);\n }\n });\n pulse.visit(pulse.REM, t => {\n const k = key(t),\n x = map.get(k);\n if (t === x.datum && !x.exit) {\n out.rem.push(x);\n x.exit = true;\n ++map.empty;\n }\n });\n if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) {\n df.runAfter(map.clean);\n }\n return out;\n }\n});\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n * parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n * mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nfunction Encode$1(params) {\n Transform.call(this, null, params);\n}\ninherits(Encode$1, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ADD_REM),\n fmod = _.mod || false,\n encoders = _.encoders,\n encode = pulse.encode;\n\n // if an array, the encode directive includes additional sets\n // that must be defined in order for the primary set to be invoked\n // e.g., only run the update set if the hover set is defined\n if (isArray(encode)) {\n if (out.changed() || encode.every(e => encoders[e])) {\n encode = encode[0];\n out.encode = null; // consume targeted encode directive\n } else {\n return pulse.StopPropagation;\n }\n }\n\n // marshall encoder functions\n var reenter = encode === 'enter',\n update = encoders.update || falsy,\n enter = encoders.enter || falsy,\n exit = encoders.exit || falsy,\n set = (encode && !reenter ? encoders[encode] : update) || falsy;\n if (pulse.changed(pulse.ADD)) {\n pulse.visit(pulse.ADD, t => {\n enter(t, _);\n update(t, _);\n });\n out.modifies(enter.output);\n out.modifies(update.output);\n if (set !== falsy && set !== update) {\n pulse.visit(pulse.ADD, t => {\n set(t, _);\n });\n out.modifies(set.output);\n }\n }\n if (pulse.changed(pulse.REM) && exit !== falsy) {\n pulse.visit(pulse.REM, t => {\n exit(t, _);\n });\n out.modifies(exit.output);\n }\n if (reenter || set !== falsy) {\n const flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n if (reenter) {\n pulse.visit(flag, t => {\n const mod = enter(t, _) || fmod;\n if (set(t, _) || mod) out.mod.push(t);\n });\n if (out.mod.length) out.modifies(enter.output);\n } else {\n pulse.visit(flag, t => {\n if (set(t, _) || fmod) out.mod.push(t);\n });\n }\n if (out.mod.length) out.modifies(set.output);\n }\n return out.changed() ? out : pulse.StopPropagation;\n }\n});\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n * desired tick interval, to use.\n * @param {*} [params.limit] - The maximum number of entries to\n * include in a symbol legend.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nfunction LegendEntries$1(params) {\n Transform.call(this, [], params);\n}\ninherits(LegendEntries$1, Transform, {\n transform(_, pulse) {\n if (this.value != null && !_.modified()) {\n return pulse.StopPropagation;\n }\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n items = this.value,\n type = _.type || SymbolLegend,\n scale = _.scale,\n limit = +_.limit,\n count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n lskip = !!_.values || type === SymbolLegend,\n format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip),\n values = _.values || labelValues(scale, count),\n domain,\n fraction,\n size,\n offset,\n ellipsis;\n if (items) out.rem = items;\n if (type === SymbolLegend) {\n if (limit && values.length > limit) {\n pulse.dataflow.warn('Symbol legend count exceeds limit, filtering items.');\n items = values.slice(0, limit - 1);\n ellipsis = true;\n } else {\n items = values;\n }\n if (isFunction$1(size = _.size)) {\n // if first value maps to size zero, remove from list (vega#717)\n if (!_.values && scale(items[0]) === 0) {\n items = items.slice(1);\n }\n // compute size offset for legend entries\n offset = items.reduce((max, value) => Math.max(max, size(value, _)), 0);\n } else {\n size = constant$5(offset = size || 8);\n }\n items = items.map((value, index) => ingest$1({\n index: index,\n label: format(value, index, items),\n value: value,\n offset: offset,\n size: size(value, _)\n }));\n if (ellipsis) {\n ellipsis = values[items.length];\n items.push(ingest$1({\n index: items.length,\n label: \"\\u2026\".concat(values.length - items.length, \" entries\"),\n value: ellipsis,\n offset: offset,\n size: size(ellipsis, _)\n }));\n }\n } else if (type === GradientLegend) {\n domain = scale.domain(), fraction = scaleFraction(scale, domain[0], peek$1(domain));\n\n // if automatic label generation produces 2 or fewer values,\n // use the domain end points instead (fixes vega/vega#1364)\n if (values.length < 3 && !_.values && domain[0] !== peek$1(domain)) {\n values = [domain[0], peek$1(domain)];\n }\n items = values.map((value, index) => ingest$1({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: fraction(value)\n }));\n } else {\n size = values.length - 1;\n fraction = labelFraction(scale);\n items = values.map((value, index) => ingest$1({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: index ? fraction(value) : 0,\n perc2: index === size ? 1 : fraction(values[index + 1])\n }));\n }\n out.source = items;\n out.add = items;\n this.value = items;\n return out;\n }\n});\nconst sourceX = t => t.source.x;\nconst sourceY = t => t.source.y;\nconst targetX = t => t.target.x;\nconst targetY = t => t.target.y;\n\n/**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction LinkPath(params) {\n Transform.call(this, {}, params);\n}\nLinkPath.Definition = {\n 'type': 'LinkPath',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'sourceX',\n 'type': 'field',\n 'default': 'source.x'\n }, {\n 'name': 'sourceY',\n 'type': 'field',\n 'default': 'source.y'\n }, {\n 'name': 'targetX',\n 'type': 'field',\n 'default': 'target.x'\n }, {\n 'name': 'targetY',\n 'type': 'field',\n 'default': 'target.y'\n }, {\n 'name': 'orient',\n 'type': 'enum',\n 'default': 'vertical',\n 'values': ['horizontal', 'vertical', 'radial']\n }, {\n 'name': 'shape',\n 'type': 'enum',\n 'default': 'line',\n 'values': ['line', 'arc', 'curve', 'diagonal', 'orthogonal']\n }, {\n 'name': 'require',\n 'type': 'signal'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\ninherits(LinkPath, Transform, {\n transform(_, pulse) {\n var sx = _.sourceX || sourceX,\n sy = _.sourceY || sourceY,\n tx = _.targetX || targetX,\n ty = _.targetY || targetY,\n as = _.as || 'path',\n orient = _.orient || 'vertical',\n shape = _.shape || 'line',\n path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n if (!path) {\n error('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : ''));\n }\n pulse.visit(pulse.SOURCE, t => {\n t[as] = path(sx(t), sy(t), tx(t), ty(t));\n });\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nconst line$1 = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'L' + tx + ',' + ty;\nconst lineR = (sa, sr, ta, tr) => line$1(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst arc$1 = (sx, sy, tx, ty) => {\n var dx = tx - sx,\n dy = ty - sy,\n rr = Math.hypot(dx, dy) / 2,\n ra = 180 * Math.atan2(dy, dx) / Math.PI;\n return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty;\n};\nconst arcR = (sa, sr, ta, tr) => arc$1(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst curve = (sx, sy, tx, ty) => {\n const dx = tx - sx,\n dy = ty - sy,\n ix = 0.2 * (dx + dy),\n iy = 0.2 * (dy - dx);\n return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty;\n};\nconst curveR = (sa, sr, ta, tr) => curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst orthoX = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx;\nconst orthoY = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty;\nconst orthoR = (sa, sr, ta, tr) => {\n const sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts;\n};\nconst diagonalX = (sx, sy, tx, ty) => {\n const m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy + 'C' + m + ',' + sy + ' ' + m + ',' + ty + ' ' + tx + ',' + ty;\n};\nconst diagonalY = (sx, sy, tx, ty) => {\n const m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy + 'C' + sx + ',' + m + ' ' + tx + ',' + m + ' ' + tx + ',' + ty;\n};\nconst diagonalR = (sa, sr, ta, tr) => {\n const sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts;\n};\nconst Paths = fastmap({\n 'line': line$1,\n 'line-radial': lineR,\n 'arc': arc$1,\n 'arc-radial': arcR,\n 'curve': curve,\n 'curve-radial': curveR,\n 'orthogonal-horizontal': orthoX,\n 'orthogonal-vertical': orthoY,\n 'orthogonal-radial': orthoR,\n 'diagonal-horizontal': diagonalX,\n 'diagonal-vertical': diagonalY,\n 'diagonal-radial': diagonalR\n});\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2Ļ€] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nfunction Pie(params) {\n Transform.call(this, null, params);\n}\nPie.Definition = {\n 'type': 'Pie',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'startAngle',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'endAngle',\n 'type': 'number',\n 'default': 6.283185307179586\n }, {\n 'name': 'sort',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['startAngle', 'endAngle']\n }]\n};\ninherits(Pie, Transform, {\n transform(_, pulse) {\n var as = _.as || ['startAngle', 'endAngle'],\n startAngle = as[0],\n endAngle = as[1],\n field = _.field || one$2,\n start = _.startAngle || 0,\n stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n data = pulse.source,\n values = data.map(field),\n n = values.length,\n a = start,\n k = (stop - start) / sum$1(values),\n index = range$5(n),\n i,\n t,\n v;\n if (_.sort) {\n index.sort((a, b) => values[a] - values[b]);\n }\n for (i = 0; i < n; ++i) {\n v = values[index[i]];\n t = data[index[i]];\n t[startAngle] = a;\n t[endAngle] = a += v * k;\n }\n this.value = values;\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nconst DEFAULT_COUNT = 5;\nfunction includeZero(scale) {\n const type = scale.type;\n return !scale.bins && (type === Linear || type === Pow || type === Sqrt);\n}\nfunction includePad(type) {\n return isContinuous$1(type) && type !== Sequential;\n}\nconst SKIP$1 = toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']);\n\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Scale$1(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Scale$1, Transform, {\n transform(_, pulse) {\n var df = pulse.dataflow,\n scale$1 = this.value,\n key = scaleKey(_);\n if (!scale$1 || key !== scale$1.type) {\n this.value = scale$1 = scale$4(key)();\n }\n for (key in _) if (!SKIP$1[key]) {\n // padding is a scale property for band/point but not others\n if (key === 'padding' && includePad(scale$1.type)) continue;\n // invoke scale property setter, raise warning if not found\n isFunction$1(scale$1[key]) ? scale$1[key](_[key]) : df.warn('Unsupported scale property: ' + key);\n }\n configureRange(scale$1, _, configureBins(scale$1, _, configureDomain(scale$1, _, df)));\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\nfunction scaleKey(_) {\n var t = _.type,\n d = '',\n n;\n\n // backwards compatibility pre Vega 5.\n if (t === Sequential) return Sequential + '-' + Linear;\n if (isContinuousColor(_)) {\n n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0;\n d = n === 2 ? Sequential + '-' : n === 3 ? Diverging + '-' : '';\n }\n return (d + t || Linear).toLowerCase();\n}\nfunction isContinuousColor(_) {\n const t = _.type;\n return isContinuous$1(t) && t !== Time && t !== UTC && (_.scheme || _.range && _.range.length && _.range.every(isString));\n}\nfunction configureDomain(scale, _, df) {\n // check raw domain, if provided use that and exit early\n const raw = rawDomain(scale, _.domainRaw, df);\n if (raw > -1) return raw;\n var domain = _.domain,\n type = scale.type,\n zero = _.zero || _.zero === undefined && includeZero(scale),\n n,\n mid;\n if (!domain) return 0;\n\n // adjust continuous domain for minimum pixel padding\n if (includePad(type) && _.padding && domain[0] !== peek$1(domain)) {\n domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n }\n\n // adjust domain based on zero, min, max settings\n if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n n = (domain = domain.slice()).length - 1 || 1;\n if (zero) {\n if (domain[0] > 0) domain[0] = 0;\n if (domain[n] < 0) domain[n] = 0;\n }\n if (_.domainMin != null) domain[0] = _.domainMin;\n if (_.domainMax != null) domain[n] = _.domainMax;\n if (_.domainMid != null) {\n mid = _.domainMid;\n const i = mid > domain[n] ? n + 1 : mid < domain[0] ? 0 : n;\n if (i !== n) df.warn('Scale domainMid exceeds domain min or max.', mid);\n domain.splice(i, 0, mid);\n }\n }\n\n // set the scale domain\n scale.domain(domainCheck(type, domain, df));\n\n // if ordinal scale domain is defined, prevent implicit\n // domain construction as side-effect of scale lookup\n if (type === Ordinal) {\n scale.unknown(_.domainImplicit ? implicit : undefined);\n }\n\n // perform 'nice' adjustment as requested\n if (_.nice && scale.nice) {\n scale.nice(_.nice !== true && tickCount(scale, _.nice) || null);\n }\n\n // return the cardinality of the domain\n return domain.length;\n}\nfunction rawDomain(scale, raw, df) {\n if (raw) {\n scale.domain(domainCheck(scale.type, raw, df));\n return raw.length;\n } else {\n return -1;\n }\n}\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n var span = Math.abs(peek$1(range) - range[0]),\n frac = span / (span - 2 * pad),\n d = type === Log ? zoomLog(domain, null, frac) : type === Sqrt ? zoomPow(domain, null, frac, 0.5) : type === Pow ? zoomPow(domain, null, frac, exponent || 1) : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1) : zoomLinear(domain, null, frac);\n domain = domain.slice();\n domain[0] = d[0];\n domain[domain.length - 1] = d[1];\n return domain;\n}\nfunction domainCheck(type, domain, df) {\n if (isLogarithmic(type)) {\n // sum signs of domain values\n // if all pos or all neg, abs(sum) === domain.length\n var s = Math.abs(domain.reduce((s, v) => s + (v < 0 ? -1 : v > 0 ? 1 : 0), 0));\n if (s !== domain.length) {\n df.warn('Log scale domain includes zero: ' + $(domain));\n }\n }\n return domain;\n}\nfunction configureBins(scale, _, count) {\n let bins = _.bins;\n if (bins && !isArray(bins)) {\n // generate bin boundary array\n const domain = scale.domain(),\n lo = domain[0],\n hi = peek$1(domain),\n step = bins.step;\n let start = bins.start == null ? lo : bins.start,\n stop = bins.stop == null ? hi : bins.stop;\n if (!step) error('Scale bins parameter missing step property.');\n if (start < lo) start = step * Math.ceil(lo / step);\n if (stop > hi) stop = step * Math.floor(hi / step);\n bins = range$5(start, stop + step / 2, step);\n }\n if (bins) {\n // assign bin boundaries to scale instance\n scale.bins = bins;\n } else if (scale.bins) {\n // no current bins, remove bins if previously set\n delete scale.bins;\n }\n\n // special handling for bin-ordinal scales\n if (scale.type === BinOrdinal) {\n if (!bins) {\n // the domain specifies the bins\n scale.bins = scale.domain();\n } else if (!_.domain && !_.domainRaw) {\n // the bins specify the domain\n scale.domain(bins);\n count = bins.length;\n }\n }\n\n // return domain cardinality\n return count;\n}\nfunction configureRange(scale, _, count) {\n var type = scale.type,\n round = _.round || false,\n range = _.range;\n\n // if range step specified, calculate full range extent\n if (_.rangeStep != null) {\n range = configureRangeStep(type, _, count);\n }\n\n // else if a range scheme is defined, use that\n else if (_.scheme) {\n range = configureScheme(type, _, count);\n if (isFunction$1(range)) {\n if (scale.interpolator) {\n return scale.interpolator(range);\n } else {\n error(\"Scale type \".concat(type, \" does not support interpolating color schemes.\"));\n }\n }\n }\n\n // given a range array for an interpolating scale, convert to interpolator\n if (range && isInterpolating(type)) {\n return scale.interpolator(interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma));\n }\n\n // configure rounding / interpolation\n if (range && _.interpolate && scale.interpolate) {\n scale.interpolate(interpolate$1(_.interpolate, _.interpolateGamma));\n } else if (isFunction$1(scale.round)) {\n scale.round(round);\n } else if (isFunction$1(scale.rangeRound)) {\n scale.interpolate(round ? interpolateRound : interpolate$1$1);\n }\n if (range) scale.range(flip(range, _.reverse));\n}\nfunction configureRangeStep(type, _, count) {\n if (type !== Band && type !== Point) {\n error('Only band and point scales support rangeStep.');\n }\n\n // calculate full range based on requested step size and padding\n var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n inner = type === Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0;\n return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\nfunction configureScheme(type, _, count) {\n var extent = _.schemeExtent,\n name,\n scheme$1$1;\n if (isArray(_.scheme)) {\n scheme$1$1 = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n } else {\n name = _.scheme.toLowerCase();\n scheme$1$1 = scheme$1(name);\n if (!scheme$1$1) error(\"Unrecognized scheme name: \".concat(_.scheme));\n }\n\n // determine size for potential discrete range\n count = type === Threshold ? count + 1 : type === BinOrdinal ? count - 1 : type === Quantile || type === Quantize ? +_.schemeCount || DEFAULT_COUNT : count;\n\n // adjust and/or quantize scheme as appropriate\n return isInterpolating(type) ? adjustScheme(scheme$1$1, extent, _.reverse) : isFunction$1(scheme$1$1) ? quantizeInterpolator(adjustScheme(scheme$1$1, extent), count) : type === Ordinal ? scheme$1$1 : scheme$1$1.slice(0, count);\n}\nfunction adjustScheme(scheme, extent, reverse) {\n return isFunction$1(scheme) && (extent || reverse) ? interpolateRange$1(scheme, flip(extent || [0, 1], reverse)) : scheme;\n}\nfunction flip(array, reverse) {\n return reverse ? array.slice().reverse() : array;\n}\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting tuples.\n */\nfunction SortItems$1(params) {\n Transform.call(this, null, params);\n}\ninherits(SortItems$1, Transform, {\n transform(_, pulse) {\n const mod = _.modified('sort') || pulse.changed(pulse.ADD) || pulse.modified(_.sort.fields) || pulse.modified('datum');\n if (mod) pulse.source.sort(stableCompare(_.sort));\n this.modified(mod);\n return pulse;\n }\n});\nconst Zero = 'zero',\n Center$1 = 'center',\n Normalize = 'normalize',\n DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - Stack baseline offset. One of 'zero', 'center', 'normalize'.\n */\nfunction Stack(params) {\n Transform.call(this, null, params);\n}\nStack.Definition = {\n 'type': 'Stack',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'offset',\n 'type': 'enum',\n 'default': Zero,\n 'values': [Zero, Center$1, Normalize]\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': DefOutput\n }]\n};\ninherits(Stack, Transform, {\n transform(_, pulse) {\n var as = _.as || DefOutput,\n y0 = as[0],\n y1 = as[1],\n sort = stableCompare(_.sort),\n field = _.field || one$2,\n stack = _.offset === Center$1 ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero,\n groups,\n i,\n n,\n max;\n\n // partition, sum, and sort the stack groups\n groups = partition$3(pulse.source, _.groupby, sort, field);\n\n // compute stack layouts per group\n for (i = 0, n = groups.length, max = groups.max; i < n; ++i) {\n stack(groups[i], max, field, y0, y1);\n }\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nfunction stackCenter(group, max, field, y0, y1) {\n var last = (max - group.sum) / 2,\n m = group.length,\n j = 0,\n t;\n for (; j < m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last += Math.abs(field(t));\n }\n}\nfunction stackNormalize(group, max, field, y0, y1) {\n var scale = 1 / group.sum,\n last = 0,\n m = group.length,\n j = 0,\n v = 0,\n t;\n for (; j < m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last = scale * (v += Math.abs(field(t)));\n }\n}\nfunction stackZero(group, max, field, y0, y1) {\n var lastPos = 0,\n lastNeg = 0,\n m = group.length,\n j = 0,\n v,\n t;\n for (; j < m; ++j) {\n t = group[j];\n v = +field(t);\n if (v < 0) {\n t[y0] = lastNeg;\n t[y1] = lastNeg += v;\n } else {\n t[y0] = lastPos;\n t[y1] = lastPos += v;\n }\n }\n}\nfunction partition$3(data, groupby, sort, field) {\n var groups = [],\n get = f => f(t),\n map,\n i,\n n,\n m,\n t,\n k,\n g,\n s,\n max;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.slice());\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n // compute sums of groups, sort groups as needed\n for (k = 0, max = 0, m = groups.length; k < m; ++k) {\n g = groups[k];\n for (i = 0, s = 0, n = g.length; i < n; ++i) {\n s += Math.abs(field(g[i]));\n }\n g.sum = s;\n if (s > max) max = s;\n if (sort) g.sort(sort);\n }\n groups.max = max;\n return groups;\n}\nvar encode$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n axisticks: AxisTicks$1,\n datajoin: DataJoin$1,\n encode: Encode$1,\n legendentries: LegendEntries$1,\n linkpath: LinkPath,\n pie: Pie,\n scale: Scale$1,\n sortitems: SortItems$1,\n stack: Stack\n});\nvar epsilon$3 = 1e-6;\nvar epsilon2 = 1e-12;\nvar pi$1 = Math.PI;\nvar halfPi$1 = pi$1 / 2;\nvar quarterPi = pi$1 / 4;\nvar tau$1 = pi$1 * 2;\nvar degrees = 180 / pi$1;\nvar radians = pi$1 / 180;\nvar abs$1 = Math.abs;\nvar atan = Math.atan;\nvar atan2 = Math.atan2;\nvar cos$1 = Math.cos;\nvar ceil = Math.ceil;\nvar exp = Math.exp;\nvar hypot = Math.hypot;\nvar log$1 = Math.log;\nvar pow$1 = Math.pow;\nvar sin$1 = Math.sin;\nvar sign = Math.sign || function (x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n};\nvar sqrt$1 = Math.sqrt;\nvar tan = Math.tan;\nfunction acos(x) {\n return x > 1 ? 0 : x < -1 ? pi$1 : Math.acos(x);\n}\nfunction asin$1(x) {\n return x > 1 ? halfPi$1 : x < -1 ? -halfPi$1 : Math.asin(x);\n}\nfunction noop$2() {}\nfunction streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\nvar streamObjectType = {\n Feature: function (object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function (object, stream) {\n var features = object.features,\n i = -1,\n n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\nvar streamGeometryType = {\n Sphere: function (object, stream) {\n stream.sphere();\n },\n Point: function (object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function (object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function (object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function (object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function (object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function (object, stream) {\n var coordinates = object.coordinates,\n i = -1,\n n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function (object, stream) {\n var geometries = object.geometries,\n i = -1,\n n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\nfunction streamLine(coordinates, stream, closed) {\n var i = -1,\n n = coordinates.length - closed,\n coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\nfunction streamPolygon(coordinates, stream) {\n var i = -1,\n n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\nfunction geoStream(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\nvar areaRingSum$1 = new Adder();\n\n// hello?\n\nvar areaSum$1 = new Adder(),\n lambda00$2,\n phi00$2,\n lambda0$1,\n cosPhi0,\n sinPhi0;\nvar areaStream$1 = {\n point: noop$2,\n lineStart: noop$2,\n lineEnd: noop$2,\n polygonStart: function () {\n areaRingSum$1 = new Adder();\n areaStream$1.lineStart = areaRingStart$1;\n areaStream$1.lineEnd = areaRingEnd$1;\n },\n polygonEnd: function () {\n var areaRing = +areaRingSum$1;\n areaSum$1.add(areaRing < 0 ? tau$1 + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop$2;\n },\n sphere: function () {\n areaSum$1.add(tau$1);\n }\n};\nfunction areaRingStart$1() {\n areaStream$1.point = areaPointFirst$1;\n}\nfunction areaRingEnd$1() {\n areaPoint$1(lambda00$2, phi00$2);\n}\nfunction areaPointFirst$1(lambda, phi) {\n areaStream$1.point = areaPoint$1;\n lambda00$2 = lambda, phi00$2 = phi;\n lambda *= radians, phi *= radians;\n lambda0$1 = lambda, cosPhi0 = cos$1(phi = phi / 2 + quarterPi), sinPhi0 = sin$1(phi);\n}\nfunction areaPoint$1(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoliā€™s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0$1,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos$1(phi),\n sinPhi = sin$1(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos$1(adLambda),\n v = k * sdLambda * sin$1(adLambda);\n areaRingSum$1.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0$1 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\nfunction geoArea$1(object) {\n areaSum$1 = new Adder();\n geoStream(object, areaStream$1);\n return areaSum$1 * 2;\n}\nfunction spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin$1(cartesian[2])];\n}\nfunction cartesian(spherical) {\n var lambda = spherical[0],\n phi = spherical[1],\n cosPhi = cos$1(phi);\n return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)];\n}\nfunction cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nfunction cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nfunction cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\nfunction cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nfunction cartesianNormalizeInPlace(d) {\n var l = sqrt$1(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\nvar lambda0, phi0, lambda1, phi1,\n // bounds\n lambda2,\n // previous lambda-coordinate\n lambda00$1, phi00$1,\n // first point\n p0,\n // previous 3D point\n deltaSum, ranges, range$4;\nvar boundsStream$2 = {\n point: boundsPoint$1,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function () {\n boundsStream$2.point = boundsRingPoint;\n boundsStream$2.lineStart = boundsRingStart;\n boundsStream$2.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream$1.polygonStart();\n },\n polygonEnd: function () {\n areaStream$1.polygonEnd();\n boundsStream$2.point = boundsPoint$1;\n boundsStream$2.lineStart = boundsLineStart;\n boundsStream$2.lineEnd = boundsLineEnd;\n if (areaRingSum$1 < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);else if (deltaSum > epsilon$3) phi1 = 90;else if (deltaSum < -epsilon$3) phi0 = -90;\n range$4[0] = lambda0, range$4[1] = lambda1;\n },\n sphere: function () {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\nfunction boundsPoint$1(lambda, phi) {\n ranges.push(range$4 = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs$1(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range$4 = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\nfunction boundsLineStart() {\n boundsStream$2.point = linePoint;\n}\nfunction boundsLineEnd() {\n range$4[0] = lambda0, range$4[1] = lambda1;\n boundsStream$2.point = boundsPoint$1;\n p0 = null;\n}\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs$1(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00$1 = lambda, phi00$1 = phi;\n }\n areaStream$1.point(lambda, phi);\n linePoint(lambda, phi);\n}\nfunction boundsRingStart() {\n areaStream$1.lineStart();\n}\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00$1, phi00$1);\n areaStream$1.lineEnd();\n if (abs$1(deltaSum) > epsilon$3) lambda0 = -(lambda1 = 180);\n range$4[0] = lambda0, range$4[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360Ā°) % 360Ā°, except that we want\n// the distance between Ā±180Ā° to be 360Ā°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\nfunction geoBounds$1(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n geoStream(feature, boundsStream$2);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n ranges = range$4 = null;\n return lambda0 === Infinity || phi0 === Infinity ? [[NaN, NaN], [NaN, NaN]] : [[lambda0, phi0], [lambda1, phi1]];\n}\nvar W0, W1, X0$1, Y0$1, Z0$1, X1$1, Y1$1, Z1$1, X2$2, Y2$2, Z2$1, lambda00, phi00,\n // first point\n x0$4, y0$4, z0; // previous point\n\nvar centroidStream$1 = {\n sphere: noop$2,\n point: centroidPoint$1,\n lineStart: centroidLineStart$1,\n lineEnd: centroidLineEnd$1,\n polygonStart: function () {\n centroidStream$1.lineStart = centroidRingStart$1;\n centroidStream$1.lineEnd = centroidRingEnd$1;\n },\n polygonEnd: function () {\n centroidStream$1.lineStart = centroidLineStart$1;\n centroidStream$1.lineEnd = centroidLineEnd$1;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint$1(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos$1(phi);\n centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi));\n}\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0$1 += (x - X0$1) / W0;\n Y0$1 += (y - Y0$1) / W0;\n Z0$1 += (z - Z0$1) / W0;\n}\nfunction centroidLineStart$1() {\n centroidStream$1.point = centroidLinePointFirst;\n}\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos$1(phi);\n x0$4 = cosPhi * cos$1(lambda);\n y0$4 = cosPhi * sin$1(lambda);\n z0 = sin$1(phi);\n centroidStream$1.point = centroidLinePoint;\n centroidPointCartesian(x0$4, y0$4, z0);\n}\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos$1(phi),\n x = cosPhi * cos$1(lambda),\n y = cosPhi * sin$1(lambda),\n z = sin$1(phi),\n w = atan2(sqrt$1((w = y0$4 * z - z0 * y) * w + (w = z0 * x - x0$4 * z) * w + (w = x0$4 * y - y0$4 * x) * w), x0$4 * x + y0$4 * y + z0 * z);\n W1 += w;\n X1$1 += w * (x0$4 + (x0$4 = x));\n Y1$1 += w * (y0$4 + (y0$4 = y));\n Z1$1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0$4, y0$4, z0);\n}\nfunction centroidLineEnd$1() {\n centroidStream$1.point = centroidPoint$1;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart$1() {\n centroidStream$1.point = centroidRingPointFirst;\n}\nfunction centroidRingEnd$1() {\n centroidRingPoint(lambda00, phi00);\n centroidStream$1.point = centroidPoint$1;\n}\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream$1.point = centroidRingPoint;\n var cosPhi = cos$1(phi);\n x0$4 = cosPhi * cos$1(lambda);\n y0$4 = cosPhi * sin$1(lambda);\n z0 = sin$1(phi);\n centroidPointCartesian(x0$4, y0$4, z0);\n}\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos$1(phi),\n x = cosPhi * cos$1(lambda),\n y = cosPhi * sin$1(lambda),\n z = sin$1(phi),\n cx = y0$4 * z - z0 * y,\n cy = z0 * x - x0$4 * z,\n cz = x0$4 * y - y0$4 * x,\n m = hypot(cx, cy, cz),\n w = asin$1(m),\n // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2$2.add(v * cx);\n Y2$2.add(v * cy);\n Z2$1.add(v * cz);\n W1 += w;\n X1$1 += w * (x0$4 + (x0$4 = x));\n Y1$1 += w * (y0$4 + (y0$4 = y));\n Z1$1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0$4, y0$4, z0);\n}\nfunction geoCentroid$1(object) {\n W0 = W1 = X0$1 = Y0$1 = Z0$1 = X1$1 = Y1$1 = Z1$1 = 0;\n X2$2 = new Adder();\n Y2$2 = new Adder();\n Z2$1 = new Adder();\n geoStream(object, centroidStream$1);\n var x = +X2$2,\n y = +Y2$2,\n z = +Z2$1,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1$1, y = Y1$1, z = Z1$1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon$3) x = X0$1, y = Y0$1, z = Z0$1;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n return [atan2(y, x) * degrees, asin$1(z / m) * degrees];\n}\nfunction compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function (x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n}\nfunction rotationIdentity(lambda, phi) {\n if (abs$1(lambda) > pi$1) lambda -= Math.round(lambda / tau$1) * tau$1;\n return [lambda, phi];\n}\nrotationIdentity.invert = rotationIdentity;\nfunction rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau$1) ? deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) : rotationLambda(deltaLambda) : deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) : rotationIdentity;\n}\nfunction forwardRotationLambda(deltaLambda) {\n return function (lambda, phi) {\n lambda += deltaLambda;\n if (abs$1(lambda) > pi$1) lambda -= Math.round(lambda / tau$1) * tau$1;\n return [lambda, phi];\n };\n}\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos$1(deltaPhi),\n sinDeltaPhi = sin$1(deltaPhi),\n cosDeltaGamma = cos$1(deltaGamma),\n sinDeltaGamma = sin$1(deltaGamma);\n function rotation(lambda, phi) {\n var cosPhi = cos$1(phi),\n x = cos$1(lambda) * cosPhi,\n y = sin$1(lambda) * cosPhi,\n z = sin$1(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), asin$1(k * cosDeltaGamma + y * sinDeltaGamma)];\n }\n rotation.invert = function (lambda, phi) {\n var cosPhi = cos$1(phi),\n x = cos$1(lambda) * cosPhi,\n y = sin$1(lambda) * cosPhi,\n z = sin$1(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), asin$1(k * cosDeltaPhi - x * sinDeltaPhi)];\n };\n return rotation;\n}\nfunction rotation(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n forward.invert = function (coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n return forward;\n}\n\n// Generates a circle centered at [0Ā°, 0Ā°], with a given radius and precision.\nfunction circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos$1(radius),\n sinRadius = sin$1(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau$1;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$1;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau$1 - epsilon$3) % tau$1;\n}\nfunction clipBuffer() {\n var lines = [],\n line;\n return {\n point: function (x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function () {\n lines.push(line = []);\n },\n lineEnd: noop$2,\n rejoin: function () {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function () {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\nfunction pointEqual(a, b) {\n return abs$1(a[0] - b[0]) < epsilon$3 && abs$1(a[1] - b[1]) < epsilon$3;\n}\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nfunction clipRejoin(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n segments.forEach(function (segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n,\n p0 = segment[0],\n p1 = segment[n],\n x;\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon$3;\n }\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n if (!subject.length) return;\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n var start = subject[0],\n points,\n point;\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\nfunction longitude(point) {\n return abs$1(point[0]) <= pi$1 ? point[0] : sign(point[0]) * ((abs$1(point[0]) + pi$1) % tau$1 - pi$1);\n}\nfunction polygonContains(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin$1(phi),\n normal = [sin$1(lambda), -cos$1(lambda), 0],\n angle = 0,\n winding = 0;\n var sum = new Adder();\n if (sinPhi === 1) phi = halfPi$1 + epsilon$3;else if (sinPhi === -1) phi = -halfPi$1 - epsilon$3;\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin$1(phi0),\n cosPhi0 = cos$1(phi0);\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin$1(phi1),\n cosPhi1 = cos$1(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi$1,\n k = sinPhi0 * sinPhi1;\n sum.add(atan2(k * sign * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta)));\n angle += antimeridian ? delta + sign * tau$1 : delta;\n\n // Are the longitudes either side of the pointā€™s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin$1(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon$3 || angle < epsilon$3 && sum < -epsilon2) ^ winding & 1;\n}\nfunction clip$1(pointVisible, clipLine, interpolate, start) {\n return function (sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function () {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function () {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge$2(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function () {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i,\n n = ringSegments.length,\n m,\n segment,\n point;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(validSegment));\n }\n return clip;\n };\n}\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi$1 - epsilon$3 : halfPi$1 - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfPi$1 - epsilon$3 : halfPi$1 - b[1]);\n}\nvar clipAntimeridian = clip$1(function () {\n return true;\n}, clipAntimeridianLine, clipAntimeridianInterpolate, [-pi$1, -halfPi$1]);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function () {\n stream.lineStart();\n clean = 1;\n },\n point: function (lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi$1 : -pi$1,\n delta = abs$1(lambda1 - lambda0);\n if (abs$1(delta - pi$1) < epsilon$3) {\n // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$1 : -halfPi$1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi$1) {\n // line crosses antimeridian\n if (abs$1(lambda0 - sign0) < epsilon$3) lambda0 -= sign0 * epsilon$3; // handle degeneracies\n if (abs$1(lambda1 - sign1) < epsilon$3) lambda1 -= sign1 * epsilon$3;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function () {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function () {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin$1(lambda0 - lambda1);\n return abs$1(sinLambda0Lambda1) > epsilon$3 ? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1) - sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0)) / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) : (phi0 + phi1) / 2;\n}\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi$1;\n stream.point(-pi$1, phi);\n stream.point(0, phi);\n stream.point(pi$1, phi);\n stream.point(pi$1, 0);\n stream.point(pi$1, -phi);\n stream.point(0, -phi);\n stream.point(-pi$1, -phi);\n stream.point(-pi$1, 0);\n stream.point(-pi$1, phi);\n } else if (abs$1(from[0] - to[0]) > epsilon$3) {\n var lambda = from[0] < to[0] ? pi$1 : -pi$1;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\nfunction clipCircle(radius) {\n var cr = cos$1(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs$1(cr) > epsilon$3; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n function visible(lambda, phi) {\n return cos$1(lambda) * cos$1(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0,\n // previous point\n c0,\n // code for previous point\n v0,\n // visibility of previous point\n v00,\n // visibility of first point\n clean; // no intersections\n return {\n lineStart: function () {\n v00 = v0 = false;\n clean = 1;\n },\n point: function (lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius ? v ? 0 : code(lambda, phi) : v ? code(lambda + (lambda < 0 ? pi$1 : -pi$1), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function () {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function () {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 āØÆ n2).\n var n1 = [1, 0, 0],\n // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0],\n // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = sqrt$1(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n var delta = lambda1 - lambda0,\n polar = abs$1(delta - pi$1) < epsilon$3,\n meridian = polar || delta < epsilon$3;\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian ? polar ? phi0 + phi1 > 0 ^ q[1] < (abs$1(q[0] - lambda0) < epsilon$3 ? phi0 : phi1) : phi0 <= q[1] && q[1] <= phi1 : delta > pi$1 ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi$1 - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n return clip$1(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$1, radius - pi$1]);\n}\nfunction clipLine(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\nvar clipMax = 1e9,\n clipMin = -clipMax;\n\n// TODO Use d3-polygonā€™s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nfunction clipRectangle(x0, y0, x1, y1) {\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function interpolate(from, to, direction, stream) {\n var a = 0,\n a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n function corner(p, direction) {\n return abs$1(p[0] - x0) < epsilon$3 ? direction > 0 ? 0 : 3 : abs$1(p[0] - x1) < epsilon$3 ? direction > 0 ? 2 : 1 : abs$1(p[1] - y0) < epsilon$3 ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n return function (stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__,\n y__,\n v__,\n // first point\n x_,\n y_,\n v_,\n // previous point\n first,\n clean;\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n function polygonInside() {\n var winding = 0;\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) {\n if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding;\n } else {\n if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding;\n }\n }\n }\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge$2(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clipStream;\n };\n}\nfunction graticuleX(y0, y1, dy) {\n var y = range$5(y0, y1 - epsilon$3, dy).concat(y1);\n return function (x) {\n return y.map(function (y) {\n return [x, y];\n });\n };\n}\nfunction graticuleY(x0, x1, dx) {\n var x = range$5(x0, x1 - epsilon$3, dx).concat(x1);\n return function (y) {\n return x.map(function (x) {\n return [x, y];\n });\n };\n}\nfunction graticule() {\n var x1,\n x0,\n X1,\n X0,\n y1,\n y0,\n Y1,\n Y0,\n dx = 10,\n dy = dx,\n DX = 90,\n DY = 360,\n x,\n y,\n X,\n Y,\n precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return range$5(ceil(X0 / DX) * DX, X1, DX).map(X).concat(range$5(ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(range$5(ceil(x0 / dx) * dx, x1, dx).filter(function (x) {\n return abs$1(x % DX) > epsilon$3;\n }).map(x)).concat(range$5(ceil(y0 / dy) * dy, y1, dy).filter(function (y) {\n return abs$1(y % DY) > epsilon$3;\n }).map(y));\n }\n graticule.lines = function () {\n return lines().map(function (coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function () {\n return {\n type: \"Polygon\",\n coordinates: [X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1))]\n };\n };\n graticule.extent = function (_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n graticule.extentMajor = function (_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.extentMinor = function (_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function (_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n graticule.stepMajor = function (_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.stepMinor = function (_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function (_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.extentMajor([[-180, -90 + epsilon$3], [180, 90 - epsilon$3]]).extentMinor([[-180, -80 - epsilon$3], [180, 80 + epsilon$3]]);\n}\nvar identity = x => x;\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00$2,\n y00$2,\n x0$3,\n y0$3;\nvar areaStream = {\n point: noop$2,\n lineStart: noop$2,\n lineEnd: noop$2,\n polygonStart: function () {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function () {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop$2;\n areaSum.add(abs$1(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function () {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00$2 = x0$3 = x, y00$2 = y0$3 = y;\n}\nfunction areaPoint(x, y) {\n areaRingSum.add(y0$3 * x - x0$3 * y);\n x0$3 = x, y0$3 = y;\n}\nfunction areaRingEnd() {\n areaPoint(x00$2, y00$2);\n}\nvar pathArea = areaStream;\nvar x0$2 = Infinity,\n y0$2 = x0$2,\n x1 = -x0$2,\n y1 = x1;\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop$2,\n lineEnd: noop$2,\n polygonStart: noop$2,\n polygonEnd: noop$2,\n result: function () {\n var bounds = [[x0$2, y0$2], [x1, y1]];\n x1 = y1 = -(y0$2 = x0$2 = Infinity);\n return bounds;\n }\n};\nfunction boundsPoint(x, y) {\n if (x < x0$2) x0$2 = x;\n if (x > x1) x1 = x;\n if (y < y0$2) y0$2 = y;\n if (y > y1) y1 = y;\n}\nvar boundsStream$1 = boundsStream;\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2$1 = 0,\n Y2$1 = 0,\n Z2 = 0,\n x00$1,\n y00$1,\n x0$1,\n y0$1;\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function () {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function () {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function () {\n var centroid = Z2 ? [X2$1 / Z2, Y2$1 / Z2] : Z1 ? [X1 / Z1, Y1 / Z1] : Z0 ? [X0 / Z0, Y0 / Z0] : [NaN, NaN];\n X0 = Y0 = Z0 = X1 = Y1 = Z1 = X2$1 = Y2$1 = Z2 = 0;\n return centroid;\n }\n};\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0$1 = x, y0$1 = y);\n}\nfunction centroidPointLine(x, y) {\n var dx = x - x0$1,\n dy = y - y0$1,\n z = sqrt$1(dx * dx + dy * dy);\n X1 += z * (x0$1 + x) / 2;\n Y1 += z * (y0$1 + y) / 2;\n Z1 += z;\n centroidPoint(x0$1 = x, y0$1 = y);\n}\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\nfunction centroidRingEnd() {\n centroidPointRing(x00$1, y00$1);\n}\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00$1 = x0$1 = x, y00$1 = y0$1 = y);\n}\nfunction centroidPointRing(x, y) {\n var dx = x - x0$1,\n dy = y - y0$1,\n z = sqrt$1(dx * dx + dy * dy);\n X1 += z * (x0$1 + x) / 2;\n Y1 += z * (y0$1 + y) / 2;\n Z1 += z;\n z = y0$1 * x - x0$1 * y;\n X2$1 += z * (x0$1 + x);\n Y2$1 += z * (y0$1 + y);\n Z2 += z * 3;\n centroidPoint(x0$1 = x, y0$1 = y);\n}\nvar pathCentroid = centroidStream;\nfunction PathContext(context) {\n this._context = context;\n}\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function (_) {\n return this._radius = _, this;\n },\n polygonStart: function () {\n this._line = 0;\n },\n polygonEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function (x, y) {\n switch (this._point) {\n case 0:\n {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1:\n {\n this._context.lineTo(x, y);\n break;\n }\n default:\n {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau$1);\n break;\n }\n }\n },\n result: noop$2\n};\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\nvar lengthStream = {\n point: noop$2,\n lineStart: function () {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function () {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop$2;\n },\n polygonStart: function () {\n lengthRing = true;\n },\n polygonEnd: function () {\n lengthRing = null;\n },\n result: function () {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt$1(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\nvar pathMeasure = lengthStream;\n\n// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\nclass PathString {\n constructor(digits) {\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n pointRadius(_) {\n this._radius = +_;\n return this;\n }\n polygonStart() {\n this._line = 0;\n }\n polygonEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n point(x, y) {\n switch (this._point) {\n case 0:\n {\n this._append(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x, y);\n this._point = 1;\n break;\n }\n case 1:\n {\n this._append(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x, y);\n break;\n }\n default:\n {\n this._append(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x, y);\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n const r = this._radius;\n const s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\"m0,\", \"a\", \",\", \" 0 1,1 0,\", \"a\", \",\", \" 0 1,1 0,\", \"z\"])), r, r, r, -2 * r, r, r, 2 * r);\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n result() {\n const result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n}\nfunction append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\nfunction appendRound(digits) {\n const d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(digits));\n if (d > 15) return append;\n if (d !== cacheDigits) {\n const k = 10 ** d;\n cacheDigits = d;\n cacheAppend = function append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}\nfunction geoPath(projection, context) {\n let digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n geoStream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n path.area = function (object) {\n geoStream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n path.measure = function (object) {\n geoStream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n path.bounds = function (object) {\n geoStream(object, projectionStream(boundsStream$1));\n return boundsStream$1.result();\n };\n path.centroid = function (object) {\n geoStream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n path.projection = function (_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n path.context = function (_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n path.pointRadius = function (_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n path.digits = function (_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(_));\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n return path.projection(projection).digits(digits).context(context);\n}\nfunction transformer(methods) {\n return function (stream) {\n var s = new TransformStream();\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\nfunction TransformStream() {}\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function (x, y) {\n this.stream.point(x, y);\n },\n sphere: function () {\n this.stream.sphere();\n },\n lineStart: function () {\n this.stream.lineStart();\n },\n lineEnd: function () {\n this.stream.lineEnd();\n },\n polygonStart: function () {\n this.stream.polygonStart();\n },\n polygonEnd: function () {\n this.stream.polygonEnd();\n }\n};\nfunction fit$1(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream$1));\n fitBounds(boundsStream$1.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\nfunction fitExtent(projection, extent, object) {\n return fit$1(projection, function (b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\nfunction fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\nfunction fitWidth(projection, width, object) {\n return fit$1(projection, function (b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\nfunction fitHeight(projection, height, object) {\n return fit$1(projection, function (b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\nvar maxDepth = 16,\n // maximum depth of subdivision\n cosMinDistance = cos$1(30 * radians); // cos(minimum angular distance)\n\nfunction resample(project, delta2) {\n return +delta2 ? resample$1(project, delta2) : resampleNone(project);\n}\nfunction resampleNone(project) {\n return transformer({\n point: function (x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\nfunction resample$1(project, delta2) {\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt$1(a * a + b * b + c * c),\n phi2 = asin$1(c /= m),\n lambda2 = abs$1(abs$1(c) - 1) < epsilon$3 || abs$1(lambda0 - lambda1) < epsilon$3 ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs$1((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function (stream) {\n var lambda00, x00, y00, a00, b00, c00,\n // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function () {\n stream.polygonStart();\n resampleStream.lineStart = ringStart;\n },\n polygonEnd: function () {\n stream.polygonEnd();\n resampleStream.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]),\n p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n return resampleStream;\n };\n}\nvar transformRadians = transformer({\n point: function (x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\nfunction transformRotate(rotate) {\n return transformer({\n point: function (x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx;\n y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function (x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos$1(alpha),\n sinAlpha = sin$1(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx;\n y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function (x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\nfunction projection$1(project) {\n return projectionMutator(function () {\n return project;\n })();\n}\nfunction projectionMutator(projectAt) {\n var project,\n k = 150,\n // scale\n x = 480,\n y = 250,\n // translate\n lambda = 0,\n phi = 0,\n // center\n deltaLambda = 0,\n deltaPhi = 0,\n deltaGamma = 0,\n rotate,\n // pre-rotate\n alpha = 0,\n // post-rotate angle\n sx = 1,\n // reflectX\n sy = 1,\n // reflectX\n theta = null,\n preclip = clipAntimeridian,\n // pre-clip angle\n x0 = null,\n y0,\n x1,\n y1,\n postclip = identity,\n // post-clip extent\n delta2 = 0.5,\n // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n projection.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n projection.preclip = function (_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n projection.postclip = function (_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipAngle = function (_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n projection.clipExtent = function (_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function (_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n projection.translate = function (_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n projection.center = function (_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n projection.rotate = function (_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n projection.angle = function (_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n projection.reflectX = function (_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n projection.reflectY = function (_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n projection.precision = function (_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt$1(delta2);\n };\n projection.fitExtent = function (extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function (size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function (width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function (height, object) {\n return fitHeight(projection, height, object);\n };\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n return function () {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\nfunction conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi$1 / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n p.parallels = function (_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n return p;\n}\nfunction cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos$1(phi0);\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin$1(phi) / cosPhi0];\n }\n forward.invert = function (x, y) {\n return [x / cosPhi0, asin$1(y * cosPhi0)];\n };\n return forward;\n}\nfunction conicEqualAreaRaw(y0, y1) {\n var sy0 = sin$1(y0),\n n = (sy0 + sin$1(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs$1(n) < epsilon$3) return cylindricalEqualAreaRaw(y0);\n var c = 1 + sy0 * (2 * n - sy0),\n r0 = sqrt$1(c) / n;\n function project(x, y) {\n var r = sqrt$1(c - 2 * n * sin$1(y)) / n;\n return [r * sin$1(x *= n), r0 - r * cos$1(x)];\n }\n project.invert = function (x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs$1(r0y)) * sign(r0y);\n if (r0y * n < 0) l -= pi$1 * sign(x) * sign(r0y);\n return [l / n, asin$1((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n return project;\n}\nfunction geoConicEqualArea() {\n return conicProjection(conicEqualAreaRaw).scale(155.424).center([0, 33.6442]);\n}\nfunction geoAlbers() {\n return geoConicEqualArea().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-0.6, 38.7]);\n}\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function (x, y) {\n var i = -1;\n while (++i < n) streams[i].point(x, y);\n },\n sphere: function () {\n var i = -1;\n while (++i < n) streams[i].sphere();\n },\n lineStart: function () {\n var i = -1;\n while (++i < n) streams[i].lineStart();\n },\n lineEnd: function () {\n var i = -1;\n while (++i < n) streams[i].lineEnd();\n },\n polygonStart: function () {\n var i = -1;\n while (++i < n) streams[i].polygonStart();\n },\n polygonEnd: function () {\n var i = -1;\n while (++i < n) streams[i].polygonEnd();\n }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960Ɨ500. The projection also works quite well at 960Ɨ600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nfunction geoAlbersUsa() {\n var cache,\n cacheStream,\n lower48 = geoAlbers(),\n lower48Point,\n alaska = geoConicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),\n alaskaPoint,\n // EPSG:3338\n hawaii = geoConicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),\n hawaiiPoint,\n // ESRI:102007\n point,\n pointStream = {\n point: function (x, y) {\n point = [x, y];\n }\n };\n function albersUsa(coordinates) {\n var x = coordinates[0],\n y = coordinates[1];\n return point = null, (lower48Point.point(x, y), point) || (alaskaPoint.point(x, y), point) || (hawaiiPoint.point(x, y), point);\n }\n albersUsa.invert = function (coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n albersUsa.precision = function (_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n albersUsa.scale = function (_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function (_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(),\n x = +_[0],\n y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]).stream(pointStream);\n alaskaPoint = alaska.translate([x - 0.307 * k, y + 0.201 * k]).clipExtent([[x - 0.425 * k + epsilon$3, y + 0.120 * k + epsilon$3], [x - 0.214 * k - epsilon$3, y + 0.234 * k - epsilon$3]]).stream(pointStream);\n hawaiiPoint = hawaii.translate([x - 0.205 * k, y + 0.212 * k]).clipExtent([[x - 0.214 * k + epsilon$3, y + 0.166 * k + epsilon$3], [x - 0.115 * k - epsilon$3, y + 0.234 * k - epsilon$3]]).stream(pointStream);\n return reset();\n };\n albersUsa.fitExtent = function (extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n albersUsa.fitSize = function (size, object) {\n return fitSize(albersUsa, size, object);\n };\n albersUsa.fitWidth = function (width, object) {\n return fitWidth(albersUsa, width, object);\n };\n albersUsa.fitHeight = function (height, object) {\n return fitHeight(albersUsa, height, object);\n };\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n return albersUsa.scale(1070);\n}\nfunction azimuthalRaw(scale) {\n return function (x, y) {\n var cx = cos$1(x),\n cy = cos$1(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [k * cy * sin$1(x), k * sin$1(y)];\n };\n}\nfunction azimuthalInvert(angle) {\n return function (x, y) {\n var z = sqrt$1(x * x + y * y),\n c = angle(z),\n sc = sin$1(c),\n cc = cos$1(c);\n return [atan2(x * sc, z * cc), asin$1(z && y * sc / z)];\n };\n}\nvar azimuthalEqualAreaRaw = azimuthalRaw(function (cxcy) {\n return sqrt$1(2 / (1 + cxcy));\n});\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function (z) {\n return 2 * asin$1(z / 2);\n});\nfunction geoAzimuthalEqualArea() {\n return projection$1(azimuthalEqualAreaRaw).scale(124.75).clipAngle(180 - 1e-3);\n}\nvar azimuthalEquidistantRaw = azimuthalRaw(function (c) {\n return (c = acos(c)) && c / sin$1(c);\n});\nazimuthalEquidistantRaw.invert = azimuthalInvert(function (z) {\n return z;\n});\nfunction geoAzimuthalEquidistant() {\n return projection$1(azimuthalEquidistantRaw).scale(79.4188).clipAngle(180 - 1e-3);\n}\nfunction mercatorRaw(lambda, phi) {\n return [lambda, log$1(tan((halfPi$1 + phi) / 2))];\n}\nmercatorRaw.invert = function (x, y) {\n return [x, 2 * atan(exp(y)) - halfPi$1];\n};\nfunction geoMercator() {\n return mercatorProjection(mercatorRaw).scale(961 / tau$1);\n}\nfunction mercatorProjection(project) {\n var m = projection$1(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null,\n y0,\n x1,\n y1; // clip extent\n\n m.scale = function (_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n m.translate = function (_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n m.center = function (_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n m.clipExtent = function (_) {\n return arguments.length ? (_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n function reclip() {\n var k = pi$1 * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n return reclip();\n}\nfunction tany(y) {\n return tan((halfPi$1 + y) / 2);\n}\nfunction conicConformalRaw(y0, y1) {\n var cy0 = cos$1(y0),\n n = y0 === y1 ? sin$1(y0) : log$1(cy0 / cos$1(y1)) / log$1(tany(y1) / tany(y0)),\n f = cy0 * pow$1(tany(y0), n) / n;\n if (!n) return mercatorRaw;\n function project(x, y) {\n if (f > 0) {\n if (y < -halfPi$1 + epsilon$3) y = -halfPi$1 + epsilon$3;\n } else {\n if (y > halfPi$1 - epsilon$3) y = halfPi$1 - epsilon$3;\n }\n var r = f / pow$1(tany(y), n);\n return [r * sin$1(n * x), f - r * cos$1(n * x)];\n }\n project.invert = function (x, y) {\n var fy = f - y,\n r = sign(n) * sqrt$1(x * x + fy * fy),\n l = atan2(x, abs$1(fy)) * sign(fy);\n if (fy * n < 0) l -= pi$1 * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow$1(f / r, 1 / n)) - halfPi$1];\n };\n return project;\n}\nfunction geoConicConformal() {\n return conicProjection(conicConformalRaw).scale(109.5).parallels([30, 30]);\n}\nfunction equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\nequirectangularRaw.invert = equirectangularRaw;\nfunction geoEquirectangular() {\n return projection$1(equirectangularRaw).scale(152.63);\n}\nfunction conicEquidistantRaw(y0, y1) {\n var cy0 = cos$1(y0),\n n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n if (abs$1(n) < epsilon$3) return equirectangularRaw;\n function project(x, y) {\n var gy = g - y,\n nx = n * x;\n return [gy * sin$1(nx), g - gy * cos$1(nx)];\n }\n project.invert = function (x, y) {\n var gy = g - y,\n l = atan2(x, abs$1(gy)) * sign(gy);\n if (gy * n < 0) l -= pi$1 * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt$1(x * x + gy * gy)];\n };\n return project;\n}\nfunction geoConicEquidistant() {\n return conicProjection(conicEquidistantRaw).scale(131.154).center([0, 13.9389]);\n}\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt$1(3) / 2,\n iterations = 12;\nfunction equalEarthRaw(lambda, phi) {\n var l = asin$1(M * sin$1(phi)),\n l2 = l * l,\n l6 = l2 * l2 * l2;\n return [lambda * cos$1(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))];\n}\nequalEarthRaw.invert = function (x, y) {\n var l = y,\n l2 = l * l,\n l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs$1(delta) < epsilon2) break;\n }\n return [M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos$1(l), asin$1(sin$1(l) / M)];\n};\nfunction geoEqualEarth() {\n return projection$1(equalEarthRaw).scale(177.158);\n}\nfunction gnomonicRaw(x, y) {\n var cy = cos$1(y),\n k = cos$1(x) * cy;\n return [cy * sin$1(x) / k, sin$1(y) / k];\n}\ngnomonicRaw.invert = azimuthalInvert(atan);\nfunction geoGnomonic() {\n return projection$1(gnomonicRaw).scale(144.049).clipAngle(60);\n}\nfunction geoIdentity() {\n var k = 1,\n tx = 0,\n ty = 0,\n sx = 1,\n sy = 1,\n // scale, translate and reflect\n alpha = 0,\n ca,\n sa,\n // angle\n x0 = null,\n y0,\n x1,\n y1,\n // clip extent\n kx = 1,\n ky = 1,\n transform = transformer({\n point: function (x, y) {\n var p = projection([x, y]);\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n function projection(p) {\n var x = p[0] * kx,\n y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n }\n return [x + tx, y + ty];\n }\n projection.invert = function (p) {\n var x = p[0] - tx,\n y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function (stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function (_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function (_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function (_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function (_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n };\n projection.angle = function (_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin$1(alpha), ca = cos$1(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function (_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function (_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function (extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function (size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function (width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function (height, object) {\n return fitHeight(projection, height, object);\n };\n return projection;\n}\nfunction naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi,\n phi4 = phi2 * phi2;\n return [lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))];\n}\nnaturalEarth1Raw.invert = function (x, y) {\n var phi = y,\n i = 25,\n delta;\n do {\n var phi2 = phi * phi,\n phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs$1(delta) > epsilon$3 && --i > 0);\n return [x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), phi];\n};\nfunction geoNaturalEarth1() {\n return projection$1(naturalEarth1Raw).scale(175.295);\n}\nfunction orthographicRaw(x, y) {\n return [cos$1(y) * sin$1(x), sin$1(y)];\n}\northographicRaw.invert = azimuthalInvert(asin$1);\nfunction geoOrthographic() {\n return projection$1(orthographicRaw).scale(249.5).clipAngle(90 + epsilon$3);\n}\nfunction stereographicRaw(x, y) {\n var cy = cos$1(y),\n k = 1 + cos$1(x) * cy;\n return [cy * sin$1(x) / k, sin$1(y) / k];\n}\nstereographicRaw.invert = azimuthalInvert(function (z) {\n return 2 * atan(z);\n});\nfunction geoStereographic() {\n return projection$1(stereographicRaw).scale(250).clipAngle(142);\n}\nfunction transverseMercatorRaw(lambda, phi) {\n return [log$1(tan((halfPi$1 + phi) / 2)), -lambda];\n}\ntransverseMercatorRaw.invert = function (x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi$1];\n};\nfunction geoTransverseMercator() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n m.center = function (_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n m.rotate = function (_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n return rotate([0, 0, 90]).scale(159.155);\n}\nvar abs = Math.abs;\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar epsilon$2 = 1e-6;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar sqrt2 = sqrt(2);\nfunction asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\nfunction sqrt(x) {\n return x > 0 ? Math.sqrt(x) : 0;\n}\nfunction mollweideBromleyTheta(cp, phi) {\n var cpsinPhi = cp * sin(phi),\n i = 30,\n delta;\n do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi)); while (abs(delta) > epsilon$2 && --i > 0);\n return phi / 2;\n}\nfunction mollweideBromleyRaw(cx, cy, cp) {\n function forward(lambda, phi) {\n return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n }\n forward.invert = function (x, y) {\n return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n };\n return forward;\n}\nvar mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\nfunction geoMollweide() {\n return projection$1(mollweideRaw).scale(169.529);\n}\nconst defaultPath = geoPath();\nconst projectionProperties = [\n// standard properties in d3-geo\n'clipAngle', 'clipExtent', 'scale', 'translate', 'center', 'rotate', 'parallels', 'precision', 'reflectX', 'reflectY',\n// extended properties in d3-geo-projections\n'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];\n\n/**\n * Augment projections with their type and a copy method.\n */\nfunction create$1(type, constructor) {\n return function projection() {\n const p = constructor();\n p.type = type;\n p.path = geoPath().projection(p);\n p.copy = p.copy || function () {\n const c = projection();\n projectionProperties.forEach(prop => {\n if (p[prop]) c[prop](p[prop]());\n });\n c.path.pointRadius(p.path.pointRadius());\n return c;\n };\n return registerScale(p);\n };\n}\nfunction projection(type, proj) {\n if (!type || typeof type !== 'string') {\n throw new Error('Projection type must be a name string.');\n }\n type = type.toLowerCase();\n if (arguments.length > 1) {\n projections[type] = create$1(type, proj);\n return this;\n } else {\n return projections[type] || null;\n }\n}\nfunction getProjectionPath(proj) {\n return proj && proj.path || defaultPath;\n}\nconst projections = {\n // base d3-geo projection types\n albers: geoAlbers,\n albersusa: geoAlbersUsa,\n azimuthalequalarea: geoAzimuthalEqualArea,\n azimuthalequidistant: geoAzimuthalEquidistant,\n conicconformal: geoConicConformal,\n conicequalarea: geoConicEqualArea,\n conicequidistant: geoConicEquidistant,\n equalEarth: geoEqualEarth,\n equirectangular: geoEquirectangular,\n gnomonic: geoGnomonic,\n identity: geoIdentity,\n mercator: geoMercator,\n mollweide: geoMollweide,\n naturalEarth1: geoNaturalEarth1,\n orthographic: geoOrthographic,\n stereographic: geoStereographic,\n transversemercator: geoTransverseMercator\n};\nfor (const key in projections) {\n projection(key, projections[key]);\n}\nfunction noop$1() {}\nconst cases = [[], [[[1.0, 1.5], [0.5, 1.0]]], [[[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [0.5, 1.0]]], [[[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 0.5], [1.0, 1.5]]], [[[1.0, 0.5], [0.5, 1.0]]], [[[0.5, 1.0], [1.0, 0.5]]], [[[1.0, 1.5], [1.0, 0.5]]], [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [1.0, 0.5]]], [[[0.5, 1.0], [1.5, 1.0]]], [[[1.0, 1.5], [1.5, 1.0]]], [[[0.5, 1.0], [1.0, 1.5]]], []];\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction contours() {\n var dx = 1,\n dy = 1,\n smooth = smoothLinear;\n function contours(values, tz) {\n return tz.map(value => contour(values, value));\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n isorings(values, value, ring => {\n smooth(ring, values, value);\n if (area$1(ring) > 0) polygons.push([ring]);else holes.push(ring);\n });\n holes.forEach(hole => {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains$1((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n return {\n type: 'MultiPolygon',\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array(),\n fragmentByEnd = new Array(),\n x,\n y,\n t0,\n t1,\n t2,\n t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f,\n g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {\n start: f.start,\n end: g.end,\n ring: f.ring.concat(g.ring)\n };\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {\n start: g.start,\n end: f.end,\n ring: g.ring.concat(f.ring)\n };\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {\n start: startIndex,\n end: endIndex,\n ring: [start, end]\n };\n }\n }\n }\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n function smoothLinear(ring, values, value) {\n ring.forEach(point => {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n contours.contour = contour;\n contours.size = function (_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]),\n _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n return dx = _0, dy = _1, contours;\n };\n contours.smooth = function (_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop$1, contours) : smooth === smoothLinear;\n };\n return contours;\n}\nfunction area$1(ring) {\n var i = 0,\n n = ring.length,\n area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\nfunction contains$1(ring, hole) {\n var i = -1,\n n = hole.length,\n c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\nfunction ringContains(ring, point) {\n var x = point[0],\n y = point[1],\n contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i],\n xi = pi[0],\n yi = pi[1],\n pj = ring[j],\n xj = pj[0],\n yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) contains = -contains;\n }\n return contains;\n}\nfunction segmentContains(a, b, c) {\n var i;\n return collinear$1(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\nfunction collinear$1(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\nfunction quantize(k, nice, zero) {\n return function (values) {\n var ex = extent(values),\n start = zero ? Math.min(ex[0], 0) : ex[0],\n stop = ex[1],\n span = stop - start,\n step = nice ? tickStep(start, stop, k) : span / (k + 1);\n return range$5(start + step, stop, step);\n };\n}\n\n/**\n * Generate isocontours (level sets) based on input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n * data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {Array} [params.thresholds] - Contour threshold array. If\n * specified, the levels, nice, resolve, and zero parameters are ignored.\n * @param {number} [params.levels] - The desired number of contour levels.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified levels.\n * @param {string} [params.resolve] - The method for resolving thresholds\n * across multiple input grids. If 'independent' (the default), threshold\n * calculation will be performed separately for each grid. If 'shared', a\n * single set of threshold values will be used for all input grids.\n * @param {boolean} [params.zero] - Boolean flag indicating if the contour\n * threshold values should include zero.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n * @param {boolean} [params.scale] - Optional numerical value by which to\n * scale the output isocontour coordinates. This parameter can be useful\n * to scale the contours to match a desired output resolution.\n * @param {string} [params.as='contour'] - The output field in which to store\n * the generated isocontour data (default 'contour').\n */\nfunction Isocontour(params) {\n Transform.call(this, null, params);\n}\nIsocontour.Definition = {\n 'type': 'Isocontour',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'thresholds',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'levels',\n 'type': 'number'\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'zero',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'scale',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'translate',\n 'type': 'number',\n 'array': true,\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'default': 'contour'\n }]\n};\ninherits(Isocontour, Transform, {\n transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n source = pulse.materialize(pulse.SOURCE).source,\n field = _.field || identity$6,\n contour = contours().smooth(_.smooth !== false),\n tz = _.thresholds || levels(source, field, _),\n as = _.as === null ? null : _.as || 'contour',\n values = [];\n source.forEach(t => {\n const grid = field(t);\n\n // generate contour paths in GeoJSON format\n const paths = contour.size([grid.width, grid.height])(grid.values, isArray(tz) ? tz : tz(grid.values));\n\n // adjust contour path coordinates as needed\n transformPaths(paths, grid, t, _);\n\n // ingest; copy source data properties to output\n paths.forEach(p => {\n values.push(rederive(t, ingest$1(as != null ? {\n [as]: p\n } : p)));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = values;\n return out;\n }\n});\nfunction levels(values, f, _) {\n const q = quantize(_.levels || 10, _.nice, _.zero !== false);\n return _.resolve !== 'shared' ? q : q(values.map(t => max$2(f(t).values)));\n}\nfunction transformPaths(paths, grid, datum, _) {\n let s = _.scale || grid.scale,\n t = _.translate || grid.translate;\n if (isFunction$1(s)) s = s(datum, _);\n if (isFunction$1(t)) t = t(datum, _);\n if ((s === 1 || s == null) && !t) return;\n const sx = (isNumber$1(s) ? s : s[0]) || 1,\n sy = (isNumber$1(s) ? s : s[1]) || 1,\n tx = t && t[0] || 0,\n ty = t && t[1] || 0;\n paths.forEach(transform$1(grid, sx, sy, tx, ty));\n}\nfunction transform$1(grid, sx, sy, tx, ty) {\n const x1 = grid.x1 || 0,\n y1 = grid.y1 || 0,\n flip = sx * sy < 0;\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n function transformRing(coordinates) {\n if (flip) coordinates.reverse(); // maintain winding order\n coordinates.forEach(transformPoint);\n }\n function transformPoint(coordinates) {\n coordinates[0] = (coordinates[0] - x1) * sx + tx;\n coordinates[1] = (coordinates[1] - y1) * sy + ty;\n }\n return function (geometry) {\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n };\n}\nfunction radius(bw, data, f) {\n const v = bw >= 0 ? bw : estimateBandwidth(data, f);\n return Math.round((Math.sqrt(4 * v * v + 1) - 1) / 2);\n}\nfunction number$2(_) {\n return isFunction$1(_) ? _ : constant$5(+_);\n}\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction density2D() {\n var x = d => d[0],\n y = d => d[1],\n weight = one$2,\n bandwidth = [-1, -1],\n dx = 960,\n dy = 500,\n k = 2; // log2(cellSize)\n\n function density(data, counts) {\n const rx = radius(bandwidth[0], data, x) >> k,\n // blur x-radius\n ry = radius(bandwidth[1], data, y) >> k,\n // blur y-radius\n ox = rx ? rx + 2 : 0,\n // x-offset padding for blur\n oy = ry ? ry + 2 : 0,\n // y-offset padding for blur\n n = 2 * ox + (dx >> k),\n // grid width\n m = 2 * oy + (dy >> k),\n // grid height\n values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n let values = values0;\n data.forEach(d => {\n const xi = ox + (+x(d) >> k),\n yi = oy + (+y(d) >> k);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += +weight(d);\n }\n });\n if (rx > 0 && ry > 0) {\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n } else if (rx > 0) {\n blurX(n, m, values0, values1, rx);\n blurX(n, m, values1, values0, rx);\n blurX(n, m, values0, values1, rx);\n values = values1;\n } else if (ry > 0) {\n blurY(n, m, values0, values1, ry);\n blurY(n, m, values1, values0, ry);\n blurY(n, m, values0, values1, ry);\n values = values1;\n }\n\n // scale density estimates\n // density in points per square pixel or probability density\n const s = counts ? Math.pow(2, -2 * k) : 1 / sum$1(values);\n for (let i = 0, sz = n * m; i < sz; ++i) values[i] *= s;\n return {\n values: values,\n scale: 1 << k,\n width: n,\n height: m,\n x1: ox,\n y1: oy,\n x2: ox + (dx >> k),\n y2: oy + (dy >> k)\n };\n }\n density.x = function (_) {\n return arguments.length ? (x = number$2(_), density) : x;\n };\n density.y = function (_) {\n return arguments.length ? (y = number$2(_), density) : y;\n };\n density.weight = function (_) {\n return arguments.length ? (weight = number$2(_), density) : weight;\n };\n density.size = function (_) {\n if (!arguments.length) return [dx, dy];\n var _0 = +_[0],\n _1 = +_[1];\n if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n return dx = _0, dy = _1, density;\n };\n density.cellSize = function (_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) error('invalid cell size');\n k = Math.floor(Math.log(_) / Math.LN2);\n return density;\n };\n density.bandwidth = function (_) {\n if (!arguments.length) return bandwidth;\n _ = array$5(_);\n if (_.length === 1) _ = [+_[0], +_[0]];\n if (_.length !== 2) error('invalid bandwidth');\n return bandwidth = _, density;\n };\n return density;\n}\nfunction blurX(n, m, source, target, r) {\n const w = (r << 1) + 1;\n for (let j = 0; j < m; ++j) {\n for (let i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source[i - w + j * n];\n }\n target[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\nfunction blurY(n, m, source, target, r) {\n const w = (r << 1) + 1;\n for (let i = 0; i < n; ++i) {\n for (let j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source[i + (j - w) * n];\n }\n target[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n\n/**\n * Perform 2D kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The [width, height] extent (in\n * units of input pixels) over which to perform density estimation.\n * @param {function(object): number} params.x - The x-coordinate accessor.\n * @param {function(object): number} params.y - The y-coordinate accessor.\n * @param {function(object): number} [params.weight] - The weight accessor.\n * @param {Array} [params.groupby] - An array of accessors\n * to groupby.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * This parameter determines the level of spatial approximation. For example,\n * the default value of 4 maps to 2x reductions in both x- and y- dimensions.\n * A value of 1 will result in an output raster grid whose dimensions exactly\n * matches the size parameter.\n * @param {Array} [params.bandwidth] - The KDE kernel bandwidths,\n * in pixels. The input can be a two-element array specifying separate\n * x and y bandwidths, or a single-element array specifying both. If the\n * bandwidth is unspecified or less than zero, the bandwidth will be\n * automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n * output values should be probability estimates (false, default) or\n * smoothed counts (true).\n * @param {string} [params.as='grid'] - The output field in which to store\n * the generated raster grid (default 'grid').\n */\nfunction KDE2D(params) {\n Transform.call(this, null, params);\n}\nKDE2D.Definition = {\n 'type': 'KDE2D',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'weight',\n 'type': 'field'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'cellSize',\n 'type': 'number'\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'counts',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'grid'\n }]\n};\nconst PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\nfunction params(obj, _) {\n PARAMS.forEach(param => _[param] != null ? obj[param](_[param]) : 0);\n return obj;\n}\ninherits(KDE2D, Transform, {\n transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) return pulse.StopPropagation;\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$2(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n kde = params(density2D(), _),\n as = _.as || 'grid',\n values = [];\n function set(t, vals) {\n for (let i = 0; i < names.length; ++i) t[names[i]] = vals[i];\n return t;\n }\n\n // generate density raster grids\n values = groups.map(g => ingest$1(set({\n [as]: kde(g, _.counts)\n }, g.dims)));\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = values;\n return out;\n }\n});\nfunction partition$2(data, groupby) {\n var groups = [],\n get = f => f(t),\n map,\n i,\n n,\n t,\n k,\n g;\n\n // partition data points into groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n return groups;\n}\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The dimensions [width, height] over which to compute contours.\n * If the values parameter is provided, this must be the dimensions of the input data.\n * If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array} [params.values] - An array of numeric values representing an\n * width x height grid of values over which to compute contours. If unspecified, this\n * transform will instead attempt to compute contours for the kernel density estimate\n * using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array} [params.thresholds] - Contour threshold array. If\n * this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n */\nfunction Contour(params) {\n Transform.call(this, null, params);\n}\nContour.Definition = {\n 'type': 'Contour',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'values',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'x',\n 'type': 'field'\n }, {\n 'name': 'y',\n 'type': 'field'\n }, {\n 'name': 'weight',\n 'type': 'field'\n }, {\n 'name': 'cellSize',\n 'type': 'number'\n }, {\n 'name': 'bandwidth',\n 'type': 'number'\n }, {\n 'name': 'count',\n 'type': 'number'\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'thresholds',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': true\n }]\n};\ninherits(Contour, Transform, {\n transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n contour = contours().smooth(_.smooth !== false),\n values = _.values,\n thresh = _.thresholds || quantize(_.count || 10, _.nice, !!values),\n size = _.size,\n grid,\n post;\n if (!values) {\n values = pulse.materialize(pulse.SOURCE).source;\n grid = params(density2D(), _)(values, true);\n post = transform$1(grid, grid.scale || 1, grid.scale || 1, 0, 0);\n size = [grid.width, grid.height];\n values = grid.values;\n }\n thresh = isArray(thresh) ? thresh : thresh(values);\n values = contour.size(size)(values, thresh);\n if (post) values.forEach(post);\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = (values || []).map(ingest$1);\n return out;\n }\n});\nconst Feature = 'Feature';\nconst FeatureCollection = 'FeatureCollection';\nconst MultiPoint = 'MultiPoint';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} [params.fields] - A two-element array\n * of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n * retrieving GeoJSON feature data.\n */\nfunction GeoJSON(params) {\n Transform.call(this, null, params);\n}\nGeoJSON.Definition = {\n 'type': 'GeoJSON',\n 'metadata': {},\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'geojson',\n 'type': 'field'\n }]\n};\ninherits(GeoJSON, Transform, {\n transform(_, pulse) {\n var features = this._features,\n points = this._points,\n fields = _.fields,\n lon = fields && fields[0],\n lat = fields && fields[1],\n geojson = _.geojson || !fields && identity$6,\n flag = pulse.ADD,\n mod;\n mod = _.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(geojson)) || lon && pulse.modified(accessorFields(lon)) || lat && pulse.modified(accessorFields(lat));\n if (!this.value || mod) {\n flag = pulse.SOURCE;\n this._features = features = [];\n this._points = points = [];\n }\n if (geojson) {\n pulse.visit(flag, t => features.push(geojson(t)));\n }\n if (lon && lat) {\n pulse.visit(flag, t => {\n var x = lon(t),\n y = lat(t);\n if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n points.push([x, y]);\n }\n });\n features = features.concat({\n type: Feature,\n geometry: {\n type: MultiPoint,\n coordinates: points\n }\n });\n }\n this.value = {\n type: FeatureCollection,\n features: features\n };\n }\n});\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n * the generated path data (default 'path').\n */\nfunction GeoPath(params) {\n Transform.call(this, null, params);\n}\nGeoPath.Definition = {\n 'type': 'GeoPath',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection'\n }, {\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'pointRadius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\ninherits(GeoPath, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n path = this.value,\n field = _.field || identity$6,\n as = _.as || 'path',\n flag = out.SOURCE;\n if (!path || _.modified()) {\n // parameters updated, reset and reflow\n this.value = path = getProjectionPath(_.projection);\n out.materialize().reflow();\n } else {\n flag = field === identity$6 || pulse.modified(field.fields) ? out.ADD_MOD : out.ADD;\n }\n const prev = initPath(path, _.pointRadius);\n out.visit(flag, t => t[as] = path(field(t)));\n path.pointRadius(prev);\n return out.modifies(as);\n }\n});\nfunction initPath(path, pointRadius) {\n const prev = path.pointRadius();\n path.context(null);\n if (pointRadius != null) {\n path.pointRadius(pointRadius);\n }\n return prev;\n}\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {Array} params.fields - A two-element array of\n * field accessors for the longitude and latitude values.\n * @param {Array} [params.as] - A two-element array of field names\n * under which to store the result. Defaults to ['x','y'].\n */\nfunction GeoPoint(params) {\n Transform.call(this, null, params);\n}\nGeoPoint.Definition = {\n 'type': 'GeoPoint',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection',\n 'required': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['x', 'y']\n }]\n};\ninherits(GeoPoint, Transform, {\n transform(_, pulse) {\n var proj = _.projection,\n lon = _.fields[0],\n lat = _.fields[1],\n as = _.as || ['x', 'y'],\n x = as[0],\n y = as[1],\n mod;\n function set(t) {\n const xy = proj([lon(t), lat(t)]);\n if (xy) {\n t[x] = xy[0];\n t[y] = xy[1];\n } else {\n t[x] = undefined;\n t[y] = undefined;\n }\n }\n if (_.modified()) {\n // parameters updated, reflow\n pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n } else {\n mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n }\n return pulse.modifies(as);\n }\n});\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n * the generated path data (default 'shape').\n */\nfunction GeoShape(params) {\n Transform.call(this, null, params);\n}\nGeoShape.Definition = {\n 'type': 'GeoShape',\n 'metadata': {\n 'modifies': true,\n 'nomod': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection'\n }, {\n 'name': 'field',\n 'type': 'field',\n 'default': 'datum'\n }, {\n 'name': 'pointRadius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'shape'\n }]\n};\ninherits(GeoShape, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n shape = this.value,\n as = _.as || 'shape',\n flag = out.ADD;\n if (!shape || _.modified()) {\n // parameters updated, reset and reflow\n this.value = shape = shapeGenerator(getProjectionPath(_.projection), _.field || field$1('datum'), _.pointRadius);\n out.materialize().reflow();\n flag = out.SOURCE;\n }\n out.visit(flag, t => t[as] = shape);\n return out.modifies(as);\n }\n});\nfunction shapeGenerator(path, field, pointRadius) {\n const shape = pointRadius == null ? _ => path(field(_)) : _ => {\n var prev = path.pointRadius(),\n value = path.pointRadius(pointRadius)(field(_));\n path.pointRadius(prev);\n return value;\n };\n shape.context = _ => {\n path.context(_);\n return shape;\n };\n return shape;\n}\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\nfunction Graticule(params) {\n Transform.call(this, [], params);\n this.generator = graticule();\n}\nGraticule.Definition = {\n 'type': 'Graticule',\n 'metadata': {\n 'changes': true,\n 'generates': true\n },\n 'params': [{\n 'name': 'extent',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'extentMajor',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'extentMinor',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'step',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'stepMajor',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'default': [90, 360]\n }, {\n 'name': 'stepMinor',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'default': [10, 10]\n }, {\n 'name': 'precision',\n 'type': 'number',\n 'default': 2.5\n }]\n};\ninherits(Graticule, Transform, {\n transform(_, pulse) {\n var src = this.value,\n gen = this.generator,\n t;\n if (!src.length || _.modified()) {\n for (const prop in _) {\n if (isFunction$1(gen[prop])) {\n gen[prop](_[prop]);\n }\n }\n }\n t = gen();\n if (src.length) {\n pulse.mod.push(replace$1(src[0], t));\n } else {\n pulse.add.push(ingest$1(t));\n }\n src[0] = t;\n return pulse;\n }\n});\n\n/**\n * Render a heatmap image for input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n * data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {string} [params.color] - A constant color value or function for\n * individual pixel color. If a function, it will be invoked with an input\n * object that includes $x, $y, $value, and $max fields for the grid.\n * @param {number} [params.opacity] - A constant opacity value or function for\n * individual pixel opacity. If a function, it will be invoked with an input\n * object that includes $x, $y, $value, and $max fields for the grid.\n * @param {string} [params.resolve] - The method for resolving maximum values\n * across multiple input grids. If 'independent' (the default), maximum\n * calculation will be performed separately for each grid. If 'shared',\n * a single global maximum will be used for all input grids.\n * @param {string} [params.as='image'] - The output field in which to store\n * the generated bitmap canvas images (default 'image').\n */\nfunction Heatmap(params) {\n Transform.call(this, null, params);\n}\nHeatmap.Definition = {\n 'type': 'heatmap',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'color',\n 'type': 'string',\n 'expr': true\n }, {\n 'name': 'opacity',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'image'\n }]\n};\ninherits(Heatmap, Transform, {\n transform(_, pulse) {\n if (!pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var source = pulse.materialize(pulse.SOURCE).source,\n shared = _.resolve === 'shared',\n field = _.field || identity$6,\n opacity = opacity_(_.opacity, _),\n color = color_(_.color, _),\n as = _.as || 'image',\n obj = {\n $x: 0,\n $y: 0,\n $value: 0,\n $max: shared ? max$2(source.map(t => max$2(field(t).values))) : 0\n };\n source.forEach(t => {\n const v = field(t);\n\n // build proxy data object\n const o = extend$1({}, t, obj);\n // set maximum value if not globally shared\n if (!shared) o.$max = max$2(v.values || []);\n\n // generate canvas image\n // optimize color/opacity if not pixel-dependent\n t[as] = toCanvas(v, o, color.dep ? color : constant$5(color(o)), opacity.dep ? opacity : constant$5(opacity(o)));\n });\n return pulse.reflow(true).modifies(as);\n }\n});\n\n// get image color function\nfunction color_(color, _) {\n let f;\n if (isFunction$1(color)) {\n f = obj => rgb$1(color(obj, _));\n f.dep = dependency(color);\n } else {\n // default to mid-grey\n f = constant$5(rgb$1(color || '#888'));\n }\n return f;\n}\n\n// get image opacity function\nfunction opacity_(opacity, _) {\n let f;\n if (isFunction$1(opacity)) {\n f = obj => opacity(obj, _);\n f.dep = dependency(opacity);\n } else if (opacity) {\n f = constant$5(opacity);\n } else {\n // default to [0, max] opacity gradient\n f = obj => obj.$value / obj.$max || 0;\n f.dep = true;\n }\n return f;\n}\n\n// check if function depends on individual pixel data\nfunction dependency(f) {\n if (!isFunction$1(f)) return false;\n const set = toSet(accessorFields(f));\n return set.$x || set.$y || set.$value || set.$max;\n}\n\n// render raster grid to canvas\nfunction toCanvas(grid, obj, color, opacity) {\n const n = grid.width,\n m = grid.height,\n x1 = grid.x1 || 0,\n y1 = grid.y1 || 0,\n x2 = grid.x2 || n,\n y2 = grid.y2 || m,\n val = grid.values,\n value = val ? i => val[i] : zero$5,\n can = domCanvas(x2 - x1, y2 - y1),\n ctx = can.getContext('2d'),\n img = ctx.getImageData(0, 0, x2 - x1, y2 - y1),\n pix = img.data;\n for (let j = y1, k = 0; j < y2; ++j) {\n obj.$y = j - y1;\n for (let i = x1, r = j * n; i < x2; ++i, k += 4) {\n obj.$x = i - x1;\n obj.$value = value(i + r);\n const v = color(obj);\n pix[k + 0] = v.r;\n pix[k + 1] = v.g;\n pix[k + 2] = v.b;\n pix[k + 3] = ~~(255 * opacity(obj));\n }\n }\n ctx.putImageData(img, 0, 0);\n return can;\n}\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Projection$1(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Projection$1, Transform, {\n transform(_, pulse) {\n let proj = this.value;\n if (!proj || _.modified('type')) {\n this.value = proj = create(_.type);\n projectionProperties.forEach(prop => {\n if (_[prop] != null) set$3(proj, prop, _[prop]);\n });\n } else {\n projectionProperties.forEach(prop => {\n if (_.modified(prop)) set$3(proj, prop, _[prop]);\n });\n }\n if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n if (_.fit) fit(proj, _);\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\nfunction fit(proj, _) {\n const data = collectGeoJSON(_.fit);\n _.extent ? proj.fitExtent(_.extent, data) : _.size ? proj.fitSize(_.size, data) : 0;\n}\nfunction create(type) {\n const constructor = projection((type || 'mercator').toLowerCase());\n if (!constructor) error('Unrecognized projection type: ' + type);\n return constructor();\n}\nfunction set$3(proj, key, value) {\n if (isFunction$1(proj[key])) proj[key](value);\n}\nfunction collectGeoJSON(data) {\n data = array$5(data);\n return data.length === 1 ? data[0] : {\n type: FeatureCollection,\n features: data.reduce((a, f) => a.concat(featurize(f)), [])\n };\n}\nfunction featurize(f) {\n return f.type === FeatureCollection ? f.features : array$5(f).filter(d => d != null).map(d => d.type === Feature ? d : {\n type: Feature,\n geometry: d\n });\n}\nvar geo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n contour: Contour,\n geojson: GeoJSON,\n geopath: GeoPath,\n geopoint: GeoPoint,\n geoshape: GeoShape,\n graticule: Graticule,\n heatmap: Heatmap,\n isocontour: Isocontour,\n kde2d: KDE2D,\n projection: Projection$1\n});\nfunction forceCenter(x, y) {\n var nodes,\n strength = 1;\n if (x == null) x = 0;\n if (y == null) y = 0;\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n force.initialize = function (_) {\n nodes = _;\n };\n force.x = function (_) {\n return arguments.length ? (x = +_, force) : x;\n };\n force.y = function (_) {\n return arguments.length ? (y = +_, force) : y;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n return force;\n}\nfunction tree_add(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add$1(this.cover(x, y), x, y, d);\n}\nfunction add$1(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {\n data: d\n },\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | xp >= xm));\n return parent[j] = node, parent[i] = leaf, tree;\n}\nfunction addAll(data) {\n var d,\n i,\n n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add$1(this, xz[i], yz[i], data[i]);\n }\n return this;\n}\nfunction tree_cover(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries donā€™t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | x < x0;\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0:\n x1 = x0 + z, y1 = y0 + z;\n break;\n case 1:\n x0 = x1 - z, y1 = y0 + z;\n break;\n case 2:\n x1 = x0 + z, y0 = y1 - z;\n break;\n case 3:\n x0 = x1 - z, y0 = y1 - z;\n break;\n }\n }\n if (this._root && this._root.length) this._root = node;\n }\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\nfunction tree_data() {\n var data = [];\n this.visit(function (node) {\n if (!node.length) do data.push(node.data); while (node = node.next);\n });\n return data;\n}\nfunction tree_extent(_) {\n return arguments.length ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\nfunction Quad(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\nfunction tree_find(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n while (q = quads.pop()) {\n // Stop searching if this quadrant canā€™t contain a closer node.\n if (!(node = q.node) || (x1 = q.x0) > x3 || (y1 = q.y0) > y3 || (x2 = q.x1) < x0 || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n quads.push(new Quad(node[3], xm, ym, x2, y2), new Quad(node[2], x1, ym, xm, y2), new Quad(node[1], xm, y1, x2, ym), new Quad(node[0], x1, y1, xm, ym));\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | x >= xm) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isnā€™t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n return data;\n}\nfunction tree_remove(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm;else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym;else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[i + 1 & 3] || parent[i + 2 & 3] || parent[i + 3 & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return next ? previous.next = next : delete previous.next, this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length) {\n if (retainer) retainer[j] = node;else this._root = node;\n }\n return this;\n}\nfunction removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\nfunction tree_root() {\n return this._root;\n}\nfunction tree_size() {\n var size = 0;\n this.visit(function (node) {\n if (!node.length) do ++size; while (node = node.next);\n });\n return size;\n}\nfunction tree_visit(callback) {\n var quads = [],\n q,\n node = this._root,\n child,\n x0,\n y0,\n x1,\n y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2,\n ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\nfunction tree_visitAfter(callback) {\n var quads = [],\n next = [],\n q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child,\n x0 = q.x0,\n y0 = q.y0,\n x1 = q.x1,\n y1 = q.y1,\n xm = (x0 + x1) / 2,\n ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\nfunction defaultX(d) {\n return d[0];\n}\nfunction tree_x(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\nfunction defaultY(d) {\n return d[1];\n}\nfunction tree_y(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\nfunction quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\nfunction leaf_copy(leaf) {\n var copy = {\n data: leaf.data\n },\n next = copy;\n while (leaf = leaf.next) next = next.next = {\n data: leaf.data\n };\n return copy;\n}\nvar treeProto = quadtree.prototype = Quadtree.prototype;\ntreeProto.copy = function () {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n if (!node) return copy;\n if (!node.length) return copy._root = leaf_copy(node), copy;\n nodes = [{\n source: node,\n target: copy._root = new Array(4)\n }];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({\n source: child,\n target: node.target[i] = new Array(4)\n });else node.target[i] = leaf_copy(child);\n }\n }\n }\n return copy;\n};\ntreeProto.add = tree_add;\ntreeProto.addAll = addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\nfunction constant$1(x) {\n return function () {\n return x;\n };\n}\nfunction jiggle(random) {\n return (random() - 0.5) * 1e-6;\n}\nfunction x$1(d) {\n return d.x + d.vx;\n}\nfunction y$1(d) {\n return d.y + d.vy;\n}\nfunction forceCollide(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n if (typeof radius !== \"function\") radius = constant$1(radius == null ? 1 : +radius);\n function force() {\n var i,\n n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x$1, y$1).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data,\n rj = quad.r,\n r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.iterations = function (_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n force.radius = function (_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant$1(+_), initialize(), force) : radius;\n };\n return force;\n}\nfunction index$1(d) {\n return d.index;\n}\nfunction find$1(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\nfunction forceLink(links) {\n var id = index$1,\n strength = defaultStrength,\n strengths,\n distance = constant$1(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n if (links == null) links = [];\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find$1(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find$1(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n function initializeStrength() {\n if (!nodes) return;\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n function initializeDistance() {\n if (!nodes) return;\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.links = function (_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n force.id = function (_) {\n return arguments.length ? (id = _, force) : id;\n };\n force.iterations = function (_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$1(+_), initializeStrength(), force) : strength;\n };\n force.distance = function (_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant$1(+_), initializeDistance(), force) : distance;\n };\n return force;\n}\nvar noop = {\n value: () => {}\n};\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\nfunction Dispatch(_) {\n this._ = _;\n}\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function (t) {\n var name = \"\",\n i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {\n type: t,\n name: name\n };\n });\n}\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function (typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get$1(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set$2(_[t], typename.name, callback);else if (callback == null) for (t in _) _[t] = set$2(_[t], typename.name, null);\n }\n return this;\n },\n copy: function () {\n var copy = {},\n _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function (type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function (type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\nfunction get$1(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\nfunction set$2(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({\n name: name,\n value: callback\n });\n return type;\n}\nvar frame = 0,\n // is an animation frame pending?\n timeout = 0,\n // is a timeout pending?\n interval$2 = 0,\n // are any timers active?\n pokeDelay = 1000,\n // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (f) {\n setTimeout(f, 17);\n };\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nfunction Timer$1() {\n this._call = this._time = this._next = null;\n}\nTimer$1.prototype = timer$1.prototype = {\n constructor: Timer$1,\n restart: function (callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function () {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nfunction timer$1(callback, delay, time) {\n var t = new Timer$1();\n t.restart(callback, delay, time);\n return t;\n}\nfunction timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend weā€™ve set an alarm, if we havenā€™t already.\n var t = taskHead,\n e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now = clock.now(),\n delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\nfunction nap() {\n var t0,\n t1 = taskHead,\n t2,\n time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval$2) interval$2 = clearInterval(interval$2);\n } else {\n if (!interval$2) clockLast = clock.now(), interval$2 = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\nfunction interval$1(callback, delay, time) {\n var t = new Timer$1(),\n total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function (callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n };\n t.restart(callback, delay, time);\n return t;\n}\n\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a$1 = 1664525;\nconst c$1 = 1013904223;\nconst m$1 = 4294967296; // 2^32\n\nfunction lcg$1() {\n let s = 1;\n return () => (s = (a$1 * s + c$1) % m$1) / m$1;\n}\nfunction x(d) {\n return d.x;\n}\nfunction y(d) {\n return d.y;\n}\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\nfunction forceSimulation(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer$1(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg$1();\n if (nodes == null) nodes = [];\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n function tick(iterations) {\n var i,\n n = nodes.length,\n node;\n if (iterations === undefined) iterations = 1;\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n forces.forEach(function (force) {\n force(alpha);\n });\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;else node.y = node.fy, node.vy = 0;\n }\n }\n return simulation;\n }\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i),\n angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n initializeNodes();\n return simulation = {\n tick: tick,\n restart: function () {\n return stepper.restart(step), simulation;\n },\n stop: function () {\n return stepper.stop(), simulation;\n },\n nodes: function (_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n alpha: function (_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n alphaMin: function (_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n alphaDecay: function (_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n alphaTarget: function (_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n velocityDecay: function (_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n randomSource: function (_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n force: function (name, _) {\n return arguments.length > 1 ? (_ == null ? forces.delete(name) : forces.set(name, initializeForce(_)), simulation) : forces.get(name);\n },\n find: function (x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n if (radius == null) radius = Infinity;else radius *= radius;\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n return closest;\n },\n on: function (name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\nfunction forceManyBody() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant$1(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n function force(_) {\n var i,\n n = nodes.length,\n tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length,\n node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n function accumulate(quad) {\n var strength = 0,\n q,\n c,\n weight = 0,\n x,\n y,\n i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index]; while (q = q.next);\n }\n quad.value = strength;\n }\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n force.initialize = function (_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$1(+_), initialize(), force) : strength;\n };\n force.distanceMin = function (_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n force.distanceMax = function (_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n force.theta = function (_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n return force;\n}\nfunction forceX(x) {\n var strength = constant$1(0.1),\n nodes,\n strengths,\n xz;\n if (typeof x !== \"function\") x = constant$1(x == null ? 0 : +x);\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n force.initialize = function (_) {\n nodes = _;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$1(+_), initialize(), force) : strength;\n };\n force.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant$1(+_), initialize(), force) : x;\n };\n return force;\n}\nfunction forceY(y) {\n var strength = constant$1(0.1),\n nodes,\n strengths,\n yz;\n if (typeof y !== \"function\") y = constant$1(y == null ? 0 : +y);\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n function initialize() {\n if (!nodes) return;\n var i,\n n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n force.initialize = function (_) {\n nodes = _;\n initialize();\n };\n force.strength = function (_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant$1(+_), initialize(), force) : strength;\n };\n force.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant$1(+_), initialize(), force) : y;\n };\n return force;\n}\nconst ForceMap = {\n center: forceCenter,\n collide: forceCollide,\n nbody: forceManyBody,\n link: forceLink,\n x: forceX,\n y: forceY\n};\nconst Forces = 'forces',\n ForceParams = ['alpha', 'alphaMin', 'alphaTarget', 'velocityDecay', 'forces'],\n ForceConfig = ['static', 'iterations'],\n ForceOutput = ['x', 'y', 'vx', 'vy'];\n\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.forces - The forces to apply.\n */\nfunction Force(params) {\n Transform.call(this, null, params);\n}\nForce.Definition = {\n 'type': 'Force',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'static',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'restart',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 300\n }, {\n 'name': 'alpha',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'alphaMin',\n 'type': 'number',\n 'default': 0.001\n }, {\n 'name': 'alphaTarget',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'velocityDecay',\n 'type': 'number',\n 'default': 0.4\n }, {\n 'name': 'forces',\n 'type': 'param',\n 'array': true,\n 'params': [{\n 'key': {\n 'force': 'center'\n },\n 'params': [{\n 'name': 'x',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'y',\n 'type': 'number',\n 'default': 0\n }]\n }, {\n 'key': {\n 'force': 'collide'\n },\n 'params': [{\n 'name': 'radius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.7\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 1\n }]\n }, {\n 'key': {\n 'force': 'nbody'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': -30,\n 'expr': true\n }, {\n 'name': 'theta',\n 'type': 'number',\n 'default': 0.9\n }, {\n 'name': 'distanceMin',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'distanceMax',\n 'type': 'number'\n }]\n }, {\n 'key': {\n 'force': 'link'\n },\n 'params': [{\n 'name': 'links',\n 'type': 'data'\n }, {\n 'name': 'id',\n 'type': 'field'\n }, {\n 'name': 'distance',\n 'type': 'number',\n 'default': 30,\n 'expr': true\n }, {\n 'name': 'strength',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 1\n }]\n }, {\n 'key': {\n 'force': 'x'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.1\n }, {\n 'name': 'x',\n 'type': 'field'\n }]\n }, {\n 'key': {\n 'force': 'y'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.1\n }, {\n 'name': 'y',\n 'type': 'field'\n }]\n }]\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'modify': false,\n 'default': ForceOutput\n }]\n};\ninherits(Force, Transform, {\n transform(_, pulse) {\n var sim = this.value,\n change = pulse.changed(pulse.ADD_REM),\n params = _.modified(ForceParams),\n iters = _.iterations || 300;\n\n // configure simulation\n if (!sim) {\n this.value = sim = simulation(pulse.source, _);\n sim.on('tick', rerun(pulse.dataflow, this));\n if (!_.static) {\n change = true;\n sim.tick(); // ensure we run on init\n }\n\n pulse.modifies('index');\n } else {\n if (change) {\n pulse.modifies('index');\n sim.nodes(pulse.source);\n }\n if (params || pulse.changed(pulse.MOD)) {\n setup(sim, _, 0, pulse);\n }\n }\n\n // run simulation\n if (params || change || _.modified(ForceConfig) || pulse.changed() && _.restart) {\n sim.alpha(Math.max(sim.alpha(), _.alpha || 1)).alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n if (_.static) {\n for (sim.stop(); --iters >= 0;) sim.tick();\n } else {\n if (sim.stopped()) sim.restart();\n if (!change) return pulse.StopPropagation; // defer to sim ticks\n }\n }\n\n return this.finish(_, pulse);\n },\n finish(_, pulse) {\n const dataflow = pulse.dataflow;\n\n // inspect dependencies, touch link source data\n for (let args = this._argops, j = 0, m = args.length, arg; j < m; ++j) {\n arg = args[j];\n if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n continue;\n }\n for (var ops = arg.op._argops, i = 0, n = ops.length, op; i < n; ++i) {\n if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n dataflow.pulse(op, dataflow.changeset().reflow());\n break;\n }\n }\n }\n\n // reflow all nodes\n return pulse.reflow(_.modified()).modifies(ForceOutput);\n }\n});\nfunction rerun(df, op) {\n return () => df.touch(op).run();\n}\nfunction simulation(nodes, _) {\n const sim = forceSimulation(nodes),\n stop = sim.stop,\n restart = sim.restart;\n let stopped = false;\n sim.stopped = () => stopped;\n sim.restart = () => (stopped = false, restart());\n sim.stop = () => (stopped = true, stop());\n return setup(sim, _, true).on('end', () => stopped = true);\n}\nfunction setup(sim, _, init, pulse) {\n var f = array$5(_.forces),\n i,\n n,\n p,\n name;\n for (i = 0, n = ForceParams.length; i < n; ++i) {\n p = ForceParams[i];\n if (p !== Forces && _.modified(p)) sim[p](_[p]);\n }\n for (i = 0, n = f.length; i < n; ++i) {\n name = Forces + i;\n p = init || _.modified(Forces, i) ? getForce(f[i]) : pulse && modified(f[i], pulse) ? sim.force(name) : null;\n if (p) sim.force(name, p);\n }\n for (n = sim.numForces || 0; i < n; ++i) {\n sim.force(Forces + i, null); // remove\n }\n\n sim.numForces = f.length;\n return sim;\n}\nfunction modified(f, pulse) {\n var k, v;\n for (k in f) {\n if (isFunction$1(v = f[k]) && pulse.modified(accessorFields(v))) return 1;\n }\n return 0;\n}\nfunction getForce(_) {\n var f, p;\n if (!has$1(ForceMap, _.force)) {\n error('Unrecognized force: ' + _.force);\n }\n f = ForceMap[_.force]();\n for (p in _) {\n if (isFunction$1(f[p])) setForceParam(f[p], _[p], _);\n }\n return f;\n}\nfunction setForceParam(f, v, _) {\n f(isFunction$1(v) ? d => v(d, _) : v);\n}\nvar force = /*#__PURE__*/Object.freeze({\n __proto__: null,\n force: Force\n});\nfunction defaultSeparation$2(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\nfunction cluster() {\n var separation = defaultSeparation$2,\n dx = 1,\n dy = 1,\n nodeSize = false;\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function (node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function (node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function (node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n cluster.separation = function (x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n cluster.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : nodeSize ? null : [dx, dy];\n };\n cluster.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : nodeSize ? [dx, dy] : null;\n };\n return cluster;\n}\nfunction count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\nfunction node_count() {\n return this.eachAfter(count);\n}\nfunction node_each(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\nfunction node_eachBefore(callback, that) {\n var node = this,\n nodes = [node],\n children,\n i,\n index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\nfunction node_eachAfter(callback, that) {\n var node = this,\n nodes = [node],\n next = [],\n children,\n i,\n n,\n index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\nfunction node_find(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\nfunction node_sum(value) {\n return this.eachAfter(function (node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\nfunction node_sort(compare) {\n return this.eachBefore(function (node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\nfunction node_path(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\nfunction node_ancestors() {\n var node = this,\n nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\nfunction node_descendants() {\n return Array.from(this);\n}\nfunction node_leaves() {\n var leaves = [];\n this.eachBefore(function (node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\nfunction node_links() {\n var root = this,\n links = [];\n root.each(function (node) {\n if (node !== root) {\n // Donā€™t include the rootā€™s parent, if any.\n links.push({\n source: node.parent,\n target: node\n });\n }\n });\n return links;\n}\nfunction* node_iterator() {\n var node = this,\n current,\n next = [node],\n children,\n i,\n n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\nfunction hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n var root = new Node$2(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node$2(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n return root.eachBefore(computeHeight);\n}\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\nfunction objectChildren(d) {\n return d.children;\n}\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\nfunction computeHeight(node) {\n var height = 0;\n do node.height = height; while ((node = node.parent) && node.height < ++height);\n}\nfunction Node$2(data) {\n this.data = data;\n this.depth = this.height = 0;\n this.parent = null;\n}\nNode$2.prototype = hierarchy.prototype = {\n constructor: Node$2,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\nfunction optional(f) {\n return f == null ? null : required(f);\n}\nfunction required(f) {\n if (typeof f !== \"function\") throw new Error();\n return f;\n}\nfunction constantZero() {\n return 0;\n}\nfunction constant(x) {\n return function () {\n return x;\n };\n}\n\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nfunction lcg() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\nfunction array$2(x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nfunction shuffle(array, random) {\n let m = array.length,\n t,\n i;\n while (m) {\n i = random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n return array;\n}\nfunction packEncloseRandom(circles, random) {\n var i = 0,\n n = (circles = shuffle(Array.from(circles), random)).length,\n B = [],\n p,\n e;\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n return e;\n}\nfunction extendBasis(B, p) {\n var i, j;\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i]) && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p) && enclosesNot(encloseBasis2(B[i], p), B[j]) && enclosesNot(encloseBasis2(B[j], p), B[i]) && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error();\n}\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1:\n return encloseBasis1(B[0]);\n case 2:\n return encloseBasis2(B[0], B[1]);\n case 3:\n return encloseBasis3(B[0], B[1], B[2]);\n }\n}\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\nfunction encloseBasis2(a, b) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x21 = x2 - x1,\n y21 = y2 - y1,\n r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x,\n y1 = a.y,\n r1 = a.r,\n x2 = b.x,\n y2 = b.y,\n r2 = b.r,\n x3 = c.x,\n y3 = c.y,\n r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\nfunction place(b, a, c) {\n var dx = b.x - a.x,\n x,\n a2,\n dy = b.y - a.y,\n y,\n b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6,\n dx = b.x - a.x,\n dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\nfunction Node$1(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\nfunction packSiblingsRandom(circles, random) {\n if (!(n = (circles = array$2(circles)).length)) return 0;\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node$1(a), b = new Node$1(b), c = new Node$1(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circleā€¦\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node$1(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // ā€œClosenessā€ is determined by linear distance along the front-chain.\n // ā€œAheadā€ or ā€œbehindā€ is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b;\n while ((c = c.next) !== b) a.push(c._);\n c = packEncloseRandom(a, random);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n return c.r;\n}\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\nfunction pack() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n function pack(root) {\n const random = lcg();\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius)).eachAfter(packChildrenRandom(padding, 0.5, random)).eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildrenRandom(constantZero, 1, random)).eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random)).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n pack.radius = function (x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n pack.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n pack.padding = function (x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n return pack;\n}\nfunction radiusLeaf(radius) {\n return function (node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\nfunction packChildrenRandom(padding, k, random) {\n return function (node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packSiblingsRandom(children, random);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\nfunction translateChild(k) {\n return function (node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\nfunction roundNode(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\nfunction treemapDice(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\nfunction partition$1() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n function partition(root) {\n var n = root.height + 1;\n root.x0 = root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(dy, n) {\n return function (node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n partition.round = function (x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n partition.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n partition.padding = function (x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n return partition;\n}\nvar preroot = {\n depth: -1\n },\n ambiguous = {},\n imputed = {};\nfunction defaultId(d) {\n return d.id;\n}\nfunction defaultParentId(d) {\n return d.parentId;\n}\nfunction stratify() {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map();\n if (path != null) {\n const I = nodes.map((d, i) => normalize$1(path(d, i, data)));\n const P = I.map(parentof);\n const S = new Set(I).add(\"\");\n for (const i of P) {\n if (!S.has(i)) {\n S.add(i);\n I.push(i);\n P.push(parentof(i));\n nodes.push(imputed);\n }\n }\n currentId = (_, i) => I[i];\n currentParentId = (_, i) => P[i];\n }\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node$2(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (let i = nodes.length - 1; i >= 0; --i) {\n node = nodes[i];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n root.parent = preroot;\n root.eachBefore(function (node) {\n node.depth = node.parent.depth + 1;\n --n;\n }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n return root;\n }\n stratify.id = function (x) {\n return arguments.length ? (id = optional(x), stratify) : id;\n };\n stratify.parentId = function (x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n stratify.path = function (x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize$1(path) {\n path = \"\".concat(path);\n let i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : \"/\".concat(path);\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ā‡„ \"/foo\", \"/foo\" ā‡„ \"/\", \"/\" ā†¦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n let i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n let k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}\nfunction defaultSeparation$1(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-ā€™s ancestor is a sibling of v, returns vi-ā€™s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node$2.prototype);\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nfunction tree$1() {\n var separation = defaultSeparation$1,\n dx = 1,\n dy = 1,\n nodeSize = null;\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.ā€™s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function (node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function (node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n tree.separation = function (x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n tree.size = function (x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : nodeSize ? null : [dx, dy];\n };\n tree.nodeSize = function (x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : nodeSize ? [dx, dy] : null;\n };\n return tree;\n}\nfunction treemapSlice(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\nvar phi = (1 + Math.sqrt(5)) / 2;\nfunction squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx,\n dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) {\n sumValue -= nodeValue;\n break;\n }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {\n value: sumValue,\n dice: dx < dy,\n children: nodes.slice(i0, i1)\n });\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n return rows;\n}\nvar treemapSquarify = function custom(ratio) {\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n squarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return squarify;\n}(phi);\nfunction treemap() {\n var tile = treemapSquarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n function treemap(root) {\n root.x0 = root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n treemap.round = function (x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n treemap.size = function (x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n treemap.tile = function (x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n treemap.padding = function (x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n treemap.paddingInner = function (x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n treemap.paddingOuter = function (x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n treemap.paddingTop = function (x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n treemap.paddingRight = function (x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n treemap.paddingBottom = function (x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n treemap.paddingLeft = function (x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n return treemap;\n}\nfunction treemapBinary(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i,\n n = nodes.length,\n sum,\n sums = new Array(n + 1);\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n partition(0, n, parent.value, x0, y0, x1, y1);\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n var valueOffset = sums[i],\n valueTarget = value / 2 + valueOffset,\n k = i + 1,\n hi = j - 1;\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;else hi = mid;\n }\n if (valueTarget - sums[k - 1] < sums[k] - valueTarget && i + 1 < k) --k;\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n if (x1 - x0 > y1 - y0) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\nfunction treemapSliceDice(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1);\n}\nvar treemapResquarify = function custom(ratio) {\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && rows.ratio === ratio) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n resquarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return resquarify;\n}(phi);\n\n// Build lookup table mapping tuple keys to tree node instances\nfunction lookup$2(tree, key, filter) {\n const map = {};\n tree.each(node => {\n const t = node.data;\n if (filter(t)) map[key(t)] = node;\n });\n tree.lookup = map;\n return tree;\n}\n\n/**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n * non-leaf nodes generated by this transform should be included in the\n * output. The default (false) includes only the input data (leaf nodes)\n * in the data stream.\n */\nfunction Nest(params) {\n Transform.call(this, null, params);\n}\nNest.Definition = {\n 'type': 'Nest',\n 'metadata': {\n 'treesource': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'keys',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'generate',\n 'type': 'boolean'\n }]\n};\nconst children$1 = n => n.values;\ninherits(Nest, Transform, {\n transform(_, pulse) {\n if (!pulse.source) {\n error('Nest transform requires an upstream data source.');\n }\n var gen = _.generate,\n mod = _.modified(),\n out = pulse.clone(),\n tree = this.value;\n if (!tree || mod || pulse.changed()) {\n // collect nodes to remove\n if (tree) {\n tree.each(node => {\n if (node.children && isTuple(node.data)) {\n out.rem.push(node.data);\n }\n });\n }\n\n // generate new tree structure\n this.value = tree = hierarchy({\n values: array$5(_.keys).reduce((n, k) => {\n n.key(k);\n return n;\n }, nest()).entries(out.source)\n }, children$1);\n\n // collect nodes to add\n if (gen) {\n tree.each(node => {\n if (node.children) {\n node = ingest$1(node.data);\n out.add.push(node);\n out.source.push(node);\n }\n });\n }\n\n // build lookup table\n lookup$2(tree, tupleid, tupleid);\n }\n out.source.root = tree;\n return out;\n }\n});\nfunction nest() {\n const keys = [],\n nest = {\n entries: array => entries(apply(array, 0), 0),\n key: d => (keys.push(d), nest)\n };\n function apply(array, depth) {\n if (depth >= keys.length) {\n return array;\n }\n const n = array.length,\n key = keys[depth++],\n valuesByKey = {},\n result = {};\n let i = -1,\n keyValue,\n value,\n values;\n while (++i < n) {\n keyValue = key(value = array[i]) + '';\n if (values = valuesByKey[keyValue]) {\n values.push(value);\n } else {\n valuesByKey[keyValue] = [value];\n }\n }\n for (keyValue in valuesByKey) {\n result[keyValue] = apply(valuesByKey[keyValue], depth);\n }\n return result;\n }\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n const array = [];\n for (const key in map) {\n array.push({\n key,\n values: entries(map[key], depth)\n });\n }\n return array;\n }\n return nest;\n}\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction HierarchyLayout(params) {\n Transform.call(this, null, params);\n}\nconst defaultSeparation = (a, b) => a.parent === b.parent ? 1 : 2;\ninherits(HierarchyLayout, Transform, {\n transform(_, pulse) {\n if (!pulse.source || !pulse.source.root) {\n error(this.constructor.name + ' transform requires a backing tree data source.');\n }\n const layout = this.layout(_.method),\n fields = this.fields,\n root = pulse.source.root,\n as = _.as || fields;\n if (_.field) root.sum(_.field);else root.count();\n if (_.sort) root.sort(stableCompare(_.sort, d => d.data));\n setParams(layout, this.params, _);\n if (layout.separation) {\n layout.separation(_.separation !== false ? defaultSeparation : one$2);\n }\n try {\n this.value = layout(root);\n } catch (err) {\n error(err);\n }\n root.each(node => setFields(node, fields, as));\n return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n }\n});\nfunction setParams(layout, params, _) {\n for (let p, i = 0, n = params.length; i < n; ++i) {\n p = params[i];\n if (p in _) layout[p](_[p]);\n }\n}\nfunction setFields(node, fields, as) {\n const t = node.data,\n n = fields.length - 1;\n for (let i = 0; i < n; ++i) {\n t[as[i]] = node[fields[i]];\n }\n t[as[n]] = node.children ? node.children.length : 0;\n}\nconst Output$3 = ['x', 'y', 'r', 'depth', 'children'];\n\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Pack(params) {\n HierarchyLayout.call(this, params);\n}\nPack.Definition = {\n 'type': 'Pack',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'radius',\n 'type': 'field',\n 'default': null\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$3.length,\n 'default': Output$3\n }]\n};\ninherits(Pack, HierarchyLayout, {\n layout: pack,\n params: ['radius', 'size', 'padding'],\n fields: Output$3\n});\nconst Output$2 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Partition(params) {\n HierarchyLayout.call(this, params);\n}\nPartition.Definition = {\n 'type': 'Partition',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'round',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$2.length,\n 'default': Output$2\n }]\n};\ninherits(Partition, HierarchyLayout, {\n layout: partition$1,\n params: ['size', 'round', 'padding'],\n fields: Output$2\n});\n\n/**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\nfunction Stratify(params) {\n Transform.call(this, null, params);\n}\nStratify.Definition = {\n 'type': 'Stratify',\n 'metadata': {\n 'treesource': true\n },\n 'params': [{\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'parentKey',\n 'type': 'field',\n 'required': true\n }]\n};\ninherits(Stratify, Transform, {\n transform(_, pulse) {\n if (!pulse.source) {\n error('Stratify transform requires an upstream data source.');\n }\n let tree = this.value;\n const mod = _.modified(),\n out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n run = !tree || mod || pulse.changed(pulse.ADD_REM) || pulse.modified(_.key.fields) || pulse.modified(_.parentKey.fields);\n\n // prevent upstream source pollution\n out.source = out.source.slice();\n if (run) {\n tree = out.source.length ? lookup$2(stratify().id(_.key).parentId(_.parentKey)(out.source), _.key, truthy) : lookup$2(stratify()([{}]), _.key, _.key);\n }\n out.source.root = this.value = tree;\n return out;\n }\n});\nconst Layouts = {\n tidy: tree$1,\n cluster: cluster\n};\nconst Output$1$1 = ['x', 'y', 'depth', 'children'];\n\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Tree(params) {\n HierarchyLayout.call(this, params);\n}\nTree.Definition = {\n 'type': 'Tree',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'tidy',\n 'values': ['tidy', 'cluster']\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'nodeSize',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'separation',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$1$1.length,\n 'default': Output$1$1\n }]\n};\ninherits(Tree, HierarchyLayout, {\n /**\n * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n */\n layout(method) {\n const m = method || 'tidy';\n if (has$1(Layouts, m)) return Layouts[m]();else error('Unrecognized Tree layout method: ' + m);\n },\n params: ['size', 'nodeSize'],\n fields: Output$1$1\n});\n\n/**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction TreeLinks(params) {\n Transform.call(this, [], params);\n}\nTreeLinks.Definition = {\n 'type': 'TreeLinks',\n 'metadata': {\n 'tree': true,\n 'generates': true,\n 'changes': true\n },\n 'params': []\n};\ninherits(TreeLinks, Transform, {\n transform(_, pulse) {\n const links = this.value,\n tree = pulse.source && pulse.source.root,\n out = pulse.fork(pulse.NO_SOURCE),\n lut = {};\n if (!tree) error('TreeLinks transform requires a tree data source.');\n if (pulse.changed(pulse.ADD_REM)) {\n // remove previous links\n out.rem = links;\n\n // build lookup table of valid tuples\n pulse.visit(pulse.SOURCE, t => lut[tupleid(t)] = 1);\n\n // generate links for all edges incident on valid tuples\n tree.each(node => {\n const t = node.data,\n p = node.parent && node.parent.data;\n if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n out.add.push(ingest$1({\n source: p,\n target: t\n }));\n }\n });\n this.value = out.add;\n } else if (pulse.changed(pulse.MOD)) {\n // build lookup table of modified tuples\n pulse.visit(pulse.MOD, t => lut[tupleid(t)] = 1);\n\n // gather links incident on modified tuples\n links.forEach(link => {\n if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n out.mod.push(link);\n }\n });\n }\n return out;\n }\n});\nconst Tiles = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n slicedice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify\n};\nconst Output$4 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Treemap(params) {\n HierarchyLayout.call(this, params);\n}\nTreemap.Definition = {\n 'type': 'Treemap',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'squarify',\n 'values': ['squarify', 'resquarify', 'binary', 'dice', 'slice', 'slicedice']\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingInner',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingOuter',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingTop',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingRight',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingBottom',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingLeft',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'ratio',\n 'type': 'number',\n 'default': 1.618033988749895\n }, {\n 'name': 'round',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$4.length,\n 'default': Output$4\n }]\n};\ninherits(Treemap, HierarchyLayout, {\n /**\n * Treemap layout generator. Adds 'method' and 'ratio' parameters\n * to configure the underlying tile method.\n */\n layout() {\n const x = treemap();\n x.ratio = _ => {\n const t = x.tile();\n if (t.ratio) x.tile(t.ratio(_));\n };\n x.method = _ => {\n if (has$1(Tiles, _)) x.tile(Tiles[_]);else error('Unrecognized Treemap layout method: ' + _);\n };\n return x;\n },\n params: ['method', 'ratio', 'size', 'round', 'padding', 'paddingInner', 'paddingOuter', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n fields: Output$4\n});\nvar tree = /*#__PURE__*/Object.freeze({\n __proto__: null,\n nest: Nest,\n pack: Pack,\n partition: Partition,\n stratify: Stratify,\n tree: Tree,\n treelinks: TreeLinks,\n treemap: Treemap\n});\n\n// bit mask for getting first 2 bytes of alpha value\nconst ALPHA_MASK = 0xff000000;\nfunction baseBitmaps($, data) {\n const bitmap = $.bitmap();\n // when there is no base mark but data points are to be avoided\n (data || []).forEach(d => bitmap.set($(d.boundary[0]), $(d.boundary[3])));\n return [bitmap, undefined];\n}\nfunction markBitmaps($, baseMark, avoidMarks, labelInside, isGroupArea) {\n // create canvas\n const width = $.width,\n height = $.height,\n border = labelInside || isGroupArea,\n context = domCanvas(width, height).getContext('2d'),\n baseMarkContext = domCanvas(width, height).getContext('2d'),\n strokeContext = border && domCanvas(width, height).getContext('2d');\n\n // render all marks to be avoided into canvas\n avoidMarks.forEach(items => draw(context, items, false));\n draw(baseMarkContext, baseMark, false);\n if (border) {\n draw(strokeContext, baseMark, true);\n }\n\n // get canvas buffer, create bitmaps\n const buffer = getBuffer(context, width, height),\n baseMarkBuffer = getBuffer(baseMarkContext, width, height),\n strokeBuffer = border && getBuffer(strokeContext, width, height),\n layer1 = $.bitmap(),\n layer2 = border && $.bitmap();\n\n // populate bitmap layers\n let x, y, u, v, index, alpha, strokeAlpha, baseMarkAlpha;\n for (y = 0; y < height; ++y) {\n for (x = 0; x < width; ++x) {\n index = y * width + x;\n alpha = buffer[index] & ALPHA_MASK;\n baseMarkAlpha = baseMarkBuffer[index] & ALPHA_MASK;\n strokeAlpha = border && strokeBuffer[index] & ALPHA_MASK;\n if (alpha || strokeAlpha || baseMarkAlpha) {\n u = $(x);\n v = $(y);\n if (!isGroupArea && (alpha || baseMarkAlpha)) layer1.set(u, v); // update interior bitmap\n if (border && (alpha || strokeAlpha)) layer2.set(u, v); // update border bitmap\n }\n }\n }\n\n return [layer1, layer2];\n}\nfunction getBuffer(context, width, height) {\n return new Uint32Array(context.getImageData(0, 0, width, height).data.buffer);\n}\nfunction draw(context, items, interior) {\n if (!items.length) return;\n const type = items[0].mark.marktype;\n if (type === 'group') {\n items.forEach(group => {\n group.items.forEach(mark => draw(context, mark.items, interior));\n });\n } else {\n Marks[type].draw(context, {\n items: interior ? items.map(prepare) : items\n });\n }\n}\n\n/**\n * Prepare item before drawing into canvas (setting stroke and opacity)\n * @param {object} source item to be prepared\n * @returns prepared item\n */\nfunction prepare(source) {\n const item = rederive(source, {});\n if (item.stroke && item.strokeOpacity !== 0 || item.fill && item.fillOpacity !== 0) {\n return {\n ...item,\n strokeOpacity: 1,\n stroke: '#000',\n fillOpacity: 0\n };\n }\n return item;\n}\nconst DIV = 5,\n // bit shift from x, y index to bit vector array index\n MOD = 31,\n // bit mask for index lookup within a bit vector\n SIZE$1 = 32,\n // individual bit vector size\n RIGHT0 = new Uint32Array(SIZE$1 + 1),\n // left-anchored bit vectors, full -> 0\n RIGHT1 = new Uint32Array(SIZE$1 + 1); // right-anchored bit vectors, 0 -> full\n\nRIGHT1[0] = 0;\nRIGHT0[0] = ~RIGHT1[0];\nfor (let i = 1; i <= SIZE$1; ++i) {\n RIGHT1[i] = RIGHT1[i - 1] << 1 | 1;\n RIGHT0[i] = ~RIGHT1[i];\n}\nfunction Bitmap(w, h) {\n const array = new Uint32Array(~~((w * h + SIZE$1) / SIZE$1));\n function _set(index, mask) {\n array[index] |= mask;\n }\n function _clear(index, mask) {\n array[index] &= mask;\n }\n return {\n array: array,\n get: (x, y) => {\n const index = y * w + x;\n return array[index >>> DIV] & 1 << (index & MOD);\n },\n set: (x, y) => {\n const index = y * w + x;\n _set(index >>> DIV, 1 << (index & MOD));\n },\n clear: (x, y) => {\n const index = y * w + x;\n _clear(index >>> DIV, ~(1 << (index & MOD)));\n },\n getRange: (x, y, x2, y2) => {\n let r = y2,\n start,\n end,\n indexStart,\n indexEnd;\n for (; r >= y; --r) {\n start = r * w + x;\n end = r * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n if (array[indexStart] & RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]) {\n return true;\n }\n } else {\n if (array[indexStart] & RIGHT0[start & MOD]) return true;\n if (array[indexEnd] & RIGHT1[(end & MOD) + 1]) return true;\n for (let i = indexStart + 1; i < indexEnd; ++i) {\n if (array[i]) return true;\n }\n }\n }\n return false;\n },\n setRange: (x, y, x2, y2) => {\n let start, end, indexStart, indexEnd, i;\n for (; y <= y2; ++y) {\n start = y * w + x;\n end = y * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n _set(indexStart, RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]);\n } else {\n _set(indexStart, RIGHT0[start & MOD]);\n _set(indexEnd, RIGHT1[(end & MOD) + 1]);\n for (i = indexStart + 1; i < indexEnd; ++i) _set(i, 0xffffffff);\n }\n }\n },\n clearRange: (x, y, x2, y2) => {\n let start, end, indexStart, indexEnd, i;\n for (; y <= y2; ++y) {\n start = y * w + x;\n end = y * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n _clear(indexStart, RIGHT1[start & MOD] | RIGHT0[(end & MOD) + 1]);\n } else {\n _clear(indexStart, RIGHT1[start & MOD]);\n _clear(indexEnd, RIGHT0[(end & MOD) + 1]);\n for (i = indexStart + 1; i < indexEnd; ++i) _clear(i, 0);\n }\n }\n },\n outOfBounds: (x, y, x2, y2) => x < 0 || y < 0 || y2 >= h || x2 >= w\n };\n}\nfunction scaler(width, height, padding) {\n const ratio = Math.max(1, Math.sqrt(width * height / 1e6)),\n w = ~~((width + 2 * padding + ratio) / ratio),\n h = ~~((height + 2 * padding + ratio) / ratio),\n scale = _ => ~~((_ + padding) / ratio);\n scale.invert = _ => _ * ratio - padding;\n scale.bitmap = () => Bitmap(w, h);\n scale.ratio = ratio;\n scale.padding = padding;\n scale.width = width;\n scale.height = height;\n return scale;\n}\nfunction placeAreaLabelNaive($, bitmaps, avoidBaseMark, markIndex) {\n const width = $.width,\n height = $.height;\n\n // try to place a label within an input area mark\n return function (d) {\n const items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n let maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n areaWidth;\n\n // for each area sample point\n for (let i = 0; i < n; ++i) {\n x1 = items[i].x;\n y1 = items[i].y;\n x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n if (areaWidth >= maxAreaWidth) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n }\n }\n x = textWidth / 2;\n y = textHeight / 2;\n x1 = d.x - x;\n x2 = d.x + x;\n y1 = d.y - y;\n y2 = d.y + y;\n d.align = 'center';\n if (x1 < 0 && x2 <= width) {\n d.align = 'left';\n } else if (0 <= x1 && width < x2) {\n d.align = 'right';\n }\n d.baseline = 'middle';\n if (y1 < 0 && y2 <= height) {\n d.baseline = 'top';\n } else if (0 <= y1 && height < y2) {\n d.baseline = 'bottom';\n }\n return true;\n };\n}\nfunction outOfBounds(x, y, textWidth, textHeight, width, height) {\n let r = textWidth / 2;\n return x - r < 0 || x + r > width || y - (r = textHeight / 2) < 0 || y + r > height;\n}\nfunction collision($, x, y, textHeight, textWidth, h, bm0, bm1) {\n const w = textWidth * h / (textHeight * 2),\n x1 = $(x - w),\n x2 = $(x + w),\n y1 = $(y - (h = h / 2)),\n y2 = $(y + h);\n return bm0.outOfBounds(x1, y1, x2, y2) || bm0.getRange(x1, y1, x2, y2) || bm1 && bm1.getRange(x1, y1, x2, y2);\n}\nfunction placeAreaLabelReducedSearch($, bitmaps, avoidBaseMark, markIndex) {\n const width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n // where labels have been placed\n bm1 = bitmaps[1]; // area outlines\n\n function tryLabel(_x, _y, maxSize, textWidth, textHeight) {\n const x = $.invert(_x),\n y = $.invert(_y);\n let lo = maxSize,\n hi = height,\n mid;\n if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n // if the label fits at the current sample point,\n // perform binary search to find the largest font size that fits\n while (hi - lo >= 1) {\n mid = (lo + hi) / 2;\n if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n hi = mid;\n } else {\n lo = mid;\n }\n }\n // place label if current lower bound exceeds prior max font size\n if (lo > maxSize) {\n return [x, y, lo, true];\n }\n }\n }\n\n // try to place a label within an input area mark\n return function (d) {\n const items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n let maxSize = avoidBaseMark ? textHeight : 0,\n labelPlaced = false,\n labelPlaced2 = false,\n maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n _x,\n _y,\n _x1,\n _xMid,\n _x2,\n _y1,\n _yMid,\n _y2,\n areaWidth,\n result,\n swapTmp;\n\n // for each area sample point\n for (let i = 0; i < n; ++i) {\n x1 = items[i].x;\n y1 = items[i].y;\n x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n if (x1 > x2) {\n swapTmp = x1;\n x1 = x2;\n x2 = swapTmp;\n }\n if (y1 > y2) {\n swapTmp = y1;\n y1 = y2;\n y2 = swapTmp;\n }\n _x1 = $(x1);\n _x2 = $(x2);\n _xMid = ~~((_x1 + _x2) / 2);\n _y1 = $(y1);\n _y2 = $(y2);\n _yMid = ~~((_y1 + _y2) / 2);\n\n // search along the line from mid point between the 2 border to lower border\n for (_x = _xMid; _x >= _x1; --_x) {\n for (_y = _yMid; _y >= _y1; --_y) {\n result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n if (result) {\n [d.x, d.y, maxSize, labelPlaced] = result;\n }\n }\n }\n\n // search along the line from mid point between the 2 border to upper border\n for (_x = _xMid; _x <= _x2; ++_x) {\n for (_y = _yMid; _y <= _y2; ++_y) {\n result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n if (result) {\n [d.x, d.y, maxSize, labelPlaced] = result;\n }\n }\n }\n\n // place label at slice center if not placed through other means\n // and if we're not avoiding overlap with other areas\n if (!labelPlaced && !avoidBaseMark) {\n // one span is zero, hence we can add\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n\n // place label if it fits and improves the max area width\n if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n labelPlaced2 = true;\n }\n }\n }\n\n // record current label placement information, update label bitmap\n if (labelPlaced || labelPlaced2) {\n x = textWidth / 2;\n y = textHeight / 2;\n bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n d.align = 'center';\n d.baseline = 'middle';\n return true;\n } else {\n return false;\n }\n };\n}\n\n// pixel direction offsets for flood fill search\nconst X_DIR = [-1, -1, 1, 1];\nconst Y_DIR = [-1, 1, -1, 1];\nfunction placeAreaLabelFloodFill($, bitmaps, avoidBaseMark, markIndex) {\n const width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n // where labels have been placed\n bm1 = bitmaps[1],\n // area outlines\n bm2 = $.bitmap(); // flood-fill visitations\n\n // try to place a label within an input area mark\n return function (d) {\n const items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text),\n // label height\n stack = []; // flood fill stack\n\n let maxSize = avoidBaseMark ? textHeight : 0,\n labelPlaced = false,\n labelPlaced2 = false,\n maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n _x,\n _y,\n lo,\n hi,\n mid,\n areaWidth;\n\n // for each area sample point\n for (let i = 0; i < n; ++i) {\n x1 = items[i].x;\n y1 = items[i].y;\n x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n\n // add scaled center point to stack\n stack.push([$((x1 + x2) / 2), $((y1 + y2) / 2)]);\n\n // perform flood fill, visit points\n while (stack.length) {\n [_x, _y] = stack.pop();\n\n // exit if point already marked\n if (bm0.get(_x, _y) || bm1.get(_x, _y) || bm2.get(_x, _y)) continue;\n\n // mark point in flood fill bitmap\n // add search points for all (in bound) directions\n bm2.set(_x, _y);\n for (let j = 0; j < 4; ++j) {\n x = _x + X_DIR[j];\n y = _y + Y_DIR[j];\n if (!bm2.outOfBounds(x, y, x, y)) stack.push([x, y]);\n }\n\n // unscale point back to x, y space\n x = $.invert(_x);\n y = $.invert(_y);\n lo = maxSize;\n hi = height; // TODO: make this bound smaller\n\n if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n // if the label fits at the current sample point,\n // perform binary search to find the largest font size that fits\n while (hi - lo >= 1) {\n mid = (lo + hi) / 2;\n if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n hi = mid;\n } else {\n lo = mid;\n }\n }\n // place label if current lower bound exceeds prior max font size\n if (lo > maxSize) {\n d.x = x;\n d.y = y;\n maxSize = lo;\n labelPlaced = true;\n }\n }\n }\n\n // place label at slice center if not placed through other means\n // and if we're not avoiding overlap with other areas\n if (!labelPlaced && !avoidBaseMark) {\n // one span is zero, hence we can add\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n\n // place label if it fits and improves the max area width\n if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n labelPlaced2 = true;\n }\n }\n }\n\n // record current label placement information, update label bitmap\n if (labelPlaced || labelPlaced2) {\n x = textWidth / 2;\n y = textHeight / 2;\n bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n d.align = 'center';\n d.baseline = 'middle';\n return true;\n } else {\n return false;\n }\n };\n}\nconst Aligns = ['right', 'center', 'left'],\n Baselines = ['bottom', 'middle', 'top'];\nfunction placeMarkLabel($, bitmaps, anchors, offsets) {\n const width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n bm1 = bitmaps[1],\n n = offsets.length;\n return function (d) {\n var _d$textWidth;\n const boundary = d.boundary,\n textHeight = d.datum.fontSize;\n\n // can not be placed if the mark is not visible in the graph bound\n if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) {\n return false;\n }\n let textWidth = (_d$textWidth = d.textWidth) !== null && _d$textWidth !== void 0 ? _d$textWidth : 0,\n dx,\n dy,\n isInside,\n sizeFactor,\n insideFactor,\n x1,\n x2,\n y1,\n y2,\n xc,\n yc,\n _x1,\n _x2,\n _y1,\n _y2;\n\n // for each anchor and offset\n for (let i = 0; i < n; ++i) {\n dx = (anchors[i] & 0x3) - 1;\n dy = (anchors[i] >>> 0x2 & 0x3) - 1;\n isInside = dx === 0 && dy === 0 || offsets[i] < 0;\n sizeFactor = dx && dy ? Math.SQRT1_2 : 1;\n insideFactor = offsets[i] < 0 ? -1 : 1;\n x1 = boundary[1 + dx] + offsets[i] * dx * sizeFactor;\n yc = boundary[4 + dy] + insideFactor * textHeight * dy / 2 + offsets[i] * dy * sizeFactor;\n y1 = yc - textHeight / 2;\n y2 = yc + textHeight / 2;\n _x1 = $(x1);\n _y1 = $(y1);\n _y2 = $(y2);\n if (!textWidth) {\n // to avoid finding width of text label,\n if (!test(_x1, _x1, _y1, _y2, bm0, bm1, x1, x1, y1, y2, boundary, isInside)) {\n // skip this anchor/offset option if we fail to place a label with 1px width\n continue;\n } else {\n // Otherwise, find the label width\n textWidth = textMetrics.width(d.datum, d.datum.text);\n }\n }\n xc = x1 + insideFactor * textWidth * dx / 2;\n x1 = xc - textWidth / 2;\n x2 = xc + textWidth / 2;\n _x1 = $(x1);\n _x2 = $(x2);\n if (test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside)) {\n // place label if the position is placeable\n d.x = !dx ? xc : dx * insideFactor < 0 ? x2 : x1;\n d.y = !dy ? yc : dy * insideFactor < 0 ? y2 : y1;\n d.align = Aligns[dx * insideFactor + 1];\n d.baseline = Baselines[dy * insideFactor + 1];\n bm0.setRange(_x1, _y1, _x2, _y2);\n return true;\n }\n }\n return false;\n };\n}\n\n// Test if a label with the given dimensions can be added without overlap\nfunction test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) {\n return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 || bm0).getRange(_x1, _y1, _x2, _y2));\n}\n\n// 8-bit representation of anchors\nconst TOP = 0x0,\n MIDDLE = 0x4,\n BOTTOM = 0x8,\n LEFT = 0x0,\n CENTER$1 = 0x1,\n RIGHT = 0x2;\n\n// Mapping from text anchor to number representation\nconst anchorCode = {\n 'top-left': TOP + LEFT,\n 'top': TOP + CENTER$1,\n 'top-right': TOP + RIGHT,\n 'left': MIDDLE + LEFT,\n 'middle': MIDDLE + CENTER$1,\n 'right': MIDDLE + RIGHT,\n 'bottom-left': BOTTOM + LEFT,\n 'bottom': BOTTOM + CENTER$1,\n 'bottom-right': BOTTOM + RIGHT\n};\nconst placeAreaLabel = {\n 'naive': placeAreaLabelNaive,\n 'reduced-search': placeAreaLabelReducedSearch,\n 'floodfill': placeAreaLabelFloodFill\n};\nfunction labelLayout(texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) {\n // early exit for empty data\n if (!texts.length) return texts;\n const positions = Math.max(offset.length, anchor.length),\n offsets = getOffsets(offset, positions),\n anchors = getAnchors(anchor, positions),\n marktype = markType(texts[0].datum),\n grouptype = marktype === 'group' && texts[0].datum.items[markIndex].marktype,\n isGroupArea = grouptype === 'area',\n boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex),\n infPadding = padding === null || padding === Infinity,\n isNaiveGroupArea = isGroupArea && method === 'naive';\n let maxTextWidth = -1,\n maxTextHeight = -1;\n\n // prepare text mark data for placing\n const data = texts.map(d => {\n const textWidth = infPadding ? textMetrics.width(d, d.text) : undefined;\n maxTextWidth = Math.max(maxTextWidth, textWidth);\n maxTextHeight = Math.max(maxTextHeight, d.fontSize);\n return {\n datum: d,\n opacity: 0,\n x: undefined,\n y: undefined,\n align: undefined,\n baseline: undefined,\n boundary: boundary(d),\n textWidth\n };\n });\n padding = padding === null || padding === Infinity ? Math.max(maxTextWidth, maxTextHeight) + Math.max(...offset) : padding;\n const $ = scaler(size[0], size[1], padding);\n let bitmaps;\n if (!isNaiveGroupArea) {\n // sort labels in priority order, if comparator is provided\n if (compare) {\n data.sort((a, b) => compare(a.datum, b.datum));\n }\n\n // flag indicating if label can be placed inside its base mark\n let labelInside = false;\n for (let i = 0; i < anchors.length && !labelInside; ++i) {\n // label inside if anchor is at center\n // label inside if offset to be inside the mark bound\n labelInside = anchors[i] === 0x5 || offsets[i] < 0;\n }\n\n // extract data information from base mark when base mark is to be avoided\n // base mark is implicitly avoided if it is a group area\n const baseMark = (marktype && avoidBaseMark || isGroupArea) && texts.map(d => d.datum);\n\n // generate bitmaps for layout calculation\n bitmaps = avoidMarks.length || baseMark ? markBitmaps($, baseMark || [], avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data);\n }\n\n // generate label placement function\n const place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets);\n\n // place all labels\n data.forEach(d => d.opacity = +place(d));\n return data;\n}\nfunction getOffsets(_, count) {\n const offsets = new Float64Array(count),\n n = _.length;\n for (let i = 0; i < n; ++i) offsets[i] = _[i] || 0;\n for (let i = n; i < count; ++i) offsets[i] = offsets[n - 1];\n return offsets;\n}\nfunction getAnchors(_, count) {\n const anchors = new Int8Array(count),\n n = _.length;\n for (let i = 0; i < n; ++i) anchors[i] |= anchorCode[_[i]];\n for (let i = n; i < count; ++i) anchors[i] = anchors[n - 1];\n return anchors;\n}\nfunction markType(item) {\n return item && item.mark && item.mark.marktype;\n}\n\n/**\n * Factory function for function for getting base mark boundary, depending\n * on mark and group type. When mark type is undefined, line or area: boundary\n * is the coordinate of each data point. When base mark is grouped line,\n * boundary is either at the start or end of the line depending on the\n * value of lineAnchor. Otherwise, use bounds of base mark.\n */\nfunction markBoundary(marktype, grouptype, lineAnchor, markIndex) {\n const xy = d => [d.x, d.x, d.x, d.y, d.y, d.y];\n if (!marktype) {\n return xy; // no reactive geometry\n } else if (marktype === 'line' || marktype === 'area') {\n return d => xy(d.datum);\n } else if (grouptype === 'line') {\n return d => {\n const items = d.datum.items[markIndex].items;\n return xy(items.length ? items[lineAnchor === 'start' ? 0 : items.length - 1] : {\n x: NaN,\n y: NaN\n });\n };\n } else {\n return d => {\n const b = d.datum.bounds;\n return [b.x1, (b.x1 + b.x2) / 2, b.x2, b.y1, (b.y1 + b.y2) / 2, b.y2];\n };\n }\n}\nconst Output$1 = ['x', 'y', 'opacity', 'align', 'baseline'];\nconst Anchors = ['top-left', 'left', 'bottom-left', 'top', 'bottom', 'top-right', 'right', 'bottom-right'];\n\n/**\n * Compute text label layout to annotate marks.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.size - The size of the layout, provided as a [width, height] array.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting label data in priority order.\n * @param {Array} [params.anchor] - Label anchor points relative to the base mark bounding box.\n * The available options are 'top-left', 'left', 'bottom-left', 'top',\n * 'bottom', 'top-right', 'right', 'bottom-right', 'middle'.\n * @param {Array} [params.offset] - Label offsets (in pixels) from the base mark bounding box.\n * This parameter is parallel to the list of anchor points.\n * @param {number | null} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size.\n * If this parameter is null, a label may exceed the layout size without any boundary.\n * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor\n * position for labels. One of 'start' or 'end'.\n * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating\n * which mark within the group should be labeled.\n * @param {Array} [params.avoidMarks] - A list of additional mark names for which the label\n * layout should avoid overlap.\n * @param {boolean} [params.avoidBaseMark=true] - Boolean flag indicating if labels should avoid\n * overlap with the underlying base mark being labeled.\n * @param {string} [params.method='naive'] - For area make labels only, a method for\n * place labels. One of 'naive', 'reduced-search', or 'floodfill'.\n * @param {Array} [params.as] - The output fields written by the transform.\n * The default is ['x', 'y', 'opacity', 'align', 'baseline'].\n */\nfunction Label$1(params) {\n Transform.call(this, null, params);\n}\nLabel$1.Definition = {\n type: 'Label',\n metadata: {\n modifies: true\n },\n params: [{\n name: 'size',\n type: 'number',\n array: true,\n length: 2,\n required: true\n }, {\n name: 'sort',\n type: 'compare'\n }, {\n name: 'anchor',\n type: 'string',\n array: true,\n default: Anchors\n }, {\n name: 'offset',\n type: 'number',\n array: true,\n default: [1]\n }, {\n name: 'padding',\n type: 'number',\n default: 0,\n null: true\n }, {\n name: 'lineAnchor',\n type: 'string',\n values: ['start', 'end'],\n default: 'end'\n }, {\n name: 'markIndex',\n type: 'number',\n default: 0\n }, {\n name: 'avoidBaseMark',\n type: 'boolean',\n default: true\n }, {\n name: 'avoidMarks',\n type: 'data',\n array: true\n }, {\n name: 'method',\n type: 'string',\n default: 'naive'\n }, {\n name: 'as',\n type: 'string',\n array: true,\n length: Output$1.length,\n default: Output$1\n }]\n};\ninherits(Label$1, Transform, {\n transform(_, pulse) {\n function modp(param) {\n const p = _[param];\n return isFunction$1(p) && pulse.modified(p.fields);\n }\n const mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || modp('sort'))) return;\n if (!_.size || _.size.length !== 2) {\n error('Size parameter should be specified as a [width, height] array.');\n }\n const as = _.as || Output$1;\n\n // run label layout\n labelLayout(pulse.materialize(pulse.SOURCE).source || [], _.size, _.sort, array$5(_.offset == null ? 1 : _.offset), array$5(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark !== false, _.lineAnchor || 'end', _.markIndex || 0, _.padding === undefined ? 0 : _.padding, _.method || 'naive').forEach(l => {\n // write layout results to data stream\n const t = l.datum;\n t[as[0]] = l.x;\n t[as[1]] = l.y;\n t[as[2]] = l.opacity;\n t[as[3]] = l.align;\n t[as[4]] = l.baseline;\n });\n return pulse.reflow(mod).modifies(as);\n }\n});\nvar label = /*#__PURE__*/Object.freeze({\n __proto__: null,\n label: Label$1\n});\nfunction partition(data, groupby) {\n var groups = [],\n get = function (f) {\n return f(t);\n },\n map,\n i,\n n,\n t,\n k,\n g;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n return groups;\n}\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\nfunction Loess(params) {\n Transform.call(this, null, params);\n}\nLoess.Definition = {\n 'type': 'Loess',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0.3\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Loess, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n m = names.length,\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n values = [];\n groups.forEach(g => {\n loess(g, _.x, _.y, _.bandwidth || 0.3).forEach(p => {\n const t = {};\n for (let i = 0; i < m; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest$1(t));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nconst Methods = {\n constant: constant$4,\n linear: linear$2,\n log: log$3,\n exp: exp$1,\n pow: pow$3,\n quad: quad,\n poly: poly\n};\nconst degreesOfFreedom = (method, order) => method === 'poly' ? order : method === 'quad' ? 2 : 1;\n\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array} [params.groupby] - An array of accessors to groupby.\n * @param {Array} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\nfunction Regression(params) {\n Transform.call(this, null, params);\n}\nRegression.Definition = {\n 'type': 'Regression',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'method',\n 'type': 'string',\n 'default': 'linear',\n 'values': Object.keys(Methods)\n }, {\n 'name': 'order',\n 'type': 'number',\n 'default': 3\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'params',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Regression, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n method = _.method || 'linear',\n order = _.order == null ? 3 : _.order,\n dof = degreesOfFreedom(method, order),\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n fit = Methods[method],\n values = [];\n let domain = _.extent;\n if (!has$1(Methods, method)) {\n error('Invalid regression method: ' + method);\n }\n if (domain != null) {\n if (method === 'log' && domain[0] <= 0) {\n pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n domain = null;\n }\n }\n groups.forEach(g => {\n const n = g.length;\n if (n <= dof) {\n pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n return;\n }\n const model = fit(g, _.x, _.y, order);\n if (_.params) {\n // if parameter vectors requested return those\n values.push(ingest$1({\n keys: g.dims,\n coef: model.coef,\n rSquared: model.rSquared\n }));\n return;\n }\n const dom = domain || extent(g, _.x),\n add = p => {\n const t = {};\n for (let i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest$1(t));\n };\n if (method === 'linear' || method === 'constant') {\n // for linear or constant regression we only need the end points\n dom.forEach(x => add([x, model.predict(x)]));\n } else {\n // otherwise return trend line sample points\n sampleCurve(model.predict, dom, 25, 200).forEach(add);\n }\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nvar reg = /*#__PURE__*/Object.freeze({\n __proto__: null,\n loess: Loess,\n regression: Regression\n});\nconst epsilon$1 = 1.1102230246251565e-16;\nconst splitter = 134217729;\nconst resulterrbound = (3 + 8 * epsilon$1) * epsilon$1;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nfunction sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if (fnow > enow === fnow > -enow) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if (fnow > enow === fnow > -enow) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if (fnow > enow === fnow > -enow) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\nfunction estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\nfunction vec(n) {\n return new Float64Array(n);\n}\nconst ccwerrboundA = (3 + 16 * epsilon$1) * epsilon$1;\nconst ccwerrboundB = (2 + 12 * epsilon$1) * epsilon$1;\nconst ccwerrboundC = (9 + 64 * epsilon$1) * epsilon$1 * epsilon$1;\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n return D[Dlen - 1];\n}\nfunction orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\nclass Delaunator {\n static from(points) {\n let getX = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultGetX;\n let getY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultGetY;\n const n = points.length;\n const coords = new Float64Array(n * 2);\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n return new Delaunator(coords);\n }\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n this.update();\n }\n update() {\n const {\n coords,\n _hullPrev: hullPrev,\n _hullNext: hullNext,\n _hullTri: hullTri,\n _hullHash: hullHash\n } = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n let minDist = Infinity;\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n minDist = Infinity;\n\n // find the point closest to the seed\n for (let i = 0; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = coords[2 * i] - coords[0] || coords[2 * i + 1] - coords[1];\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n start = hullPrev[start];\n let e = start,\n q;\n while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n _legalize(a) {\n const {\n _triangles: triangles,\n _halfedges: halfedges,\n coords\n } = this;\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n if (b === -1) {\n // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n const illegal = inCircle(coords[2 * p0], coords[2 * p0 + 1], coords[2 * pr], coords[2 * pr + 1], coords[2 * pl], coords[2 * pl + 1], coords[2 * p1], coords[2 * p1 + 1]);\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n return ar;\n }\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n this.trianglesLen += 3;\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n return dx * (ey * cp - bp * fy) - dy * (ex * cp - bp * fx) + ap * (ex * fy - ey * fx) < 0;\n}\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n return x * x + y * y;\n}\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n return {\n x,\n y\n };\n}\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = left + right >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\nconst epsilon = 1e-6;\nclass Path {\n constructor() {\n this._x0 = this._y0 =\n // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += \"M\".concat(this._x0 = this._x1 = +x, \",\").concat(this._y0 = this._y1 = +y);\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += \"L\".concat(this._x1 = +x, \",\").concat(this._y1 = +y);\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += \"M\".concat(x0, \",\").concat(y0);else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += \"A\".concat(r, \",\").concat(r, \",0,1,1,\").concat(x - r, \",\").concat(y, \"A\").concat(r, \",\").concat(r, \",0,1,1,\").concat(this._x1 = x0, \",\").concat(this._y1 = y0);\n }\n rect(x, y, w, h) {\n this._ += \"M\".concat(this._x0 = this._x1 = +x, \",\").concat(this._y0 = this._y1 = +y, \"h\").concat(+w, \"v\").concat(+h, \"h\").concat(-w, \"Z\");\n }\n value() {\n return this._ || null;\n }\n}\nclass Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\nlet Voronoi$1 = class Voronoi {\n constructor(delaunay) {\n let [xmin, ymin, xmax, ymax] = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 960, 500];\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {\n delaunay: {\n points,\n hull,\n triangles\n },\n vectors\n } = this;\n let bx, by; // lazily computed barycenter of the hull\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const ab = (dx * ey - dy * ex) * 2;\n if (Math.abs(ab) < 1e-9) {\n // For a degenerate triangle, the circumcenter is at the infinity, in a\n // direction orthogonal to the halfedge and away from the ā€œcenterā€ of\n // the diagram , defined as the hullā€™s barycenter.\n if (bx === undefined) {\n bx = by = 0;\n for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n bx /= hull.length, by /= hull.length;\n }\n const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n x = (x1 + x3) / 2 - a * ey;\n y = (y1 + y3) / 2 + a * ex;\n } else {\n const d = 1 / ab;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0,\n p1 = h * 4;\n let x0,\n x1 = points[2 * h];\n let y0,\n y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n delaunay: {\n halfedges,\n inedges,\n hull\n },\n circumcenters,\n vectors\n } = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0,\n h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new Path() : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new Path() : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n - 2] && points[1] === points[n - 1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i - 2] || points[i + 1] !== points[i - 1]) context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {\n delaunay: {\n points\n }\n } = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new Polygon();\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] === cj[aj] && ci[ai + 1] === cj[aj + 1] && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj] && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {\n circumcenters,\n delaunay: {\n inedges,\n halfedges,\n triangles\n }\n } = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {\n vectors: V\n } = this;\n const v = i * 4;\n return this._simplify(V[v] || V[v + 1] ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3]) : this._clipFinite(i, points));\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0,\n y0,\n x1 = points[n - 2],\n y1 = points[n - 1];\n let c0,\n c1 = this._regioncode(x1, y1);\n let e0,\n e1 = 0;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n // for more robustness, always consider the segment in the same order\n const flip = c0 < c1;\n if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n while (true) {\n if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x,\n y,\n c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points),\n p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101:\n e0 = 0b0100;\n continue;\n // top-left\n case 0b0100:\n e0 = 0b0110, x = this.xmax, y = this.ymin;\n break;\n // top\n case 0b0110:\n e0 = 0b0010;\n continue;\n // top-right\n case 0b0010:\n e0 = 0b1010, x = this.xmax, y = this.ymax;\n break;\n // right\n case 0b1010:\n e0 = 0b1000;\n continue;\n // bottom-right\n case 0b1000:\n e0 = 0b1001, x = this.xmin, y = this.ymax;\n break;\n // bottom\n case 0b1001:\n e0 = 0b0001;\n continue;\n // bottom-left\n case 0b0001:\n e0 = 0b0101, x = this.xmin, y = this.ymin;\n break;\n // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity,\n c,\n x,\n y;\n if (vy < 0) {\n // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) {\n // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) {\n // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) {\n // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001 : x === this.xmax ? 0b0010 : 0b0000) | (y === this.ymin ? 0b0100 : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001 : x > this.xmax ? 0b0010 : 0b0000) | (y < this.ymin ? 0b0100 : y > this.ymax ? 0b1000 : 0b0000);\n }\n _simplify(P) {\n if (P && P.length > 4) {\n for (let i = 0; i < P.length; i += 2) {\n const j = (i + 2) % P.length,\n k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n P.splice(j, 2), i -= 2;\n }\n }\n if (!P.length) P = null;\n }\n return P;\n }\n};\nconst tau = 2 * Math.PI,\n pow = Math.pow;\nfunction pointX(p) {\n return p[0];\n}\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {\n triangles,\n coords\n } = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\nclass Delaunay {\n static from(points) {\n let fx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : pointX;\n let fy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : pointY;\n let that = arguments.length > 3 ? arguments[3] : undefined;\n return new Delaunay(\"length\" in points ? flatArray(points, fx, fy, that) : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator,\n points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({\n length: points.length / 2\n }, (_, i) => i).sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0],\n f = this.collinear[this.collinear.length - 1],\n bounds = [points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1]],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n voronoi(bounds) {\n return new Voronoi$1(this, bounds);\n }\n *neighbors(i) {\n const {\n inedges,\n hull,\n _hullIndex,\n halfedges,\n triangles,\n collinear\n } = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0,\n p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y) {\n let i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {\n inedges,\n hull,\n _hullIndex,\n halfedges,\n triangles,\n points\n } = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n points,\n halfedges,\n triangles\n } = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n const buffer = context == null ? context = new Path() : undefined;\n const {\n points\n } = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i],\n y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n hull,\n points\n } = this;\n const h = hull[0] * 2,\n n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new Polygon();\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path() : undefined;\n const {\n points,\n triangles\n } = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {\n triangles\n } = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new Polygon();\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}\nfunction Voronoi(params) {\n Transform.call(this, null, params);\n}\nVoronoi.Definition = {\n 'type': 'Voronoi',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'extent',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'default': [[-1e5, -1e5], [1e5, 1e5]],\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\nconst defaultExtent = [-1e5, -1e5, 1e5, 1e5];\ninherits(Voronoi, Transform, {\n transform(_, pulse) {\n const as = _.as || 'path',\n data = pulse.source;\n\n // nothing to do if no data\n if (!data || !data.length) return pulse;\n\n // configure and construct voronoi diagram\n let s = _.size;\n s = s ? [0, 0, s[0], s[1]] : (s = _.extent) ? [s[0][0], s[0][1], s[1][0], s[1][1]] : defaultExtent;\n const voronoi = this.value = Delaunay.from(data, _.x, _.y).voronoi(s);\n\n // map polygons to paths\n for (let i = 0, n = data.length; i < n; ++i) {\n const polygon = voronoi.cellPolygon(i);\n data[i][as] = polygon ? toPathString(polygon) : null;\n }\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\n\n// suppress duplicated end point vertices\nfunction toPathString(p) {\n const x = p[0][0],\n y = p[0][1];\n let n = p.length - 1;\n for (; p[n][0] === x && p[n][1] === y; --n);\n return 'M' + p.slice(0, n + 1).join('L') + 'Z';\n}\nvar voronoi = /*#__PURE__*/Object.freeze({\n __proto__: null,\n voronoi: Voronoi\n});\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * The name Jason Davies may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n cw = 1 << 11 >> 5,\n ch = 1 << 11;\nfunction cloud() {\n var size = [256, 256],\n text,\n font,\n fontSize,\n fontStyle,\n fontWeight,\n rotate,\n padding,\n spiral = archimedeanSpiral,\n words = [],\n random = Math.random,\n cloud = {};\n cloud.layout = function () {\n var contextAndRatio = getContext(domCanvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(d => ({\n text: text(d),\n font: font(d),\n style: fontStyle(d),\n weight: fontWeight(d),\n rotate: rotate(d),\n size: ~~(fontSize(d) + 1e-14),\n padding: padding(d),\n xoff: 0,\n yoff: 0,\n x1: 0,\n y1: 0,\n x0: 0,\n y0: 0,\n hasText: false,\n sprite: null,\n datum: d\n })).sort((a, b) => b.size - a.size);\n while (++i < n) {\n var d = data[i];\n d.x = size[0] * (random() + .5) >> 1;\n d.y = size[1] * (random() + .5) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) cloudBounds(bounds, d);else bounds = [{\n x: d.x + d.x0,\n y: d.y + d.y0\n }, {\n x: d.x + d.x1,\n y: d.y + d.y1\n }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n return tags;\n };\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n var context = canvas.getContext('2d');\n context.fillStyle = context.strokeStyle = 'red';\n context.textAlign = 'center';\n return {\n context: context,\n ratio: ratio\n };\n }\n function place(board, tag, bounds) {\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n tag.x = startX + dx;\n tag.y = startY + dy;\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n tag.sprite = null;\n return true;\n }\n }\n }\n return false;\n }\n cloud.words = function (_) {\n if (arguments.length) {\n words = _;\n return cloud;\n } else {\n return words;\n }\n };\n cloud.size = function (_) {\n if (arguments.length) {\n size = [+_[0], +_[1]];\n return cloud;\n } else {\n return size;\n }\n };\n cloud.font = function (_) {\n if (arguments.length) {\n font = functor(_);\n return cloud;\n } else {\n return font;\n }\n };\n cloud.fontStyle = function (_) {\n if (arguments.length) {\n fontStyle = functor(_);\n return cloud;\n } else {\n return fontStyle;\n }\n };\n cloud.fontWeight = function (_) {\n if (arguments.length) {\n fontWeight = functor(_);\n return cloud;\n } else {\n return fontWeight;\n }\n };\n cloud.rotate = function (_) {\n if (arguments.length) {\n rotate = functor(_);\n return cloud;\n } else {\n return rotate;\n }\n };\n cloud.text = function (_) {\n if (arguments.length) {\n text = functor(_);\n return cloud;\n } else {\n return text;\n }\n };\n cloud.spiral = function (_) {\n if (arguments.length) {\n spiral = spirals[_] || _;\n return cloud;\n } else {\n return spiral;\n }\n };\n cloud.fontSize = function (_) {\n if (arguments.length) {\n fontSize = functor(_);\n return cloud;\n } else {\n return fontSize;\n }\n };\n cloud.padding = function (_) {\n if (arguments.length) {\n padding = functor(_);\n return cloud;\n } else {\n return padding;\n }\n };\n cloud.random = function (_) {\n if (arguments.length) {\n random = _;\n return cloud;\n } else {\n return random;\n }\n };\n return cloud;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length,\n w,\n w32,\n h,\n i,\n j;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n w = c.measureText(d.text + 'm').width * ratio;\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = w + 0x1f >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= cw << 5) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n w = d.width;\n w32 = w >> 5;\n h = d.y1 - d.y0;\n // Zero the buffer\n for (i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (j = 0; j < h; j++) {\n for (i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function (t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n case 0:\n x += dx;\n break;\n case 1:\n y += dy;\n break;\n case 2:\n x -= dx;\n break;\n default:\n y -= dy;\n break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\nfunction functor(d) {\n return typeof d === 'function' ? d : function () {\n return d;\n };\n}\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\nconst Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\nconst Params$1 = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\nfunction Wordcloud(params) {\n Transform.call(this, cloud(), params);\n}\nWordcloud.Definition = {\n 'type': 'Wordcloud',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'font',\n 'type': 'string',\n 'expr': true,\n 'default': 'sans-serif'\n }, {\n 'name': 'fontStyle',\n 'type': 'string',\n 'expr': true,\n 'default': 'normal'\n }, {\n 'name': 'fontWeight',\n 'type': 'string',\n 'expr': true,\n 'default': 'normal'\n }, {\n 'name': 'fontSize',\n 'type': 'number',\n 'expr': true,\n 'default': 14\n }, {\n 'name': 'fontSizeRange',\n 'type': 'number',\n 'array': 'nullable',\n 'default': [10, 50]\n }, {\n 'name': 'rotate',\n 'type': 'number',\n 'expr': true,\n 'default': 0\n }, {\n 'name': 'text',\n 'type': 'field'\n }, {\n 'name': 'spiral',\n 'type': 'string',\n 'values': ['archimedean', 'rectangular']\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 7,\n 'default': Output\n }]\n};\ninherits(Wordcloud, Transform, {\n transform(_, pulse) {\n if (_.size && !(_.size[0] && _.size[1])) {\n error('Wordcloud size dimensions must be non-zero.');\n }\n function modp(param) {\n const p = _[param];\n return isFunction$1(p) && pulse.modified(p.fields);\n }\n const mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || Params$1.some(modp))) return;\n const data = pulse.materialize(pulse.SOURCE).source,\n layout = this.value,\n as = _.as || Output;\n let fontSize = _.fontSize || 14,\n range;\n isFunction$1(fontSize) ? range = _.fontSizeRange : fontSize = constant$5(fontSize);\n\n // create font size scaling function as needed\n if (range) {\n const fsize = fontSize,\n sizeScale = scale$4('sqrt')().domain(extent(data, fsize)).range(range);\n fontSize = x => sizeScale(fsize(x));\n }\n data.forEach(t => {\n t[as[0]] = NaN;\n t[as[1]] = NaN;\n t[as[3]] = 0;\n });\n\n // configure layout\n const words = layout.words(data).text(_.text).size(_.size || [500, 500]).padding(_.padding || 1).spiral(_.spiral || 'archimedean').rotate(_.rotate || 0).font(_.font || 'sans-serif').fontStyle(_.fontStyle || 'normal').fontWeight(_.fontWeight || 'normal').fontSize(fontSize).random(random).layout();\n const size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n n = words.length;\n for (let i = 0, w, t; i < n; ++i) {\n w = words[i];\n t = w.datum;\n t[as[0]] = w.x + dx;\n t[as[1]] = w.y + dy;\n t[as[2]] = w.font;\n t[as[3]] = w.size;\n t[as[4]] = w.style;\n t[as[5]] = w.weight;\n t[as[6]] = w.rotate;\n }\n return pulse.reflow(mod).modifies(as);\n }\n});\nvar wordcloud = /*#__PURE__*/Object.freeze({\n __proto__: null,\n wordcloud: Wordcloud\n});\nconst array8 = n => new Uint8Array(n);\nconst array16 = n => new Uint16Array(n);\nconst array32 = n => new Uint32Array(n);\n\n/**\n * Maintains CrossFilter state.\n */\nfunction Bitmaps() {\n let width = 8,\n data = [],\n seen = array32(0),\n curr = array$1(0, width),\n prev = array$1(0, width);\n return {\n data: () => data,\n seen: () => seen = lengthen(seen, data.length),\n add(array) {\n for (let i = 0, j = data.length, n = array.length, t; i < n; ++i) {\n t = array[i];\n t._index = j++;\n data.push(t);\n }\n },\n remove(num, map) {\n // map: index -> boolean (true => remove)\n const n = data.length,\n copy = Array(n - num),\n reindex = data; // reuse old data array for index map\n let t, i, j;\n\n // seek forward to first removal\n for (i = 0; !map[i] && i < n; ++i) {\n copy[i] = data[i];\n reindex[i] = i;\n }\n\n // condense arrays\n for (j = i; i < n; ++i) {\n t = data[i];\n if (!map[i]) {\n reindex[i] = j;\n curr[j] = curr[i];\n prev[j] = prev[i];\n copy[j] = t;\n t._index = j++;\n } else {\n reindex[i] = -1;\n }\n curr[i] = 0; // clear unused bits\n }\n\n data = copy;\n return reindex;\n },\n size: () => data.length,\n curr: () => curr,\n prev: () => prev,\n reset: k => prev[k] = curr[k],\n all: () => width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff,\n set(k, one) {\n curr[k] |= one;\n },\n clear(k, one) {\n curr[k] &= ~one;\n },\n resize(n, m) {\n const k = curr.length;\n if (n > k || m > width) {\n width = Math.max(m, width);\n curr = array$1(n, width, curr);\n prev = array$1(n, width);\n }\n }\n };\n}\nfunction lengthen(array, length, copy) {\n if (array.length >= length) return array;\n copy = copy || new array.constructor(length);\n copy.set(array);\n return copy;\n}\nfunction array$1(n, m, array) {\n const copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n if (array) copy.set(array);\n return copy;\n}\nfunction Dimension(index, i, query) {\n const bit = 1 << i;\n return {\n one: bit,\n zero: ~bit,\n range: query.slice(),\n bisect: index.bisect,\n index: index.index,\n size: index.size,\n onAdd(added, curr) {\n const dim = this,\n range = dim.bisect(dim.range, added.value),\n idx = added.index,\n lo = range[0],\n hi = range[1],\n n1 = idx.length;\n let i;\n for (i = 0; i < lo; ++i) curr[idx[i]] |= bit;\n for (i = hi; i < n1; ++i) curr[idx[i]] |= bit;\n return dim;\n }\n };\n}\n\n/**\n * Maintains a list of values, sorted by key.\n */\nfunction SortedIndex() {\n let index = array32(0),\n value = [],\n size = 0;\n function insert(key, data, base) {\n if (!data.length) return [];\n const n0 = size,\n n1 = data.length,\n addi = array32(n1);\n let addv = Array(n1),\n oldv,\n oldi,\n i;\n for (i = 0; i < n1; ++i) {\n addv[i] = key(data[i]);\n addi[i] = i;\n }\n addv = sort(addv, addi);\n if (n0) {\n oldv = value;\n oldi = index;\n value = Array(n0 + n1);\n index = array32(n0 + n1);\n merge$1(base, oldv, oldi, n0, addv, addi, n1, value, index);\n } else {\n if (base > 0) for (i = 0; i < n1; ++i) {\n addi[i] += base;\n }\n value = addv;\n index = addi;\n }\n size = n0 + n1;\n return {\n index: addi,\n value: addv\n };\n }\n function remove(num, map) {\n // map: index -> remove\n const n = size;\n let idx, i, j;\n\n // seek forward to first removal\n for (i = 0; !map[index[i]] && i < n; ++i);\n\n // condense index and value arrays\n for (j = i; i < n; ++i) {\n if (!map[idx = index[i]]) {\n index[j] = idx;\n value[j] = value[i];\n ++j;\n }\n }\n size = n - num;\n }\n function reindex(map) {\n for (let i = 0, n = size; i < n; ++i) {\n index[i] = map[index[i]];\n }\n }\n function bisect(range, array) {\n let n;\n if (array) {\n n = array.length;\n } else {\n array = value;\n n = size;\n }\n return [bisectLeft$1(array, range[0], 0, n), bisectRight$1(array, range[1], 0, n)];\n }\n return {\n insert: insert,\n remove: remove,\n bisect: bisect,\n reindex: reindex,\n index: () => index,\n size: () => size\n };\n}\nfunction sort(values, index) {\n values.sort.call(index, (a, b) => {\n const x = values[a],\n y = values[b];\n return x < y ? -1 : x > y ? 1 : 0;\n });\n return permute(values, index);\n}\nfunction merge$1(base, value0, index0, n0, value1, index1, n1, value, index) {\n let i0 = 0,\n i1 = 0,\n i;\n for (i = 0; i0 < n0 && i1 < n1; ++i) {\n if (value0[i0] < value1[i1]) {\n value[i] = value0[i0];\n index[i] = index0[i0++];\n } else {\n value[i] = value1[i1];\n index[i] = index1[i1++] + base;\n }\n }\n for (; i0 < n0; ++i0, ++i) {\n value[i] = value0[i0];\n index[i] = index0[i0];\n }\n for (; i1 < n1; ++i1, ++i) {\n value[i] = value1[i1];\n index[i] = index1[i1] + base;\n }\n}\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\nfunction CrossFilter(params) {\n Transform.call(this, Bitmaps(), params);\n this._indices = null;\n this._dims = null;\n}\nCrossFilter.Definition = {\n 'type': 'CrossFilter',\n 'metadata': {},\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'query',\n 'type': 'array',\n 'array': true,\n 'required': true,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }]\n};\ninherits(CrossFilter, Transform, {\n transform(_, pulse) {\n if (!this._dims) {\n return this.init(_, pulse);\n } else {\n var init = _.modified('fields') || _.fields.some(f => pulse.modified(f.fields));\n return init ? this.reinit(_, pulse) : this.eval(_, pulse);\n }\n },\n init(_, pulse) {\n const fields = _.fields,\n query = _.query,\n indices = this._indices = {},\n dims = this._dims = [],\n m = query.length;\n let i = 0,\n key,\n index;\n\n // instantiate indices and dimensions\n for (; i < m; ++i) {\n key = fields[i].fname;\n index = indices[key] || (indices[key] = SortedIndex());\n dims.push(Dimension(index, i, query[i]));\n }\n return this.eval(_, pulse);\n },\n reinit(_, pulse) {\n const output = pulse.materialize().fork(),\n fields = _.fields,\n query = _.query,\n indices = this._indices,\n dims = this._dims,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n out = output.rem = output.add,\n mod = output.mod,\n m = query.length,\n adds = {};\n let add, index, key, mods, remMap, modMap, i, n, f;\n\n // set prev to current state\n prev.set(curr);\n\n // if pulse has remove tuples, process them first\n if (pulse.rem.length) {\n remMap = this.remove(_, pulse, output);\n }\n\n // if pulse has added tuples, add them to state\n if (pulse.add.length) {\n bits.add(pulse.add);\n }\n\n // if pulse has modified tuples, create an index map\n if (pulse.mod.length) {\n modMap = {};\n for (mods = pulse.mod, i = 0, n = mods.length; i < n; ++i) {\n modMap[mods[i]._index] = 1;\n }\n }\n\n // re-initialize indices as needed, update curr bitmap\n for (i = 0; i < m; ++i) {\n f = fields[i];\n if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n key = f.fname;\n if (!(add = adds[key])) {\n indices[key] = index = SortedIndex();\n adds[key] = add = index.insert(f, pulse.source, 0);\n }\n dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n }\n }\n\n // visit each tuple\n // if filter state changed, push index to add/rem\n // else if in mod and passes a filter, push index to mod\n for (i = 0, n = bits.data().length; i < n; ++i) {\n if (remMap[i]) {\n // skip if removed tuple\n continue;\n } else if (prev[i] !== curr[i]) {\n // add if state changed\n out.push(i);\n } else if (modMap[i] && curr[i] !== all) {\n // otherwise, pass mods through\n mod.push(i);\n }\n }\n bits.mask = (1 << m) - 1;\n return output;\n },\n eval(_, pulse) {\n const output = pulse.materialize().fork(),\n m = this._dims.length;\n let mask = 0;\n if (pulse.rem.length) {\n this.remove(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n if (_.modified('query') && !_.modified('fields')) {\n mask |= this.update(_, pulse, output);\n }\n if (pulse.add.length) {\n this.insert(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n if (pulse.mod.length) {\n this.modify(pulse, output);\n mask |= (1 << m) - 1;\n }\n this.value.mask = mask;\n return output;\n },\n insert(_, pulse, output) {\n const tuples = pulse.add,\n bits = this.value,\n dims = this._dims,\n indices = this._indices,\n fields = _.fields,\n adds = {},\n out = output.add,\n n = bits.size() + tuples.length,\n m = dims.length;\n let k = bits.size(),\n j,\n key,\n add;\n\n // resize bitmaps and add tuples as needed\n bits.resize(n, m);\n bits.add(tuples);\n const curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all();\n\n // add to dimensional indices\n for (j = 0; j < m; ++j) {\n key = fields[j].fname;\n add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n dims[j].onAdd(add, curr);\n }\n\n // set previous filters, output if passes at least one filter\n for (; k < n; ++k) {\n prev[k] = all;\n if (curr[k] !== all) out.push(k);\n }\n },\n modify(pulse, output) {\n const out = output.mod,\n bits = this.value,\n curr = bits.curr(),\n all = bits.all(),\n tuples = pulse.mod;\n let i, n, k;\n for (i = 0, n = tuples.length; i < n; ++i) {\n k = tuples[i]._index;\n if (curr[k] !== all) out.push(k);\n }\n },\n remove(_, pulse, output) {\n const indices = this._indices,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n map = {},\n out = output.rem,\n tuples = pulse.rem;\n let i, n, k, f;\n\n // process tuples, output if passes at least one filter\n for (i = 0, n = tuples.length; i < n; ++i) {\n k = tuples[i]._index;\n map[k] = 1; // build index map\n prev[k] = f = curr[k];\n curr[k] = all;\n if (f !== all) out.push(k);\n }\n\n // remove from dimensional indices\n for (k in indices) {\n indices[k].remove(n, map);\n }\n this.reindex(pulse, n, map);\n return map;\n },\n // reindex filters and indices after propagation completes\n reindex(pulse, num, map) {\n const indices = this._indices,\n bits = this.value;\n pulse.runAfter(() => {\n const indexMap = bits.remove(num, map);\n for (const key in indices) indices[key].reindex(indexMap);\n });\n },\n update(_, pulse, output) {\n const dims = this._dims,\n query = _.query,\n stamp = pulse.stamp,\n m = dims.length;\n let mask = 0,\n i,\n q;\n\n // survey how many queries have changed\n output.filters = 0;\n for (q = 0; q < m; ++q) {\n if (_.modified('query', q)) {\n i = q;\n ++mask;\n }\n }\n if (mask === 1) {\n // only one query changed, use more efficient update\n mask = dims[i].one;\n this.incrementOne(dims[i], query[i], output.add, output.rem);\n } else {\n // multiple queries changed, perform full record keeping\n for (q = 0, mask = 0; q < m; ++q) {\n if (!_.modified('query', q)) continue;\n mask |= dims[q].one;\n this.incrementAll(dims[q], query[q], stamp, output.add);\n output.rem = output.add; // duplicate add/rem for downstream resolve\n }\n }\n\n return mask;\n },\n incrementAll(dim, query, stamp, out) {\n const bits = this.value,\n seen = bits.seen(),\n curr = bits.curr(),\n prev = bits.prev(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one;\n let i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n dim.range = query.slice();\n },\n incrementOne(dim, query, add, rem) {\n const bits = this.value,\n curr = bits.curr(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one;\n let i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n dim.range = query.slice();\n }\n});\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n * parameter value is a reference to a {@link CrossFilter} transform.\n */\nfunction ResolveFilter(params) {\n Transform.call(this, null, params);\n}\nResolveFilter.Definition = {\n 'type': 'ResolveFilter',\n 'metadata': {},\n 'params': [{\n 'name': 'ignore',\n 'type': 'number',\n 'required': true,\n 'description': 'A bit mask indicating which filters to ignore.'\n }, {\n 'name': 'filter',\n 'type': 'object',\n 'required': true,\n 'description': 'Per-tuple filter bitmaps from a CrossFilter transform.'\n }]\n};\ninherits(ResolveFilter, Transform, {\n transform(_, pulse) {\n const ignore = ~(_.ignore || 0),\n // bit mask where zeros -> dims to ignore\n bitmap = _.filter,\n mask = bitmap.mask;\n\n // exit early if no relevant filter changes\n if ((mask & ignore) === 0) return pulse.StopPropagation;\n const output = pulse.fork(pulse.ALL),\n data = bitmap.data(),\n curr = bitmap.curr(),\n prev = bitmap.prev(),\n pass = k => !(curr[k] & ignore) ? data[k] : null;\n\n // propagate all mod tuples that pass the filter\n output.filter(output.MOD, pass);\n\n // determine add & rem tuples via filter functions\n // for efficiency, we do *not* populate new arrays,\n // instead we add filter functions applied downstream\n\n if (!(mask & mask - 1)) {\n // only one filter changed\n output.filter(output.ADD, pass);\n output.filter(output.REM, k => (curr[k] & ignore) === mask ? data[k] : null);\n } else {\n // multiple filters changed\n output.filter(output.ADD, k => {\n const c = curr[k] & ignore,\n f = !c && c ^ prev[k] & ignore;\n return f ? data[k] : null;\n });\n output.filter(output.REM, k => {\n const c = curr[k] & ignore,\n f = c && !(c ^ (c ^ prev[k] & ignore));\n return f ? data[k] : null;\n });\n }\n\n // add filter to source data in case of reflow...\n return output.filter(output.SOURCE, t => pass(t._index));\n }\n});\nvar xf = /*#__PURE__*/Object.freeze({\n __proto__: null,\n crossfilter: CrossFilter,\n resolvefilter: ResolveFilter\n});\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n this.type = type;\n}\nASTNode.prototype.visit = function (visitor) {\n let c, i, n;\n if (visitor(this)) return 1;\n for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n if (c[i].visit(visitor)) return 1;\n }\n};\nfunction children(node) {\n switch (node.type) {\n case ArrayExpression:\n return node.elements;\n case BinaryExpression:\n case LogicalExpression:\n return [node.left, node.right];\n case CallExpression:\n return [node.callee].concat(node.arguments);\n case ConditionalExpression:\n return [node.test, node.consequent, node.alternate];\n case MemberExpression:\n return [node.object, node.property];\n case ObjectExpression:\n return node.properties;\n case Property:\n return [node.key, node.value];\n case UnaryExpression:\n return [node.argument];\n case Identifier:\n case Literal:\n case RawCode:\n default:\n return [];\n }\n}\n\n/*\n The following expression parser is based on Esprima (http://esprima.org/).\n Original header comment and license for Esprima is included here:\n\n Copyright (C) 2013 Ariya Hidayat \n Copyright (C) 2013 Thaddee Tyl \n Copyright (C) 2013 Mathias Bynens \n Copyright (C) 2012 Ariya Hidayat \n Copyright (C) 2012 Mathias Bynens \n Copyright (C) 2012 Joost-Wim Boekesteijn \n Copyright (C) 2012 Kris Kowal \n Copyright (C) 2012 Yusuke Suzuki \n Copyright (C) 2012 Arpad Borsos \n Copyright (C) 2011 Ariya Hidayat \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n TokenEOF = 2,\n TokenIdentifier = 3,\n TokenKeyword = 4,\n TokenNullLiteral = 5,\n TokenNumericLiteral = 6,\n TokenPunctuator = 7,\n TokenStringLiteral = 8,\n TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n SyntaxBinaryExpression = 'BinaryExpression',\n SyntaxCallExpression = 'CallExpression',\n SyntaxConditionalExpression = 'ConditionalExpression',\n SyntaxIdentifier = 'Identifier',\n SyntaxLiteral = 'Literal',\n SyntaxLogicalExpression = 'LogicalExpression',\n SyntaxMemberExpression = 'MemberExpression',\n SyntaxObjectExpression = 'ObjectExpression',\n SyntaxProperty = 'Property',\n SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n MessageUnexpectedNumber = 'Unexpected number',\n MessageUnexpectedString = 'Unexpected string',\n MessageUnexpectedIdentifier = 'Unexpected identifier',\n MessageUnexpectedReserved = 'Unexpected reserved word',\n MessageUnexpectedEOS = 'Unexpected end of input',\n MessageInvalidRegExp = 'Invalid regular expression',\n MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL$1 = 'ILLEGAL',\n DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n // eslint-disable-next-line no-misleading-character-class\n RegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]');\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n /* istanbul ignore next */\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n}\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\nfunction isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n return ch === 0x24 || ch === 0x5F ||\n // $ (dollar) and _ (underscore)\n ch >= 0x41 && ch <= 0x5A ||\n // A..Z\n ch >= 0x61 && ch <= 0x7A ||\n // a..z\n ch === 0x5C ||\n // \\ (backslash)\n ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\nfunction isIdentifierPart(ch) {\n return ch === 0x24 || ch === 0x5F ||\n // $ (dollar) and _ (underscore)\n ch >= 0x41 && ch <= 0x5A ||\n // A..Z\n ch >= 0x61 && ch <= 0x7A ||\n // a..z\n ch >= 0x30 && ch <= 0x39 ||\n // 0..9\n ch === 0x5C ||\n // \\ (backslash)\n ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n}\n\n// 7.6.1.1 Keywords\n\nconst keywords$2 = {\n 'if': 1,\n 'in': 1,\n 'do': 1,\n 'var': 1,\n 'for': 1,\n 'new': 1,\n 'try': 1,\n 'let': 1,\n 'this': 1,\n 'else': 1,\n 'case': 1,\n 'void': 1,\n 'with': 1,\n 'enum': 1,\n 'while': 1,\n 'break': 1,\n 'catch': 1,\n 'throw': 1,\n 'const': 1,\n 'yield': 1,\n 'class': 1,\n 'super': 1,\n 'return': 1,\n 'typeof': 1,\n 'delete': 1,\n 'switch': 1,\n 'export': 1,\n 'import': 1,\n 'public': 1,\n 'static': 1,\n 'default': 1,\n 'finally': 1,\n 'extends': 1,\n 'package': 1,\n 'private': 1,\n 'function': 1,\n 'continue': 1,\n 'debugger': 1,\n 'interface': 1,\n 'protected': 1,\n 'instanceof': 1,\n 'implements': 1\n};\nfunction skipComment() {\n while (index < length) {\n const ch = source.charCodeAt(index);\n if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n ++index;\n } else {\n break;\n }\n }\n}\nfunction scanHexEscape(prefix) {\n var i,\n len,\n ch,\n code = 0;\n len = prefix === 'u' ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n }\n return String.fromCharCode(code);\n}\nfunction scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = (code - 0x10000 >> 10) + 0xD800;\n cu2 = (code - 0x10000 & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n}\nfunction getEscapedIdentifier() {\n var ch, id;\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n id = ch;\n }\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n id += ch;\n }\n }\n return id;\n}\nfunction getIdentifier() {\n var start, ch;\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n return source.slice(start, index);\n}\nfunction scanIdentifier() {\n var start, id, type;\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = TokenIdentifier;\n } else if (keywords$2.hasOwnProperty(id)) {\n // eslint-disable-line no-prototype-builtins\n type = TokenKeyword;\n } else if (id === 'null') {\n type = TokenNullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = TokenBooleanLiteral;\n } else {\n type = TokenIdentifier;\n }\n return {\n type: type,\n value: id,\n start: start,\n end: index\n };\n}\n\n// 7.7 Punctuators\n\nfunction scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n switch (code) {\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E:\n // ~\n ++index;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code),\n start: start,\n end: index\n };\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A:\n // *\n index += 2;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n start: start,\n end: index\n };\n case 0x21: // !\n case 0x3D:\n // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: TokenPunctuator,\n value: source.slice(start, index),\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: TokenPunctuator,\n value: ch4,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: TokenPunctuator,\n value: ch3,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n index += 2;\n return {\n type: TokenPunctuator,\n value: ch2,\n start: start,\n end: index\n };\n }\n if (ch2 === '//') {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: TokenPunctuator,\n value: ch1,\n start: start,\n end: index\n };\n }\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n}\n\n// 7.8.3 Numeric Literals\n\nfunction scanHexLiteral(start) {\n let number = '';\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n if (number.length === 0) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n return {\n type: TokenNumericLiteral,\n value: parseInt('0x' + number, 16),\n start: start,\n end: index\n };\n}\nfunction scanOctalLiteral(start) {\n let number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n return {\n type: TokenNumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n start: start,\n end: index\n };\n}\nfunction scanNumericLiteral() {\n var number, start, ch;\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n }\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n }\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n return {\n type: TokenNumericLiteral,\n value: parseFloat(number),\n start: start,\n end: index\n };\n}\n\n// 7.8.4 String Literals\n\nfunction scanStringLiteral() {\n var str = '',\n quote,\n start,\n ch,\n code,\n octal = false;\n quote = source[index];\n assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n start = index;\n ++index;\n while (index < length) {\n ch = source[index++];\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n str += scanHexEscape(ch);\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n if (quote !== '') {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n }\n return {\n type: TokenStringLiteral,\n value: str,\n octal: octal,\n start: start,\n end: index\n };\n}\nfunction testRegExp(pattern, flags) {\n let tmp = pattern;\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, MessageInvalidRegExp);\n }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n new RegExp(tmp);\n } catch (e) {\n throwError({}, MessageInvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n}\nfunction scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n if (!terminated) {\n throwError({}, MessageUnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n}\nfunction scanRegExpFlags() {\n var ch, str, flags;\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n ++index;\n if (ch === '\\\\' && index < length) {\n throwError({}, MessageUnexpectedToken, ILLEGAL$1);\n } else {\n flags += ch;\n str += ch;\n }\n }\n if (flags.search(/[^gimuy]/g) >= 0) {\n throwError({}, MessageInvalidRegExp, flags);\n }\n return {\n value: flags,\n literal: str\n };\n}\nfunction scanRegExp() {\n var start, body, flags, value;\n lookahead = null;\n skipComment();\n start = index;\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n}\nfunction isIdentifierName(token) {\n return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\nfunction advance() {\n skipComment();\n if (index >= length) {\n return {\n type: TokenEOF,\n start: index,\n end: index\n };\n }\n const ch = source.charCodeAt(index);\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n}\nfunction lex() {\n const token = lookahead;\n index = token.end;\n lookahead = advance();\n index = token.end;\n return token;\n}\nfunction peek() {\n const pos = index;\n lookahead = advance();\n index = pos;\n}\nfunction finishArrayExpression(elements) {\n const node = new ASTNode(SyntaxArrayExpression);\n node.elements = elements;\n return node;\n}\nfunction finishBinaryExpression(operator, left, right) {\n const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n node.operator = operator;\n node.left = left;\n node.right = right;\n return node;\n}\nfunction finishCallExpression(callee, args) {\n const node = new ASTNode(SyntaxCallExpression);\n node.callee = callee;\n node.arguments = args;\n return node;\n}\nfunction finishConditionalExpression(test, consequent, alternate) {\n const node = new ASTNode(SyntaxConditionalExpression);\n node.test = test;\n node.consequent = consequent;\n node.alternate = alternate;\n return node;\n}\nfunction finishIdentifier(name) {\n const node = new ASTNode(SyntaxIdentifier);\n node.name = name;\n return node;\n}\nfunction finishLiteral(token) {\n const node = new ASTNode(SyntaxLiteral);\n node.value = token.value;\n node.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (node.raw === '//') {\n node.raw = '/(?:)/';\n }\n node.regex = token.regex;\n }\n return node;\n}\nfunction finishMemberExpression(accessor, object, property) {\n const node = new ASTNode(SyntaxMemberExpression);\n node.computed = accessor === '[';\n node.object = object;\n node.property = property;\n if (!node.computed) property.member = true;\n return node;\n}\nfunction finishObjectExpression(properties) {\n const node = new ASTNode(SyntaxObjectExpression);\n node.properties = properties;\n return node;\n}\nfunction finishProperty(kind, key, value) {\n const node = new ASTNode(SyntaxProperty);\n node.key = key;\n node.value = value;\n node.kind = kind;\n return node;\n}\nfunction finishUnaryExpression(operator, argument) {\n const node = new ASTNode(SyntaxUnaryExpression);\n node.operator = operator;\n node.argument = argument;\n node.prefix = true;\n return node;\n}\n\n// Throw an exception\n\nfunction throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n });\n error = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n}\n\n// Throw an exception because of the token.\n\nfunction throwUnexpected(token) {\n if (token.type === TokenEOF) {\n throwError(token, MessageUnexpectedEOS);\n }\n if (token.type === TokenNumericLiteral) {\n throwError(token, MessageUnexpectedNumber);\n }\n if (token.type === TokenStringLiteral) {\n throwError(token, MessageUnexpectedString);\n }\n if (token.type === TokenIdentifier) {\n throwError(token, MessageUnexpectedIdentifier);\n }\n if (token.type === TokenKeyword) {\n throwError(token, MessageUnexpectedReserved);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, MessageUnexpectedToken, token.value);\n}\n\n// Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\nfunction expect(value) {\n const token = lex();\n if (token.type !== TokenPunctuator || token.value !== value) {\n throwUnexpected(token);\n }\n}\n\n// Return true if the next token matches the specified punctuator.\n\nfunction match(value) {\n return lookahead.type === TokenPunctuator && lookahead.value === value;\n}\n\n// Return true if the next token matches the specified keyword\n\nfunction matchKeyword(keyword) {\n return lookahead.type === TokenKeyword && lookahead.value === keyword;\n}\n\n// 11.1.4 Array Initialiser\n\nfunction parseArrayInitialiser() {\n const elements = [];\n index = lookahead.start;\n expect('[');\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseConditionalExpression());\n if (!match(']')) {\n expect(',');\n }\n }\n }\n lex();\n return finishArrayExpression(elements);\n}\n\n// 11.1.5 Object Initialiser\n\nfunction parseObjectPropertyKey() {\n index = lookahead.start;\n const token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n if (token.octal) {\n throwError(token, MessageStrictOctalLiteral);\n }\n return finishLiteral(token);\n }\n return finishIdentifier(token.value);\n}\nfunction parseObjectProperty() {\n var token, key, id, value;\n index = lookahead.start;\n token = lookahead;\n if (token.type === TokenIdentifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', id, value);\n }\n if (token.type === TokenEOF || token.type === TokenPunctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', key, value);\n }\n}\nfunction parseObjectInitialiser() {\n var properties = [],\n property,\n name,\n key,\n map = {},\n toString = String;\n index = lookahead.start;\n expect('{');\n while (!match('}')) {\n property = parseObjectProperty();\n if (property.key.type === SyntaxIdentifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n throwError({}, MessageStrictDuplicateProperty);\n } else {\n map[key] = true;\n }\n properties.push(property);\n if (!match('}')) {\n expect(',');\n }\n }\n expect('}');\n return finishObjectExpression(properties);\n}\n\n// 11.1.6 The Grouping Operator\n\nfunction parseGroupExpression() {\n expect('(');\n const expr = parseExpression$1();\n expect(')');\n return expr;\n}\n\n// 11.1 Primary Expressions\n\nconst legalKeywords = {\n 'if': 1\n};\nfunction parsePrimaryExpression() {\n var type, token, expr;\n if (match('(')) {\n return parseGroupExpression();\n }\n if (match('[')) {\n return parseArrayInitialiser();\n }\n if (match('{')) {\n return parseObjectInitialiser();\n }\n type = lookahead.type;\n index = lookahead.start;\n if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n expr = finishIdentifier(lex().value);\n } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n if (lookahead.octal) {\n throwError(lookahead, MessageStrictOctalLiteral);\n }\n expr = finishLiteral(lex());\n } else if (type === TokenKeyword) {\n throw new Error(DISABLED);\n } else if (type === TokenBooleanLiteral) {\n token = lex();\n token.value = token.value === 'true';\n expr = finishLiteral(token);\n } else if (type === TokenNullLiteral) {\n token = lex();\n token.value = null;\n expr = finishLiteral(token);\n } else if (match('/') || match('/=')) {\n expr = finishLiteral(scanRegExp());\n peek();\n } else {\n throwUnexpected(lex());\n }\n return expr;\n}\n\n// 11.2 Left-Hand-Side Expressions\n\nfunction parseArguments() {\n const args = [];\n expect('(');\n if (!match(')')) {\n while (index < length) {\n args.push(parseConditionalExpression());\n if (match(')')) {\n break;\n }\n expect(',');\n }\n }\n expect(')');\n return args;\n}\nfunction parseNonComputedProperty() {\n index = lookahead.start;\n const token = lex();\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n return finishIdentifier(token.value);\n}\nfunction parseNonComputedMember() {\n expect('.');\n return parseNonComputedProperty();\n}\nfunction parseComputedMember() {\n expect('[');\n const expr = parseExpression$1();\n expect(']');\n return expr;\n}\nfunction parseLeftHandSideExpressionAllowCall() {\n var expr, args, property;\n expr = parsePrimaryExpression();\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n return expr;\n}\n\n// 11.3 Postfix Expressions\n\nfunction parsePostfixExpression() {\n const expr = parseLeftHandSideExpressionAllowCall();\n if (lookahead.type === TokenPunctuator) {\n if (match('++') || match('--')) {\n throw new Error(DISABLED);\n }\n }\n return expr;\n}\n\n// 11.4 Unary Operators\n\nfunction parseUnaryExpression() {\n var token, expr;\n if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(DISABLED);\n } else if (match('+') || match('-') || match('~') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(DISABLED);\n } else {\n expr = parsePostfixExpression();\n }\n return expr;\n}\nfunction binaryPrecedence(token) {\n let prec = 0;\n if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n return 0;\n }\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n case '&&':\n prec = 2;\n break;\n case '|':\n prec = 3;\n break;\n case '^':\n prec = 4;\n break;\n case '&':\n prec = 5;\n break;\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n case 'in':\n prec = 7;\n break;\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n case '+':\n case '-':\n prec = 9;\n break;\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n }\n return prec;\n}\n\n// 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\nfunction parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n marker = lookahead;\n left = parseUnaryExpression();\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n stack = [left, token, right];\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n // Reduce: make a binary expression from the three topmost entries.\n while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n markers.pop();\n expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n return expr;\n}\n\n// 11.12 Conditional Operator\n\nfunction parseConditionalExpression() {\n var expr, consequent, alternate;\n expr = parseBinaryExpression();\n if (match('?')) {\n lex();\n consequent = parseConditionalExpression();\n expect(':');\n alternate = parseConditionalExpression();\n expr = finishConditionalExpression(expr, consequent, alternate);\n }\n return expr;\n}\n\n// 11.14 Comma Operator\n\nfunction parseExpression$1() {\n const expr = parseConditionalExpression();\n if (match(',')) {\n throw new Error(DISABLED); // no sequence expressions\n }\n\n return expr;\n}\nfunction parser$1(code) {\n source = code;\n index = 0;\n length = source.length;\n lookahead = null;\n peek();\n const expr = parseExpression$1();\n if (lookahead.type !== TokenEOF) {\n throw new Error('Unexpect token after expression.');\n }\n return expr;\n}\nvar Constants$1 = {\n NaN: 'NaN',\n E: 'Math.E',\n LN2: 'Math.LN2',\n LN10: 'Math.LN10',\n LOG2E: 'Math.LOG2E',\n LOG10E: 'Math.LOG10E',\n PI: 'Math.PI',\n SQRT1_2: 'Math.SQRT1_2',\n SQRT2: 'Math.SQRT2',\n MIN_VALUE: 'Number.MIN_VALUE',\n MAX_VALUE: 'Number.MAX_VALUE'\n};\nfunction Functions$1(codegen) {\n function fncall(name, args, cast, type) {\n let obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n function fn(name, cast, type) {\n return args => fncall(name, args, cast, type);\n }\n const DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n return {\n // MATH functions\n isNaN: 'Number.isNaN',\n isFinite: 'Number.isFinite',\n abs: 'Math.abs',\n acos: 'Math.acos',\n asin: 'Math.asin',\n atan: 'Math.atan',\n atan2: 'Math.atan2',\n ceil: 'Math.ceil',\n cos: 'Math.cos',\n exp: 'Math.exp',\n floor: 'Math.floor',\n hypot: 'Math.hypot',\n log: 'Math.log',\n max: 'Math.max',\n min: 'Math.min',\n pow: 'Math.pow',\n random: 'Math.random',\n round: 'Math.round',\n sin: 'Math.sin',\n sqrt: 'Math.sqrt',\n tan: 'Math.tan',\n clamp: function (args) {\n if (args.length < 3) error('Missing arguments to clamp function.');\n if (args.length > 3) error('Too many arguments to clamp function.');\n const a = args.map(codegen);\n return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n },\n // DATE functions\n now: 'Date.now',\n utc: 'Date.UTC',\n datetime: DATE,\n date: fn('getDate', DATE, 0),\n day: fn('getDay', DATE, 0),\n year: fn('getFullYear', DATE, 0),\n month: fn('getMonth', DATE, 0),\n hours: fn('getHours', DATE, 0),\n minutes: fn('getMinutes', DATE, 0),\n seconds: fn('getSeconds', DATE, 0),\n milliseconds: fn('getMilliseconds', DATE, 0),\n time: fn('getTime', DATE, 0),\n timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n utcdate: fn('getUTCDate', DATE, 0),\n utcday: fn('getUTCDay', DATE, 0),\n utcyear: fn('getUTCFullYear', DATE, 0),\n utcmonth: fn('getUTCMonth', DATE, 0),\n utchours: fn('getUTCHours', DATE, 0),\n utcminutes: fn('getUTCMinutes', DATE, 0),\n utcseconds: fn('getUTCSeconds', DATE, 0),\n utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n // sequence functions\n length: fn('length', null, -1),\n // STRING functions\n parseFloat: 'parseFloat',\n parseInt: 'parseInt',\n upper: fn('toUpperCase', STRING, 0),\n lower: fn('toLowerCase', STRING, 0),\n substring: fn('substring', STRING),\n split: fn('split', STRING),\n trim: fn('trim', STRING, 0),\n // REGEXP functions\n regexp: REGEXP,\n test: fn('test', REGEXP),\n // Control Flow functions\n if: function (args) {\n if (args.length < 3) error('Missing arguments to if function.');\n if (args.length > 3) error('Too many arguments to if function.');\n const a = args.map(codegen);\n return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n }\n };\n}\nfunction stripQuotes(s) {\n const n = s && s.length - 1;\n return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\nfunction codegen(opt) {\n opt = opt || {};\n const allowed = opt.allowed ? toSet(opt.allowed) : {},\n forbidden = opt.forbidden ? toSet(opt.forbidden) : {},\n constants = opt.constants || Constants$1,\n functions = (opt.functions || Functions$1)(visit),\n globalvar = opt.globalvar,\n fieldvar = opt.fieldvar,\n outputGlobal = isFunction$1(globalvar) ? globalvar : id => \"\".concat(globalvar, \"[\\\"\").concat(id, \"\\\"]\");\n let globals = {},\n fields = {},\n memberDepth = 0;\n function visit(ast) {\n if (isString(ast)) return ast;\n const generator = Generators[ast.type];\n if (generator == null) error('Unsupported type: ' + ast.type);\n return generator(ast);\n }\n const Generators = {\n Literal: n => n.raw,\n Identifier: n => {\n const id = n.name;\n if (memberDepth > 0) {\n return id;\n } else if (has$1(forbidden, id)) {\n return error('Illegal identifier: ' + id);\n } else if (has$1(constants, id)) {\n return constants[id];\n } else if (has$1(allowed, id)) {\n return id;\n } else {\n globals[id] = 1;\n return outputGlobal(id);\n }\n },\n MemberExpression: n => {\n const d = !n.computed,\n o = visit(n.object);\n if (d) memberDepth += 1;\n const p = visit(n.property);\n if (o === fieldvar) {\n // strip quotes to sanitize field name (#1653)\n fields[stripQuotes(p)] = 1;\n }\n if (d) memberDepth -= 1;\n return o + (d ? '.' + p : '[' + p + ']');\n },\n CallExpression: n => {\n if (n.callee.type !== 'Identifier') {\n error('Illegal callee type: ' + n.callee.type);\n }\n const callee = n.callee.name,\n args = n.arguments,\n fn = has$1(functions, callee) && functions[callee];\n if (!fn) error('Unrecognized function: ' + callee);\n return isFunction$1(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n },\n ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n Property: n => {\n memberDepth += 1;\n const k = visit(n.key);\n memberDepth -= 1;\n return k + ':' + visit(n.value);\n }\n };\n function codegen(ast) {\n const result = {\n code: visit(ast),\n globals: Object.keys(globals),\n fields: Object.keys(fields)\n };\n globals = {};\n fields = {};\n return result;\n }\n codegen.functions = functions;\n codegen.constants = constants;\n return codegen;\n}\nfunction ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nfunction descending(a, b) {\n return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\nfunction bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We canā€™t do this\n // for a comparator (except for specific, known comparators) because we canā€™t\n // tell if the comparator is symmetric, and an asymmetric comparator canā€™t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero$2;\n compare2 = f;\n delta = f;\n }\n function left(a, x) {\n let lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = lo + hi >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function right(a, x) {\n let lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = lo + hi >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n function center(a, x) {\n let lo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let hi = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n return {\n left,\n center,\n right\n };\n}\nfunction zero$2() {\n return 0;\n}\nfunction intersection(values) {\n for (var _len5 = arguments.length, others = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n others[_key5 - 1] = arguments[_key5];\n }\n values = new InternSet(values);\n others = others.map(set$1);\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n return values;\n}\nfunction set$1(values) {\n return values instanceof InternSet ? values : new InternSet(values);\n}\nfunction union() {\n const set = new InternSet();\n for (var _len6 = arguments.length, others = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n others[_key6] = arguments[_key6];\n }\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\nconst Intersect = 'intersect';\nconst Union = 'union';\nconst VlMulti = 'vlMulti';\nconst VlPoint = 'vlPoint';\nconst Or = 'or';\nconst And = 'and';\nconst SelectionId = '_vgsid_';\nconst $selectionId = field$1(SelectionId);\nconst TYPE_ENUM = 'E',\n TYPE_RANGE_INC = 'R',\n TYPE_RANGE_EXC = 'R-E',\n TYPE_RANGE_LE = 'R-LE',\n TYPE_RANGE_RE = 'R-RE',\n UNIT_INDEX = 'index:unit';\n\n// TODO: revisit date coercion?\nfunction testPoint(datum, entry) {\n var fields = entry.fields,\n values = entry.values,\n n = fields.length,\n i = 0,\n dval,\n f;\n for (; i < n; ++i) {\n f = fields[i];\n f.getter = field$1.getter || field$1(f.field);\n dval = f.getter(datum);\n if (isDate$1(dval)) dval = toNumber(dval);\n if (isDate$1(values[i])) values[i] = toNumber(values[i]);\n if (isDate$1(values[i][0])) values[i] = values[i].map(toNumber);\n if (f.type === TYPE_ENUM) {\n // Enumerated fields can either specify individual values (single/multi selections)\n // or an array of values (interval selections).\n if (isArray(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n return false;\n }\n } else {\n if (f.type === TYPE_RANGE_INC) {\n if (!inrange(dval, values[i])) return false;\n } else if (f.type === TYPE_RANGE_RE) {\n // Discrete selection of bins test within the range [bin_start, bin_end).\n if (!inrange(dval, values[i], true, false)) return false;\n } else if (f.type === TYPE_RANGE_EXC) {\n // 'R-E'/'R-LE' included for completeness.\n if (!inrange(dval, values[i], false, false)) return false;\n } else if (f.type === TYPE_RANGE_LE) {\n if (!inrange(dval, values[i], false, true)) return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n * Tuples in the dataset are of the form\n * {unit: string, fields: array, values: array<*>}.\n * Fielddef is of the form\n * {field: string, channel: string, type: 'E' | 'R'} where\n * 'type' identifies whether tuples in the dataset enumerate\n * values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\nfunction selectionTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n n = entries.length,\n i = 0,\n entry,\n miss,\n count,\n unit,\n b;\n for (; i < n; ++i) {\n entry = entries[i];\n if (unitIdx && intersect) {\n // multi selections union within the same unit and intersect across units.\n miss = miss || {};\n count = miss[unit = entry.unit] || 0;\n\n // if we've already matched this unit, skip.\n if (count === -1) continue;\n b = testPoint(datum, entry);\n miss[unit] = b ? -1 : ++count;\n\n // if we match and there are no other units return true\n // if we've missed against all tuples in this unit return false\n if (b && unitIdx.size === 1) return true;\n if (!b && count === unitIdx.get(unit).count) return false;\n } else {\n b = testPoint(datum, entry);\n\n // if we find a miss and we do require intersection return false\n // if we find a match and we don't require intersection return true\n if (intersect ^ b) return b;\n }\n }\n\n // if intersecting and we made it here, then we saw no misses\n // if not intersecting, then we saw no matches\n // if no active selections, return false\n return n && intersect;\n}\nconst bisect = bisector($selectionId),\n bisectLeft = bisect.left,\n bisectRight = bisect.right;\nfunction selectionIdTest(name, datum, op) {\n const data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n value = $selectionId(datum),\n index = bisectLeft(entries, value);\n if (index === entries.length) return false;\n if ($selectionId(entries[index]) !== value) return false;\n if (unitIdx && intersect) {\n if (unitIdx.size === 1) return true;\n if (bisectRight(entries, value) - index < unitIdx.size) return false;\n }\n return true;\n}\n\n/**\n * Maps an array of scene graph items to an array of selection tuples.\n * @param {string} name - The name of the dataset representing the selection.\n * @param {string} base - The base object that generated tuples extend.\n *\n * @returns {array} An array of selection entries for the given unit.\n */\nfunction selectionTuples(array, base) {\n return array.map(x => extend$1(base.fields ? {\n values: base.fields.map(f => (f.getter || (f.getter = field$1(f.field)))(x.datum))\n } : {\n [SelectionId]: $selectionId(x.datum)\n }, base));\n}\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @param {boolean} isMulti - Identifies a \"multi\" selection to perform more\n * expensive resolution computation.\n * @param {boolean} vl5 - With Vega-Lite v5, \"multi\" selections are now called \"point\"\n * selections, and thus the resolved tuple should reflect this name.\n * This parameter allows us to reflect this change without triggering\n * a major version bump for Vega.\n * @returns {object} An object of selected fields and values.\n */\nfunction selectionResolve(name, op, isMulti, vl5) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n resolved = {},\n multiRes = {},\n types = {},\n entry,\n fields,\n values,\n unit,\n field,\n value,\n res,\n resUnit,\n type,\n union,\n n = entries.length,\n i = 0,\n j,\n m;\n\n // First union all entries within the same unit.\n for (; i < n; ++i) {\n entry = entries[i];\n unit = entry.unit;\n fields = entry.fields;\n values = entry.values;\n if (fields && values) {\n // Intentional selection stores\n for (j = 0, m = fields.length; j < m; ++j) {\n field = fields[j];\n res = resolved[field.field] || (resolved[field.field] = {});\n resUnit = res[unit] || (res[unit] = []);\n types[field.field] = type = field.type.charAt(0);\n union = ops[\"\".concat(type, \"_union\")];\n res[unit] = union(resUnit, array$5(values[j]));\n }\n\n // If the same multi-selection is repeated over views and projected over\n // an encoding, it may operate over different fields making it especially\n // tricky to reliably resolve it. At best, we can de-dupe identical entries\n // but doing so may be more computationally expensive than it is worth.\n // Instead, for now, we simply transform our store representation into\n // a more human-friendly one.\n if (isMulti) {\n resUnit = multiRes[unit] || (multiRes[unit] = []);\n resUnit.push(array$5(values).reduce((obj, curr, j) => (obj[fields[j].field] = curr, obj), {}));\n }\n } else {\n // Short circuit extensional selectionId stores which hold sorted IDs unique to each unit.\n field = SelectionId;\n value = $selectionId(entry);\n res = resolved[field] || (resolved[field] = {});\n resUnit = res[unit] || (res[unit] = []);\n resUnit.push(value);\n if (isMulti) {\n resUnit = multiRes[unit] || (multiRes[unit] = []);\n resUnit.push({\n [SelectionId]: value\n });\n }\n }\n }\n\n // Then resolve fields across units as per the op.\n op = op || Union;\n if (resolved[SelectionId]) {\n resolved[SelectionId] = ops[\"\".concat(SelectionId, \"_\").concat(op)](...Object.values(resolved[SelectionId]));\n } else {\n Object.keys(resolved).forEach(field => {\n resolved[field] = Object.keys(resolved[field]).map(unit => resolved[field][unit]).reduce((acc, curr) => acc === undefined ? curr : ops[\"\".concat(types[field], \"_\").concat(op)](acc, curr));\n });\n }\n entries = Object.keys(multiRes);\n if (isMulti && entries.length) {\n const key = vl5 ? VlPoint : VlMulti;\n resolved[key] = op === Union ? {\n [Or]: entries.reduce((acc, k) => (acc.push(...multiRes[k]), acc), [])\n } : {\n [And]: entries.map(k => ({\n [Or]: multiRes[k]\n }))\n };\n }\n return resolved;\n}\nvar ops = {\n [\"\".concat(SelectionId, \"_union\")]: union,\n [\"\".concat(SelectionId, \"_intersect\")]: intersection,\n E_union: function (base, value) {\n if (!base.length) return value;\n var i = 0,\n n = value.length;\n for (; i < n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n return base;\n },\n E_intersect: function (base, value) {\n return !base.length ? value : base.filter(v => value.indexOf(v) >= 0);\n },\n R_union: function (base, value) {\n var lo = toNumber(value[0]),\n hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n if (!base.length) return [lo, hi];\n if (base[0] > lo) base[0] = lo;\n if (base[1] < hi) base[1] = hi;\n return base;\n },\n R_intersect: function (base, value) {\n var lo = toNumber(value[0]),\n hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n if (!base.length) return [lo, hi];\n if (hi < base[0] || base[1] < lo) {\n return [];\n } else {\n if (base[0] < lo) base[0] = lo;\n if (base[1] > hi) base[1] = hi;\n }\n return base;\n }\n};\nconst DataPrefix$1 = ':',\n IndexPrefix$1 = '@';\nfunction selectionVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to selection functions must be a string literal.');\n const data = args[0].value,\n op = args.length >= 2 && peek$1(args).value,\n field = 'unit',\n indexName = IndexPrefix$1 + field,\n dataName = DataPrefix$1 + data;\n\n // eslint-disable-next-line no-prototype-builtins\n if (op === Intersect && !has$1(params, indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n\n // eslint-disable-next-line no-prototype-builtins\n if (!has$1(params, dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}\nfunction data$1(name) {\n const data = this.context.data[name];\n return data ? data.values.value : [];\n}\nfunction indata(name, field, value) {\n const index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\nfunction setdata(name, tuples) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\nfunction encode(item, name, retval) {\n if (item) {\n const df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\nconst wrap = method => function (value, spec) {\n const locale = this.context.dataflow.locale();\n return locale[method](spec)(value);\n};\nconst format = wrap('format');\nconst timeFormat$1 = wrap('timeFormat');\nconst utcFormat = wrap('utcFormat');\nconst timeParse = wrap('timeParse');\nconst utcParse = wrap('utcParse');\nconst dateObj = new Date(2000, 0, 1);\nfunction time(month, day, specifier) {\n if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n dateObj.setYear(2000);\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat$1.call(this, dateObj, specifier);\n}\nfunction monthFormat(month) {\n return time.call(this, month, 1, '%B');\n}\nfunction monthAbbrevFormat(month) {\n return time.call(this, month, 1, '%b');\n}\nfunction dayFormat(day) {\n return time.call(this, 0, 2 + day, '%A');\n}\nfunction dayAbbrevFormat(day) {\n return time.call(this, 0, 2 + day, '%a');\n}\nconst DataPrefix = ':';\nconst IndexPrefix = '@';\nconst ScalePrefix = '%';\nconst SignalPrefix = '$';\nfunction dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n const data = args[0].value,\n dataName = DataPrefix + data;\n if (!has$1(dataName, params)) {\n try {\n params[dataName] = scope.getData(data).tuplesRef();\n } catch (err) {\n // if data set does not exist, there's nothing to track\n }\n }\n}\nfunction indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n const data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n if (!has$1(indexName, params)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\nfunction scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\nfunction addScaleDependency(scope, params, name) {\n const scaleName = ScalePrefix + name;\n if (!has$1(params, scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\nfunction getScale(nameOrFunction, ctx) {\n if (isFunction$1(nameOrFunction)) {\n return nameOrFunction;\n }\n if (isString(nameOrFunction)) {\n const maybeScale = ctx.scales[nameOrFunction];\n return maybeScale && isRegisteredScale(maybeScale.value) ? maybeScale.value : undefined;\n }\n return undefined;\n}\nfunction internalScaleFunctions(codegen, fnctx, visitors) {\n // add helper method to the 'this' expression function context\n fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0;\n\n // register AST visitors for internal scale functions\n visitors._bandwidth = scaleVisitor;\n visitors._range = scaleVisitor;\n visitors._scale = scaleVisitor;\n\n // resolve scale reference directly to the signal hash argument\n const ref = arg => '_[' + (arg.type === Literal ? $(ScalePrefix + arg.value) : $(ScalePrefix) + '+' + codegen(arg)) + ']';\n\n // define and return internal scale function code generators\n // these internal functions are called by mark encoders\n return {\n _bandwidth: args => \"this.__bandwidth(\".concat(ref(args[0]), \")\"),\n _range: args => \"\".concat(ref(args[0]), \".range()\"),\n _scale: args => \"\".concat(ref(args[0]), \"(\").concat(codegen(args[1]), \")\")\n };\n}\nfunction geoMethod(methodName, globalMethod) {\n return function (projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n const p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\nconst geoArea = geoMethod('area', geoArea$1);\nconst geoBounds = geoMethod('bounds', geoBounds$1);\nconst geoCentroid = geoMethod('centroid', geoCentroid$1);\nfunction inScope(item) {\n const group = this.context.group;\n let value = false;\n if (group) while (item) {\n if (item === group) {\n value = true;\n break;\n }\n item = item.mark.group;\n }\n return value;\n}\nfunction log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length - 1];\n}\nfunction warn$1() {\n return log(this.context.dataflow, 'warn', arguments);\n}\nfunction info() {\n return log(this.context.dataflow, 'info', arguments);\n}\nfunction debug$3() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n const val = channelValue / 255;\n if (val <= 0.03928) {\n return val / 12.92;\n }\n return Math.pow((val + 0.055) / 1.055, 2.4);\n}\nfunction luminance(color) {\n const c = rgb$1(color),\n r = channel_luminance_value(c.r),\n g = channel_luminance_value(c.g),\n b = channel_luminance_value(c.b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nfunction contrast(color1, color2) {\n const lum1 = luminance(color1),\n lum2 = luminance(color2),\n lumL = Math.max(lum1, lum2),\n lumD = Math.min(lum1, lum2);\n return (lumL + 0.05) / (lumD + 0.05);\n}\nfunction merge() {\n const args = [].slice.call(arguments);\n args.unshift({});\n return extend$1(...args);\n}\nfunction equal$1(a, b) {\n return a === b || a !== a && b !== b ? true : isArray(a) ? isArray(b) && a.length === b.length ? equalArray(a, b) : false : isObject(a) && isObject(b) ? equalObject(a, b) : false;\n}\nfunction equalArray(a, b) {\n for (let i = 0, n = a.length; i < n; ++i) {\n if (!equal$1(a[i], b[i])) return false;\n }\n return true;\n}\nfunction equalObject(a, b) {\n for (const key in a) {\n if (!equal$1(a[key], b[key])) return false;\n }\n return true;\n}\nfunction removePredicate(props) {\n return _ => equalObject(props, _);\n}\nfunction modify(name, insert, remove, toggle, modify, values) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n stamp = df.stamp();\n let changes = data.changes,\n predicate,\n key;\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n if (!changes || changes.stamp < stamp) {\n data.changes = changes = df.changeset();\n changes.stamp = stamp;\n df.runAfter(() => {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n if (remove) {\n predicate = remove === true ? truthy : isArray(remove) || isTuple(remove) ? remove : removePredicate(remove);\n changes.remove(predicate);\n }\n if (insert) {\n changes.insert(insert);\n }\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n return 1;\n}\nfunction pinchDistance(event) {\n const t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.hypot(dx, dy);\n}\nfunction pinchAngle(event) {\n const t = event.touches;\n return Math.atan2(t[0].clientY - t[1].clientY, t[0].clientX - t[1].clientX);\n}\n\n// memoize accessor functions\nconst accessors = {};\nfunction pluck(data, name) {\n const accessor = accessors[name] || (accessors[name] = field$1(name));\n return isArray(data) ? data.map(accessor) : accessor(data);\n}\nfunction array(seq) {\n return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\nfunction sequence(seq) {\n return array(seq) || (isString(seq) ? seq : null);\n}\nfunction join(seq) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return array(seq).join(...args);\n}\nfunction indexof(seq) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return sequence(seq).indexOf(...args);\n}\nfunction lastindexof(seq) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return sequence(seq).lastIndexOf(...args);\n}\nfunction slice$1(seq) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n return sequence(seq).slice(...args);\n}\nfunction replace(str, pattern, repl) {\n if (isFunction$1(repl)) error('Function argument passed to replace.');\n return String(str).replace(pattern, repl);\n}\nfunction reverse$1(seq) {\n return array(seq).slice().reverse();\n}\nfunction bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\nfunction bandwidth(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\nfunction copy(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\nfunction domain$2(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\nfunction invert(name, range, group) {\n const s = getScale(name, (group || this).context);\n return !s ? undefined : isArray(range) ? (s.invertRange || s.invert)(range) : (s.invert || s.invertExtent)(range);\n}\nfunction range$3(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\nfunction scale$2(name, value, group) {\n const s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\nfunction scaleGradient(scale, p0, p1, count, group) {\n scale = getScale(scale, (group || this).context);\n const gradient = Gradient$1(p0, p1);\n let stops = scale.domain(),\n min = stops[0],\n max = peek$1(stops),\n fraction = identity$6;\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator ? scale$4('sequential')().interpolator(scale.interpolator()) : scale$4('linear')().interpolate(scale.interpolate()).range(scale.range())).domain([min = 0, max = 1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek$1(stops)) stops.push(max);\n }\n stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n return gradient;\n}\nfunction geoShape(projection, geojson, group) {\n const p = getScale(projection, (group || this).context);\n return function (context) {\n return p ? p.path.context(context)(geojson) : '';\n };\n}\nfunction pathShape(path) {\n let p = null;\n return function (context) {\n return context ? pathRender(context, p = p || parse$3(path)) : path;\n };\n}\nconst datum = d => d.data;\nfunction treeNodes(name, context) {\n const tree = data$1.call(context, name);\n return tree.root && tree.root.lookup || {};\n}\nfunction treePath(name, source, target) {\n const nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\nfunction treeAncestors(name, node) {\n const n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\nconst _window = () => typeof window !== 'undefined' && window || null;\nfunction screen() {\n const w = _window();\n return w ? w.screen : {};\n}\nfunction windowSize() {\n const w = _window();\n return w ? [w.innerWidth, w.innerHeight] : [undefined, undefined];\n}\nfunction containerSize() {\n const view = this.context.dataflow,\n el = view.container && view.container();\n return el ? [el.clientWidth, el.clientHeight] : [undefined, undefined];\n}\nfunction intersect(b, opt, group) {\n if (!b) return [];\n const [u, v] = b,\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n return intersect$2(scene, box, filter(opt));\n}\nfunction filter(opt) {\n let p = null;\n if (opt) {\n const types = array$5(opt.marktype),\n names = array$5(opt.markname);\n p = _ => (!types.length || types.some(t => _.marktype === t)) && (!names.length || names.some(s => _.name === s));\n }\n return p;\n}\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nfunction lassoAppend(lasso, x, y) {\n let minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5;\n lasso = array$5(lasso);\n const last = lasso[lasso.length - 1];\n\n // Add point to lasso if its the first point or distance to last point exceed minDist\n return last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist ? [...lasso, [x, y]] : lasso;\n}\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nfunction lassoPath(lasso) {\n return array$5(lasso).reduce((svg, _ref, i) => {\n let [x, y] = _ref;\n return svg += i == 0 ? \"M \".concat(x, \",\").concat(y, \" \") : i === lasso.length - 1 ? ' Z' : \"L \".concat(x, \",\").concat(y, \" \");\n }, '');\n}\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nfunction intersectLasso(markname, pixelLasso, unit) {\n const {\n x,\n y,\n mark\n } = unit;\n const bb = new Bounds().set(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n\n // Get bounding box around lasso\n for (const [px, py] of pixelLasso) {\n if (px < bb.x1) bb.x1 = px;\n if (px > bb.x2) bb.x2 = px;\n if (py < bb.y1) bb.y1 = py;\n if (py > bb.y2) bb.y2 = py;\n }\n\n // Translate bb against unit coordinates\n bb.translate(x, y);\n const intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]], markname, mark);\n\n // Check every point against the lasso\n return intersection.filter(tuple => pointInPolygon(tuple.x, tuple.y, pixelLasso));\n}\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n let intersections = 0;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [prevX, prevY] = polygon[j];\n const [x, y] = polygon[i];\n\n // count intersections\n if (y > testy != prevY > testy && testx < (prevX - x) * (testy - y) / (prevY - y) + x) {\n intersections++;\n }\n }\n\n // point is in polygon if intersection count is odd\n return intersections & 1;\n}\n\n// Expression function context object\nconst functionContext = {\n random() {\n return random();\n },\n // override default\n cumulativeNormal,\n cumulativeLogNormal,\n cumulativeUniform,\n densityNormal,\n densityLogNormal,\n densityUniform,\n quantileNormal,\n quantileLogNormal,\n quantileUniform,\n sampleNormal,\n sampleLogNormal,\n sampleUniform,\n isArray,\n isBoolean: isBoolean$2,\n isDate: isDate$1,\n isDefined(_) {\n return _ !== undefined;\n },\n isNumber: isNumber$1,\n isObject,\n isRegExp,\n isString,\n isTuple,\n isValid(_) {\n return _ != null && _ === _;\n },\n toBoolean,\n toDate(_) {\n return toDate(_);\n },\n // suppress extra arguments\n toNumber,\n toString,\n indexof,\n join,\n lastindexof,\n replace,\n reverse: reverse$1,\n slice: slice$1,\n flush,\n lerp,\n merge,\n pad: pad$2,\n peek: peek$1,\n pluck,\n span,\n inrange,\n truncate: truncate$1,\n rgb: rgb$1,\n lab: lab$1,\n hcl: hcl$2,\n hsl: hsl$2,\n luminance,\n contrast,\n sequence: range$5,\n format,\n utcFormat,\n utcParse,\n utcOffset,\n utcSequence,\n timeFormat: timeFormat$1,\n timeParse,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat,\n quarter,\n utcquarter,\n week,\n utcweek,\n dayofyear,\n utcdayofyear,\n warn: warn$1,\n info,\n debug: debug$3,\n extent(_) {\n return extent(_);\n },\n // suppress extra arguments\n inScope,\n intersect,\n clampRange,\n pinchDistance,\n pinchAngle,\n screen,\n containerSize,\n windowSize,\n bandspace,\n setdata,\n pathShape,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n encode,\n modify,\n lassoAppend,\n lassoPath,\n intersectLasso\n};\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'],\n // event functions\n eventPrefix = 'event.vega.',\n // event function prefix\n thisPrefix = 'this.',\n // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nconst codegenParams = {\n forbidden: ['_'],\n allowed: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: id => \"_[\".concat($(SignalPrefix + id), \"]\"),\n functions: buildFunctions,\n constants: Constants$1,\n visitors: astVisitors\n};\n\n// export code generator\nconst codeGenerator = codegen(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n const fn = Functions$1(codegen);\n eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n for (const name in functionContext) {\n fn[name] = thisPrefix + name;\n }\n extend$1(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n return fn;\n}\n\n// Register an expression function\nfunction expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain$2, scaleVisitor);\nexpressionFunction('range', range$3, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale$2, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data$1, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\nfunction parser(expr, scope) {\n const params = {};\n\n // parse the expression to an abstract syntax tree (ast)\n let ast;\n try {\n expr = isString(expr) ? expr : $(expr) + '';\n ast = parser$1(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(node => {\n if (node.type !== CallExpression) return;\n const name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n const gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(name => {\n const signalName = SignalPrefix + name;\n if (!has$1(params, signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: extend$1({\n code: gen.code\n }, scope.options.ast ? {\n ast\n } : null),\n $fields: gen.fields,\n $params: params\n };\n}\n\n/**\n * Parse a serialized dataflow specification.\n */\nfunction parse$2(spec) {\n const ctx = this,\n operators = spec.operators || [];\n\n // parse background\n if (spec.background) {\n ctx.background = spec.background;\n }\n\n // parse event configuration\n if (spec.eventConfig) {\n ctx.eventConfig = spec.eventConfig;\n }\n\n // parse locale configuration\n if (spec.locale) {\n ctx.locale = spec.locale;\n }\n\n // parse operators\n operators.forEach(entry => ctx.parseOperator(entry));\n\n // parse operator parameters\n operators.forEach(entry => ctx.parseOperatorParameters(entry));\n\n // parse streams\n (spec.streams || []).forEach(entry => ctx.parseStream(entry));\n\n // parse updates\n (spec.updates || []).forEach(entry => ctx.parseUpdate(entry));\n return ctx.resolve();\n}\nconst Skip$2 = toSet(['rule']),\n Swap = toSet(['group', 'image', 'rect']);\nfunction adjustSpatial$1(encode, marktype) {\n let code = '';\n if (Skip$2[marktype]) return code;\n if (encode.x2) {\n if (encode.x) {\n if (Swap[marktype]) {\n code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n }\n code += 'o.width=o.x2-o.x;';\n } else {\n code += 'o.x=o.x2-(o.width||0);';\n }\n }\n if (encode.xc) {\n code += 'o.x=o.xc-(o.width||0)/2;';\n }\n if (encode.y2) {\n if (encode.y) {\n if (Swap[marktype]) {\n code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n }\n code += 'o.height=o.y2-o.y;';\n } else {\n code += 'o.y=o.y2-(o.height||0);';\n }\n }\n if (encode.yc) {\n code += 'o.y=o.yc-(o.height||0)/2;';\n }\n return code;\n}\nfunction canonicalType(type) {\n return (type + '').toLowerCase();\n}\nfunction isOperator(type) {\n return canonicalType(type) === 'operator';\n}\nfunction isCollect(type) {\n return canonicalType(type) === 'collect';\n}\nfunction expression$2(ctx, args, code) {\n // wrap code in return statement if expression does not terminate\n if (!code.endsWith(';')) {\n code = 'return(' + code + ');';\n }\n const fn = Function(...args.concat(code));\n return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n}\n\n// generate code for comparing a single field\nfunction _compare(u, v, lt, gt) {\n return \"((u = \".concat(u, \") < (v = \").concat(v, \") || u == null) && v != null ? \").concat(lt, \"\\n : (u > v || v == null) && u != null ? \").concat(gt, \"\\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? \").concat(lt, \"\\n : v !== v && u === u ? \").concat(gt, \" : \");\n}\nvar expressionCodegen = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator: (ctx, expr) => expression$2(ctx, ['_'], expr.code),\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter: (ctx, expr) => expression$2(ctx, ['datum', '_'], expr.code),\n /**\n * Parse an expression applied to an event stream.\n */\n event: (ctx, expr) => expression$2(ctx, ['event'], expr.code),\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler: (ctx, expr) => {\n const code = \"var datum=event.item&&event.item.datum;return \".concat(expr.code, \";\");\n return expression$2(ctx, ['_', 'event'], code);\n },\n /**\n * Parse an expression that performs visual encoding.\n */\n encode: (ctx, encode) => {\n const {\n marktype,\n channels\n } = encode;\n let code = 'var o=item,datum=o.datum,m=0,$;';\n for (const name in channels) {\n const o = 'o[' + $(name) + ']';\n code += \"$=\".concat(channels[name].code, \";if(\").concat(o, \"!==$)\").concat(o, \"=$,m=1;\");\n }\n code += adjustSpatial$1(channels, marktype);\n code += 'return m;';\n return expression$2(ctx, ['item', '_'], code);\n },\n /**\n * Optimized code generators for access and comparison.\n */\n codegen: {\n get(path) {\n const ref = \"[\".concat(path.map($).join(']['), \"]\");\n const get = Function('_', \"return _\".concat(ref, \";\"));\n get.path = ref;\n return get;\n },\n comparator(fields, orders) {\n let t;\n const map = (f, i) => {\n const o = orders[i];\n let u, v;\n if (f.path) {\n u = \"a\".concat(f.path);\n v = \"b\".concat(f.path);\n } else {\n (t = t || {})['f' + i] = f;\n u = \"this.f\".concat(i, \"(a)\");\n v = \"this.f\".concat(i, \"(b)\");\n }\n return _compare(u, v, -o, o);\n };\n const fn = Function('a', 'b', 'var u, v; return ' + fields.map(map).join('') + '0;');\n return t ? fn.bind(t) : fn;\n }\n }\n};\n\n/**\n * Parse a dataflow operator.\n */\nfunction parseOperator(spec) {\n const ctx = this;\n if (isOperator(spec.type) || !spec.type) {\n ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null);\n } else {\n ctx.transform(spec, spec.type);\n }\n}\n\n/**\n * Parse and assign operator parameters.\n */\nfunction parseOperatorParameters(spec) {\n const ctx = this;\n if (spec.params) {\n const op = ctx.get(spec.id);\n if (!op) error('Invalid operator id: ' + spec.id);\n ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly));\n }\n}\n\n/**\n * Parse a set of operator parameters.\n */\nfunction parseParameters$1(spec, params) {\n params = params || {};\n const ctx = this;\n for (const key in spec) {\n const value = spec[key];\n params[key] = isArray(value) ? value.map(v => parseParameter$2(v, ctx, params)) : parseParameter$2(value, ctx, params);\n }\n return params;\n}\n\n/**\n * Parse a single parameter.\n */\nfunction parseParameter$2(spec, ctx, params) {\n if (!spec || !isObject(spec)) return spec;\n for (let i = 0, n = PARSERS.length, p; i < n; ++i) {\n p = PARSERS[i];\n if (has$1(spec, p.key)) {\n return p.parse(spec, ctx, params);\n }\n }\n return spec;\n}\n\n/** Reference parsers. */\nvar PARSERS = [{\n key: '$ref',\n parse: getOperator\n}, {\n key: '$key',\n parse: getKey\n}, {\n key: '$expr',\n parse: getExpression\n}, {\n key: '$field',\n parse: getField\n}, {\n key: '$encode',\n parse: getEncode\n}, {\n key: '$compare',\n parse: getCompare\n}, {\n key: '$context',\n parse: getContext\n}, {\n key: '$subflow',\n parse: getSubflow\n}, {\n key: '$tupleid',\n parse: getTupleId\n}];\n\n/**\n * Resolve an operator reference.\n */\nfunction getOperator(_, ctx) {\n return ctx.get(_.$ref) || error('Operator not defined: ' + _.$ref);\n}\n\n/**\n * Resolve an expression reference.\n */\nfunction getExpression(_, ctx, params) {\n if (_.$params) {\n // parse expression parameters\n ctx.parseParameters(_.$params, params);\n }\n const k = 'e:' + _.$expr.code;\n return ctx.fn[k] || (ctx.fn[k] = accessor(ctx.parameterExpression(_.$expr), _.$fields));\n}\n\n/**\n * Resolve a key accessor reference.\n */\nfunction getKey(_, ctx) {\n const k = 'k:' + _.$key + '_' + !!_.$flat;\n return ctx.fn[k] || (ctx.fn[k] = key(_.$key, _.$flat, ctx.expr.codegen));\n}\n\n/**\n * Resolve a field accessor reference.\n */\nfunction getField(_, ctx) {\n if (!_.$field) return null;\n const k = 'f:' + _.$field + '_' + _.$name;\n return ctx.fn[k] || (ctx.fn[k] = field$1(_.$field, _.$name, ctx.expr.codegen));\n}\n\n/**\n * Resolve a comparator function reference.\n */\nfunction getCompare(_, ctx) {\n // As of Vega 5.5.3, $tupleid sort is no longer used.\n // Keep here for now for backwards compatibility.\n const k = 'c:' + _.$compare + '_' + _.$order,\n c = array$5(_.$compare).map(_ => _ && _.$tupleid ? tupleid : _);\n return ctx.fn[k] || (ctx.fn[k] = compare$8(c, _.$order, ctx.expr.codegen));\n}\n\n/**\n * Resolve an encode operator reference.\n */\nfunction getEncode(_, ctx) {\n const spec = _.$encode,\n encode = {};\n for (const name in spec) {\n const enc = spec[name];\n encode[name] = accessor(ctx.encodeExpression(enc.$expr), enc.$fields);\n encode[name].output = enc.$output;\n }\n return encode;\n}\n\n/**\n * Resolve a context reference.\n */\nfunction getContext(_, ctx) {\n return ctx;\n}\n\n/**\n * Resolve a recursive subflow specification.\n */\nfunction getSubflow(_, ctx) {\n const spec = _.$subflow;\n return function (dataflow, key, parent) {\n const subctx = ctx.fork().parse(spec),\n op = subctx.get(spec.operators[0].id),\n p = subctx.signals.parent;\n if (p) p.set(parent);\n op.detachSubflow = () => ctx.detach(subctx);\n return op;\n };\n}\n\n/**\n * Resolve a tuple id reference.\n */\nfunction getTupleId() {\n return tupleid;\n}\n\n/**\n * Parse an event stream specification.\n */\nfunction parseStream$2(spec) {\n var ctx = this,\n filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined,\n stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n args;\n if (spec.source) {\n stream = ctx.events(spec.source, spec.type, filter);\n } else if (spec.merge) {\n args = spec.merge.map(_ => ctx.get(_));\n stream = args[0].merge.apply(args[0], args.slice(1));\n }\n if (spec.between) {\n args = spec.between.map(_ => ctx.get(_));\n stream = stream.between(args[0], args[1]);\n }\n if (spec.filter) {\n stream = stream.filter(filter);\n }\n if (spec.throttle != null) {\n stream = stream.throttle(+spec.throttle);\n }\n if (spec.debounce != null) {\n stream = stream.debounce(+spec.debounce);\n }\n if (stream == null) {\n error('Invalid stream definition: ' + JSON.stringify(spec));\n }\n if (spec.consume) stream.consume(true);\n ctx.stream(spec, stream);\n}\n\n/**\n * Parse an event-driven operator update.\n */\nfunction parseUpdate$1(spec) {\n var ctx = this,\n srcid = isObject(srcid = spec.source) ? srcid.$ref : srcid,\n source = ctx.get(srcid),\n target = null,\n update = spec.update,\n params = undefined;\n if (!source) error('Source not defined: ' + spec.source);\n target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target);\n if (update && update.$expr) {\n if (update.$params) {\n params = ctx.parseParameters(update.$params);\n }\n update = ctx.handlerExpression(update.$expr);\n }\n ctx.update(spec, source, target, update, params);\n}\nconst SKIP = {\n skip: true\n};\nfunction getState$1(options) {\n var ctx = this,\n state = {};\n if (options.signals) {\n var signals = state.signals = {};\n Object.keys(ctx.signals).forEach(key => {\n const op = ctx.signals[key];\n if (options.signals(key, op)) {\n signals[key] = op.value;\n }\n });\n }\n if (options.data) {\n var data = state.data = {};\n Object.keys(ctx.data).forEach(key => {\n const dataset = ctx.data[key];\n if (options.data(key, dataset)) {\n data[key] = dataset.input.value;\n }\n });\n }\n if (ctx.subcontext && options.recurse !== false) {\n state.subcontext = ctx.subcontext.map(ctx => ctx.getState(options));\n }\n return state;\n}\nfunction setState$1(state) {\n var ctx = this,\n df = ctx.dataflow,\n data = state.data,\n signals = state.signals;\n Object.keys(signals || {}).forEach(key => {\n df.update(ctx.signals[key], signals[key], SKIP);\n });\n Object.keys(data || {}).forEach(key => {\n df.pulse(ctx.data[key].input, df.changeset().remove(truthy).insert(data[key]));\n });\n (state.subcontext || []).forEach((substate, i) => {\n const subctx = ctx.subcontext[i];\n if (subctx) subctx.setState(substate);\n });\n}\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\nfunction context(df, transforms, functions, expr) {\n return new Context(df, transforms, functions, expr);\n}\nfunction Context(df, transforms, functions, expr) {\n this.dataflow = df;\n this.transforms = transforms;\n this.events = df.events.bind(df);\n this.expr = expr || expressionCodegen, this.signals = {};\n this.scales = {};\n this.nodes = {};\n this.data = {};\n this.fn = {};\n if (functions) {\n this.functions = Object.create(functions);\n this.functions.context = this;\n }\n}\nfunction Subcontext(ctx) {\n this.dataflow = ctx.dataflow;\n this.transforms = ctx.transforms;\n this.events = ctx.events;\n this.expr = ctx.expr;\n this.signals = Object.create(ctx.signals);\n this.scales = Object.create(ctx.scales);\n this.nodes = Object.create(ctx.nodes);\n this.data = Object.create(ctx.data);\n this.fn = Object.create(ctx.fn);\n if (ctx.functions) {\n this.functions = Object.create(ctx.functions);\n this.functions.context = this;\n }\n}\nContext.prototype = Subcontext.prototype = {\n fork() {\n const ctx = new Subcontext(this);\n (this.subcontext || (this.subcontext = [])).push(ctx);\n return ctx;\n },\n detach(ctx) {\n this.subcontext = this.subcontext.filter(c => c !== ctx);\n\n // disconnect all nodes in the subcontext\n // wipe out targets first for better efficiency\n const keys = Object.keys(ctx.nodes);\n for (const key of keys) ctx.nodes[key]._targets = null;\n for (const key of keys) ctx.nodes[key].detach();\n ctx.nodes = null;\n },\n get(id) {\n return this.nodes[id];\n },\n set(id, node) {\n return this.nodes[id] = node;\n },\n add(spec, op) {\n const ctx = this,\n df = ctx.dataflow,\n data = spec.value;\n ctx.set(spec.id, op);\n if (isCollect(spec.type) && data) {\n if (data.$ingest) {\n df.ingest(op, data.$ingest, data.$format);\n } else if (data.$request) {\n df.preload(op, data.$request, data.$format);\n } else {\n df.pulse(op, df.changeset().insert(data));\n }\n }\n if (spec.root) {\n ctx.root = op;\n }\n if (spec.parent) {\n let p = ctx.get(spec.parent.$ref);\n if (p) {\n df.connect(p, [op]);\n op.targets().add(p);\n } else {\n (ctx.unresolved = ctx.unresolved || []).push(() => {\n p = ctx.get(spec.parent.$ref);\n df.connect(p, [op]);\n op.targets().add(p);\n });\n }\n }\n if (spec.signal) {\n ctx.signals[spec.signal] = op;\n }\n if (spec.scale) {\n ctx.scales[spec.scale] = op;\n }\n if (spec.data) {\n for (const name in spec.data) {\n const data = ctx.data[name] || (ctx.data[name] = {});\n spec.data[name].forEach(role => data[role] = op);\n }\n }\n },\n resolve() {\n (this.unresolved || []).forEach(fn => fn());\n delete this.unresolved;\n return this;\n },\n operator(spec, update) {\n this.add(spec, this.dataflow.add(spec.value, update));\n },\n transform(spec, type) {\n this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n },\n stream(spec, stream) {\n this.set(spec.id, stream);\n },\n update(spec, stream, target, update, params) {\n this.dataflow.on(stream, target, update, params, spec.options);\n },\n // expression parsing\n operatorExpression(expr) {\n return this.expr.operator(this, expr);\n },\n parameterExpression(expr) {\n return this.expr.parameter(this, expr);\n },\n eventExpression(expr) {\n return this.expr.event(this, expr);\n },\n handlerExpression(expr) {\n return this.expr.handler(this, expr);\n },\n encodeExpression(encode) {\n return this.expr.encode(this, encode);\n },\n // parse methods\n parse: parse$2,\n parseOperator,\n parseOperatorParameters,\n parseParameters: parseParameters$1,\n parseStream: parseStream$2,\n parseUpdate: parseUpdate$1,\n // state methods\n getState: getState$1,\n setState: setState$1\n};\n\n// initialize aria role and label attributes\nfunction initializeAria(view) {\n const el = view.container();\n if (el) {\n el.setAttribute('role', 'graphics-document');\n el.setAttribute('aria-roleDescription', 'visualization');\n ariaLabel(el, view.description());\n }\n}\n\n// update aria-label if we have a DOM container element\nfunction ariaLabel(el, desc) {\n if (el) desc == null ? el.removeAttribute('aria-label') : el.setAttribute('aria-label', desc);\n}\nfunction background(view) {\n // respond to background signal\n view.add(null, _ => {\n view._background = _.bg;\n view._resize = 1;\n return _.bg;\n }, {\n bg: view._signals.background\n });\n}\nconst Default = 'default';\nfunction cursor$1(view) {\n // get cursor signal, add to dataflow if needed\n const cursor = view._signals.cursor || (view._signals.cursor = view.add({\n user: Default,\n item: null\n }));\n\n // evaluate cursor on each mousemove event\n view.on(view.events('view', 'mousemove'), cursor, (_, event) => {\n const value = cursor.value,\n user = value ? isString(value) ? value : value.user : Default,\n item = event.item && event.item.cursor || null;\n return value && user === value.user && item == value.item ? value : {\n user: user,\n item: item\n };\n });\n\n // when cursor signal updates, set visible cursor\n view.add(null, function (_) {\n let user = _.cursor,\n item = this.value;\n if (!isString(user)) {\n item = user.item;\n user = user.user;\n }\n setCursor(view, user && user !== Default ? user : item || user);\n return item;\n }, {\n cursor: cursor\n });\n}\nfunction setCursor(view, cursor) {\n const el = view.globalCursor() ? typeof document !== 'undefined' && document.body : view.container();\n if (el) {\n return cursor == null ? el.style.removeProperty('cursor') : el.style.cursor = cursor;\n }\n}\nfunction dataref(view, name) {\n var data = view._runtime.data;\n if (!has$1(data, name)) {\n error('Unrecognized data set: ' + name);\n }\n return data[name];\n}\nfunction data(name, values) {\n return arguments.length < 2 ? dataref(this, name).values.value : change.call(this, name, changeset().remove(truthy).insert(values));\n}\nfunction change(name, changes) {\n if (!isChangeSet(changes)) {\n error('Second argument to changes must be a changeset.');\n }\n const dataset = dataref(this, name);\n dataset.modified = true;\n return this.pulse(dataset.input, changes);\n}\nfunction insert$1(name, _) {\n return change.call(this, name, changeset().insert(_));\n}\nfunction remove(name, _) {\n return change.call(this, name, changeset().remove(_));\n}\nfunction width(view) {\n var padding = view.padding();\n return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\nfunction height(view) {\n var padding = view.padding();\n return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\nfunction offset(view) {\n var padding = view.padding(),\n origin = view._origin;\n return [padding.left + origin[0], padding.top + origin[1]];\n}\nfunction resizeRenderer(view) {\n var origin = offset(view),\n w = width(view),\n h = height(view);\n view._renderer.background(view.background());\n view._renderer.resize(w, h, origin);\n view._handler.origin(origin);\n view._resizeListeners.forEach(handler => {\n try {\n handler(w, h);\n } catch (error) {\n view.error(error);\n }\n });\n}\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n * view - Returns the backing View instance.\n * item - Returns the currently active scenegraph item (if any).\n * group - Returns the currently active scenegraph group (if any).\n * This method accepts a single string-typed argument indicating the name\n * of the desired parent group. The scenegraph will be traversed from\n * the item up towards the root to search for a matching group. If no\n * argument is provided the enclosing group for the active item is\n * returned, unless the item it itself a group, in which case it is\n * returned directly.\n * xy - Returns a two-element array containing the x and y coordinates for\n * mouse or touch events. For touch events, this is based on the first\n * elements in the changedTouches array. This method accepts a single\n * argument: either an item instance or mark name that should serve as\n * the reference coordinate system. If no argument is provided the\n * top-level view coordinate system is assumed.\n * x - Returns the current x-coordinate, accepts the same arguments as xy.\n * y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nfunction eventExtend(view, event, item) {\n var r = view._renderer,\n el = r && r.canvas(),\n p,\n e,\n translate;\n if (el) {\n translate = offset(view);\n e = event.changedTouches ? event.changedTouches[0] : event;\n p = point$2(e, el);\n p[0] -= translate[0];\n p[1] -= translate[1];\n }\n event.dataflow = view;\n event.item = item;\n event.vega = extension(view, item, p);\n return event;\n}\nfunction extension(view, item, point) {\n const itemGroup = item ? item.mark.marktype === 'group' ? item : item.mark.group : null;\n function group(name) {\n var g = itemGroup,\n i;\n if (name) for (i = item; i; i = i.mark.group) {\n if (i.mark.name === name) {\n g = i;\n break;\n }\n }\n return g && g.mark && g.mark.interactive ? g : {};\n }\n function xy(item) {\n if (!item) return point;\n if (isString(item)) item = group(item);\n const p = point.slice();\n while (item) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n item = item.mark && item.mark.group;\n }\n return p;\n }\n return {\n view: constant$5(view),\n item: constant$5(item || {}),\n group: group,\n xy: xy,\n x: item => xy(item)[0],\n y: item => xy(item)[1]\n };\n}\nconst VIEW$1 = 'view',\n TIMER = 'timer',\n WINDOW = 'window',\n NO_TRAP = {\n trap: false\n };\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nfunction initializeEventConfig(config) {\n const events = extend$1({\n defaults: {}\n }, config);\n const unpack = (obj, keys) => {\n keys.forEach(k => {\n if (isArray(obj[k])) obj[k] = toSet(obj[k]);\n });\n };\n unpack(events.defaults, ['prevent', 'allow']);\n unpack(events, ['view', 'window', 'selector']);\n return events;\n}\nfunction trackEventListener(view, sources, type, handler) {\n view._eventListeners.push({\n type: type,\n sources: array$5(sources),\n handler: handler\n });\n}\nfunction prevent(view, type) {\n var def = view._eventConfig.defaults,\n prevent = def.prevent,\n allow = def.allow;\n return prevent === false || allow === true ? false : prevent === true || allow === false ? true : prevent ? prevent[type] : allow ? !allow[type] : view.preventDefault();\n}\nfunction permit(view, key, type) {\n const rule = view._eventConfig && view._eventConfig[key];\n if (rule === false || isObject(rule) && !rule[type]) {\n view.warn(\"Blocked \".concat(key, \" \").concat(type, \" event listener.\"));\n return false;\n }\n return true;\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nfunction events(source, type, filter) {\n var view = this,\n s = new EventStream(filter),\n send = function (e, item) {\n view.runAsync(null, () => {\n if (source === VIEW$1 && prevent(view, type)) {\n e.preventDefault();\n }\n s.receive(eventExtend(view, e, item));\n });\n },\n sources;\n if (source === TIMER) {\n if (permit(view, 'timer', type)) {\n view.timer(send, type);\n }\n } else if (source === VIEW$1) {\n if (permit(view, 'view', type)) {\n // send traps errors, so use {trap: false} option\n view.addEventListener(type, send, NO_TRAP);\n }\n } else {\n if (source === WINDOW) {\n if (permit(view, 'window', type) && typeof window !== 'undefined') {\n sources = [window];\n }\n } else if (typeof document !== 'undefined') {\n if (permit(view, 'selector', type)) {\n sources = Array.from(document.querySelectorAll(source));\n }\n }\n if (!sources) {\n view.warn('Can not resolve event source: ' + source);\n } else {\n for (var i = 0, n = sources.length; i < n; ++i) {\n sources[i].addEventListener(type, send);\n }\n trackEventListener(view, sources, type, send);\n }\n }\n return s;\n}\nfunction itemFilter(event) {\n return event.item;\n}\nfunction markTarget(event) {\n // grab upstream collector feeding the mark operator\n return event.item.mark.source;\n}\nfunction invoke(name) {\n return function (_, event) {\n return event.vega.view().changeset().encode(event.item, name);\n };\n}\nfunction hover(hoverSet, leaveSet) {\n hoverSet = [hoverSet || 'hover'];\n leaveSet = [leaveSet || 'update', hoverSet[0]];\n\n // invoke hover set upon mouseover\n this.on(this.events('view', 'mouseover', itemFilter), markTarget, invoke(hoverSet));\n\n // invoke leave set upon mouseout\n this.on(this.events('view', 'mouseout', itemFilter), markTarget, invoke(leaveSet));\n return this;\n}\n\n/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nfunction finalize() {\n var tooltip = this._tooltip,\n timers = this._timers,\n listeners = this._eventListeners,\n n,\n m,\n e;\n n = timers.length;\n while (--n >= 0) {\n timers[n].stop();\n }\n n = listeners.length;\n while (--n >= 0) {\n e = listeners[n];\n m = e.sources.length;\n while (--m >= 0) {\n e.sources[m].removeEventListener(e.type, e.handler);\n }\n }\n if (tooltip) {\n tooltip.call(this, this._handler, null, null, null);\n }\n return this;\n}\nfunction element(tag, attr, text) {\n const el = document.createElement(tag);\n for (const key in attr) el.setAttribute(key, attr[key]);\n if (text != null) el.textContent = text;\n return el;\n}\nconst BindClass = 'vega-bind',\n NameClass = 'vega-bind-name',\n RadioClass = 'vega-bind-radio';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n * element should be appended as a child. If string-valued, this argument\n * will be treated as a CSS selector. If null or undefined, the parent\n * element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n * to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nfunction bind(view, el, binding) {\n if (!el) return;\n const param = binding.param;\n let bind = binding.state;\n if (!bind) {\n bind = binding.state = {\n elements: null,\n active: false,\n set: null,\n update: value => {\n if (value != view.signal(param.signal)) {\n view.runAsync(null, () => {\n bind.source = true;\n view.signal(param.signal, value);\n });\n }\n }\n };\n if (param.debounce) {\n bind.update = debounce(param.debounce, bind.update);\n }\n }\n const create = param.input == null && param.element ? target : generate;\n create(bind, el, param, view);\n if (!bind.active) {\n view.on(view._signals[param.signal], null, () => {\n bind.source ? bind.source = false : bind.set(view.signal(param.signal));\n });\n bind.active = true;\n }\n return bind;\n}\n\n/**\n * Bind the signal to an external EventTarget.\n */\nfunction target(bind, node, param, view) {\n const type = param.event || 'input';\n const handler = () => bind.update(node.value);\n\n // initialize signal value to external input value\n view.signal(param.signal, node.value);\n\n // listen for changes on the element\n node.addEventListener(type, handler);\n\n // register with view, so we can remove it upon finalization\n trackEventListener(view, node, type, handler);\n\n // propagate change to element\n bind.set = value => {\n node.value = value;\n node.dispatchEvent(event(type));\n };\n}\nfunction event(type) {\n return typeof Event !== 'undefined' ? new Event(type) : {\n type\n };\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, view) {\n const value = view.signal(param.signal);\n const div = element('div', {\n 'class': BindClass\n });\n const wrapper = param.input === 'radio' ? div : div.appendChild(element('label'));\n wrapper.appendChild(element('span', {\n 'class': NameClass\n }, param.name || param.signal));\n el.appendChild(div);\n let input = form;\n switch (param.input) {\n case 'checkbox':\n input = checkbox;\n break;\n case 'select':\n input = select;\n break;\n case 'radio':\n input = radio;\n break;\n case 'range':\n input = range$2;\n break;\n }\n input(bind, wrapper, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n const node = element('input');\n for (const key in param) {\n if (key !== 'signal' && key !== 'element') {\n node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n }\n }\n node.setAttribute('name', param.signal);\n node.value = value;\n el.appendChild(node);\n node.addEventListener('input', () => bind.update(node.value));\n bind.elements = [node];\n bind.set = value => node.value = value;\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n const attr = {\n type: 'checkbox',\n name: param.signal\n };\n if (value) attr.checked = true;\n const node = element('input', attr);\n el.appendChild(node);\n node.addEventListener('change', () => bind.update(node.checked));\n bind.elements = [node];\n bind.set = value => node.checked = !!value || null;\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n const node = element('select', {\n name: param.signal\n }),\n labels = param.labels || [];\n param.options.forEach((option, i) => {\n const attr = {\n value: option\n };\n if (valuesEqual(option, value)) attr.selected = true;\n node.appendChild(element('option', attr, (labels[i] || option) + ''));\n });\n el.appendChild(node);\n node.addEventListener('change', () => {\n bind.update(param.options[node.selectedIndex]);\n });\n bind.elements = [node];\n bind.set = value => {\n for (let i = 0, n = param.options.length; i < n; ++i) {\n if (valuesEqual(param.options[i], value)) {\n node.selectedIndex = i;\n return;\n }\n }\n };\n}\n\n/**\n * Generates a radio button group.\n */\nfunction radio(bind, el, param, value) {\n const group = element('span', {\n 'class': RadioClass\n }),\n labels = param.labels || [];\n el.appendChild(group);\n bind.elements = param.options.map((option, i) => {\n const attr = {\n type: 'radio',\n name: param.signal,\n value: option\n };\n if (valuesEqual(option, value)) attr.checked = true;\n const input = element('input', attr);\n input.addEventListener('change', () => bind.update(option));\n const label = element('label', {}, (labels[i] || option) + '');\n label.prepend(input);\n group.appendChild(label);\n return input;\n });\n bind.set = value => {\n const nodes = bind.elements,\n n = nodes.length;\n for (let i = 0; i < n; ++i) {\n if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n }\n };\n}\n\n/**\n * Generates a slider input element.\n */\nfunction range$2(bind, el, param, value) {\n value = value !== undefined ? value : (+param.max + +param.min) / 2;\n const max = param.max != null ? param.max : Math.max(100, +value) || 100,\n min = param.min || Math.min(0, max, +value) || 0,\n step = param.step || tickStep(min, max, 100);\n const node = element('input', {\n type: 'range',\n name: param.signal,\n min: min,\n max: max,\n step: step\n });\n node.value = value;\n const span = element('span', {}, +value);\n el.appendChild(node);\n el.appendChild(span);\n const update = () => {\n span.textContent = node.value;\n bind.update(+node.value);\n };\n\n // subscribe to both input and change\n node.addEventListener('input', update);\n node.addEventListener('change', update);\n bind.elements = [node];\n bind.set = value => {\n node.value = value;\n span.textContent = value;\n };\n}\nfunction valuesEqual(a, b) {\n return a === b || a + '' === b + '';\n}\nfunction initializeRenderer(view, r, el, constructor, scaleFactor, opt) {\n r = r || new constructor(view.loader());\n return r.initialize(el, width(view), height(view), offset(view), scaleFactor, opt).background(view.background());\n}\nfunction trap(view, fn) {\n return !fn ? null : function () {\n try {\n fn.apply(this, arguments);\n } catch (error) {\n view.error(error);\n }\n };\n}\nfunction initializeHandler(view, prevHandler, el, constructor) {\n // instantiate scenegraph handler\n const handler = new constructor(view.loader(), trap(view, view.tooltip())).scene(view.scenegraph().root).initialize(el, offset(view), view);\n\n // transfer event handlers\n if (prevHandler) {\n prevHandler.handlers().forEach(h => {\n handler.on(h.type, h.handler);\n });\n }\n return handler;\n}\nfunction initialize(el, elBind) {\n const view = this,\n type = view._renderType,\n config = view._eventConfig.bind,\n module = renderModule(type);\n\n // containing dom element\n el = view._el = el ? lookup$1(view, el, true) : null;\n\n // initialize aria attributes\n initializeAria(view);\n\n // select appropriate renderer & handler\n if (!module) view.error('Unrecognized renderer type: ' + type);\n const Handler = module.handler || CanvasHandler,\n Renderer = el ? module.renderer : module.headless;\n\n // initialize renderer and input handler\n view._renderer = !Renderer ? null : initializeRenderer(view, view._renderer, el, Renderer);\n view._handler = initializeHandler(view, view._handler, el, Handler);\n view._redraw = true;\n\n // initialize signal bindings\n if (el && config !== 'none') {\n elBind = elBind ? view._elBind = lookup$1(view, elBind, true) : el.appendChild(element('form', {\n 'class': 'vega-bindings'\n }));\n view._bind.forEach(_ => {\n if (_.param.element && config !== 'container') {\n _.element = lookup$1(view, _.param.element, !!_.param.input);\n }\n });\n view._bind.forEach(_ => {\n bind(view, _.element || elBind, _);\n });\n }\n return view;\n}\nfunction lookup$1(view, el, clear) {\n if (typeof el === 'string') {\n if (typeof document !== 'undefined') {\n el = document.querySelector(el);\n if (!el) {\n view.error('Signal bind element not found: ' + el);\n return null;\n }\n } else {\n view.error('DOM document instance not found.');\n return null;\n }\n }\n if (el && clear) {\n try {\n el.textContent = '';\n } catch (e) {\n el = null;\n view.error(e);\n }\n }\n return el;\n}\nconst number$1 = _ => +_ || 0;\nconst paddingObject$1 = _ => ({\n top: _,\n bottom: _,\n left: _,\n right: _\n});\nfunction padding$1(_) {\n return isObject(_) ? {\n top: number$1(_.top),\n bottom: number$1(_.bottom),\n left: number$1(_.left),\n right: number$1(_.right)\n } : paddingObject$1(number$1(_));\n}\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\nasync function renderHeadless(view, type, scaleFactor, opt) {\n const module = renderModule(type),\n ctr = module && module.headless;\n if (!ctr) error('Unrecognized renderer type: ' + type);\n await view.runAsync();\n return initializeRenderer(view, null, null, ctr, scaleFactor, opt).renderAsync(view._scenegraph.root);\n}\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n * The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nasync function renderToImageURL(type, scaleFactor) {\n if (type !== RenderType.Canvas && type !== RenderType.SVG && type !== RenderType.PNG) {\n error('Unrecognized image type: ' + type);\n }\n const r = await renderHeadless(this, type, scaleFactor);\n return type === RenderType.SVG ? toBlobURL(r.svg(), 'image/svg+xml') : r.canvas().toDataURL('image/png');\n}\nfunction toBlobURL(data, mime) {\n const blob = new Blob([data], {\n type: mime\n });\n return window.URL.createObjectURL(blob);\n}\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nasync function renderToCanvas(scaleFactor, opt) {\n const r = await renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n return r.canvas();\n}\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nasync function renderToSVG(scaleFactor) {\n const r = await renderHeadless(this, RenderType.SVG, scaleFactor);\n return r.svg();\n}\nfunction runtime(view, spec, expr) {\n return context(view, transforms, functionContext, expr).parse(spec);\n}\nfunction scale$1(name) {\n var scales = this._runtime.scales;\n if (!has$1(scales, name)) {\n error('Unrecognized scale or projection: ' + name);\n }\n return scales[name].value;\n}\nvar Width = 'width',\n Height = 'height',\n Padding = 'padding',\n Skip$1 = {\n skip: true\n };\nfunction viewWidth(view, width) {\n var a = view.autosize(),\n p = view.padding();\n return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\nfunction viewHeight(view, height) {\n var a = view.autosize(),\n p = view.padding();\n return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\nfunction initializeResize(view) {\n var s = view._signals,\n w = s[Width],\n h = s[Height],\n p = s[Padding];\n function resetSize() {\n view._autosize = view._resize = 1;\n }\n\n // respond to width signal\n view._resizeWidth = view.add(null, _ => {\n view._width = _.size;\n view._viewWidth = viewWidth(view, _.size);\n resetSize();\n }, {\n size: w\n });\n\n // respond to height signal\n view._resizeHeight = view.add(null, _ => {\n view._height = _.size;\n view._viewHeight = viewHeight(view, _.size);\n resetSize();\n }, {\n size: h\n });\n\n // respond to padding signal\n const resizePadding = view.add(null, resetSize, {\n pad: p\n });\n\n // set rank to run immediately after source signal\n view._resizeWidth.rank = w.rank + 1;\n view._resizeHeight.rank = h.rank + 1;\n resizePadding.rank = p.rank + 1;\n}\nfunction resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n this.runAfter(view => {\n let rerun = 0;\n\n // reset autosize flag\n view._autosize = 0;\n\n // width value changed: update signal, skip resize op\n if (view.width() !== width) {\n rerun = 1;\n view.signal(Width, width, Skip$1); // set width, skip update calc\n view._resizeWidth.skip(true); // skip width resize handler\n }\n\n // height value changed: update signal, skip resize op\n if (view.height() !== height) {\n rerun = 1;\n view.signal(Height, height, Skip$1); // set height, skip update calc\n view._resizeHeight.skip(true); // skip height resize handler\n }\n\n // view width changed: update view property, set resize flag\n if (view._viewWidth !== viewWidth) {\n view._resize = 1;\n view._viewWidth = viewWidth;\n }\n\n // view height changed: update view property, set resize flag\n if (view._viewHeight !== viewHeight) {\n view._resize = 1;\n view._viewHeight = viewHeight;\n }\n\n // origin changed: update view property, set resize flag\n if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n view._resize = 1;\n view._origin = origin;\n }\n\n // run dataflow on width/height signal change\n if (rerun) view.run('enter');\n if (auto) view.runAfter(v => v.resize());\n }, false, 1);\n}\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n * If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n * predicate function for testing if a signal should be included in the\n * exported state. If unspecified, all signals will be included, except for\n * those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n * predicate function for testing if a data set's input should be included\n * in the exported state. If unspecified, all data sets that have been\n * explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n * state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\nfunction getState(options) {\n return this._runtime.getState(options || {\n data: dataTest,\n signals: signalTest,\n recurse: true\n });\n}\nfunction dataTest(name, data) {\n return data.modified && isArray(data.input.value) && name.indexOf('_:vega:_');\n}\nfunction signalTest(name, op) {\n return !(name === 'parent' || op instanceof transforms.proxy);\n}\n\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n * data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\nfunction setState(state) {\n this.runAsync(null, v => {\n v._trigger = false;\n v._runtime.setState(state);\n }, v => {\n v._trigger = true;\n });\n return this;\n}\nfunction timer(callback, delay) {\n function tick(elapsed) {\n callback({\n timestamp: Date.now(),\n elapsed: elapsed\n });\n }\n this._timers.push(interval$1(tick, delay));\n}\nfunction defaultTooltip(handler, event, item, value) {\n const el = handler.element();\n if (el) el.setAttribute('title', formatTooltip(value));\n}\nfunction formatTooltip(value) {\n return value == null ? '' : isArray(value) ? formatArray(value) : isObject(value) && !isDate$1(value) ? formatObject(value) : value + '';\n}\nfunction formatObject(obj) {\n return Object.keys(obj).map(key => {\n const v = obj[key];\n return key + ': ' + (isArray(v) ? formatArray(v) : formatValue$1(v));\n }).join('\\n');\n}\nfunction formatArray(value) {\n return '[' + value.map(formatValue$1).join(', ') + ']';\n}\nfunction formatValue$1(value) {\n return isArray(value) ? '[\\u2026]' : isObject(value) && !isDate$1(value) ? '{\\u2026}' : value;\n}\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be performed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\nfunction View$1(spec, options) {\n const view = this;\n options = options || {};\n Dataflow.call(view);\n if (options.loader) view.loader(options.loader);\n if (options.logger) view.logger(options.logger);\n if (options.logLevel != null) view.logLevel(options.logLevel);\n if (options.locale || spec.locale) {\n const loc = extend$1({}, spec.locale, options.locale);\n view.locale(locale(loc.number, loc.time));\n }\n view._el = null;\n view._elBind = null;\n view._renderType = options.renderer || RenderType.Canvas;\n view._scenegraph = new Scenegraph();\n const root = view._scenegraph.root;\n\n // initialize renderer, handler and event management\n view._renderer = null;\n view._tooltip = options.tooltip || defaultTooltip, view._redraw = true;\n view._handler = new CanvasHandler().scene(root);\n view._globalCursor = false;\n view._preventDefault = false;\n view._timers = [];\n view._eventListeners = [];\n view._resizeListeners = [];\n\n // initialize event configuration\n view._eventConfig = initializeEventConfig(spec.eventConfig);\n view.globalCursor(view._eventConfig.globalCursor);\n\n // initialize dataflow graph\n const ctx = runtime(view, spec, options.expr);\n view._runtime = ctx;\n view._signals = ctx.signals;\n view._bind = (spec.bindings || []).map(_ => ({\n state: null,\n param: extend$1({}, _)\n }));\n\n // initialize scenegraph\n if (ctx.root) ctx.root.set(root);\n root.source = ctx.data.root.input;\n view.pulse(ctx.data.root.input, view.changeset().insert(root.items));\n\n // initialize view size\n view._width = view.width();\n view._height = view.height();\n view._viewWidth = viewWidth(view, view._width);\n view._viewHeight = viewHeight(view, view._height);\n view._origin = [0, 0];\n view._resize = 0;\n view._autosize = 1;\n initializeResize(view);\n\n // initialize background color\n background(view);\n\n // initialize cursor\n cursor$1(view);\n\n // initialize view description\n view.description(spec.description);\n\n // initialize hover proessing, if requested\n if (options.hover) view.hover();\n\n // initialize DOM container(s) and renderer\n if (options.container) view.initialize(options.container, options.bind);\n}\nfunction lookupSignal(view, name) {\n return has$1(view._signals, name) ? view._signals[name] : error('Unrecognized signal name: ' + $(name));\n}\nfunction findOperatorHandler(op, handler) {\n const h = (op._targets || []).filter(op => op._update && op._update.handler === handler);\n return h.length ? h[0] : null;\n}\nfunction addOperatorListener(view, name, op, handler) {\n let h = findOperatorHandler(op, handler);\n if (!h) {\n h = trap(view, () => handler(name, op.value));\n h.handler = handler;\n view.on(op, null, h);\n }\n return view;\n}\nfunction removeOperatorListener(view, op, handler) {\n const h = findOperatorHandler(op, handler);\n if (h) op._targets.remove(h);\n return view;\n}\ninherits(View$1, Dataflow, {\n // -- DATAFLOW / RENDERING ----\n\n async evaluate(encode, prerun, postrun) {\n // evaluate dataflow and prerun\n await Dataflow.prototype.evaluate.call(this, encode, prerun);\n\n // render as needed\n if (this._redraw || this._resize) {\n try {\n if (this._renderer) {\n if (this._resize) {\n this._resize = 0;\n resizeRenderer(this);\n }\n await this._renderer.renderAsync(this._scenegraph.root);\n }\n this._redraw = false;\n } catch (e) {\n this.error(e);\n }\n }\n\n // evaluate postrun\n if (postrun) asyncCallback(this, postrun);\n return this;\n },\n dirty(item) {\n this._redraw = true;\n this._renderer && this._renderer.dirty(item);\n },\n // -- GET / SET ----\n\n description(text) {\n if (arguments.length) {\n const desc = text != null ? text + '' : null;\n if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);\n return this;\n }\n return this._desc;\n },\n container() {\n return this._el;\n },\n scenegraph() {\n return this._scenegraph;\n },\n origin() {\n return this._origin.slice();\n },\n signal(name, value, options) {\n const op = lookupSignal(this, name);\n return arguments.length === 1 ? op.value : this.update(op, value, options);\n },\n width(_) {\n return arguments.length ? this.signal('width', _) : this.signal('width');\n },\n height(_) {\n return arguments.length ? this.signal('height', _) : this.signal('height');\n },\n padding(_) {\n return arguments.length ? this.signal('padding', padding$1(_)) : padding$1(this.signal('padding'));\n },\n autosize(_) {\n return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n },\n background(_) {\n return arguments.length ? this.signal('background', _) : this.signal('background');\n },\n renderer(type) {\n if (!arguments.length) return this._renderType;\n if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n if (type !== this._renderType) {\n this._renderType = type;\n this._resetRenderer();\n }\n return this;\n },\n tooltip(handler) {\n if (!arguments.length) return this._tooltip;\n if (handler !== this._tooltip) {\n this._tooltip = handler;\n this._resetRenderer();\n }\n return this;\n },\n loader(loader) {\n if (!arguments.length) return this._loader;\n if (loader !== this._loader) {\n Dataflow.prototype.loader.call(this, loader);\n this._resetRenderer();\n }\n return this;\n },\n resize() {\n // set flag to perform autosize\n this._autosize = 1;\n // touch autosize signal to ensure top-level ViewLayout runs\n return this.touch(lookupSignal(this, 'autosize'));\n },\n _resetRenderer() {\n if (this._renderer) {\n this._renderer = null;\n this.initialize(this._el, this._elBind);\n }\n },\n // -- SIZING ----\n _resizeView: resizeView,\n // -- EVENT HANDLING ----\n\n addEventListener(type, handler, options) {\n let callback = handler;\n if (!(options && options.trap === false)) {\n // wrap callback in error handler\n callback = trap(this, handler);\n callback.raw = handler;\n }\n this._handler.on(type, callback);\n return this;\n },\n removeEventListener(type, handler) {\n var handlers = this._handler.handlers(type),\n i = handlers.length,\n h,\n t;\n\n // search registered handlers, remove if match found\n while (--i >= 0) {\n t = handlers[i].type;\n h = handlers[i].handler;\n if (type === t && (handler === h || handler === h.raw)) {\n this._handler.off(t, h);\n break;\n }\n }\n return this;\n },\n addResizeListener(handler) {\n const l = this._resizeListeners;\n if (l.indexOf(handler) < 0) {\n // add handler if it isn't already registered\n // note: error trapping handled elsewhere, so\n // no need to wrap handlers here\n l.push(handler);\n }\n return this;\n },\n removeResizeListener(handler) {\n var l = this._resizeListeners,\n i = l.indexOf(handler);\n if (i >= 0) {\n l.splice(i, 1);\n }\n return this;\n },\n addSignalListener(name, handler) {\n return addOperatorListener(this, name, lookupSignal(this, name), handler);\n },\n removeSignalListener(name, handler) {\n return removeOperatorListener(this, lookupSignal(this, name), handler);\n },\n addDataListener(name, handler) {\n return addOperatorListener(this, name, dataref(this, name).values, handler);\n },\n removeDataListener(name, handler) {\n return removeOperatorListener(this, dataref(this, name).values, handler);\n },\n globalCursor(_) {\n if (arguments.length) {\n if (this._globalCursor !== !!_) {\n const prev = setCursor(this, null); // clear previous cursor\n this._globalCursor = !!_;\n if (prev) setCursor(this, prev); // swap cursor\n }\n\n return this;\n } else {\n return this._globalCursor;\n }\n },\n preventDefault(_) {\n if (arguments.length) {\n this._preventDefault = _;\n return this;\n } else {\n return this._preventDefault;\n }\n },\n timer,\n events,\n finalize,\n hover,\n // -- DATA ----\n data,\n change,\n insert: insert$1,\n remove,\n // -- SCALES --\n scale: scale$1,\n // -- INITIALIZATION ----\n initialize,\n // -- HEADLESS RENDERING ----\n toImageURL: renderToImageURL,\n toCanvas: renderToCanvas,\n toSVG: renderToSVG,\n // -- SAVE / RESTORE STATE ----\n getState,\n setState\n});\nconst VIEW = 'view',\n LBRACK = '[',\n RBRACK = ']',\n LBRACE = '{',\n RBRACE = '}',\n COLON = ':',\n COMMA = ',',\n NAME = '@',\n GT = '>',\n ILLEGAL = /[[\\]{}]/,\n DEFAULT_MARKS = {\n '*': 1,\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n };\nlet DEFAULT_SOURCE, MARKS;\n\n/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\nfunction eventSelector(selector, source, marks) {\n DEFAULT_SOURCE = source || VIEW;\n MARKS = marks || DEFAULT_MARKS;\n return parseMerge(selector.trim()).map(parseSelector);\n}\nfunction isMarkType(type) {\n return MARKS[type];\n}\nfunction find(s, i, endChar, pushChar, popChar) {\n const n = s.length;\n let count = 0,\n c;\n for (; i < n; ++i) {\n c = s[i];\n if (!count && c === endChar) return i;else if (popChar && popChar.indexOf(c) >= 0) --count;else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n }\n return i;\n}\nfunction parseMerge(s) {\n const output = [],\n n = s.length;\n let start = 0,\n i = 0;\n while (i < n) {\n i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n output.push(s.substring(start, i).trim());\n start = ++i;\n }\n if (output.length === 0) {\n throw 'Empty event selector: ' + s;\n }\n return output;\n}\nfunction parseSelector(s) {\n return s[0] === '[' ? parseBetween(s) : parseStream$1(s);\n}\nfunction parseBetween(s) {\n const n = s.length;\n let i = 1,\n b;\n i = find(s, i, RBRACK, LBRACK, RBRACK);\n if (i === n) {\n throw 'Empty between selector: ' + s;\n }\n b = parseMerge(s.substring(1, i));\n if (b.length !== 2) {\n throw 'Between selector must have two elements: ' + s;\n }\n s = s.slice(i + 1).trim();\n if (s[0] !== GT) {\n throw 'Expected \\'>\\' after between selector: ' + s;\n }\n b = b.map(parseSelector);\n const stream = parseSelector(s.slice(1).trim());\n if (stream.between) {\n return {\n between: b,\n stream: stream\n };\n } else {\n stream.between = b;\n }\n return stream;\n}\nfunction parseStream$1(s) {\n const stream = {\n source: DEFAULT_SOURCE\n },\n source = [];\n let throttle = [0, 0],\n markname = 0,\n start = 0,\n n = s.length,\n i = 0,\n j,\n filter;\n\n // extract throttle from end\n if (s[n - 1] === RBRACE) {\n i = s.lastIndexOf(LBRACE);\n if (i >= 0) {\n try {\n throttle = parseThrottle(s.substring(i + 1, n - 1));\n } catch (e) {\n throw 'Invalid throttle specification: ' + s;\n }\n s = s.slice(0, i).trim();\n n = s.length;\n } else throw 'Unmatched right brace: ' + s;\n i = 0;\n }\n if (!n) throw s;\n\n // set name flag based on first char\n if (s[0] === NAME) markname = ++i;\n\n // extract first part of multi-part stream selector\n j = find(s, i, COLON);\n if (j < n) {\n source.push(s.substring(start, j).trim());\n start = i = ++j;\n }\n\n // extract remaining part of stream selector\n i = find(s, i, LBRACK);\n if (i === n) {\n source.push(s.substring(start, n).trim());\n } else {\n source.push(s.substring(start, i).trim());\n filter = [];\n start = ++i;\n if (start === n) throw 'Unmatched left bracket: ' + s;\n }\n\n // extract filters\n while (i < n) {\n i = find(s, i, RBRACK);\n if (i === n) throw 'Unmatched left bracket: ' + s;\n filter.push(s.substring(start, i).trim());\n if (i < n - 1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n start = ++i;\n }\n\n // marshall event stream specification\n if (!(n = source.length) || ILLEGAL.test(source[n - 1])) {\n throw 'Invalid event selector: ' + s;\n }\n if (n > 1) {\n stream.type = source[1];\n if (markname) {\n stream.markname = source[0].slice(1);\n } else if (isMarkType(source[0])) {\n stream.marktype = source[0];\n } else {\n stream.source = source[0];\n }\n } else {\n stream.type = source[0];\n }\n if (stream.type.slice(-1) === '!') {\n stream.consume = true;\n stream.type = stream.type.slice(0, -1);\n }\n if (filter != null) stream.filter = filter;\n if (throttle[0]) stream.throttle = throttle[0];\n if (throttle[1]) stream.debounce = throttle[1];\n return stream;\n}\nfunction parseThrottle(s) {\n const a = s.split(COMMA);\n if (!s.length || a.length > 2) throw s;\n return a.map(_ => {\n const x = +_;\n if (x !== x) throw s;\n return x;\n });\n}\nfunction parseAutosize(spec) {\n return isObject(spec) ? spec : {\n type: spec || 'pad'\n };\n}\nconst number = _ => +_ || 0;\nconst paddingObject = _ => ({\n top: _,\n bottom: _,\n left: _,\n right: _\n});\nfunction parsePadding(spec) {\n return !isObject(spec) ? paddingObject(number(spec)) : spec.signal ? spec : {\n top: number(spec.top),\n bottom: number(spec.bottom),\n left: number(spec.left),\n right: number(spec.right)\n };\n}\nconst encoder = _ => isObject(_) && !isArray(_) ? extend$1({}, _) : {\n value: _\n};\nfunction addEncode(object, name, value, set) {\n if (value != null) {\n const isEncoder = isObject(value) && !isArray(value) || isArray(value) && value.length && isObject(value[0]);\n\n // Always assign signal to update, even if the signal is from the enter block\n if (isEncoder) {\n object.update[name] = value;\n } else {\n object[set || 'enter'][name] = {\n value: value\n };\n }\n return 1;\n } else {\n return 0;\n }\n}\nfunction addEncoders(object, enter, update) {\n for (const name in enter) {\n addEncode(object, name, enter[name]);\n }\n for (const name in update) {\n addEncode(object, name, update[name], 'update');\n }\n}\nfunction extendEncode(encode, extra, skip) {\n for (const name in extra) {\n if (skip && has$1(skip, name)) continue;\n encode[name] = extend$1(encode[name] || {}, extra[name]);\n }\n return encode;\n}\nfunction has(key, encode) {\n return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]);\n}\nconst MarkRole = 'mark';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst AxisRole = 'axis';\nconst AxisDomainRole = 'axis-domain';\nconst AxisGridRole = 'axis-grid';\nconst AxisLabelRole = 'axis-label';\nconst AxisTickRole = 'axis-tick';\nconst AxisTitleRole = 'axis-title';\nconst LegendRole = 'legend';\nconst LegendBandRole = 'legend-band';\nconst LegendEntryRole = 'legend-entry';\nconst LegendGradientRole = 'legend-gradient';\nconst LegendLabelRole = 'legend-label';\nconst LegendSymbolRole = 'legend-symbol';\nconst LegendTitleRole = 'legend-title';\nconst TitleRole = 'title';\nconst TitleTextRole = 'title-text';\nconst TitleSubtitleRole = 'title-subtitle';\nfunction applyDefaults(encode, type, role, style, config) {\n const defaults = {},\n enter = {};\n let update, key, skip, props;\n\n // if text mark, apply global lineBreak settings (#2370)\n key = 'lineBreak';\n if (type === 'text' && config[key] != null && !has(key, encode)) {\n applyDefault(defaults, key, config[key]);\n }\n\n // ignore legend and axis roles\n if (role == 'legend' || String(role).startsWith('axis')) {\n role = null;\n }\n\n // resolve mark config\n props = role === FrameRole ? config.group : role === MarkRole ? extend$1({}, config.mark, config[type]) : null;\n for (key in props) {\n // do not apply defaults if relevant fields are defined\n skip = has(key, encode) || (key === 'fill' || key === 'stroke') && (has('fill', encode) || has('stroke', encode));\n if (!skip) applyDefault(defaults, key, props[key]);\n }\n\n // resolve styles, apply with increasing precedence\n array$5(style).forEach(name => {\n const props = config.style && config.style[name];\n for (const key in props) {\n if (!has(key, encode)) {\n applyDefault(defaults, key, props[key]);\n }\n }\n });\n encode = extend$1({}, encode); // defensive copy\n for (key in defaults) {\n props = defaults[key];\n if (props.signal) {\n (update = update || {})[key] = props;\n } else {\n enter[key] = props;\n }\n }\n encode.enter = extend$1(enter, encode.enter);\n if (update) encode.update = extend$1(update, encode.update);\n return encode;\n}\nfunction applyDefault(defaults, key, value) {\n defaults[key] = value && value.signal ? {\n signal: value.signal\n } : {\n value: value\n };\n}\nconst scaleRef = scale => isString(scale) ? $(scale) : scale.signal ? \"(\".concat(scale.signal, \")\") : field(scale);\nfunction entry$1(enc) {\n if (enc.gradient != null) {\n return gradient$1(enc);\n }\n let value = enc.signal ? \"(\".concat(enc.signal, \")\") : enc.color ? color$1(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? $(enc.value) : undefined;\n if (enc.scale != null) {\n value = scale(enc, value);\n }\n if (value === undefined) {\n value = null;\n }\n if (enc.exponent != null) {\n value = \"pow(\".concat(value, \",\").concat(property(enc.exponent), \")\");\n }\n if (enc.mult != null) {\n value += \"*\".concat(property(enc.mult));\n }\n if (enc.offset != null) {\n value += \"+\".concat(property(enc.offset));\n }\n if (enc.round) {\n value = \"round(\".concat(value, \")\");\n }\n return value;\n}\nconst _color = (type, x, y, z) => \"(\".concat(type, \"(\").concat([x, y, z].map(entry$1).join(','), \")+'')\");\nfunction color$1(enc) {\n return enc.c ? _color('hcl', enc.h, enc.c, enc.l) : enc.h || enc.s ? _color('hsl', enc.h, enc.s, enc.l) : enc.l || enc.a ? _color('lab', enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color('rgb', enc.r, enc.g, enc.b) : null;\n}\nfunction gradient$1(enc) {\n // map undefined to null; expression lang does not allow undefined\n const args = [enc.start, enc.stop, enc.count].map(_ => _ == null ? null : $(_));\n\n // trim null inputs from the end\n while (args.length && peek$1(args) == null) args.pop();\n args.unshift(scaleRef(enc.gradient));\n return \"gradient(\".concat(args.join(','), \")\");\n}\nfunction property(property) {\n return isObject(property) ? '(' + entry$1(property) + ')' : property;\n}\nfunction field(ref) {\n return resolveField(isObject(ref) ? ref : {\n datum: ref\n });\n}\nfunction resolveField(ref) {\n let object, level, field;\n if (ref.signal) {\n object = 'datum';\n field = ref.signal;\n } else if (ref.group || ref.parent) {\n level = Math.max(1, ref.level || 1);\n object = 'item';\n while (level-- > 0) {\n object += '.mark.group';\n }\n if (ref.parent) {\n field = ref.parent;\n object += '.datum';\n } else {\n field = ref.group;\n }\n } else if (ref.datum) {\n object = 'datum';\n field = ref.datum;\n } else {\n error('Invalid field reference: ' + $(ref));\n }\n if (!ref.signal) {\n field = isString(field) ? splitAccessPath(field).map($).join('][') : resolveField(field);\n }\n return object + '[' + field + ']';\n}\nfunction scale(enc, value) {\n const scale = scaleRef(enc.scale);\n if (enc.range != null) {\n // pull value from scale range\n value = \"lerp(_range(\".concat(scale, \"), \").concat(+enc.range, \")\");\n } else {\n // run value through scale and/or pull scale bandwidth\n if (value !== undefined) value = \"_scale(\".concat(scale, \", \").concat(value, \")\");\n if (enc.band) {\n value = (value ? value + '+' : '') + \"_bandwidth(\".concat(scale, \")\") + (+enc.band === 1 ? '' : '*' + property(enc.band));\n if (enc.extra) {\n // include logic to handle extraneous elements\n value = \"(datum.extra ? _scale(\".concat(scale, \", datum.extra.value) : \").concat(value, \")\");\n }\n }\n if (value == null) value = '0';\n }\n return value;\n}\nfunction rule$1(enc) {\n let code = '';\n enc.forEach(rule => {\n const value = entry$1(rule);\n code += rule.test ? \"(\".concat(rule.test, \")?\").concat(value, \":\") : value;\n });\n\n // if no else clause, terminate with null (#1366)\n if (peek$1(code) === ':') {\n code += 'null';\n }\n return code;\n}\nfunction parseEncode(encode, type, role, style, scope, params) {\n const enc = {};\n params = params || {};\n params.encoders = {\n $encode: enc\n };\n encode = applyDefaults(encode, type, role, style, scope.config);\n for (const key in encode) {\n enc[key] = parseBlock(encode[key], type, params, scope);\n }\n return params;\n}\nfunction parseBlock(block, marktype, params, scope) {\n const channels = {},\n fields = {};\n for (const name in block) {\n if (block[name] != null) {\n // skip any null entries\n channels[name] = parse$1(expr(block[name]), scope, params, fields);\n }\n }\n return {\n $expr: {\n marktype,\n channels\n },\n $fields: Object.keys(fields),\n $output: Object.keys(block)\n };\n}\nfunction expr(enc) {\n return isArray(enc) ? rule$1(enc) : entry$1(enc);\n}\nfunction parse$1(code, scope, params, fields) {\n const expr = parser(code, scope);\n expr.$fields.forEach(name => fields[name] = 1);\n extend$1(params, expr.$params);\n return expr.$expr;\n}\nconst OUTER = 'outer',\n OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\nfunction outerError(prefix, name) {\n error(prefix + ' for \"outer\" push: ' + $(name));\n}\nfunction parseSignal(signal, scope) {\n const name = signal.name;\n if (signal.push === OUTER) {\n // signal must already be defined, raise error if not\n if (!scope.signals[name]) outerError('No prior signal definition', name);\n // signal push must not use properties reserved for standard definition\n OUTER_INVALID.forEach(prop => {\n if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n });\n } else {\n // define a new signal in the current scope\n const op = scope.addSignal(name, signal.value);\n if (signal.react === false) op.react = false;\n if (signal.bind) scope.addBinding(name, signal.bind);\n }\n}\nfunction Entry$1(type, value, params, parent) {\n this.id = -1;\n this.type = type;\n this.value = value;\n this.params = params;\n if (parent) this.parent = parent;\n}\nfunction entry(type, value, params, parent) {\n return new Entry$1(type, value, params, parent);\n}\nfunction operator(value, params) {\n return entry('operator', value, params);\n}\n\n// -----\n\nfunction ref(op) {\n const ref = {\n $ref: op.id\n };\n // if operator not yet registered, cache ref to resolve later\n if (op.id < 0) (op.refs = op.refs || []).push(ref);\n return ref;\n}\nfunction fieldRef$1(field, name) {\n return name ? {\n $field: field,\n $name: name\n } : {\n $field: field\n };\n}\nconst keyFieldRef = fieldRef$1('key');\nfunction compareRef(fields, orders) {\n return {\n $compare: fields,\n $order: orders\n };\n}\nfunction keyRef(fields, flat) {\n const ref = {\n $key: fields\n };\n if (flat) ref.$flat = true;\n return ref;\n}\n\n// -----\n\nconst Ascending = 'ascending';\nconst Descending = 'descending';\nfunction sortKey(sort) {\n return !isObject(sort) ? '' : (sort.order === Descending ? '-' : '+') + aggrField(sort.op, sort.field);\n}\nfunction aggrField(op, field) {\n return (op && op.signal ? '$' + op.signal : op || '') + (op && field ? '_' : '') + (field && field.signal ? '$' + field.signal : field || '');\n}\n\n// -----\n\nconst Scope$1 = 'scope';\nconst View = 'view';\nfunction isSignal(_) {\n return _ && _.signal;\n}\nfunction isExpr$1(_) {\n return _ && _.expr;\n}\nfunction hasSignal(_) {\n if (isSignal(_)) return true;\n if (isObject(_)) for (const key in _) {\n if (hasSignal(_[key])) return true;\n }\n return false;\n}\nfunction value(specValue, defaultValue) {\n return specValue != null ? specValue : defaultValue;\n}\nfunction deref(v) {\n return v && v.signal || v;\n}\nconst Timer = 'timer';\nfunction parseStream(stream, scope) {\n const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : error('Invalid stream specification: ' + $(stream));\n return method(stream, scope);\n}\nfunction eventSource(source) {\n return source === Scope$1 ? View : source || View;\n}\nfunction mergeStream(stream, scope) {\n const list = stream.merge.map(s => parseStream(s, scope)),\n entry = streamParameters({\n merge: list\n }, stream, scope);\n return scope.addStream(entry).id;\n}\nfunction nestedStream(stream, scope) {\n const id = parseStream(stream.stream, scope),\n entry = streamParameters({\n stream: id\n }, stream, scope);\n return scope.addStream(entry).id;\n}\nfunction eventStream(stream, scope) {\n let id;\n if (stream.type === Timer) {\n id = scope.event(Timer, stream.throttle);\n stream = {\n between: stream.between,\n filter: stream.filter\n };\n } else {\n id = scope.event(eventSource(stream.source), stream.type);\n }\n const entry = streamParameters({\n stream: id\n }, stream, scope);\n return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id;\n}\nfunction streamParameters(entry, stream, scope) {\n let param = stream.between;\n if (param) {\n if (param.length !== 2) {\n error('Stream \"between\" parameter must have 2 entries: ' + $(stream));\n }\n entry.between = [parseStream(param[0], scope), parseStream(param[1], scope)];\n }\n param = stream.filter ? [].concat(stream.filter) : [];\n if (stream.marktype || stream.markname || stream.markrole) {\n // add filter for mark type, name and/or role\n param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n }\n if (stream.source === Scope$1) {\n // add filter to limit events from sub-scope only\n param.push('inScope(event.item)');\n }\n if (param.length) {\n entry.filter = parser('(' + param.join(')&&(') + ')', scope).$expr;\n }\n if ((param = stream.throttle) != null) {\n entry.throttle = +param;\n }\n if ((param = stream.debounce) != null) {\n entry.debounce = +param;\n }\n if (stream.consume) {\n entry.consume = true;\n }\n return entry;\n}\nfunction filterMark(type, name, role) {\n const item = 'event.item';\n return item + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '') + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '') + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n\n// bypass expression parser for internal operator references\nconst OP_VALUE_EXPR = {\n code: '_.$value',\n ast: {\n type: 'Identifier',\n value: 'value'\n }\n};\nfunction parseUpdate(spec, scope, target) {\n const encode = spec.encode,\n entry = {\n target: target\n };\n let events = spec.events,\n update = spec.update,\n sources = [];\n if (!events) {\n error('Signal update missing events specification.');\n }\n\n // interpret as an event selector string\n if (isString(events)) {\n events = eventSelector(events, scope.isSubscope() ? Scope$1 : View);\n }\n\n // separate event streams from signal updates\n events = array$5(events).filter(s => s.signal || s.scale ? (sources.push(s), 0) : 1);\n\n // merge internal operator listeners\n if (sources.length > 1) {\n sources = [mergeSources(sources)];\n }\n\n // merge event streams, include as source\n if (events.length) {\n sources.push(events.length > 1 ? {\n merge: events\n } : events[0]);\n }\n if (encode != null) {\n if (update) error('Signal encode and update are mutually exclusive.');\n update = 'encode(item(),' + $(encode) + ')';\n }\n\n // resolve update value\n entry.update = isString(update) ? parser(update, scope) : update.expr != null ? parser(update.expr, scope) : update.value != null ? update.value : update.signal != null ? {\n $expr: OP_VALUE_EXPR,\n $params: {\n $value: scope.signalRef(update.signal)\n }\n } : error('Invalid signal update specification.');\n if (spec.force) {\n entry.options = {\n force: true\n };\n }\n sources.forEach(source => scope.addUpdate(extend$1(streamSource(source, scope), entry)));\n}\nfunction streamSource(stream, scope) {\n return {\n source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope)\n };\n}\nfunction mergeSources(sources) {\n return {\n signal: '[' + sources.map(s => s.scale ? 'scale(\"' + s.scale + '\")' : s.signal) + ']'\n };\n}\nfunction parseSignalUpdates(signal, scope) {\n const op = scope.getSignal(signal.name);\n let expr = signal.update;\n if (signal.init) {\n if (expr) {\n error('Signals can not include both init and update expressions.');\n } else {\n expr = signal.init;\n op.initonly = true;\n }\n }\n if (expr) {\n expr = parser(expr, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n }\n if (signal.on) {\n signal.on.forEach(_ => parseUpdate(_, scope, op.id));\n }\n}\nconst transform = name => (params, value, parent) => entry(name, value, params || undefined, parent);\nconst Aggregate = transform('aggregate');\nconst AxisTicks = transform('axisticks');\nconst Bound = transform('bound');\nconst Collect = transform('collect');\nconst Compare = transform('compare');\nconst DataJoin = transform('datajoin');\nconst Encode = transform('encode');\nconst Expression = transform('expression');\nconst Facet = transform('facet');\nconst Field = transform('field');\nconst Key = transform('key');\nconst LegendEntries = transform('legendentries');\nconst Load = transform('load');\nconst Mark$1 = transform('mark');\nconst MultiExtent = transform('multiextent');\nconst MultiValues = transform('multivalues');\nconst Overlap = transform('overlap');\nconst Params = transform('params');\nconst PreFacet = transform('prefacet');\nconst Projection = transform('projection');\nconst Proxy = transform('proxy');\nconst Relay = transform('relay');\nconst Render = transform('render');\nconst Scale = transform('scale');\nconst Sieve = transform('sieve');\nconst SortItems = transform('sortitems');\nconst ViewLayout = transform('viewlayout');\nconst Values = transform('values');\nlet FIELD_REF_ID = 0;\nconst MULTIDOMAIN_SORT_OPS = {\n min: 'min',\n max: 'max',\n count: 'sum'\n};\nfunction initScale(spec, scope) {\n const type = spec.type || 'linear';\n if (!isValidScaleType(type)) {\n error('Unrecognized scale type: ' + $(type));\n }\n scope.addScale(spec.name, {\n type,\n domain: undefined\n });\n}\nfunction parseScale(spec, scope) {\n const params = scope.getScale(spec.name).params;\n let key;\n params.domain = parseScaleDomain$1(spec.domain, spec, scope);\n if (spec.range != null) {\n params.range = parseScaleRange$1(spec, scope, params);\n }\n if (spec.interpolate != null) {\n parseScaleInterpolate(spec.interpolate, params);\n }\n if (spec.nice != null) {\n params.nice = parseScaleNice(spec.nice);\n }\n if (spec.bins != null) {\n params.bins = parseScaleBins(spec.bins, scope);\n }\n for (key in spec) {\n if (has$1(params, key) || key === 'name') continue;\n params[key] = parseLiteral(spec[key], scope);\n }\n}\nfunction parseLiteral(v, scope) {\n return !isObject(v) ? v : v.signal ? scope.signalRef(v.signal) : error('Unsupported object: ' + $(v));\n}\nfunction parseArray(v, scope) {\n return v.signal ? scope.signalRef(v.signal) : v.map(v => parseLiteral(v, scope));\n}\nfunction dataLookupError(name) {\n error('Can not find data set: ' + $(name));\n}\n\n// -- SCALE DOMAIN ----\n\nfunction parseScaleDomain$1(domain, spec, scope) {\n if (!domain) {\n if (spec.domainMin != null || spec.domainMax != null) {\n error('No scale domain defined for domainMin/domainMax to override.');\n }\n return; // default domain\n }\n\n return domain.signal ? scope.signalRef(domain.signal) : (isArray(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope);\n}\nfunction explicitDomain(domain, spec, scope) {\n return domain.map(v => parseLiteral(v, scope));\n}\nfunction singularDomain(domain, spec, scope) {\n const data = scope.getData(domain.data);\n if (!data) dataLookupError(domain.data);\n return isDiscrete$2(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : isQuantile$1(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field);\n}\nfunction multipleDomain(domain, spec, scope) {\n const data = domain.data,\n fields = domain.fields.reduce((dom, d) => {\n d = isString(d) ? {\n data: data,\n field: d\n } : isArray(d) || d.signal ? fieldRef(d, scope) : d;\n dom.push(d);\n return dom;\n }, []);\n return (isDiscrete$2(spec.type) ? ordinalMultipleDomain : isQuantile$1(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields);\n}\nfunction fieldRef(data, scope) {\n const name = '_:vega:_' + FIELD_REF_ID++,\n coll = Collect({});\n if (isArray(data)) {\n coll.value = {\n $ingest: data\n };\n } else if (data.signal) {\n const code = 'setdata(' + $(name) + ',' + data.signal + ')';\n coll.params.input = scope.signalRef(code);\n }\n scope.addDataPipeline(name, [coll, Sieve({})]);\n return {\n data: name,\n field: 'data'\n };\n}\nfunction ordinalMultipleDomain(domain, scope, fields) {\n const sort = parseSort(domain.sort, true);\n let a, v;\n\n // get value counts for each domain field\n const counts = fields.map(f => {\n const data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.countsRef(scope, f.field, sort);\n });\n\n // aggregate the results from each domain field\n const p = {\n groupby: keyFieldRef,\n pulse: counts\n };\n if (sort) {\n a = sort.op || 'count';\n v = sort.field ? aggrField(a, sort.field) : 'count';\n p.ops = [MULTIDOMAIN_SORT_OPS[a]];\n p.fields = [scope.fieldRef(v)];\n p.as = [v];\n }\n a = scope.add(Aggregate(p));\n\n // collect aggregate output\n const c = scope.add(Collect({\n pulse: ref(a)\n }));\n\n // extract values for combined domain\n v = scope.add(Values({\n field: keyFieldRef,\n sort: scope.sortRef(sort),\n pulse: ref(c)\n }));\n return ref(v);\n}\nfunction parseSort(sort, multidomain) {\n if (sort) {\n if (!sort.field && !sort.op) {\n if (isObject(sort)) sort.field = 'key';else sort = {\n field: 'key'\n };\n } else if (!sort.field && sort.op !== 'count') {\n error('No field provided for sort aggregate op: ' + sort.op);\n } else if (multidomain && sort.field) {\n if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) {\n error('Multiple domain scales can not be sorted using ' + sort.op);\n }\n }\n }\n return sort;\n}\nfunction quantileMultipleDomain(domain, scope, fields) {\n // get value arrays for each domain field\n const values = fields.map(f => {\n const data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.domainRef(scope, f.field);\n });\n\n // combine value arrays\n return ref(scope.add(MultiValues({\n values: values\n })));\n}\nfunction numericMultipleDomain(domain, scope, fields) {\n // get extents for each domain field\n const extents = fields.map(f => {\n const data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.extentRef(scope, f.field);\n });\n\n // combine extents\n return ref(scope.add(MultiExtent({\n extents: extents\n })));\n}\n\n// -- SCALE BINS -----\n\nfunction parseScaleBins(v, scope) {\n return v.signal || isArray(v) ? parseArray(v, scope) : scope.objectProperty(v);\n}\n\n// -- SCALE NICE -----\n\nfunction parseScaleNice(nice) {\n return isObject(nice) ? {\n interval: parseLiteral(nice.interval),\n step: parseLiteral(nice.step)\n } : parseLiteral(nice);\n}\n\n// -- SCALE INTERPOLATION -----\n\nfunction parseScaleInterpolate(interpolate, params) {\n params.interpolate = parseLiteral(interpolate.type || interpolate);\n if (interpolate.gamma != null) {\n params.interpolateGamma = parseLiteral(interpolate.gamma);\n }\n}\n\n// -- SCALE RANGE -----\n\nfunction parseScaleRange$1(spec, scope, params) {\n const config = scope.config.range;\n let range = spec.range;\n if (range.signal) {\n return scope.signalRef(range.signal);\n } else if (isString(range)) {\n if (config && has$1(config, range)) {\n spec = extend$1({}, spec, {\n range: config[range]\n });\n return parseScaleRange$1(spec, scope, params);\n } else if (range === 'width') {\n range = [0, {\n signal: 'width'\n }];\n } else if (range === 'height') {\n range = isDiscrete$2(spec.type) ? [0, {\n signal: 'height'\n }] : [{\n signal: 'height'\n }, 0];\n } else {\n error('Unrecognized scale range value: ' + $(range));\n }\n } else if (range.scheme) {\n params.scheme = isArray(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope);\n if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n return;\n } else if (range.step) {\n params.rangeStep = parseLiteral(range.step, scope);\n return;\n } else if (isDiscrete$2(spec.type) && !isArray(range)) {\n return parseScaleDomain$1(range, spec, scope);\n } else if (!isArray(range)) {\n error('Unsupported range type: ' + $(range));\n }\n return range.map(v => (isArray(v) ? parseArray : parseLiteral)(v, scope));\n}\nfunction parseProjection$1(proj, scope) {\n const config = scope.config.projection || {},\n params = {};\n for (const name in proj) {\n if (name === 'name') continue;\n params[name] = parseParameter$1(proj[name], name, scope);\n }\n\n // apply projection defaults from config\n for (const name in config) {\n if (params[name] == null) {\n params[name] = parseParameter$1(config[name], name, scope);\n }\n }\n scope.addProjection(proj.name, params);\n}\nfunction parseParameter$1(_, name, scope) {\n return isArray(_) ? _.map(_ => parseParameter$1(_, name, scope)) : !isObject(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === 'fit' ? _ : error('Unsupported parameter object: ' + $(_));\n}\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst Center = 'center';\nconst Vertical = 'vertical';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst Index = 'index';\nconst Label = 'label';\nconst Offset = 'offset';\nconst Perc = 'perc';\nconst Perc2 = 'perc2';\nconst Value = 'value';\nconst GuideLabelStyle = 'guide-label';\nconst GuideTitleStyle = 'guide-title';\nconst GroupTitleStyle = 'group-title';\nconst GroupSubtitleStyle = 'group-subtitle';\nconst Symbols = 'symbol';\nconst Gradient = 'gradient';\nconst Discrete = 'discrete';\nconst Size = 'size';\nconst Shape = 'shape';\nconst Fill = 'fill';\nconst Stroke = 'stroke';\nconst StrokeWidth = 'strokeWidth';\nconst StrokeDash = 'strokeDash';\nconst Opacity = 'opacity';\n\n// Encoding channels supported by legends\n// In priority order of 'canonical' scale\nconst LegendScales = [Size, Shape, Fill, Stroke, StrokeWidth, StrokeDash, Opacity];\nconst Skip = {\n name: 1,\n style: 1,\n interactive: 1\n};\nconst zero$1 = {\n value: 0\n};\nconst one = {\n value: 1\n};\nconst GroupMark = 'group';\nconst RectMark = 'rect';\nconst RuleMark = 'rule';\nconst SymbolMark = 'symbol';\nconst TextMark = 'text';\nfunction guideGroup(mark) {\n mark.type = GroupMark;\n mark.interactive = mark.interactive || false;\n return mark;\n}\nfunction lookup(spec, config) {\n const _ = (name, dflt) => value(spec[name], value(config[name], dflt));\n _.isVertical = s => Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection));\n _.gradientLength = () => value(spec.gradientLength, config.gradientLength || config.gradientWidth);\n _.gradientThickness = () => value(spec.gradientThickness, config.gradientThickness || config.gradientHeight);\n _.entryColumns = () => value(spec.columns, value(config.columns, +_.isVertical(true)));\n return _;\n}\nfunction getEncoding(name, encode) {\n const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]);\n return v && v.signal ? v : v ? v.value : null;\n}\nfunction getStyle(name, scope, style) {\n const s = scope.config.style[style];\n return s && s[name];\n}\nfunction anchorExpr(s, e, m) {\n return \"item.anchor === '\".concat(Start, \"' ? \").concat(s, \" : item.anchor === '\").concat(End, \"' ? \").concat(e, \" : \").concat(m);\n}\nconst alignExpr$1 = anchorExpr($(Left), $(Right), $(Center));\nfunction tickBand(_) {\n const v = _('tickBand');\n let offset = _('tickOffset'),\n band,\n extra;\n if (!v) {\n // if no tick band entry, fall back on other properties\n band = _('bandPosition');\n extra = _('tickExtra');\n } else if (v.signal) {\n // if signal, augment code to interpret values\n band = {\n signal: \"(\".concat(v.signal, \") === 'extent' ? 1 : 0.5\")\n };\n extra = {\n signal: \"(\".concat(v.signal, \") === 'extent'\")\n };\n if (!isObject(offset)) {\n offset = {\n signal: \"(\".concat(v.signal, \") === 'extent' ? 0 : \").concat(offset)\n };\n }\n } else if (v === 'extent') {\n // if constant, simply set values\n band = 1;\n extra = true;\n offset = 0;\n } else {\n band = 0.5;\n extra = false;\n }\n return {\n extra,\n band,\n offset\n };\n}\nfunction extendOffset(value, offset) {\n return !offset ? value : !value ? offset : !isObject(value) ? {\n value,\n offset\n } : Object.assign({}, value, {\n offset: extendOffset(value.offset, offset)\n });\n}\nfunction guideMark(mark, extras) {\n if (extras) {\n mark.name = extras.name;\n mark.style = extras.style || mark.style;\n mark.interactive = !!extras.interactive;\n mark.encode = extendEncode(mark.encode, extras, Skip);\n } else {\n mark.interactive = false;\n }\n return mark;\n}\nfunction legendGradient(spec, scale, config, userEncode) {\n const _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength();\n let enter, start, stop, width, height;\n if (vertical) {\n start = [0, 1];\n stop = [0, 0];\n width = thickness;\n height = length;\n } else {\n start = [0, 0];\n stop = [1, 0];\n width = length;\n height = thickness;\n }\n const encode = {\n enter: enter = {\n opacity: zero$1,\n x: zero$1,\n y: zero$1,\n width: encoder(width),\n height: encoder(height)\n },\n update: extend$1({}, enter, {\n opacity: one,\n fill: {\n gradient: scale,\n start: start,\n stop: stop\n }\n }),\n exit: {\n opacity: zero$1\n }\n };\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, {\n // update\n opacity: _('gradientOpacity')\n });\n return guideMark({\n type: RectMark,\n role: LegendGradientRole,\n encode\n }, userEncode);\n}\nfunction legendGradientDiscrete(spec, scale, config, userEncode, dataRef) {\n const _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength();\n let u,\n v,\n uu,\n vv,\n adjust = '';\n vertical ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-') : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n const enter = {\n opacity: zero$1,\n fill: {\n scale: scale,\n field: Value\n }\n };\n enter[u] = {\n signal: adjust + 'datum.' + Perc,\n mult: length\n };\n enter[v] = zero$1;\n enter[uu] = {\n signal: adjust + 'datum.' + Perc2,\n mult: length\n };\n enter[vv] = encoder(thickness);\n const encode = {\n enter: enter,\n update: extend$1({}, enter, {\n opacity: one\n }),\n exit: {\n opacity: zero$1\n }\n };\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, {\n // update\n opacity: _('gradientOpacity')\n });\n return guideMark({\n type: RectMark,\n role: LegendBandRole,\n key: Value,\n from: dataRef,\n encode\n }, userEncode);\n}\nconst alignExpr = \"datum.\".concat(Perc, \"<=0?\\\"\").concat(Left, \"\\\":datum.\").concat(Perc, \">=1?\\\"\").concat(Right, \"\\\":\\\"\").concat(Center, \"\\\"\"),\n baselineExpr = \"datum.\".concat(Perc, \"<=0?\\\"\").concat(Bottom, \"\\\":datum.\").concat(Perc, \">=1?\\\"\").concat(Top, \"\\\":\\\"\").concat(Middle, \"\\\"\");\nfunction legendGradientLabels(spec, config, userEncode, dataRef) {\n const _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = encoder(_.gradientThickness()),\n length = _.gradientLength();\n let overlap = _('labelOverlap'),\n enter,\n update,\n u,\n v,\n adjust = '';\n const encode = {\n enter: enter = {\n opacity: zero$1\n },\n update: update = {\n opacity: one,\n text: {\n field: Label\n }\n },\n exit: {\n opacity: zero$1\n }\n };\n addEncoders(encode, {\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: value(spec.labelLimit, config.gradientLabelLimit)\n });\n if (vertical) {\n enter.align = {\n value: 'left'\n };\n enter.baseline = update.baseline = {\n signal: baselineExpr\n };\n u = 'y';\n v = 'x';\n adjust = '1-';\n } else {\n enter.align = update.align = {\n signal: alignExpr\n };\n enter.baseline = {\n value: 'top'\n };\n u = 'x';\n v = 'y';\n }\n enter[u] = update[u] = {\n signal: adjust + 'datum.' + Perc,\n mult: length\n };\n enter[v] = update[v] = thickness;\n thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n overlap = overlap ? {\n separation: _('labelSeparation'),\n method: overlap,\n order: 'datum.' + Index\n } : undefined;\n\n // type, role, style, key, dataRef, encode, extras\n return guideMark({\n type: TextMark,\n role: LegendLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: dataRef,\n encode,\n overlap\n }, userEncode);\n}\n\n// userEncode is top-level, includes entries, symbols, labels\nfunction legendSymbolGroups(spec, config, userEncode, dataRef, columns) {\n const _ = lookup(spec, config),\n entries = userEncode.entries,\n interactive = !!(entries && entries.interactive),\n name = entries ? entries.name : undefined,\n height = _('clipHeight'),\n symbolOffset = _('symbolOffset'),\n valueRef = {\n data: 'value'\n },\n xSignal = \"(\".concat(columns, \") ? datum.\").concat(Offset, \" : datum.\").concat(Size),\n yEncode = height ? encoder(height) : {\n field: Size\n },\n index = \"datum.\".concat(Index),\n ncols = \"max(1, \".concat(columns, \")\");\n let encode, enter, update, nrows, sort;\n yEncode.mult = 0.5;\n\n // -- LEGEND SYMBOLS --\n encode = {\n enter: enter = {\n opacity: zero$1,\n x: {\n signal: xSignal,\n mult: 0.5,\n offset: symbolOffset\n },\n y: yEncode\n },\n update: update = {\n opacity: one,\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero$1\n }\n };\n let baseFill = null,\n baseStroke = null;\n if (!spec.fill) {\n baseFill = config.symbolBaseFillColor;\n baseStroke = config.symbolBaseStrokeColor;\n }\n addEncoders(encode, {\n fill: _('symbolFillColor', baseFill),\n shape: _('symbolType'),\n size: _('symbolSize'),\n stroke: _('symbolStrokeColor', baseStroke),\n strokeDash: _('symbolDash'),\n strokeDashOffset: _('symbolDashOffset'),\n strokeWidth: _('symbolStrokeWidth')\n }, {\n // update\n opacity: _('symbolOpacity')\n });\n LegendScales.forEach(scale => {\n if (spec[scale]) {\n update[scale] = enter[scale] = {\n scale: spec[scale],\n field: Value\n };\n }\n });\n const symbols = guideMark({\n type: SymbolMark,\n role: LegendSymbolRole,\n key: Value,\n from: valueRef,\n clip: height ? true : undefined,\n encode\n }, userEncode.symbols);\n\n // -- LEGEND LABELS --\n const labelOffset = encoder(symbolOffset);\n labelOffset.offset = _('labelOffset');\n encode = {\n enter: enter = {\n opacity: zero$1,\n x: {\n signal: xSignal,\n offset: labelOffset\n },\n y: yEncode\n },\n update: update = {\n opacity: one,\n text: {\n field: Label\n },\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero$1\n }\n };\n addEncoders(encode, {\n align: _('labelAlign'),\n baseline: _('labelBaseline'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: _('labelLimit')\n });\n const labels = guideMark({\n type: TextMark,\n role: LegendLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: valueRef,\n encode\n }, userEncode.labels);\n\n // -- LEGEND ENTRY GROUPS --\n encode = {\n enter: {\n noBound: {\n value: !height\n },\n // ignore width/height in bounds calc\n width: zero$1,\n height: height ? encoder(height) : zero$1,\n opacity: zero$1\n },\n exit: {\n opacity: zero$1\n },\n update: update = {\n opacity: one,\n row: {\n signal: null\n },\n column: {\n signal: null\n }\n }\n };\n\n // annotate and sort groups to ensure correct ordering\n if (_.isVertical(true)) {\n nrows = \"ceil(item.mark.items.length / \".concat(ncols, \")\");\n update.row.signal = \"\".concat(index, \"%\").concat(nrows);\n update.column.signal = \"floor(\".concat(index, \" / \").concat(nrows, \")\");\n sort = {\n field: ['row', index]\n };\n } else {\n update.row.signal = \"floor(\".concat(index, \" / \").concat(ncols, \")\");\n update.column.signal = \"\".concat(index, \" % \").concat(ncols);\n sort = {\n field: index\n };\n }\n // handle zero column case (implies infinite columns)\n update.column.signal = \"(\".concat(columns, \")?\").concat(update.column.signal, \":\").concat(index);\n\n // facet legend entries into sub-groups\n dataRef = {\n facet: {\n data: dataRef,\n name: 'value',\n groupby: Index\n }\n };\n return guideGroup({\n role: ScopeRole,\n from: dataRef,\n encode: extendEncode(encode, entries, Skip),\n marks: [symbols, labels],\n name,\n interactive,\n sort\n });\n}\nfunction legendSymbolLayout(spec, config) {\n const _ = lookup(spec, config);\n\n // layout parameters for legend entries\n return {\n align: _('gridAlign'),\n columns: _.entryColumns(),\n center: {\n row: true,\n column: false\n },\n padding: {\n row: _('rowPadding'),\n column: _('columnPadding')\n }\n };\n}\n\n// expression logic for align, anchor, angle, and baseline calculation\nconst isL = 'item.orient === \"left\"',\n isR = 'item.orient === \"right\"',\n isLR = \"(\".concat(isL, \" || \").concat(isR, \")\"),\n isVG = \"datum.vgrad && \".concat(isLR),\n baseline$1 = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n exprAlign = \"datum.vgrad && \".concat(isR, \" ? (\").concat(alignFlip, \") : (\").concat(isLR, \" && !(datum.vgrad && \").concat(isL, \")) ? \\\"left\\\" : \").concat(alignExpr$1),\n exprAnchor = \"item._anchor || (\".concat(isLR, \" ? \\\"middle\\\" : \\\"start\\\")\"),\n exprAngle = \"\".concat(isVG, \" ? (\").concat(isL, \" ? -90 : 90) : 0\"),\n exprBaseline = \"\".concat(isLR, \" ? (datum.vgrad ? (\").concat(isR, \" ? \\\"bottom\\\" : \\\"top\\\") : \").concat(baseline$1, \") : \\\"top\\\"\");\nfunction legendTitle(spec, config, userEncode, dataRef) {\n const _ = lookup(spec, config);\n const encode = {\n enter: {\n opacity: zero$1\n },\n update: {\n opacity: one,\n x: {\n field: {\n group: 'padding'\n }\n },\n y: {\n field: {\n group: 'padding'\n }\n }\n },\n exit: {\n opacity: zero$1\n }\n };\n addEncoders(encode, {\n orient: _('titleOrient'),\n _anchor: _('titleAnchor'),\n anchor: {\n signal: exprAnchor\n },\n angle: {\n signal: exprAngle\n },\n align: {\n signal: exprAlign\n },\n baseline: {\n signal: exprBaseline\n },\n text: spec.title,\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit'),\n lineHeight: _('titleLineHeight')\n }, {\n // require update\n align: _('titleAlign'),\n baseline: _('titleBaseline')\n });\n return guideMark({\n type: TextMark,\n role: LegendTitleRole,\n style: GuideTitleStyle,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction clip(clip, scope) {\n let expr;\n if (isObject(clip)) {\n if (clip.signal) {\n expr = clip.signal;\n } else if (clip.path) {\n expr = 'pathShape(' + param(clip.path) + ')';\n } else if (clip.sphere) {\n expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n }\n }\n return expr ? scope.signalRef(expr) : !!clip;\n}\nfunction param(value) {\n return isObject(value) && value.signal ? value.signal : $(value);\n}\nfunction getRole(spec) {\n const role = spec.role || '';\n return !role.indexOf('axis') || !role.indexOf('legend') || !role.indexOf('title') ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole;\n}\nfunction definition(spec) {\n return {\n marktype: spec.type,\n name: spec.name || undefined,\n role: spec.role || getRole(spec),\n zindex: +spec.zindex || undefined,\n aria: spec.aria,\n description: spec.description\n };\n}\nfunction interactive(spec, scope) {\n return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true;\n}\n\n/**\n * Parse a data transform specification.\n */\nfunction parseTransform(spec, scope) {\n const def = definition$1(spec.type);\n if (!def) error('Unrecognized transform type: ' + $(spec.type));\n const t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n t.metadata = def.metadata || {};\n return t;\n}\n\n/**\n * Parse all parameters of a data transform.\n */\nfunction parseParameters(def, spec, scope) {\n const params = {},\n n = def.params.length;\n for (let i = 0; i < n; ++i) {\n const pdef = def.params[i];\n params[pdef.name] = parseParameter(pdef, spec, scope);\n }\n return params;\n}\n\n/**\n * Parse a data transform parameter.\n */\nfunction parseParameter(def, spec, scope) {\n const type = def.type,\n value = spec[def.name];\n if (type === 'index') {\n return parseIndexParameter(def, spec, scope);\n } else if (value === undefined) {\n if (def.required) {\n error('Missing required ' + $(spec.type) + ' parameter: ' + $(def.name));\n }\n return;\n } else if (type === 'param') {\n return parseSubParameters(def, spec, scope);\n } else if (type === 'projection') {\n return scope.projectionRef(spec[def.name]);\n }\n return def.array && !isSignal(value) ? value.map(v => parameterValue(def, v, scope)) : parameterValue(def, value, scope);\n}\n\n/**\n * Parse a single parameter value.\n */\nfunction parameterValue(def, value, scope) {\n const type = def.type;\n if (isSignal(value)) {\n return isExpr(type) ? error('Expression references can not be signals.') : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal);\n } else {\n const expr = def.expr || isField(type);\n return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? parser(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value;\n }\n}\n\n/**\n * Parse parameter for accessing an index of another data set.\n */\nfunction parseIndexParameter(def, spec, scope) {\n if (!isString(spec.from)) {\n error('Lookup \"from\" parameter must be a string literal.');\n }\n return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\nfunction parseSubParameters(def, spec, scope) {\n const value = spec[def.name];\n if (def.array) {\n if (!isArray(value)) {\n // signals not allowed!\n error('Expected an array of sub-parameters. Instead: ' + $(value));\n }\n return value.map(v => parseSubParameter(def, v, scope));\n } else {\n return parseSubParameter(def, value, scope);\n }\n}\n\n/**\n * Parse a sub-parameter object.\n */\nfunction parseSubParameter(def, value, scope) {\n const n = def.params.length;\n let pdef;\n\n // loop over defs to find matching key\n for (let i = 0; i < n; ++i) {\n pdef = def.params[i];\n for (const k in pdef.key) {\n if (pdef.key[k] !== value[k]) {\n pdef = null;\n break;\n }\n }\n if (pdef) break;\n }\n // raise error if matching key not found\n if (!pdef) error('Unsupported parameter: ' + $(value));\n\n // parse params, create Params transform, return ref\n const params = extend$1(parseParameters(pdef, value, scope), pdef.key);\n return ref(scope.add(Params(params)));\n}\n\n// -- Utilities -----\n\nconst outerExpr = _ => _ && _.expr;\nconst outerField = _ => _ && _.field;\nconst isData = _ => _ === 'data';\nconst isExpr = _ => _ === 'expr';\nconst isField = _ => _ === 'field';\nconst isCompare = _ => _ === 'compare';\nfunction parseData$1(from, group, scope) {\n let facet, key, op, dataRef, parent;\n\n // if no source data, generate singleton datum\n if (!from) {\n dataRef = ref(scope.add(Collect(null, [{}])));\n }\n\n // if faceted, process facet specification\n else if (facet = from.facet) {\n if (!group) error('Only group marks can be faceted.');\n\n // use pre-faceted source data, if available\n if (facet.field != null) {\n dataRef = parent = getDataRef(facet, scope);\n } else {\n // generate facet aggregates if no direct data specification\n if (!from.data) {\n op = parseTransform(extend$1({\n type: 'aggregate',\n groupby: array$5(facet.groupby)\n }, facet.aggregate), scope);\n op.params.key = scope.keyRef(facet.groupby);\n op.params.pulse = getDataRef(facet, scope);\n dataRef = parent = ref(scope.add(op));\n } else {\n parent = ref(scope.getData(from.data).aggregate);\n }\n key = scope.keyRef(facet.groupby, true);\n }\n }\n\n // if not yet defined, get source data reference\n if (!dataRef) {\n dataRef = getDataRef(from, scope);\n }\n return {\n key: key,\n pulse: dataRef,\n parent: parent\n };\n}\nfunction getDataRef(from, scope) {\n return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output);\n}\nfunction DataScope(scope, input, output, values, aggr) {\n this.scope = scope; // parent scope object\n this.input = input; // first operator in pipeline (tuple input)\n this.output = output; // last operator in pipeline (tuple output)\n this.values = values; // operator for accessing tuples (but not tuple flow)\n\n // last aggregate in transform pipeline\n this.aggregate = aggr;\n\n // lookup table of field indices\n this.index = {};\n}\nDataScope.fromEntries = function (scope, entries) {\n const n = entries.length,\n values = entries[n - 1],\n output = entries[n - 2];\n let input = entries[0],\n aggr = null,\n i = 1;\n if (input && input.type === 'load') {\n input = entries[1];\n }\n\n // add operator entries to this scope, wire up pulse chain\n scope.add(entries[0]);\n for (; i < n; ++i) {\n entries[i].params.pulse = ref(entries[i - 1]);\n scope.add(entries[i]);\n if (entries[i].type === 'aggregate') aggr = entries[i];\n }\n return new DataScope(scope, input, output, values, aggr);\n};\nfunction fieldKey(field) {\n return isString(field) ? field : null;\n}\nfunction addSortField(scope, p, sort) {\n const as = aggrField(sort.op, sort.field);\n let s;\n if (p.ops) {\n for (let i = 0, n = p.as.length; i < n; ++i) {\n if (p.as[i] === as) return;\n }\n } else {\n p.ops = ['count'];\n p.fields = [null];\n p.as = ['count'];\n }\n if (sort.op) {\n p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op);\n p.fields.push(scope.fieldRef(sort.field));\n p.as.push(as);\n }\n}\nfunction cache(scope, ds, name, optype, field, counts, index) {\n const cache = ds[name] || (ds[name] = {}),\n sort = sortKey(counts);\n let k = fieldKey(field),\n v,\n op;\n if (k != null) {\n scope = ds.scope;\n k = k + (sort ? '|' + sort : '');\n v = cache[k];\n }\n if (!v) {\n const params = counts ? {\n field: keyFieldRef,\n pulse: ds.countsRef(scope, field, counts)\n } : {\n field: scope.fieldRef(field),\n pulse: ref(ds.output)\n };\n if (sort) params.sort = scope.sortRef(counts);\n op = scope.add(entry(optype, undefined, params));\n if (index) ds.index[field] = op;\n v = ref(op);\n if (k != null) cache[k] = v;\n }\n return v;\n}\nDataScope.prototype = {\n countsRef(scope, field, sort) {\n const ds = this,\n cache = ds.counts || (ds.counts = {}),\n k = fieldKey(field);\n let v, a, p;\n if (k != null) {\n scope = ds.scope;\n v = cache[k];\n }\n if (!v) {\n p = {\n groupby: scope.fieldRef(field, 'key'),\n pulse: ref(ds.output)\n };\n if (sort && sort.field) addSortField(scope, p, sort);\n a = scope.add(Aggregate(p));\n v = scope.add(Collect({\n pulse: ref(a)\n }));\n v = {\n agg: a,\n ref: ref(v)\n };\n if (k != null) cache[k] = v;\n } else if (sort && sort.field) {\n addSortField(scope, v.agg.params, sort);\n }\n return v.ref;\n },\n tuplesRef() {\n return ref(this.values);\n },\n extentRef(scope, field) {\n return cache(scope, this, 'extent', 'extent', field, false);\n },\n domainRef(scope, field) {\n return cache(scope, this, 'domain', 'values', field, false);\n },\n valuesRef(scope, field, sort) {\n return cache(scope, this, 'vals', 'values', field, sort || true);\n },\n lookupRef(scope, field) {\n return cache(scope, this, 'lookup', 'tupleindex', field, false);\n },\n indataRef(scope, field) {\n return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n }\n};\nfunction parseFacet(spec, scope, group) {\n const facet = spec.from.facet,\n name = facet.name,\n data = getDataRef(facet, scope);\n let op;\n if (!facet.name) {\n error('Facet must have a name: ' + $(facet));\n }\n if (!facet.data) {\n error('Facet must reference a data set: ' + $(facet));\n }\n if (facet.field) {\n op = scope.add(PreFacet({\n field: scope.fieldRef(facet.field),\n pulse: data\n }));\n } else if (facet.groupby) {\n op = scope.add(Facet({\n key: scope.keyRef(facet.groupby),\n group: ref(scope.proxy(group.parent)),\n pulse: data\n }));\n } else {\n error('Facet must specify groupby or field: ' + $(facet));\n }\n\n // initialize facet subscope\n const subscope = scope.fork(),\n source = subscope.add(Collect()),\n values = subscope.add(Sieve({\n pulse: ref(source)\n }));\n subscope.addData(name, new DataScope(subscope, source, source, values));\n subscope.addSignal('parent', null);\n\n // parse faceted subflow\n op.params.subflow = {\n $subflow: subscope.parse(spec).toRuntime()\n };\n}\nfunction parseSubflow(spec, scope, input) {\n const op = scope.add(PreFacet({\n pulse: input.pulse\n })),\n subscope = scope.fork();\n subscope.add(Sieve());\n subscope.addSignal('parent', null);\n\n // parse group mark subflow\n op.params.subflow = {\n $subflow: subscope.parse(spec).toRuntime()\n };\n}\nfunction parseTrigger(spec, scope, name) {\n const remove = spec.remove,\n insert = spec.insert,\n toggle = spec.toggle,\n modify = spec.modify,\n values = spec.values,\n op = scope.add(operator());\n const update = 'if(' + spec.trigger + ',modify(\"' + name + '\",' + [insert, remove, toggle, modify, values].map(_ => _ == null ? 'null' : _).join(',') + '),0)';\n const expr = parser(update, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n}\nfunction parseMark(spec, scope) {\n const role = getRole(spec),\n group = spec.type === GroupMark,\n facet = spec.from && spec.from.facet,\n overlap = spec.overlap;\n let layout = spec.layout || role === ScopeRole || role === FrameRole,\n ops,\n op,\n store,\n enc,\n name,\n layoutRef,\n boundRef;\n const nested = role === MarkRole || layout || facet;\n\n // resolve input data\n const input = parseData$1(spec.from, group, scope);\n\n // data join to map tuples to visual items\n op = scope.add(DataJoin({\n key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined),\n pulse: input.pulse,\n clean: !group\n }));\n const joinRef = ref(op);\n\n // collect visual items\n op = store = scope.add(Collect({\n pulse: joinRef\n }));\n\n // connect visual items to scenegraph\n op = scope.add(Mark$1({\n markdef: definition(spec),\n interactive: interactive(spec.interactive, scope),\n clip: clip(spec.clip, scope),\n context: {\n $context: true\n },\n groups: scope.lookup(),\n parent: scope.signals.parent ? scope.signalRef('parent') : null,\n index: scope.markpath(),\n pulse: ref(op)\n }));\n const markRef = ref(op);\n\n // add visual encoders\n op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, {\n mod: false,\n pulse: markRef\n })));\n\n // monitor parent marks to propagate changes\n op.params.parent = scope.encode();\n\n // add post-encoding transforms, if defined\n if (spec.transform) {\n spec.transform.forEach(_ => {\n const tx = parseTransform(_, scope),\n md = tx.metadata;\n if (md.generates || md.changes) {\n error('Mark transforms should not generate new data.');\n }\n if (!md.nomod) enc.params.mod = true; // update encode mod handling\n tx.params.pulse = ref(op);\n scope.add(op = tx);\n });\n }\n\n // if item sort specified, perform post-encoding\n if (spec.sort) {\n op = scope.add(SortItems({\n sort: scope.compareRef(spec.sort),\n pulse: ref(op)\n }));\n }\n const encodeRef = ref(op);\n\n // add view layout operator if needed\n if (facet || layout) {\n layout = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n mark: markRef,\n pulse: encodeRef\n }));\n layoutRef = ref(layout);\n }\n\n // compute bounding boxes\n const bound = scope.add(Bound({\n mark: markRef,\n pulse: layoutRef || encodeRef\n }));\n boundRef = ref(bound);\n\n // if group mark, recurse to parse nested content\n if (group) {\n // juggle layout & bounds to ensure they run *after* any faceting transforms\n if (nested) {\n ops = scope.operators;\n ops.pop();\n if (layout) ops.pop();\n }\n scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n facet ? parseFacet(spec, scope, input) // explicit facet\n : nested ? parseSubflow(spec, scope, input) // standard mark group\n : scope.parse(spec); // guide group, we can avoid nested scopes\n scope.popState();\n if (nested) {\n if (layout) ops.push(layout);\n ops.push(bound);\n }\n }\n\n // if requested, add overlap removal transform\n if (overlap) {\n boundRef = parseOverlap(overlap, boundRef, scope);\n }\n\n // render / sieve items\n const render = scope.add(Render({\n pulse: boundRef\n })),\n sieve = scope.add(Sieve({\n pulse: ref(render)\n }, undefined, scope.parent()));\n\n // if mark is named, make accessible as reactive geometry\n // add trigger updates if defined\n if (spec.name != null) {\n name = spec.name;\n scope.addData(name, new DataScope(scope, store, render, sieve));\n if (spec.on) spec.on.forEach(on => {\n if (on.insert || on.remove || on.toggle) {\n error('Marks only support modify triggers.');\n }\n parseTrigger(on, scope, name);\n });\n }\n}\nfunction parseOverlap(overlap, source, scope) {\n const method = overlap.method,\n bound = overlap.bound,\n sep = overlap.separation;\n const params = {\n separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n method: isSignal(method) ? scope.signalRef(method.signal) : method,\n pulse: source\n };\n if (overlap.order) {\n params.sort = scope.compareRef({\n field: overlap.order\n });\n }\n if (bound) {\n const tol = bound.tolerance;\n params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n params.boundScale = scope.scaleRef(bound.scale);\n params.boundOrient = bound.orient;\n }\n return ref(scope.add(Overlap(params)));\n}\nfunction parseLegend$1(spec, scope) {\n const config = scope.config.legend,\n encode = spec.encode || {},\n _ = lookup(spec, config),\n legendEncode = encode.legend || {},\n name = legendEncode.name || undefined,\n interactive = legendEncode.interactive,\n style = legendEncode.style,\n scales = {};\n let scale = 0,\n entryLayout,\n params,\n children;\n\n // resolve scales and 'canonical' scale name\n LegendScales.forEach(s => spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0);\n if (!scale) error('Missing valid scale for legend.');\n\n // resolve legend type (symbol, gradient, or discrete gradient)\n const type = legendType(spec, scope.scaleType(scale));\n\n // single-element data source for legend group\n const datum = {\n title: spec.title != null,\n scales: scales,\n type: type,\n vgrad: type !== 'symbol' && _.isVertical()\n };\n const dataRef = ref(scope.add(Collect(null, [datum])));\n\n // encoding properties for legend entry sub-group\n const entryEncode = {\n enter: {\n x: {\n value: 0\n },\n y: {\n value: 0\n }\n }\n };\n\n // data source for legend values\n const entryRef = ref(scope.add(LegendEntries(params = {\n type: type,\n scale: scope.scaleRef(scale),\n count: scope.objectProperty(_('tickCount')),\n limit: scope.property(_('symbolLimit')),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // continuous gradient legend\n if (type === Gradient) {\n children = [legendGradient(spec, scale, config, encode.gradient), legendGradientLabels(spec, config, encode.labels, entryRef)];\n // adjust default tick count based on the gradient length\n params.count = params.count || scope.signalRef(\"max(2,2*floor((\".concat(deref(_.gradientLength()), \")/100))\"));\n }\n\n // discrete gradient legend\n else if (type === Discrete) {\n children = [legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), legendGradientLabels(spec, config, encode.labels, entryRef)];\n }\n\n // symbol legend\n else {\n // determine legend symbol group layout\n entryLayout = legendSymbolLayout(spec, config);\n children = [legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))];\n // pass symbol size information to legend entry generator\n params.size = sizeExpression(spec, scope, children[0].marks);\n }\n\n // generate legend marks\n children = [guideGroup({\n role: LegendEntryRole,\n from: dataRef,\n encode: entryEncode,\n marks: children,\n layout: entryLayout,\n interactive\n })];\n\n // include legend title if defined\n if (datum.title) {\n children.push(legendTitle(spec, config, encode.title, dataRef));\n }\n\n // parse legend specification\n return parseMark(guideGroup({\n role: LegendRole,\n from: dataRef,\n encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name,\n interactive,\n style\n }), scope);\n}\nfunction legendType(spec, scaleType) {\n let type = spec.type || Symbols;\n if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n type = isContinuous$1(scaleType) ? Gradient : isDiscretizing$1(scaleType) ? Discrete : Symbols;\n }\n return type !== Gradient ? type : isDiscretizing$1(scaleType) ? Discrete : Gradient;\n}\nfunction scaleCount(spec) {\n return LegendScales.reduce((count, type) => count + (spec[type] ? 1 : 0), 0);\n}\nfunction buildLegendEncode(_, spec, config) {\n const encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset'),\n padding: _('padding'),\n titlePadding: _('titlePadding'),\n cornerRadius: _('cornerRadius'),\n fill: _('fillColor'),\n stroke: _('strokeColor'),\n strokeWidth: config.strokeWidth,\n strokeDash: config.strokeDash,\n x: _('legendX'),\n y: _('legendY'),\n // accessibility support\n format: spec.format,\n formatType: spec.formatType\n });\n return encode;\n}\nfunction sizeExpression(spec, scope, marks) {\n const size = deref(getChannel('size', spec, marks)),\n strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n return parser(\"max(ceil(sqrt(\".concat(size, \")+\").concat(strokeWidth, \"),\").concat(fontSize, \")\"), scope);\n}\nfunction getChannel(name, spec, marks) {\n return spec[name] ? \"scale(\\\"\".concat(spec[name], \"\\\",datum)\") : getEncoding(name, marks[0].encode);\n}\nfunction getFontSize(encode, scope, style) {\n return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\nconst angleExpr = \"item.orient===\\\"\".concat(Left, \"\\\"?-90:item.orient===\\\"\").concat(Right, \"\\\"?90:0\");\nfunction parseTitle(spec, scope) {\n spec = isString(spec) ? {\n text: spec\n } : spec;\n const _ = lookup(spec, scope.config.title),\n encode = spec.encode || {},\n userEncode = encode.group || {},\n name = userEncode.name || undefined,\n interactive = userEncode.interactive,\n style = userEncode.style,\n children = [];\n\n // single-element data source for group title\n const datum = {},\n dataRef = ref(scope.add(Collect(null, [datum])));\n\n // include title text\n children.push(buildTitle(spec, _, titleEncode(spec), dataRef));\n\n // include subtitle text\n if (spec.subtitle) {\n children.push(buildSubTitle(spec, _, encode.subtitle, dataRef));\n }\n\n // parse title specification\n return parseMark(guideGroup({\n role: TitleRole,\n from: dataRef,\n encode: groupEncode(_, userEncode),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name,\n interactive,\n style\n }), scope);\n}\n\n// provide backwards-compatibility for title custom encode;\n// the top-level encode block has been *deprecated*.\nfunction titleEncode(spec) {\n const encode = spec.encode;\n return encode && encode.title || extend$1({\n name: spec.name,\n interactive: spec.interactive,\n style: spec.style\n }, encode);\n}\nfunction groupEncode(_, userEncode) {\n const encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n anchor: _('anchor'),\n align: {\n signal: alignExpr$1\n },\n angle: {\n signal: angleExpr\n },\n limit: _('limit'),\n frame: _('frame'),\n offset: _('offset') || 0,\n padding: _('subtitlePadding')\n });\n return extendEncode(encode, userEncode, Skip);\n}\nfunction buildTitle(spec, _, userEncode, dataRef) {\n const zero = {\n value: 0\n },\n text = spec.text,\n encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: {\n value: 1\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n text: text,\n align: {\n signal: 'item.mark.group.align'\n },\n angle: {\n signal: 'item.mark.group.angle'\n },\n limit: {\n signal: 'item.mark.group.limit'\n },\n baseline: 'top',\n dx: _('dx'),\n dy: _('dy'),\n fill: _('color'),\n font: _('font'),\n fontSize: _('fontSize'),\n fontStyle: _('fontStyle'),\n fontWeight: _('fontWeight'),\n lineHeight: _('lineHeight')\n }, {\n // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n return guideMark({\n type: TextMark,\n role: TitleTextRole,\n style: GroupTitleStyle,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction buildSubTitle(spec, _, userEncode, dataRef) {\n const zero = {\n value: 0\n },\n text = spec.subtitle,\n encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: {\n value: 1\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n text: text,\n align: {\n signal: 'item.mark.group.align'\n },\n angle: {\n signal: 'item.mark.group.angle'\n },\n limit: {\n signal: 'item.mark.group.limit'\n },\n baseline: 'top',\n dx: _('dx'),\n dy: _('dy'),\n fill: _('subtitleColor'),\n font: _('subtitleFont'),\n fontSize: _('subtitleFontSize'),\n fontStyle: _('subtitleFontStyle'),\n fontWeight: _('subtitleFontWeight'),\n lineHeight: _('subtitleLineHeight')\n }, {\n // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n return guideMark({\n type: TextMark,\n role: TitleSubtitleRole,\n style: GroupSubtitleStyle,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction parseData$2(data, scope) {\n const transforms = [];\n if (data.transform) {\n data.transform.forEach(tx => {\n transforms.push(parseTransform(tx, scope));\n });\n }\n if (data.on) {\n data.on.forEach(on => {\n parseTrigger(on, scope, data.name);\n });\n }\n scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n\n/**\n * Analyze a data pipeline, add needed operators.\n */\nfunction analyze(data, scope, ops) {\n const output = [];\n let source = null,\n modify = false,\n generate = false,\n upstream,\n i,\n n,\n t,\n m;\n if (data.values) {\n // hard-wired input data set\n if (isSignal(data.values) || hasSignal(data.format)) {\n // if either values is signal or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, ingest upon dataflow init\n output.push(source = collect({\n $ingest: data.values,\n $format: data.format\n }));\n }\n } else if (data.url) {\n // load data from external source\n if (hasSignal(data.url) || hasSignal(data.format)) {\n // if either url or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, request load upon dataflow init\n output.push(source = collect({\n $request: data.url,\n $format: data.format\n }));\n }\n } else if (data.source) {\n // derives from one or more other data sets\n source = upstream = array$5(data.source).map(d => ref(scope.getData(d).output));\n output.push(null); // populate later\n }\n\n // scan data transforms, add collectors as needed\n for (i = 0, n = ops.length; i < n; ++i) {\n t = ops[i];\n m = t.metadata;\n if (!source && !m.source) {\n output.push(source = collect());\n }\n output.push(t);\n if (m.generates) generate = true;\n if (m.modifies && !generate) modify = true;\n if (m.source) source = t;else if (m.changes) source = null;\n }\n if (upstream) {\n n = upstream.length - 1;\n output[0] = Relay({\n derive: modify,\n pulse: n ? upstream : upstream[0]\n });\n if (modify || n) {\n // collect derived and multi-pulse tuples\n output.splice(1, 0, collect());\n }\n }\n if (!source) output.push(collect());\n output.push(Sieve({}));\n return output;\n}\nfunction collect(values) {\n const s = Collect({}, values);\n s.metadata = {\n source: true\n };\n return s;\n}\nfunction load(scope, data) {\n return Load({\n url: data.url ? scope.property(data.url) : undefined,\n async: data.async ? scope.property(data.async) : undefined,\n values: data.values ? scope.property(data.values) : undefined,\n format: scope.objectProperty(data.format)\n });\n}\nconst isX = orient => orient === Bottom || orient === Top;\n\n// get sign coefficient based on axis orient\nconst getSign = (orient, a, b) => isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b;\n\n// condition on axis x-direction\nconst ifX = (orient, a, b) => isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b;\n\n// condition on axis y-direction\nconst ifY = (orient, a, b) => isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a;\nconst ifTop = (orient, a, b) => isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? {\n value: a\n} : {\n value: b\n};\nconst ifRight = (orient, a, b) => isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? {\n value: a\n} : {\n value: b\n};\nconst ifXEnc = ($orient, a, b) => ifEnc(\"\".concat($orient, \" === '\").concat(Top, \"' || \").concat($orient, \" === '\").concat(Bottom, \"'\"), a, b);\nconst ifYEnc = ($orient, a, b) => ifEnc(\"\".concat($orient, \" !== '\").concat(Top, \"' && \").concat($orient, \" !== '\").concat(Bottom, \"'\"), a, b);\nconst ifLeftTopExpr = ($orient, a, b) => ifExpr(\"\".concat($orient, \" === '\").concat(Left, \"' || \").concat($orient, \" === '\").concat(Top, \"'\"), a, b);\nconst ifTopExpr = ($orient, a, b) => ifExpr(\"\".concat($orient, \" === '\").concat(Top, \"'\"), a, b);\nconst ifRightExpr = ($orient, a, b) => ifExpr(\"\".concat($orient, \" === '\").concat(Right, \"'\"), a, b);\nconst ifEnc = (test, a, b) => {\n // ensure inputs are encoder objects (or null)\n a = a != null ? encoder(a) : a;\n b = b != null ? encoder(b) : b;\n if (isSimple(a) && isSimple(b)) {\n // if possible generate simple signal expression\n a = a ? a.signal || $(a.value) : null;\n b = b ? b.signal || $(b.value) : null;\n return {\n signal: \"\".concat(test, \" ? (\").concat(a, \") : (\").concat(b, \")\")\n };\n } else {\n // otherwise generate rule set\n return [extend$1({\n test\n }, a)].concat(b || []);\n }\n};\nconst isSimple = enc => enc == null || Object.keys(enc).length === 1;\nconst ifExpr = (test, a, b) => ({\n signal: \"\".concat(test, \" ? (\").concat(toExpr(a), \") : (\").concat(toExpr(b), \")\")\n});\nconst ifOrient = ($orient, t, b, l, r) => ({\n signal: (l != null ? \"\".concat($orient, \" === '\").concat(Left, \"' ? (\").concat(toExpr(l), \") : \") : '') + (b != null ? \"\".concat($orient, \" === '\").concat(Bottom, \"' ? (\").concat(toExpr(b), \") : \") : '') + (r != null ? \"\".concat($orient, \" === '\").concat(Right, \"' ? (\").concat(toExpr(r), \") : \") : '') + (t != null ? \"\".concat($orient, \" === '\").concat(Top, \"' ? (\").concat(toExpr(t), \") : \") : '') + '(null)'\n});\nconst toExpr = v => isSignal(v) ? v.signal : v == null ? null : $(v);\nconst mult = (sign, value) => value === 0 ? 0 : isSignal(sign) ? {\n signal: \"(\".concat(sign.signal, \") * \").concat(value)\n} : {\n value: sign * value\n};\nconst patch = (value, base) => {\n const s = value.signal;\n return s && s.endsWith('(null)') ? {\n signal: s.slice(0, -6) + base.signal\n } : value;\n};\nfunction fallback(prop, config, axisConfig, style) {\n let styleProp;\n if (config && has$1(config, prop)) {\n return config[prop];\n } else if (has$1(axisConfig, prop)) {\n return axisConfig[prop];\n } else if (prop.startsWith('title')) {\n switch (prop) {\n case 'titleColor':\n styleProp = 'fill';\n break;\n case 'titleFont':\n case 'titleFontSize':\n case 'titleFontWeight':\n styleProp = prop[5].toLowerCase() + prop.slice(6);\n }\n return style[GuideTitleStyle][styleProp];\n } else if (prop.startsWith('label')) {\n switch (prop) {\n case 'labelColor':\n styleProp = 'fill';\n break;\n case 'labelFont':\n case 'labelFontSize':\n styleProp = prop[5].toLowerCase() + prop.slice(6);\n }\n return style[GuideLabelStyle][styleProp];\n }\n return null;\n}\nfunction keys$1(objects) {\n const map = {};\n for (const obj of objects) {\n if (!obj) continue;\n for (const key in obj) map[key] = 1;\n }\n return Object.keys(map);\n}\nfunction axisConfig(spec, scope) {\n var config = scope.config,\n style = config.style,\n axis = config.axis,\n band = scope.scaleType(spec.scale) === 'band' && config.axisBand,\n orient = spec.orient,\n xy,\n or,\n key;\n if (isSignal(orient)) {\n const xyKeys = keys$1([config.axisX, config.axisY]),\n orientKeys = keys$1([config.axisTop, config.axisBottom, config.axisLeft, config.axisRight]);\n xy = {};\n for (key of xyKeys) {\n xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style));\n }\n or = {};\n for (key of orientKeys) {\n or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style));\n }\n } else {\n xy = orient === Top || orient === Bottom ? config.axisX : config.axisY;\n or = config['axis' + orient[0].toUpperCase() + orient.slice(1)];\n }\n const result = xy || or || band ? extend$1({}, axis, xy, or, band) : axis;\n return result;\n}\nfunction axisDomain(spec, config, userEncode, dataRef) {\n const _ = lookup(spec, config),\n orient = spec.orient;\n let enter, update;\n const encode = {\n enter: enter = {\n opacity: zero$1\n },\n update: update = {\n opacity: one\n },\n exit: {\n opacity: zero$1\n }\n };\n addEncoders(encode, {\n stroke: _('domainColor'),\n strokeCap: _('domainCap'),\n strokeDash: _('domainDash'),\n strokeDashOffset: _('domainDashOffset'),\n strokeWidth: _('domainWidth'),\n strokeOpacity: _('domainOpacity')\n });\n const pos0 = position(spec, 0);\n const pos1 = position(spec, 1);\n enter.x = update.x = ifX(orient, pos0, zero$1);\n enter.x2 = update.x2 = ifX(orient, pos1);\n enter.y = update.y = ifY(orient, pos0, zero$1);\n enter.y2 = update.y2 = ifY(orient, pos1);\n return guideMark({\n type: RuleMark,\n role: AxisDomainRole,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction position(spec, pos) {\n return {\n scale: spec.scale,\n range: pos\n };\n}\nfunction axisGrid(spec, config, userEncode, dataRef, band) {\n const _ = lookup(spec, config),\n orient = spec.orient,\n vscale = spec.gridScale,\n sign = getSign(orient, 1, -1),\n offset = offsetValue(spec.offset, sign);\n let enter, exit, update;\n const encode = {\n enter: enter = {\n opacity: zero$1\n },\n update: update = {\n opacity: one\n },\n exit: exit = {\n opacity: zero$1\n }\n };\n addEncoders(encode, {\n stroke: _('gridColor'),\n strokeCap: _('gridCap'),\n strokeDash: _('gridDash'),\n strokeDashOffset: _('gridDashOffset'),\n strokeOpacity: _('gridOpacity'),\n strokeWidth: _('gridWidth')\n });\n const tickPos = {\n scale: spec.scale,\n field: Value,\n band: band.band,\n extra: band.extra,\n offset: band.offset,\n round: _('tickRound')\n };\n const sz = ifX(orient, {\n signal: 'height'\n }, {\n signal: 'width'\n });\n const gridStart = vscale ? {\n scale: vscale,\n range: 0,\n mult: sign,\n offset: offset\n } : {\n value: 0,\n offset: offset\n };\n const gridEnd = vscale ? {\n scale: vscale,\n range: 1,\n mult: sign,\n offset: offset\n } : extend$1(sz, {\n mult: sign,\n offset: offset\n });\n enter.x = update.x = ifX(orient, tickPos, gridStart);\n enter.y = update.y = ifY(orient, tickPos, gridStart);\n enter.x2 = update.x2 = ifY(orient, gridEnd);\n enter.y2 = update.y2 = ifX(orient, gridEnd);\n exit.x = ifX(orient, tickPos);\n exit.y = ifY(orient, tickPos);\n return guideMark({\n type: RuleMark,\n role: AxisGridRole,\n key: Value,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction offsetValue(offset, sign) {\n if (sign === 1) ;else if (!isObject(offset)) {\n offset = isSignal(sign) ? {\n signal: \"(\".concat(sign.signal, \") * (\").concat(offset || 0, \")\")\n } : sign * (offset || 0);\n } else {\n let entry = offset = extend$1({}, offset);\n while (entry.mult != null) {\n if (!isObject(entry.mult)) {\n entry.mult = isSignal(sign) // no offset if sign === 1\n ? {\n signal: \"(\".concat(entry.mult, \") * (\").concat(sign.signal, \")\")\n } : entry.mult * sign;\n return offset;\n } else {\n entry = entry.mult = extend$1({}, entry.mult);\n }\n }\n entry.mult = sign;\n }\n return offset;\n}\nfunction axisTicks(spec, config, userEncode, dataRef, size, band) {\n const _ = lookup(spec, config),\n orient = spec.orient,\n sign = getSign(orient, -1, 1);\n let enter, exit, update;\n const encode = {\n enter: enter = {\n opacity: zero$1\n },\n update: update = {\n opacity: one\n },\n exit: exit = {\n opacity: zero$1\n }\n };\n addEncoders(encode, {\n stroke: _('tickColor'),\n strokeCap: _('tickCap'),\n strokeDash: _('tickDash'),\n strokeDashOffset: _('tickDashOffset'),\n strokeOpacity: _('tickOpacity'),\n strokeWidth: _('tickWidth')\n });\n const tickSize = encoder(size);\n tickSize.mult = sign;\n const tickPos = {\n scale: spec.scale,\n field: Value,\n band: band.band,\n extra: band.extra,\n offset: band.offset,\n round: _('tickRound')\n };\n update.y = enter.y = ifX(orient, zero$1, tickPos);\n update.y2 = enter.y2 = ifX(orient, tickSize);\n exit.x = ifX(orient, tickPos);\n update.x = enter.x = ifY(orient, zero$1, tickPos);\n update.x2 = enter.x2 = ifY(orient, tickSize);\n exit.y = ifY(orient, tickPos);\n return guideMark({\n type: RuleMark,\n role: AxisTickRole,\n key: Value,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction flushExpr(scale, threshold, a, b, c) {\n return {\n signal: 'flush(range(\"' + scale + '\"), ' + 'scale(\"' + scale + '\", datum.value), ' + threshold + ',' + a + ',' + b + ',' + c + ')'\n };\n}\nfunction axisLabels(spec, config, userEncode, dataRef, size, band) {\n const _ = lookup(spec, config),\n orient = spec.orient,\n scale = spec.scale,\n sign = getSign(orient, -1, 1),\n flush = deref(_('labelFlush')),\n flushOffset = deref(_('labelFlushOffset')),\n labelAlign = _('labelAlign'),\n labelBaseline = _('labelBaseline');\n let flushOn = flush === 0 || !!flush,\n update;\n const tickSize = encoder(size);\n tickSize.mult = sign;\n tickSize.offset = encoder(_('labelPadding') || 0);\n tickSize.offset.mult = sign;\n const tickPos = {\n scale: scale,\n field: Value,\n band: 0.5,\n offset: extendOffset(band.offset, _('labelOffset'))\n };\n const align = ifX(orient, flushOn ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"') : {\n value: 'center'\n }, ifRight(orient, 'left', 'right'));\n const baseline = ifX(orient, ifTop(orient, 'bottom', 'top'), flushOn ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"') : {\n value: 'middle'\n });\n const offsetExpr = flushExpr(scale, flush, \"-(\".concat(flushOffset, \")\"), flushOffset, 0);\n flushOn = flushOn && flushOffset;\n const enter = {\n opacity: zero$1,\n x: ifX(orient, tickPos, tickSize),\n y: ifY(orient, tickPos, tickSize)\n };\n const encode = {\n enter: enter,\n update: update = {\n opacity: one,\n text: {\n field: Label\n },\n x: enter.x,\n y: enter.y,\n align,\n baseline\n },\n exit: {\n opacity: zero$1,\n x: enter.x,\n y: enter.y\n }\n };\n addEncoders(encode, {\n dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null,\n dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null\n });\n addEncoders(encode, {\n angle: _('labelAngle'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontWeight: _('labelFontWeight'),\n fontStyle: _('labelFontStyle'),\n limit: _('labelLimit'),\n lineHeight: _('labelLineHeight')\n }, {\n align: labelAlign,\n baseline: labelBaseline\n });\n const bound = _('labelBound');\n let overlap = _('labelOverlap');\n\n // if overlap method or bound defined, request label overlap removal\n overlap = overlap || bound ? {\n separation: _('labelSeparation'),\n method: overlap,\n order: 'datum.index',\n bound: bound ? {\n scale,\n orient,\n tolerance: bound\n } : null\n } : undefined;\n if (update.align !== align) {\n update.align = patch(update.align, align);\n }\n if (update.baseline !== baseline) {\n update.baseline = patch(update.baseline, baseline);\n }\n return guideMark({\n type: TextMark,\n role: AxisLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: dataRef,\n encode,\n overlap\n }, userEncode);\n}\nfunction axisTitle(spec, config, userEncode, dataRef) {\n const _ = lookup(spec, config),\n orient = spec.orient,\n sign = getSign(orient, -1, 1);\n let enter, update;\n const encode = {\n enter: enter = {\n opacity: zero$1,\n anchor: encoder(_('titleAnchor', null)),\n align: {\n signal: alignExpr$1\n }\n },\n update: update = extend$1({}, enter, {\n opacity: one,\n text: encoder(spec.title)\n }),\n exit: {\n opacity: zero$1\n }\n };\n const titlePos = {\n signal: \"lerp(range(\\\"\".concat(spec.scale, \"\\\"), \").concat(anchorExpr(0, 1, 0.5), \")\")\n };\n update.x = ifX(orient, titlePos);\n update.y = ifY(orient, titlePos);\n enter.angle = ifX(orient, zero$1, mult(sign, 90));\n enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), {\n value: Bottom\n });\n update.angle = enter.angle;\n update.baseline = enter.baseline;\n addEncoders(encode, {\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit'),\n lineHeight: _('titleLineHeight')\n }, {\n // require update\n align: _('titleAlign'),\n angle: _('titleAngle'),\n baseline: _('titleBaseline')\n });\n autoLayout(_, orient, encode, userEncode);\n encode.update.align = patch(encode.update.align, enter.align);\n encode.update.angle = patch(encode.update.angle, enter.angle);\n encode.update.baseline = patch(encode.update.baseline, enter.baseline);\n return guideMark({\n type: TextMark,\n role: AxisTitleRole,\n style: GuideTitleStyle,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction autoLayout(_, orient, encode, userEncode) {\n const auto = (value, dim) => value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false;\n const autoY = auto(_('titleX'), 'x'),\n autoX = auto(_('titleY'), 'y');\n encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY));\n}\nfunction parseAxis$1(spec, scope) {\n const config = axisConfig(spec, scope),\n encode = spec.encode || {},\n axisEncode = encode.axis || {},\n name = axisEncode.name || undefined,\n interactive = axisEncode.interactive,\n style = axisEncode.style,\n _ = lookup(spec, config),\n band = tickBand(_);\n\n // single-element data source for axis group\n const datum = {\n scale: spec.scale,\n ticks: !!_('ticks'),\n labels: !!_('labels'),\n grid: !!_('grid'),\n domain: !!_('domain'),\n title: spec.title != null\n };\n const dataRef = ref(scope.add(Collect({}, [datum])));\n\n // data source for axis ticks\n const ticksRef = ref(scope.add(AxisTicks({\n scale: scope.scaleRef(spec.scale),\n extra: scope.property(band.extra),\n count: scope.objectProperty(spec.tickCount),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // generate axis marks\n const children = [];\n let size;\n\n // include axis gridlines if requested\n if (datum.grid) {\n children.push(axisGrid(spec, config, encode.grid, ticksRef, band));\n }\n\n // include axis ticks if requested\n if (datum.ticks) {\n size = _('tickSize');\n children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band));\n }\n\n // include axis labels if requested\n if (datum.labels) {\n size = datum.ticks ? size : 0;\n children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band));\n }\n\n // include axis domain path if requested\n if (datum.domain) {\n children.push(axisDomain(spec, config, encode.domain, dataRef));\n }\n\n // include axis title if defined\n if (datum.title) {\n children.push(axisTitle(spec, config, encode.title, dataRef));\n }\n\n // parse axis specification\n return parseMark(guideGroup({\n role: AxisRole,\n from: dataRef,\n encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name,\n interactive,\n style\n }), scope);\n}\nfunction buildAxisEncode(_, spec) {\n const encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset') || 0,\n position: value(spec.position, 0),\n titlePadding: _('titlePadding'),\n minExtent: _('minExtent'),\n maxExtent: _('maxExtent'),\n range: {\n signal: \"abs(span(range(\\\"\".concat(spec.scale, \"\\\")))\")\n },\n translate: _('translate'),\n // accessibility support\n format: spec.format,\n formatType: spec.formatType\n });\n return encode;\n}\nfunction parseScope(spec, scope, preprocessed) {\n const signals = array$5(spec.signals),\n scales = array$5(spec.scales);\n\n // parse signal definitions, if not already preprocessed\n if (!preprocessed) signals.forEach(_ => parseSignal(_, scope));\n\n // parse cartographic projection definitions\n array$5(spec.projections).forEach(_ => parseProjection$1(_, scope));\n\n // initialize scale references\n scales.forEach(_ => initScale(_, scope));\n\n // parse data sources\n array$5(spec.data).forEach(_ => parseData$2(_, scope));\n\n // parse scale definitions\n scales.forEach(_ => parseScale(_, scope));\n\n // parse signal updates\n (preprocessed || signals).forEach(_ => parseSignalUpdates(_, scope));\n\n // parse axis definitions\n array$5(spec.axes).forEach(_ => parseAxis$1(_, scope));\n\n // parse mark definitions\n array$5(spec.marks).forEach(_ => parseMark(_, scope));\n\n // parse legend definitions\n array$5(spec.legends).forEach(_ => parseLegend$1(_, scope));\n\n // parse title, if defined\n if (spec.title) parseTitle(spec.title, scope);\n\n // parse collected lambda (anonymous) expressions\n scope.parseLambdas();\n return scope;\n}\nconst rootEncode = spec => extendEncode({\n enter: {\n x: {\n value: 0\n },\n y: {\n value: 0\n }\n },\n update: {\n width: {\n signal: 'width'\n },\n height: {\n signal: 'height'\n }\n }\n}, spec);\nfunction parseView(spec, scope) {\n const config = scope.config;\n\n // add scenegraph root\n const root = ref(scope.root = scope.add(operator()));\n\n // parse top-level signal definitions\n const signals = collectSignals(spec, config);\n signals.forEach(_ => parseSignal(_, scope));\n\n // assign description, event, legend, and locale configuration\n scope.description = spec.description || config.description;\n scope.eventConfig = config.events;\n scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n scope.locale = config.locale;\n\n // store root group item\n const input = scope.add(Collect());\n\n // encode root group item\n const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, {\n pulse: ref(input)\n })));\n\n // perform view layout\n const parent = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n autosize: scope.signalRef('autosize'),\n mark: root,\n pulse: ref(encode)\n }));\n scope.operators.pop();\n\n // parse remainder of specification\n scope.pushState(ref(encode), ref(parent), null);\n parseScope(spec, scope, signals);\n scope.operators.push(parent);\n\n // bound / render / sieve root item\n let op = scope.add(Bound({\n mark: root,\n pulse: ref(parent)\n }));\n op = scope.add(Render({\n pulse: ref(op)\n }));\n op = scope.add(Sieve({\n pulse: ref(op)\n }));\n\n // track metadata for root item\n scope.addData('root', new DataScope(scope, input, input, op));\n return scope;\n}\nfunction signalObject(name, value) {\n return value && value.signal ? {\n name,\n update: value.signal\n } : {\n name,\n value\n };\n}\n\n/**\n * Collect top-level signals, merging values as needed. Signals\n * defined in the config signals arrays are added only if that\n * signal is not explicitly defined in the specification.\n * Built-in signals (autosize, background, padding, width, height)\n * receive special treatment. They are initialized using the\n * top-level spec property, or, if undefined in the spec, using\n * the corresponding top-level config property. If this property\n * is a signal reference object, the signal expression maps to the\n * signal 'update' property. If the spec's top-level signal array\n * contains an entry that matches a built-in signal, that entry\n * will be merged with the built-in specification, potentially\n * overwriting existing 'value' or 'update' properties.\n */\nfunction collectSignals(spec, config) {\n const _ = name => value(spec[name], config[name]),\n signals = [signalObject('background', _('background')), signalObject('autosize', parseAutosize(_('autosize'))), signalObject('padding', parsePadding(_('padding'))), signalObject('width', _('width') || 0), signalObject('height', _('height') || 0)],\n pre = signals.reduce((p, s) => (p[s.name] = s, p), {}),\n map = {};\n\n // add spec signal array\n array$5(spec.signals).forEach(s => {\n if (has$1(pre, s.name)) {\n // merge if built-in signal\n s = extend$1(pre[s.name], s);\n } else {\n // otherwise add to signal list\n signals.push(s);\n }\n map[s.name] = s;\n });\n\n // add config signal array\n array$5(config.signals).forEach(s => {\n if (!has$1(map, s.name) && !has$1(pre, s.name)) {\n // add to signal list if not already defined\n signals.push(s);\n }\n });\n return signals;\n}\nfunction Scope(config, options) {\n this.config = config || {};\n this.options = options || {};\n this.bindings = [];\n this.field = {};\n this.signals = {};\n this.lambdas = {};\n this.scales = {};\n this.events = {};\n this.data = {};\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this.eventConfig = null;\n this.locale = null;\n this._id = 0;\n this._subid = 0;\n this._nextsub = [0];\n this._parent = [];\n this._encode = [];\n this._lookup = [];\n this._markpath = [];\n}\nfunction Subscope(scope) {\n this.config = scope.config;\n this.options = scope.options;\n this.legends = scope.legends;\n this.field = Object.create(scope.field);\n this.signals = Object.create(scope.signals);\n this.lambdas = Object.create(scope.lambdas);\n this.scales = Object.create(scope.scales);\n this.events = Object.create(scope.events);\n this.data = Object.create(scope.data);\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this._id = 0;\n this._subid = ++scope._nextsub[0];\n this._nextsub = scope._nextsub;\n this._parent = scope._parent.slice();\n this._encode = scope._encode.slice();\n this._lookup = scope._lookup.slice();\n this._markpath = scope._markpath;\n}\nScope.prototype = Subscope.prototype = {\n parse(spec) {\n return parseScope(spec, this);\n },\n fork() {\n return new Subscope(this);\n },\n isSubscope() {\n return this._subid > 0;\n },\n toRuntime() {\n this.finish();\n return {\n description: this.description,\n operators: this.operators,\n streams: this.streams,\n updates: this.updates,\n bindings: this.bindings,\n eventConfig: this.eventConfig,\n locale: this.locale\n };\n },\n id() {\n return (this._subid ? this._subid + ':' : 0) + this._id++;\n },\n add(op) {\n this.operators.push(op);\n op.id = this.id();\n // if pre-registration references exist, resolve them now\n if (op.refs) {\n op.refs.forEach(ref => {\n ref.$ref = op.id;\n });\n op.refs = null;\n }\n return op;\n },\n proxy(op) {\n const vref = op instanceof Entry$1 ? ref(op) : op;\n return this.add(Proxy({\n value: vref\n }));\n },\n addStream(stream) {\n this.streams.push(stream);\n stream.id = this.id();\n return stream;\n },\n addUpdate(update) {\n this.updates.push(update);\n return update;\n },\n // Apply metadata\n finish() {\n let name, ds;\n\n // annotate root\n if (this.root) this.root.root = true;\n\n // annotate signals\n for (name in this.signals) {\n this.signals[name].signal = name;\n }\n\n // annotate scales\n for (name in this.scales) {\n this.scales[name].scale = name;\n }\n\n // annotate data sets\n function annotate(op, name, type) {\n let data, list;\n if (op) {\n data = op.data || (op.data = {});\n list = data[name] || (data[name] = []);\n list.push(type);\n }\n }\n for (name in this.data) {\n ds = this.data[name];\n annotate(ds.input, name, 'input');\n annotate(ds.output, name, 'output');\n annotate(ds.values, name, 'values');\n for (const field in ds.index) {\n annotate(ds.index[field], name, 'index:' + field);\n }\n }\n return this;\n },\n // ----\n\n pushState(encode, parent, lookup) {\n this._encode.push(ref(this.add(Sieve({\n pulse: encode\n }))));\n this._parent.push(parent);\n this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n this._markpath.push(-1);\n },\n popState() {\n this._encode.pop();\n this._parent.pop();\n this._lookup.pop();\n this._markpath.pop();\n },\n parent() {\n return peek$1(this._parent);\n },\n encode() {\n return peek$1(this._encode);\n },\n lookup() {\n return peek$1(this._lookup);\n },\n markpath() {\n const p = this._markpath;\n return ++p[p.length - 1];\n },\n // ----\n\n fieldRef(field, name) {\n if (isString(field)) return fieldRef$1(field, name);\n if (!field.signal) {\n error('Unsupported field reference: ' + $(field));\n }\n const s = field.signal;\n let f = this.field[s];\n if (!f) {\n const params = {\n name: this.signalRef(s)\n };\n if (name) params.as = name;\n this.field[s] = f = ref(this.add(Field(params)));\n }\n return f;\n },\n compareRef(cmp) {\n let signal = false;\n const check = _ => isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, this.exprRef(_.expr)) : _;\n const fields = array$5(cmp.field).map(check),\n orders = array$5(cmp.order).map(check);\n return signal ? ref(this.add(Compare({\n fields: fields,\n orders: orders\n }))) : compareRef(fields, orders);\n },\n keyRef(fields, flat) {\n let signal = false;\n const check = _ => isSignal(_) ? (signal = true, ref(sig[_.signal])) : _;\n const sig = this.signals;\n fields = array$5(fields).map(check);\n return signal ? ref(this.add(Key({\n fields: fields,\n flat: flat\n }))) : keyRef(fields, flat);\n },\n sortRef(sort) {\n if (!sort) return sort;\n\n // including id ensures stable sorting\n const a = aggrField(sort.op, sort.field),\n o = sort.order || Ascending;\n return o.signal ? ref(this.add(Compare({\n fields: a,\n orders: this.signalRef(o.signal)\n }))) : compareRef(a, o);\n },\n // ----\n\n event(source, type) {\n const key = source + ':' + type;\n if (!this.events[key]) {\n const id = this.id();\n this.streams.push({\n id: id,\n source: source,\n type: type\n });\n this.events[key] = id;\n }\n return this.events[key];\n },\n // ----\n\n hasOwnSignal(name) {\n return has$1(this.signals, name);\n },\n addSignal(name, value) {\n if (this.hasOwnSignal(name)) {\n error('Duplicate signal name: ' + $(name));\n }\n const op = value instanceof Entry$1 ? value : this.add(operator(value));\n return this.signals[name] = op;\n },\n getSignal(name) {\n if (!this.signals[name]) {\n error('Unrecognized signal name: ' + $(name));\n }\n return this.signals[name];\n },\n signalRef(s) {\n if (this.signals[s]) {\n return ref(this.signals[s]);\n } else if (!has$1(this.lambdas, s)) {\n this.lambdas[s] = this.add(operator(null));\n }\n return ref(this.lambdas[s]);\n },\n parseLambdas() {\n const code = Object.keys(this.lambdas);\n for (let i = 0, n = code.length; i < n; ++i) {\n const s = code[i],\n e = parser(s, this),\n op = this.lambdas[s];\n op.params = e.$params;\n op.update = e.$expr;\n }\n },\n property(spec) {\n return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n },\n objectProperty(spec) {\n return !spec || !isObject(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec));\n },\n exprRef(code, name) {\n const params = {\n expr: parser(code, this)\n };\n if (name) params.expr.$name = name;\n return ref(this.add(Expression(params)));\n },\n addBinding(name, bind) {\n if (!this.bindings) {\n error('Nested signals do not support binding: ' + $(name));\n }\n this.bindings.push(extend$1({\n signal: name\n }, bind));\n },\n // ----\n\n addScaleProj(name, transform) {\n if (has$1(this.scales, name)) {\n error('Duplicate scale or projection name: ' + $(name));\n }\n this.scales[name] = this.add(transform);\n },\n addScale(name, params) {\n this.addScaleProj(name, Scale(params));\n },\n addProjection(name, params) {\n this.addScaleProj(name, Projection(params));\n },\n getScale(name) {\n if (!this.scales[name]) {\n error('Unrecognized scale name: ' + $(name));\n }\n return this.scales[name];\n },\n scaleRef(name) {\n return ref(this.getScale(name));\n },\n scaleType(name) {\n return this.getScale(name).params.type;\n },\n projectionRef(name) {\n return this.scaleRef(name);\n },\n projectionType(name) {\n return this.scaleType(name);\n },\n // ----\n\n addData(name, dataScope) {\n if (has$1(this.data, name)) {\n error('Duplicate data set name: ' + $(name));\n }\n return this.data[name] = dataScope;\n },\n getData(name) {\n if (!this.data[name]) {\n error('Undefined data set name: ' + $(name));\n }\n return this.data[name];\n },\n addDataPipeline(name, entries) {\n if (has$1(this.data, name)) {\n error('Duplicate data set name: ' + $(name));\n }\n return this.addData(name, DataScope.fromEntries(this, entries));\n }\n};\nfunction propertyLambda(spec) {\n return (isArray(spec) ? arrayLambda : objectLambda)(spec);\n}\nfunction arrayLambda(array) {\n const n = array.length;\n let code = '[';\n for (let i = 0; i < n; ++i) {\n const value = array[i];\n code += (i > 0 ? ',' : '') + (isObject(value) ? value.signal || propertyLambda(value) : $(value));\n }\n return code + ']';\n}\nfunction objectLambda(obj) {\n let code = '{',\n i = 0,\n key,\n value;\n for (key in obj) {\n value = obj[key];\n code += (++i > 1 ? ',' : '') + $(key) + ':' + (isObject(value) ? value.signal || propertyLambda(value) : $(value));\n }\n return code + '}';\n}\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults() {\n const defaultFont = 'sans-serif',\n defaultSymbolSize = 30,\n defaultStrokeWidth = 2,\n defaultColor = '#4c78a8',\n black = '#000',\n gray = '#888',\n lightGray = '#ddd';\n return {\n // default visualization description\n description: 'Vega visualization',\n // default padding around visualization\n padding: 0,\n // default for automatic sizing; options: 'none', 'pad', 'fit'\n // or provide an object (e.g., {'type': 'pad', 'resize': true})\n autosize: 'pad',\n // default view background color\n // covers the entire view component\n background: null,\n // default event handling configuration\n // preventDefault for view-sourced event types except 'wheel'\n events: {\n defaults: {\n allow: ['wheel']\n }\n },\n // defaults for top-level group marks\n // accepts mark properties (fill, stroke, etc)\n // covers the data rectangle within group width/height\n group: null,\n // defaults for basic mark types\n // each subset accepts mark properties (fill, stroke, etc)\n mark: null,\n arc: {\n fill: defaultColor\n },\n area: {\n fill: defaultColor\n },\n image: null,\n line: {\n stroke: defaultColor,\n strokeWidth: defaultStrokeWidth\n },\n path: {\n stroke: defaultColor\n },\n rect: {\n fill: defaultColor\n },\n rule: {\n stroke: black\n },\n shape: {\n stroke: defaultColor\n },\n symbol: {\n fill: defaultColor,\n size: 64\n },\n text: {\n fill: black,\n font: defaultFont,\n fontSize: 11\n },\n trail: {\n fill: defaultColor,\n size: defaultStrokeWidth\n },\n // style definitions\n style: {\n // axis & legend labels\n 'guide-label': {\n fill: black,\n font: defaultFont,\n fontSize: 10\n },\n // axis & legend titles\n 'guide-title': {\n fill: black,\n font: defaultFont,\n fontSize: 11,\n fontWeight: 'bold'\n },\n // headers, including chart title\n 'group-title': {\n fill: black,\n font: defaultFont,\n fontSize: 13,\n fontWeight: 'bold'\n },\n // chart subtitle\n 'group-subtitle': {\n fill: black,\n font: defaultFont,\n fontSize: 12\n },\n // defaults for styled point marks in Vega-Lite\n point: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'circle'\n },\n circle: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth\n },\n square: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'square'\n },\n // defaults for styled group marks in Vega-Lite\n cell: {\n fill: 'transparent',\n stroke: lightGray\n },\n view: {\n fill: 'transparent'\n }\n },\n // defaults for title\n title: {\n orient: 'top',\n anchor: 'middle',\n offset: 4,\n subtitlePadding: 3\n },\n // defaults for axes\n axis: {\n minExtent: 0,\n maxExtent: 200,\n bandPosition: 0.5,\n domain: true,\n domainWidth: 1,\n domainColor: gray,\n grid: false,\n gridWidth: 1,\n gridColor: lightGray,\n labels: true,\n labelAngle: 0,\n labelLimit: 180,\n labelOffset: 0,\n labelPadding: 2,\n ticks: true,\n tickColor: gray,\n tickOffset: 0,\n tickRound: true,\n tickSize: 5,\n tickWidth: 1,\n titlePadding: 4\n },\n // correction for centering bias\n axisBand: {\n tickOffset: -0.5\n },\n // defaults for cartographic projection\n projection: {\n type: 'mercator'\n },\n // defaults for legends\n legend: {\n orient: 'right',\n padding: 0,\n gridAlign: 'each',\n columnPadding: 10,\n rowPadding: 2,\n symbolDirection: 'vertical',\n gradientDirection: 'vertical',\n gradientLength: 200,\n gradientThickness: 16,\n gradientStrokeColor: lightGray,\n gradientStrokeWidth: 0,\n gradientLabelOffset: 2,\n labelAlign: 'left',\n labelBaseline: 'middle',\n labelLimit: 160,\n labelOffset: 4,\n labelOverlap: true,\n symbolLimit: 30,\n symbolType: 'circle',\n symbolSize: 100,\n symbolOffset: 0,\n symbolStrokeWidth: 1.5,\n symbolBaseFillColor: 'transparent',\n symbolBaseStrokeColor: gray,\n titleLimit: 180,\n titleOrient: 'top',\n titlePadding: 5,\n layout: {\n offset: 18,\n direction: 'horizontal',\n left: {\n direction: 'vertical'\n },\n right: {\n direction: 'vertical'\n }\n }\n },\n // defaults for scale ranges\n range: {\n category: {\n scheme: 'tableau10'\n },\n ordinal: {\n scheme: 'blues'\n },\n heatmap: {\n scheme: 'yellowgreenblue'\n },\n ramp: {\n scheme: 'blues'\n },\n diverging: {\n scheme: 'blueorange',\n extent: [1, 0]\n },\n symbol: ['circle', 'square', 'triangle-up', 'cross', 'diamond', 'triangle-right', 'triangle-down', 'triangle-left']\n }\n };\n}\nfunction parse(spec, config, options) {\n if (!isObject(spec)) {\n error('Input Vega specification must be an object.');\n }\n config = mergeConfig(defaults(), config, spec.config);\n return parseView(spec, new Scope(config, options)).toRuntime();\n}\nvar version$4 = \"5.25.0\";\n\n// -- Transforms -----\nextend$1(transforms, tx, vtx, encode$1, geo, force, label, tree, reg, voronoi, wordcloud, xf);\nvar vegaImport = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Bounds: Bounds,\n CanvasHandler: CanvasHandler,\n CanvasRenderer: CanvasRenderer,\n DATE: DATE,\n DAY: DAY,\n DAYOFYEAR: DAYOFYEAR,\n Dataflow: Dataflow,\n Debug: Debug,\n Error: Error$1,\n EventStream: EventStream,\n Gradient: Gradient$1,\n GroupItem: GroupItem,\n HOURS: HOURS,\n Handler: Handler$1,\n Info: Info,\n Item: Item,\n MILLISECONDS: MILLISECONDS,\n MINUTES: MINUTES,\n MONTH: MONTH,\n Marks: Marks,\n MultiPulse: MultiPulse,\n None: None$2,\n Operator: Operator,\n Parameters: Parameters,\n Pulse: Pulse,\n QUARTER: QUARTER,\n RenderType: RenderType,\n Renderer: Renderer,\n ResourceLoader: ResourceLoader,\n SECONDS: SECONDS,\n SVGHandler: SVGHandler,\n SVGRenderer: SVGRenderer,\n SVGStringRenderer: SVGStringRenderer,\n Scenegraph: Scenegraph,\n TIME_UNITS: TIME_UNITS,\n Transform: Transform,\n View: View$1,\n WEEK: WEEK,\n Warn: Warn,\n YEAR: YEAR,\n accessor: accessor,\n accessorFields: accessorFields,\n accessorName: accessorName,\n array: array$5,\n ascending: ascending$3,\n bandwidthNRD: estimateBandwidth,\n bin: bin$1,\n bootstrapCI: bootstrapCI,\n boundClip: boundClip,\n boundContext: boundContext,\n boundItem: boundItem$1,\n boundMark: boundMark,\n boundStroke: boundStroke,\n changeset: changeset,\n clampRange: clampRange,\n codegenExpression: codegen,\n compare: compare$8,\n constant: constant$5,\n cumulativeLogNormal: cumulativeLogNormal,\n cumulativeNormal: cumulativeNormal,\n cumulativeUniform: cumulativeUniform,\n dayofyear: dayofyear,\n debounce: debounce,\n defaultLocale: defaultLocale,\n definition: definition$1,\n densityLogNormal: densityLogNormal,\n densityNormal: densityNormal,\n densityUniform: densityUniform,\n domChild: domChild,\n domClear: domClear,\n domCreate: domCreate,\n domFind: domFind,\n dotbin: dotbin,\n error: error,\n expressionFunction: expressionFunction,\n extend: extend$1,\n extent: extent,\n extentIndex: extentIndex,\n falsy: falsy,\n fastmap: fastmap,\n field: field$1,\n flush: flush,\n font: font$1,\n fontFamily: fontFamily,\n fontSize: fontSize,\n format: format$2,\n formatLocale: numberFormatDefaultLocale,\n formats: formats$1,\n hasOwnProperty: has$1,\n id: id,\n identity: identity$6,\n inferType: inferType,\n inferTypes: inferTypes,\n ingest: ingest$1,\n inherits: inherits,\n inrange: inrange,\n interpolate: interpolate$1,\n interpolateColors: interpolateColors,\n interpolateRange: interpolateRange$1,\n intersect: intersect$2,\n intersectBoxLine: intersectBoxLine,\n intersectPath: intersectPath,\n intersectPoint: intersectPoint,\n intersectRule: intersectRule,\n isArray: isArray,\n isBoolean: isBoolean$2,\n isDate: isDate$1,\n isFunction: isFunction$1,\n isIterable: isIterable,\n isNumber: isNumber$1,\n isObject: isObject,\n isRegExp: isRegExp,\n isString: isString,\n isTuple: isTuple,\n key: key,\n lerp: lerp,\n lineHeight: lineHeight,\n loader: loader,\n locale: locale,\n logger: logger,\n lruCache: lruCache$1,\n markup: markup,\n merge: merge$3,\n mergeConfig: mergeConfig,\n multiLineOffset: multiLineOffset,\n one: one$2,\n pad: pad$2,\n panLinear: panLinear,\n panLog: panLog,\n panPow: panPow,\n panSymlog: panSymlog,\n parse: parse,\n parseExpression: parser$1,\n parseSelector: eventSelector,\n path: path$3,\n pathCurves: curves,\n pathEqual: pathEqual,\n pathParse: parse$3,\n pathRectangle: vg_rect,\n pathRender: pathRender,\n pathSymbols: symbols$1,\n pathTrail: vg_trail,\n peek: peek$1,\n point: point$2,\n projection: projection,\n quantileLogNormal: quantileLogNormal,\n quantileNormal: quantileNormal,\n quantileUniform: quantileUniform,\n quantiles: quantiles,\n quantizeInterpolator: quantizeInterpolator,\n quarter: quarter,\n quartiles: quartiles,\n get random() {\n return random;\n },\n randomInteger: integer,\n randomKDE: kde,\n randomLCG: lcg$2,\n randomLogNormal: lognormal,\n randomMixture: mixture$1,\n randomNormal: gaussian,\n randomUniform: uniform,\n read: read,\n regressionConstant: constant$4,\n regressionExp: exp$1,\n regressionLinear: linear$2,\n regressionLoess: loess,\n regressionLog: log$3,\n regressionPoly: poly,\n regressionPow: pow$3,\n regressionQuad: quad,\n renderModule: renderModule,\n repeat: repeat,\n resetDefaultLocale: resetDefaultLocale,\n resetSVGClipId: resetSVGClipId,\n resetSVGDefIds: resetSVGDefIds,\n responseType: responseType,\n runtimeContext: context,\n sampleCurve: sampleCurve,\n sampleLogNormal: sampleLogNormal,\n sampleNormal: sampleNormal,\n sampleUniform: sampleUniform,\n scale: scale$4,\n sceneEqual: sceneEqual,\n sceneFromJSON: sceneFromJSON,\n scenePickVisit: pickVisit,\n sceneToJSON: sceneToJSON,\n sceneVisit: visit,\n sceneZOrder: zorder,\n scheme: scheme$1,\n serializeXML: serializeXML,\n setRandom: setRandom,\n span: span,\n splitAccessPath: splitAccessPath,\n stringValue: $,\n textMetrics: textMetrics,\n timeBin: bin$2,\n timeFloor: timeFloor,\n timeFormatLocale: timeFormatDefaultLocale,\n timeInterval: timeInterval,\n timeOffset: timeOffset,\n timeSequence: timeSequence,\n timeUnitSpecifier: timeUnitSpecifier,\n timeUnits: timeUnits,\n toBoolean: toBoolean,\n toDate: toDate,\n toNumber: toNumber,\n toSet: toSet,\n toString: toString,\n transform: transform$2,\n transforms: transforms,\n truncate: truncate$1,\n truthy: truthy,\n tupleid: tupleid,\n typeParsers: typeParsers,\n utcFloor: utcFloor,\n utcInterval: utcInterval,\n utcOffset: utcOffset,\n utcSequence: utcSequence,\n utcdayofyear: utcdayofyear,\n utcquarter: utcquarter,\n utcweek: utcweek,\n version: version$4,\n visitArray: visitArray,\n week: week,\n writeConfig: writeConfig,\n zero: zero$5,\n zoomLinear: zoomLinear,\n zoomLog: zoomLog,\n zoomPow: zoomPow,\n zoomSymlog: zoomSymlog\n});\nfunction adjustSpatial(item, encode, swap) {\n let t;\n if (encode.x2) {\n if (encode.x) {\n if (swap && item.x > item.x2) {\n t = item.x;\n item.x = item.x2;\n item.x2 = t;\n }\n item.width = item.x2 - item.x;\n } else {\n item.x = item.x2 - (item.width || 0);\n }\n }\n if (encode.xc) {\n item.x = item.xc - (item.width || 0) / 2;\n }\n if (encode.y2) {\n if (encode.y) {\n if (swap && item.y > item.y2) {\n t = item.y;\n item.y = item.y2;\n item.y2 = t;\n }\n item.height = item.y2 - item.y;\n } else {\n item.y = item.y2 - (item.height || 0);\n }\n }\n if (encode.yc) {\n item.y = item.yc - (item.height || 0) / 2;\n }\n}\nvar Constants = {\n NaN: NaN,\n E: Math.E,\n LN2: Math.LN2,\n LN10: Math.LN10,\n LOG2E: Math.LOG2E,\n LOG10E: Math.LOG10E,\n PI: Math.PI,\n SQRT1_2: Math.SQRT1_2,\n SQRT2: Math.SQRT2,\n MIN_VALUE: Number.MIN_VALUE,\n MAX_VALUE: Number.MAX_VALUE\n};\nvar Ops = {\n '*': (a, b) => a * b,\n '+': (a, b) => a + b,\n '-': (a, b) => a - b,\n '/': (a, b) => a / b,\n '%': (a, b) => a % b,\n '>': (a, b) => a > b,\n '<': (a, b) => a < b,\n '<=': (a, b) => a <= b,\n '>=': (a, b) => a >= b,\n '==': (a, b) => a == b,\n '!=': (a, b) => a != b,\n '===': (a, b) => a === b,\n '!==': (a, b) => a !== b,\n '&': (a, b) => a & b,\n '|': (a, b) => a | b,\n '^': (a, b) => a ^ b,\n '<<': (a, b) => a << b,\n '>>': (a, b) => a >> b,\n '>>>': (a, b) => a >>> b\n};\nvar Unary = {\n '+': a => +a,\n '-': a => -a,\n '~': a => ~a,\n '!': a => !a\n};\nconst slice = Array.prototype.slice;\nconst apply = (m, args, cast) => {\n const obj = cast ? cast(args[0]) : args[0];\n return obj[m].apply(obj, slice.call(args, 1));\n};\nconst datetime = (y, m, d, H, M, S, ms) => new Date(y, m || 0, d != null ? d : 1, H || 0, M || 0, S || 0, ms || 0);\nvar Functions = {\n // math functions\n isNaN: Number.isNaN,\n isFinite: Number.isFinite,\n abs: Math.abs,\n acos: Math.acos,\n asin: Math.asin,\n atan: Math.atan,\n atan2: Math.atan2,\n ceil: Math.ceil,\n cos: Math.cos,\n exp: Math.exp,\n floor: Math.floor,\n log: Math.log,\n max: Math.max,\n min: Math.min,\n pow: Math.pow,\n random: Math.random,\n round: Math.round,\n sin: Math.sin,\n sqrt: Math.sqrt,\n tan: Math.tan,\n clamp: (a, b, c) => Math.max(b, Math.min(c, a)),\n // date functions\n now: Date.now,\n utc: Date.UTC,\n datetime: datetime,\n date: d => new Date(d).getDate(),\n day: d => new Date(d).getDay(),\n year: d => new Date(d).getFullYear(),\n month: d => new Date(d).getMonth(),\n hours: d => new Date(d).getHours(),\n minutes: d => new Date(d).getMinutes(),\n seconds: d => new Date(d).getSeconds(),\n milliseconds: d => new Date(d).getMilliseconds(),\n time: d => new Date(d).getTime(),\n timezoneoffset: d => new Date(d).getTimezoneOffset(),\n utcdate: d => new Date(d).getUTCDate(),\n utcday: d => new Date(d).getUTCDay(),\n utcyear: d => new Date(d).getUTCFullYear(),\n utcmonth: d => new Date(d).getUTCMonth(),\n utchours: d => new Date(d).getUTCHours(),\n utcminutes: d => new Date(d).getUTCMinutes(),\n utcseconds: d => new Date(d).getUTCSeconds(),\n utcmilliseconds: d => new Date(d).getUTCMilliseconds(),\n // sequence functions\n length: x => x.length,\n join: function () {\n return apply('join', arguments);\n },\n indexof: function () {\n return apply('indexOf', arguments);\n },\n lastindexof: function () {\n return apply('lastIndexOf', arguments);\n },\n slice: function () {\n return apply('slice', arguments);\n },\n reverse: x => x.slice().reverse(),\n // string functions\n parseFloat: parseFloat,\n parseInt: parseInt,\n upper: x => String(x).toUpperCase(),\n lower: x => String(x).toLowerCase(),\n substring: function () {\n return apply('substring', arguments, String);\n },\n split: function () {\n return apply('split', arguments, String);\n },\n replace: function () {\n return apply('replace', arguments, String);\n },\n trim: x => String(x).trim(),\n // regexp functions\n regexp: RegExp,\n test: (r, t) => RegExp(r).test(t)\n};\nconst EventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'];\nconst DisallowedMethods = new Set([Function, eval, setTimeout, setInterval]);\nif (typeof setImmediate === 'function') DisallowedMethods.add(setImmediate);\nconst Visitors = {\n Literal: ($, n) => n.value,\n Identifier: ($, n) => {\n const id = n.name;\n return $.memberDepth > 0 ? id : id === 'datum' ? $.datum : id === 'event' ? $.event : id === 'item' ? $.item : Constants[id] || $.params['$' + id];\n },\n MemberExpression: ($, n) => {\n const d = !n.computed,\n o = $(n.object);\n if (d) $.memberDepth += 1;\n const p = $(n.property);\n if (d) $.memberDepth -= 1;\n if (DisallowedMethods.has(o[p])) {\n // eslint-disable-next-line no-console\n console.error(\"Prevented interpretation of member \\\"\".concat(p, \"\\\" which could lead to insecure code execution\"));\n return;\n }\n return o[p];\n },\n CallExpression: ($, n) => {\n const args = n.arguments;\n let name = n.callee.name;\n\n // handle special internal functions used by encoders\n // re-route to corresponding standard function\n if (name.startsWith('_')) {\n name = name.slice(1);\n }\n\n // special case \"if\" due to conditional evaluation of branches\n return name === 'if' ? $(args[0]) ? $(args[1]) : $(args[2]) : ($.fn[name] || Functions[name]).apply($.fn, args.map($));\n },\n ArrayExpression: ($, n) => n.elements.map($),\n BinaryExpression: ($, n) => Ops[n.operator]($(n.left), $(n.right)),\n UnaryExpression: ($, n) => Unary[n.operator]($(n.argument)),\n ConditionalExpression: ($, n) => $(n.test) ? $(n.consequent) : $(n.alternate),\n LogicalExpression: ($, n) => n.operator === '&&' ? $(n.left) && $(n.right) : $(n.left) || $(n.right),\n ObjectExpression: ($, n) => n.properties.reduce((o, p) => {\n $.memberDepth += 1;\n const k = $(p.key);\n $.memberDepth -= 1;\n if (DisallowedMethods.has($(p.value))) {\n // eslint-disable-next-line no-console\n console.error(\"Prevented interpretation of property \\\"\".concat(k, \"\\\" which could lead to insecure code execution\"));\n } else {\n o[k] = $(p.value);\n }\n return o;\n }, {})\n};\nfunction interpret(ast, fn, params, datum, event, item) {\n const $ = n => Visitors[n.type]($, n);\n $.memberDepth = 0;\n $.fn = Object.create(fn);\n $.params = params;\n $.datum = datum;\n $.event = event;\n $.item = item;\n\n // route event functions to annotated vega event context\n EventFunctions.forEach(f => $.fn[f] = function () {\n return event.vega[f](...arguments);\n });\n return $(ast);\n}\nvar expression$1 = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return _ => interpret(ast, fn, _);\n },\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return (datum, _) => interpret(ast, fn, _, datum);\n },\n /**\n * Parse an expression applied to an event stream.\n */\n event(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return event => interpret(ast, fn, undefined, undefined, event);\n },\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return (_, event) => {\n const datum = event.item && event.item.datum;\n return interpret(ast, fn, _, datum, event);\n };\n },\n /**\n * Parse an expression that performs visual encoding.\n */\n encode(ctx, encode) {\n const {\n marktype,\n channels\n } = encode,\n fn = ctx.functions,\n swap = marktype === 'group' || marktype === 'image' || marktype === 'rect';\n return (item, _) => {\n const datum = item.datum;\n let m = 0,\n v;\n for (const name in channels) {\n v = interpret(channels[name].ast, fn, _, datum, undefined, item);\n if (item[name] !== v) {\n item[name] = v;\n m = 1;\n }\n }\n if (marktype !== 'rule') {\n adjustSpatial(item, channels, swap);\n }\n return m;\n };\n }\n};\nvar name$1 = \"vega-lite\";\nvar author$1 = \"Dominik Moritz, Kanit \\\"Ham\\\" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer\";\nvar version$3 = \"5.14.1\";\nvar collaborators = [\"Kanit Wongsuphasawat (http://kanitw.yellowpigz.com)\", \"Dominik Moritz (https://www.domoritz.de)\", \"Arvind Satyanarayan (https://arvindsatya.com)\", \"Jeffrey Heer (https://jheer.org)\"];\nvar homepage = \"https://vega.github.io/vega-lite/\";\nvar description$2 = \"Vega-Lite is a concise high-level language for interactive visualization.\";\nvar keywords$1 = [\"vega\", \"chart\", \"visualization\"];\nvar main$2 = \"build/vega-lite.js\";\nvar unpkg$1 = \"build/vega-lite.min.js\";\nvar jsdelivr$1 = \"build/vega-lite.min.js\";\nvar module$1 = \"build/src/index\";\nvar types$1 = \"build/src/index.d.ts\";\nvar bin = {\n vl2pdf: \"./bin/vl2pdf\",\n vl2png: \"./bin/vl2png\",\n vl2svg: \"./bin/vl2svg\",\n vl2vg: \"./bin/vl2vg\"\n};\nvar files$1 = [\"bin\", \"build\", \"src\", \"vega-lite*\", \"tsconfig.json\"];\nvar scripts$1 = {\n changelog: \"conventional-changelog -p angular -r 2\",\n prebuild: \"yarn clean:build\",\n build: \"yarn build:only\",\n \"build:only\": \"tsc -p tsconfig.build.json && rollup -c\",\n \"prebuild:examples\": \"yarn build:only\",\n \"build:examples\": \"yarn data && TZ=America/Los_Angeles scripts/build-examples.sh\",\n \"prebuild:examples-full\": \"yarn build:only\",\n \"build:examples-full\": \"TZ=America/Los_Angeles scripts/build-examples.sh 1\",\n \"build:example\": \"TZ=America/Los_Angeles scripts/build-example.sh\",\n \"build:toc\": \"yarn build:jekyll && scripts/generate-toc\",\n \"build:site\": \"rollup -c site/rollup.config.mjs\",\n \"build:jekyll\": \"pushd site && bundle exec jekyll build -q && popd\",\n \"build:versions\": \"scripts/update-version.sh\",\n clean: \"yarn clean:build && del-cli 'site/data/*' 'examples/compiled/*.png' && find site/examples ! -name 'index.md' ! -name 'data' -type f -delete\",\n \"clean:build\": \"del-cli 'build/*' !build/vega-lite-schema.json\",\n data: \"rsync -r node_modules/vega-datasets/data/* site/data\",\n schema: \"mkdir -p build && ts-json-schema-generator -f tsconfig.json -p src/index.ts -t TopLevelSpec --no-type-check --no-ref-encode > build/vega-lite-schema.json && yarn renameschema && cp build/vega-lite-schema.json site/_data/\",\n renameschema: \"scripts/rename-schema.sh\",\n presite: \"yarn data && yarn schema && yarn build:site && yarn build:versions && scripts/create-example-pages.sh\",\n site: \"yarn site:only\",\n \"site:only\": \"pushd site && bundle exec jekyll serve -I -l && popd\",\n prettierbase: \"prettier '**/*.{md,css,yml}'\",\n format: \"eslint . --fix && yarn prettierbase --write\",\n lint: \"eslint . && yarn prettierbase --check\",\n jest: \"NODE_OPTIONS=--experimental-vm-modules npx jest\",\n test: \"yarn jest test/ && yarn lint && yarn schema && yarn jest examples/ && yarn test:runtime\",\n \"test:cover\": \"yarn jest --collectCoverage test/\",\n \"test:inspect\": \"node --inspect-brk --experimental-vm-modules ./node_modules/.bin/jest --runInBand test\",\n \"test:runtime\": \"NODE_OPTIONS=--experimental-vm-modules TZ=America/Los_Angeles npx jest test-runtime/ --config test-runtime/jest-config.json\",\n \"test:runtime:generate\": \"yarn build:only && del-cli test-runtime/resources && VL_GENERATE_TESTS=true yarn test:runtime\",\n watch: \"tsc -p tsconfig.build.json -w\",\n \"watch:site\": \"yarn build:site -w\",\n \"watch:test\": \"yarn jest --watch test/\",\n \"watch:test:runtime\": \"NODE_OPTIONS=--experimental-vm-modules TZ=America/Los_Angeles npx jest --watch test-runtime/ --config test-runtime/jest-config.json\",\n release: \"release-it\"\n};\nvar repository$1 = {\n type: \"git\",\n url: \"https://github.com/vega/vega-lite.git\"\n};\nvar license$1 = \"BSD-3-Clause\";\nvar bugs = {\n url: \"https://github.com/vega/vega-lite/issues\"\n};\nvar devDependencies$1 = {\n \"@babel/core\": \"^7.21.8\",\n \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n \"@babel/preset-env\": \"^7.21.5\",\n \"@babel/preset-typescript\": \"^7.21.5\",\n \"@release-it/conventional-changelog\": \"^7.0.0\",\n \"@rollup/plugin-alias\": \"^5.0.0\",\n \"@rollup/plugin-babel\": \"^6.0.3\",\n \"@rollup/plugin-commonjs\": \"^25.0.0\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.0.2\",\n \"@rollup/plugin-terser\": \"^0.4.1\",\n \"@types/chai\": \"^4.3.5\",\n \"@types/d3\": \"^7.4.0\",\n \"@types/jest\": \"^27.4.1\",\n \"@types/pako\": \"^2.0.0\",\n \"@typescript-eslint/eslint-plugin\": \"^5.59.5\",\n \"@typescript-eslint/parser\": \"^5.59.5\",\n ajv: \"^8.12.0\",\n \"ajv-formats\": \"^2.1.1\",\n chai: \"^4.3.7\",\n cheerio: \"^1.0.0-rc.12\",\n \"conventional-changelog-cli\": \"^3.0.0\",\n d3: \"^7.8.4\",\n \"del-cli\": \"^5.0.0\",\n eslint: \"^8.40.0\",\n \"eslint-config-prettier\": \"^8.8.0\",\n \"eslint-plugin-jest\": \"^27.2.1\",\n \"eslint-plugin-prettier\": \"^4.2.1\",\n \"highlight.js\": \"^11.8.0\",\n jest: \"^27.5.1\",\n \"jest-dev-server\": \"^6.1.1\",\n mkdirp: \"^3.0.1\",\n pako: \"^2.1.0\",\n prettier: \"^2.8.8\",\n puppeteer: \"^15.0.0\",\n \"release-it\": \"^16.1.2\",\n rollup: \"^3.21.6\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-sourcemaps\": \"^0.6.3\",\n serve: \"^14.2.0\",\n terser: \"^5.17.3\",\n \"ts-jest\": \"^29.1.0\",\n \"ts-json-schema-generator\": \"^1.2.0\",\n typescript: \"~4.9.5\",\n \"vega-cli\": \"^5.25.0\",\n \"vega-datasets\": \"^2.7.0\",\n \"vega-embed\": \"^6.22.1\",\n \"vega-tooltip\": \"^0.32.0\",\n \"yaml-front-matter\": \"^4.1.1\"\n};\nvar dependencies$1 = {\n \"@types/clone\": \"~2.1.1\",\n clone: \"~2.1.2\",\n \"fast-deep-equal\": \"~3.1.3\",\n \"fast-json-stable-stringify\": \"~2.1.0\",\n \"json-stringify-pretty-compact\": \"~3.0.0\",\n tslib: \"~2.5.0\",\n \"vega-event-selector\": \"~3.0.1\",\n \"vega-expression\": \"~5.1.0\",\n \"vega-util\": \"~1.17.2\",\n yargs: \"~17.7.2\"\n};\nvar peerDependencies$1 = {\n vega: \"^5.24.0\"\n};\nvar engines = {\n node: \">=16\"\n};\nvar pkg$1 = {\n name: name$1,\n author: author$1,\n version: version$3,\n collaborators: collaborators,\n homepage: homepage,\n description: description$2,\n keywords: keywords$1,\n main: main$2,\n unpkg: unpkg$1,\n jsdelivr: jsdelivr$1,\n module: module$1,\n types: types$1,\n bin: bin,\n files: files$1,\n scripts: scripts$1,\n repository: repository$1,\n license: license$1,\n bugs: bugs,\n devDependencies: devDependencies$1,\n dependencies: dependencies$1,\n peerDependencies: peerDependencies$1,\n engines: engines\n};\nvar clone = {\n exports: {}\n};\n(function (module) {\n var clone = function () {\n function _instanceof(obj, type) {\n return type != null && obj instanceof type;\n }\n var nativeMap;\n try {\n nativeMap = Map;\n } catch (_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function () {};\n }\n var nativeSet;\n try {\n nativeSet = Set;\n } catch (_) {\n nativeSet = function () {};\n }\n var nativePromise;\n try {\n nativePromise = Promise;\n } catch (_) {\n nativePromise = function () {};\n }\n\n /**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n */\n function clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n var useBuffer = typeof Buffer != 'undefined';\n if (typeof circular == 'undefined') circular = true;\n if (typeof depth == 'undefined') depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null) return null;\n if (depth === 0) return parent;\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function (value) {\n resolve(_clone(value, depth - 1));\n }, function (err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n } else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n if (circular) {\n var index = allParents.indexOf(parent);\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function (value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function (value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n return child;\n }\n return _clone(parent, depth);\n }\n\n /**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\n clone.clonePrototype = function clonePrototype(parent) {\n if (parent === null) return null;\n var c = function () {};\n c.prototype = parent;\n return new c();\n };\n\n // private utility functions\n\n function __objToStr(o) {\n return Object.prototype.toString.call(o);\n }\n clone.__objToStr = __objToStr;\n function __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n }\n clone.__isDate = __isDate;\n function __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n }\n clone.__isArray = __isArray;\n function __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n }\n clone.__isRegExp = __isRegExp;\n function __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n }\n clone.__getRegExpFlags = __getRegExpFlags;\n return clone;\n }();\n if (module.exports) {\n module.exports = clone;\n }\n})(clone);\nvar cloneExports = clone.exports;\nvar clone_ = /*@__PURE__*/getDefaultExportFromCjs$1(cloneExports);\n\n// do not edit .js files directly - edit src/index.jst\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b;\n};\nvar equal = /*@__PURE__*/getDefaultExportFromCjs$1(fastDeepEqual);\nvar fastJsonStableStringify = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = {\n cmp: opts\n };\n var cycles = typeof opts.cycles === 'boolean' ? opts.cycles : false;\n var cmp = opts.cmp && function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = {\n key: a,\n value: node[a]\n };\n var bobj = {\n key: b,\n value: node[b]\n };\n return f(aobj, bobj);\n };\n };\n }(opts.cmp);\n var seen = [];\n return function stringify(node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n if (node === null) return 'null';\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n }(data);\n};\nvar stableStringify = /*@__PURE__*/getDefaultExportFromCjs$1(fastJsonStableStringify);\nfunction isLogicalOr(op) {\n return !!op.or;\n}\nfunction isLogicalAnd(op) {\n return !!op.and;\n}\nfunction isLogicalNot(op) {\n return !!op.not;\n}\nfunction forEachLeaf(op, fn) {\n if (isLogicalNot(op)) {\n forEachLeaf(op.not, fn);\n } else if (isLogicalAnd(op)) {\n for (const subop of op.and) {\n forEachLeaf(subop, fn);\n }\n } else if (isLogicalOr(op)) {\n for (const subop of op.or) {\n forEachLeaf(subop, fn);\n }\n } else {\n fn(op);\n }\n}\nfunction normalizeLogicalComposition(op, normalizer) {\n if (isLogicalNot(op)) {\n return {\n not: normalizeLogicalComposition(op.not, normalizer)\n };\n } else if (isLogicalAnd(op)) {\n return {\n and: op.and.map(o => normalizeLogicalComposition(o, normalizer))\n };\n } else if (isLogicalOr(op)) {\n return {\n or: op.or.map(o => normalizeLogicalComposition(o, normalizer))\n };\n } else {\n return normalizer(op);\n }\n}\nconst deepEqual = equal;\nconst duplicate = clone_;\nfunction never(message) {\n throw new Error(message);\n}\n/**\n * Creates an object composed of the picked object properties.\n *\n * var object = {'a': 1, 'b': '2', 'c': 3};\n * pick(object, ['a', 'c']);\n * // ā†’ {'a': 1, 'c': 3}\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction pick(obj, props) {\n const copy = {};\n for (const prop of props) {\n if (has$1(obj, prop)) {\n copy[prop] = obj[prop];\n }\n }\n return copy;\n}\n/**\n * The opposite of _.pick; this method creates an object composed of the own\n * and inherited enumerable string keyed properties of object that are not omitted.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction omit(obj, props) {\n const copy = {\n ...obj\n };\n for (const prop of props) {\n delete copy[prop];\n }\n return copy;\n}\n/**\n * Monkey patch Set so that `stringify` produces a string representation of sets.\n */\nSet.prototype['toJSON'] = function () {\n return \"Set(\".concat([...this].map(x => stableStringify(x)).join(','), \")\");\n};\n/**\n * Converts any object to a string representation that can be consumed by humans.\n */\nconst stringify$1 = stableStringify;\n/**\n * Converts any object to a string of limited size, or a number.\n */\nfunction hash(a) {\n if (isNumber$1(a)) {\n return a;\n }\n const str = isString(a) ? a : stableStringify(a);\n // short strings can be used as hash directly, longer strings are hashed to reduce memory usage\n if (str.length < 250) {\n return str;\n }\n // from http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n let h = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n h = (h << 5) - h + char;\n h = h & h; // Convert to 32bit integer\n }\n\n return h;\n}\nfunction isNullOrFalse(x) {\n return x === false || x === null;\n}\nfunction contains(array, item) {\n return array.includes(item);\n}\n/**\n * Returns true if any item returns true.\n */\nfunction some(arr, f) {\n let i = 0;\n for (const [k, a] of arr.entries()) {\n if (f(a, k, i++)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Returns true if all items return true.\n */\nfunction every(arr, f) {\n let i = 0;\n for (const [k, a] of arr.entries()) {\n if (!f(a, k, i++)) {\n return false;\n }\n }\n return true;\n}\n/**\n * recursively merges src into dest\n */\nfunction mergeDeep$1(dest) {\n for (var _len7 = arguments.length, src = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n src[_key7 - 1] = arguments[_key7];\n }\n for (const s of src) {\n deepMerge_$1(dest, s !== null && s !== void 0 ? s : {});\n }\n return dest;\n}\nfunction deepMerge_$1(dest, src) {\n for (const property of keys(src)) {\n writeConfig(dest, property, src[property], true);\n }\n}\nfunction unique(values, f) {\n const results = [];\n const u = {};\n let v;\n for (const val of values) {\n v = f(val);\n if (v in u) {\n continue;\n }\n u[v] = 1;\n results.push(val);\n }\n return results;\n}\n/**\n * Returns true if the two dictionaries disagree. Applies only to defined values.\n */\nfunction isEqual(dict, other) {\n const dictKeys = keys(dict);\n const otherKeys = keys(other);\n if (dictKeys.length !== otherKeys.length) {\n return false;\n }\n for (const key of dictKeys) {\n if (dict[key] !== other[key]) {\n return false;\n }\n }\n return true;\n}\nfunction setEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const e of a) {\n if (!b.has(e)) {\n return false;\n }\n }\n return true;\n}\nfunction hasIntersection(a, b) {\n for (const key of a) {\n if (b.has(key)) {\n return true;\n }\n }\n return false;\n}\nfunction prefixGenerator(a) {\n const prefixes = new Set();\n for (const x of a) {\n const splitField = splitAccessPath(x);\n // Wrap every element other than the first in `[]`\n const wrappedWithAccessors = splitField.map((y, i) => i === 0 ? y : \"[\".concat(y, \"]\"));\n const computedPrefixes = wrappedWithAccessors.map((_, i) => wrappedWithAccessors.slice(0, i + 1).join(''));\n for (const y of computedPrefixes) {\n prefixes.add(y);\n }\n }\n return prefixes;\n}\n/**\n * Returns true if a and b have an intersection. Also return true if a or b are undefined\n * since this means we don't know what fields a node produces or depends on.\n */\nfunction fieldIntersection(a, b) {\n if (a === undefined || b === undefined) {\n return true;\n }\n return hasIntersection(prefixGenerator(a), prefixGenerator(b));\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isEmpty(obj) {\n return keys(obj).length === 0;\n}\n// This is a stricter version of Object.keys but with better types. See https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\nconst keys = Object.keys;\nconst vals = Object.values;\nconst entries$1 = Object.entries;\nfunction isBoolean(b) {\n return b === true || b === false;\n}\n/**\n * Convert a string into a valid variable name\n */\nfunction varName(s) {\n // Replace non-alphanumeric characters (anything besides a-zA-Z0-9_) with _\n const alphanumericS = s.replace(/\\W/g, '_');\n // Add _ if the string has leading numbers.\n return (s.match(/^\\d+/) ? '_' : '') + alphanumericS;\n}\nfunction logicalExpr(op, cb) {\n if (isLogicalNot(op)) {\n return \"!(\".concat(logicalExpr(op.not, cb), \")\");\n } else if (isLogicalAnd(op)) {\n return \"(\".concat(op.and.map(and => logicalExpr(and, cb)).join(') && ('), \")\");\n } else if (isLogicalOr(op)) {\n return \"(\".concat(op.or.map(or => logicalExpr(or, cb)).join(') || ('), \")\");\n } else {\n return cb(op);\n }\n}\n/**\n * Delete nested property of an object, and delete the ancestors of the property if they become empty.\n */\nfunction deleteNestedProperty(obj, orderedProps) {\n if (orderedProps.length === 0) {\n return true;\n }\n const prop = orderedProps.shift(); // eslint-disable-line @typescript-eslint/no-non-null-assertion\n if (prop in obj && deleteNestedProperty(obj[prop], orderedProps)) {\n delete obj[prop];\n }\n return isEmpty(obj);\n}\nfunction titleCase(s) {\n return s.charAt(0).toUpperCase() + s.substr(1);\n}\n/**\n * Converts a path to an access path with datum.\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nfunction accessPathWithDatum(path) {\n let datum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'datum';\n const pieces = splitAccessPath(path);\n const prefixes = [];\n for (let i = 1; i <= pieces.length; i++) {\n const prefix = \"[\".concat(pieces.slice(0, i).map($).join(']['), \"]\");\n prefixes.push(\"\".concat(datum).concat(prefix));\n }\n return prefixes.join(' && ');\n}\n/**\n * Return access with datum to the flattened field.\n *\n * @param path The field name.\n * @param datum The string to use for `datum`.\n */\nfunction flatAccessWithDatum(path) {\n let datum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'datum';\n return \"\".concat(datum, \"[\").concat($(splitAccessPath(path).join('.')), \"]\");\n}\nfunction escapePathAccess(string) {\n return string.replace(/(\\[|\\]|\\.|'|\")/g, '\\\\$1');\n}\n/**\n * Replaces path accesses with access to non-nested field.\n * For example, `foo[\"bar\"].baz` becomes `foo\\\\.bar\\\\.baz`.\n */\nfunction replacePathInField(path) {\n return \"\".concat(splitAccessPath(path).map(escapePathAccess).join('\\\\.'));\n}\n/**\n * Replace all occurrences of a string with another string.\n *\n * @param string the string to replace in\n * @param find the string to replace\n * @param replacement the replacement\n */\nfunction replaceAll(string, find, replacement) {\n return string.replace(new RegExp(find.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g'), replacement);\n}\n/**\n * Remove path accesses with access from field.\n * For example, `foo[\"bar\"].baz` becomes `foo.bar.baz`.\n */\nfunction removePathFromField(path) {\n return \"\".concat(splitAccessPath(path).join('.'));\n}\n/**\n * Count the depth of the path. Returns 1 for fields that are not nested.\n */\nfunction accessPathDepth(path) {\n if (!path) {\n return 0;\n }\n return splitAccessPath(path).length;\n}\n/**\n * This is a replacement for chained || for numeric properties or properties that respect null so that 0 will be included.\n */\nfunction getFirstDefined() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n for (const arg of args) {\n if (arg !== undefined) {\n return arg;\n }\n }\n return undefined;\n}\n// variable used to generate id\nlet idCounter = 42;\n/**\n * Returns a new random id every time it gets called.\n *\n * Has side effect!\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter;\n return prefix ? String(prefix) + id : id;\n}\n/**\n * Resets the id counter used in uniqueId. This can be useful for testing.\n */\nfunction resetIdCounter() {\n idCounter = 42;\n}\nfunction internalField(name) {\n return isInternalField(name) ? name : \"__\".concat(name);\n}\nfunction isInternalField(name) {\n return name.startsWith('__');\n}\n/**\n * Normalize angle to be within [0,360).\n */\nfunction normalizeAngle(angle) {\n if (angle === undefined) {\n return undefined;\n }\n return (angle % 360 + 360) % 360;\n}\n/**\n * Returns whether the passed in value is a valid number.\n */\nfunction isNumeric(value) {\n if (isNumber$1(value)) {\n return true;\n }\n return !isNaN(value) && !isNaN(parseFloat(value));\n}\n\n/*\n * Constants and utilities for encoding channels (Visual variables)\n * such as 'x', 'y', 'color'.\n */\n// Facet\nconst ROW = 'row';\nconst COLUMN = 'column';\nconst FACET = 'facet';\n// Position\nconst X = 'x';\nconst Y = 'y';\nconst X2 = 'x2';\nconst Y2 = 'y2';\n// Position Offset\nconst XOFFSET = 'xOffset';\nconst YOFFSET = 'yOffset';\n// Arc-Position\nconst RADIUS = 'radius';\nconst RADIUS2 = 'radius2';\nconst THETA = 'theta';\nconst THETA2 = 'theta2';\n// Geo Position\nconst LATITUDE = 'latitude';\nconst LONGITUDE = 'longitude';\nconst LATITUDE2 = 'latitude2';\nconst LONGITUDE2 = 'longitude2';\n// Mark property with scale\nconst COLOR = 'color';\nconst FILL = 'fill';\nconst STROKE = 'stroke';\nconst SHAPE = 'shape';\nconst SIZE = 'size';\nconst ANGLE = 'angle';\nconst OPACITY = 'opacity';\nconst FILLOPACITY = 'fillOpacity';\nconst STROKEOPACITY = 'strokeOpacity';\nconst STROKEWIDTH = 'strokeWidth';\nconst STROKEDASH = 'strokeDash';\n// Non-scale channel\nconst TEXT$1 = 'text';\nconst ORDER = 'order';\nconst DETAIL = 'detail';\nconst KEY = 'key';\nconst TOOLTIP = 'tooltip';\nconst HREF = 'href';\nconst URL$1 = 'url';\nconst DESCRIPTION = 'description';\nconst POSITION_CHANNEL_INDEX = {\n x: 1,\n y: 1,\n x2: 1,\n y2: 1\n};\nconst POLAR_POSITION_CHANNEL_INDEX = {\n theta: 1,\n theta2: 1,\n radius: 1,\n radius2: 1\n};\nfunction isPolarPositionChannel(c) {\n return c in POLAR_POSITION_CHANNEL_INDEX;\n}\nconst GEO_POSIITON_CHANNEL_INDEX = {\n longitude: 1,\n longitude2: 1,\n latitude: 1,\n latitude2: 1\n};\nfunction getPositionChannelFromLatLong(channel) {\n switch (channel) {\n case LATITUDE:\n return 'y';\n case LATITUDE2:\n return 'y2';\n case LONGITUDE:\n return 'x';\n case LONGITUDE2:\n return 'x2';\n }\n}\nfunction isGeoPositionChannel(c) {\n return c in GEO_POSIITON_CHANNEL_INDEX;\n}\nconst GEOPOSITION_CHANNELS = keys(GEO_POSIITON_CHANNEL_INDEX);\nconst UNIT_CHANNEL_INDEX = {\n ...POSITION_CHANNEL_INDEX,\n ...POLAR_POSITION_CHANNEL_INDEX,\n ...GEO_POSIITON_CHANNEL_INDEX,\n xOffset: 1,\n yOffset: 1,\n // color\n color: 1,\n fill: 1,\n stroke: 1,\n // other non-position with scale\n opacity: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n strokeWidth: 1,\n strokeDash: 1,\n size: 1,\n angle: 1,\n shape: 1,\n // channels without scales\n order: 1,\n text: 1,\n detail: 1,\n key: 1,\n tooltip: 1,\n href: 1,\n url: 1,\n description: 1\n};\nfunction isColorChannel(channel) {\n return channel === COLOR || channel === FILL || channel === STROKE;\n}\nconst FACET_CHANNEL_INDEX = {\n row: 1,\n column: 1,\n facet: 1\n};\nconst FACET_CHANNELS = keys(FACET_CHANNEL_INDEX);\nconst CHANNEL_INDEX = {\n ...UNIT_CHANNEL_INDEX,\n ...FACET_CHANNEL_INDEX\n};\nconst CHANNELS = keys(CHANNEL_INDEX);\nconst {\n order: _o,\n detail: _d,\n tooltip: _tt1,\n ...SINGLE_DEF_CHANNEL_INDEX\n} = CHANNEL_INDEX;\nconst {\n row: _r,\n column: _c,\n facet: _f,\n ...SINGLE_DEF_UNIT_CHANNEL_INDEX\n} = SINGLE_DEF_CHANNEL_INDEX;\nfunction isSingleDefUnitChannel(str) {\n return !!SINGLE_DEF_UNIT_CHANNEL_INDEX[str];\n}\nfunction isChannel(str) {\n return !!CHANNEL_INDEX[str];\n}\nconst SECONDARY_RANGE_CHANNEL = [X2, Y2, LATITUDE2, LONGITUDE2, THETA2, RADIUS2];\nfunction isSecondaryRangeChannel(c) {\n const main = getMainRangeChannel(c);\n return main !== c;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nfunction getMainRangeChannel(channel) {\n switch (channel) {\n case X2:\n return X;\n case Y2:\n return Y;\n case LATITUDE2:\n return LATITUDE;\n case LONGITUDE2:\n return LONGITUDE;\n case THETA2:\n return THETA;\n case RADIUS2:\n return RADIUS;\n }\n return channel;\n}\nfunction getVgPositionChannel(channel) {\n if (isPolarPositionChannel(channel)) {\n switch (channel) {\n case THETA:\n return 'startAngle';\n case THETA2:\n return 'endAngle';\n case RADIUS:\n return 'outerRadius';\n case RADIUS2:\n return 'innerRadius';\n }\n }\n return channel;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nfunction getSecondaryRangeChannel(channel) {\n switch (channel) {\n case X:\n return X2;\n case Y:\n return Y2;\n case LATITUDE:\n return LATITUDE2;\n case LONGITUDE:\n return LONGITUDE2;\n case THETA:\n return THETA2;\n case RADIUS:\n return RADIUS2;\n }\n return undefined;\n}\nfunction getSizeChannel(channel) {\n switch (channel) {\n case X:\n case X2:\n return 'width';\n case Y:\n case Y2:\n return 'height';\n }\n return undefined;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nfunction getOffsetChannel(channel) {\n switch (channel) {\n case X:\n return 'xOffset';\n case Y:\n return 'yOffset';\n case X2:\n return 'x2Offset';\n case Y2:\n return 'y2Offset';\n case THETA:\n return 'thetaOffset';\n case RADIUS:\n return 'radiusOffset';\n case THETA2:\n return 'theta2Offset';\n case RADIUS2:\n return 'radius2Offset';\n }\n return undefined;\n}\n/**\n * Get the main channel for a range channel. E.g. `x` for `x2`.\n */\nfunction getOffsetScaleChannel(channel) {\n switch (channel) {\n case X:\n return 'xOffset';\n case Y:\n return 'yOffset';\n }\n return undefined;\n}\nfunction getMainChannelFromOffsetChannel(channel) {\n switch (channel) {\n case 'xOffset':\n return 'x';\n case 'yOffset':\n return 'y';\n }\n}\n// CHANNELS without COLUMN, ROW\nconst UNIT_CHANNELS = keys(UNIT_CHANNEL_INDEX);\n// NONPOSITION_CHANNELS = UNIT_CHANNELS without X, Y, X2, Y2;\nconst {\n x: _x,\n y: _y,\n // x2 and y2 share the same scale as x and y\n x2: _x2,\n y2: _y2,\n //\n xOffset: _xo,\n yOffset: _yo,\n latitude: _latitude,\n longitude: _longitude,\n latitude2: _latitude2,\n longitude2: _longitude2,\n theta: _theta,\n theta2: _theta2,\n radius: _radius,\n radius2: _radius2,\n // The rest of unit channels then have scale\n ...NONPOSITION_CHANNEL_INDEX\n} = UNIT_CHANNEL_INDEX;\nconst NONPOSITION_CHANNELS = keys(NONPOSITION_CHANNEL_INDEX);\nconst POSITION_SCALE_CHANNEL_INDEX = {\n x: 1,\n y: 1\n};\nconst POSITION_SCALE_CHANNELS = keys(POSITION_SCALE_CHANNEL_INDEX);\nfunction isXorY(channel) {\n return channel in POSITION_SCALE_CHANNEL_INDEX;\n}\nconst POLAR_POSITION_SCALE_CHANNEL_INDEX = {\n theta: 1,\n radius: 1\n};\nconst POLAR_POSITION_SCALE_CHANNELS = keys(POLAR_POSITION_SCALE_CHANNEL_INDEX);\nfunction getPositionScaleChannel(sizeType) {\n return sizeType === 'width' ? X : Y;\n}\nconst OFFSET_SCALE_CHANNEL_INDEX = {\n xOffset: 1,\n yOffset: 1\n};\nfunction isXorYOffset(channel) {\n return channel in OFFSET_SCALE_CHANNEL_INDEX;\n}\n// NON_POSITION_SCALE_CHANNEL = SCALE_CHANNELS without position / offset\nconst {\n // x2 and y2 share the same scale as x and y\n // text and tooltip have format instead of scale,\n // href has neither format, nor scale\n text: _t,\n tooltip: _tt,\n href: _hr,\n url: _u,\n description: _al,\n // detail and order have no scale\n detail: _dd,\n key: _k,\n order: _oo,\n ...NONPOSITION_SCALE_CHANNEL_INDEX\n} = NONPOSITION_CHANNEL_INDEX;\nconst NONPOSITION_SCALE_CHANNELS = keys(NONPOSITION_SCALE_CHANNEL_INDEX);\nfunction isNonPositionScaleChannel(channel) {\n return !!NONPOSITION_CHANNEL_INDEX[channel];\n}\n/**\n * @returns whether Vega supports legends for a particular channel\n */\nfunction supportLegend(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n case SIZE:\n case SHAPE:\n case OPACITY:\n case STROKEWIDTH:\n case STROKEDASH:\n return true;\n case FILLOPACITY:\n case STROKEOPACITY:\n case ANGLE:\n return false;\n }\n}\n// Declare SCALE_CHANNEL_INDEX\nconst SCALE_CHANNEL_INDEX = {\n ...POSITION_SCALE_CHANNEL_INDEX,\n ...POLAR_POSITION_SCALE_CHANNEL_INDEX,\n ...OFFSET_SCALE_CHANNEL_INDEX,\n ...NONPOSITION_SCALE_CHANNEL_INDEX\n};\n/** List of channels with scales */\nconst SCALE_CHANNELS = keys(SCALE_CHANNEL_INDEX);\nfunction isScaleChannel(channel) {\n return !!SCALE_CHANNEL_INDEX[channel];\n}\n/**\n * Return whether a channel supports a particular mark type.\n * @param channel channel name\n * @param mark the mark type\n * @return whether the mark supports the channel\n */\nfunction supportMark(channel, mark) {\n return getSupportedMark(channel)[mark];\n}\nconst ALL_MARKS = {\n // all marks\n arc: 'always',\n area: 'always',\n bar: 'always',\n circle: 'always',\n geoshape: 'always',\n image: 'always',\n line: 'always',\n rule: 'always',\n point: 'always',\n rect: 'always',\n square: 'always',\n trail: 'always',\n text: 'always',\n tick: 'always'\n};\nconst {\n geoshape: _g,\n ...ALL_MARKS_EXCEPT_GEOSHAPE\n} = ALL_MARKS;\n/**\n * Return a dictionary showing whether a channel supports mark type.\n * @param channel\n * @return A dictionary mapping mark types to 'always', 'binned', or undefined\n */\nfunction getSupportedMark(channel) {\n switch (channel) {\n case COLOR:\n case FILL:\n case STROKE:\n // falls through\n case DESCRIPTION:\n case DETAIL:\n case KEY:\n case TOOLTIP:\n case HREF:\n case ORDER: // TODO: revise (order might not support rect, which is not stackable?)\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n // falls through\n case FACET:\n case ROW: // falls through\n case COLUMN:\n return ALL_MARKS;\n case X:\n case Y:\n case XOFFSET:\n case YOFFSET:\n case LATITUDE:\n case LONGITUDE:\n // all marks except geoshape. geoshape does not use X, Y -- it uses a projection\n return ALL_MARKS_EXCEPT_GEOSHAPE;\n case X2:\n case Y2:\n case LATITUDE2:\n case LONGITUDE2:\n return {\n area: 'always',\n bar: 'always',\n image: 'always',\n rect: 'always',\n rule: 'always',\n circle: 'binned',\n point: 'binned',\n square: 'binned',\n tick: 'binned',\n line: 'binned',\n trail: 'binned'\n };\n case SIZE:\n return {\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n text: 'always',\n line: 'always',\n trail: 'always'\n };\n case STROKEDASH:\n return {\n line: 'always',\n point: 'always',\n tick: 'always',\n rule: 'always',\n circle: 'always',\n square: 'always',\n bar: 'always',\n geoshape: 'always'\n };\n case SHAPE:\n return {\n point: 'always',\n geoshape: 'always'\n };\n case TEXT$1:\n return {\n text: 'always'\n };\n case ANGLE:\n return {\n point: 'always',\n square: 'always',\n text: 'always'\n };\n case URL$1:\n return {\n image: 'always'\n };\n case THETA:\n return {\n text: 'always',\n arc: 'always'\n };\n case RADIUS:\n return {\n text: 'always',\n arc: 'always'\n };\n case THETA2:\n case RADIUS2:\n return {\n arc: 'always'\n };\n }\n}\nfunction rangeType(channel) {\n switch (channel) {\n case X:\n case Y:\n case THETA:\n case RADIUS:\n case XOFFSET:\n case YOFFSET:\n case SIZE:\n case ANGLE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // X2 and Y2 use X and Y scales, so they similarly have continuous range. [falls through]\n case X2:\n case Y2:\n case THETA2:\n case RADIUS2:\n return undefined;\n case FACET:\n case ROW:\n case COLUMN:\n case SHAPE:\n case STROKEDASH:\n // TEXT, TOOLTIP, URL, and HREF have no scale but have discrete output [falls through]\n case TEXT$1:\n case TOOLTIP:\n case HREF:\n case URL$1:\n case DESCRIPTION:\n return 'discrete';\n // Color can be either continuous or discrete, depending on scale type.\n case COLOR:\n case FILL:\n case STROKE:\n return 'flexible';\n // No scale, no range type.\n case LATITUDE:\n case LONGITUDE:\n case LATITUDE2:\n case LONGITUDE2:\n case DETAIL:\n case KEY:\n case ORDER:\n return undefined;\n }\n}\nconst AGGREGATE_OP_INDEX = {\n argmax: 1,\n argmin: 1,\n average: 1,\n count: 1,\n distinct: 1,\n product: 1,\n max: 1,\n mean: 1,\n median: 1,\n min: 1,\n missing: 1,\n q1: 1,\n q3: 1,\n ci0: 1,\n ci1: 1,\n stderr: 1,\n stdev: 1,\n stdevp: 1,\n sum: 1,\n valid: 1,\n values: 1,\n variance: 1,\n variancep: 1\n};\nconst MULTIDOMAIN_SORT_OP_INDEX = {\n count: 1,\n min: 1,\n max: 1\n};\nfunction isArgminDef(a) {\n return !!a && !!a['argmin'];\n}\nfunction isArgmaxDef(a) {\n return !!a && !!a['argmax'];\n}\nfunction isAggregateOp(a) {\n return isString(a) && !!AGGREGATE_OP_INDEX[a];\n}\nconst COUNTING_OPS = new Set(['count', 'valid', 'missing', 'distinct']);\nfunction isCountingAggregateOp(aggregate) {\n return isString(aggregate) && COUNTING_OPS.has(aggregate);\n}\nfunction isMinMaxOp(aggregate) {\n return isString(aggregate) && contains(['min', 'max'], aggregate);\n}\n/** Additive-based aggregation operations. These can be applied to stack. */\nconst SUM_OPS = new Set(['count', 'sum', 'distinct', 'valid', 'missing']);\n/**\n * Aggregation operators that always produce values within the range [domainMin, domainMax].\n */\nconst SHARED_DOMAIN_OPS = new Set(['mean', 'average', 'median', 'q1', 'q3', 'min', 'max']);\n\n/**\n * Create a key for the bin configuration. Not for prebinned bin.\n */\nfunction binToString(bin) {\n if (isBoolean$2(bin)) {\n bin = normalizeBin(bin, undefined);\n }\n return 'bin' + keys(bin).map(p => isParameterExtent(bin[p]) ? varName(\"_\".concat(p, \"_\").concat(entries$1(bin[p]))) : varName(\"_\".concat(p, \"_\").concat(bin[p]))).join('');\n}\n/**\n * Vega-Lite should bin the data.\n */\nfunction isBinning(bin) {\n return bin === true || isBinParams(bin) && !bin.binned;\n}\n/**\n * The data is already binned and so Vega-Lite should not bin it again.\n */\nfunction isBinned(bin) {\n return bin === 'binned' || isBinParams(bin) && bin.binned === true;\n}\nfunction isBinParams(bin) {\n return isObject(bin);\n}\nfunction isParameterExtent(extent) {\n return extent === null || extent === void 0 ? void 0 : extent['param'];\n}\nfunction autoMaxBins(channel) {\n switch (channel) {\n case ROW:\n case COLUMN:\n case SIZE:\n case COLOR:\n case FILL:\n case STROKE:\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // Facets and Size shouldn't have too many bins\n // We choose 6 like shape to simplify the rule [falls through]\n case SHAPE:\n return 6;\n // Vega's \"shape\" has 6 distinct values\n case STROKEDASH:\n return 4;\n // We only provide 5 different stroke dash values (but 4 is more effective)\n default:\n return 10;\n }\n}\nfunction isExprRef(o) {\n return !!(o !== null && o !== void 0 && o.expr);\n}\nfunction replaceExprRef(index) {\n const props = keys(index || {});\n const newIndex = {};\n for (const prop of props) {\n newIndex[prop] = signalRefOrValue(index[prop]);\n }\n return newIndex;\n}\nfunction extractTitleConfig(titleConfig) {\n const {\n // These are non-mark title config that need to be hardcoded\n anchor,\n frame,\n offset,\n orient,\n angle,\n limit,\n // color needs to be redirect to fill\n color,\n // subtitle properties\n subtitleColor,\n subtitleFont,\n subtitleFontSize,\n subtitleFontStyle,\n subtitleFontWeight,\n subtitleLineHeight,\n subtitlePadding,\n // The rest are mark config.\n ...rest\n } = titleConfig;\n const titleMarkConfig = {\n ...rest,\n ...(color ? {\n fill: color\n } : {})\n };\n // These are non-mark title config that need to be hardcoded\n const nonMarkTitleProperties = {\n ...(anchor ? {\n anchor\n } : {}),\n ...(frame ? {\n frame\n } : {}),\n ...(offset ? {\n offset\n } : {}),\n ...(orient ? {\n orient\n } : {}),\n ...(angle !== undefined ? {\n angle\n } : {}),\n ...(limit !== undefined ? {\n limit\n } : {})\n };\n // subtitle part can stay in config.title since header titles do not use subtitle\n const subtitle = {\n ...(subtitleColor ? {\n subtitleColor\n } : {}),\n ...(subtitleFont ? {\n subtitleFont\n } : {}),\n ...(subtitleFontSize ? {\n subtitleFontSize\n } : {}),\n ...(subtitleFontStyle ? {\n subtitleFontStyle\n } : {}),\n ...(subtitleFontWeight ? {\n subtitleFontWeight\n } : {}),\n ...(subtitleLineHeight ? {\n subtitleLineHeight\n } : {}),\n ...(subtitlePadding ? {\n subtitlePadding\n } : {})\n };\n const subtitleMarkConfig = pick(titleConfig, ['align', 'baseline', 'dx', 'dy', 'limit']);\n return {\n titleMarkConfig,\n subtitleMarkConfig,\n nonMarkTitleProperties,\n subtitle\n };\n}\nfunction isText(v) {\n return isString(v) || isArray(v) && isString(v[0]);\n}\nfunction isSignalRef(o) {\n return !!(o !== null && o !== void 0 && o.signal);\n}\nfunction isVgRangeStep(range) {\n return !!range['step'];\n}\nfunction isDataRefUnionedDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && !('data' in domain);\n }\n return false;\n}\nfunction isFieldRefUnionDomain(domain) {\n if (!isArray(domain)) {\n return 'fields' in domain && 'data' in domain;\n }\n return false;\n}\nfunction isDataRefDomain(domain) {\n if (!isArray(domain)) {\n return 'field' in domain && 'data' in domain;\n }\n return false;\n}\nconst VG_MARK_CONFIG_INDEX = {\n aria: 1,\n description: 1,\n ariaRole: 1,\n ariaRoleDescription: 1,\n blend: 1,\n opacity: 1,\n fill: 1,\n fillOpacity: 1,\n stroke: 1,\n strokeCap: 1,\n strokeWidth: 1,\n strokeOpacity: 1,\n strokeDash: 1,\n strokeDashOffset: 1,\n strokeJoin: 1,\n strokeOffset: 1,\n strokeMiterLimit: 1,\n startAngle: 1,\n endAngle: 1,\n padAngle: 1,\n innerRadius: 1,\n outerRadius: 1,\n size: 1,\n shape: 1,\n interpolate: 1,\n tension: 1,\n orient: 1,\n align: 1,\n baseline: 1,\n text: 1,\n dir: 1,\n dx: 1,\n dy: 1,\n ellipsis: 1,\n limit: 1,\n radius: 1,\n theta: 1,\n angle: 1,\n font: 1,\n fontSize: 1,\n fontWeight: 1,\n fontStyle: 1,\n lineBreak: 1,\n lineHeight: 1,\n cursor: 1,\n href: 1,\n tooltip: 1,\n cornerRadius: 1,\n cornerRadiusTopLeft: 1,\n cornerRadiusTopRight: 1,\n cornerRadiusBottomLeft: 1,\n cornerRadiusBottomRight: 1,\n aspect: 1,\n width: 1,\n height: 1,\n url: 1,\n smooth: 1\n // commented below are vg channel that do not have mark config.\n // x: 1,\n // y: 1,\n // x2: 1,\n // y2: 1,\n // xc'|'yc'\n // clip: 1,\n // path: 1,\n // url: 1,\n};\n\nconst VG_MARK_CONFIGS = keys(VG_MARK_CONFIG_INDEX);\nconst VG_MARK_INDEX = {\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n};\n// Vega's cornerRadius channels.\nconst VG_CORNERRADIUS_CHANNELS = ['cornerRadius', 'cornerRadiusTopLeft', 'cornerRadiusTopRight', 'cornerRadiusBottomLeft', 'cornerRadiusBottomRight'];\nfunction signalOrValueRefWithCondition(val) {\n const condition = isArray(val.condition) ? val.condition.map(conditionalSignalRefOrValue) : conditionalSignalRefOrValue(val.condition);\n return {\n ...signalRefOrValue(val),\n condition\n };\n}\nfunction signalRefOrValue(value) {\n if (isExprRef(value)) {\n const {\n expr,\n ...rest\n } = value;\n return {\n signal: expr,\n ...rest\n };\n }\n return value;\n}\nfunction conditionalSignalRefOrValue(value) {\n if (isExprRef(value)) {\n const {\n expr,\n ...rest\n } = value;\n return {\n signal: expr,\n ...rest\n };\n }\n return value;\n}\nfunction signalOrValueRef(value) {\n if (isExprRef(value)) {\n const {\n expr,\n ...rest\n } = value;\n return {\n signal: expr,\n ...rest\n };\n }\n if (isSignalRef(value)) {\n return value;\n }\n return value !== undefined ? {\n value\n } : undefined;\n}\nfunction exprFromSignalRefOrValue(ref) {\n if (isSignalRef(ref)) {\n return ref.signal;\n }\n return $(ref);\n}\nfunction exprFromValueRefOrSignalRef(ref) {\n if (isSignalRef(ref)) {\n return ref.signal;\n }\n return $(ref.value);\n}\nfunction signalOrStringValue(v) {\n if (isSignalRef(v)) {\n return v.signal;\n }\n return v == null ? null : $(v);\n}\nfunction applyMarkConfig(e, model, propsList) {\n for (const property of propsList) {\n const value = getMarkConfig(property, model.markDef, model.config);\n if (value !== undefined) {\n e[property] = signalOrValueRef(value);\n }\n }\n return e;\n}\nfunction getStyles(mark) {\n var _mark$style;\n return [].concat(mark.type, (_mark$style = mark.style) !== null && _mark$style !== void 0 ? _mark$style : []);\n}\nfunction getMarkPropOrConfig(channel, mark, config) {\n let opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const {\n vgChannel,\n ignoreVgConfig\n } = opt;\n if (vgChannel && mark[vgChannel] !== undefined) {\n return mark[vgChannel];\n } else if (mark[channel] !== undefined) {\n return mark[channel];\n } else if (ignoreVgConfig && (!vgChannel || vgChannel === channel)) {\n return undefined;\n }\n return getMarkConfig(channel, mark, config, opt);\n}\n/**\n * Return property value from style or mark specific config property if exists.\n * Otherwise, return general mark specific config.\n */\nfunction getMarkConfig(channel, mark, config) {\n let {\n vgChannel\n } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return getFirstDefined(\n // style config has highest precedence\n vgChannel ? getMarkStyleConfig(channel, mark, config.style) : undefined, getMarkStyleConfig(channel, mark, config.style),\n // then mark-specific config\n vgChannel ? config[mark.type][vgChannel] : undefined, config[mark.type][channel],\n // Need to cast because MarkDef doesn't perfectly match with AnyMarkConfig, but if the type isn't available, we'll get nothing here, which is fine\n // If there is vgChannel, skip vl channel.\n // For example, vl size for text is vg fontSize, but config.mark.size is only for point size.\n vgChannel ? config.mark[vgChannel] : config.mark[channel] // Need to cast for the same reason as above\n );\n}\n\nfunction getMarkStyleConfig(prop, mark, styleConfigIndex) {\n return getStyleConfig(prop, getStyles(mark), styleConfigIndex);\n}\nfunction getStyleConfig(p, styles, styleConfigIndex) {\n styles = array$5(styles);\n let value;\n for (const style of styles) {\n const styleConfig = styleConfigIndex[style];\n if (styleConfig && styleConfig[p] !== undefined) {\n value = styleConfig[p];\n }\n }\n return value;\n}\n/**\n * Return Vega sort parameters (tuple of field and order).\n */\nfunction sortParams(orderDef, fieldRefOption) {\n return array$5(orderDef).reduce((s, orderChannelDef) => {\n var _orderChannelDef$sort;\n s.field.push(vgField(orderChannelDef, fieldRefOption));\n s.order.push((_orderChannelDef$sort = orderChannelDef.sort) !== null && _orderChannelDef$sort !== void 0 ? _orderChannelDef$sort : 'ascending');\n return s;\n }, {\n field: [],\n order: []\n });\n}\nfunction mergeTitleFieldDefs(f1, f2) {\n const merged = [...f1];\n f2.forEach(fdToMerge => {\n for (const fieldDef1 of merged) {\n // If already exists, no need to append to merged array\n if (deepEqual(fieldDef1, fdToMerge)) {\n return;\n }\n }\n merged.push(fdToMerge);\n });\n return merged;\n}\nfunction mergeTitle(title1, title2) {\n if (deepEqual(title1, title2) || !title2) {\n // if titles are the same or title2 is falsy\n return title1;\n } else if (!title1) {\n // if title1 is falsy\n return title2;\n } else {\n return [...array$5(title1), ...array$5(title2)].join(', ');\n }\n}\nfunction mergeTitleComponent(v1, v2) {\n const v1Val = v1.value;\n const v2Val = v2.value;\n if (v1Val == null || v2Val === null) {\n return {\n explicit: v1.explicit,\n value: null\n };\n } else if ((isText(v1Val) || isSignalRef(v1Val)) && (isText(v2Val) || isSignalRef(v2Val))) {\n return {\n explicit: v1.explicit,\n value: mergeTitle(v1Val, v2Val)\n };\n } else if (isText(v1Val) || isSignalRef(v1Val)) {\n return {\n explicit: v1.explicit,\n value: v1Val\n };\n } else if (isText(v2Val) || isSignalRef(v2Val)) {\n return {\n explicit: v1.explicit,\n value: v2Val\n };\n } else if (!isText(v1Val) && !isSignalRef(v1Val) && !isText(v2Val) && !isSignalRef(v2Val)) {\n return {\n explicit: v1.explicit,\n value: mergeTitleFieldDefs(v1Val, v2Val)\n };\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('It should never reach here');\n}\nfunction invalidSpec(spec) {\n return \"Invalid specification \".concat(stringify$1(spec), \". Make sure the specification includes at least one of the following properties: \\\"mark\\\", \\\"layer\\\", \\\"facet\\\", \\\"hconcat\\\", \\\"vconcat\\\", \\\"concat\\\", or \\\"repeat\\\".\");\n}\n// FIT\nconst FIT_NON_SINGLE = 'Autosize \"fit\" only works for single views and layered views.';\nfunction containerSizeNonSingle(name) {\n const uName = name == 'width' ? 'Width' : 'Height';\n return \"\".concat(uName, \" \\\"container\\\" only works for single views and layered views.\");\n}\nfunction containerSizeNotCompatibleWithAutosize(name) {\n const uName = name == 'width' ? 'Width' : 'Height';\n const fitDirection = name == 'width' ? 'x' : 'y';\n return \"\".concat(uName, \" \\\"container\\\" only works well with autosize \\\"fit\\\" or \\\"fit-\").concat(fitDirection, \"\\\".\");\n}\nfunction droppingFit(channel) {\n return channel ? \"Dropping \\\"fit-\".concat(channel, \"\\\" because spec has discrete \").concat(getSizeChannel(channel), \".\") : \"Dropping \\\"fit\\\" because spec has discrete size.\";\n}\n// VIEW SIZE\nfunction unknownField(channel) {\n return \"Unknown field for \".concat(channel, \". Cannot calculate view size.\");\n}\n// SELECTION\nfunction cannotProjectOnChannelWithoutField(channel) {\n return \"Cannot project a selection on encoding channel \\\"\".concat(channel, \"\\\", which has no field.\");\n}\nfunction cannotProjectAggregate(channel, aggregate) {\n return \"Cannot project a selection on encoding channel \\\"\".concat(channel, \"\\\" as it uses an aggregate function (\\\"\").concat(aggregate, \"\\\").\");\n}\nfunction nearestNotSupportForContinuous(mark) {\n return \"The \\\"nearest\\\" transform is not supported for \".concat(mark, \" marks.\");\n}\nfunction selectionNotSupported(mark) {\n return \"Selection not supported for \".concat(mark, \" yet.\");\n}\nfunction selectionNotFound(name) {\n return \"Cannot find a selection named \\\"\".concat(name, \"\\\".\");\n}\nconst SCALE_BINDINGS_CONTINUOUS = 'Scale bindings are currently only supported for scales with unbinned, continuous domains.';\nconst LEGEND_BINDINGS_MUST_HAVE_PROJECTION = 'Legend bindings are only supported for selections over an individual field or encoding channel.';\nfunction cannotLookupVariableParameter(name) {\n return \"Lookups can only be performed on selection parameters. \\\"\".concat(name, \"\\\" is a variable parameter.\");\n}\nfunction noSameUnitLookup(name) {\n return \"Cannot define and lookup the \\\"\".concat(name, \"\\\" selection in the same view. \") + \"Try moving the lookup into a second, layered view?\";\n}\nconst NEEDS_SAME_SELECTION = 'The same selection must be used to override scale domains in a layered view.';\nconst INTERVAL_INITIALIZED_WITH_POS = 'Interval selections should be initialized using \"x\", \"y\", \"longitude\", or \"latitude\" keys.';\n// REPEAT\nfunction noSuchRepeatedValue(field) {\n return \"Unknown repeated value \\\"\".concat(field, \"\\\".\");\n}\nfunction columnsNotSupportByRowCol(type) {\n return \"The \\\"columns\\\" property cannot be used when \\\"\".concat(type, \"\\\" has nested row/column.\");\n}\n// CONCAT / REPEAT\nconst CONCAT_CANNOT_SHARE_AXIS = 'Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).';\n// DATA\nfunction unrecognizedParse(p) {\n return \"Unrecognized parse \\\"\".concat(p, \"\\\".\");\n}\nfunction differentParse(field, local, ancestor) {\n return \"An ancestor parsed field \\\"\".concat(field, \"\\\" as \").concat(ancestor, \" but a child wants to parse the field as \").concat(local, \".\");\n}\nconst ADD_SAME_CHILD_TWICE = 'Attempt to add the same child twice.';\n// TRANSFORMS\nfunction invalidTransformIgnored(transform) {\n return \"Ignoring an invalid transform: \".concat(stringify$1(transform), \".\");\n}\nconst NO_FIELDS_NEEDS_AS = 'If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';\n// ENCODING & FACET\nfunction customFormatTypeNotAllowed(channel) {\n return \"Config.customFormatTypes is not true, thus custom format type and format for channel \".concat(channel, \" are dropped.\");\n}\nfunction projectionOverridden(opt) {\n const {\n parentProjection,\n projection\n } = opt;\n return \"Layer's shared projection \".concat(stringify$1(parentProjection), \" is overridden by a child projection \").concat(stringify$1(projection), \".\");\n}\nconst REPLACE_ANGLE_WITH_THETA = 'Arc marks uses theta channel rather than angle, replacing angle with theta.';\nfunction offsetNestedInsideContinuousPositionScaleDropped(mainChannel) {\n return \"\".concat(mainChannel, \"Offset dropped because \").concat(mainChannel, \" is continuous\");\n}\nfunction replaceOffsetWithMainChannel(mainChannel) {\n return \"There is no \".concat(mainChannel, \" encoding. Replacing \").concat(mainChannel, \"Offset encoding as \").concat(mainChannel, \".\");\n}\nfunction primitiveChannelDef(channel, type, value) {\n return \"Channel \".concat(channel, \" is a \").concat(type, \". Converted to {value: \").concat(stringify$1(value), \"}.\");\n}\nfunction invalidFieldType(type) {\n return \"Invalid field type \\\"\".concat(type, \"\\\".\");\n}\nfunction invalidFieldTypeForCountAggregate(type, aggregate) {\n return \"Invalid field type \\\"\".concat(type, \"\\\" for aggregate: \\\"\").concat(aggregate, \"\\\", using \\\"quantitative\\\" instead.\");\n}\nfunction invalidAggregate(aggregate) {\n return \"Invalid aggregation operator \\\"\".concat(aggregate, \"\\\".\");\n}\nfunction droppingColor(type, opt) {\n const {\n fill,\n stroke\n } = opt;\n return \"Dropping color \".concat(type, \" as the plot also has \").concat(fill && stroke ? 'fill and stroke' : fill ? 'fill' : 'stroke', \".\");\n}\nfunction relativeBandSizeNotSupported(sizeChannel) {\n return \"Position range does not support relative band size for \".concat(sizeChannel, \".\");\n}\nfunction emptyFieldDef(fieldDef, channel) {\n return \"Dropping \".concat(stringify$1(fieldDef), \" from channel \\\"\").concat(channel, \"\\\" since it does not contain any data field, datum, value, or signal.\");\n}\nconst LINE_WITH_VARYING_SIZE = 'Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.';\nfunction incompatibleChannel(channel, markOrFacet, when) {\n return \"\".concat(channel, \" dropped as it is incompatible with \\\"\").concat(markOrFacet, \"\\\"\").concat(when ? \" when \".concat(when) : '', \".\");\n}\nfunction offsetEncodingScaleIgnored(channel) {\n return \"\".concat(channel, \" encoding has no scale, so specified scale is ignored.\");\n}\nfunction invalidEncodingChannel(channel) {\n return \"\".concat(channel, \"-encoding is dropped as \").concat(channel, \" is not a valid encoding channel.\");\n}\nfunction channelShouldBeDiscrete(channel) {\n return \"\".concat(channel, \" encoding should be discrete (ordinal / nominal / binned).\");\n}\nfunction channelShouldBeDiscreteOrDiscretizing(channel) {\n return \"\".concat(channel, \" encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).\");\n}\nfunction facetChannelDropped(channels) {\n return \"Facet encoding dropped as \".concat(channels.join(' and '), \" \").concat(channels.length > 1 ? 'are' : 'is', \" also specified.\");\n}\nfunction discreteChannelCannotEncode(channel, type) {\n return \"Using discrete channel \\\"\".concat(channel, \"\\\" to encode \\\"\").concat(type, \"\\\" field can be misleading as it does not encode \").concat(type === 'ordinal' ? 'order' : 'magnitude', \".\");\n}\n// MARK\nfunction rangeMarkAlignmentCannotBeExpression(align) {\n return \"The \".concat(align, \" for range marks cannot be an expression\");\n}\nfunction lineWithRange(hasX2, hasY2) {\n const channels = hasX2 && hasY2 ? 'x2 and y2' : hasX2 ? 'x2' : 'y2';\n return \"Line mark is for continuous lines and thus cannot be used with \".concat(channels, \". We will use the rule mark (line segments) instead.\");\n}\nfunction orientOverridden(original, actual) {\n return \"Specified orient \\\"\".concat(original, \"\\\" overridden with \\\"\").concat(actual, \"\\\".\");\n}\nfunction cannotUseScalePropertyWithNonColor(prop) {\n return \"Cannot use the scale property \\\"\".concat(prop, \"\\\" with non-color channel.\");\n}\nfunction cannotUseRelativeBandSizeWithNonBandScale(scaleType) {\n return \"Cannot use the relative band size with \".concat(scaleType, \" scale.\");\n}\nfunction unaggregateDomainHasNoEffectForRawField(fieldDef) {\n return \"Using unaggregated domain with raw field has no effect (\".concat(stringify$1(fieldDef), \").\");\n}\nfunction unaggregateDomainWithNonSharedDomainOp(aggregate) {\n return \"Unaggregated domain not applicable for \\\"\".concat(aggregate, \"\\\" since it produces values outside the origin domain of the source data.\");\n}\nfunction unaggregatedDomainWithLogScale(fieldDef) {\n return \"Unaggregated domain is currently unsupported for log scale (\".concat(stringify$1(fieldDef), \").\");\n}\nfunction cannotApplySizeToNonOrientedMark(mark) {\n return \"Cannot apply size to non-oriented mark \\\"\".concat(mark, \"\\\".\");\n}\nfunction scaleTypeNotWorkWithChannel(channel, scaleType, defaultScaleType) {\n return \"Channel \\\"\".concat(channel, \"\\\" does not work with \\\"\").concat(scaleType, \"\\\" scale. We are using \\\"\").concat(defaultScaleType, \"\\\" scale instead.\");\n}\nfunction scaleTypeNotWorkWithFieldDef(scaleType, defaultScaleType) {\n return \"FieldDef does not work with \\\"\".concat(scaleType, \"\\\" scale. We are using \\\"\").concat(defaultScaleType, \"\\\" scale instead.\");\n}\nfunction scalePropertyNotWorkWithScaleType(scaleType, propName, channel) {\n return \"\".concat(channel, \"-scale's \\\"\").concat(propName, \"\\\" is dropped as it does not work with \").concat(scaleType, \" scale.\");\n}\nfunction stepDropped(channel) {\n return \"The step for \\\"\".concat(channel, \"\\\" is dropped because the \").concat(channel === 'width' ? 'x' : 'y', \" is continuous.\");\n}\nfunction mergeConflictingProperty(property, propertyOf, v1, v2) {\n return \"Conflicting \".concat(propertyOf.toString(), \" property \\\"\").concat(property.toString(), \"\\\" (\").concat(stringify$1(v1), \" and \").concat(stringify$1(v2), \"). Using \").concat(stringify$1(v1), \".\");\n}\nfunction mergeConflictingDomainProperty(property, propertyOf, v1, v2) {\n return \"Conflicting \".concat(propertyOf.toString(), \" property \\\"\").concat(property.toString(), \"\\\" (\").concat(stringify$1(v1), \" and \").concat(stringify$1(v2), \"). Using the union of the two domains.\");\n}\nfunction independentScaleMeansIndependentGuide(channel) {\n return \"Setting the scale to be independent for \\\"\".concat(channel, \"\\\" means we also have to set the guide (axis or legend) to be independent.\");\n}\nfunction domainSortDropped(sort) {\n return \"Dropping sort property \".concat(stringify$1(sort), \" as unioned domains only support boolean or op \\\"count\\\", \\\"min\\\", and \\\"max\\\".\");\n}\nconst MORE_THAN_ONE_SORT = 'Domains that should be unioned has conflicting sort properties. Sort will be set to true.';\nconst FACETED_INDEPENDENT_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.';\nconst FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES = 'Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.';\nconst FACETED_INDEPENDENT_SAME_SOURCE = 'Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.';\n// STACK\nfunction cannotStackRangedMark(channel) {\n return \"Cannot stack \\\"\".concat(channel, \"\\\" if there is already \\\"\").concat(channel, \"2\\\".\");\n}\nfunction cannotStackNonLinearScale(scaleType) {\n return \"Cannot stack non-linear scale (\".concat(scaleType, \").\");\n}\nfunction stackNonSummativeAggregate(aggregate) {\n return \"Stacking is applied even though the aggregate function is non-summative (\\\"\".concat(aggregate, \"\\\").\");\n}\n// TIMEUNIT\nfunction invalidTimeUnit(unitName, value) {\n return \"Invalid \".concat(unitName, \": \").concat(stringify$1(value), \".\");\n}\nfunction droppedDay(d) {\n return \"Dropping day from datetime \".concat(stringify$1(d), \" as day cannot be combined with other units.\");\n}\nfunction errorBarCenterAndExtentAreNotNeeded(center, extent) {\n return \"\".concat(extent ? 'extent ' : '').concat(extent && center ? 'and ' : '').concat(center ? 'center ' : '').concat(extent && center ? 'are ' : 'is ', \"not needed when data are aggregated.\");\n}\nfunction errorBarCenterIsUsedWithWrongExtent(center, extent, mark) {\n return \"\".concat(center, \" is not usually used with \").concat(extent, \" for \").concat(mark, \".\");\n}\nfunction errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark) {\n return \"Continuous axis should not have customized aggregation function \".concat(aggregate, \"; \").concat(compositeMark, \" already agregates the axis.\");\n}\nfunction errorBand1DNotSupport(property) {\n return \"1D error band does not support \".concat(property, \".\");\n}\n// CHANNEL\nfunction channelRequiredForBinned(channel) {\n return \"Channel \".concat(channel, \" is required for \\\"binned\\\" bin.\");\n}\nfunction channelShouldNotBeUsedForBinned(channel) {\n return \"Channel \".concat(channel, \" should not be used with \\\"binned\\\" bin.\");\n}\nfunction domainRequiredForThresholdScale(channel) {\n return \"Domain for \".concat(channel, \" is required for threshold scale.\");\n}\n\n/**\n * Vega-Lite's singleton logger utility.\n */\nundefined && undefined.__classPrivateFieldSet || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n};\nundefined && undefined.__classPrivateFieldGet || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\n/**\n * Main (default) Vega Logger instance for Vega-Lite.\n */\nconst main$1 = logger(Warn);\nlet current = main$1;\n/**\n * Set the singleton logger to be a custom logger.\n */\nfunction set(newLogger) {\n current = newLogger;\n return current;\n}\n/**\n * Reset the main logger to use the default Vega Logger.\n */\nfunction reset() {\n current = main$1;\n return current;\n}\nfunction warn() {\n current.warn(...arguments);\n}\nfunction debug$2() {\n current.debug(...arguments);\n}\n\n// DateTime definition object\nfunction isDateTime(o) {\n if (o && isObject(o)) {\n for (const part of TIMEUNIT_PARTS) {\n if (part in o) {\n return true;\n }\n }\n }\n return false;\n}\nconst MONTHS = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nconst SHORT_MONTHS = MONTHS.map(m => m.substr(0, 3));\nconst DAYS = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nconst SHORT_DAYS = DAYS.map(d => d.substr(0, 3));\nfunction normalizeQuarter(q) {\n if (isNumeric(q)) {\n q = +q;\n }\n if (isNumber$1(q)) {\n if (q > 4) {\n warn(invalidTimeUnit('quarter', q));\n }\n // We accept 1-based quarter, so need to readjust to 0-based quarter\n return q - 1;\n } else {\n // Invalid quarter\n throw new Error(invalidTimeUnit('quarter', q));\n }\n}\nfunction normalizeMonth(m) {\n if (isNumeric(m)) {\n m = +m;\n }\n if (isNumber$1(m)) {\n // We accept 1-based month, so need to readjust to 0-based month\n return m - 1;\n } else {\n const lowerM = m.toLowerCase();\n const monthIndex = MONTHS.indexOf(lowerM);\n if (monthIndex !== -1) {\n return monthIndex; // 0 for january, ...\n }\n\n const shortM = lowerM.substr(0, 3);\n const shortMonthIndex = SHORT_MONTHS.indexOf(shortM);\n if (shortMonthIndex !== -1) {\n return shortMonthIndex;\n }\n // Invalid month\n throw new Error(invalidTimeUnit('month', m));\n }\n}\nfunction normalizeDay(d) {\n if (isNumeric(d)) {\n d = +d;\n }\n if (isNumber$1(d)) {\n // mod so that this can be both 0-based where 0 = sunday\n // and 1-based where 7=sunday\n return d % 7;\n } else {\n const lowerD = d.toLowerCase();\n const dayIndex = DAYS.indexOf(lowerD);\n if (dayIndex !== -1) {\n return dayIndex; // 0 for january, ...\n }\n\n const shortD = lowerD.substr(0, 3);\n const shortDayIndex = SHORT_DAYS.indexOf(shortD);\n if (shortDayIndex !== -1) {\n return shortDayIndex;\n }\n // Invalid day\n throw new Error(invalidTimeUnit('day', d));\n }\n}\n/**\n * @param d the date.\n * @param normalize whether to normalize quarter, month, day. This should probably be true if d is a DateTime.\n * @returns array of date time parts [year, month, day, hours, minutes, seconds, milliseconds]\n */\nfunction dateTimeParts(d, normalize) {\n const parts = [];\n if (normalize && d.day !== undefined) {\n if (keys(d).length > 1) {\n warn(droppedDay(d));\n d = duplicate(d);\n delete d.day;\n }\n }\n if (d.year !== undefined) {\n parts.push(d.year);\n } else {\n // Just like Vega's timeunit transform, set default year to 2012, so domain conversion will be compatible with Vega\n // Note: 2012 is a leap year (and so the date February 29 is respected) that begins on a Sunday (and so days of the week will order properly at the beginning of the year).\n parts.push(2012);\n }\n if (d.month !== undefined) {\n const month = normalize ? normalizeMonth(d.month) : d.month;\n parts.push(month);\n } else if (d.quarter !== undefined) {\n const quarter = normalize ? normalizeQuarter(d.quarter) : d.quarter;\n parts.push(isNumber$1(quarter) ? quarter * 3 : \"\".concat(quarter, \"*3\"));\n } else {\n parts.push(0); // months start at zero in JS\n }\n\n if (d.date !== undefined) {\n parts.push(d.date);\n } else if (d.day !== undefined) {\n // HACK: Day only works as a standalone unit\n // This is only correct because we always set year to 2006 for day\n const day = normalize ? normalizeDay(d.day) : d.day;\n parts.push(isNumber$1(day) ? day + 1 : \"\".concat(day, \"+1\"));\n } else {\n parts.push(1); // Date starts at 1 in JS\n }\n // Note: can't use TimeUnit enum here as importing it will create\n // circular dependency problem!\n for (const timeUnit of ['hours', 'minutes', 'seconds', 'milliseconds']) {\n const unit = d[timeUnit];\n parts.push(typeof unit === 'undefined' ? 0 : unit);\n }\n return parts;\n}\n/**\n * Return Vega expression for a date time.\n *\n * @param d the date time.\n * @returns the Vega expression.\n */\nfunction dateTimeToExpr(d) {\n const parts = dateTimeParts(d, true);\n const string = parts.join(', ');\n if (d.utc) {\n return \"utc(\".concat(string, \")\");\n } else {\n return \"datetime(\".concat(string, \")\");\n }\n}\n/**\n * Return Vega expression for a date time expression.\n *\n * @param d the internal date time object with expression.\n * @returns the Vega expression.\n */\nfunction dateTimeExprToExpr(d) {\n const parts = dateTimeParts(d, false);\n const string = parts.join(', ');\n if (d.utc) {\n return \"utc(\".concat(string, \")\");\n } else {\n return \"datetime(\".concat(string, \")\");\n }\n}\n/**\n * @param d the date time.\n * @returns the timestamp.\n */\nfunction dateTimeToTimestamp(d) {\n const parts = dateTimeParts(d, true);\n if (d.utc) {\n return +new Date(Date.UTC(...parts));\n } else {\n return +new Date(...parts);\n }\n}\n\n/** Time Unit that only corresponds to only one part of Date objects. */\nconst LOCAL_SINGLE_TIMEUNIT_INDEX = {\n year: 1,\n quarter: 1,\n month: 1,\n week: 1,\n day: 1,\n dayofyear: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nconst TIMEUNIT_PARTS = keys(LOCAL_SINGLE_TIMEUNIT_INDEX);\nfunction isLocalSingleTimeUnit(timeUnit) {\n return !!LOCAL_SINGLE_TIMEUNIT_INDEX[timeUnit];\n}\nfunction isBinnedTimeUnit(timeUnit) {\n if (isObject(timeUnit)) {\n return timeUnit.binned;\n }\n return isBinnedTimeUnitString(timeUnit);\n}\nfunction isBinnedTimeUnitString(timeUnit) {\n return timeUnit && timeUnit.startsWith('binned');\n}\nfunction isUTCTimeUnit(t) {\n return t.startsWith('utc');\n}\nfunction getLocalTimeUnitFromUTCTimeUnit(t) {\n return t.substring(3);\n}\n// In order of increasing specificity\nconst VEGALITE_TIMEFORMAT = {\n 'year-month': '%b %Y ',\n 'year-month-date': '%b %d, %Y '\n};\nfunction getTimeUnitParts(timeUnit) {\n return TIMEUNIT_PARTS.filter(part => containsTimeUnit(timeUnit, part));\n}\nfunction getSmallestTimeUnitPart(timeUnit) {\n const parts = getTimeUnitParts(timeUnit);\n return parts[parts.length - 1];\n}\n/** Returns true if fullTimeUnit contains the timeUnit, false otherwise. */\nfunction containsTimeUnit(fullTimeUnit, timeUnit) {\n const index = fullTimeUnit.indexOf(timeUnit);\n if (index < 0) {\n return false;\n }\n // exclude milliseconds\n if (index > 0 && timeUnit === 'seconds' && fullTimeUnit.charAt(index - 1) === 'i') {\n return false;\n }\n // exclude dayofyear\n if (fullTimeUnit.length > index + 3 && timeUnit === 'day' && fullTimeUnit.charAt(index + 3) === 'o') {\n return false;\n }\n if (index > 0 && timeUnit === 'year' && fullTimeUnit.charAt(index - 1) === 'f') {\n return false;\n }\n return true;\n}\n/**\n * Returns Vega expression for a given timeUnit and fieldRef\n */\nfunction fieldExpr(fullTimeUnit, field) {\n let {\n end\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n end: false\n };\n const fieldRef = accessPathWithDatum(field);\n const utc = isUTCTimeUnit(fullTimeUnit) ? 'utc' : '';\n function func(timeUnit) {\n if (timeUnit === 'quarter') {\n // quarter starting at 0 (0,3,6,9).\n return \"(\".concat(utc, \"quarter(\").concat(fieldRef, \")-1)\");\n } else {\n return \"\".concat(utc).concat(timeUnit, \"(\").concat(fieldRef, \")\");\n }\n }\n let lastTimeUnit;\n const dateExpr = {};\n for (const part of TIMEUNIT_PARTS) {\n if (containsTimeUnit(fullTimeUnit, part)) {\n dateExpr[part] = func(part);\n lastTimeUnit = part;\n }\n }\n if (end) {\n dateExpr[lastTimeUnit] += '+1';\n }\n return dateTimeExprToExpr(dateExpr);\n}\nfunction timeUnitSpecifierExpression(timeUnit) {\n if (!timeUnit) {\n return undefined;\n }\n const timeUnitParts = getTimeUnitParts(timeUnit);\n return \"timeUnitSpecifier(\".concat(stringify$1(timeUnitParts), \", \").concat(stringify$1(VEGALITE_TIMEFORMAT), \")\");\n}\n/**\n * Returns the signal expression used for axis labels for a time unit.\n */\nfunction formatExpression(timeUnit, field, isUTCScale) {\n if (!timeUnit) {\n return undefined;\n }\n const expr = timeUnitSpecifierExpression(timeUnit);\n // We only use utcFormat for utc scale\n // For utc time units, the data is already converted as a part of timeUnit transform.\n // Thus, utc time units should use timeFormat to avoid shifting the time twice.\n const utc = isUTCScale || isUTCTimeUnit(timeUnit);\n return \"\".concat(utc ? 'utc' : 'time', \"Format(\").concat(field, \", \").concat(expr, \")\");\n}\nfunction normalizeTimeUnit(timeUnit) {\n if (!timeUnit) {\n return undefined;\n }\n let params;\n if (isString(timeUnit)) {\n if (isBinnedTimeUnitString(timeUnit)) {\n params = {\n unit: timeUnit.substring(6),\n binned: true\n };\n } else {\n params = {\n unit: timeUnit\n };\n }\n } else if (isObject(timeUnit)) {\n params = {\n ...timeUnit,\n ...(timeUnit.unit ? {\n unit: timeUnit.unit\n } : {})\n };\n }\n if (isUTCTimeUnit(params.unit)) {\n params.utc = true;\n params.unit = getLocalTimeUnitFromUTCTimeUnit(params.unit);\n }\n return params;\n}\nfunction timeUnitToString(tu) {\n const {\n utc,\n ...rest\n } = normalizeTimeUnit(tu);\n if (rest.unit) {\n return (utc ? 'utc' : '') + keys(rest).map(p => varName(\"\".concat(p === 'unit' ? '' : \"_\".concat(p, \"_\")).concat(rest[p]))).join('');\n } else {\n // when maxbins is specified instead of units\n return (utc ? 'utc' : '') + 'timeunit' + keys(rest).map(p => varName(\"_\".concat(p, \"_\").concat(rest[p]))).join('');\n }\n}\nfunction durationExpr(timeUnit) {\n let wrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x => x;\n const normalizedTimeUnit = normalizeTimeUnit(timeUnit);\n const smallestUnitPart = getSmallestTimeUnitPart(normalizedTimeUnit.unit);\n if (smallestUnitPart && smallestUnitPart !== 'day') {\n const startDate = {\n year: 2001,\n month: 1,\n date: 1,\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0\n };\n const {\n step,\n part\n } = getDateTimePartAndStep(smallestUnitPart, normalizedTimeUnit.step);\n const endDate = {\n ...startDate,\n [part]: +startDate[part] + step\n };\n // Calculate timestamp duration for the smallest unit listed\n return \"\".concat(wrap(dateTimeToExpr(endDate)), \" - \").concat(wrap(dateTimeToExpr(startDate)));\n }\n return undefined;\n}\nconst DATE_PARTS = {\n year: 1,\n month: 1,\n date: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n milliseconds: 1\n};\nfunction isDatePart(timeUnit) {\n return !!DATE_PARTS[timeUnit];\n}\nfunction getDateTimePartAndStep(timeUnit) {\n let step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n if (isDatePart(timeUnit)) {\n return {\n part: timeUnit,\n step\n };\n }\n switch (timeUnit) {\n case 'day':\n case 'dayofyear':\n return {\n part: 'date',\n step\n };\n case 'quarter':\n return {\n part: 'month',\n step: step * 3\n };\n case 'week':\n return {\n part: 'date',\n step: step * 7\n };\n }\n}\nfunction isSelectionPredicate(predicate) {\n return predicate === null || predicate === void 0 ? void 0 : predicate['param'];\n}\nfunction isFieldEqualPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.equal !== undefined;\n}\nfunction isFieldLTPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.lt !== undefined;\n}\nfunction isFieldLTEPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.lte !== undefined;\n}\nfunction isFieldGTPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.gt !== undefined;\n}\nfunction isFieldGTEPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.gte !== undefined;\n}\nfunction isFieldRangePredicate(predicate) {\n if (predicate !== null && predicate !== void 0 && predicate.field) {\n if (isArray(predicate.range) && predicate.range.length === 2) {\n return true;\n } else if (isSignalRef(predicate.range)) {\n return true;\n }\n }\n return false;\n}\nfunction isFieldOneOfPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && (isArray(predicate.oneOf) || isArray(predicate.in)) // backward compatibility\n ;\n}\n\nfunction isFieldValidPredicate(predicate) {\n return !!(predicate !== null && predicate !== void 0 && predicate.field) && predicate.valid !== undefined;\n}\nfunction isFieldPredicate(predicate) {\n return isFieldOneOfPredicate(predicate) || isFieldEqualPredicate(predicate) || isFieldRangePredicate(predicate) || isFieldLTPredicate(predicate) || isFieldGTPredicate(predicate) || isFieldLTEPredicate(predicate) || isFieldGTEPredicate(predicate);\n}\nfunction predicateValueExpr(v, timeUnit) {\n return valueExpr(v, {\n timeUnit,\n wrapTime: true\n });\n}\nfunction predicateValuesExpr(vals, timeUnit) {\n return vals.map(v => predicateValueExpr(v, timeUnit));\n}\n// This method is used by Voyager. Do not change its behavior without changing Voyager.\nfunction fieldFilterExpression(predicate) {\n let useInRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const {\n field\n } = predicate;\n const normalizedTimeUnit = normalizeTimeUnit(predicate.timeUnit);\n const {\n unit,\n binned\n } = normalizedTimeUnit || {};\n const rawFieldExpr = vgField(predicate, {\n expr: 'datum'\n });\n const fieldExpr$1 = unit ? // For timeUnit, cast into integer with time() so we can use ===, inrange, indexOf to compare values directly.\n // TODO: We calculate timeUnit on the fly here. Consider if we would like to consolidate this with timeUnit pipeline\n // TODO: support utc\n \"time(\".concat(!binned ? fieldExpr(unit, field) : rawFieldExpr, \")\") : rawFieldExpr;\n if (isFieldEqualPredicate(predicate)) {\n return \"\".concat(fieldExpr$1, \"===\").concat(predicateValueExpr(predicate.equal, unit));\n } else if (isFieldLTPredicate(predicate)) {\n const upper = predicate.lt;\n return \"\".concat(fieldExpr$1, \"<\").concat(predicateValueExpr(upper, unit));\n } else if (isFieldGTPredicate(predicate)) {\n const lower = predicate.gt;\n return \"\".concat(fieldExpr$1, \">\").concat(predicateValueExpr(lower, unit));\n } else if (isFieldLTEPredicate(predicate)) {\n const upper = predicate.lte;\n return \"\".concat(fieldExpr$1, \"<=\").concat(predicateValueExpr(upper, unit));\n } else if (isFieldGTEPredicate(predicate)) {\n const lower = predicate.gte;\n return \"\".concat(fieldExpr$1, \">=\").concat(predicateValueExpr(lower, unit));\n } else if (isFieldOneOfPredicate(predicate)) {\n return \"indexof([\".concat(predicateValuesExpr(predicate.oneOf, unit).join(','), \"], \").concat(fieldExpr$1, \") !== -1\");\n } else if (isFieldValidPredicate(predicate)) {\n return fieldValidPredicate(fieldExpr$1, predicate.valid);\n } else if (isFieldRangePredicate(predicate)) {\n const {\n range\n } = predicate;\n const lower = isSignalRef(range) ? {\n signal: \"\".concat(range.signal, \"[0]\")\n } : range[0];\n const upper = isSignalRef(range) ? {\n signal: \"\".concat(range.signal, \"[1]\")\n } : range[1];\n if (lower !== null && upper !== null && useInRange) {\n return 'inrange(' + fieldExpr$1 + ', [' + predicateValueExpr(lower, unit) + ', ' + predicateValueExpr(upper, unit) + '])';\n }\n const exprs = [];\n if (lower !== null) {\n exprs.push(\"\".concat(fieldExpr$1, \" >= \").concat(predicateValueExpr(lower, unit)));\n }\n if (upper !== null) {\n exprs.push(\"\".concat(fieldExpr$1, \" <= \").concat(predicateValueExpr(upper, unit)));\n }\n return exprs.length > 0 ? exprs.join(' && ') : 'true';\n }\n /* istanbul ignore next: it should never reach here */\n throw new Error(\"Invalid field predicate: \".concat(stringify$1(predicate)));\n}\nfunction fieldValidPredicate(fieldExpr) {\n let valid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (valid) {\n return \"isValid(\".concat(fieldExpr, \") && isFinite(+\").concat(fieldExpr, \")\");\n } else {\n return \"!isValid(\".concat(fieldExpr, \") || !isFinite(+\").concat(fieldExpr, \")\");\n }\n}\nfunction normalizePredicate$1(f) {\n if (isFieldPredicate(f) && f.timeUnit) {\n return {\n ...f,\n timeUnit: normalizeTimeUnit(f.timeUnit)\n };\n }\n return f;\n}\n\n/**\n * Data type based on level of measurement\n */\nconst Type = {\n quantitative: 'quantitative',\n ordinal: 'ordinal',\n temporal: 'temporal',\n nominal: 'nominal',\n geojson: 'geojson'\n};\nfunction isContinuous(type) {\n return type === 'quantitative' || type === 'temporal';\n}\nfunction isDiscrete$1(type) {\n return type === 'ordinal' || type === 'nominal';\n}\nconst QUANTITATIVE = Type.quantitative;\nconst ORDINAL = Type.ordinal;\nconst TEMPORAL = Type.temporal;\nconst NOMINAL = Type.nominal;\nconst GEOJSON = Type.geojson;\n/**\n * Get full, lowercase type name for a given type.\n * @param type\n * @return Full type name.\n */\nfunction getFullName(type) {\n if (type) {\n type = type.toLowerCase();\n switch (type) {\n case 'q':\n case QUANTITATIVE:\n return 'quantitative';\n case 't':\n case TEMPORAL:\n return 'temporal';\n case 'o':\n case ORDINAL:\n return 'ordinal';\n case 'n':\n case NOMINAL:\n return 'nominal';\n case GEOJSON:\n return 'geojson';\n }\n }\n // If we get invalid input, return undefined type.\n return undefined;\n}\nconst ScaleType = {\n // Continuous - Quantitative\n LINEAR: 'linear',\n LOG: 'log',\n POW: 'pow',\n SQRT: 'sqrt',\n SYMLOG: 'symlog',\n IDENTITY: 'identity',\n SEQUENTIAL: 'sequential',\n // Continuous - Time\n TIME: 'time',\n UTC: 'utc',\n // Discretizing scales\n QUANTILE: 'quantile',\n QUANTIZE: 'quantize',\n THRESHOLD: 'threshold',\n BIN_ORDINAL: 'bin-ordinal',\n // Discrete scales\n ORDINAL: 'ordinal',\n POINT: 'point',\n BAND: 'band'\n};\n/**\n * Index for scale categories -- only scale of the same categories can be merged together.\n * Current implementation is trying to be conservative and avoid merging scale type that might not work together\n */\nconst SCALE_CATEGORY_INDEX = {\n linear: 'numeric',\n log: 'numeric',\n pow: 'numeric',\n sqrt: 'numeric',\n symlog: 'numeric',\n identity: 'numeric',\n sequential: 'numeric',\n time: 'time',\n utc: 'time',\n ordinal: 'ordinal',\n 'bin-ordinal': 'bin-ordinal',\n point: 'ordinal-position',\n band: 'ordinal-position',\n quantile: 'discretizing',\n quantize: 'discretizing',\n threshold: 'discretizing'\n};\n/**\n * Whether the two given scale types can be merged together.\n */\nfunction scaleCompatible(scaleType1, scaleType2) {\n const scaleCategory1 = SCALE_CATEGORY_INDEX[scaleType1];\n const scaleCategory2 = SCALE_CATEGORY_INDEX[scaleType2];\n return scaleCategory1 === scaleCategory2 || scaleCategory1 === 'ordinal-position' && scaleCategory2 === 'time' || scaleCategory2 === 'ordinal-position' && scaleCategory1 === 'time';\n}\n/**\n * Index for scale precedence -- high score = higher priority for merging.\n */\nconst SCALE_PRECEDENCE_INDEX = {\n // numeric\n linear: 0,\n log: 1,\n pow: 1,\n sqrt: 1,\n symlog: 1,\n identity: 1,\n sequential: 1,\n // time\n time: 0,\n utc: 0,\n // ordinal-position -- these have higher precedence than continuous scales as they support more types of data\n point: 10,\n band: 11,\n // non grouped types\n ordinal: 0,\n 'bin-ordinal': 0,\n quantile: 0,\n quantize: 0,\n threshold: 0\n};\n/**\n * Return scale categories -- only scale of the same categories can be merged together.\n */\nfunction scaleTypePrecedence(scaleType) {\n return SCALE_PRECEDENCE_INDEX[scaleType];\n}\nconst QUANTITATIVE_SCALES = new Set(['linear', 'log', 'pow', 'sqrt', 'symlog']);\nconst CONTINUOUS_TO_CONTINUOUS_SCALES = new Set([...QUANTITATIVE_SCALES, 'time', 'utc']);\nfunction isQuantitative(type) {\n return QUANTITATIVE_SCALES.has(type);\n}\nconst CONTINUOUS_TO_DISCRETE_SCALES = new Set(['quantile', 'quantize', 'threshold']);\nconst CONTINUOUS_DOMAIN_SCALES = new Set([...CONTINUOUS_TO_CONTINUOUS_SCALES, ...CONTINUOUS_TO_DISCRETE_SCALES, 'sequential', 'identity']);\nconst DISCRETE_DOMAIN_SCALES = new Set(['ordinal', 'bin-ordinal', 'point', 'band']);\nfunction hasDiscreteDomain(type) {\n return DISCRETE_DOMAIN_SCALES.has(type);\n}\nfunction hasContinuousDomain(type) {\n return CONTINUOUS_DOMAIN_SCALES.has(type);\n}\nfunction isContinuousToContinuous(type) {\n return CONTINUOUS_TO_CONTINUOUS_SCALES.has(type);\n}\nfunction isContinuousToDiscrete(type) {\n return CONTINUOUS_TO_DISCRETE_SCALES.has(type);\n}\nconst defaultScaleConfig = {\n pointPadding: 0.5,\n barBandPaddingInner: 0.1,\n rectBandPaddingInner: 0,\n bandWithNestedOffsetPaddingInner: 0.2,\n bandWithNestedOffsetPaddingOuter: 0.2,\n minBandSize: 2,\n minFontSize: 8,\n maxFontSize: 40,\n minOpacity: 0.3,\n maxOpacity: 0.8,\n // FIXME: revise if these *can* become ratios of width/height step\n minSize: 9,\n minStrokeWidth: 1,\n maxStrokeWidth: 4,\n quantileCount: 4,\n quantizeCount: 4,\n zero: true\n};\nfunction isExtendedScheme(scheme) {\n return !isString(scheme) && !!scheme['name'];\n}\nfunction isParameterDomain(domain) {\n return domain === null || domain === void 0 ? void 0 : domain['param'];\n}\nfunction isDomainUnionWith(domain) {\n return domain === null || domain === void 0 ? void 0 : domain['unionWith'];\n}\nfunction isFieldRange(range) {\n return isObject(range) && 'field' in range;\n}\nconst SCALE_PROPERTY_INDEX = {\n type: 1,\n domain: 1,\n domainMax: 1,\n domainMin: 1,\n domainMid: 1,\n domainRaw: 1,\n align: 1,\n range: 1,\n rangeMax: 1,\n rangeMin: 1,\n scheme: 1,\n bins: 1,\n // Other properties\n reverse: 1,\n round: 1,\n // quantitative / time\n clamp: 1,\n nice: 1,\n // quantitative\n base: 1,\n exponent: 1,\n constant: 1,\n interpolate: 1,\n zero: 1,\n // band/point\n padding: 1,\n paddingInner: 1,\n paddingOuter: 1\n};\nconst {\n type,\n domain: domain$1,\n range: range$1,\n rangeMax,\n rangeMin,\n scheme,\n ...NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX\n} = SCALE_PROPERTY_INDEX;\nconst NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES = keys(NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX);\nfunction scaleTypeSupportProperty(scaleType, propName) {\n switch (propName) {\n case 'type':\n case 'domain':\n case 'reverse':\n case 'range':\n return true;\n case 'scheme':\n case 'interpolate':\n return !['point', 'band', 'identity'].includes(scaleType);\n case 'bins':\n return !['point', 'band', 'identity', 'ordinal'].includes(scaleType);\n case 'round':\n return isContinuousToContinuous(scaleType) || scaleType === 'band' || scaleType === 'point';\n case 'padding':\n case 'rangeMin':\n case 'rangeMax':\n return isContinuousToContinuous(scaleType) || ['point', 'band'].includes(scaleType);\n case 'paddingOuter':\n case 'align':\n return ['point', 'band'].includes(scaleType);\n case 'paddingInner':\n return scaleType === 'band';\n case 'domainMax':\n case 'domainMid':\n case 'domainMin':\n case 'domainRaw':\n case 'clamp':\n return isContinuousToContinuous(scaleType);\n case 'nice':\n return isContinuousToContinuous(scaleType) || scaleType === 'quantize' || scaleType === 'threshold';\n case 'exponent':\n return scaleType === 'pow';\n case 'base':\n return scaleType === 'log';\n case 'constant':\n return scaleType === 'symlog';\n case 'zero':\n return hasContinuousDomain(scaleType) && !contains(['log', 'time', 'utc', 'threshold', 'quantile' // quantile depends on distribution so zero does not matter\n ], scaleType);\n }\n}\n/**\n * Returns undefined if the input channel supports the input scale property name\n */\nfunction channelScalePropertyIncompatability(channel, propName) {\n switch (propName) {\n case 'interpolate':\n case 'scheme':\n case 'domainMid':\n if (!isColorChannel(channel)) {\n return cannotUseScalePropertyWithNonColor(propName);\n }\n return undefined;\n case 'align':\n case 'type':\n case 'bins':\n case 'domain':\n case 'domainMax':\n case 'domainMin':\n case 'domainRaw':\n case 'range':\n case 'base':\n case 'exponent':\n case 'constant':\n case 'nice':\n case 'padding':\n case 'paddingInner':\n case 'paddingOuter':\n case 'rangeMax':\n case 'rangeMin':\n case 'reverse':\n case 'round':\n case 'clamp':\n case 'zero':\n return undefined;\n // GOOD!\n }\n}\n\nfunction scaleTypeSupportDataType(specifiedType, fieldDefType) {\n if (contains([ORDINAL, NOMINAL], fieldDefType)) {\n return specifiedType === undefined || hasDiscreteDomain(specifiedType);\n } else if (fieldDefType === TEMPORAL) {\n return contains([ScaleType.TIME, ScaleType.UTC, undefined], specifiedType);\n } else if (fieldDefType === QUANTITATIVE) {\n return isQuantitative(specifiedType) || isContinuousToDiscrete(specifiedType) || specifiedType === undefined;\n }\n return true;\n}\nfunction channelSupportScaleType(channel, scaleType) {\n let hasNestedOffsetScale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!isScaleChannel(channel)) {\n return false;\n }\n switch (channel) {\n case X:\n case Y:\n case XOFFSET:\n case YOFFSET:\n case THETA:\n case RADIUS:\n if (isContinuousToContinuous(scaleType)) {\n return true;\n } else if (scaleType === 'band') {\n return true;\n } else if (scaleType === 'point') {\n /*\n Point scale can't be use if the position has a nested offset scale\n because if there is a nested scale, then it's band.\n */\n return !hasNestedOffsetScale;\n }\n return false;\n case SIZE: // TODO: size and opacity can support ordinal with more modification\n case STROKEWIDTH:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case ANGLE:\n // Although it generally doesn't make sense to use band with size and opacity,\n // it can also work since we use band: 0.5 to get midpoint.\n return isContinuousToContinuous(scaleType) || isContinuousToDiscrete(scaleType) || contains(['band', 'point', 'ordinal'], scaleType);\n case COLOR:\n case FILL:\n case STROKE:\n return scaleType !== 'band';\n // band does not make sense with color\n case STROKEDASH:\n case SHAPE:\n return scaleType === 'ordinal' || isContinuousToDiscrete(scaleType);\n }\n}\n\n/**\n * All types of primitive marks.\n */\nconst Mark = {\n arc: 'arc',\n area: 'area',\n bar: 'bar',\n image: 'image',\n line: 'line',\n point: 'point',\n rect: 'rect',\n rule: 'rule',\n text: 'text',\n tick: 'tick',\n trail: 'trail',\n circle: 'circle',\n square: 'square',\n geoshape: 'geoshape'\n};\nconst ARC = Mark.arc;\nconst AREA = Mark.area;\nconst BAR = Mark.bar;\nconst IMAGE = Mark.image;\nconst LINE = Mark.line;\nconst POINT = Mark.point;\nconst RECT = Mark.rect;\nconst RULE = Mark.rule;\nconst TEXT = Mark.text;\nconst TICK = Mark.tick;\nconst TRAIL = Mark.trail;\nconst CIRCLE = Mark.circle;\nconst SQUARE = Mark.square;\nconst GEOSHAPE = Mark.geoshape;\nfunction isPathMark(m) {\n return ['line', 'area', 'trail'].includes(m);\n}\nfunction isRectBasedMark(m) {\n return ['rect', 'bar', 'image', 'arc' /* arc is rect/interval in polar coordinate */].includes(m);\n}\nconst PRIMITIVE_MARKS = new Set(keys(Mark));\nfunction isMarkDef(mark) {\n return mark['type'];\n}\nconst STROKE_CONFIG = ['stroke', 'strokeWidth', 'strokeDash', 'strokeDashOffset', 'strokeOpacity', 'strokeJoin', 'strokeMiterLimit'];\nconst FILL_CONFIG = ['fill', 'fillOpacity'];\nconst FILL_STROKE_CONFIG = [...STROKE_CONFIG, ...FILL_CONFIG];\nconst VL_ONLY_MARK_CONFIG_INDEX = {\n color: 1,\n filled: 1,\n invalid: 1,\n order: 1,\n radius2: 1,\n theta2: 1,\n timeUnitBandSize: 1,\n timeUnitBandPosition: 1\n};\nconst VL_ONLY_MARK_CONFIG_PROPERTIES = keys(VL_ONLY_MARK_CONFIG_INDEX);\nconst VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n area: ['line', 'point'],\n bar: ['binSpacing', 'continuousBandSize', 'discreteBandSize', 'minBandSize'],\n rect: ['binSpacing', 'continuousBandSize', 'discreteBandSize', 'minBandSize'],\n line: ['point'],\n tick: ['bandSize', 'thickness']\n};\nconst defaultMarkConfig = {\n color: '#4c78a8',\n invalid: 'filter',\n timeUnitBandSize: 1\n};\nconst MARK_CONFIG_INDEX = {\n mark: 1,\n arc: 1,\n area: 1,\n bar: 1,\n circle: 1,\n image: 1,\n line: 1,\n point: 1,\n rect: 1,\n rule: 1,\n square: 1,\n text: 1,\n tick: 1,\n trail: 1,\n geoshape: 1\n};\nconst MARK_CONFIGS = keys(MARK_CONFIG_INDEX);\nfunction isRelativeBandSize(o) {\n return o && o['band'] != undefined;\n}\nconst BAR_CORNER_RADIUS_INDEX = {\n horizontal: ['cornerRadiusTopRight', 'cornerRadiusBottomRight'],\n vertical: ['cornerRadiusTopLeft', 'cornerRadiusTopRight']\n};\nconst DEFAULT_RECT_BAND_SIZE = 5;\nconst defaultBarConfig = {\n binSpacing: 1,\n continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n minBandSize: 0.25,\n timeUnitBandPosition: 0.5\n};\nconst defaultRectConfig = {\n binSpacing: 0,\n continuousBandSize: DEFAULT_RECT_BAND_SIZE,\n minBandSize: 0.25,\n timeUnitBandPosition: 0.5\n};\nconst defaultTickConfig = {\n thickness: 1\n};\nfunction getMarkType(m) {\n return isMarkDef(m) ? m.type : m;\n}\nfunction midPointRefWithPositionInvalidTest(params) {\n const {\n channel,\n channelDef,\n markDef,\n scale,\n config\n } = params;\n const ref = midPoint(params);\n // Wrap to check if the positional value is invalid, if so, plot the point on the min value\n if (\n // Only this for field def without counting aggregate (as count wouldn't be null)\n isFieldDef(channelDef) && !isCountingAggregateOp(channelDef.aggregate) &&\n // and only for continuous scale\n scale && isContinuousToContinuous(scale.get('type'))) {\n return wrapPositionInvalidTest({\n fieldDef: channelDef,\n channel,\n markDef,\n ref,\n config\n });\n }\n return ref;\n}\nfunction wrapPositionInvalidTest(_ref10) {\n let {\n fieldDef,\n channel,\n markDef,\n ref,\n config\n } = _ref10;\n if (isPathMark(markDef.type)) {\n // path mark already use defined to skip points, no need to do it here.\n return ref;\n }\n const invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid === null) {\n // if there is no invalid filter, don't do the invalid test\n return [fieldInvalidTestValueRef(fieldDef, channel), ref];\n }\n return ref;\n}\nfunction fieldInvalidTestValueRef(fieldDef, channel) {\n const test = fieldInvalidPredicate(fieldDef, true);\n const mainChannel = getMainRangeChannel(channel); // we can cast here as the output can't be other things.\n const zeroValueRef = mainChannel === 'y' ? {\n field: {\n group: 'height'\n }\n } :\n // x / angle / radius can all use 0\n {\n value: 0\n };\n return {\n test,\n ...zeroValueRef\n };\n}\nfunction fieldInvalidPredicate(field) {\n let invalid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return fieldValidPredicate(isString(field) ? field : vgField(field, {\n expr: 'datum'\n }), !invalid);\n}\nfunction datumDefToExpr(datumDef) {\n const {\n datum\n } = datumDef;\n if (isDateTime(datum)) {\n return dateTimeToExpr(datum);\n }\n return \"\".concat(stringify$1(datum));\n}\nfunction valueRefForFieldOrDatumDef(fieldDef, scaleName, opt, encode) {\n const ref = {};\n if (scaleName) {\n ref.scale = scaleName;\n }\n if (isDatumDef(fieldDef)) {\n const {\n datum\n } = fieldDef;\n if (isDateTime(datum)) {\n ref.signal = dateTimeToExpr(datum);\n } else if (isSignalRef(datum)) {\n ref.signal = datum.signal;\n } else if (isExprRef(datum)) {\n ref.signal = datum.expr;\n } else {\n ref.value = datum;\n }\n } else {\n ref.field = vgField(fieldDef, opt);\n }\n if (encode) {\n const {\n offset,\n band\n } = encode;\n if (offset) {\n ref.offset = offset;\n }\n if (band) {\n ref.band = band;\n }\n }\n return ref;\n}\n/**\n * Signal that returns the middle of a bin from start and end field. Should only be used with x and y.\n */\nfunction interpolatedSignalRef(_ref11) {\n let {\n scaleName,\n fieldOrDatumDef,\n fieldOrDatumDef2,\n offset,\n startSuffix,\n bandPosition = 0.5\n } = _ref11;\n const expr = 0 < bandPosition && bandPosition < 1 ? 'datum' : undefined;\n const start = vgField(fieldOrDatumDef, {\n expr,\n suffix: startSuffix\n });\n const end = fieldOrDatumDef2 !== undefined ? vgField(fieldOrDatumDef2, {\n expr\n }) : vgField(fieldOrDatumDef, {\n suffix: 'end',\n expr\n });\n const ref = {};\n if (bandPosition === 0 || bandPosition === 1) {\n ref.scale = scaleName;\n const field = bandPosition === 0 ? start : end;\n ref.field = field;\n } else {\n const datum = isSignalRef(bandPosition) ? \"\".concat(bandPosition.signal, \" * \").concat(start, \" + (1-\").concat(bandPosition.signal, \") * \").concat(end) : \"\".concat(bandPosition, \" * \").concat(start, \" + \").concat(1 - bandPosition, \" * \").concat(end);\n ref.signal = \"scale(\\\"\".concat(scaleName, \"\\\", \").concat(datum, \")\");\n }\n if (offset) {\n ref.offset = offset;\n }\n return ref;\n}\nfunction binSizeExpr(_ref12) {\n let {\n scaleName,\n fieldDef\n } = _ref12;\n const start = vgField(fieldDef, {\n expr: 'datum'\n });\n const end = vgField(fieldDef, {\n expr: 'datum',\n suffix: 'end'\n });\n return \"abs(scale(\\\"\".concat(scaleName, \"\\\", \").concat(end, \") - scale(\\\"\").concat(scaleName, \"\\\", \").concat(start, \"))\");\n}\n/**\n * @returns {VgValueRef} Value Ref for xc / yc or mid point for other channels.\n */\nfunction midPoint(_ref13) {\n let {\n channel,\n channelDef,\n channel2Def,\n markDef,\n config,\n scaleName,\n scale,\n stack,\n offset,\n defaultRef,\n bandPosition\n } = _ref13;\n // TODO: datum support\n if (channelDef) {\n /* istanbul ignore else */\n if (isFieldOrDatumDef(channelDef)) {\n var _ref14, _bandPosition2;\n const scaleType = scale === null || scale === void 0 ? void 0 : scale.get('type');\n if (isTypedFieldDef(channelDef)) {\n var _bandPosition;\n (_bandPosition = bandPosition) !== null && _bandPosition !== void 0 ? _bandPosition : bandPosition = getBandPosition({\n fieldDef: channelDef,\n fieldDef2: channel2Def,\n markDef,\n config\n });\n const {\n bin,\n timeUnit,\n type\n } = channelDef;\n if (isBinning(bin) || bandPosition && timeUnit && type === TEMPORAL) {\n // Use middle only for x an y to place marks in the center between start and end of the bin range.\n // We do not use the mid point for other channels (e.g. size) so that properties of legends and marks match.\n if (stack !== null && stack !== void 0 && stack.impute) {\n // For stack, we computed bin_mid so we can impute.\n return valueRefForFieldOrDatumDef(channelDef, scaleName, {\n binSuffix: 'mid'\n }, {\n offset\n });\n }\n if (bandPosition && !hasDiscreteDomain(scaleType)) {\n // if band = 0, no need to call interpolation\n // For non-stack, we can just calculate bin mid on the fly using signal.\n return interpolatedSignalRef({\n scaleName,\n fieldOrDatumDef: channelDef,\n bandPosition,\n offset\n });\n }\n return valueRefForFieldOrDatumDef(channelDef, scaleName, binRequiresRange(channelDef, channel) ? {\n binSuffix: 'range'\n } : {}, {\n offset\n });\n } else if (isBinned(bin)) {\n if (isFieldDef(channel2Def)) {\n return interpolatedSignalRef({\n scaleName,\n fieldOrDatumDef: channelDef,\n fieldOrDatumDef2: channel2Def,\n bandPosition,\n offset\n });\n } else {\n const channel2 = channel === X ? X2 : Y2;\n warn(channelRequiredForBinned(channel2));\n }\n }\n }\n return valueRefForFieldOrDatumDef(channelDef, scaleName, hasDiscreteDomain(scaleType) ? {\n binSuffix: 'range'\n } : {},\n // no need for bin suffix if there is no scale\n {\n offset,\n // For band, to get mid point, need to offset by half of the band\n band: scaleType === 'band' ? (_ref14 = (_bandPosition2 = bandPosition) !== null && _bandPosition2 !== void 0 ? _bandPosition2 : channelDef.bandPosition) !== null && _ref14 !== void 0 ? _ref14 : 0.5 : undefined\n });\n } else if (isValueDef(channelDef)) {\n const value = channelDef.value;\n const offsetMixins = offset ? {\n offset\n } : {};\n return {\n ...widthHeightValueOrSignalRef(channel, value),\n ...offsetMixins\n };\n }\n // If channelDef is neither field def or value def, it's a condition-only def.\n // In such case, we will use default ref.\n }\n\n if (isFunction$1(defaultRef)) {\n defaultRef = defaultRef();\n }\n if (defaultRef) {\n // for non-position, ref could be undefined.\n return {\n ...defaultRef,\n // only include offset when it is non-zero (zero = no offset)\n ...(offset ? {\n offset\n } : {})\n };\n }\n return defaultRef;\n}\n/**\n * Convert special \"width\" and \"height\" values in Vega-Lite into Vega value ref.\n */\nfunction widthHeightValueOrSignalRef(channel, value) {\n if (contains(['x', 'x2'], channel) && value === 'width') {\n return {\n field: {\n group: 'width'\n }\n };\n } else if (contains(['y', 'y2'], channel) && value === 'height') {\n return {\n field: {\n group: 'height'\n }\n };\n }\n return signalOrValueRef(value);\n}\nfunction isCustomFormatType(formatType) {\n return formatType && formatType !== 'number' && formatType !== 'time';\n}\nfunction customFormatExpr(formatType, field, format) {\n return \"\".concat(formatType, \"(\").concat(field).concat(format ? \", \".concat(stringify$1(format)) : '', \")\");\n}\nconst BIN_RANGE_DELIMITER = ' \\u2013 ';\nfunction formatSignalRef(_ref15) {\n let {\n fieldOrDatumDef,\n format,\n formatType,\n expr,\n normalizeStack,\n config\n } = _ref15;\n if (isCustomFormatType(formatType)) {\n return formatCustomType({\n fieldOrDatumDef,\n format,\n formatType,\n expr,\n config\n });\n }\n const field = fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n const type = channelDefType(fieldOrDatumDef);\n if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (type === 'quantitative') {\n if (normalizeStack && config.normalizedNumberFormatType) return formatCustomType({\n fieldOrDatumDef,\n format: config.normalizedNumberFormat,\n formatType: config.normalizedNumberFormatType,\n expr,\n config\n });\n if (config.numberFormatType) {\n return formatCustomType({\n fieldOrDatumDef,\n format: config.numberFormat,\n formatType: config.numberFormatType,\n expr,\n config\n });\n }\n }\n if (type === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit === undefined) {\n return formatCustomType({\n fieldOrDatumDef,\n format: config.timeFormat,\n formatType: config.timeFormatType,\n expr,\n config\n });\n }\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {\n var _normalizeTimeUnit, _fieldOrDatumDef$scal;\n const signal = timeFormatExpression({\n field,\n timeUnit: isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit === void 0 ? void 0 : _normalizeTimeUnit.unit : undefined,\n format,\n formatType: config.timeFormatType,\n rawTimeFormat: config.timeFormat,\n isUTCScale: isScaleFieldDef(fieldOrDatumDef) && ((_fieldOrDatumDef$scal = fieldOrDatumDef.scale) === null || _fieldOrDatumDef$scal === void 0 ? void 0 : _fieldOrDatumDef$scal.type) === ScaleType.UTC\n });\n return signal ? {\n signal\n } : undefined;\n }\n format = numberFormat({\n type,\n specifiedFormat: format,\n config,\n normalizeStack\n });\n if (isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {\n const endField = vgField(fieldOrDatumDef, {\n expr,\n binSuffix: 'end'\n });\n return {\n signal: binFormatExpression(field, endField, format, formatType, config)\n };\n } else if (format || channelDefType(fieldOrDatumDef) === 'quantitative') {\n return {\n signal: \"\".concat(formatExpr(field, format))\n };\n } else {\n return {\n signal: \"isValid(\".concat(field, \") ? \").concat(field, \" : \\\"\\\"+\").concat(field)\n };\n }\n}\nfunction fieldToFormat(fieldOrDatumDef, expr, normalizeStack) {\n if (isFieldDef(fieldOrDatumDef)) {\n if (normalizeStack) {\n return \"\".concat(vgField(fieldOrDatumDef, {\n expr,\n suffix: 'end'\n }), \"-\").concat(vgField(fieldOrDatumDef, {\n expr,\n suffix: 'start'\n }));\n } else {\n return vgField(fieldOrDatumDef, {\n expr\n });\n }\n } else {\n return datumDefToExpr(fieldOrDatumDef);\n }\n}\nfunction formatCustomType(_ref16) {\n var _field2;\n let {\n fieldOrDatumDef,\n format,\n formatType,\n expr,\n normalizeStack,\n config,\n field\n } = _ref16;\n (_field2 = field) !== null && _field2 !== void 0 ? _field2 : field = fieldToFormat(fieldOrDatumDef, expr, normalizeStack);\n if (field !== 'datum.value' &&\n // For axis/legend, we can't correctly know the end of the bin from `datum`\n isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {\n const endField = vgField(fieldOrDatumDef, {\n expr,\n binSuffix: 'end'\n });\n return {\n signal: binFormatExpression(field, endField, format, formatType, config)\n };\n }\n return {\n signal: customFormatExpr(formatType, field, format)\n };\n}\nfunction guideFormat(fieldOrDatumDef, type, format, formatType, config, omitTimeFormatConfig // axis doesn't use config.timeFormat\n) {\n if (isString(formatType) && isCustomFormatType(formatType)) {\n return undefined; // handled in encode block\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (channelDefType(fieldOrDatumDef) === 'quantitative') {\n if (config.normalizedNumberFormatType && isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize') {\n return undefined; // handled in encode block\n }\n\n if (config.numberFormatType) {\n return undefined; // handled in encode block\n }\n }\n }\n\n if (isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize' && config.normalizedNumberFormat) {\n return numberFormat({\n type: 'quantitative',\n config,\n normalizeStack: true\n });\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {\n var _normalizeTimeUnit2;\n const timeUnit = isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit2 = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit2 === void 0 ? void 0 : _normalizeTimeUnit2.unit : undefined;\n if (timeUnit === undefined && config.customFormatTypes && config.timeFormatType) {\n return undefined; // hanlded in encode block\n }\n\n return timeFormat({\n specifiedFormat: format,\n timeUnit,\n config,\n omitTimeFormatConfig\n });\n }\n return numberFormat({\n type,\n specifiedFormat: format,\n config\n });\n}\nfunction guideFormatType(formatType, fieldOrDatumDef, scaleType) {\n if (formatType && (isSignalRef(formatType) || formatType === 'number' || formatType === 'time')) {\n return formatType;\n }\n if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) && scaleType !== 'time' && scaleType !== 'utc') {\n var _normalizeTimeUnit3;\n return isFieldDef(fieldOrDatumDef) && (_normalizeTimeUnit3 = normalizeTimeUnit(fieldOrDatumDef === null || fieldOrDatumDef === void 0 ? void 0 : fieldOrDatumDef.timeUnit)) !== null && _normalizeTimeUnit3 !== void 0 && _normalizeTimeUnit3.utc ? 'utc' : 'time';\n }\n return undefined;\n}\n/**\n * Returns number format for a fieldDef.\n */\nfunction numberFormat(_ref17) {\n let {\n type,\n specifiedFormat,\n config,\n normalizeStack\n } = _ref17;\n // Specified format in axis/legend has higher precedence than fieldDef.format\n if (isString(specifiedFormat)) {\n return specifiedFormat;\n }\n if (type === QUANTITATIVE) {\n // we only apply the default if the field is quantitative\n return normalizeStack ? config.normalizedNumberFormat : config.numberFormat;\n }\n return undefined;\n}\n/**\n * Returns time format for a fieldDef for use in guides.\n */\nfunction timeFormat(_ref18) {\n let {\n specifiedFormat,\n timeUnit,\n config,\n omitTimeFormatConfig\n } = _ref18;\n if (specifiedFormat) {\n return specifiedFormat;\n }\n if (timeUnit) {\n return {\n signal: timeUnitSpecifierExpression(timeUnit)\n };\n }\n return omitTimeFormatConfig ? undefined : config.timeFormat;\n}\nfunction formatExpr(field, format) {\n return \"format(\".concat(field, \", \\\"\").concat(format || '', \"\\\")\");\n}\nfunction binNumberFormatExpr(field, format, formatType, config) {\n var _ref19;\n if (isCustomFormatType(formatType)) {\n return customFormatExpr(formatType, field, format);\n }\n return formatExpr(field, (_ref19 = isString(format) ? format : undefined) !== null && _ref19 !== void 0 ? _ref19 : config.numberFormat);\n}\nfunction binFormatExpression(startField, endField, format, formatType, config) {\n if (format === undefined && formatType === undefined && config.customFormatTypes && config.numberFormatType) {\n return binFormatExpression(startField, endField, config.numberFormat, config.numberFormatType, config);\n }\n const start = binNumberFormatExpr(startField, format, formatType, config);\n const end = binNumberFormatExpr(endField, format, formatType, config);\n return \"\".concat(fieldValidPredicate(startField, false), \" ? \\\"null\\\" : \").concat(start, \" + \\\"\").concat(BIN_RANGE_DELIMITER, \"\\\" + \").concat(end);\n}\n/**\n * Returns the time expression used for axis/legend labels or text mark for a temporal field\n */\nfunction timeFormatExpression(_ref20) {\n let {\n field,\n timeUnit,\n format,\n formatType,\n rawTimeFormat,\n isUTCScale\n } = _ref20;\n if (!timeUnit || format) {\n // If there is no time unit, or if user explicitly specifies format for axis/legend/text.\n if (!timeUnit && formatType) {\n return \"\".concat(formatType, \"(\").concat(field, \", '\").concat(format, \"')\");\n }\n format = isString(format) ? format : rawTimeFormat; // only use provided timeFormat if there is no timeUnit.\n return \"\".concat(isUTCScale ? 'utc' : 'time', \"Format(\").concat(field, \", '\").concat(format, \"')\");\n } else {\n return formatExpression(timeUnit, field, isUTCScale);\n }\n}\nconst DEFAULT_SORT_OP = 'min';\nconst SORT_BY_CHANNEL_INDEX = {\n x: 1,\n y: 1,\n color: 1,\n fill: 1,\n stroke: 1,\n strokeWidth: 1,\n size: 1,\n shape: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n opacity: 1,\n text: 1\n};\nfunction isSortByChannel(c) {\n return c in SORT_BY_CHANNEL_INDEX;\n}\nfunction isSortByEncoding(sort) {\n return !!(sort !== null && sort !== void 0 && sort['encoding']);\n}\nfunction isSortField(sort) {\n return sort && (sort['op'] === 'count' || !!sort['field']);\n}\nfunction isSortArray(sort) {\n return sort && isArray(sort);\n}\nfunction isFacetMapping(f) {\n return 'row' in f || 'column' in f;\n}\nfunction isFacetFieldDef(channelDef) {\n return !!channelDef && 'header' in channelDef;\n}\nfunction isFacetSpec(spec) {\n return 'facet' in spec;\n}\nfunction isConditionalParameter(c) {\n return c['param'];\n}\nfunction isRepeatRef(field) {\n return field && !isString(field) && 'repeat' in field;\n}\nfunction toFieldDefBase(fieldDef) {\n const {\n field,\n timeUnit,\n bin,\n aggregate\n } = fieldDef;\n return {\n ...(timeUnit ? {\n timeUnit\n } : {}),\n ...(bin ? {\n bin\n } : {}),\n ...(aggregate ? {\n aggregate\n } : {}),\n field\n };\n}\nfunction isSortableFieldDef(fieldDef) {\n return 'sort' in fieldDef;\n}\nfunction getBandPosition(_ref21) {\n let {\n fieldDef,\n fieldDef2,\n markDef: mark,\n config\n } = _ref21;\n if (isFieldOrDatumDef(fieldDef) && fieldDef.bandPosition !== undefined) {\n return fieldDef.bandPosition;\n }\n if (isFieldDef(fieldDef)) {\n const {\n timeUnit,\n bin\n } = fieldDef;\n if (timeUnit && !fieldDef2) {\n return isRectBasedMark(mark.type) ? 0 : getMarkConfig('timeUnitBandPosition', mark, config);\n } else if (isBinning(bin)) {\n return 0.5;\n }\n }\n return undefined;\n}\nfunction getBandSize(_ref22) {\n let {\n channel,\n fieldDef,\n fieldDef2,\n markDef: mark,\n config,\n scaleType,\n useVlSizeChannel\n } = _ref22;\n const sizeChannel = getSizeChannel(channel);\n const size = getMarkPropOrConfig(useVlSizeChannel ? 'size' : sizeChannel, mark, config, {\n vgChannel: sizeChannel\n });\n if (size !== undefined) {\n return size;\n }\n if (isFieldDef(fieldDef)) {\n const {\n timeUnit,\n bin\n } = fieldDef;\n if (timeUnit && !fieldDef2) {\n return {\n band: getMarkConfig('timeUnitBandSize', mark, config)\n };\n } else if (isBinning(bin) && !hasDiscreteDomain(scaleType)) {\n return {\n band: 1\n };\n }\n }\n if (isRectBasedMark(mark.type)) {\n var _config$mark$type3;\n if (scaleType) {\n if (hasDiscreteDomain(scaleType)) {\n var _config$mark$type;\n return ((_config$mark$type = config[mark.type]) === null || _config$mark$type === void 0 ? void 0 : _config$mark$type.discreteBandSize) || {\n band: 1\n };\n } else {\n var _config$mark$type2;\n return (_config$mark$type2 = config[mark.type]) === null || _config$mark$type2 === void 0 ? void 0 : _config$mark$type2.continuousBandSize;\n }\n }\n return (_config$mark$type3 = config[mark.type]) === null || _config$mark$type3 === void 0 ? void 0 : _config$mark$type3.discreteBandSize;\n }\n return undefined;\n}\nfunction hasBandEnd(fieldDef, fieldDef2, markDef, config) {\n if (isBinning(fieldDef.bin) || fieldDef.timeUnit && isTypedFieldDef(fieldDef) && fieldDef.type === 'temporal') {\n // Need to check bandPosition because non-rect marks (e.g., point) with timeUnit\n // doesn't have to use bandEnd if there is no bandPosition.\n return getBandPosition({\n fieldDef,\n fieldDef2,\n markDef,\n config\n }) !== undefined;\n }\n return false;\n}\nfunction isOrderOnlyDef(orderDef) {\n return orderDef && !!orderDef.sort && !orderDef['field'];\n}\nfunction isConditionalDef(channelDef) {\n return channelDef && 'condition' in channelDef;\n}\n/**\n * Return if a channelDef is a ConditionalValueDef with ConditionFieldDef\n */\nfunction hasConditionalFieldDef(channelDef) {\n const condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && !isArray(condition) && isFieldDef(condition);\n}\nfunction hasConditionalFieldOrDatumDef(channelDef) {\n const condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && !isArray(condition) && isFieldOrDatumDef(condition);\n}\nfunction hasConditionalValueDef(channelDef) {\n const condition = channelDef === null || channelDef === void 0 ? void 0 : channelDef['condition'];\n return !!condition && (isArray(condition) || isValueDef(condition));\n}\nfunction isFieldDef(channelDef) {\n // TODO: we can't use field in channelDef here as it's somehow failing runtime test\n return channelDef && (!!channelDef['field'] || channelDef['aggregate'] === 'count');\n}\nfunction channelDefType(channelDef) {\n return channelDef === null || channelDef === void 0 ? void 0 : channelDef['type'];\n}\nfunction isDatumDef(channelDef) {\n return channelDef && 'datum' in channelDef;\n}\nfunction isContinuousFieldOrDatumDef(cd) {\n // TODO: make datum support DateTime object\n return isTypedFieldDef(cd) && !isDiscrete(cd) || isNumericDataDef(cd);\n}\nfunction isUnbinnedQuantitativeFieldOrDatumDef(cd) {\n // TODO: make datum support DateTime object\n return isTypedFieldDef(cd) && cd.type === 'quantitative' && !cd.bin || isNumericDataDef(cd);\n}\nfunction isNumericDataDef(cd) {\n return isDatumDef(cd) && isNumber$1(cd.datum);\n}\nfunction isFieldOrDatumDef(channelDef) {\n return isFieldDef(channelDef) || isDatumDef(channelDef);\n}\nfunction isTypedFieldDef(channelDef) {\n return channelDef && ('field' in channelDef || channelDef['aggregate'] === 'count') && 'type' in channelDef;\n}\nfunction isValueDef(channelDef) {\n return channelDef && 'value' in channelDef && 'value' in channelDef;\n}\nfunction isScaleFieldDef(channelDef) {\n return channelDef && ('scale' in channelDef || 'sort' in channelDef);\n}\nfunction isPositionFieldOrDatumDef(channelDef) {\n return channelDef && ('axis' in channelDef || 'stack' in channelDef || 'impute' in channelDef);\n}\nfunction isMarkPropFieldOrDatumDef(channelDef) {\n return channelDef && 'legend' in channelDef;\n}\nfunction isStringFieldOrDatumDef(channelDef) {\n return channelDef && ('format' in channelDef || 'formatType' in channelDef);\n}\nfunction toStringFieldDef(fieldDef) {\n // omit properties that don't exist in string field defs\n return omit(fieldDef, ['legend', 'axis', 'header', 'scale']);\n}\nfunction isOpFieldDef(fieldDef) {\n return 'op' in fieldDef;\n}\n/**\n * Get a Vega field reference from a Vega-Lite field def.\n */\nfunction vgField(fieldDef) {\n let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let field = fieldDef.field;\n const prefix = opt.prefix;\n let suffix = opt.suffix;\n let argAccessor = ''; // for accessing argmin/argmax field at the end without getting escaped\n if (isCount(fieldDef)) {\n field = internalField('count');\n } else {\n let fn;\n if (!opt.nofn) {\n if (isOpFieldDef(fieldDef)) {\n fn = fieldDef.op;\n } else {\n const {\n bin,\n aggregate,\n timeUnit\n } = fieldDef;\n if (isBinning(bin)) {\n var _opt$binSuffix, _opt$suffix;\n fn = binToString(bin);\n suffix = ((_opt$binSuffix = opt.binSuffix) !== null && _opt$binSuffix !== void 0 ? _opt$binSuffix : '') + ((_opt$suffix = opt.suffix) !== null && _opt$suffix !== void 0 ? _opt$suffix : '');\n } else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n argAccessor = \"[\\\"\".concat(field, \"\\\"]\");\n field = \"argmax_\".concat(aggregate.argmax);\n } else if (isArgminDef(aggregate)) {\n argAccessor = \"[\\\"\".concat(field, \"\\\"]\");\n field = \"argmin_\".concat(aggregate.argmin);\n } else {\n fn = String(aggregate);\n }\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n var _opt$suffix2;\n fn = timeUnitToString(timeUnit);\n suffix = (!['range', 'mid'].includes(opt.binSuffix) && opt.binSuffix || '') + ((_opt$suffix2 = opt.suffix) !== null && _opt$suffix2 !== void 0 ? _opt$suffix2 : '');\n }\n }\n }\n if (fn) {\n field = field ? \"\".concat(fn, \"_\").concat(field) : fn;\n }\n }\n if (suffix) {\n field = \"\".concat(field, \"_\").concat(suffix);\n }\n if (prefix) {\n field = \"\".concat(prefix, \"_\").concat(field);\n }\n if (opt.forAs) {\n return removePathFromField(field);\n } else if (opt.expr) {\n // Expression to access flattened field. No need to escape dots.\n return flatAccessWithDatum(field, opt.expr) + argAccessor;\n } else {\n // We flattened all fields so paths should have become dot.\n return replacePathInField(field) + argAccessor;\n }\n}\nfunction isDiscrete(def) {\n switch (def.type) {\n case 'nominal':\n case 'ordinal':\n case 'geojson':\n return true;\n case 'quantitative':\n return isFieldDef(def) && !!def.bin;\n case 'temporal':\n return false;\n }\n throw new Error(invalidFieldType(def.type));\n}\nfunction isDiscretizing(def) {\n var _def$scale;\n return isScaleFieldDef(def) && isContinuousToDiscrete((_def$scale = def.scale) === null || _def$scale === void 0 ? void 0 : _def$scale.type);\n}\nfunction isCount(fieldDef) {\n return fieldDef.aggregate === 'count';\n}\nfunction verbalTitleFormatter(fieldDef, config) {\n const {\n field,\n bin,\n timeUnit,\n aggregate\n } = fieldDef;\n if (aggregate === 'count') {\n return config.countTitle;\n } else if (isBinning(bin)) {\n return \"\".concat(field, \" (binned)\");\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n var _normalizeTimeUnit4;\n const unit = (_normalizeTimeUnit4 = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit4 === void 0 ? void 0 : _normalizeTimeUnit4.unit;\n if (unit) {\n return \"\".concat(field, \" (\").concat(getTimeUnitParts(unit).join('-'), \")\");\n }\n } else if (aggregate) {\n if (isArgmaxDef(aggregate)) {\n return \"\".concat(field, \" for max \").concat(aggregate.argmax);\n } else if (isArgminDef(aggregate)) {\n return \"\".concat(field, \" for min \").concat(aggregate.argmin);\n } else {\n return \"\".concat(titleCase(aggregate), \" of \").concat(field);\n }\n }\n return field;\n}\nfunction functionalTitleFormatter(fieldDef) {\n const {\n aggregate,\n bin,\n timeUnit,\n field\n } = fieldDef;\n if (isArgmaxDef(aggregate)) {\n return \"\".concat(field, \" for argmax(\").concat(aggregate.argmax, \")\");\n } else if (isArgminDef(aggregate)) {\n return \"\".concat(field, \" for argmin(\").concat(aggregate.argmin, \")\");\n }\n const timeUnitParams = timeUnit && !isBinnedTimeUnit(timeUnit) ? normalizeTimeUnit(timeUnit) : undefined;\n const fn = aggregate || (timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.unit) || (timeUnitParams === null || timeUnitParams === void 0 ? void 0 : timeUnitParams.maxbins) && 'timeunit' || isBinning(bin) && 'bin';\n if (fn) {\n return \"\".concat(fn.toUpperCase(), \"(\").concat(field, \")\");\n } else {\n return field;\n }\n}\nconst defaultTitleFormatter = (fieldDef, config) => {\n switch (config.fieldTitle) {\n case 'plain':\n return fieldDef.field;\n case 'functional':\n return functionalTitleFormatter(fieldDef);\n default:\n return verbalTitleFormatter(fieldDef, config);\n }\n};\nlet titleFormatter = defaultTitleFormatter;\nfunction setTitleFormatter(formatter) {\n titleFormatter = formatter;\n}\nfunction resetTitleFormatter() {\n setTitleFormatter(defaultTitleFormatter);\n}\nfunction title(fieldOrDatumDef, config, _ref23) {\n var _getGuide;\n let {\n allowDisabling,\n includeDefault = true\n } = _ref23;\n const guideTitle = (_getGuide = getGuide(fieldOrDatumDef)) === null || _getGuide === void 0 ? void 0 : _getGuide.title;\n if (!isFieldDef(fieldOrDatumDef)) {\n return guideTitle !== null && guideTitle !== void 0 ? guideTitle : fieldOrDatumDef.title;\n }\n const fieldDef = fieldOrDatumDef;\n const def = includeDefault ? defaultTitle(fieldDef, config) : undefined;\n if (allowDisabling) {\n return getFirstDefined(guideTitle, fieldDef.title, def);\n } else {\n var _ref24;\n return (_ref24 = guideTitle !== null && guideTitle !== void 0 ? guideTitle : fieldDef.title) !== null && _ref24 !== void 0 ? _ref24 : def;\n }\n}\nfunction getGuide(fieldDef) {\n if (isPositionFieldOrDatumDef(fieldDef) && fieldDef.axis) {\n return fieldDef.axis;\n } else if (isMarkPropFieldOrDatumDef(fieldDef) && fieldDef.legend) {\n return fieldDef.legend;\n } else if (isFacetFieldDef(fieldDef) && fieldDef.header) {\n return fieldDef.header;\n }\n return undefined;\n}\nfunction defaultTitle(fieldDef, config) {\n return titleFormatter(fieldDef, config);\n}\nfunction getFormatMixins(fieldDef) {\n if (isStringFieldOrDatumDef(fieldDef)) {\n const {\n format,\n formatType\n } = fieldDef;\n return {\n format,\n formatType\n };\n } else {\n var _getGuide2;\n const guide = (_getGuide2 = getGuide(fieldDef)) !== null && _getGuide2 !== void 0 ? _getGuide2 : {};\n const {\n format,\n formatType\n } = guide;\n return {\n format,\n formatType\n };\n }\n}\nfunction defaultType$2(fieldDef, channel) {\n var _fieldDef$scale;\n switch (channel) {\n case 'latitude':\n case 'longitude':\n return 'quantitative';\n case 'row':\n case 'column':\n case 'facet':\n case 'shape':\n case 'strokeDash':\n return 'nominal';\n case 'order':\n return 'ordinal';\n }\n if (isSortableFieldDef(fieldDef) && isArray(fieldDef.sort)) {\n return 'ordinal';\n }\n const {\n aggregate,\n bin,\n timeUnit\n } = fieldDef;\n if (timeUnit) {\n return 'temporal';\n }\n if (bin || aggregate && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n return 'quantitative';\n }\n if (isScaleFieldDef(fieldDef) && (_fieldDef$scale = fieldDef.scale) !== null && _fieldDef$scale !== void 0 && _fieldDef$scale.type) {\n switch (SCALE_CATEGORY_INDEX[fieldDef.scale.type]) {\n case 'numeric':\n case 'discretizing':\n return 'quantitative';\n case 'time':\n return 'temporal';\n }\n }\n return 'nominal';\n}\n/**\n * Returns the fieldDef -- either from the outer channelDef or from the condition of channelDef.\n * @param channelDef\n */\nfunction getFieldDef(channelDef) {\n if (isFieldDef(channelDef)) {\n return channelDef;\n } else if (hasConditionalFieldDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\nfunction getFieldOrDatumDef(channelDef) {\n if (isFieldOrDatumDef(channelDef)) {\n return channelDef;\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n return channelDef.condition;\n }\n return undefined;\n}\n/**\n * Convert type to full, lowercase type, or augment the fieldDef with a default type if missing.\n */\nfunction initChannelDef(channelDef, channel, config) {\n let opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (isString(channelDef) || isNumber$1(channelDef) || isBoolean$2(channelDef)) {\n const primitiveType = isString(channelDef) ? 'string' : isNumber$1(channelDef) ? 'number' : 'boolean';\n warn(primitiveChannelDef(channel, primitiveType, channelDef));\n return {\n value: channelDef\n };\n }\n // If a fieldDef contains a field, we need type.\n if (isFieldOrDatumDef(channelDef)) {\n return initFieldOrDatumDef(channelDef, channel, config, opt);\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n return {\n ...channelDef,\n // Need to cast as normalizeFieldDef normally return FieldDef, but here we know that it is definitely Condition\n condition: initFieldOrDatumDef(channelDef.condition, channel, config, opt)\n };\n }\n return channelDef;\n}\nfunction initFieldOrDatumDef(fd, channel, config, opt) {\n if (isStringFieldOrDatumDef(fd)) {\n const {\n format,\n formatType,\n ...rest\n } = fd;\n if (isCustomFormatType(formatType) && !config.customFormatTypes) {\n warn(customFormatTypeNotAllowed(channel));\n return initFieldOrDatumDef(rest, channel, config, opt);\n }\n } else {\n const guideType = isPositionFieldOrDatumDef(fd) ? 'axis' : isMarkPropFieldOrDatumDef(fd) ? 'legend' : isFacetFieldDef(fd) ? 'header' : null;\n if (guideType && fd[guideType]) {\n const {\n format,\n formatType,\n ...newGuide\n } = fd[guideType];\n if (isCustomFormatType(formatType) && !config.customFormatTypes) {\n warn(customFormatTypeNotAllowed(channel));\n return initFieldOrDatumDef({\n ...fd,\n [guideType]: newGuide\n }, channel, config, opt);\n }\n }\n }\n if (isFieldDef(fd)) {\n return initFieldDef(fd, channel, opt);\n }\n return initDatumDef(fd);\n}\nfunction initDatumDef(datumDef) {\n let type = datumDef['type'];\n if (type) {\n return datumDef;\n }\n const {\n datum\n } = datumDef;\n type = isNumber$1(datum) ? 'quantitative' : isString(datum) ? 'nominal' : isDateTime(datum) ? 'temporal' : undefined;\n return {\n ...datumDef,\n type\n };\n}\nfunction initFieldDef(fd, channel) {\n let {\n compositeMark = false\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n aggregate,\n timeUnit,\n bin,\n field\n } = fd;\n const fieldDef = {\n ...fd\n };\n // Drop invalid aggregate\n if (!compositeMark && aggregate && !isAggregateOp(aggregate) && !isArgmaxDef(aggregate) && !isArgminDef(aggregate)) {\n warn(invalidAggregate(aggregate));\n delete fieldDef.aggregate;\n }\n // Normalize Time Unit\n if (timeUnit) {\n fieldDef.timeUnit = normalizeTimeUnit(timeUnit);\n }\n if (field) {\n fieldDef.field = \"\".concat(field);\n }\n // Normalize bin\n if (isBinning(bin)) {\n fieldDef.bin = normalizeBin(bin, channel);\n }\n if (isBinned(bin) && !isXorY(channel)) {\n warn(channelShouldNotBeUsedForBinned(channel));\n }\n // Normalize Type\n if (isTypedFieldDef(fieldDef)) {\n const {\n type\n } = fieldDef;\n const fullType = getFullName(type);\n if (type !== fullType) {\n // convert short type to full type\n fieldDef.type = fullType;\n }\n if (type !== 'quantitative') {\n if (isCountingAggregateOp(aggregate)) {\n warn(invalidFieldTypeForCountAggregate(type, aggregate));\n fieldDef.type = 'quantitative';\n }\n }\n } else if (!isSecondaryRangeChannel(channel)) {\n // If type is empty / invalid, then augment with default type\n const newType = defaultType$2(fieldDef, channel);\n fieldDef['type'] = newType;\n }\n if (isTypedFieldDef(fieldDef)) {\n const {\n compatible,\n warning\n } = channelCompatibility(fieldDef, channel) || {};\n if (compatible === false) {\n warn(warning);\n }\n }\n if (isSortableFieldDef(fieldDef) && isString(fieldDef.sort)) {\n const {\n sort\n } = fieldDef;\n if (isSortByChannel(sort)) {\n return {\n ...fieldDef,\n sort: {\n encoding: sort\n }\n };\n }\n const sub = sort.substr(1);\n if (sort.charAt(0) === '-' && isSortByChannel(sub)) {\n return {\n ...fieldDef,\n sort: {\n encoding: sub,\n order: 'descending'\n }\n };\n }\n }\n if (isFacetFieldDef(fieldDef)) {\n const {\n header\n } = fieldDef;\n if (header) {\n const {\n orient,\n ...rest\n } = header;\n if (orient) {\n return {\n ...fieldDef,\n header: {\n ...rest,\n labelOrient: header.labelOrient || orient,\n titleOrient: header.titleOrient || orient\n }\n };\n }\n }\n }\n return fieldDef;\n}\nfunction normalizeBin(bin, channel) {\n if (isBoolean$2(bin)) {\n return {\n maxbins: autoMaxBins(channel)\n };\n } else if (bin === 'binned') {\n return {\n binned: true\n };\n } else if (!bin.maxbins && !bin.step) {\n return {\n ...bin,\n maxbins: autoMaxBins(channel)\n };\n } else {\n return bin;\n }\n}\nconst COMPATIBLE = {\n compatible: true\n};\nfunction channelCompatibility(fieldDef, channel) {\n const type = fieldDef.type;\n if (type === 'geojson' && channel !== 'shape') {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should not be used with a geojson data.\")\n };\n }\n switch (channel) {\n case ROW:\n case COLUMN:\n case FACET:\n if (!isDiscrete(fieldDef)) {\n return {\n compatible: false,\n warning: channelShouldBeDiscrete(channel)\n };\n }\n return COMPATIBLE;\n case X:\n case Y:\n case XOFFSET:\n case YOFFSET:\n case COLOR:\n case FILL:\n case STROKE:\n case TEXT$1:\n case DETAIL:\n case KEY:\n case TOOLTIP:\n case HREF:\n case URL$1:\n case ANGLE:\n case THETA:\n case RADIUS:\n case DESCRIPTION:\n return COMPATIBLE;\n case LONGITUDE:\n case LONGITUDE2:\n case LATITUDE:\n case LATITUDE2:\n if (type !== QUANTITATIVE) {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should be used with a quantitative field only, not \").concat(fieldDef.type, \" field.\")\n };\n }\n return COMPATIBLE;\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEWIDTH:\n case SIZE:\n case THETA2:\n case RADIUS2:\n case X2:\n case Y2:\n if (type === 'nominal' && !fieldDef['sort']) {\n return {\n compatible: false,\n warning: \"Channel \".concat(channel, \" should not be used with an unsorted discrete field.\")\n };\n }\n return COMPATIBLE;\n case SHAPE:\n case STROKEDASH:\n if (!isDiscrete(fieldDef) && !isDiscretizing(fieldDef)) {\n return {\n compatible: false,\n warning: channelShouldBeDiscreteOrDiscretizing(channel)\n };\n }\n return COMPATIBLE;\n case ORDER:\n if (fieldDef.type === 'nominal' && !('sort' in fieldDef)) {\n return {\n compatible: false,\n warning: \"Channel order is inappropriate for nominal field, which has no inherent order.\"\n };\n }\n return COMPATIBLE;\n }\n}\n/**\n * Check if the field def uses a time format or does not use any format but is temporal\n * (this does not cover field defs that are temporal but use a number format).\n */\nfunction isFieldOrDatumDefForTimeFormat(fieldOrDatumDef) {\n const {\n formatType\n } = getFormatMixins(fieldOrDatumDef);\n return formatType === 'time' || !formatType && isTimeFieldDef(fieldOrDatumDef);\n}\n/**\n * Check if field def has type `temporal`. If you want to also cover field defs that use a time format, use `isTimeFormatFieldDef`.\n */\nfunction isTimeFieldDef(def) {\n return def && (def['type'] === 'temporal' || isFieldDef(def) && !!def.timeUnit);\n}\n/**\n * Getting a value associated with a fielddef.\n * Convert the value to Vega expression if applicable (for datetime object, or string if the field def is temporal or has timeUnit)\n */\nfunction valueExpr(v, _ref25) {\n var _normalizeTimeUnit5;\n let {\n timeUnit,\n type,\n wrapTime,\n undefinedIfExprNotRequired\n } = _ref25;\n const unit = timeUnit && ((_normalizeTimeUnit5 = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit5 === void 0 ? void 0 : _normalizeTimeUnit5.unit);\n let isTime = unit || type === 'temporal';\n let expr;\n if (isExprRef(v)) {\n expr = v.expr;\n } else if (isSignalRef(v)) {\n expr = v.signal;\n } else if (isDateTime(v)) {\n isTime = true;\n expr = dateTimeToExpr(v);\n } else if (isString(v) || isNumber$1(v)) {\n if (isTime) {\n expr = \"datetime(\".concat(stringify$1(v), \")\");\n if (isLocalSingleTimeUnit(unit)) {\n // for single timeUnit, we will use dateTimeToExpr to convert number/string to match the timeUnit\n if (isNumber$1(v) && v < 10000 || isString(v) && isNaN(Date.parse(v))) {\n expr = dateTimeToExpr({\n [unit]: v\n });\n }\n }\n }\n }\n if (expr) {\n return wrapTime && isTime ? \"time(\".concat(expr, \")\") : expr;\n }\n // number or boolean or normal string\n return undefinedIfExprNotRequired ? undefined : stringify$1(v);\n}\n/**\n * Standardize value array -- convert each value to Vega expression if applicable\n */\nfunction valueArray(fieldOrDatumDef, values) {\n const {\n type\n } = fieldOrDatumDef;\n return values.map(v => {\n const timeUnit = isFieldDef(fieldOrDatumDef) && !isBinnedTimeUnit(fieldOrDatumDef.timeUnit) ? fieldOrDatumDef.timeUnit : undefined;\n const expr = valueExpr(v, {\n timeUnit,\n type,\n undefinedIfExprNotRequired: true\n });\n // return signal for the expression if we need an expression\n if (expr !== undefined) {\n return {\n signal: expr\n };\n }\n // otherwise just return the original value\n return v;\n });\n}\n/**\n * Checks whether a fieldDef for a particular channel requires a computed bin range.\n */\nfunction binRequiresRange(fieldDef, channel) {\n if (!isBinning(fieldDef.bin)) {\n console.warn('Only call this method for binned field defs.');\n return false;\n }\n // We need the range only when the user explicitly forces a binned field to be use discrete scale. In this case, bin range is used in axis and legend labels.\n // We could check whether the axis or legend exists (not disabled) but that seems overkill.\n return isScaleChannel(channel) && ['ordinal', 'nominal'].includes(fieldDef.type);\n}\nconst CONDITIONAL_AXIS_PROP_INDEX = {\n labelAlign: {\n part: 'labels',\n vgProp: 'align'\n },\n labelBaseline: {\n part: 'labels',\n vgProp: 'baseline'\n },\n labelColor: {\n part: 'labels',\n vgProp: 'fill'\n },\n labelFont: {\n part: 'labels',\n vgProp: 'font'\n },\n labelFontSize: {\n part: 'labels',\n vgProp: 'fontSize'\n },\n labelFontStyle: {\n part: 'labels',\n vgProp: 'fontStyle'\n },\n labelFontWeight: {\n part: 'labels',\n vgProp: 'fontWeight'\n },\n labelOpacity: {\n part: 'labels',\n vgProp: 'opacity'\n },\n labelOffset: null,\n labelPadding: null,\n gridColor: {\n part: 'grid',\n vgProp: 'stroke'\n },\n gridDash: {\n part: 'grid',\n vgProp: 'strokeDash'\n },\n gridDashOffset: {\n part: 'grid',\n vgProp: 'strokeDashOffset'\n },\n gridOpacity: {\n part: 'grid',\n vgProp: 'opacity'\n },\n gridWidth: {\n part: 'grid',\n vgProp: 'strokeWidth'\n },\n tickColor: {\n part: 'ticks',\n vgProp: 'stroke'\n },\n tickDash: {\n part: 'ticks',\n vgProp: 'strokeDash'\n },\n tickDashOffset: {\n part: 'ticks',\n vgProp: 'strokeDashOffset'\n },\n tickOpacity: {\n part: 'ticks',\n vgProp: 'opacity'\n },\n tickSize: null,\n tickWidth: {\n part: 'ticks',\n vgProp: 'strokeWidth'\n }\n};\nfunction isConditionalAxisValue(v) {\n return v === null || v === void 0 ? void 0 : v.condition;\n}\nconst AXIS_PARTS = ['domain', 'grid', 'labels', 'ticks', 'title'];\n/**\n * A dictionary listing whether a certain axis property is applicable for only main axes or only grid axes.\n */\nconst AXIS_PROPERTY_TYPE = {\n grid: 'grid',\n gridCap: 'grid',\n gridColor: 'grid',\n gridDash: 'grid',\n gridDashOffset: 'grid',\n gridOpacity: 'grid',\n gridScale: 'grid',\n gridWidth: 'grid',\n orient: 'main',\n bandPosition: 'both',\n aria: 'main',\n description: 'main',\n domain: 'main',\n domainCap: 'main',\n domainColor: 'main',\n domainDash: 'main',\n domainDashOffset: 'main',\n domainOpacity: 'main',\n domainWidth: 'main',\n format: 'main',\n formatType: 'main',\n labelAlign: 'main',\n labelAngle: 'main',\n labelBaseline: 'main',\n labelBound: 'main',\n labelColor: 'main',\n labelFlush: 'main',\n labelFlushOffset: 'main',\n labelFont: 'main',\n labelFontSize: 'main',\n labelFontStyle: 'main',\n labelFontWeight: 'main',\n labelLimit: 'main',\n labelLineHeight: 'main',\n labelOffset: 'main',\n labelOpacity: 'main',\n labelOverlap: 'main',\n labelPadding: 'main',\n labels: 'main',\n labelSeparation: 'main',\n maxExtent: 'main',\n minExtent: 'main',\n offset: 'both',\n position: 'main',\n tickCap: 'main',\n tickColor: 'main',\n tickDash: 'main',\n tickDashOffset: 'main',\n tickMinStep: 'both',\n tickOffset: 'both',\n tickOpacity: 'main',\n tickRound: 'both',\n ticks: 'main',\n tickSize: 'main',\n tickWidth: 'both',\n title: 'main',\n titleAlign: 'main',\n titleAnchor: 'main',\n titleAngle: 'main',\n titleBaseline: 'main',\n titleColor: 'main',\n titleFont: 'main',\n titleFontSize: 'main',\n titleFontStyle: 'main',\n titleFontWeight: 'main',\n titleLimit: 'main',\n titleLineHeight: 'main',\n titleOpacity: 'main',\n titlePadding: 'main',\n titleX: 'main',\n titleY: 'main',\n encode: 'both',\n scale: 'both',\n tickBand: 'both',\n tickCount: 'both',\n tickExtra: 'both',\n translate: 'both',\n values: 'both',\n zindex: 'both' // this is actually set afterward, so it doesn't matter\n};\n\nconst COMMON_AXIS_PROPERTIES_INDEX = {\n orient: 1,\n aria: 1,\n bandPosition: 1,\n description: 1,\n domain: 1,\n domainCap: 1,\n domainColor: 1,\n domainDash: 1,\n domainDashOffset: 1,\n domainOpacity: 1,\n domainWidth: 1,\n format: 1,\n formatType: 1,\n grid: 1,\n gridCap: 1,\n gridColor: 1,\n gridDash: 1,\n gridDashOffset: 1,\n gridOpacity: 1,\n gridWidth: 1,\n labelAlign: 1,\n labelAngle: 1,\n labelBaseline: 1,\n labelBound: 1,\n labelColor: 1,\n labelFlush: 1,\n labelFlushOffset: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelLineHeight: 1,\n labelOffset: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labels: 1,\n labelSeparation: 1,\n maxExtent: 1,\n minExtent: 1,\n offset: 1,\n position: 1,\n tickBand: 1,\n tickCap: 1,\n tickColor: 1,\n tickCount: 1,\n tickDash: 1,\n tickDashOffset: 1,\n tickExtra: 1,\n tickMinStep: 1,\n tickOffset: 1,\n tickOpacity: 1,\n tickRound: 1,\n ticks: 1,\n tickSize: 1,\n tickWidth: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleAngle: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleLineHeight: 1,\n titleOpacity: 1,\n titlePadding: 1,\n titleX: 1,\n titleY: 1,\n translate: 1,\n values: 1,\n zindex: 1\n};\nconst AXIS_PROPERTIES_INDEX = {\n ...COMMON_AXIS_PROPERTIES_INDEX,\n style: 1,\n labelExpr: 1,\n encoding: 1\n};\nfunction isAxisProperty(prop) {\n return !!AXIS_PROPERTIES_INDEX[prop];\n}\nconst AXIS_CONFIGS_INDEX = {\n axis: 1,\n axisBand: 1,\n axisBottom: 1,\n axisDiscrete: 1,\n axisLeft: 1,\n axisPoint: 1,\n axisQuantitative: 1,\n axisRight: 1,\n axisTemporal: 1,\n axisTop: 1,\n axisX: 1,\n axisXBand: 1,\n axisXDiscrete: 1,\n axisXPoint: 1,\n axisXQuantitative: 1,\n axisXTemporal: 1,\n axisY: 1,\n axisYBand: 1,\n axisYDiscrete: 1,\n axisYPoint: 1,\n axisYQuantitative: 1,\n axisYTemporal: 1\n};\nconst AXIS_CONFIGS = keys(AXIS_CONFIGS_INDEX);\nfunction isUnitSpec(spec) {\n return 'mark' in spec;\n}\nclass CompositeMarkNormalizer {\n constructor(name, run) {\n this.name = name;\n this.run = run;\n }\n hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n return getMarkType(spec.mark) === this.name;\n }\n return false;\n }\n}\nfunction channelHasField(encoding, channel) {\n const channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (isArray(channelDef)) {\n return some(channelDef, fieldDef => !!fieldDef.field);\n } else {\n return isFieldDef(channelDef) || hasConditionalFieldDef(channelDef);\n }\n }\n return false;\n}\nfunction channelHasFieldOrDatum(encoding, channel) {\n const channelDef = encoding && encoding[channel];\n if (channelDef) {\n if (isArray(channelDef)) {\n return some(channelDef, fieldDef => !!fieldDef.field);\n } else {\n return isFieldDef(channelDef) || isDatumDef(channelDef) || hasConditionalFieldOrDatumDef(channelDef);\n }\n }\n return false;\n}\nfunction channelHasNestedOffsetScale(encoding, channel) {\n if (isXorY(channel)) {\n const fieldDef = encoding[channel];\n if ((isFieldDef(fieldDef) || isDatumDef(fieldDef)) && (isDiscrete$1(fieldDef.type) || isFieldDef(fieldDef) && fieldDef.timeUnit)) {\n const offsetChannel = getOffsetScaleChannel(channel);\n return channelHasFieldOrDatum(encoding, offsetChannel);\n }\n }\n return false;\n}\nfunction isAggregate$1(encoding) {\n return some(CHANNELS, channel => {\n if (channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n if (isArray(channelDef)) {\n return some(channelDef, fieldDef => !!fieldDef.aggregate);\n } else {\n const fieldDef = getFieldDef(channelDef);\n return fieldDef && !!fieldDef.aggregate;\n }\n }\n return false;\n });\n}\nfunction extractTransformsFromEncoding(oldEncoding, config) {\n const groupby = [];\n const bins = [];\n const timeUnits = [];\n const aggregate = [];\n const encoding = {};\n forEach(oldEncoding, (channelDef, channel) => {\n // Extract potential embedded transformations along with remaining properties\n if (isFieldDef(channelDef)) {\n const {\n field,\n aggregate: aggOp,\n bin,\n timeUnit,\n ...remaining\n } = channelDef;\n if (aggOp || timeUnit || bin) {\n const guide = getGuide(channelDef);\n const isTitleDefined = guide === null || guide === void 0 ? void 0 : guide.title;\n let newField = vgField(channelDef, {\n forAs: true\n });\n const newFieldDef = {\n // Only add title if it doesn't exist\n ...(isTitleDefined ? [] : {\n title: title(channelDef, config, {\n allowDisabling: true\n })\n }),\n ...remaining,\n // Always overwrite field\n field: newField\n };\n if (aggOp) {\n let op;\n if (isArgmaxDef(aggOp)) {\n op = 'argmax';\n newField = vgField({\n op: 'argmax',\n field: aggOp.argmax\n }, {\n forAs: true\n });\n newFieldDef.field = \"\".concat(newField, \".\").concat(field);\n } else if (isArgminDef(aggOp)) {\n op = 'argmin';\n newField = vgField({\n op: 'argmin',\n field: aggOp.argmin\n }, {\n forAs: true\n });\n newFieldDef.field = \"\".concat(newField, \".\").concat(field);\n } else if (aggOp !== 'boxplot' && aggOp !== 'errorbar' && aggOp !== 'errorband') {\n op = aggOp;\n }\n if (op) {\n const aggregateEntry = {\n op,\n as: newField\n };\n if (field) {\n aggregateEntry.field = field;\n }\n aggregate.push(aggregateEntry);\n }\n } else {\n groupby.push(newField);\n if (isTypedFieldDef(channelDef) && isBinning(bin)) {\n bins.push({\n bin,\n field,\n as: newField\n });\n // Add additional groupbys for range and end of bins\n groupby.push(vgField(channelDef, {\n binSuffix: 'end'\n }));\n if (binRequiresRange(channelDef, channel)) {\n groupby.push(vgField(channelDef, {\n binSuffix: 'range'\n }));\n }\n // Create accompanying 'x2' or 'y2' field if channel is 'x' or 'y' respectively\n if (isXorY(channel)) {\n const secondaryChannel = {\n field: \"\".concat(newField, \"_end\")\n };\n encoding[\"\".concat(channel, \"2\")] = secondaryChannel;\n }\n newFieldDef.bin = 'binned';\n if (!isSecondaryRangeChannel(channel)) {\n newFieldDef['type'] = QUANTITATIVE;\n }\n } else if (timeUnit && !isBinnedTimeUnit(timeUnit)) {\n timeUnits.push({\n timeUnit,\n field,\n as: newField\n });\n // define the format type for later compilation\n const formatType = isTypedFieldDef(channelDef) && channelDef.type !== TEMPORAL && 'time';\n if (formatType) {\n if (channel === TEXT$1 || channel === TOOLTIP) {\n newFieldDef['formatType'] = formatType;\n } else if (isNonPositionScaleChannel(channel)) {\n newFieldDef['legend'] = {\n formatType,\n ...newFieldDef['legend']\n };\n } else if (isXorY(channel)) {\n newFieldDef['axis'] = {\n formatType,\n ...newFieldDef['axis']\n };\n }\n }\n }\n }\n // now the field should refer to post-transformed field instead\n encoding[channel] = newFieldDef;\n } else {\n groupby.push(field);\n encoding[channel] = oldEncoding[channel];\n }\n } else {\n // For value def / signal ref / datum def, just copy\n encoding[channel] = oldEncoding[channel];\n }\n });\n return {\n bins,\n timeUnits,\n aggregate,\n groupby,\n encoding\n };\n}\nfunction markChannelCompatible(encoding, channel, mark) {\n const markSupported = supportMark(channel, mark);\n if (!markSupported) {\n return false;\n } else if (markSupported === 'binned') {\n const primaryFieldDef = encoding[channel === X2 ? X : Y];\n // circle, point, square and tick only support x2/y2 when their corresponding x/y fieldDef\n // has \"binned\" data and thus need x2/y2 to specify the bin-end field.\n if (isFieldDef(primaryFieldDef) && isFieldDef(encoding[channel]) && isBinned(primaryFieldDef.bin)) {\n return true;\n } else {\n return false;\n }\n }\n return true;\n}\nfunction initEncoding(encoding, mark, filled, config) {\n const normalizedEncoding = {};\n for (const key of keys(encoding)) {\n if (!isChannel(key)) {\n // Drop invalid channel\n warn(invalidEncodingChannel(key));\n }\n }\n for (let channel of UNIT_CHANNELS) {\n if (!encoding[channel]) {\n continue;\n }\n const channelDef = encoding[channel];\n if (isXorYOffset(channel)) {\n const mainChannel = getMainChannelFromOffsetChannel(channel);\n const positionDef = normalizedEncoding[mainChannel];\n if (isFieldDef(positionDef)) {\n if (isContinuous(positionDef.type)) {\n if (isFieldDef(channelDef) && !positionDef.timeUnit) {\n // TODO: nesting continuous field instead continuous field should\n // behave like offsetting the data in data domain\n warn(offsetNestedInsideContinuousPositionScaleDropped(mainChannel));\n continue;\n }\n }\n } else {\n // no x/y, replace it with main channel\n channel = mainChannel;\n warn(replaceOffsetWithMainChannel(mainChannel));\n }\n }\n if (channel === 'angle' && mark === 'arc' && !encoding.theta) {\n warn(REPLACE_ANGLE_WITH_THETA);\n channel = THETA;\n }\n if (!markChannelCompatible(encoding, channel, mark)) {\n // Drop unsupported channel\n warn(incompatibleChannel(channel, mark));\n continue;\n }\n // Drop line's size if the field is aggregated.\n if (channel === SIZE && mark === 'line') {\n const fieldDef = getFieldDef(encoding[channel]);\n if (fieldDef !== null && fieldDef !== void 0 && fieldDef.aggregate) {\n warn(LINE_WITH_VARYING_SIZE);\n continue;\n }\n }\n // Drop color if either fill or stroke is specified\n if (channel === COLOR && (filled ? 'fill' in encoding : 'stroke' in encoding)) {\n warn(droppingColor('encoding', {\n fill: 'fill' in encoding,\n stroke: 'stroke' in encoding\n }));\n continue;\n }\n if (channel === DETAIL || channel === ORDER && !isArray(channelDef) && !isValueDef(channelDef) || channel === TOOLTIP && isArray(channelDef)) {\n if (channelDef) {\n if (channel === ORDER) {\n const def = encoding[channel];\n if (isOrderOnlyDef(def)) {\n normalizedEncoding[channel] = def;\n continue;\n }\n }\n // Array of fieldDefs for detail channel (or production rule)\n normalizedEncoding[channel] = array$5(channelDef).reduce((defs, fieldDef) => {\n if (!isFieldDef(fieldDef)) {\n warn(emptyFieldDef(fieldDef, channel));\n } else {\n defs.push(initFieldDef(fieldDef, channel));\n }\n return defs;\n }, []);\n }\n } else {\n if (channel === TOOLTIP && channelDef === null) {\n // Preserve null so we can use it to disable tooltip\n normalizedEncoding[channel] = null;\n } else if (!isFieldDef(channelDef) && !isDatumDef(channelDef) && !isValueDef(channelDef) && !isConditionalDef(channelDef) && !isSignalRef(channelDef)) {\n warn(emptyFieldDef(channelDef, channel));\n continue;\n }\n normalizedEncoding[channel] = initChannelDef(channelDef, channel, config);\n }\n }\n return normalizedEncoding;\n}\n/**\n * For composite marks, we have to call initChannelDef during init so we can infer types earlier.\n */\nfunction normalizeEncoding(encoding, config) {\n const normalizedEncoding = {};\n for (const channel of keys(encoding)) {\n const newChannelDef = initChannelDef(encoding[channel], channel, config, {\n compositeMark: true\n });\n normalizedEncoding[channel] = newChannelDef;\n }\n return normalizedEncoding;\n}\nfunction fieldDefs(encoding) {\n const arr = [];\n for (const channel of keys(encoding)) {\n if (channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n const channelDefArray = array$5(channelDef);\n for (const def of channelDefArray) {\n if (isFieldDef(def)) {\n arr.push(def);\n } else if (hasConditionalFieldDef(def)) {\n arr.push(def.condition);\n }\n }\n }\n }\n return arr;\n}\nfunction forEach(mapping, f, thisArg) {\n if (!mapping) {\n return;\n }\n for (const channel of keys(mapping)) {\n const el = mapping[channel];\n if (isArray(el)) {\n for (const channelDef of el) {\n f.call(thisArg, channelDef, channel);\n }\n } else {\n f.call(thisArg, el, channel);\n }\n }\n}\nfunction reduce(mapping, f, init, thisArg) {\n if (!mapping) {\n return init;\n }\n return keys(mapping).reduce((r, channel) => {\n const map = mapping[channel];\n if (isArray(map)) {\n return map.reduce((r1, channelDef) => {\n return f.call(thisArg, r1, channelDef, channel);\n }, r);\n } else {\n return f.call(thisArg, r, map, channel);\n }\n }, init);\n}\n/**\n * Returns list of path grouping fields for the given encoding\n */\nfunction pathGroupingFields(mark, encoding) {\n return keys(encoding).reduce((details, channel) => {\n switch (channel) {\n // x, y, x2, y2, lat, long, lat1, long2, order, tooltip, href, aria label, cursor should not cause lines to group\n case X:\n case Y:\n case HREF:\n case DESCRIPTION:\n case URL$1:\n case X2:\n case Y2:\n case XOFFSET:\n case YOFFSET:\n case THETA:\n case THETA2:\n case RADIUS:\n case RADIUS2:\n // falls through\n case LATITUDE:\n case LONGITUDE:\n case LATITUDE2:\n case LONGITUDE2:\n // TODO: case 'cursor':\n // text, shape, shouldn't be a part of line/trail/area [falls through]\n case TEXT$1:\n case SHAPE:\n case ANGLE:\n // falls through\n // tooltip fields should not be added to group by [falls through]\n case TOOLTIP:\n return details;\n case ORDER:\n // order should not group line / trail\n if (mark === 'line' || mark === 'trail') {\n return details;\n }\n // but order should group area for stacking (falls through)\n case DETAIL:\n case KEY:\n {\n const channelDef = encoding[channel];\n if (isArray(channelDef) || isFieldDef(channelDef)) {\n for (const fieldDef of array$5(channelDef)) {\n if (!fieldDef.aggregate) {\n details.push(vgField(fieldDef, {}));\n }\n }\n }\n return details;\n }\n case SIZE:\n if (mark === 'trail') {\n // For trail, size should not group trail lines.\n return details;\n }\n // For line, size should group lines.\n // falls through\n case COLOR:\n case FILL:\n case STROKE:\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n case STROKEDASH:\n case STROKEWIDTH:\n {\n // TODO strokeDashOffset:\n // falls through\n const fieldDef = getFieldDef(encoding[channel]);\n if (fieldDef && !fieldDef.aggregate) {\n details.push(vgField(fieldDef, {}));\n }\n return details;\n }\n }\n }, []);\n}\nfunction filterTooltipWithAggregatedField(oldEncoding) {\n const {\n tooltip,\n ...filteredEncoding\n } = oldEncoding;\n if (!tooltip) {\n return {\n filteredEncoding\n };\n }\n let customTooltipWithAggregatedField;\n let customTooltipWithoutAggregatedField;\n if (isArray(tooltip)) {\n for (const t of tooltip) {\n if (t.aggregate) {\n if (!customTooltipWithAggregatedField) {\n customTooltipWithAggregatedField = [];\n }\n customTooltipWithAggregatedField.push(t);\n } else {\n if (!customTooltipWithoutAggregatedField) {\n customTooltipWithoutAggregatedField = [];\n }\n customTooltipWithoutAggregatedField.push(t);\n }\n }\n if (customTooltipWithAggregatedField) {\n filteredEncoding.tooltip = customTooltipWithAggregatedField;\n }\n } else {\n if (tooltip['aggregate']) {\n filteredEncoding.tooltip = tooltip;\n } else {\n customTooltipWithoutAggregatedField = tooltip;\n }\n }\n if (isArray(customTooltipWithoutAggregatedField) && customTooltipWithoutAggregatedField.length === 1) {\n customTooltipWithoutAggregatedField = customTooltipWithoutAggregatedField[0];\n }\n return {\n customTooltipWithoutAggregatedField,\n filteredEncoding\n };\n}\nfunction getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis) {\n let withFieldName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n if ('tooltip' in encodingWithoutContinuousAxis) {\n return {\n tooltip: encodingWithoutContinuousAxis.tooltip\n };\n }\n const fiveSummaryTooltip = tooltipSummary.map(_ref26 => {\n let {\n fieldPrefix,\n titlePrefix\n } = _ref26;\n const mainTitle = withFieldName ? \" of \".concat(getTitle(continuousAxisChannelDef)) : '';\n return {\n field: fieldPrefix + continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type,\n title: isSignalRef(titlePrefix) ? {\n signal: \"\".concat(titlePrefix, \"\\\"\").concat(escape(mainTitle), \"\\\"\")\n } : titlePrefix + mainTitle\n };\n });\n const tooltipFieldDefs = fieldDefs(encodingWithoutContinuousAxis).map(toStringFieldDef);\n return {\n tooltip: [...fiveSummaryTooltip,\n // need to cast because TextFieldDef supports fewer types of bin\n ...unique(tooltipFieldDefs, hash)]\n };\n}\nfunction getTitle(continuousAxisChannelDef) {\n const {\n title,\n field\n } = continuousAxisChannelDef;\n return getFirstDefined(title, field);\n}\nfunction makeCompositeAggregatePartFactory(compositeMarkDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, compositeMarkConfig) {\n const {\n scale,\n axis\n } = continuousAxisChannelDef;\n return _ref27 => {\n let {\n partName,\n mark,\n positionPrefix,\n endPositionPrefix = undefined,\n extraEncoding = {}\n } = _ref27;\n const title = getTitle(continuousAxisChannelDef);\n return partLayerMixins(compositeMarkDef, partName, compositeMarkConfig, {\n mark,\n encoding: {\n [continuousAxis]: {\n field: \"\".concat(positionPrefix, \"_\").concat(continuousAxisChannelDef.field),\n type: continuousAxisChannelDef.type,\n ...(title !== undefined ? {\n title\n } : {}),\n ...(scale !== undefined ? {\n scale\n } : {}),\n ...(axis !== undefined ? {\n axis\n } : {})\n },\n ...(isString(endPositionPrefix) ? {\n [\"\".concat(continuousAxis, \"2\")]: {\n field: \"\".concat(endPositionPrefix, \"_\").concat(continuousAxisChannelDef.field)\n }\n } : {}),\n ...sharedEncoding,\n ...extraEncoding\n }\n });\n };\n}\nfunction partLayerMixins(markDef, part, compositeMarkConfig, partBaseSpec) {\n const {\n clip,\n color,\n opacity\n } = markDef;\n const mark = markDef.type;\n if (markDef[part] || markDef[part] === undefined && compositeMarkConfig[part]) {\n return [{\n ...partBaseSpec,\n mark: {\n ...compositeMarkConfig[part],\n ...(clip ? {\n clip\n } : {}),\n ...(color ? {\n color\n } : {}),\n ...(opacity ? {\n opacity\n } : {}),\n ...(isMarkDef(partBaseSpec.mark) ? partBaseSpec.mark : {\n type: partBaseSpec.mark\n }),\n style: \"\".concat(mark, \"-\").concat(String(part)),\n ...(isBoolean$2(markDef[part]) ? {} : markDef[part])\n }\n }];\n }\n return [];\n}\nfunction compositeMarkContinuousAxis(spec, orient, compositeMark) {\n const {\n encoding\n } = spec;\n const continuousAxis = orient === 'vertical' ? 'y' : 'x';\n const continuousAxisChannelDef = encoding[continuousAxis]; // Safe to cast because if x is not continuous fielddef, the orient would not be horizontal.\n const continuousAxisChannelDef2 = encoding[\"\".concat(continuousAxis, \"2\")];\n const continuousAxisChannelDefError = encoding[\"\".concat(continuousAxis, \"Error\")];\n const continuousAxisChannelDefError2 = encoding[\"\".concat(continuousAxis, \"Error2\")];\n return {\n continuousAxisChannelDef: filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark),\n continuousAxisChannelDef2: filterAggregateFromChannelDef(continuousAxisChannelDef2, compositeMark),\n continuousAxisChannelDefError: filterAggregateFromChannelDef(continuousAxisChannelDefError, compositeMark),\n continuousAxisChannelDefError2: filterAggregateFromChannelDef(continuousAxisChannelDefError2, compositeMark),\n continuousAxis\n };\n}\nfunction filterAggregateFromChannelDef(continuousAxisChannelDef, compositeMark) {\n if (continuousAxisChannelDef !== null && continuousAxisChannelDef !== void 0 && continuousAxisChannelDef.aggregate) {\n const {\n aggregate,\n ...continuousAxisWithoutAggregate\n } = continuousAxisChannelDef;\n if (aggregate !== compositeMark) {\n warn(errorBarContinuousAxisHasCustomizedAggregate(aggregate, compositeMark));\n }\n return continuousAxisWithoutAggregate;\n } else {\n return continuousAxisChannelDef;\n }\n}\nfunction compositeMarkOrient(spec, compositeMark) {\n const {\n mark,\n encoding\n } = spec;\n const {\n x,\n y\n } = encoding;\n if (isMarkDef(mark) && mark.orient) {\n return mark.orient;\n }\n if (isContinuousFieldOrDatumDef(x)) {\n // x is continuous\n if (isContinuousFieldOrDatumDef(y)) {\n // both x and y are continuous\n const xAggregate = isFieldDef(x) && x.aggregate;\n const yAggregate = isFieldDef(y) && y.aggregate;\n if (!xAggregate && yAggregate === compositeMark) {\n return 'vertical';\n } else if (!yAggregate && xAggregate === compositeMark) {\n return 'horizontal';\n } else if (xAggregate === compositeMark && yAggregate === compositeMark) {\n throw new Error('Both x and y cannot have aggregate');\n } else {\n if (isFieldOrDatumDefForTimeFormat(y) && !isFieldOrDatumDefForTimeFormat(x)) {\n // y is temporal but x is not\n return 'horizontal';\n }\n // default orientation for two continuous\n return 'vertical';\n }\n }\n return 'horizontal';\n } else if (isContinuousFieldOrDatumDef(y)) {\n // y is continuous but x is not\n return 'vertical';\n } else {\n // Neither x nor y is continuous.\n throw new Error(\"Need a valid continuous axis for \".concat(compositeMark, \"s\"));\n }\n}\nconst BOXPLOT = 'boxplot';\nconst BOXPLOT_PARTS = ['box', 'median', 'outliers', 'rule', 'ticks'];\nconst boxPlotNormalizer = new CompositeMarkNormalizer(BOXPLOT, normalizeBoxPlot);\nfunction getBoxPlotType(extent) {\n if (isNumber$1(extent)) {\n return 'tukey';\n }\n // Ham: If we ever want to, we could add another extent syntax `{kIQR: number}` for the original [Q1-k*IQR, Q3+k*IQR] whisker and call this boxPlotType = `kIQR`. However, I'm not exposing this for now.\n return extent;\n}\nfunction normalizeBoxPlot(spec, _ref28) {\n var _markDef$extent;\n let {\n config\n } = _ref28;\n // Need to initEncoding first so we can infer type\n spec = {\n ...spec,\n encoding: normalizeEncoding(spec.encoding, config)\n };\n const {\n mark,\n encoding: _encoding,\n params,\n projection: _p,\n ...outerSpec\n } = spec;\n const markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (params) {\n warn(selectionNotSupported('boxplot'));\n }\n const extent = (_markDef$extent = markDef.extent) !== null && _markDef$extent !== void 0 ? _markDef$extent : config.boxplot.extent;\n const sizeValue = getMarkPropOrConfig('size', markDef,\n // TODO: https://github.com/vega/vega-lite/issues/6245\n config);\n const invalid = markDef.invalid;\n const boxPlotType = getBoxPlotType(extent);\n const {\n bins,\n timeUnits,\n transform,\n continuousAxisChannelDef,\n continuousAxis,\n groupby,\n aggregate,\n encodingWithoutContinuousAxis,\n ticksOrient,\n boxOrient,\n customTooltipWithoutAggregatedField\n } = boxParams(spec, extent, config);\n const {\n color,\n size,\n ...encodingWithoutSizeColorAndContinuousAxis\n } = encodingWithoutContinuousAxis;\n const makeBoxPlotPart = sharedEncoding => {\n return makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, sharedEncoding, config.boxplot);\n };\n const makeBoxPlotExtent = makeBoxPlotPart(encodingWithoutSizeColorAndContinuousAxis);\n const makeBoxPlotBox = makeBoxPlotPart(encodingWithoutContinuousAxis);\n const makeBoxPlotMidTick = makeBoxPlotPart({\n ...encodingWithoutSizeColorAndContinuousAxis,\n ...(size ? {\n size\n } : {})\n });\n const fiveSummaryTooltipEncoding = getCompositeMarkTooltip([{\n fieldPrefix: boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_',\n titlePrefix: 'Max'\n }, {\n fieldPrefix: 'upper_box_',\n titlePrefix: 'Q3'\n }, {\n fieldPrefix: 'mid_box_',\n titlePrefix: 'Median'\n }, {\n fieldPrefix: 'lower_box_',\n titlePrefix: 'Q1'\n }, {\n fieldPrefix: boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_',\n titlePrefix: 'Min'\n }], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n // ## Whisker Layers\n const endTick = {\n type: 'tick',\n color: 'black',\n opacity: 1,\n orient: ticksOrient,\n invalid,\n aria: false\n };\n const whiskerTooltipEncoding = boxPlotType === 'min-max' ? fiveSummaryTooltipEncoding // for min-max, show five-summary tooltip for whisker\n :\n // for tukey / k-IQR, just show upper/lower-whisker\n getCompositeMarkTooltip([{\n fieldPrefix: 'upper_whisker_',\n titlePrefix: 'Upper Whisker'\n }, {\n fieldPrefix: 'lower_whisker_',\n titlePrefix: 'Lower Whisker'\n }], continuousAxisChannelDef, encodingWithoutContinuousAxis);\n const whiskerLayers = [...makeBoxPlotExtent({\n partName: 'rule',\n mark: {\n type: 'rule',\n invalid,\n aria: false\n },\n positionPrefix: 'lower_whisker',\n endPositionPrefix: 'lower_box',\n extraEncoding: whiskerTooltipEncoding\n }), ...makeBoxPlotExtent({\n partName: 'rule',\n mark: {\n type: 'rule',\n invalid,\n aria: false\n },\n positionPrefix: 'upper_box',\n endPositionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n }), ...makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'lower_whisker',\n extraEncoding: whiskerTooltipEncoding\n }), ...makeBoxPlotExtent({\n partName: 'ticks',\n mark: endTick,\n positionPrefix: 'upper_whisker',\n extraEncoding: whiskerTooltipEncoding\n })];\n // ## Box Layers\n // TODO: support hiding certain mark parts\n const boxLayers = [...(boxPlotType !== 'tukey' ? whiskerLayers : []), ...makeBoxPlotBox({\n partName: 'box',\n mark: {\n type: 'bar',\n ...(sizeValue ? {\n size: sizeValue\n } : {}),\n orient: boxOrient,\n invalid,\n ariaRoleDescription: 'box'\n },\n positionPrefix: 'lower_box',\n endPositionPrefix: 'upper_box',\n extraEncoding: fiveSummaryTooltipEncoding\n }), ...makeBoxPlotMidTick({\n partName: 'median',\n mark: {\n type: 'tick',\n invalid,\n ...(isObject(config.boxplot.median) && config.boxplot.median.color ? {\n color: config.boxplot.median.color\n } : {}),\n ...(sizeValue ? {\n size: sizeValue\n } : {}),\n orient: ticksOrient,\n aria: false\n },\n positionPrefix: 'mid_box',\n extraEncoding: fiveSummaryTooltipEncoding\n })];\n if (boxPlotType === 'min-max') {\n var _outerSpec$transform;\n return {\n ...outerSpec,\n transform: ((_outerSpec$transform = outerSpec.transform) !== null && _outerSpec$transform !== void 0 ? _outerSpec$transform : []).concat(transform),\n layer: boxLayers\n };\n }\n // Tukey Box Plot\n const lowerBoxExpr = \"datum[\\\"lower_box_\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n const upperBoxExpr = \"datum[\\\"upper_box_\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n const iqrExpr = \"(\".concat(upperBoxExpr, \" - \").concat(lowerBoxExpr, \")\");\n const lowerWhiskerExpr = \"\".concat(lowerBoxExpr, \" - \").concat(extent, \" * \").concat(iqrExpr);\n const upperWhiskerExpr = \"\".concat(upperBoxExpr, \" + \").concat(extent, \" * \").concat(iqrExpr);\n const fieldExpr = \"datum[\\\"\".concat(continuousAxisChannelDef.field, \"\\\"]\");\n const joinaggregateTransform = {\n joinaggregate: boxParamsQuartiles(continuousAxisChannelDef.field),\n groupby\n };\n const filteredWhiskerSpec = {\n transform: [{\n filter: \"(\".concat(lowerWhiskerExpr, \" <= \").concat(fieldExpr, \") && (\").concat(fieldExpr, \" <= \").concat(upperWhiskerExpr, \")\")\n }, {\n aggregate: [{\n op: 'min',\n field: continuousAxisChannelDef.field,\n as: \"lower_whisker_\".concat(continuousAxisChannelDef.field)\n }, {\n op: 'max',\n field: continuousAxisChannelDef.field,\n as: \"upper_whisker_\".concat(continuousAxisChannelDef.field)\n },\n // preserve lower_box / upper_box\n {\n op: 'min',\n field: \"lower_box_\".concat(continuousAxisChannelDef.field),\n as: \"lower_box_\".concat(continuousAxisChannelDef.field)\n }, {\n op: 'max',\n field: \"upper_box_\".concat(continuousAxisChannelDef.field),\n as: \"upper_box_\".concat(continuousAxisChannelDef.field)\n }, ...aggregate],\n groupby\n }],\n layer: whiskerLayers\n };\n const {\n tooltip,\n ...encodingWithoutSizeColorContinuousAxisAndTooltip\n } = encodingWithoutSizeColorAndContinuousAxis;\n const {\n scale,\n axis\n } = continuousAxisChannelDef;\n const title = getTitle(continuousAxisChannelDef);\n const axisWithoutTitle = omit(axis, ['title']);\n const outlierLayersMixins = partLayerMixins(markDef, 'outliers', config.boxplot, {\n transform: [{\n filter: \"(\".concat(fieldExpr, \" < \").concat(lowerWhiskerExpr, \") || (\").concat(fieldExpr, \" > \").concat(upperWhiskerExpr, \")\")\n }],\n mark: 'point',\n encoding: {\n [continuousAxis]: {\n field: continuousAxisChannelDef.field,\n type: continuousAxisChannelDef.type,\n ...(title !== undefined ? {\n title\n } : {}),\n ...(scale !== undefined ? {\n scale\n } : {}),\n // add axis without title since we already added the title above\n ...(isEmpty(axisWithoutTitle) ? {} : {\n axis: axisWithoutTitle\n })\n },\n ...encodingWithoutSizeColorContinuousAxisAndTooltip,\n ...(color ? {\n color\n } : {}),\n ...(customTooltipWithoutAggregatedField ? {\n tooltip: customTooltipWithoutAggregatedField\n } : {})\n }\n })[0];\n let filteredLayersMixins;\n const filteredLayersMixinsTransforms = [...bins, ...timeUnits, joinaggregateTransform];\n if (outlierLayersMixins) {\n filteredLayersMixins = {\n transform: filteredLayersMixinsTransforms,\n layer: [outlierLayersMixins, filteredWhiskerSpec]\n };\n } else {\n filteredLayersMixins = filteredWhiskerSpec;\n filteredLayersMixins.transform.unshift(...filteredLayersMixinsTransforms);\n }\n return {\n ...outerSpec,\n layer: [filteredLayersMixins, {\n // boxplot\n transform,\n layer: boxLayers\n }]\n };\n}\nfunction boxParamsQuartiles(continousAxisField) {\n return [{\n op: 'q1',\n field: continousAxisField,\n as: \"lower_box_\".concat(continousAxisField)\n }, {\n op: 'q3',\n field: continousAxisField,\n as: \"upper_box_\".concat(continousAxisField)\n }];\n}\nfunction boxParams(spec, extent, config) {\n const orient = compositeMarkOrient(spec, BOXPLOT);\n const {\n continuousAxisChannelDef,\n continuousAxis\n } = compositeMarkContinuousAxis(spec, orient, BOXPLOT);\n const continuousFieldName = continuousAxisChannelDef.field;\n const boxPlotType = getBoxPlotType(extent);\n const boxplotSpecificAggregate = [...boxParamsQuartiles(continuousFieldName), {\n op: 'median',\n field: continuousFieldName,\n as: \"mid_box_\".concat(continuousFieldName)\n }, {\n op: 'min',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'lower_whisker_' : 'min_') + continuousFieldName\n }, {\n op: 'max',\n field: continuousFieldName,\n as: (boxPlotType === 'min-max' ? 'upper_whisker_' : 'max_') + continuousFieldName\n }];\n const postAggregateCalculates = boxPlotType === 'min-max' || boxPlotType === 'tukey' ? [] : [\n // This is for the original k-IQR, which we do not expose\n {\n calculate: \"datum[\\\"upper_box_\".concat(continuousFieldName, \"\\\"] - datum[\\\"lower_box_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"iqr_\".concat(continuousFieldName)\n }, {\n calculate: \"min(datum[\\\"upper_box_\".concat(continuousFieldName, \"\\\"] + datum[\\\"iqr_\").concat(continuousFieldName, \"\\\"] * \").concat(extent, \", datum[\\\"max_\").concat(continuousFieldName, \"\\\"])\"),\n as: \"upper_whisker_\".concat(continuousFieldName)\n }, {\n calculate: \"max(datum[\\\"lower_box_\".concat(continuousFieldName, \"\\\"] - datum[\\\"iqr_\").concat(continuousFieldName, \"\\\"] * \").concat(extent, \", datum[\\\"min_\").concat(continuousFieldName, \"\\\"])\"),\n as: \"lower_whisker_\".concat(continuousFieldName)\n }];\n const {\n [continuousAxis]: oldContinuousAxisChannelDef,\n ...oldEncodingWithoutContinuousAxis\n } = spec.encoding;\n const {\n customTooltipWithoutAggregatedField,\n filteredEncoding\n } = filterTooltipWithAggregatedField(oldEncodingWithoutContinuousAxis);\n const {\n bins,\n timeUnits,\n aggregate,\n groupby,\n encoding: encodingWithoutContinuousAxis\n } = extractTransformsFromEncoding(filteredEncoding, config);\n const ticksOrient = orient === 'vertical' ? 'horizontal' : 'vertical';\n const boxOrient = orient;\n const transform = [...bins, ...timeUnits, {\n aggregate: [...aggregate, ...boxplotSpecificAggregate],\n groupby\n }, ...postAggregateCalculates];\n return {\n bins,\n timeUnits,\n transform,\n groupby,\n aggregate,\n continuousAxisChannelDef,\n continuousAxis,\n encodingWithoutContinuousAxis,\n ticksOrient,\n boxOrient,\n customTooltipWithoutAggregatedField\n };\n}\nconst ERRORBAR = 'errorbar';\nconst ERRORBAR_PARTS = ['ticks', 'rule'];\nconst errorBarNormalizer = new CompositeMarkNormalizer(ERRORBAR, normalizeErrorBar);\nfunction normalizeErrorBar(spec, _ref29) {\n let {\n config\n } = _ref29;\n // Need to initEncoding first so we can infer type\n spec = {\n ...spec,\n encoding: normalizeEncoding(spec.encoding, config)\n };\n const {\n transform,\n continuousAxisChannelDef,\n continuousAxis,\n encodingWithoutContinuousAxis,\n ticksOrient,\n markDef,\n outerSpec,\n tooltipEncoding\n } = errorBarParams(spec, ERRORBAR, config);\n delete encodingWithoutContinuousAxis['size'];\n const makeErrorBarPart = makeCompositeAggregatePartFactory(markDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorbar);\n const thickness = markDef.thickness;\n const size = markDef.size;\n const tick = {\n type: 'tick',\n orient: ticksOrient,\n aria: false,\n ...(thickness !== undefined ? {\n thickness\n } : {}),\n ...(size !== undefined ? {\n size\n } : {})\n };\n const layer = [...makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n }), ...makeErrorBarPart({\n partName: 'ticks',\n mark: tick,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n }), ...makeErrorBarPart({\n partName: 'rule',\n mark: {\n type: 'rule',\n ariaRoleDescription: 'errorbar',\n ...(thickness !== undefined ? {\n size: thickness\n } : {})\n },\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })];\n return {\n ...outerSpec,\n transform,\n ...(layer.length > 1 ? {\n layer\n } : {\n ...layer[0]\n })\n };\n}\nfunction errorBarOrientAndInputType(spec, compositeMark) {\n const {\n encoding\n } = spec;\n if (errorBarIsInputTypeRaw(encoding)) {\n return {\n orient: compositeMarkOrient(spec, compositeMark),\n inputType: 'raw'\n };\n }\n const isTypeAggregatedUpperLower = errorBarIsInputTypeAggregatedUpperLower(encoding);\n const isTypeAggregatedError = errorBarIsInputTypeAggregatedError(encoding);\n const x = encoding.x;\n const y = encoding.y;\n if (isTypeAggregatedUpperLower) {\n // type is aggregated-upper-lower\n if (isTypeAggregatedError) {\n throw new Error(\"\".concat(compositeMark, \" cannot be both type aggregated-upper-lower and aggregated-error\"));\n }\n const x2 = encoding.x2;\n const y2 = encoding.y2;\n if (isFieldOrDatumDef(x2) && isFieldOrDatumDef(y2)) {\n // having both x, x2 and y, y2\n throw new Error(\"\".concat(compositeMark, \" cannot have both x2 and y2\"));\n } else if (isFieldOrDatumDef(x2)) {\n if (isContinuousFieldOrDatumDef(x)) {\n // having x, x2 quantitative and field y, y2 are not specified\n return {\n orient: 'horizontal',\n inputType: 'aggregated-upper-lower'\n };\n } else {\n // having x, x2 that are not both quantitative\n throw new Error(\"Both x and x2 have to be quantitative in \".concat(compositeMark));\n }\n } else if (isFieldOrDatumDef(y2)) {\n // y2 is a FieldDef\n if (isContinuousFieldOrDatumDef(y)) {\n // having y, y2 quantitative and field x, x2 are not specified\n return {\n orient: 'vertical',\n inputType: 'aggregated-upper-lower'\n };\n } else {\n // having y, y2 that are not both quantitative\n throw new Error(\"Both y and y2 have to be quantitative in \".concat(compositeMark));\n }\n }\n throw new Error('No ranged axis');\n } else {\n // type is aggregated-error\n const xError = encoding.xError;\n const xError2 = encoding.xError2;\n const yError = encoding.yError;\n const yError2 = encoding.yError2;\n if (isFieldOrDatumDef(xError2) && !isFieldOrDatumDef(xError)) {\n // having xError2 without xError\n throw new Error(\"\".concat(compositeMark, \" cannot have xError2 without xError\"));\n }\n if (isFieldOrDatumDef(yError2) && !isFieldOrDatumDef(yError)) {\n // having yError2 without yError\n throw new Error(\"\".concat(compositeMark, \" cannot have yError2 without yError\"));\n }\n if (isFieldOrDatumDef(xError) && isFieldOrDatumDef(yError)) {\n // having both xError and yError\n throw new Error(\"\".concat(compositeMark, \" cannot have both xError and yError with both are quantiative\"));\n } else if (isFieldOrDatumDef(xError)) {\n if (isContinuousFieldOrDatumDef(x)) {\n // having x and xError that are all quantitative\n return {\n orient: 'horizontal',\n inputType: 'aggregated-error'\n };\n } else {\n // having x, xError, and xError2 that are not all quantitative\n throw new Error('All x, xError, and xError2 (if exist) have to be quantitative');\n }\n } else if (isFieldOrDatumDef(yError)) {\n if (isContinuousFieldOrDatumDef(y)) {\n // having y and yError that are all quantitative\n return {\n orient: 'vertical',\n inputType: 'aggregated-error'\n };\n } else {\n // having y, yError, and yError2 that are not all quantitative\n throw new Error('All y, yError, and yError2 (if exist) have to be quantitative');\n }\n }\n throw new Error('No ranged axis');\n }\n}\nfunction errorBarIsInputTypeRaw(encoding) {\n return (isFieldOrDatumDef(encoding.x) || isFieldOrDatumDef(encoding.y)) && !isFieldOrDatumDef(encoding.x2) && !isFieldOrDatumDef(encoding.y2) && !isFieldOrDatumDef(encoding.xError) && !isFieldOrDatumDef(encoding.xError2) && !isFieldOrDatumDef(encoding.yError) && !isFieldOrDatumDef(encoding.yError2);\n}\nfunction errorBarIsInputTypeAggregatedUpperLower(encoding) {\n return isFieldOrDatumDef(encoding.x2) || isFieldOrDatumDef(encoding.y2);\n}\nfunction errorBarIsInputTypeAggregatedError(encoding) {\n return isFieldOrDatumDef(encoding.xError) || isFieldOrDatumDef(encoding.xError2) || isFieldOrDatumDef(encoding.yError) || isFieldOrDatumDef(encoding.yError2);\n}\nfunction errorBarParams(spec, compositeMark, config) {\n var _outerSpec$transform2;\n // TODO: use selection\n const {\n mark,\n encoding,\n params,\n projection: _p,\n ...outerSpec\n } = spec;\n const markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n // TODO(https://github.com/vega/vega-lite/issues/3702): add selection support\n if (params) {\n warn(selectionNotSupported(compositeMark));\n }\n const {\n orient,\n inputType\n } = errorBarOrientAndInputType(spec, compositeMark);\n const {\n continuousAxisChannelDef,\n continuousAxisChannelDef2,\n continuousAxisChannelDefError,\n continuousAxisChannelDefError2,\n continuousAxis\n } = compositeMarkContinuousAxis(spec, orient, compositeMark);\n const {\n errorBarSpecificAggregate,\n postAggregateCalculates,\n tooltipSummary,\n tooltipTitleWithFieldName\n } = errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config);\n const {\n [continuousAxis]: oldContinuousAxisChannelDef,\n [continuousAxis === 'x' ? 'x2' : 'y2']: oldContinuousAxisChannelDef2,\n [continuousAxis === 'x' ? 'xError' : 'yError']: oldContinuousAxisChannelDefError,\n [continuousAxis === 'x' ? 'xError2' : 'yError2']: oldContinuousAxisChannelDefError2,\n ...oldEncodingWithoutContinuousAxis\n } = encoding;\n const {\n bins,\n timeUnits,\n aggregate: oldAggregate,\n groupby: oldGroupBy,\n encoding: encodingWithoutContinuousAxis\n } = extractTransformsFromEncoding(oldEncodingWithoutContinuousAxis, config);\n const aggregate = [...oldAggregate, ...errorBarSpecificAggregate];\n const groupby = inputType !== 'raw' ? [] : oldGroupBy;\n const tooltipEncoding = getCompositeMarkTooltip(tooltipSummary, continuousAxisChannelDef, encodingWithoutContinuousAxis, tooltipTitleWithFieldName);\n return {\n transform: [...((_outerSpec$transform2 = outerSpec.transform) !== null && _outerSpec$transform2 !== void 0 ? _outerSpec$transform2 : []), ...bins, ...timeUnits, ...(aggregate.length === 0 ? [] : [{\n aggregate,\n groupby\n }]), ...postAggregateCalculates],\n groupby,\n continuousAxisChannelDef,\n continuousAxis,\n encodingWithoutContinuousAxis,\n ticksOrient: orient === 'vertical' ? 'horizontal' : 'vertical',\n markDef,\n outerSpec,\n tooltipEncoding\n };\n}\nfunction errorBarAggregationAndCalculation(markDef, continuousAxisChannelDef, continuousAxisChannelDef2, continuousAxisChannelDefError, continuousAxisChannelDefError2, inputType, compositeMark, config) {\n let errorBarSpecificAggregate = [];\n let postAggregateCalculates = [];\n const continuousFieldName = continuousAxisChannelDef.field;\n let tooltipSummary;\n let tooltipTitleWithFieldName = false;\n if (inputType === 'raw') {\n const center = markDef.center ? markDef.center : markDef.extent ? markDef.extent === 'iqr' ? 'median' : 'mean' : config.errorbar.center;\n const extent = markDef.extent ? markDef.extent : center === 'mean' ? 'stderr' : 'iqr';\n if (center === 'median' !== (extent === 'iqr')) {\n warn(errorBarCenterIsUsedWithWrongExtent(center, extent, compositeMark));\n }\n if (extent === 'stderr' || extent === 'stdev') {\n errorBarSpecificAggregate = [{\n op: extent,\n field: continuousFieldName,\n as: \"extent_\".concat(continuousFieldName)\n }, {\n op: center,\n field: continuousFieldName,\n as: \"center_\".concat(continuousFieldName)\n }];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"center_\".concat(continuousFieldName, \"\\\"] + datum[\\\"extent_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }, {\n calculate: \"datum[\\\"center_\".concat(continuousFieldName, \"\\\"] - datum[\\\"extent_\").concat(continuousFieldName, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n }];\n tooltipSummary = [{\n fieldPrefix: 'center_',\n titlePrefix: titleCase(center)\n }, {\n fieldPrefix: 'upper_',\n titlePrefix: getTitlePrefix(center, extent, '+')\n }, {\n fieldPrefix: 'lower_',\n titlePrefix: getTitlePrefix(center, extent, '-')\n }];\n tooltipTitleWithFieldName = true;\n } else {\n let centerOp;\n let lowerExtentOp;\n let upperExtentOp;\n if (extent === 'ci') {\n centerOp = 'mean';\n lowerExtentOp = 'ci0';\n upperExtentOp = 'ci1';\n } else {\n centerOp = 'median';\n lowerExtentOp = 'q1';\n upperExtentOp = 'q3';\n }\n errorBarSpecificAggregate = [{\n op: lowerExtentOp,\n field: continuousFieldName,\n as: \"lower_\".concat(continuousFieldName)\n }, {\n op: upperExtentOp,\n field: continuousFieldName,\n as: \"upper_\".concat(continuousFieldName)\n }, {\n op: centerOp,\n field: continuousFieldName,\n as: \"center_\".concat(continuousFieldName)\n }];\n tooltipSummary = [{\n fieldPrefix: 'upper_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: upperExtentOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }, {\n fieldPrefix: 'lower_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: lowerExtentOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }, {\n fieldPrefix: 'center_',\n titlePrefix: title({\n field: continuousFieldName,\n aggregate: centerOp,\n type: 'quantitative'\n }, config, {\n allowDisabling: false\n })\n }];\n }\n } else {\n if (markDef.center || markDef.extent) {\n warn(errorBarCenterAndExtentAreNotNeeded(markDef.center, markDef.extent));\n }\n if (inputType === 'aggregated-upper-lower') {\n tooltipSummary = [];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"\".concat(continuousAxisChannelDef2.field, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }, {\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n }];\n } else if (inputType === 'aggregated-error') {\n tooltipSummary = [{\n fieldPrefix: '',\n titlePrefix: continuousFieldName\n }];\n postAggregateCalculates = [{\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] + datum[\\\"\").concat(continuousAxisChannelDefError.field, \"\\\"]\"),\n as: \"upper_\".concat(continuousFieldName)\n }];\n if (continuousAxisChannelDefError2) {\n postAggregateCalculates.push({\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] + datum[\\\"\").concat(continuousAxisChannelDefError2.field, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n });\n } else {\n postAggregateCalculates.push({\n calculate: \"datum[\\\"\".concat(continuousFieldName, \"\\\"] - datum[\\\"\").concat(continuousAxisChannelDefError.field, \"\\\"]\"),\n as: \"lower_\".concat(continuousFieldName)\n });\n }\n }\n for (const postAggregateCalculate of postAggregateCalculates) {\n tooltipSummary.push({\n fieldPrefix: postAggregateCalculate.as.substring(0, 6),\n titlePrefix: replaceAll(replaceAll(postAggregateCalculate.calculate, 'datum[\"', ''), '\"]', '')\n });\n }\n }\n return {\n postAggregateCalculates,\n errorBarSpecificAggregate,\n tooltipSummary,\n tooltipTitleWithFieldName\n };\n}\nfunction getTitlePrefix(center, extent, operation) {\n return \"\".concat(titleCase(center), \" \").concat(operation, \" \").concat(extent);\n}\nconst ERRORBAND = 'errorband';\nconst ERRORBAND_PARTS = ['band', 'borders'];\nconst errorBandNormalizer = new CompositeMarkNormalizer(ERRORBAND, normalizeErrorBand);\nfunction normalizeErrorBand(spec, _ref30) {\n let {\n config\n } = _ref30;\n // Need to initEncoding first so we can infer type\n spec = {\n ...spec,\n encoding: normalizeEncoding(spec.encoding, config)\n };\n const {\n transform,\n continuousAxisChannelDef,\n continuousAxis,\n encodingWithoutContinuousAxis,\n markDef,\n outerSpec,\n tooltipEncoding\n } = errorBarParams(spec, ERRORBAND, config);\n const errorBandDef = markDef;\n const makeErrorBandPart = makeCompositeAggregatePartFactory(errorBandDef, continuousAxis, continuousAxisChannelDef, encodingWithoutContinuousAxis, config.errorband);\n const is2D = spec.encoding.x !== undefined && spec.encoding.y !== undefined;\n let bandMark = {\n type: is2D ? 'area' : 'rect'\n };\n let bordersMark = {\n type: is2D ? 'line' : 'rule'\n };\n const interpolate = {\n ...(errorBandDef.interpolate ? {\n interpolate: errorBandDef.interpolate\n } : {}),\n ...(errorBandDef.tension && errorBandDef.interpolate ? {\n tension: errorBandDef.tension\n } : {})\n };\n if (is2D) {\n bandMark = {\n ...bandMark,\n ...interpolate,\n ariaRoleDescription: 'errorband'\n };\n bordersMark = {\n ...bordersMark,\n ...interpolate,\n aria: false\n };\n } else if (errorBandDef.interpolate) {\n warn(errorBand1DNotSupport('interpolate'));\n } else if (errorBandDef.tension) {\n warn(errorBand1DNotSupport('tension'));\n }\n return {\n ...outerSpec,\n transform,\n layer: [...makeErrorBandPart({\n partName: 'band',\n mark: bandMark,\n positionPrefix: 'lower',\n endPositionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n }), ...makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'lower',\n extraEncoding: tooltipEncoding\n }), ...makeErrorBandPart({\n partName: 'borders',\n mark: bordersMark,\n positionPrefix: 'upper',\n extraEncoding: tooltipEncoding\n })]\n };\n}\n\n/**\n * Registry index for all composite mark's normalizer\n */\nconst compositeMarkRegistry = {};\nfunction add(mark, run, parts) {\n const normalizer = new CompositeMarkNormalizer(mark, run);\n compositeMarkRegistry[mark] = {\n normalizer,\n parts\n };\n}\nfunction getAllCompositeMarks() {\n return keys(compositeMarkRegistry);\n}\nadd(BOXPLOT, normalizeBoxPlot, BOXPLOT_PARTS);\nadd(ERRORBAR, normalizeErrorBar, ERRORBAR_PARTS);\nadd(ERRORBAND, normalizeErrorBand, ERRORBAND_PARTS);\nconst VL_ONLY_LEGEND_CONFIG = ['gradientHorizontalMaxLength', 'gradientHorizontalMinLength', 'gradientVerticalMaxLength', 'gradientVerticalMinLength', 'unselectedOpacity'];\nconst HEADER_TITLE_PROPERTIES_MAP = {\n titleAlign: 'align',\n titleAnchor: 'anchor',\n titleAngle: 'angle',\n titleBaseline: 'baseline',\n titleColor: 'color',\n titleFont: 'font',\n titleFontSize: 'fontSize',\n titleFontStyle: 'fontStyle',\n titleFontWeight: 'fontWeight',\n titleLimit: 'limit',\n titleLineHeight: 'lineHeight',\n titleOrient: 'orient',\n titlePadding: 'offset'\n};\nconst HEADER_LABEL_PROPERTIES_MAP = {\n labelAlign: 'align',\n labelAnchor: 'anchor',\n labelAngle: 'angle',\n labelBaseline: 'baseline',\n labelColor: 'color',\n labelFont: 'font',\n labelFontSize: 'fontSize',\n labelFontStyle: 'fontStyle',\n labelFontWeight: 'fontWeight',\n labelLimit: 'limit',\n labelLineHeight: 'lineHeight',\n labelOrient: 'orient',\n labelPadding: 'offset'\n};\nconst HEADER_TITLE_PROPERTIES = keys(HEADER_TITLE_PROPERTIES_MAP);\nconst HEADER_LABEL_PROPERTIES = keys(HEADER_LABEL_PROPERTIES_MAP);\nconst HEADER_CONFIGS_INDEX = {\n header: 1,\n headerRow: 1,\n headerColumn: 1,\n headerFacet: 1\n};\nconst HEADER_CONFIGS = keys(HEADER_CONFIGS_INDEX);\nconst LEGEND_SCALE_CHANNELS = ['size', 'shape', 'fill', 'stroke', 'strokeDash', 'strokeWidth', 'opacity'];\nconst defaultLegendConfig = {\n gradientHorizontalMaxLength: 200,\n gradientHorizontalMinLength: 100,\n gradientVerticalMaxLength: 200,\n gradientVerticalMinLength: 64,\n unselectedOpacity: 0.35\n};\nconst COMMON_LEGEND_PROPERTY_INDEX = {\n aria: 1,\n clipHeight: 1,\n columnPadding: 1,\n columns: 1,\n cornerRadius: 1,\n description: 1,\n direction: 1,\n fillColor: 1,\n format: 1,\n formatType: 1,\n gradientLength: 1,\n gradientOpacity: 1,\n gradientStrokeColor: 1,\n gradientStrokeWidth: 1,\n gradientThickness: 1,\n gridAlign: 1,\n labelAlign: 1,\n labelBaseline: 1,\n labelColor: 1,\n labelFont: 1,\n labelFontSize: 1,\n labelFontStyle: 1,\n labelFontWeight: 1,\n labelLimit: 1,\n labelOffset: 1,\n labelOpacity: 1,\n labelOverlap: 1,\n labelPadding: 1,\n labelSeparation: 1,\n legendX: 1,\n legendY: 1,\n offset: 1,\n orient: 1,\n padding: 1,\n rowPadding: 1,\n strokeColor: 1,\n symbolDash: 1,\n symbolDashOffset: 1,\n symbolFillColor: 1,\n symbolLimit: 1,\n symbolOffset: 1,\n symbolOpacity: 1,\n symbolSize: 1,\n symbolStrokeColor: 1,\n symbolStrokeWidth: 1,\n symbolType: 1,\n tickCount: 1,\n tickMinStep: 1,\n title: 1,\n titleAlign: 1,\n titleAnchor: 1,\n titleBaseline: 1,\n titleColor: 1,\n titleFont: 1,\n titleFontSize: 1,\n titleFontStyle: 1,\n titleFontWeight: 1,\n titleLimit: 1,\n titleLineHeight: 1,\n titleOpacity: 1,\n titleOrient: 1,\n titlePadding: 1,\n type: 1,\n values: 1,\n zindex: 1\n};\nconst SELECTION_ID = '_vgsid_';\nconst defaultConfig$2 = {\n point: {\n on: 'click',\n fields: [SELECTION_ID],\n toggle: 'event.shiftKey',\n resolve: 'global',\n clear: 'dblclick'\n },\n interval: {\n on: '[mousedown, window:mouseup] > window:mousemove!',\n encodings: ['x', 'y'],\n translate: '[mousedown, window:mouseup] > window:mousemove!',\n zoom: 'wheel!',\n mark: {\n fill: '#333',\n fillOpacity: 0.125,\n stroke: 'white'\n },\n resolve: 'global',\n clear: 'dblclick'\n }\n};\nfunction isLegendBinding(bind) {\n return bind === 'legend' || !!(bind !== null && bind !== void 0 && bind.legend);\n}\nfunction isLegendStreamBinding(bind) {\n return isLegendBinding(bind) && isObject(bind);\n}\nfunction isSelectionParameter(param) {\n return !!(param !== null && param !== void 0 && param['select']);\n}\nfunction assembleParameterSignals(params) {\n const signals = [];\n for (const param of params || []) {\n // Selection parameters are handled separately via assembleSelectionTopLevelSignals\n // and assembleSignals methods registered on the Model.\n if (isSelectionParameter(param)) continue;\n const {\n expr,\n bind,\n ...rest\n } = param;\n if (bind && expr) {\n // Vega's InitSignal -- apply expr to \"init\"\n const signal = {\n ...rest,\n bind,\n init: expr\n };\n signals.push(signal);\n } else {\n const signal = {\n ...rest,\n ...(expr ? {\n update: expr\n } : {}),\n ...(bind ? {\n bind\n } : {})\n };\n signals.push(signal);\n }\n }\n return signals;\n}\nfunction isAnyConcatSpec(spec) {\n return isVConcatSpec(spec) || isHConcatSpec(spec) || isConcatSpec(spec);\n}\nfunction isConcatSpec(spec) {\n return 'concat' in spec;\n}\nfunction isVConcatSpec(spec) {\n return 'vconcat' in spec;\n}\nfunction isHConcatSpec(spec) {\n return 'hconcat' in spec;\n}\nfunction getStepFor(_ref31) {\n let {\n step,\n offsetIsDiscrete\n } = _ref31;\n if (offsetIsDiscrete) {\n var _step$for;\n return (_step$for = step.for) !== null && _step$for !== void 0 ? _step$for : 'offset';\n } else {\n return 'position';\n }\n}\nfunction isStep(size) {\n return isObject(size) && size['step'] !== undefined;\n}\nfunction isFrameMixins(o) {\n return o['view'] || o['width'] || o['height'];\n}\nconst DEFAULT_SPACING = 20;\nconst COMPOSITION_LAYOUT_INDEX = {\n align: 1,\n bounds: 1,\n center: 1,\n columns: 1,\n spacing: 1\n};\nconst COMPOSITION_LAYOUT_PROPERTIES = keys(COMPOSITION_LAYOUT_INDEX);\nfunction extractCompositionLayout(spec, specType, config) {\n const compositionConfig = config[specType];\n const layout = {};\n // Apply config first\n const {\n spacing: spacingConfig,\n columns\n } = compositionConfig;\n if (spacingConfig !== undefined) {\n layout.spacing = spacingConfig;\n }\n if (columns !== undefined) {\n if (isFacetSpec(spec) && !isFacetMapping(spec.facet) || isConcatSpec(spec)) {\n layout.columns = columns;\n }\n }\n if (isVConcatSpec(spec)) {\n layout.columns = 1;\n }\n // Then copy properties from the spec\n for (const prop of COMPOSITION_LAYOUT_PROPERTIES) {\n if (spec[prop] !== undefined) {\n if (prop === 'spacing') {\n var _spacing$row, _spacing$column;\n const spacing = spec[prop];\n layout[prop] = isNumber$1(spacing) ? spacing : {\n row: (_spacing$row = spacing.row) !== null && _spacing$row !== void 0 ? _spacing$row : spacingConfig,\n column: (_spacing$column = spacing.column) !== null && _spacing$column !== void 0 ? _spacing$column : spacingConfig\n };\n } else {\n layout[prop] = spec[prop];\n }\n }\n }\n return layout;\n}\nfunction getViewConfigContinuousSize(viewConfig, channel) {\n var _viewConfig$channel;\n return (_viewConfig$channel = viewConfig[channel]) !== null && _viewConfig$channel !== void 0 ? _viewConfig$channel : viewConfig[channel === 'width' ? 'continuousWidth' : 'continuousHeight']; // get width/height for backwards compatibility\n}\n\nfunction getViewConfigDiscreteStep(viewConfig, channel) {\n const size = getViewConfigDiscreteSize(viewConfig, channel);\n return isStep(size) ? size.step : DEFAULT_STEP;\n}\nfunction getViewConfigDiscreteSize(viewConfig, channel) {\n var _viewConfig$channel2;\n const size = (_viewConfig$channel2 = viewConfig[channel]) !== null && _viewConfig$channel2 !== void 0 ? _viewConfig$channel2 : viewConfig[channel === 'width' ? 'discreteWidth' : 'discreteHeight']; // get width/height for backwards compatibility\n return getFirstDefined(size, {\n step: viewConfig.step\n });\n}\nconst DEFAULT_STEP = 20;\nconst defaultViewConfig = {\n continuousWidth: 200,\n continuousHeight: 200,\n step: DEFAULT_STEP\n};\nconst defaultConfig$1 = {\n background: 'white',\n padding: 5,\n timeFormat: '%b %d, %Y',\n countTitle: 'Count of Records',\n view: defaultViewConfig,\n mark: defaultMarkConfig,\n arc: {},\n area: {},\n bar: defaultBarConfig,\n circle: {},\n geoshape: {},\n image: {},\n line: {},\n point: {},\n rect: defaultRectConfig,\n rule: {\n color: 'black'\n },\n square: {},\n text: {\n color: 'black'\n },\n tick: defaultTickConfig,\n trail: {},\n boxplot: {\n size: 14,\n extent: 1.5,\n box: {},\n median: {\n color: 'white'\n },\n outliers: {},\n rule: {},\n ticks: null\n },\n errorbar: {\n center: 'mean',\n rule: true,\n ticks: false\n },\n errorband: {\n band: {\n opacity: 0.3\n },\n borders: false\n },\n scale: defaultScaleConfig,\n projection: {},\n legend: defaultLegendConfig,\n header: {\n titlePadding: 10,\n labelPadding: 10\n },\n headerColumn: {},\n headerRow: {},\n headerFacet: {},\n selection: defaultConfig$2,\n style: {},\n title: {},\n facet: {\n spacing: DEFAULT_SPACING\n },\n concat: {\n spacing: DEFAULT_SPACING\n },\n normalizedNumberFormat: '.0%'\n};\n// Tableau10 color palette, copied from `vegaScale.scheme('tableau10')`\nconst tab10 = ['#4c78a8', '#f58518', '#e45756', '#72b7b2', '#54a24b', '#eeca3b', '#b279a2', '#ff9da6', '#9d755d', '#bab0ac'];\nconst DEFAULT_FONT_SIZE = {\n text: 11,\n guideLabel: 10,\n guideTitle: 11,\n groupTitle: 13,\n groupSubtitle: 12\n};\nconst DEFAULT_COLOR = {\n blue: tab10[0],\n orange: tab10[1],\n red: tab10[2],\n teal: tab10[3],\n green: tab10[4],\n yellow: tab10[5],\n purple: tab10[6],\n pink: tab10[7],\n brown: tab10[8],\n gray0: '#000',\n gray1: '#111',\n gray2: '#222',\n gray3: '#333',\n gray4: '#444',\n gray5: '#555',\n gray6: '#666',\n gray7: '#777',\n gray8: '#888',\n gray9: '#999',\n gray10: '#aaa',\n gray11: '#bbb',\n gray12: '#ccc',\n gray13: '#ddd',\n gray14: '#eee',\n gray15: '#fff'\n};\nfunction colorSignalConfig() {\n let color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n signals: [{\n name: 'color',\n value: isObject(color) ? {\n ...DEFAULT_COLOR,\n ...color\n } : DEFAULT_COLOR\n }],\n mark: {\n color: {\n signal: 'color.blue'\n }\n },\n rule: {\n color: {\n signal: 'color.gray0'\n }\n },\n text: {\n color: {\n signal: 'color.gray0'\n }\n },\n style: {\n 'guide-label': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'guide-title': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'group-title': {\n fill: {\n signal: 'color.gray0'\n }\n },\n 'group-subtitle': {\n fill: {\n signal: 'color.gray0'\n }\n },\n cell: {\n stroke: {\n signal: 'color.gray8'\n }\n }\n },\n axis: {\n domainColor: {\n signal: 'color.gray13'\n },\n gridColor: {\n signal: 'color.gray8'\n },\n tickColor: {\n signal: 'color.gray13'\n }\n },\n range: {\n category: [{\n signal: 'color.blue'\n }, {\n signal: 'color.orange'\n }, {\n signal: 'color.red'\n }, {\n signal: 'color.teal'\n }, {\n signal: 'color.green'\n }, {\n signal: 'color.yellow'\n }, {\n signal: 'color.purple'\n }, {\n signal: 'color.pink'\n }, {\n signal: 'color.brown'\n }, {\n signal: 'color.grey8'\n }]\n }\n };\n}\nfunction fontSizeSignalConfig(fontSize) {\n return {\n signals: [{\n name: 'fontSize',\n value: isObject(fontSize) ? {\n ...DEFAULT_FONT_SIZE,\n ...fontSize\n } : DEFAULT_FONT_SIZE\n }],\n text: {\n fontSize: {\n signal: 'fontSize.text'\n }\n },\n style: {\n 'guide-label': {\n fontSize: {\n signal: 'fontSize.guideLabel'\n }\n },\n 'guide-title': {\n fontSize: {\n signal: 'fontSize.guideTitle'\n }\n },\n 'group-title': {\n fontSize: {\n signal: 'fontSize.groupTitle'\n }\n },\n 'group-subtitle': {\n fontSize: {\n signal: 'fontSize.groupSubtitle'\n }\n }\n }\n };\n}\nfunction fontConfig(font) {\n return {\n text: {\n font\n },\n style: {\n 'guide-label': {\n font\n },\n 'guide-title': {\n font\n },\n 'group-title': {\n font\n },\n 'group-subtitle': {\n font\n }\n }\n };\n}\nfunction getAxisConfigInternal(axisConfig) {\n const props = keys(axisConfig || {});\n const axisConfigInternal = {};\n for (const prop of props) {\n const val = axisConfig[prop];\n axisConfigInternal[prop] = isConditionalAxisValue(val) ? signalOrValueRefWithCondition(val) : signalRefOrValue(val);\n }\n return axisConfigInternal;\n}\nfunction getStyleConfigInternal(styleConfig) {\n const props = keys(styleConfig);\n const styleConfigInternal = {};\n for (const prop of props) {\n // We need to cast to cheat a bit here since styleConfig can be either mark config or axis config\n styleConfigInternal[prop] = getAxisConfigInternal(styleConfig[prop]);\n }\n return styleConfigInternal;\n}\nconst configPropsWithExpr = [...MARK_CONFIGS, ...AXIS_CONFIGS, ...HEADER_CONFIGS, 'background', 'padding', 'legend', 'lineBreak', 'scale', 'style', 'title', 'view'];\n/**\n * Merge specified config with default config and config for the `color` flag,\n * then replace all expressions with signals\n */\nfunction initConfig() {\n let specifiedConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n color,\n font,\n fontSize,\n selection,\n ...restConfig\n } = specifiedConfig;\n const mergedConfig = mergeConfig({}, duplicate(defaultConfig$1), font ? fontConfig(font) : {}, color ? colorSignalConfig(color) : {}, fontSize ? fontSizeSignalConfig(fontSize) : {}, restConfig || {});\n // mergeConfig doesn't recurse and overrides object values.\n if (selection) {\n writeConfig(mergedConfig, 'selection', selection, true);\n }\n const outputConfig = omit(mergedConfig, configPropsWithExpr);\n for (const prop of ['background', 'lineBreak', 'padding']) {\n if (mergedConfig[prop]) {\n outputConfig[prop] = signalRefOrValue(mergedConfig[prop]);\n }\n }\n for (const markConfigType of MARK_CONFIGS) {\n if (mergedConfig[markConfigType]) {\n // FIXME: outputConfig[markConfigType] expects that types are replaced recursively but replaceExprRef only replaces one level deep\n outputConfig[markConfigType] = replaceExprRef(mergedConfig[markConfigType]);\n }\n }\n for (const axisConfigType of AXIS_CONFIGS) {\n if (mergedConfig[axisConfigType]) {\n outputConfig[axisConfigType] = getAxisConfigInternal(mergedConfig[axisConfigType]);\n }\n }\n for (const headerConfigType of HEADER_CONFIGS) {\n if (mergedConfig[headerConfigType]) {\n outputConfig[headerConfigType] = replaceExprRef(mergedConfig[headerConfigType]);\n }\n }\n if (mergedConfig.legend) {\n outputConfig.legend = replaceExprRef(mergedConfig.legend);\n }\n if (mergedConfig.scale) {\n outputConfig.scale = replaceExprRef(mergedConfig.scale);\n }\n if (mergedConfig.style) {\n outputConfig.style = getStyleConfigInternal(mergedConfig.style);\n }\n if (mergedConfig.title) {\n outputConfig.title = replaceExprRef(mergedConfig.title);\n }\n if (mergedConfig.view) {\n outputConfig.view = replaceExprRef(mergedConfig.view);\n }\n return outputConfig;\n}\nconst MARK_STYLES = new Set(['view', ...PRIMITIVE_MARKS]);\nconst VL_ONLY_CONFIG_PROPERTIES = ['color', 'fontSize', 'background', 'padding', 'facet', 'concat', 'numberFormat', 'numberFormatType', 'normalizedNumberFormat', 'normalizedNumberFormatType', 'timeFormat', 'countTitle', 'header', 'axisQuantitative', 'axisTemporal', 'axisDiscrete', 'axisPoint', 'axisXBand', 'axisXPoint', 'axisXDiscrete', 'axisXQuantitative', 'axisXTemporal', 'axisYBand', 'axisYPoint', 'axisYDiscrete', 'axisYQuantitative', 'axisYTemporal', 'scale', 'selection', 'overlay' // FIXME: Redesign and unhide this\n];\n\nconst VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX = {\n view: ['continuousWidth', 'continuousHeight', 'discreteWidth', 'discreteHeight', 'step'],\n ...VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX\n};\nfunction stripAndRedirectConfig(config) {\n config = duplicate(config);\n for (const prop of VL_ONLY_CONFIG_PROPERTIES) {\n delete config[prop];\n }\n if (config.axis) {\n // delete condition axis config\n for (const prop in config.axis) {\n if (isConditionalAxisValue(config.axis[prop])) {\n delete config.axis[prop];\n }\n }\n }\n if (config.legend) {\n for (const prop of VL_ONLY_LEGEND_CONFIG) {\n delete config.legend[prop];\n }\n }\n // Remove Vega-Lite only generic mark config\n if (config.mark) {\n for (const prop of VL_ONLY_MARK_CONFIG_PROPERTIES) {\n delete config.mark[prop];\n }\n if (config.mark.tooltip && isObject(config.mark.tooltip)) {\n delete config.mark.tooltip;\n }\n }\n if (config.params) {\n config.signals = (config.signals || []).concat(assembleParameterSignals(config.params));\n delete config.params;\n }\n for (const markType of MARK_STYLES) {\n // Remove Vega-Lite-only mark config\n for (const prop of VL_ONLY_MARK_CONFIG_PROPERTIES) {\n delete config[markType][prop];\n }\n // Remove Vega-Lite only mark-specific config\n const vlOnlyMarkSpecificConfigs = VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX[markType];\n if (vlOnlyMarkSpecificConfigs) {\n for (const prop of vlOnlyMarkSpecificConfigs) {\n delete config[markType][prop];\n }\n }\n // Redirect mark config to config.style so that mark config only affect its own mark type\n // without affecting other marks that share the same underlying Vega marks.\n // For example, config.rect should not affect bar marks.\n redirectConfigToStyleConfig(config, markType);\n }\n for (const m of getAllCompositeMarks()) {\n // Clean up the composite mark config as we don't need them in the output specs anymore\n delete config[m];\n }\n redirectTitleConfig(config);\n // Remove empty config objects.\n for (const prop in config) {\n if (isObject(config[prop]) && isEmpty(config[prop])) {\n delete config[prop];\n }\n }\n return isEmpty(config) ? undefined : config;\n}\n/**\n *\n * Redirect config.title -- so that title config do not affect header labels,\n * which also uses `title` directive to implement.\n *\n * For subtitle configs in config.title, keep them in config.title as header titles never have subtitles.\n */\nfunction redirectTitleConfig(config) {\n const {\n titleMarkConfig,\n subtitleMarkConfig,\n subtitle\n } = extractTitleConfig(config.title);\n // set config.style if title/subtitleMarkConfig is not an empty object\n if (!isEmpty(titleMarkConfig)) {\n config.style['group-title'] = {\n ...config.style['group-title'],\n ...titleMarkConfig // config.title has higher precedence than config.style.group-title in Vega\n };\n }\n\n if (!isEmpty(subtitleMarkConfig)) {\n config.style['group-subtitle'] = {\n ...config.style['group-subtitle'],\n ...subtitleMarkConfig\n };\n }\n // subtitle part can stay in config.title since header titles do not use subtitle\n if (!isEmpty(subtitle)) {\n config.title = subtitle;\n } else {\n delete config.title;\n }\n}\nfunction redirectConfigToStyleConfig(config, prop,\n// string = composite mark\ntoProp, compositeMarkPart) {\n var _toProp;\n const propConfig = compositeMarkPart ? config[prop][compositeMarkPart] : config[prop];\n if (prop === 'view') {\n toProp = 'cell'; // View's default style is \"cell\"\n }\n\n const style = {\n ...propConfig,\n ...config.style[(_toProp = toProp) !== null && _toProp !== void 0 ? _toProp : prop]\n };\n // set config.style if it is not an empty object\n if (!isEmpty(style)) {\n var _toProp2;\n config.style[(_toProp2 = toProp) !== null && _toProp2 !== void 0 ? _toProp2 : prop] = style;\n }\n if (!compositeMarkPart) {\n // For composite mark, so don't delete the whole config yet as we have to do multiple redirections.\n delete config[prop];\n }\n}\nfunction isLayerSpec(spec) {\n return 'layer' in spec;\n}\nfunction isRepeatSpec(spec) {\n return 'repeat' in spec;\n}\nfunction isLayerRepeatSpec(spec) {\n return !isArray(spec.repeat) && spec.repeat['layer'];\n}\nclass SpecMapper {\n map(spec, params) {\n if (isFacetSpec(spec)) {\n return this.mapFacet(spec, params);\n } else if (isRepeatSpec(spec)) {\n return this.mapRepeat(spec, params);\n } else if (isHConcatSpec(spec)) {\n return this.mapHConcat(spec, params);\n } else if (isVConcatSpec(spec)) {\n return this.mapVConcat(spec, params);\n } else if (isConcatSpec(spec)) {\n return this.mapConcat(spec, params);\n } else {\n return this.mapLayerOrUnit(spec, params);\n }\n }\n mapLayerOrUnit(spec, params) {\n if (isLayerSpec(spec)) {\n return this.mapLayer(spec, params);\n } else if (isUnitSpec(spec)) {\n return this.mapUnit(spec, params);\n }\n throw new Error(invalidSpec(spec));\n }\n mapLayer(spec, params) {\n return {\n ...spec,\n layer: spec.layer.map(subspec => this.mapLayerOrUnit(subspec, params))\n };\n }\n mapHConcat(spec, params) {\n return {\n ...spec,\n hconcat: spec.hconcat.map(subspec => this.map(subspec, params))\n };\n }\n mapVConcat(spec, params) {\n return {\n ...spec,\n vconcat: spec.vconcat.map(subspec => this.map(subspec, params))\n };\n }\n mapConcat(spec, params) {\n const {\n concat,\n ...rest\n } = spec;\n return {\n ...rest,\n concat: concat.map(subspec => this.map(subspec, params))\n };\n }\n mapFacet(spec, params) {\n return {\n // as any is required here since TS cannot infer that FO may only be FieldName or Field, but not RepeatRef\n ...spec,\n // TODO: remove \"any\" once we support all facet listed in https://github.com/vega/vega-lite/issues/2760\n spec: this.map(spec.spec, params)\n };\n }\n mapRepeat(spec, params) {\n return {\n ...spec,\n // as any is required here since TS cannot infer that the output type satisfies the input type\n spec: this.map(spec.spec, params)\n };\n }\n}\nconst STACK_OFFSET_INDEX = {\n zero: 1,\n center: 1,\n normalize: 1\n};\nfunction isStackOffset(s) {\n return s in STACK_OFFSET_INDEX;\n}\nconst STACKABLE_MARKS = new Set([ARC, BAR, AREA, RULE, POINT, CIRCLE, SQUARE, LINE, TEXT, TICK]);\nconst STACK_BY_DEFAULT_MARKS = new Set([BAR, AREA, ARC]);\nfunction isUnbinnedQuantitative(channelDef) {\n return isFieldDef(channelDef) && channelDefType(channelDef) === 'quantitative' && !channelDef.bin;\n}\nfunction potentialStackedChannel(encoding, x, _ref32) {\n let {\n orient,\n type: mark\n } = _ref32;\n const y = x === 'x' ? 'y' : 'radius';\n const isCartesian = x === 'x';\n const xDef = encoding[x];\n const yDef = encoding[y];\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n if (isUnbinnedQuantitative(xDef) && isUnbinnedQuantitative(yDef)) {\n if (xDef.stack) {\n return x;\n } else if (yDef.stack) {\n return y;\n }\n const xAggregate = isFieldDef(xDef) && !!xDef.aggregate;\n const yAggregate = isFieldDef(yDef) && !!yDef.aggregate;\n // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y\n if (xAggregate !== yAggregate) {\n return xAggregate ? x : y;\n }\n if (isCartesian && ['bar', 'area'].includes(mark)) {\n if (orient === 'vertical') {\n return y;\n } else if (orient === 'horizontal') {\n return x;\n }\n }\n } else if (isUnbinnedQuantitative(xDef)) {\n return x;\n } else if (isUnbinnedQuantitative(yDef)) {\n return y;\n }\n } else if (isUnbinnedQuantitative(xDef)) {\n return x;\n } else if (isUnbinnedQuantitative(yDef)) {\n return y;\n }\n return undefined;\n}\nfunction getDimensionChannel(channel) {\n switch (channel) {\n case 'x':\n return 'y';\n case 'y':\n return 'x';\n case 'theta':\n return 'radius';\n case 'radius':\n return 'theta';\n }\n}\nfunction stack(m, encoding) {\n var _stackedFieldDef$scal, _stackedFieldDef$scal2;\n const markDef = isMarkDef(m) ? m : {\n type: m\n };\n const mark = markDef.type;\n // Should have stackable mark\n if (!STACKABLE_MARKS.has(mark)) {\n return null;\n }\n // Run potential stacked twice, one for Cartesian and another for Polar,\n // so text marks can be stacked in any of the coordinates.\n // Note: The logic here is not perfectly correct. If we want to support stacked dot plots where each dot is a pie chart with label, we have to change the stack logic here to separate Cartesian stacking for polar stacking.\n // However, since we probably never want to do that, let's just note the limitation here.\n const fieldChannel = potentialStackedChannel(encoding, 'x', markDef) || potentialStackedChannel(encoding, 'theta', markDef);\n if (!fieldChannel) {\n return null;\n }\n const stackedFieldDef = encoding[fieldChannel];\n const stackedField = isFieldDef(stackedFieldDef) ? vgField(stackedFieldDef, {}) : undefined;\n const dimensionChannel = getDimensionChannel(fieldChannel);\n const groupbyChannels = [];\n const groupbyFields = new Set();\n if (encoding[dimensionChannel]) {\n const dimensionDef = encoding[dimensionChannel];\n const dimensionField = isFieldDef(dimensionDef) ? vgField(dimensionDef, {}) : undefined;\n if (dimensionField && dimensionField !== stackedField) {\n // avoid grouping by the stacked field\n groupbyChannels.push(dimensionChannel);\n groupbyFields.add(dimensionField);\n }\n const dimensionOffsetChannel = dimensionChannel === 'x' ? 'xOffset' : 'yOffset';\n const dimensionOffsetDef = encoding[dimensionOffsetChannel];\n const dimensionOffsetField = isFieldDef(dimensionOffsetDef) ? vgField(dimensionOffsetDef, {}) : undefined;\n if (dimensionOffsetField && dimensionOffsetField !== stackedField) {\n // avoid grouping by the stacked field\n groupbyChannels.push(dimensionOffsetChannel);\n groupbyFields.add(dimensionOffsetField);\n }\n }\n // If the dimension has offset, don't stack anymore\n // Should have grouping level of detail that is different from the dimension field\n const stackBy = NONPOSITION_CHANNELS.reduce((sc, channel) => {\n // Ignore tooltip in stackBy (https://github.com/vega/vega-lite/issues/4001)\n if (channel !== 'tooltip' && channelHasField(encoding, channel)) {\n const channelDef = encoding[channel];\n for (const cDef of array$5(channelDef)) {\n const fieldDef = getFieldDef(cDef);\n if (fieldDef.aggregate) {\n continue;\n }\n // Check whether the channel's field is identical to x/y's field or if the channel is a repeat\n const f = vgField(fieldDef, {});\n if (\n // if fielddef is a repeat, just include it in the stack by\n !f ||\n // otherwise, the field must be different from the groupBy fields.\n !groupbyFields.has(f)) {\n sc.push({\n channel,\n fieldDef\n });\n }\n }\n }\n return sc;\n }, []);\n // Automatically determine offset\n let offset;\n if (stackedFieldDef.stack !== undefined) {\n if (isBoolean$2(stackedFieldDef.stack)) {\n offset = stackedFieldDef.stack ? 'zero' : null;\n } else {\n offset = stackedFieldDef.stack;\n }\n } else if (STACK_BY_DEFAULT_MARKS.has(mark)) {\n offset = 'zero';\n }\n if (!offset || !isStackOffset(offset)) {\n return null;\n }\n if (isAggregate$1(encoding) && stackBy.length === 0) {\n return null;\n }\n // warn when stacking non-linear\n if (stackedFieldDef !== null && stackedFieldDef !== void 0 && (_stackedFieldDef$scal = stackedFieldDef.scale) !== null && _stackedFieldDef$scal !== void 0 && _stackedFieldDef$scal.type && (stackedFieldDef === null || stackedFieldDef === void 0 || (_stackedFieldDef$scal2 = stackedFieldDef.scale) === null || _stackedFieldDef$scal2 === void 0 ? void 0 : _stackedFieldDef$scal2.type) !== ScaleType.LINEAR) {\n if (stackedFieldDef !== null && stackedFieldDef !== void 0 && stackedFieldDef.stack) {\n warn(cannotStackNonLinearScale(stackedFieldDef.scale.type));\n }\n return null;\n }\n // Check if it is a ranged mark\n if (isFieldOrDatumDef(encoding[getSecondaryRangeChannel(fieldChannel)])) {\n if (stackedFieldDef.stack !== undefined) {\n warn(cannotStackRangedMark(fieldChannel));\n }\n return null;\n }\n // Warn if stacking non-summative aggregate\n if (isFieldDef(stackedFieldDef) && stackedFieldDef.aggregate && !SUM_OPS.has(stackedFieldDef.aggregate)) {\n warn(stackNonSummativeAggregate(stackedFieldDef.aggregate));\n }\n return {\n groupbyChannels,\n groupbyFields,\n fieldChannel,\n impute: stackedFieldDef.impute === null ? false : isPathMark(mark),\n stackBy,\n offset\n };\n}\nfunction initMarkdef(originalMarkDef, encoding, config) {\n // FIXME: markDef expects that exprRefs are replaced recursively but replaceExprRef only replaces the top level\n const markDef = replaceExprRef(originalMarkDef);\n // set orient, which can be overridden by rules as sometimes the specified orient is invalid.\n const specifiedOrient = getMarkPropOrConfig('orient', markDef, config);\n markDef.orient = orient(markDef.type, encoding, specifiedOrient);\n if (specifiedOrient !== undefined && specifiedOrient !== markDef.orient) {\n warn(orientOverridden(markDef.orient, specifiedOrient));\n }\n if (markDef.type === 'bar' && markDef.orient) {\n const cornerRadiusEnd = getMarkPropOrConfig('cornerRadiusEnd', markDef, config);\n if (cornerRadiusEnd !== undefined) {\n const newProps = markDef.orient === 'horizontal' && encoding.x2 || markDef.orient === 'vertical' && encoding.y2 ? ['cornerRadius'] : BAR_CORNER_RADIUS_INDEX[markDef.orient];\n for (const newProp of newProps) {\n markDef[newProp] = cornerRadiusEnd;\n }\n if (markDef.cornerRadiusEnd !== undefined) {\n delete markDef.cornerRadiusEnd; // no need to keep the original cap cornerRadius\n }\n }\n }\n // set opacity and filled if not specified in mark config\n const specifiedOpacity = getMarkPropOrConfig('opacity', markDef, config);\n if (specifiedOpacity === undefined) {\n markDef.opacity = opacity(markDef.type, encoding);\n }\n // set cursor, which should be pointer if href channel is present unless otherwise specified\n const specifiedCursor = getMarkPropOrConfig('cursor', markDef, config);\n if (specifiedCursor === undefined) {\n markDef.cursor = cursor(markDef, encoding, config);\n }\n return markDef;\n}\nfunction cursor(markDef, encoding, config) {\n if (encoding.href || markDef.href || getMarkPropOrConfig('href', markDef, config)) {\n return 'pointer';\n }\n return markDef.cursor;\n}\nfunction opacity(mark, encoding) {\n if (contains([POINT, TICK, CIRCLE, SQUARE], mark)) {\n // point-based marks\n if (!isAggregate$1(encoding)) {\n return 0.7;\n }\n }\n return undefined;\n}\nfunction defaultFilled(markDef, config, _ref33) {\n let {\n graticule\n } = _ref33;\n if (graticule) {\n return false;\n }\n const filledConfig = getMarkConfig('filled', markDef, config);\n const mark = markDef.type;\n return getFirstDefined(filledConfig, mark !== POINT && mark !== LINE && mark !== RULE);\n}\nfunction orient(mark, encoding, specifiedOrient) {\n switch (mark) {\n case POINT:\n case CIRCLE:\n case SQUARE:\n case TEXT:\n case RECT:\n case IMAGE:\n // orient is meaningless for these marks.\n return undefined;\n }\n const {\n x,\n y,\n x2,\n y2\n } = encoding;\n switch (mark) {\n case BAR:\n if (isFieldDef(x) && (isBinned(x.bin) || isFieldDef(y) && y.aggregate && !x.aggregate)) {\n return 'vertical';\n }\n if (isFieldDef(y) && (isBinned(y.bin) || isFieldDef(x) && x.aggregate && !y.aggregate)) {\n return 'horizontal';\n }\n if (y2 || x2) {\n // Ranged bar does not always have clear orientation, so we allow overriding\n if (specifiedOrient) {\n return specifiedOrient;\n }\n // If y is range and x is non-range, non-bin Q\n if (!x2) {\n if (isFieldDef(x) && x.type === QUANTITATIVE && !isBinning(x.bin) || isNumericDataDef(x)) {\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n }\n }\n return 'vertical';\n }\n // If x is range and y is non-range, non-bin Q\n if (!y2) {\n if (isFieldDef(y) && y.type === QUANTITATIVE && !isBinning(y.bin) || isNumericDataDef(y)) {\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n }\n }\n return 'horizontal';\n }\n }\n // falls through\n case RULE:\n // return undefined for line segment rule and bar with both axis ranged\n // we have to ignore the case that the data are already binned\n if (x2 && !(isFieldDef(x) && isBinned(x.bin)) && y2 && !(isFieldDef(y) && isBinned(y.bin))) {\n return undefined;\n }\n // falls through\n case AREA:\n // If there are range for both x and y, y (vertical) has higher precedence.\n if (y2) {\n if (isFieldDef(y) && isBinned(y.bin)) {\n return 'horizontal';\n } else {\n return 'vertical';\n }\n } else if (x2) {\n if (isFieldDef(x) && isBinned(x.bin)) {\n return 'vertical';\n } else {\n return 'horizontal';\n }\n } else if (mark === RULE) {\n if (x && !y) {\n return 'vertical';\n } else if (y && !x) {\n return 'horizontal';\n }\n }\n // falls through\n case LINE:\n case TICK:\n {\n const xIsMeasure = isUnbinnedQuantitativeFieldOrDatumDef(x);\n const yIsMeasure = isUnbinnedQuantitativeFieldOrDatumDef(y);\n if (specifiedOrient) {\n return specifiedOrient;\n } else if (xIsMeasure && !yIsMeasure) {\n // Tick is opposite to bar, line, area\n return mark !== 'tick' ? 'horizontal' : 'vertical';\n } else if (!xIsMeasure && yIsMeasure) {\n // Tick is opposite to bar, line, area\n return mark !== 'tick' ? 'vertical' : 'horizontal';\n } else if (xIsMeasure && yIsMeasure) {\n return 'vertical';\n } else {\n const xIsTemporal = isTypedFieldDef(x) && x.type === TEMPORAL;\n const yIsTemporal = isTypedFieldDef(y) && y.type === TEMPORAL;\n // x: T, y: N --> vertical tick\n if (xIsTemporal && !yIsTemporal) {\n return 'vertical';\n } else if (!xIsTemporal && yIsTemporal) {\n return 'horizontal';\n }\n }\n return undefined;\n }\n }\n return 'vertical';\n}\nfunction dropLineAndPoint(markDef) {\n const {\n point: _point,\n line: _line,\n ...mark\n } = markDef;\n return keys(mark).length > 1 ? mark : mark.type;\n}\nfunction dropLineAndPointFromConfig(config) {\n for (const mark of ['line', 'area', 'rule', 'trail']) {\n if (config[mark]) {\n config = {\n ...config,\n // TODO: remove as any\n [mark]: omit(config[mark], ['point', 'line'])\n };\n }\n }\n return config;\n}\nfunction getPointOverlay(markDef) {\n let markConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let encoding = arguments.length > 2 ? arguments[2] : undefined;\n if (markDef.point === 'transparent') {\n return {\n opacity: 0\n };\n } else if (markDef.point) {\n // truthy : true or object\n return isObject(markDef.point) ? markDef.point : {};\n } else if (markDef.point !== undefined) {\n // false or null\n return null;\n } else {\n // undefined (not disabled)\n if (markConfig.point || encoding.shape) {\n // enable point overlay if config[mark].point is truthy or if encoding.shape is provided\n return isObject(markConfig.point) ? markConfig.point : {};\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nfunction getLineOverlay(markDef) {\n let markConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (markDef.line) {\n // true or object\n return markDef.line === true ? {} : markDef.line;\n } else if (markDef.line !== undefined) {\n // false or null\n return null;\n } else {\n // undefined (not disabled)\n if (markConfig.line) {\n // enable line overlay if config[mark].line is truthy\n return markConfig.line === true ? {} : markConfig.line;\n }\n // markDef.point is defined as falsy\n return undefined;\n }\n}\nclass PathOverlayNormalizer {\n constructor() {\n this.name = 'path-overlay';\n }\n hasMatchingType(spec, config) {\n if (isUnitSpec(spec)) {\n const {\n mark,\n encoding\n } = spec;\n const markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n switch (markDef.type) {\n case 'line':\n case 'rule':\n case 'trail':\n return !!getPointOverlay(markDef, config[markDef.type], encoding);\n case 'area':\n return (\n // false / null are also included as we want to remove the properties\n !!getPointOverlay(markDef, config[markDef.type], encoding) || !!getLineOverlay(markDef, config[markDef.type])\n );\n }\n }\n return false;\n }\n run(spec, normParams, normalize) {\n const {\n config\n } = normParams;\n const {\n params,\n projection,\n mark,\n name,\n encoding: e,\n ...outerSpec\n } = spec;\n // Need to call normalizeEncoding because we need the inferred types to correctly determine stack\n const encoding = normalizeEncoding(e, config);\n const markDef = isMarkDef(mark) ? mark : {\n type: mark\n };\n const pointOverlay = getPointOverlay(markDef, config[markDef.type], encoding);\n const lineOverlay = markDef.type === 'area' && getLineOverlay(markDef, config[markDef.type]);\n const layer = [{\n name,\n ...(params ? {\n params\n } : {}),\n mark: dropLineAndPoint({\n // TODO: extract this 0.7 to be shared with default opacity for point/tick/...\n ...(markDef.type === 'area' && markDef.opacity === undefined && markDef.fillOpacity === undefined ? {\n opacity: 0.7\n } : {}),\n ...markDef\n }),\n // drop shape from encoding as this might be used to trigger point overlay\n encoding: omit(encoding, ['shape'])\n }];\n // FIXME: determine rules for applying selections.\n // Need to copy stack config to overlayed layer\n // FIXME: normalizer shouldn't call `initMarkdef`, a method from an init phase.\n const stackProps = stack(initMarkdef(markDef, encoding, config), encoding);\n let overlayEncoding = encoding;\n if (stackProps) {\n const {\n fieldChannel: stackFieldChannel,\n offset\n } = stackProps;\n overlayEncoding = {\n ...encoding,\n [stackFieldChannel]: {\n ...encoding[stackFieldChannel],\n ...(offset ? {\n stack: offset\n } : {})\n }\n };\n }\n // overlay line layer should be on the edge of area but passing y2/x2 makes\n // it as \"rule\" mark so that it draws unwanted vertical/horizontal lines.\n // point overlay also should not have y2/x2 as it does not support.\n overlayEncoding = omit(overlayEncoding, ['y2', 'x2']);\n if (lineOverlay) {\n layer.push({\n ...(projection ? {\n projection\n } : {}),\n mark: {\n type: 'line',\n ...pick(markDef, ['clip', 'interpolate', 'tension', 'tooltip']),\n ...lineOverlay\n },\n encoding: overlayEncoding\n });\n }\n if (pointOverlay) {\n layer.push({\n ...(projection ? {\n projection\n } : {}),\n mark: {\n type: 'point',\n opacity: 1,\n filled: true,\n ...pick(markDef, ['clip', 'tooltip']),\n ...pointOverlay\n },\n encoding: overlayEncoding\n });\n }\n return normalize({\n ...outerSpec,\n layer\n }, {\n ...normParams,\n config: dropLineAndPointFromConfig(config)\n });\n }\n}\nfunction replaceRepeaterInFacet(facet, repeater) {\n if (!repeater) {\n return facet;\n }\n if (isFacetMapping(facet)) {\n return replaceRepeaterInMapping(facet, repeater);\n }\n return replaceRepeaterInFieldDef(facet, repeater);\n}\nfunction replaceRepeaterInEncoding(encoding, repeater) {\n if (!repeater) {\n return encoding;\n }\n return replaceRepeaterInMapping(encoding, repeater);\n}\n/**\n * Replaces repeated value and returns if the repeated value is valid.\n */\nfunction replaceRepeatInProp(prop, o, repeater) {\n const val = o[prop];\n if (isRepeatRef(val)) {\n if (val.repeat in repeater) {\n return {\n ...o,\n [prop]: repeater[val.repeat]\n };\n } else {\n warn(noSuchRepeatedValue(val.repeat));\n return undefined;\n }\n }\n return o;\n}\n/**\n * Replace repeater values in a field def with the concrete field name.\n */\nfunction replaceRepeaterInFieldDef(fieldDef, repeater) {\n fieldDef = replaceRepeatInProp('field', fieldDef, repeater);\n if (fieldDef === undefined) {\n // the field def should be ignored\n return undefined;\n } else if (fieldDef === null) {\n return null;\n }\n if (isSortableFieldDef(fieldDef) && isSortField(fieldDef.sort)) {\n const sort = replaceRepeatInProp('field', fieldDef.sort, repeater);\n fieldDef = {\n ...fieldDef,\n ...(sort ? {\n sort\n } : {})\n };\n }\n return fieldDef;\n}\nfunction replaceRepeaterInFieldOrDatumDef(def, repeater) {\n if (isFieldDef(def)) {\n return replaceRepeaterInFieldDef(def, repeater);\n } else {\n const datumDef = replaceRepeatInProp('datum', def, repeater);\n if (datumDef !== def && !datumDef.type) {\n datumDef.type = 'nominal';\n }\n return datumDef;\n }\n}\nfunction replaceRepeaterInChannelDef(channelDef, repeater) {\n if (isFieldOrDatumDef(channelDef)) {\n const fd = replaceRepeaterInFieldOrDatumDef(channelDef, repeater);\n if (fd) {\n return fd;\n } else if (isConditionalDef(channelDef)) {\n return {\n condition: channelDef.condition\n };\n }\n } else {\n if (hasConditionalFieldOrDatumDef(channelDef)) {\n const fd = replaceRepeaterInFieldOrDatumDef(channelDef.condition, repeater);\n if (fd) {\n return {\n ...channelDef,\n condition: fd\n };\n } else {\n const {\n condition,\n ...channelDefWithoutCondition\n } = channelDef;\n return channelDefWithoutCondition;\n }\n }\n return channelDef;\n }\n return undefined;\n}\nfunction replaceRepeaterInMapping(mapping, repeater) {\n const out = {};\n for (const channel in mapping) {\n if (has$1(mapping, channel)) {\n const channelDef = mapping[channel];\n if (isArray(channelDef)) {\n // array cannot have condition\n out[channel] = channelDef // somehow we need to cast it here\n .map(cd => replaceRepeaterInChannelDef(cd, repeater)).filter(cd => cd);\n } else {\n const cd = replaceRepeaterInChannelDef(channelDef, repeater);\n if (cd !== undefined) {\n out[channel] = cd;\n }\n }\n }\n }\n return out;\n}\nclass RuleForRangedLineNormalizer {\n constructor() {\n this.name = 'RuleForRangedLine';\n }\n hasMatchingType(spec) {\n if (isUnitSpec(spec)) {\n const {\n encoding,\n mark\n } = spec;\n if (mark === 'line' || isMarkDef(mark) && mark.type === 'line') {\n for (const channel of SECONDARY_RANGE_CHANNEL) {\n const mainChannel = getMainRangeChannel(channel);\n const mainChannelDef = encoding[mainChannel];\n if (encoding[channel]) {\n if (isFieldDef(mainChannelDef) && !isBinned(mainChannelDef.bin) || isDatumDef(mainChannelDef)) {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n run(spec, params, normalize) {\n const {\n encoding,\n mark\n } = spec;\n warn(lineWithRange(!!encoding.x2, !!encoding.y2));\n return normalize({\n ...spec,\n mark: isObject(mark) ? {\n ...mark,\n type: 'rule'\n } : 'rule'\n }, params);\n }\n}\nclass CoreNormalizer extends SpecMapper {\n constructor() {\n super(...arguments);\n this.nonFacetUnitNormalizers = [boxPlotNormalizer, errorBarNormalizer, errorBandNormalizer, new PathOverlayNormalizer(), new RuleForRangedLineNormalizer()];\n }\n map(spec, params) {\n // Special handling for a faceted unit spec as it can return a facet spec, not just a layer or unit spec like a normal unit spec.\n if (isUnitSpec(spec)) {\n const hasRow = channelHasField(spec.encoding, ROW);\n const hasColumn = channelHasField(spec.encoding, COLUMN);\n const hasFacet = channelHasField(spec.encoding, FACET);\n if (hasRow || hasColumn || hasFacet) {\n return this.mapFacetedUnit(spec, params);\n }\n }\n return super.map(spec, params);\n }\n // This is for normalizing non-facet unit\n mapUnit(spec, params) {\n const {\n parentEncoding,\n parentProjection\n } = params;\n const encoding = replaceRepeaterInEncoding(spec.encoding, params.repeater);\n const specWithReplacedEncoding = {\n ...spec,\n ...(spec.name ? {\n name: [params.repeaterPrefix, spec.name].filter(n => n).join('_')\n } : {}),\n ...(encoding ? {\n encoding\n } : {})\n };\n if (parentEncoding || parentProjection) {\n return this.mapUnitWithParentEncodingOrProjection(specWithReplacedEncoding, params);\n }\n const normalizeLayerOrUnit = this.mapLayerOrUnit.bind(this);\n for (const unitNormalizer of this.nonFacetUnitNormalizers) {\n if (unitNormalizer.hasMatchingType(specWithReplacedEncoding, params.config)) {\n return unitNormalizer.run(specWithReplacedEncoding, params, normalizeLayerOrUnit);\n }\n }\n return specWithReplacedEncoding;\n }\n mapRepeat(spec, params) {\n if (isLayerRepeatSpec(spec)) {\n return this.mapLayerRepeat(spec, params);\n } else {\n return this.mapNonLayerRepeat(spec, params);\n }\n }\n mapLayerRepeat(spec, params) {\n const {\n repeat,\n spec: childSpec,\n ...rest\n } = spec;\n const {\n row,\n column,\n layer\n } = repeat;\n const {\n repeater = {},\n repeaterPrefix = ''\n } = params;\n if (row || column) {\n return this.mapRepeat({\n ...spec,\n repeat: {\n ...(row ? {\n row\n } : {}),\n ...(column ? {\n column\n } : {})\n },\n spec: {\n repeat: {\n layer\n },\n spec: childSpec\n }\n }, params);\n } else {\n return {\n ...rest,\n layer: layer.map(layerValue => {\n const childRepeater = {\n ...repeater,\n layer: layerValue\n };\n const childName = \"\".concat((childSpec.name ? \"\".concat(childSpec.name, \"_\") : '') + repeaterPrefix, \"child__layer_\").concat(varName(layerValue));\n const child = this.mapLayerOrUnit(childSpec, {\n ...params,\n repeater: childRepeater,\n repeaterPrefix: childName\n });\n child.name = childName;\n return child;\n })\n };\n }\n }\n mapNonLayerRepeat(spec, params) {\n var _childSpec$data;\n const {\n repeat,\n spec: childSpec,\n data,\n ...remainingProperties\n } = spec;\n if (!isArray(repeat) && spec.columns) {\n // is repeat with row/column\n spec = omit(spec, ['columns']);\n warn(columnsNotSupportByRowCol('repeat'));\n }\n const concat = [];\n const {\n repeater = {},\n repeaterPrefix = ''\n } = params;\n const row = !isArray(repeat) && repeat.row || [repeater ? repeater.row : null];\n const column = !isArray(repeat) && repeat.column || [repeater ? repeater.column : null];\n const repeatValues = isArray(repeat) && repeat || [repeater ? repeater.repeat : null];\n // cross product\n for (const repeatValue of repeatValues) {\n for (const rowValue of row) {\n for (const columnValue of column) {\n const childRepeater = {\n repeat: repeatValue,\n row: rowValue,\n column: columnValue,\n layer: repeater.layer\n };\n const childName = (childSpec.name ? \"\".concat(childSpec.name, \"_\") : '') + repeaterPrefix + 'child__' + (isArray(repeat) ? \"\".concat(varName(repeatValue)) : (repeat.row ? \"row_\".concat(varName(rowValue)) : '') + (repeat.column ? \"column_\".concat(varName(columnValue)) : ''));\n const child = this.map(childSpec, {\n ...params,\n repeater: childRepeater,\n repeaterPrefix: childName\n });\n child.name = childName;\n // we move data up\n concat.push(omit(child, ['data']));\n }\n }\n }\n const columns = isArray(repeat) ? spec.columns : repeat.column ? repeat.column.length : 1;\n return {\n data: (_childSpec$data = childSpec.data) !== null && _childSpec$data !== void 0 ? _childSpec$data : data,\n align: 'all',\n ...remainingProperties,\n columns,\n concat\n };\n }\n mapFacet(spec, params) {\n const {\n facet\n } = spec;\n if (isFacetMapping(facet) && spec.columns) {\n // is facet with row/column\n spec = omit(spec, ['columns']);\n warn(columnsNotSupportByRowCol('facet'));\n }\n return super.mapFacet(spec, params);\n }\n mapUnitWithParentEncodingOrProjection(spec, params) {\n const {\n encoding,\n projection\n } = spec;\n const {\n parentEncoding,\n parentProjection,\n config\n } = params;\n const mergedProjection = mergeProjection({\n parentProjection,\n projection\n });\n const mergedEncoding = mergeEncoding({\n parentEncoding,\n encoding: replaceRepeaterInEncoding(encoding, params.repeater)\n });\n return this.mapUnit({\n ...spec,\n ...(mergedProjection ? {\n projection: mergedProjection\n } : {}),\n ...(mergedEncoding ? {\n encoding: mergedEncoding\n } : {})\n }, {\n config\n });\n }\n mapFacetedUnit(spec, normParams) {\n // New encoding in the inside spec should not contain row / column\n // as row/column should be moved to facet\n const {\n row,\n column,\n facet,\n ...encoding\n } = spec.encoding;\n // Mark and encoding should be moved into the inner spec\n const {\n mark,\n width,\n projection,\n height,\n view,\n params,\n encoding: _,\n ...outerSpec\n } = spec;\n const {\n facetMapping,\n layout\n } = this.getFacetMappingAndLayout({\n row,\n column,\n facet\n }, normParams);\n const newEncoding = replaceRepeaterInEncoding(encoding, normParams.repeater);\n return this.mapFacet({\n ...outerSpec,\n ...layout,\n // row / column has higher precedence than facet\n facet: facetMapping,\n spec: {\n ...(width ? {\n width\n } : {}),\n ...(height ? {\n height\n } : {}),\n ...(view ? {\n view\n } : {}),\n ...(projection ? {\n projection\n } : {}),\n mark,\n encoding: newEncoding,\n ...(params ? {\n params\n } : {})\n }\n }, normParams);\n }\n getFacetMappingAndLayout(facets, params) {\n const {\n row,\n column,\n facet\n } = facets;\n if (row || column) {\n if (facet) {\n warn(facetChannelDropped([...(row ? [ROW] : []), ...(column ? [COLUMN] : [])]));\n }\n const facetMapping = {};\n const layout = {};\n for (const channel of [ROW, COLUMN]) {\n const def = facets[channel];\n if (def) {\n const {\n align,\n center,\n spacing,\n columns,\n ...defWithoutLayout\n } = def;\n facetMapping[channel] = defWithoutLayout;\n for (const prop of ['align', 'center', 'spacing']) {\n if (def[prop] !== undefined) {\n var _layout$prop;\n (_layout$prop = layout[prop]) !== null && _layout$prop !== void 0 ? _layout$prop : layout[prop] = {};\n layout[prop][channel] = def[prop];\n }\n }\n }\n }\n return {\n facetMapping,\n layout\n };\n } else {\n const {\n align,\n center,\n spacing,\n columns,\n ...facetMapping\n } = facet;\n return {\n facetMapping: replaceRepeaterInFacet(facetMapping, params.repeater),\n layout: {\n ...(align ? {\n align\n } : {}),\n ...(center ? {\n center\n } : {}),\n ...(spacing ? {\n spacing\n } : {}),\n ...(columns ? {\n columns\n } : {})\n }\n };\n }\n }\n mapLayer(spec, _ref34) {\n let {\n parentEncoding,\n parentProjection,\n ...otherParams\n } = _ref34;\n // Special handling for extended layer spec\n const {\n encoding,\n projection,\n ...rest\n } = spec;\n const params = {\n ...otherParams,\n parentEncoding: mergeEncoding({\n parentEncoding,\n encoding,\n layer: true\n }),\n parentProjection: mergeProjection({\n parentProjection,\n projection\n })\n };\n return super.mapLayer({\n ...rest,\n ...(spec.name ? {\n name: [params.repeaterPrefix, spec.name].filter(n => n).join('_')\n } : {})\n }, params);\n }\n}\nfunction mergeEncoding(_ref35) {\n let {\n parentEncoding,\n encoding = {},\n layer\n } = _ref35;\n let merged = {};\n if (parentEncoding) {\n const channels = new Set([...keys(parentEncoding), ...keys(encoding)]);\n for (const channel of channels) {\n const channelDef = encoding[channel];\n const parentChannelDef = parentEncoding[channel];\n if (isFieldOrDatumDef(channelDef)) {\n // Field/Datum Def can inherit properties from its parent\n // Note that parentChannelDef doesn't have to be a field/datum def if the channelDef is already one.\n const mergedChannelDef = {\n ...parentChannelDef,\n ...channelDef\n };\n merged[channel] = mergedChannelDef;\n } else if (hasConditionalFieldOrDatumDef(channelDef)) {\n merged[channel] = {\n ...channelDef,\n condition: {\n ...parentChannelDef,\n ...channelDef.condition\n }\n };\n } else if (channelDef || channelDef === null) {\n merged[channel] = channelDef;\n } else if (layer || isValueDef(parentChannelDef) || isSignalRef(parentChannelDef) || isFieldOrDatumDef(parentChannelDef) || isArray(parentChannelDef)) {\n merged[channel] = parentChannelDef;\n }\n }\n } else {\n merged = encoding;\n }\n return !merged || isEmpty(merged) ? undefined : merged;\n}\nfunction mergeProjection(opt) {\n const {\n parentProjection,\n projection\n } = opt;\n if (parentProjection && projection) {\n warn(projectionOverridden({\n parentProjection,\n projection\n }));\n }\n return projection !== null && projection !== void 0 ? projection : parentProjection;\n}\nfunction isFilter(t) {\n return 'filter' in t;\n}\nfunction isImputeSequence(t) {\n return (t === null || t === void 0 ? void 0 : t['stop']) !== undefined;\n}\nfunction isLookup(t) {\n return 'lookup' in t;\n}\nfunction isLookupData(from) {\n return 'data' in from;\n}\nfunction isLookupSelection(from) {\n return 'param' in from;\n}\nfunction isPivot(t) {\n return 'pivot' in t;\n}\nfunction isDensity(t) {\n return 'density' in t;\n}\nfunction isQuantile(t) {\n return 'quantile' in t;\n}\nfunction isRegression(t) {\n return 'regression' in t;\n}\nfunction isLoess(t) {\n return 'loess' in t;\n}\nfunction isSample(t) {\n return 'sample' in t;\n}\nfunction isWindow(t) {\n return 'window' in t;\n}\nfunction isJoinAggregate(t) {\n return 'joinaggregate' in t;\n}\nfunction isFlatten(t) {\n return 'flatten' in t;\n}\nfunction isCalculate(t) {\n return 'calculate' in t;\n}\nfunction isBin(t) {\n return 'bin' in t;\n}\nfunction isImpute(t) {\n return 'impute' in t;\n}\nfunction isTimeUnit(t) {\n return 'timeUnit' in t;\n}\nfunction isAggregate(t) {\n return 'aggregate' in t;\n}\nfunction isStack(t) {\n return 'stack' in t;\n}\nfunction isFold(t) {\n return 'fold' in t;\n}\nfunction isExtent(t) {\n return 'extent' in t && !('density' in t);\n}\nfunction normalizeTransform(transform) {\n return transform.map(t => {\n if (isFilter(t)) {\n return {\n filter: normalizeLogicalComposition(t.filter, normalizePredicate$1)\n };\n }\n return t;\n });\n}\nclass SelectionCompatibilityNormalizer extends SpecMapper {\n map(spec, normParams) {\n var _normParams$emptySele, _normParams$selection;\n (_normParams$emptySele = normParams.emptySelections) !== null && _normParams$emptySele !== void 0 ? _normParams$emptySele : normParams.emptySelections = {};\n (_normParams$selection = normParams.selectionPredicates) !== null && _normParams$selection !== void 0 ? _normParams$selection : normParams.selectionPredicates = {};\n spec = normalizeTransforms(spec, normParams);\n return super.map(spec, normParams);\n }\n mapLayerOrUnit(spec, normParams) {\n spec = normalizeTransforms(spec, normParams);\n if (spec.encoding) {\n const encoding = {};\n for (const [channel, enc] of entries$1(spec.encoding)) {\n encoding[channel] = normalizeChannelDef(enc, normParams);\n }\n spec = {\n ...spec,\n encoding\n };\n }\n return super.mapLayerOrUnit(spec, normParams);\n }\n mapUnit(spec, normParams) {\n const {\n selection,\n ...rest\n } = spec;\n if (selection) {\n return {\n ...rest,\n params: entries$1(selection).map(_ref36 => {\n let [name, selDef] = _ref36;\n const {\n init: value,\n bind,\n empty,\n ...select\n } = selDef;\n if (select.type === 'single') {\n select.type = 'point';\n select.toggle = false;\n } else if (select.type === 'multi') {\n select.type = 'point';\n }\n // Propagate emptiness forwards and backwards\n normParams.emptySelections[name] = empty !== 'none';\n for (const pred of vals((_normParams$selection2 = normParams.selectionPredicates[name]) !== null && _normParams$selection2 !== void 0 ? _normParams$selection2 : {})) {\n var _normParams$selection2;\n pred.empty = empty !== 'none';\n }\n return {\n name,\n value,\n select,\n bind\n };\n })\n };\n }\n return spec;\n }\n}\nfunction normalizeTransforms(spec, normParams) {\n const {\n transform: tx,\n ...rest\n } = spec;\n if (tx) {\n const transform = tx.map(t => {\n if (isFilter(t)) {\n return {\n filter: normalizePredicate(t, normParams)\n };\n } else if (isBin(t) && isBinParams(t.bin)) {\n return {\n ...t,\n bin: normalizeBinExtent(t.bin)\n };\n } else if (isLookup(t)) {\n const {\n selection: param,\n ...from\n } = t.from;\n return param ? {\n ...t,\n from: {\n param,\n ...from\n }\n } : t;\n }\n return t;\n });\n return {\n ...rest,\n transform\n };\n }\n return spec;\n}\nfunction normalizeChannelDef(obj, normParams) {\n var _enc$scale;\n const enc = duplicate(obj);\n if (isFieldDef(enc) && isBinParams(enc.bin)) {\n enc.bin = normalizeBinExtent(enc.bin);\n }\n if (isScaleFieldDef(enc) && (_enc$scale = enc.scale) !== null && _enc$scale !== void 0 && (_enc$scale = _enc$scale.domain) !== null && _enc$scale !== void 0 && _enc$scale.selection) {\n const {\n selection: param,\n ...domain\n } = enc.scale.domain;\n enc.scale.domain = {\n ...domain,\n ...(param ? {\n param\n } : {})\n };\n }\n if (isConditionalDef(enc)) {\n if (isArray(enc.condition)) {\n enc.condition = enc.condition.map(c => {\n const {\n selection,\n param,\n test,\n ...cond\n } = c;\n return param ? c : {\n ...cond,\n test: normalizePredicate(c, normParams)\n };\n });\n } else {\n const {\n selection,\n param,\n test,\n ...cond\n } = normalizeChannelDef(enc.condition, normParams);\n enc.condition = param ? enc.condition : {\n ...cond,\n test: normalizePredicate(enc.condition, normParams)\n };\n }\n }\n return enc;\n}\nfunction normalizeBinExtent(bin) {\n const ext = bin.extent;\n if (ext !== null && ext !== void 0 && ext.selection) {\n const {\n selection: param,\n ...rest\n } = ext;\n return {\n ...bin,\n extent: {\n ...rest,\n param\n }\n };\n }\n return bin;\n}\nfunction normalizePredicate(op, normParams) {\n // Normalize old compositions of selection names (e.g., selection: {and: [\"one\", \"two\"]})\n const normalizeSelectionComposition = o => {\n return normalizeLogicalComposition(o, param => {\n var _normParams$emptySele2, _a$param;\n var _a;\n const empty = (_normParams$emptySele2 = normParams.emptySelections[param]) !== null && _normParams$emptySele2 !== void 0 ? _normParams$emptySele2 : true;\n const pred = {\n param,\n empty\n };\n (_a$param = (_a = normParams.selectionPredicates)[param]) !== null && _a$param !== void 0 ? _a$param : _a[param] = [];\n normParams.selectionPredicates[param].push(pred);\n return pred;\n });\n };\n return op.selection ? normalizeSelectionComposition(op.selection) : normalizeLogicalComposition(op.test || op.filter, o => o.selection ? normalizeSelectionComposition(o.selection) : o);\n}\nclass TopLevelSelectionsNormalizer extends SpecMapper {\n map(spec, normParams) {\n var _normParams$selection3;\n const selections = (_normParams$selection3 = normParams.selections) !== null && _normParams$selection3 !== void 0 ? _normParams$selection3 : [];\n if (spec.params && !isUnitSpec(spec)) {\n const params = [];\n for (const param of spec.params) {\n if (isSelectionParameter(param)) {\n selections.push(param);\n } else {\n params.push(param);\n }\n }\n spec.params = params;\n }\n normParams.selections = selections;\n return super.map(spec, normParams);\n }\n mapUnit(spec, normParams) {\n var _normParams$path;\n const selections = normParams.selections;\n if (!selections || !selections.length) return spec;\n const path = ((_normParams$path = normParams.path) !== null && _normParams$path !== void 0 ? _normParams$path : []).concat(spec.name);\n const params = [];\n for (const selection of selections) {\n // By default, apply selections to all unit views.\n if (!selection.views || !selection.views.length) {\n params.push(selection);\n } else {\n for (const view of selection.views) {\n // view is either a specific unit name, or a partial path through the spec tree.\n if (isString(view) && (view === spec.name || path.includes(view)) || isArray(view) &&\n // logic for backwards compatibility with view paths before we had unique names\n // @ts-ignore\n view.map(v => path.indexOf(v)).every((v, i, arr) => v !== -1 && (i === 0 || v > arr[i - 1]))) {\n params.push(selection);\n }\n }\n }\n }\n if (params.length) spec.params = params;\n return spec;\n }\n}\nfor (const method of ['mapFacet', 'mapRepeat', 'mapHConcat', 'mapVConcat', 'mapLayer']) {\n const proto = TopLevelSelectionsNormalizer.prototype[method];\n TopLevelSelectionsNormalizer.prototype[method] = function (spec, params) {\n return proto.call(this, spec, addSpecNameToParams(spec, params));\n };\n}\nfunction addSpecNameToParams(spec, params) {\n var _params$path;\n return spec.name ? {\n ...params,\n path: ((_params$path = params.path) !== null && _params$path !== void 0 ? _params$path : []).concat(spec.name)\n } : params;\n}\nfunction normalize(spec, config) {\n if (config === undefined) {\n config = initConfig(spec.config);\n }\n const normalizedSpec = normalizeGenericSpec(spec, config);\n const {\n width,\n height\n } = spec;\n const autosize = normalizeAutoSize(normalizedSpec, {\n width,\n height,\n autosize: spec.autosize\n }, config);\n return {\n ...normalizedSpec,\n ...(autosize ? {\n autosize\n } : {})\n };\n}\nconst coreNormalizer = new CoreNormalizer();\nconst selectionCompatNormalizer = new SelectionCompatibilityNormalizer();\nconst topLevelSelectionNormalizer = new TopLevelSelectionsNormalizer();\n/**\n * Decompose extended unit specs into composition of pure unit specs.\n * And push top-level selection definitions down to unit specs.\n */\nfunction normalizeGenericSpec(spec) {\n let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const normParams = {\n config\n };\n return topLevelSelectionNormalizer.map(coreNormalizer.map(selectionCompatNormalizer.map(spec, normParams), normParams), normParams);\n}\nfunction _normalizeAutoSize(autosize) {\n return isString(autosize) ? {\n type: autosize\n } : autosize !== null && autosize !== void 0 ? autosize : {};\n}\n/**\n * Normalize autosize and deal with width or height == \"container\".\n */\nfunction normalizeAutoSize(spec, sizeInfo, config) {\n let {\n width,\n height\n } = sizeInfo;\n const isFitCompatible = isUnitSpec(spec) || isLayerSpec(spec);\n const autosizeDefault = {};\n if (!isFitCompatible) {\n // If spec is not compatible with autosize == \"fit\", discard width/height == container\n if (width == 'container') {\n warn(containerSizeNonSingle('width'));\n width = undefined;\n }\n if (height == 'container') {\n warn(containerSizeNonSingle('height'));\n height = undefined;\n }\n } else {\n // Default autosize parameters to fit when width/height is \"container\"\n if (width == 'container' && height == 'container') {\n autosizeDefault.type = 'fit';\n autosizeDefault.contains = 'padding';\n } else if (width == 'container') {\n autosizeDefault.type = 'fit-x';\n autosizeDefault.contains = 'padding';\n } else if (height == 'container') {\n autosizeDefault.type = 'fit-y';\n autosizeDefault.contains = 'padding';\n }\n }\n const autosize = {\n type: 'pad',\n ...autosizeDefault,\n ...(config ? _normalizeAutoSize(config.autosize) : {}),\n ..._normalizeAutoSize(spec.autosize)\n };\n if (autosize.type === 'fit' && !isFitCompatible) {\n warn(FIT_NON_SINGLE);\n autosize.type = 'pad';\n }\n if (width == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-x')) {\n warn(containerSizeNotCompatibleWithAutosize('width'));\n }\n if (height == 'container' && !(autosize.type == 'fit' || autosize.type == 'fit-y')) {\n warn(containerSizeNotCompatibleWithAutosize('height'));\n }\n // Delete autosize property if it's Vega's default\n if (deepEqual(autosize, {\n type: 'pad'\n })) {\n return undefined;\n }\n return autosize;\n}\nfunction isFitType(autoSizeType) {\n return autoSizeType === 'fit' || autoSizeType === 'fit-x' || autoSizeType === 'fit-y';\n}\nfunction getFitType(sizeType) {\n return sizeType ? \"fit-\".concat(getPositionScaleChannel(sizeType)) : 'fit';\n}\nconst TOP_LEVEL_PROPERTIES = ['background', 'padding'\n// We do not include \"autosize\" here as it is supported by only unit and layer specs and thus need to be normalized\n];\n\nfunction extractTopLevelProperties(t, includeParams) {\n const o = {};\n for (const p of TOP_LEVEL_PROPERTIES) {\n if (t && t[p] !== undefined) {\n o[p] = signalRefOrValue(t[p]);\n }\n }\n if (includeParams) {\n o.params = t.params;\n }\n return o;\n}\n\n/**\n * Generic class for storing properties that are explicitly specified\n * and implicitly determined by the compiler.\n * This is important for scale/axis/legend merging as\n * we want to prioritize properties that users explicitly specified.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nclass Split {\n constructor() {\n let explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.explicit = explicit;\n this.implicit = implicit;\n }\n clone() {\n return new Split(duplicate(this.explicit), duplicate(this.implicit));\n }\n combine() {\n return {\n ...this.explicit,\n ...this.implicit\n };\n }\n get(key) {\n // Explicit has higher precedence\n return getFirstDefined(this.explicit[key], this.implicit[key]);\n }\n getWithExplicit(key) {\n // Explicit has higher precedence\n if (this.explicit[key] !== undefined) {\n return {\n explicit: true,\n value: this.explicit[key]\n };\n } else if (this.implicit[key] !== undefined) {\n return {\n explicit: false,\n value: this.implicit[key]\n };\n }\n return {\n explicit: false,\n value: undefined\n };\n }\n setWithExplicit(key, _ref37) {\n let {\n value,\n explicit\n } = _ref37;\n if (value !== undefined) {\n this.set(key, value, explicit);\n }\n }\n set(key, value, explicit) {\n delete this[explicit ? 'implicit' : 'explicit'][key];\n this[explicit ? 'explicit' : 'implicit'][key] = value;\n return this;\n }\n copyKeyFromSplit(key, _ref38) {\n let {\n explicit,\n implicit\n } = _ref38;\n // Explicit has higher precedence\n if (explicit[key] !== undefined) {\n this.set(key, explicit[key], true);\n } else if (implicit[key] !== undefined) {\n this.set(key, implicit[key], false);\n }\n }\n copyKeyFromObject(key, s) {\n // Explicit has higher precedence\n if (s[key] !== undefined) {\n this.set(key, s[key], true);\n }\n }\n /**\n * Merge split object into this split object. Properties from the other split\n * overwrite properties from this split.\n */\n copyAll(other) {\n for (const key of keys(other.combine())) {\n const val = other.getWithExplicit(key);\n this.setWithExplicit(key, val);\n }\n }\n}\nfunction makeExplicit(value) {\n return {\n explicit: true,\n value\n };\n}\nfunction makeImplicit(value) {\n return {\n explicit: false,\n value\n };\n}\nfunction tieBreakByComparing(compare) {\n return (v1, v2, property, propertyOf) => {\n const diff = compare(v1.value, v2.value);\n if (diff > 0) {\n return v1;\n } else if (diff < 0) {\n return v2;\n }\n return defaultTieBreaker(v1, v2, property, propertyOf);\n };\n}\nfunction defaultTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n warn(mergeConflictingProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, prefer v1.\n return v1;\n}\nfunction mergeValuesWithExplicit(v1, v2, property, propertyOf) {\n let tieBreaker = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : defaultTieBreaker;\n if (v1 === undefined || v1.value === undefined) {\n // For first run\n return v2;\n }\n if (v1.explicit && !v2.explicit) {\n return v1;\n } else if (v2.explicit && !v1.explicit) {\n return v2;\n } else if (deepEqual(v1.value, v2.value)) {\n return v1;\n } else {\n return tieBreaker(v1, v2, property, propertyOf);\n }\n}\n\n/**\n * Class to track interesting properties (see https://15721.courses.cs.cmu.edu/spring2016/papers/graefe-ieee1995.pdf)\n * about how fields have been parsed or whether they have been derived in a transform. We use this to not parse the\n * same field again (or differently).\n */\nclass AncestorParse extends Split {\n constructor() {\n let explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let parseNothing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n super(explicit, implicit);\n this.explicit = explicit;\n this.implicit = implicit;\n this.parseNothing = parseNothing;\n }\n clone() {\n const clone = super.clone();\n clone.parseNothing = this.parseNothing;\n return clone;\n }\n}\nfunction isUrlData(data) {\n return 'url' in data;\n}\nfunction isInlineData(data) {\n return 'values' in data;\n}\nfunction isNamedData(data) {\n return 'name' in data && !isUrlData(data) && !isInlineData(data) && !isGenerator(data);\n}\nfunction isGenerator(data) {\n return data && (isSequenceGenerator(data) || isSphereGenerator(data) || isGraticuleGenerator(data));\n}\nfunction isSequenceGenerator(data) {\n return 'sequence' in data;\n}\nfunction isSphereGenerator(data) {\n return 'sphere' in data;\n}\nfunction isGraticuleGenerator(data) {\n return 'graticule' in data;\n}\nvar DataSourceType;\n(function (DataSourceType) {\n DataSourceType[DataSourceType[\"Raw\"] = 0] = \"Raw\";\n DataSourceType[DataSourceType[\"Main\"] = 1] = \"Main\";\n DataSourceType[DataSourceType[\"Row\"] = 2] = \"Row\";\n DataSourceType[DataSourceType[\"Column\"] = 3] = \"Column\";\n DataSourceType[DataSourceType[\"Lookup\"] = 4] = \"Lookup\";\n})(DataSourceType || (DataSourceType = {}));\nfunction assembleProjection(proj) {\n const {\n signals,\n hasLegend,\n index,\n ...rest\n } = proj;\n rest.field = replacePathInField(rest.field);\n return rest;\n}\nfunction assembleInit(init) {\n let isExpr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let wrap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity$6;\n if (isArray(init)) {\n const assembled = init.map(v => assembleInit(v, isExpr, wrap));\n return isExpr ? \"[\".concat(assembled.join(', '), \"]\") : assembled;\n } else if (isDateTime(init)) {\n if (isExpr) {\n return wrap(dateTimeToExpr(init));\n } else {\n return wrap(dateTimeToTimestamp(init));\n }\n }\n return isExpr ? wrap(stringify$1(init)) : init;\n}\nfunction assembleUnitSelectionSignals(model, signals) {\n for (const selCmpt of vals((_model$component$sele = model.component.selection) !== null && _model$component$sele !== void 0 ? _model$component$sele : {})) {\n var _model$component$sele;\n const name = selCmpt.name;\n let modifyExpr = \"\".concat(name).concat(TUPLE, \", \").concat(selCmpt.resolve === 'global' ? 'true' : \"{unit: \".concat(unitName(model), \"}\"));\n for (const c of selectionCompilers) {\n if (!c.defined(selCmpt)) continue;\n if (c.signals) signals = c.signals(model, selCmpt, signals);\n if (c.modifyExpr) modifyExpr = c.modifyExpr(model, selCmpt, modifyExpr);\n }\n signals.push({\n name: name + MODIFY,\n on: [{\n events: {\n signal: selCmpt.name + TUPLE\n },\n update: \"modify(\".concat($(selCmpt.name + STORE), \", \").concat(modifyExpr, \")\")\n }]\n });\n }\n return cleanupEmptyOnArray(signals);\n}\nfunction assembleFacetSignals(model, signals) {\n if (model.component.selection && keys(model.component.selection).length) {\n const name = $(model.getName('cell'));\n signals.unshift({\n name: 'facet',\n value: {},\n on: [{\n events: eventSelector('mousemove', 'scope'),\n update: \"isTuple(facet) ? facet : group(\".concat(name, \").datum\")\n }]\n });\n }\n return cleanupEmptyOnArray(signals);\n}\nfunction assembleTopLevelSignals(model, signals) {\n let hasSelections = false;\n for (const selCmpt of vals((_model$component$sele2 = model.component.selection) !== null && _model$component$sele2 !== void 0 ? _model$component$sele2 : {})) {\n var _model$component$sele2;\n const name = selCmpt.name;\n const store = $(name + STORE);\n const hasSg = signals.filter(s => s.name === name);\n if (hasSg.length === 0) {\n const resolve = selCmpt.resolve === 'global' ? 'union' : selCmpt.resolve;\n const isPoint = selCmpt.type === 'point' ? ', true, true)' : ')';\n signals.push({\n name: selCmpt.name,\n update: \"\".concat(VL_SELECTION_RESOLVE, \"(\").concat(store, \", \").concat($(resolve)).concat(isPoint)\n });\n }\n hasSelections = true;\n for (const c of selectionCompilers) {\n if (c.defined(selCmpt) && c.topLevelSignals) {\n signals = c.topLevelSignals(model, selCmpt, signals);\n }\n }\n }\n if (hasSelections) {\n const hasUnit = signals.filter(s => s.name === 'unit');\n if (hasUnit.length === 0) {\n signals.unshift({\n name: 'unit',\n value: {},\n on: [{\n events: 'mousemove',\n update: 'isTuple(group()) ? group() : unit'\n }]\n });\n }\n }\n return cleanupEmptyOnArray(signals);\n}\nfunction assembleUnitSelectionData(model, data) {\n const dataCopy = [...data];\n const unit = unitName(model, {\n escape: false\n });\n for (const selCmpt of vals((_model$component$sele3 = model.component.selection) !== null && _model$component$sele3 !== void 0 ? _model$component$sele3 : {})) {\n var _model$component$sele3;\n const store = {\n name: selCmpt.name + STORE\n };\n if (selCmpt.project.hasSelectionId) {\n store.transform = [{\n type: 'collect',\n sort: {\n field: SELECTION_ID\n }\n }];\n }\n if (selCmpt.init) {\n const fields = selCmpt.project.items.map(assembleProjection);\n store.values = selCmpt.project.hasSelectionId ? selCmpt.init.map(i => ({\n unit,\n [SELECTION_ID]: assembleInit(i, false)[0]\n })) : selCmpt.init.map(i => ({\n unit,\n fields,\n values: assembleInit(i, false)\n }));\n }\n const contains = dataCopy.filter(d => d.name === selCmpt.name + STORE);\n if (!contains.length) {\n dataCopy.push(store);\n }\n }\n return dataCopy;\n}\nfunction assembleUnitSelectionMarks(model, marks) {\n for (const selCmpt of vals((_model$component$sele4 = model.component.selection) !== null && _model$component$sele4 !== void 0 ? _model$component$sele4 : {})) {\n var _model$component$sele4;\n for (const c of selectionCompilers) {\n if (c.defined(selCmpt) && c.marks) {\n marks = c.marks(model, selCmpt, marks);\n }\n }\n }\n return marks;\n}\nfunction assembleLayerSelectionMarks(model, marks) {\n for (const child of model.children) {\n if (isUnitModel(child)) {\n marks = assembleUnitSelectionMarks(child, marks);\n }\n }\n return marks;\n}\nfunction assembleSelectionScaleDomain(model, extent, scaleCmpt, domain) {\n const parsedExtent = parseSelectionExtent(model, extent.param, extent);\n return {\n signal: hasContinuousDomain(scaleCmpt.get('type')) && isArray(domain) && domain[0] > domain[1] ? \"isValid(\".concat(parsedExtent, \") && reverse(\").concat(parsedExtent, \")\") : parsedExtent\n };\n}\nfunction cleanupEmptyOnArray(signals) {\n return signals.map(s => {\n if (s.on && !s.on.length) delete s.on;\n return s;\n });\n}\n\n/**\n * A node in the dataflow tree.\n */\nclass DataFlowNode {\n constructor(parent, debugName) {\n this.debugName = debugName;\n this._children = [];\n this._parent = null;\n if (parent) {\n this.parent = parent;\n }\n }\n /**\n * Clone this node with a deep copy but don't clone links to children or parents.\n */\n clone() {\n throw new Error('Cannot clone node');\n }\n get parent() {\n return this._parent;\n }\n /**\n * Set the parent of the node and also add this node to the parent's children.\n */\n set parent(parent) {\n this._parent = parent;\n if (parent) {\n parent.addChild(this);\n }\n }\n get children() {\n return this._children;\n }\n numChildren() {\n return this._children.length;\n }\n addChild(child, loc) {\n // do not add the same child twice\n if (this._children.includes(child)) {\n warn(ADD_SAME_CHILD_TWICE);\n return;\n }\n if (loc !== undefined) {\n this._children.splice(loc, 0, child);\n } else {\n this._children.push(child);\n }\n }\n removeChild(oldChild) {\n const loc = this._children.indexOf(oldChild);\n this._children.splice(loc, 1);\n return loc;\n }\n /**\n * Remove node from the dataflow.\n */\n remove() {\n let loc = this._parent.removeChild(this);\n for (const child of this._children) {\n // do not use the set method because we want to insert at a particular location\n child._parent = this._parent;\n this._parent.addChild(child, loc++);\n }\n }\n /**\n * Insert another node as a parent of this node.\n */\n insertAsParentOf(other) {\n const parent = other.parent;\n parent.removeChild(this);\n this.parent = parent;\n other.parent = this;\n }\n swapWithParent() {\n const parent = this._parent;\n const newParent = parent.parent;\n // reconnect the children\n for (const child of this._children) {\n child.parent = parent;\n }\n // remove old links\n this._children = []; // equivalent to removing every child link one by one\n parent.removeChild(this);\n const loc = parent.parent.removeChild(parent);\n // swap two nodes but maintain order in children\n this._parent = newParent;\n newParent.addChild(this, loc);\n parent.parent = this;\n }\n}\nclass OutputNode extends DataFlowNode {\n clone() {\n const cloneObj = new this.constructor();\n cloneObj.debugName = \"clone_\".concat(this.debugName);\n cloneObj._source = this._source;\n cloneObj._name = \"clone_\".concat(this._name);\n cloneObj.type = this.type;\n cloneObj.refCounts = this.refCounts;\n cloneObj.refCounts[cloneObj._name] = 0;\n return cloneObj;\n }\n /**\n * @param source The name of the source. Will change in assemble.\n * @param type The type of the output node.\n * @param refCounts A global ref counter map.\n */\n constructor(parent, source, type, refCounts) {\n super(parent, source);\n this.type = type;\n this.refCounts = refCounts;\n this._source = this._name = source;\n if (this.refCounts && !(this._name in this.refCounts)) {\n this.refCounts[this._name] = 0;\n }\n }\n dependentFields() {\n return new Set();\n }\n producedFields() {\n return new Set();\n }\n hash() {\n if (this._hash === undefined) {\n this._hash = \"Output \".concat(uniqueId());\n }\n return this._hash;\n }\n /**\n * Request the datasource name and increase the ref counter.\n *\n * During the parsing phase, this will return the simple name such as 'main' or 'raw'.\n * It is crucial to request the name from an output node to mark it as a required node.\n * If nobody ever requests the name, this datasource will not be instantiated in the assemble phase.\n *\n * In the assemble phase, this will return the correct name.\n */\n getSource() {\n this.refCounts[this._name]++;\n return this._source;\n }\n isRequired() {\n return !!this.refCounts[this._name];\n }\n setSource(source) {\n this._source = source;\n }\n}\nfunction isTimeUnitTransformComponent(timeUnitComponent) {\n return timeUnitComponent.as !== undefined;\n}\nfunction offsetAs(field) {\n return \"\".concat(field, \"_end\");\n}\nclass TimeUnitNode extends DataFlowNode {\n clone() {\n return new TimeUnitNode(null, duplicate(this.formula));\n }\n constructor(parent, formula) {\n super(parent);\n this.formula = formula;\n }\n static makeFromEncoding(parent, model) {\n const formula = model.reduceFieldDef((timeUnitComponent, fieldDef) => {\n const {\n field,\n timeUnit\n } = fieldDef;\n if (timeUnit) {\n let component;\n if (isBinnedTimeUnit(timeUnit)) {\n // For binned time unit, only produce end if the mark is a rect-based mark (rect, bar, image, arc), which needs \"range\".\n if (isUnitModel(model)) {\n const {\n mark\n } = model;\n if (isRectBasedMark(mark) || !!fieldDef.bandPosition) {\n component = {\n timeUnit: normalizeTimeUnit(timeUnit),\n field\n };\n }\n }\n } else {\n component = {\n as: vgField(fieldDef, {\n forAs: true\n }),\n field,\n timeUnit\n };\n }\n if (component) {\n timeUnitComponent[hash(component)] = component;\n }\n }\n return timeUnitComponent;\n }, {});\n if (isEmpty(formula)) {\n return null;\n }\n return new TimeUnitNode(parent, formula);\n }\n static makeFromTransform(parent, t) {\n const {\n timeUnit,\n ...other\n } = {\n ...t\n };\n const normalizedTimeUnit = normalizeTimeUnit(timeUnit);\n const component = {\n ...other,\n timeUnit: normalizedTimeUnit\n };\n return new TimeUnitNode(parent, {\n [hash(component)]: component\n });\n }\n /**\n * Merge together TimeUnitNodes assigning the children of `other` to `this`\n * and removing `other`.\n */\n merge(other) {\n this.formula = {\n ...this.formula\n };\n // if the same hash happen twice, merge\n for (const key in other.formula) {\n if (!this.formula[key]) {\n // copy if it's not a duplicate\n this.formula[key] = other.formula[key];\n }\n }\n for (const child of other.children) {\n other.removeChild(child);\n child.parent = this;\n }\n other.remove();\n }\n /**\n * Remove time units coming from the other node.\n */\n removeFormulas(fields) {\n const newFormula = {};\n for (const [key, timeUnitComponent] of entries$1(this.formula)) {\n const fieldAs = isTimeUnitTransformComponent(timeUnitComponent) ? timeUnitComponent.as : \"\".concat(timeUnitComponent.field, \"_end\");\n if (!fields.has(fieldAs)) {\n newFormula[key] = timeUnitComponent;\n }\n }\n this.formula = newFormula;\n }\n producedFields() {\n return new Set(vals(this.formula).map(f => {\n return isTimeUnitTransformComponent(f) ? f.as : offsetAs(f.field);\n }));\n }\n dependentFields() {\n return new Set(vals(this.formula).map(f => f.field));\n }\n hash() {\n return \"TimeUnit \".concat(hash(this.formula));\n }\n assemble() {\n const transforms = [];\n for (const f of vals(this.formula)) {\n if (isTimeUnitTransformComponent(f)) {\n const {\n field,\n as,\n timeUnit\n } = f;\n const {\n unit,\n utc,\n ...params\n } = normalizeTimeUnit(timeUnit);\n transforms.push({\n field: replacePathInField(field),\n type: 'timeunit',\n ...(unit ? {\n units: getTimeUnitParts(unit)\n } : {}),\n ...(utc ? {\n timezone: 'utc'\n } : {}),\n ...params,\n as: [as, \"\".concat(as, \"_end\")]\n });\n } else if (f) {\n const {\n field,\n timeUnit\n } = f;\n const smallestUnit = getSmallestTimeUnitPart(timeUnit === null || timeUnit === void 0 ? void 0 : timeUnit.unit);\n const {\n part,\n step\n } = getDateTimePartAndStep(smallestUnit, timeUnit.step);\n transforms.push({\n type: 'formula',\n expr: \"timeOffset('\".concat(part, \"', datum['\").concat(field, \"'], \").concat(step, \")\"),\n as: offsetAs(field)\n });\n }\n }\n return transforms;\n }\n}\nconst TUPLE_FIELDS = '_tuple_fields';\nclass SelectionProjectionComponent {\n constructor() {\n for (var _len9 = arguments.length, items = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n items[_key9] = arguments[_key9];\n }\n this.items = items;\n this.hasChannel = {};\n this.hasField = {};\n this.hasSelectionId = false;\n }\n}\nconst project = {\n defined: () => {\n return true; // This transform handles its own defaults, so always run parse.\n },\n\n parse: (model, selCmpt, selDef) => {\n var _selCmpt$project;\n const name = selCmpt.name;\n const proj = (_selCmpt$project = selCmpt.project) !== null && _selCmpt$project !== void 0 ? _selCmpt$project : selCmpt.project = new SelectionProjectionComponent();\n const parsed = {};\n const timeUnits = {};\n const signals = new Set();\n const signalName = (p, range) => {\n const suffix = range === 'visual' ? p.channel : p.field;\n let sg = varName(\"\".concat(name, \"_\").concat(suffix));\n for (let counter = 1; signals.has(sg); counter++) {\n sg = varName(\"\".concat(name, \"_\").concat(suffix, \"_\").concat(counter));\n }\n signals.add(sg);\n return {\n [range]: sg\n };\n };\n const type = selCmpt.type;\n const cfg = model.config.selection[type];\n const init = selDef.value !== undefined ? array$5(selDef.value) : null;\n // If no explicit projection (either fields or encodings) is specified, set some defaults.\n // If an initial value is set, try to infer projections.\n let {\n fields,\n encodings\n } = isObject(selDef.select) ? selDef.select : {};\n if (!fields && !encodings && init) {\n for (const initVal of init) {\n // initVal may be a scalar value to smoothen varParam -> pointSelection gradient.\n if (!isObject(initVal)) {\n continue;\n }\n for (const key of keys(initVal)) {\n if (isSingleDefUnitChannel(key)) {\n (encodings || (encodings = [])).push(key);\n } else {\n if (type === 'interval') {\n warn(INTERVAL_INITIALIZED_WITH_POS);\n encodings = cfg.encodings;\n } else {\n var _fields;\n ((_fields = fields) !== null && _fields !== void 0 ? _fields : fields = []).push(key);\n }\n }\n }\n }\n }\n // If no initial value is specified, use the default configuration.\n // We break this out as a separate if block (instead of an else condition)\n // to account for unprojected point selections that have scalar initial values\n if (!fields && !encodings) {\n encodings = cfg.encodings;\n if ('fields' in cfg) {\n fields = cfg.fields;\n }\n }\n for (const channel of (_encodings = encodings) !== null && _encodings !== void 0 ? _encodings : []) {\n var _encodings;\n const fieldDef = model.fieldDef(channel);\n if (fieldDef) {\n let field = fieldDef.field;\n if (fieldDef.aggregate) {\n warn(cannotProjectAggregate(channel, fieldDef.aggregate));\n continue;\n } else if (!field) {\n warn(cannotProjectOnChannelWithoutField(channel));\n continue;\n }\n if (fieldDef.timeUnit && !isBinnedTimeUnit(fieldDef.timeUnit)) {\n field = model.vgField(channel);\n // Construct TimeUnitComponents which will be combined into a\n // TimeUnitNode. This node may need to be inserted into the\n // dataflow if the selection is used across views that do not\n // have these time units defined.\n const component = {\n timeUnit: fieldDef.timeUnit,\n as: field,\n field: fieldDef.field\n };\n timeUnits[hash(component)] = component;\n }\n // Prevent duplicate projections on the same field.\n // TODO: what if the same field is bound to multiple channels (e.g., SPLOM diag).\n if (!parsed[field]) {\n // Determine whether the tuple will store enumerated or ranged values.\n // Interval selections store ranges for continuous scales, and enumerations otherwise.\n // Single/multi selections store ranges for binned fields, and enumerations otherwise.\n const tplType = type === 'interval' && isScaleChannel(channel) && hasContinuousDomain(model.getScaleComponent(channel).get('type')) ? 'R' : fieldDef.bin ? 'R-RE' : 'E';\n const p = {\n field,\n channel,\n type: tplType,\n index: proj.items.length\n };\n p.signals = {\n ...signalName(p, 'data'),\n ...signalName(p, 'visual')\n };\n proj.items.push(parsed[field] = p);\n proj.hasField[field] = parsed[field];\n proj.hasSelectionId = proj.hasSelectionId || field === SELECTION_ID;\n if (isGeoPositionChannel(channel)) {\n p.geoChannel = channel;\n p.channel = getPositionChannelFromLatLong(channel);\n proj.hasChannel[p.channel] = parsed[field];\n } else {\n proj.hasChannel[channel] = parsed[field];\n }\n }\n } else {\n warn(cannotProjectOnChannelWithoutField(channel));\n }\n }\n for (const field of (_fields2 = fields) !== null && _fields2 !== void 0 ? _fields2 : []) {\n var _fields2;\n if (proj.hasField[field]) continue;\n const p = {\n type: 'E',\n field,\n index: proj.items.length\n };\n p.signals = {\n ...signalName(p, 'data')\n };\n proj.items.push(p);\n proj.hasField[field] = p;\n proj.hasSelectionId = proj.hasSelectionId || field === SELECTION_ID;\n }\n if (init) {\n selCmpt.init = init.map(v => {\n // Selections can be initialized either with a full object that maps projections to values\n // or scalar values to smoothen the abstraction gradient from variable params to point selections.\n return proj.items.map(p => isObject(v) ? v[p.geoChannel || p.channel] !== undefined ? v[p.geoChannel || p.channel] : v[p.field] : v);\n });\n }\n if (!isEmpty(timeUnits)) {\n proj.timeUnit = new TimeUnitNode(null, timeUnits);\n }\n },\n signals: (model, selCmpt, allSignals) => {\n const name = selCmpt.name + TUPLE_FIELDS;\n const hasSignal = allSignals.filter(s => s.name === name);\n return hasSignal.length > 0 || selCmpt.project.hasSelectionId ? allSignals : allSignals.concat({\n name,\n value: selCmpt.project.items.map(assembleProjection)\n });\n }\n};\nconst scaleBindings = {\n defined: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind === 'scales';\n },\n parse: (model, selCmpt) => {\n const bound = selCmpt.scales = [];\n for (const proj of selCmpt.project.items) {\n const channel = proj.channel;\n if (!isScaleChannel(channel)) {\n continue;\n }\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n if (!scale || !hasContinuousDomain(scaleType)) {\n warn(SCALE_BINDINGS_CONTINUOUS);\n continue;\n }\n scale.set('selectionExtent', {\n param: selCmpt.name,\n field: proj.field\n }, true);\n bound.push(proj);\n }\n },\n topLevelSignals: (model, selCmpt, signals) => {\n const bound = selCmpt.scales.filter(proj => signals.filter(s => s.name === proj.signals.data).length === 0);\n // Top-level signals are only needed for multiview displays and if this\n // view's top-level signals haven't already been generated.\n if (!model.parent || isTopLevelLayer(model) || bound.length === 0) {\n return signals;\n }\n // vlSelectionResolve does not account for the behavior of bound scales in\n // multiview displays. Each unit view adds a tuple to the store, but the\n // state of the selection is the unit selection most recently updated. This\n // state is captured by the top-level signals that we insert and \"push\n // outer\" to from within the units. We need to reassemble this state into\n // the top-level named signal, except no single selCmpt has a global view.\n const namedSg = signals.filter(s => s.name === selCmpt.name)[0];\n let update = namedSg.update;\n if (update.indexOf(VL_SELECTION_RESOLVE) >= 0) {\n namedSg.update = \"{\".concat(bound.map(proj => \"\".concat($(replacePathInField(proj.field)), \": \").concat(proj.signals.data)).join(', '), \"}\");\n } else {\n for (const proj of bound) {\n const mapping = \"\".concat($(replacePathInField(proj.field)), \": \").concat(proj.signals.data);\n if (!update.includes(mapping)) {\n update = \"\".concat(update.substring(0, update.length - 1), \", \").concat(mapping, \"}\");\n }\n }\n namedSg.update = update;\n }\n return signals.concat(bound.map(proj => ({\n name: proj.signals.data\n })));\n },\n signals: (model, selCmpt, signals) => {\n // Nested signals need only push to top-level signals with multiview displays.\n if (model.parent && !isTopLevelLayer(model)) {\n for (const proj of selCmpt.scales) {\n const signal = signals.filter(s => s.name === proj.signals.data)[0];\n signal.push = 'outer';\n delete signal.value;\n delete signal.update;\n }\n }\n return signals;\n }\n};\nfunction domain(model, channel) {\n const scale = $(model.scaleName(channel));\n return \"domain(\".concat(scale, \")\");\n}\nfunction isTopLevelLayer(model) {\n var _model$parent$parent;\n return model.parent && isLayerModel(model.parent) && ((_model$parent$parent = !model.parent.parent) !== null && _model$parent$parent !== void 0 ? _model$parent$parent : isTopLevelLayer(model.parent.parent));\n}\nconst BRUSH = '_brush';\nconst SCALE_TRIGGER = '_scale_trigger';\nconst GEO_INIT_TICK = 'geo_interval_init_tick'; // Workaround for https://github.com/vega/vega/issues/3481\nconst INIT = '_init';\nconst CENTER = '_center';\nconst interval = {\n defined: selCmpt => selCmpt.type === 'interval',\n parse: (model, selCmpt, selDef) => {\n var _a;\n if (model.hasProjection) {\n const def = {\n ...(isObject(selDef.select) ? selDef.select : {})\n };\n def.fields = [SELECTION_ID];\n if (!def.encodings) {\n // Remap default x/y projection\n def.encodings = selDef.value ? keys(selDef.value) : [LONGITUDE, LATITUDE];\n }\n selDef.select = {\n type: 'interval',\n ...def\n };\n }\n if (selCmpt.translate && !scaleBindings.defined(selCmpt)) {\n const filterExpr = \"!event.item || event.item.mark.name !== \".concat($(selCmpt.name + BRUSH));\n for (const evt of selCmpt.events) {\n var _a$filter;\n if (!evt.between) {\n warn(\"\".concat(evt, \" is not an ordered event stream for interval selections.\"));\n continue;\n }\n const filters = array$5((_a$filter = (_a = evt.between[0]).filter) !== null && _a$filter !== void 0 ? _a$filter : _a.filter = []);\n if (filters.indexOf(filterExpr) < 0) {\n filters.push(filterExpr);\n }\n }\n }\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const tupleSg = name + TUPLE;\n const channels = vals(selCmpt.project.hasChannel).filter(p => p.channel === X || p.channel === Y);\n const init = selCmpt.init ? selCmpt.init[0] : null;\n signals.push(...channels.reduce((arr, proj) => arr.concat(channelSignals(model, selCmpt, proj, init && init[proj.index])), []));\n if (!model.hasProjection) {\n // Proxy scale reactions to ensure that an infinite loop doesn't occur\n // when an interval selection filter touches the scale.\n if (!scaleBindings.defined(selCmpt)) {\n const triggerSg = name + SCALE_TRIGGER;\n const scaleTriggers = channels.map(proj => {\n const channel = proj.channel;\n const {\n data: dname,\n visual: vname\n } = proj.signals;\n const scaleName = $(model.scaleName(channel));\n const scaleType = model.getScaleComponent(channel).get('type');\n const toNum = hasContinuousDomain(scaleType) ? '+' : '';\n return \"(!isArray(\".concat(dname, \") || \") + \"(\".concat(toNum, \"invert(\").concat(scaleName, \", \").concat(vname, \")[0] === \").concat(toNum).concat(dname, \"[0] && \") + \"\".concat(toNum, \"invert(\").concat(scaleName, \", \").concat(vname, \")[1] === \").concat(toNum).concat(dname, \"[1]))\");\n });\n if (scaleTriggers.length) {\n signals.push({\n name: triggerSg,\n value: {},\n on: [{\n events: channels.map(proj => ({\n scale: model.scaleName(proj.channel)\n })),\n update: scaleTriggers.join(' && ') + \" ? \".concat(triggerSg, \" : {}\")\n }]\n });\n }\n }\n // Only add an interval to the store if it has valid data extents. Data extents\n // are set to null if pixel extents are equal to account for intervals over\n // ordinal/nominal domains which, when inverted, will still produce a valid datum.\n const dataSignals = channels.map(proj => proj.signals.data);\n const update = \"unit: \".concat(unitName(model), \", fields: \").concat(name + TUPLE_FIELDS, \", values\");\n return signals.concat({\n name: tupleSg,\n ...(init ? {\n init: \"{\".concat(update, \": \").concat(assembleInit(init), \"}\")\n } : {}),\n ...(dataSignals.length ? {\n on: [{\n events: [{\n signal: dataSignals.join(' || ')\n }],\n update: \"\".concat(dataSignals.join(' && '), \" ? {\").concat(update, \": [\").concat(dataSignals, \"]} : null\")\n }]\n } : {})\n });\n } else {\n const projection = $(model.projectionName());\n const centerSg = model.projectionName() + CENTER;\n const {\n x,\n y\n } = selCmpt.project.hasChannel;\n const xvname = x && x.signals.visual;\n const yvname = y && y.signals.visual;\n const xinit = x ? init && init[x.index] : \"\".concat(centerSg, \"[0]\");\n const yinit = y ? init && init[y.index] : \"\".concat(centerSg, \"[1]\");\n const sizeSg = layout => model.getSizeSignalRef(layout).signal;\n const bbox = \"[\" + \"[\".concat(xvname ? xvname + '[0]' : '0', \", \").concat(yvname ? yvname + '[0]' : '0', \"],\") + \"[\".concat(xvname ? xvname + '[1]' : sizeSg('width'), \", \") + \"\".concat(yvname ? yvname + '[1]' : sizeSg('height'), \"]\") + \"]\";\n if (init) {\n signals.unshift({\n name: name + INIT,\n init: \"[scale(\".concat(projection, \", [\").concat(x ? xinit[0] : xinit, \", \").concat(y ? yinit[0] : yinit, \"]), \") + \"scale(\".concat(projection, \", [\").concat(x ? xinit[1] : xinit, \", \").concat(y ? yinit[1] : yinit, \"])]\")\n });\n if (!x || !y) {\n // If initializing a uni-dimensional brush, use the center of the view to determine the other coord\n const hasCenterSg = signals.find(s => s.name === centerSg);\n if (!hasCenterSg) {\n signals.unshift({\n name: centerSg,\n update: \"invert(\".concat(projection, \", [\").concat(sizeSg('width'), \"/2, \").concat(sizeSg('height'), \"/2])\")\n });\n }\n }\n }\n const intersect = \"intersect(\".concat(bbox, \", {markname: \").concat($(model.getName('marks')), \"}, unit.mark)\");\n const base = \"{unit: \".concat(unitName(model), \"}\");\n const update = \"vlSelectionTuples(\".concat(intersect, \", \").concat(base, \")\");\n const visualSignals = channels.map(proj => proj.signals.visual);\n return signals.concat({\n name: tupleSg,\n on: [{\n events: [...(visualSignals.length ? [{\n signal: visualSignals.join(' || ')\n }] : []), ...(init ? [{\n signal: GEO_INIT_TICK\n }] : [])],\n update\n }]\n });\n }\n },\n topLevelSignals: (model, selCmpt, signals) => {\n if (isUnitModel(model) && model.hasProjection && selCmpt.init) {\n // Workaround for https://github.com/vega/vega/issues/3481\n // The scenegraph isn't populated on the first pulse. So we use a timer signal\n // to re-pulse the dataflow as soon as possible. We return an object to ensure\n // this only occurs once.\n const hasTick = signals.filter(s => s.name === GEO_INIT_TICK);\n if (!hasTick.length) {\n signals.unshift({\n name: GEO_INIT_TICK,\n value: null,\n on: [{\n events: 'timer{1}',\n update: \"\".concat(GEO_INIT_TICK, \" === null ? {} : \").concat(GEO_INIT_TICK)\n }]\n });\n }\n }\n return signals;\n },\n marks: (model, selCmpt, marks) => {\n const name = selCmpt.name;\n const {\n x,\n y\n } = selCmpt.project.hasChannel;\n const xvname = x === null || x === void 0 ? void 0 : x.signals.visual;\n const yvname = y === null || y === void 0 ? void 0 : y.signals.visual;\n const store = \"data(\".concat($(selCmpt.name + STORE), \")\");\n // Do not add a brush if we're binding to scales\n // or we don't have a valid interval projection\n if (scaleBindings.defined(selCmpt) || !x && !y) {\n return marks;\n }\n const update = {\n x: x !== undefined ? {\n signal: \"\".concat(xvname, \"[0]\")\n } : {\n value: 0\n },\n y: y !== undefined ? {\n signal: \"\".concat(yvname, \"[0]\")\n } : {\n value: 0\n },\n x2: x !== undefined ? {\n signal: \"\".concat(xvname, \"[1]\")\n } : {\n field: {\n group: 'width'\n }\n },\n y2: y !== undefined ? {\n signal: \"\".concat(yvname, \"[1]\")\n } : {\n field: {\n group: 'height'\n }\n }\n };\n // If the selection is resolved to global, only a single interval is in\n // the store. Wrap brush mark's encodings with a production rule to test\n // this based on the `unit` property. Hide the brush mark if it corresponds\n // to a unit different from the one in the store.\n if (selCmpt.resolve === 'global') {\n for (const key of keys(update)) {\n update[key] = [{\n test: \"\".concat(store, \".length && \").concat(store, \"[0].unit === \").concat(unitName(model)),\n ...update[key]\n }, {\n value: 0\n }];\n }\n }\n // Two brush marks ensure that fill colors and other aesthetic choices do\n // not interefere with the core marks, but that the brushed region can still\n // be interacted with (e.g., dragging it around).\n const {\n fill,\n fillOpacity,\n cursor,\n ...stroke\n } = selCmpt.mark;\n const vgStroke = keys(stroke).reduce((def, k) => {\n def[k] = [{\n test: [x !== undefined && \"\".concat(xvname, \"[0] !== \").concat(xvname, \"[1]\"), y !== undefined && \"\".concat(yvname, \"[0] !== \").concat(yvname, \"[1]\")].filter(t => t).join(' && '),\n value: stroke[k]\n }, {\n value: null\n }];\n return def;\n }, {});\n return [{\n name: \"\".concat(name + BRUSH, \"_bg\"),\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n fill: {\n value: fill\n },\n fillOpacity: {\n value: fillOpacity\n }\n },\n update\n }\n }, ...marks, {\n name: name + BRUSH,\n type: 'rect',\n clip: true,\n encode: {\n enter: {\n ...(cursor ? {\n cursor: {\n value: cursor\n }\n } : {}),\n fill: {\n value: 'transparent'\n }\n },\n update: {\n ...update,\n ...vgStroke\n }\n }\n }];\n }\n};\n/**\n * Returns the visual and data signals for an interval selection.\n */\nfunction channelSignals(model, selCmpt, proj, init) {\n const scaledInterval = !model.hasProjection;\n const channel = proj.channel;\n const vname = proj.signals.visual;\n const scaleName = $(scaledInterval ? model.scaleName(channel) : model.projectionName());\n const scaled = str => \"scale(\".concat(scaleName, \", \").concat(str, \")\");\n const size = model.getSizeSignalRef(channel === X ? 'width' : 'height').signal;\n const coord = \"\".concat(channel, \"(unit)\");\n const von = selCmpt.events.reduce((def, evt) => {\n return [...def, {\n events: evt.between[0],\n update: \"[\".concat(coord, \", \").concat(coord, \"]\")\n }, {\n events: evt,\n update: \"[\".concat(vname, \"[0], clamp(\").concat(coord, \", 0, \").concat(size, \")]\")\n } // Brush End\n ];\n }, []);\n if (scaledInterval) {\n const dname = proj.signals.data;\n const hasScales = scaleBindings.defined(selCmpt);\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n const vinit = init ? {\n init: assembleInit(init, true, scaled)\n } : {\n value: []\n };\n // React to pan/zooms of continuous scales. Non-continuous scales\n // (band, point) cannot be pan/zoomed and any other changes\n // to their domains (e.g., filtering) should clear the brushes.\n von.push({\n events: {\n signal: selCmpt.name + SCALE_TRIGGER\n },\n update: hasContinuousDomain(scaleType) ? \"[\".concat(scaled(\"\".concat(dname, \"[0]\")), \", \").concat(scaled(\"\".concat(dname, \"[1]\")), \"]\") : \"[0, 0]\"\n });\n return hasScales ? [{\n name: dname,\n on: []\n }] : [{\n name: vname,\n ...vinit,\n on: von\n }, {\n name: dname,\n ...(init ? {\n init: assembleInit(init)\n } : {}),\n on: [{\n events: {\n signal: vname\n },\n update: \"\".concat(vname, \"[0] === \").concat(vname, \"[1] ? null : invert(\").concat(scaleName, \", \").concat(vname, \")\")\n }]\n }];\n } else {\n const initIdx = channel === X ? 0 : 1;\n const initSg = selCmpt.name + INIT;\n const vinit = init ? {\n init: \"[\".concat(initSg, \"[0][\").concat(initIdx, \"], \").concat(initSg, \"[1][\").concat(initIdx, \"]]\")\n } : {\n value: []\n };\n return [{\n name: vname,\n ...vinit,\n on: von\n }];\n }\n}\nconst point$1 = {\n defined: selCmpt => selCmpt.type === 'point',\n signals: (model, selCmpt, signals) => {\n var _model$component$sele5;\n const name = selCmpt.name;\n const fieldsSg = name + TUPLE_FIELDS;\n const project = selCmpt.project;\n const datum = '(item().isVoronoi ? datum.datum : datum)';\n // Only add a discrete selection to the store if a datum is present _and_\n // the interaction isn't occurring on a group mark. This guards against\n // polluting interactive state with invalid values in faceted displays\n // as the group marks are also data-driven. We force the update to account\n // for constant null states but varying toggles (e.g., shift-click in\n // whitespace followed by a click in whitespace; the store should only\n // be cleared on the second click).\n const brushes = vals((_model$component$sele5 = model.component.selection) !== null && _model$component$sele5 !== void 0 ? _model$component$sele5 : {}).reduce((acc, cmpt) => {\n return cmpt.type === 'interval' ? acc.concat(cmpt.name + BRUSH) : acc;\n }, []).map(b => \"indexof(item().mark.name, '\".concat(b, \"') < 0\")).join(' && ');\n const test = \"datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0\".concat(brushes ? \" && \".concat(brushes) : '');\n let update = \"unit: \".concat(unitName(model), \", \");\n if (selCmpt.project.hasSelectionId) {\n update += \"\".concat(SELECTION_ID, \": \").concat(datum, \"[\").concat($(SELECTION_ID), \"]\");\n } else {\n const values = project.items.map(p => {\n const fieldDef = model.fieldDef(p.channel);\n // Binned fields should capture extents, for a range test against the raw field.\n return fieldDef !== null && fieldDef !== void 0 && fieldDef.bin ? \"[\".concat(datum, \"[\").concat($(model.vgField(p.channel, {})), \"], \") + \"\".concat(datum, \"[\").concat($(model.vgField(p.channel, {\n binSuffix: 'end'\n })), \"]]\") : \"\".concat(datum, \"[\").concat($(p.field), \"]\");\n }).join(', ');\n update += \"fields: \".concat(fieldsSg, \", values: [\").concat(values, \"]\");\n }\n const events = selCmpt.events;\n return signals.concat([{\n name: name + TUPLE,\n on: events ? [{\n events,\n update: \"\".concat(test, \" ? {\").concat(update, \"} : null\"),\n force: true\n }] : []\n }]);\n }\n};\n\n/**\n * Return a mixin that includes a Vega production rule for a Vega-Lite conditional channel definition\n * or a simple mixin if channel def has no condition.\n */\nfunction wrapCondition(model, channelDef, vgChannel, refFn) {\n const condition = isConditionalDef(channelDef) && channelDef.condition;\n const valueRef = refFn(channelDef);\n if (condition) {\n const conditions = array$5(condition);\n const vgConditions = conditions.map(c => {\n const conditionValueRef = refFn(c);\n if (isConditionalParameter(c)) {\n const {\n param,\n empty\n } = c;\n const test = parseSelectionPredicate(model, {\n param,\n empty\n });\n return {\n test,\n ...conditionValueRef\n };\n } else {\n const test = expression(model, c.test); // FIXME: remove casting once TS is no longer dumb about it\n return {\n test,\n ...conditionValueRef\n };\n }\n });\n return {\n [vgChannel]: [...vgConditions, ...(valueRef !== undefined ? [valueRef] : [])]\n };\n } else {\n return valueRef !== undefined ? {\n [vgChannel]: valueRef\n } : {};\n }\n}\nfunction text$1(model) {\n let channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n const channelDef = model.encoding[channel];\n return wrapCondition(model, channelDef, channel, cDef => textRef(cDef, model.config));\n}\nfunction textRef(channelDef, config) {\n let expr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'datum';\n // text\n if (channelDef) {\n if (isValueDef(channelDef)) {\n return signalOrValueRef(channelDef.value);\n }\n if (isFieldOrDatumDef(channelDef)) {\n const {\n format,\n formatType\n } = getFormatMixins(channelDef);\n return formatSignalRef({\n fieldOrDatumDef: channelDef,\n format,\n formatType,\n expr,\n config\n });\n }\n }\n return undefined;\n}\nfunction tooltip(model) {\n let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n encoding,\n markDef,\n config,\n stack\n } = model;\n const channelDef = encoding.tooltip;\n if (isArray(channelDef)) {\n return {\n tooltip: tooltipRefForEncoding({\n tooltip: channelDef\n }, stack, config, opt)\n };\n } else {\n const datum = opt.reactiveGeom ? 'datum.datum' : 'datum';\n return wrapCondition(model, channelDef, 'tooltip', cDef => {\n // use valueRef based on channelDef first\n const tooltipRefFromChannelDef = textRef(cDef, config, datum);\n if (tooltipRefFromChannelDef) {\n return tooltipRefFromChannelDef;\n }\n if (cDef === null) {\n // Allow using encoding.tooltip = null to disable tooltip\n return undefined;\n }\n let markTooltip = getMarkPropOrConfig('tooltip', markDef, config);\n if (markTooltip === true) {\n markTooltip = {\n content: 'encoding'\n };\n }\n if (isString(markTooltip)) {\n return {\n value: markTooltip\n };\n } else if (isObject(markTooltip)) {\n // `tooltip` is `{fields: 'encodings' | 'fields'}`\n if (isSignalRef(markTooltip)) {\n return markTooltip;\n } else if (markTooltip.content === 'encoding') {\n return tooltipRefForEncoding(encoding, stack, config, opt);\n } else {\n return {\n signal: datum\n };\n }\n }\n return undefined;\n });\n }\n}\nfunction tooltipData(encoding, stack, config) {\n let {\n reactiveGeom\n } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formatConfig = {\n ...config,\n ...config.tooltipFormat\n };\n const toSkip = {};\n const expr = reactiveGeom ? 'datum.datum' : 'datum';\n const tuples = [];\n function add(fDef, channel) {\n var _value;\n const mainChannel = getMainRangeChannel(channel);\n const fieldDef = isTypedFieldDef(fDef) ? fDef : {\n ...fDef,\n type: encoding[mainChannel].type // for secondary field def, copy type from main channel\n };\n\n const title = fieldDef.title || defaultTitle(fieldDef, formatConfig);\n const key = array$5(title).join(', ').replaceAll(/\"/g, '\\\\\"');\n let value;\n if (isXorY(channel)) {\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef2 = getFieldDef(encoding[channel2]);\n if (isBinned(fieldDef.bin) && fieldDef2) {\n const startField = vgField(fieldDef, {\n expr\n });\n const endField = vgField(fieldDef2, {\n expr\n });\n const {\n format,\n formatType\n } = getFormatMixins(fieldDef);\n value = binFormatExpression(startField, endField, format, formatType, formatConfig);\n toSkip[channel2] = true;\n }\n }\n if ((isXorY(channel) || channel === THETA || channel === RADIUS) && stack && stack.fieldChannel === channel && stack.offset === 'normalize') {\n const {\n format,\n formatType\n } = getFormatMixins(fieldDef);\n value = formatSignalRef({\n fieldOrDatumDef: fieldDef,\n format,\n formatType,\n expr,\n config: formatConfig,\n normalizeStack: true\n }).signal;\n }\n (_value = value) !== null && _value !== void 0 ? _value : value = textRef(fieldDef, formatConfig, expr).signal;\n tuples.push({\n channel,\n key,\n value\n });\n }\n forEach(encoding, (channelDef, channel) => {\n if (isFieldDef(channelDef)) {\n add(channelDef, channel);\n } else if (hasConditionalFieldDef(channelDef)) {\n add(channelDef.condition, channel);\n }\n });\n const out = {};\n for (const {\n channel,\n key,\n value\n } of tuples) {\n if (!toSkip[channel] && !out[key]) {\n out[key] = value;\n }\n }\n return out;\n}\nfunction tooltipRefForEncoding(encoding, stack, config) {\n let {\n reactiveGeom\n } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const data = tooltipData(encoding, stack, config, {\n reactiveGeom\n });\n const keyValues = entries$1(data).map(_ref39 => {\n let [key, value] = _ref39;\n return \"\\\"\".concat(key, \"\\\": \").concat(value);\n });\n return keyValues.length > 0 ? {\n signal: \"{\".concat(keyValues.join(', '), \"}\")\n } : undefined;\n}\nfunction aria(model) {\n const {\n markDef,\n config\n } = model;\n const enableAria = getMarkPropOrConfig('aria', markDef, config);\n // We can ignore other aria properties if ariaHidden is true.\n if (enableAria === false) {\n // getMarkGroups sets aria to false already so we don't have to set it in the encode block\n return {};\n }\n return {\n ...(enableAria ? {\n aria: enableAria\n } : {}),\n ...ariaRoleDescription(model),\n ...description$1(model)\n };\n}\nfunction ariaRoleDescription(model) {\n const {\n mark,\n markDef,\n config\n } = model;\n if (config.aria === false) {\n return {};\n }\n const ariaRoleDesc = getMarkPropOrConfig('ariaRoleDescription', markDef, config);\n if (ariaRoleDesc != null) {\n return {\n ariaRoleDescription: {\n value: ariaRoleDesc\n }\n };\n }\n return mark in VG_MARK_INDEX ? {} : {\n ariaRoleDescription: {\n value: mark\n }\n };\n}\nfunction description$1(model) {\n const {\n encoding,\n markDef,\n config,\n stack\n } = model;\n const channelDef = encoding.description;\n if (channelDef) {\n return wrapCondition(model, channelDef, 'description', cDef => textRef(cDef, model.config));\n }\n // Use default from mark def or config if defined.\n // Functions in encode usually just return undefined but since we are defining a default below, we need to check the default here.\n const descriptionValue = getMarkPropOrConfig('description', markDef, config);\n if (descriptionValue != null) {\n return {\n description: signalOrValueRef(descriptionValue)\n };\n }\n if (config.aria === false) {\n return {};\n }\n const data = tooltipData(encoding, stack, config);\n if (isEmpty(data)) {\n return undefined;\n }\n return {\n description: {\n signal: entries$1(data).map((_ref40, index) => {\n let [key, value] = _ref40;\n return \"\\\"\".concat(index > 0 ? '; ' : '').concat(key, \": \\\" + (\").concat(value, \")\");\n }).join(' + ')\n }\n };\n}\n\n/**\n * Return encode for non-positional channels with scales. (Text doesn't have scale.)\n */\nfunction nonPosition(channel, model) {\n let opt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n markDef,\n encoding,\n config\n } = model;\n const {\n vgChannel\n } = opt;\n let {\n defaultRef,\n defaultValue\n } = opt;\n if (defaultRef === undefined) {\n var _defaultValue;\n // prettier-ignore\n (_defaultValue = defaultValue) !== null && _defaultValue !== void 0 ? _defaultValue : defaultValue = getMarkPropOrConfig(channel, markDef, config, {\n vgChannel,\n ignoreVgConfig: true\n });\n if (defaultValue !== undefined) {\n defaultRef = signalOrValueRef(defaultValue);\n }\n }\n const channelDef = encoding[channel];\n return wrapCondition(model, channelDef, vgChannel !== null && vgChannel !== void 0 ? vgChannel : channel, cDef => {\n return midPoint({\n channel,\n channelDef: cDef,\n markDef,\n config,\n scaleName: model.scaleName(channel),\n scale: model.getScaleComponent(channel),\n stack: null,\n defaultRef\n });\n });\n}\nfunction color(model) {\n var _opt$filled, _ref41, _getMarkPropOrConfig, _getMarkPropOrConfig2;\n let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n filled: undefined\n };\n const {\n markDef,\n encoding,\n config\n } = model;\n const {\n type: markType\n } = markDef;\n // Allow filled to be overridden (for trail's \"filled\")\n const filled = (_opt$filled = opt.filled) !== null && _opt$filled !== void 0 ? _opt$filled : getMarkPropOrConfig('filled', markDef, config);\n const transparentIfNeeded = contains(['bar', 'point', 'circle', 'square', 'geoshape'], markType) ? 'transparent' : undefined;\n const defaultFill = (_ref41 = (_getMarkPropOrConfig = getMarkPropOrConfig(filled === true ? 'color' : undefined, markDef, config, {\n vgChannel: 'fill'\n })) !== null && _getMarkPropOrConfig !== void 0 ? _getMarkPropOrConfig :\n // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n config.mark[filled === true && 'color']) !== null && _ref41 !== void 0 ? _ref41 :\n // If there is no fill, always fill symbols, bar, geoshape\n // with transparent fills https://github.com/vega/vega-lite/issues/1316\n transparentIfNeeded;\n const defaultStroke = (_getMarkPropOrConfig2 = getMarkPropOrConfig(filled === false ? 'color' : undefined, markDef, config, {\n vgChannel: 'stroke'\n })) !== null && _getMarkPropOrConfig2 !== void 0 ? _getMarkPropOrConfig2 :\n // need to add this manually as getMarkConfig normally drops config.mark[channel] if vgChannel is specified\n config.mark[filled === false && 'color'];\n const colorVgChannel = filled ? 'fill' : 'stroke';\n const fillStrokeMarkDefAndConfig = {\n ...(defaultFill ? {\n fill: signalOrValueRef(defaultFill)\n } : {}),\n ...(defaultStroke ? {\n stroke: signalOrValueRef(defaultStroke)\n } : {})\n };\n if (markDef.color && (filled ? markDef.fill : markDef.stroke)) {\n warn(droppingColor('property', {\n fill: 'fill' in markDef,\n stroke: 'stroke' in markDef\n }));\n }\n return {\n ...fillStrokeMarkDefAndConfig,\n ...nonPosition('color', model, {\n vgChannel: colorVgChannel,\n defaultValue: filled ? defaultFill : defaultStroke\n }),\n ...nonPosition('fill', model, {\n // if there is encoding.fill, include default fill just in case we have conditional-only fill encoding\n defaultValue: encoding.fill ? defaultFill : undefined\n }),\n ...nonPosition('stroke', model, {\n // if there is encoding.stroke, include default fill just in case we have conditional-only stroke encoding\n defaultValue: encoding.stroke ? defaultStroke : undefined\n })\n };\n}\nfunction zindex(model) {\n const {\n encoding,\n mark\n } = model;\n const order = encoding.order;\n if (!isPathMark(mark) && isValueDef(order)) {\n return wrapCondition(model, order, 'zindex', cd => signalOrValueRef(cd.value));\n }\n return {};\n}\nfunction positionOffset(_ref42) {\n let {\n channel: baseChannel,\n markDef,\n encoding = {},\n model,\n bandPosition\n } = _ref42;\n const channel = \"\".concat(baseChannel, \"Offset\"); // Need to cast as the type can't be inferred automatically\n const defaultValue = markDef[channel];\n const channelDef = encoding[channel];\n if ((channel === 'xOffset' || channel === 'yOffset') && channelDef) {\n const ref = midPoint({\n channel: channel,\n channelDef,\n markDef,\n config: model === null || model === void 0 ? void 0 : model.config,\n scaleName: model.scaleName(channel),\n scale: model.getScaleComponent(channel),\n stack: null,\n defaultRef: signalOrValueRef(defaultValue),\n bandPosition\n });\n return {\n offsetType: 'encoding',\n offset: ref\n };\n }\n const markDefOffsetValue = markDef[channel];\n if (markDefOffsetValue) {\n return {\n offsetType: 'visual',\n offset: markDefOffsetValue\n };\n }\n return {};\n}\n\n/**\n * Return encode for point (non-band) position channels.\n */\nfunction pointPosition(channel, model, _ref43) {\n let {\n defaultPos,\n vgChannel\n } = _ref43;\n const {\n encoding,\n markDef,\n config,\n stack\n } = model;\n const channelDef = encoding[channel];\n const channel2Def = encoding[getSecondaryRangeChannel(channel)];\n const scaleName = model.scaleName(channel);\n const scale = model.getScaleComponent(channel);\n const {\n offset,\n offsetType\n } = positionOffset({\n channel,\n markDef,\n encoding,\n model,\n bandPosition: 0.5\n });\n // Get default position or position from mark def\n const defaultRef = pointPositionDefaultRef({\n model,\n defaultPos,\n channel,\n scaleName,\n scale\n });\n const valueRef = !channelDef && isXorY(channel) && (encoding.latitude || encoding.longitude) ?\n // use geopoint output if there are lat/long and there is no point position overriding lat/long.\n {\n field: model.getName(channel)\n } : positionRef({\n channel,\n channelDef,\n channel2Def,\n markDef,\n config,\n scaleName,\n scale,\n stack,\n offset,\n defaultRef,\n bandPosition: offsetType === 'encoding' ? 0 : undefined\n });\n return valueRef ? {\n [vgChannel || channel]: valueRef\n } : undefined;\n}\n// TODO: we need to find a way to refactor these so that scaleName is a part of scale\n// but that's complicated. For now, this is a huge step moving forward.\n/**\n * @return Vega ValueRef for normal x- or y-position without projection\n */\nfunction positionRef(params) {\n const {\n channel,\n channelDef,\n scaleName,\n stack,\n offset,\n markDef\n } = params;\n // This isn't a part of midPoint because we use midPoint for non-position too\n if (isFieldOrDatumDef(channelDef) && stack && channel === stack.fieldChannel) {\n if (isFieldDef(channelDef)) {\n let bandPosition = channelDef.bandPosition;\n if (bandPosition === undefined && markDef.type === 'text' && (channel === 'radius' || channel === 'theta')) {\n // theta and radius of text mark should use bandPosition = 0.5 by default\n // so that labels for arc marks are centered automatically\n bandPosition = 0.5;\n }\n if (bandPosition !== undefined) {\n return interpolatedSignalRef({\n scaleName,\n fieldOrDatumDef: channelDef,\n startSuffix: 'start',\n bandPosition,\n offset\n });\n }\n }\n // x or y use stack_end so that stacked line's point mark use stack_end too.\n return valueRefForFieldOrDatumDef(channelDef, scaleName, {\n suffix: 'end'\n }, {\n offset\n });\n }\n return midPointRefWithPositionInvalidTest(params);\n}\nfunction pointPositionDefaultRef(_ref44) {\n let {\n model,\n defaultPos,\n channel,\n scaleName,\n scale\n } = _ref44;\n const {\n markDef,\n config\n } = model;\n return () => {\n const mainChannel = getMainRangeChannel(channel);\n const vgChannel = getVgPositionChannel(channel);\n const definedValueOrConfig = getMarkPropOrConfig(channel, markDef, config, {\n vgChannel\n });\n if (definedValueOrConfig !== undefined) {\n return widthHeightValueOrSignalRef(channel, definedValueOrConfig);\n }\n switch (defaultPos) {\n case 'zeroOrMin':\n case 'zeroOrMax':\n if (scaleName) {\n const scaleType = scale.get('type');\n if (contains([ScaleType.LOG, ScaleType.TIME, ScaleType.UTC], scaleType)) ;else {\n if (scale.domainDefinitelyIncludesZero()) {\n return {\n scale: scaleName,\n value: 0\n };\n }\n }\n }\n if (defaultPos === 'zeroOrMin') {\n return mainChannel === 'y' ? {\n field: {\n group: 'height'\n }\n } : {\n value: 0\n };\n } else {\n // zeroOrMax\n switch (mainChannel) {\n case 'radius':\n // max of radius is min(width, height) / 2\n return {\n signal: \"min(\".concat(model.width.signal, \",\").concat(model.height.signal, \")/2\")\n };\n case 'theta':\n return {\n signal: '2*PI'\n };\n case 'x':\n return {\n field: {\n group: 'width'\n }\n };\n case 'y':\n return {\n value: 0\n };\n }\n }\n break;\n case 'mid':\n {\n const sizeRef = model[getSizeChannel(channel)];\n return {\n ...sizeRef,\n mult: 0.5\n };\n }\n }\n // defaultPos === null\n return undefined;\n };\n}\nconst ALIGNED_X_CHANNEL = {\n left: 'x',\n center: 'xc',\n right: 'x2'\n};\nconst BASELINED_Y_CHANNEL = {\n top: 'y',\n middle: 'yc',\n bottom: 'y2'\n};\nfunction vgAlignedPositionChannel(channel, markDef, config) {\n let defaultAlign = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'middle';\n if (channel === 'radius' || channel === 'theta') {\n return getVgPositionChannel(channel);\n }\n const alignChannel = channel === 'x' ? 'align' : 'baseline';\n const align = getMarkPropOrConfig(alignChannel, markDef, config);\n let alignExcludingSignal;\n if (isSignalRef(align)) {\n warn(rangeMarkAlignmentCannotBeExpression(alignChannel));\n alignExcludingSignal = undefined;\n } else {\n alignExcludingSignal = align;\n }\n if (channel === 'x') {\n return ALIGNED_X_CHANNEL[alignExcludingSignal || (defaultAlign === 'top' ? 'left' : 'center')];\n } else {\n return BASELINED_Y_CHANNEL[alignExcludingSignal || defaultAlign];\n }\n}\n\n/**\n * Utility for area/rule position, which can be either point or range.\n * (One of the axes should be point and the other should be range.)\n */\nfunction pointOrRangePosition(channel, model, _ref45) {\n let {\n defaultPos,\n defaultPos2,\n range\n } = _ref45;\n if (range) {\n return rangePosition(channel, model, {\n defaultPos,\n defaultPos2\n });\n }\n return pointPosition(channel, model, {\n defaultPos\n });\n}\nfunction rangePosition(channel, model, _ref46) {\n let {\n defaultPos,\n defaultPos2\n } = _ref46;\n const {\n markDef,\n config\n } = model;\n const channel2 = getSecondaryRangeChannel(channel);\n const sizeChannel = getSizeChannel(channel);\n const pos2Mixins = pointPosition2OrSize(model, defaultPos2, channel2);\n const vgChannel = pos2Mixins[sizeChannel] ?\n // If there is width/height, we need to position the marks based on the alignment.\n vgAlignedPositionChannel(channel, markDef, config) :\n // Otherwise, make sure to apply to the right Vg Channel (for arc mark)\n getVgPositionChannel(channel);\n return {\n ...pointPosition(channel, model, {\n defaultPos,\n vgChannel\n }),\n ...pos2Mixins\n };\n}\n/**\n * Return encode for x2, y2.\n * If channel is not specified, return one channel based on orientation.\n */\nfunction pointPosition2OrSize(model, defaultPos, channel) {\n const {\n encoding,\n mark,\n markDef,\n stack,\n config\n } = model;\n const baseChannel = getMainRangeChannel(channel);\n const sizeChannel = getSizeChannel(channel);\n const vgChannel = getVgPositionChannel(channel);\n const channelDef = encoding[baseChannel];\n const scaleName = model.scaleName(baseChannel);\n const scale = model.getScaleComponent(baseChannel);\n const {\n offset\n } = channel in encoding || channel in markDef ? positionOffset({\n channel,\n markDef,\n encoding,\n model\n }) : positionOffset({\n channel: baseChannel,\n markDef,\n encoding,\n model\n });\n if (!channelDef && (channel === 'x2' || channel === 'y2') && (encoding.latitude || encoding.longitude)) {\n const vgSizeChannel = getSizeChannel(channel);\n const size = model.markDef[vgSizeChannel];\n if (size != null) {\n return {\n [vgSizeChannel]: {\n value: size\n }\n };\n } else {\n return {\n [vgChannel]: {\n field: model.getName(channel)\n }\n };\n }\n }\n const valueRef = position2Ref({\n channel,\n channelDef,\n channel2Def: encoding[channel],\n markDef,\n config,\n scaleName,\n scale,\n stack,\n offset,\n defaultRef: undefined\n });\n if (valueRef !== undefined) {\n return {\n [vgChannel]: valueRef\n };\n }\n // TODO: check width/height encoding here once we add them\n // no x2/y2 encoding, then try to read x2/y2 or width/height based on precedence:\n // markDef > config.style > mark-specific config (config[mark]) > general mark config (config.mark)\n return position2orSize(channel, markDef) || position2orSize(channel, {\n [channel]: getMarkStyleConfig(channel, markDef, config.style),\n [sizeChannel]: getMarkStyleConfig(sizeChannel, markDef, config.style)\n }) || position2orSize(channel, config[mark]) || position2orSize(channel, config.mark) || {\n [vgChannel]: pointPositionDefaultRef({\n model,\n defaultPos,\n channel,\n scaleName,\n scale\n })()\n };\n}\nfunction position2Ref(_ref47) {\n let {\n channel,\n channelDef,\n channel2Def,\n markDef,\n config,\n scaleName,\n scale,\n stack,\n offset,\n defaultRef\n } = _ref47;\n if (isFieldOrDatumDef(channelDef) && stack &&\n // If fieldChannel is X and channel is X2 (or Y and Y2)\n channel.charAt(0) === stack.fieldChannel.charAt(0)) {\n return valueRefForFieldOrDatumDef(channelDef, scaleName, {\n suffix: 'start'\n }, {\n offset\n });\n }\n return midPointRefWithPositionInvalidTest({\n channel,\n channelDef: channel2Def,\n scaleName,\n scale,\n stack,\n markDef,\n config,\n offset,\n defaultRef\n });\n}\nfunction position2orSize(channel, markDef) {\n const sizeChannel = getSizeChannel(channel);\n const vgChannel = getVgPositionChannel(channel);\n if (markDef[vgChannel] !== undefined) {\n return {\n [vgChannel]: widthHeightValueOrSignalRef(channel, markDef[vgChannel])\n };\n } else if (markDef[channel] !== undefined) {\n return {\n [vgChannel]: widthHeightValueOrSignalRef(channel, markDef[channel])\n };\n } else if (markDef[sizeChannel]) {\n const dimensionSize = markDef[sizeChannel];\n if (isRelativeBandSize(dimensionSize)) {\n warn(relativeBandSizeNotSupported(sizeChannel));\n } else {\n return {\n [sizeChannel]: widthHeightValueOrSignalRef(channel, dimensionSize)\n };\n }\n }\n return undefined;\n}\nfunction rectPosition(model, channel) {\n var _ref48, _encoding$sizeChannel;\n const {\n config,\n encoding,\n markDef\n } = model;\n const mark = markDef.type;\n const channel2 = getSecondaryRangeChannel(channel);\n const sizeChannel = getSizeChannel(channel);\n const channelDef = encoding[channel];\n const channelDef2 = encoding[channel2];\n const scale = model.getScaleComponent(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n const orient = markDef.orient;\n const hasSizeDef = (_ref48 = (_encoding$sizeChannel = encoding[sizeChannel]) !== null && _encoding$sizeChannel !== void 0 ? _encoding$sizeChannel : encoding.size) !== null && _ref48 !== void 0 ? _ref48 : getMarkPropOrConfig('size', markDef, config, {\n vgChannel: sizeChannel\n });\n const offsetScaleChannel = getOffsetChannel(channel);\n const isBarBand = mark === 'bar' && (channel === 'x' ? orient === 'vertical' : orient === 'horizontal');\n // x, x2, and width -- we must specify two of these in all conditions\n if (isFieldDef(channelDef) && (isBinning(channelDef.bin) || isBinned(channelDef.bin) || channelDef.timeUnit && !channelDef2) && !(hasSizeDef && !isRelativeBandSize(hasSizeDef)) && !encoding[offsetScaleChannel] && !hasDiscreteDomain(scaleType)) {\n return rectBinPosition({\n fieldDef: channelDef,\n fieldDef2: channelDef2,\n channel,\n model\n });\n } else if ((isFieldOrDatumDef(channelDef) && hasDiscreteDomain(scaleType) || isBarBand) && !channelDef2) {\n return positionAndSize(channelDef, channel, model);\n } else {\n return rangePosition(channel, model, {\n defaultPos: 'zeroOrMax',\n defaultPos2: 'zeroOrMin'\n });\n }\n}\nfunction defaultSizeRef(sizeChannel, scaleName, scale, config, bandSize, hasFieldDef, mark) {\n if (isRelativeBandSize(bandSize)) {\n if (scale) {\n const scaleType = scale.get('type');\n if (scaleType === 'band') {\n let bandWidth = \"bandwidth('\".concat(scaleName, \"')\");\n if (bandSize.band !== 1) {\n bandWidth = \"\".concat(bandSize.band, \" * \").concat(bandWidth);\n }\n const minBandSize = getMarkConfig('minBandSize', {\n type: mark\n }, config);\n return {\n signal: minBandSize ? \"max(\".concat(signalOrStringValue(minBandSize), \", \").concat(bandWidth, \")\") : bandWidth\n };\n } else if (bandSize.band !== 1) {\n warn(cannotUseRelativeBandSizeWithNonBandScale(scaleType));\n bandSize = undefined;\n }\n } else {\n return {\n mult: bandSize.band,\n field: {\n group: sizeChannel\n }\n };\n }\n } else if (isSignalRef(bandSize)) {\n return bandSize;\n } else if (bandSize) {\n return {\n value: bandSize\n };\n }\n // no valid band size\n if (scale) {\n const scaleRange = scale.get('range');\n if (isVgRangeStep(scaleRange) && isNumber$1(scaleRange.step)) {\n return {\n value: scaleRange.step - 2\n };\n }\n }\n if (!hasFieldDef) {\n const {\n bandPaddingInner,\n barBandPaddingInner,\n rectBandPaddingInner\n } = config.scale;\n const padding = getFirstDefined(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner); // this part is like paddingInner in scale.ts\n if (isSignalRef(padding)) {\n return {\n signal: \"(1 - (\".concat(padding.signal, \")) * \").concat(sizeChannel)\n };\n } else if (isNumber$1(padding)) {\n return {\n signal: \"\".concat(1 - padding, \" * \").concat(sizeChannel)\n };\n }\n }\n const defaultStep = getViewConfigDiscreteStep(config.view, sizeChannel);\n return {\n value: defaultStep - 2\n };\n}\n/**\n * Output position encoding and its size encoding for continuous, point, and band scales.\n */\nfunction positionAndSize(fieldDef, channel, model) {\n const {\n markDef,\n encoding,\n config,\n stack\n } = model;\n const orient = markDef.orient;\n const scaleName = model.scaleName(channel);\n const scale = model.getScaleComponent(channel);\n const vgSizeChannel = getSizeChannel(channel);\n const channel2 = getSecondaryRangeChannel(channel);\n const offsetScaleChannel = getOffsetChannel(channel);\n const offsetScaleName = model.scaleName(offsetScaleChannel);\n const offsetScale = model.getScaleComponent(getOffsetScaleChannel(channel));\n // use \"size\" channel for bars, if there is orient and the channel matches the right orientation\n const useVlSizeChannel = orient === 'horizontal' && channel === 'y' || orient === 'vertical' && channel === 'x';\n // Use size encoding / mark property / config if it exists\n let sizeMixins;\n if (encoding.size || markDef.size) {\n if (useVlSizeChannel) {\n sizeMixins = nonPosition('size', model, {\n vgChannel: vgSizeChannel,\n defaultRef: signalOrValueRef(markDef.size)\n });\n } else {\n warn(cannotApplySizeToNonOrientedMark(markDef.type));\n }\n }\n const hasSizeFromMarkOrEncoding = !!sizeMixins;\n // Otherwise, apply default value\n const bandSize = getBandSize({\n channel,\n fieldDef,\n markDef,\n config,\n scaleType: scale === null || scale === void 0 ? void 0 : scale.get('type'),\n useVlSizeChannel\n });\n sizeMixins = sizeMixins || {\n [vgSizeChannel]: defaultSizeRef(vgSizeChannel, offsetScaleName || scaleName, offsetScale || scale, config, bandSize, !!fieldDef, markDef.type)\n };\n /*\n Band scales with size value and all point scales, use xc/yc + band=0.5\n Otherwise (band scales that has size based on a band ref), use x/y with position band = (1 - size_band) / 2.\n In this case, size_band is the band specified in the x/y-encoding.\n By default band is 1, so `(1 - band) / 2` = 0.\n If band is 0.6, the the x/y position in such case should be `(1 - band) / 2` = 0.2\n */\n const defaultBandAlign = (scale === null || scale === void 0 ? void 0 : scale.get('type')) === 'band' && isRelativeBandSize(bandSize) && !hasSizeFromMarkOrEncoding ? 'top' : 'middle';\n const vgChannel = vgAlignedPositionChannel(channel, markDef, config, defaultBandAlign);\n const center = vgChannel === 'xc' || vgChannel === 'yc';\n const {\n offset,\n offsetType\n } = positionOffset({\n channel,\n markDef,\n encoding,\n model,\n bandPosition: center ? 0.5 : 0\n });\n const posRef = midPointRefWithPositionInvalidTest({\n channel,\n channelDef: fieldDef,\n markDef,\n config,\n scaleName,\n scale,\n stack,\n offset,\n defaultRef: pointPositionDefaultRef({\n model,\n defaultPos: 'mid',\n channel,\n scaleName,\n scale\n }),\n bandPosition: center ? offsetType === 'encoding' ? 0 : 0.5 : isSignalRef(bandSize) ? {\n signal: \"(1-\".concat(bandSize, \")/2\")\n } : isRelativeBandSize(bandSize) ? (1 - bandSize.band) / 2 : 0\n });\n if (vgSizeChannel) {\n return {\n [vgChannel]: posRef,\n ...sizeMixins\n };\n } else {\n // otherwise, we must simulate size by setting position2 = position + size\n // (for theta/radius since Vega doesn't have thetaWidth/radiusWidth)\n const vgChannel2 = getVgPositionChannel(channel2);\n const sizeRef = sizeMixins[vgSizeChannel];\n const sizeOffset = offset ? {\n ...sizeRef,\n offset\n } : sizeRef;\n return {\n [vgChannel]: posRef,\n // posRef might be an array that wraps position invalid test\n [vgChannel2]: isArray(posRef) ? [posRef[0], {\n ...posRef[1],\n offset: sizeOffset\n }] : {\n ...posRef,\n offset: sizeOffset\n }\n };\n }\n}\nfunction getBinSpacing(channel, spacing, reverse, translate, offset, minBandSize, bandSizeExpr) {\n if (isPolarPositionChannel(channel)) {\n return 0;\n }\n const isEnd = channel === 'x' || channel === 'y2';\n const spacingOffset = isEnd ? -spacing / 2 : spacing / 2;\n if (isSignalRef(reverse) || isSignalRef(offset) || isSignalRef(translate) || minBandSize) {\n const reverseExpr = signalOrStringValue(reverse);\n const offsetExpr = signalOrStringValue(offset);\n const translateExpr = signalOrStringValue(translate);\n const minBandSizeExpr = signalOrStringValue(minBandSize);\n const sign = isEnd ? '' : '-';\n const spacingAndSizeOffset = minBandSize ? \"(\".concat(bandSizeExpr, \" < \").concat(minBandSizeExpr, \" ? \").concat(sign, \"0.5 * (\").concat(minBandSizeExpr, \" - (\").concat(bandSizeExpr, \")) : \").concat(spacingOffset, \")\") : spacingOffset;\n const t = translateExpr ? \"\".concat(translateExpr, \" + \") : '';\n const r = reverseExpr ? \"(\".concat(reverseExpr, \" ? -1 : 1) * \") : '';\n const o = offsetExpr ? \"(\".concat(offsetExpr, \" + \").concat(spacingAndSizeOffset, \")\") : spacingAndSizeOffset;\n return {\n signal: t + r + o\n };\n } else {\n offset = offset || 0;\n return translate + (reverse ? -offset - spacingOffset : +offset + spacingOffset);\n }\n}\nfunction rectBinPosition(_ref49) {\n var _model$component$axes, _axis$get, _getMarkPropOrConfig3;\n let {\n fieldDef,\n fieldDef2,\n channel,\n model\n } = _ref49;\n const {\n config,\n markDef,\n encoding\n } = model;\n const scale = model.getScaleComponent(channel);\n const scaleName = model.scaleName(channel);\n const scaleType = scale ? scale.get('type') : undefined;\n const reverse = scale.get('reverse');\n const bandSize = getBandSize({\n channel,\n fieldDef,\n markDef,\n config,\n scaleType\n });\n const axis = (_model$component$axes = model.component.axes[channel]) === null || _model$component$axes === void 0 ? void 0 : _model$component$axes[0];\n const axisTranslate = (_axis$get = axis === null || axis === void 0 ? void 0 : axis.get('translate')) !== null && _axis$get !== void 0 ? _axis$get : 0.5; // vega default is 0.5\n const spacing = isXorY(channel) ? (_getMarkPropOrConfig3 = getMarkPropOrConfig('binSpacing', markDef, config)) !== null && _getMarkPropOrConfig3 !== void 0 ? _getMarkPropOrConfig3 : 0 : 0;\n const channel2 = getSecondaryRangeChannel(channel);\n const vgChannel = getVgPositionChannel(channel);\n const vgChannel2 = getVgPositionChannel(channel2);\n const minBandSize = getMarkConfig('minBandSize', markDef, config);\n const {\n offset\n } = positionOffset({\n channel,\n markDef,\n encoding,\n model,\n bandPosition: 0\n });\n const {\n offset: offset2\n } = positionOffset({\n channel: channel2,\n markDef,\n encoding,\n model,\n bandPosition: 0\n });\n const bandSizeExpr = binSizeExpr({\n fieldDef,\n scaleName\n });\n const binSpacingOffset = getBinSpacing(channel, spacing, reverse, axisTranslate, offset, minBandSize, bandSizeExpr);\n const binSpacingOffset2 = getBinSpacing(channel2, spacing, reverse, axisTranslate, offset2 !== null && offset2 !== void 0 ? offset2 : offset, minBandSize, bandSizeExpr);\n const bandPosition = isSignalRef(bandSize) ? {\n signal: \"(1-\".concat(bandSize.signal, \")/2\")\n } : isRelativeBandSize(bandSize) ? (1 - bandSize.band) / 2 : 0.5;\n if (isBinning(fieldDef.bin) || fieldDef.timeUnit) {\n return {\n [vgChannel2]: rectBinRef({\n fieldDef,\n scaleName,\n bandPosition,\n offset: binSpacingOffset2\n }),\n [vgChannel]: rectBinRef({\n fieldDef,\n scaleName,\n bandPosition: isSignalRef(bandPosition) ? {\n signal: \"1-\".concat(bandPosition.signal)\n } : 1 - bandPosition,\n offset: binSpacingOffset\n })\n };\n } else if (isBinned(fieldDef.bin)) {\n const startRef = valueRefForFieldOrDatumDef(fieldDef, scaleName, {}, {\n offset: binSpacingOffset2\n });\n if (isFieldDef(fieldDef2)) {\n return {\n [vgChannel2]: startRef,\n [vgChannel]: valueRefForFieldOrDatumDef(fieldDef2, scaleName, {}, {\n offset: binSpacingOffset\n })\n };\n } else if (isBinParams(fieldDef.bin) && fieldDef.bin.step) {\n return {\n [vgChannel2]: startRef,\n [vgChannel]: {\n signal: \"scale(\\\"\".concat(scaleName, \"\\\", \").concat(vgField(fieldDef, {\n expr: 'datum'\n }), \" + \").concat(fieldDef.bin.step, \")\"),\n offset: binSpacingOffset\n }\n };\n }\n }\n warn(channelRequiredForBinned(channel2));\n return undefined;\n}\n/**\n * Value Ref for binned fields\n */\nfunction rectBinRef(_ref50) {\n let {\n fieldDef,\n scaleName,\n bandPosition,\n offset\n } = _ref50;\n return interpolatedSignalRef({\n scaleName,\n fieldOrDatumDef: fieldDef,\n bandPosition,\n offset\n });\n}\nconst ALWAYS_IGNORE = new Set(['aria', 'width', 'height']);\nfunction baseEncodeEntry(model, ignore) {\n const {\n fill = undefined,\n stroke = undefined\n } = ignore.color === 'include' ? color(model) : {};\n return {\n ...markDefProperties(model.markDef, ignore),\n ...wrapAllFieldsInvalid(model, 'fill', fill),\n ...wrapAllFieldsInvalid(model, 'stroke', stroke),\n ...nonPosition('opacity', model),\n ...nonPosition('fillOpacity', model),\n ...nonPosition('strokeOpacity', model),\n ...nonPosition('strokeWidth', model),\n ...nonPosition('strokeDash', model),\n ...zindex(model),\n ...tooltip(model),\n ...text$1(model, 'href'),\n ...aria(model)\n };\n}\n// TODO: mark VgValueRef[] as readonly after https://github.com/vega/vega/pull/1987\nfunction wrapAllFieldsInvalid(model, channel, valueRef) {\n const {\n config,\n mark,\n markDef\n } = model;\n const invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid === 'hide' && valueRef && !isPathMark(mark)) {\n // For non-path marks, we have to exclude invalid values (null and NaN) for scales with continuous domains.\n // For path marks, we will use \"defined\" property and skip these values instead.\n const test = allFieldsInvalidPredicate$1(model, {\n invalid: true,\n channels: SCALE_CHANNELS\n });\n if (test) {\n return {\n [channel]: [\n // prepend the invalid case\n // TODO: support custom value\n {\n test,\n value: null\n }, ...array$5(valueRef)]\n };\n }\n }\n return valueRef ? {\n [channel]: valueRef\n } : {};\n}\nfunction markDefProperties(mark, ignore) {\n return VG_MARK_CONFIGS.reduce((m, prop) => {\n if (!ALWAYS_IGNORE.has(prop) && mark[prop] !== undefined && ignore[prop] !== 'ignore') {\n m[prop] = signalOrValueRef(mark[prop]);\n }\n return m;\n }, {});\n}\nfunction allFieldsInvalidPredicate$1(model, _ref51) {\n let {\n invalid = false,\n channels\n } = _ref51;\n const filterIndex = channels.reduce((aggregator, channel) => {\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n const field = model.vgField(channel, {\n expr: 'datum'\n });\n // While discrete domain scales can handle invalid values, continuous scales can't.\n if (field && hasContinuousDomain(scaleType)) {\n aggregator[field] = true;\n }\n }\n return aggregator;\n }, {});\n const fields = keys(filterIndex);\n if (fields.length > 0) {\n const op = invalid ? '||' : '&&';\n return fields.map(field => fieldInvalidPredicate(field, invalid)).join(\" \".concat(op, \" \"));\n }\n return undefined;\n}\nfunction defined(model) {\n const {\n config,\n markDef\n } = model;\n const invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid) {\n const signal = allFieldsInvalidPredicate(model, {\n channels: POSITION_SCALE_CHANNELS\n });\n if (signal) {\n return {\n defined: {\n signal\n }\n };\n }\n }\n return {};\n}\nfunction allFieldsInvalidPredicate(model, _ref52) {\n let {\n invalid = false,\n channels\n } = _ref52;\n const filterIndex = channels.reduce((aggregator, channel) => {\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n var _model$stack;\n const scaleType = scaleComponent.get('type');\n const field = model.vgField(channel, {\n expr: 'datum',\n binSuffix: (_model$stack = model.stack) !== null && _model$stack !== void 0 && _model$stack.impute ? 'mid' : undefined\n });\n // While discrete domain scales can handle invalid values, continuous scales can't.\n if (field && hasContinuousDomain(scaleType)) {\n aggregator[field] = true;\n }\n }\n return aggregator;\n }, {});\n const fields = keys(filterIndex);\n if (fields.length > 0) {\n const op = invalid ? '||' : '&&';\n return fields.map(field => fieldInvalidPredicate(field, invalid)).join(\" \".concat(op, \" \"));\n }\n return undefined;\n}\nfunction valueIfDefined(prop, value) {\n if (value !== undefined) {\n return {\n [prop]: signalOrValueRef(value)\n };\n }\n return undefined;\n}\nconst VORONOI = 'voronoi';\nconst nearest = {\n defined: selCmpt => {\n return selCmpt.type === 'point' && selCmpt.nearest;\n },\n parse: (model, selCmpt) => {\n // Scope selection events to the voronoi mark to prevent capturing\n // events that occur on the group mark (https://github.com/vega/vega/issues/2112).\n if (selCmpt.events) {\n for (const s of selCmpt.events) {\n s.markname = model.getName(VORONOI);\n }\n }\n },\n marks: (model, selCmpt, marks) => {\n const {\n x,\n y\n } = selCmpt.project.hasChannel;\n const markType = model.mark;\n if (isPathMark(markType)) {\n warn(nearestNotSupportForContinuous(markType));\n return marks;\n }\n const cellDef = {\n name: model.getName(VORONOI),\n type: 'path',\n interactive: true,\n from: {\n data: model.getName('marks')\n },\n encode: {\n update: {\n fill: {\n value: 'transparent'\n },\n strokeWidth: {\n value: 0.35\n },\n stroke: {\n value: 'transparent'\n },\n isVoronoi: {\n value: true\n },\n ...tooltip(model, {\n reactiveGeom: true\n })\n }\n },\n transform: [{\n type: 'voronoi',\n x: {\n expr: x || !y ? 'datum.datum.x || 0' : '0'\n },\n y: {\n expr: y || !x ? 'datum.datum.y || 0' : '0'\n },\n size: [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')]\n }]\n };\n let index = 0;\n let exists = false;\n marks.forEach((mark, i) => {\n var _mark$name;\n const name = (_mark$name = mark.name) !== null && _mark$name !== void 0 ? _mark$name : '';\n if (name === model.component.mark[0].name) {\n index = i;\n } else if (name.indexOf(VORONOI) >= 0) {\n exists = true;\n }\n });\n if (!exists) {\n marks.splice(index + 1, 0, cellDef);\n }\n return marks;\n }\n};\nconst inputBindings = {\n defined: selCmpt => {\n return selCmpt.type === 'point' && selCmpt.resolve === 'global' && selCmpt.bind && selCmpt.bind !== 'scales' && !isLegendBinding(selCmpt.bind);\n },\n parse: (model, selCmpt, selDef) => disableDirectManipulation(selCmpt, selDef),\n topLevelSignals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const proj = selCmpt.project;\n const bind = selCmpt.bind;\n const init = selCmpt.init && selCmpt.init[0]; // Can only exist on single selections (one initial value).\n const datum = nearest.defined(selCmpt) ? '(item().isVoronoi ? datum.datum : datum)' : 'datum';\n proj.items.forEach((p, i) => {\n const sgname = varName(\"\".concat(name, \"_\").concat(p.field));\n const hasSignal = signals.filter(s => s.name === sgname);\n if (!hasSignal.length) {\n var _ref53, _bind$p$field;\n signals.unshift({\n name: sgname,\n ...(init ? {\n init: assembleInit(init[i])\n } : {\n value: null\n }),\n on: selCmpt.events ? [{\n events: selCmpt.events,\n update: \"datum && item().mark.marktype !== 'group' ? \".concat(datum, \"[\").concat($(p.field), \"] : null\")\n }] : [],\n bind: (_ref53 = (_bind$p$field = bind[p.field]) !== null && _bind$p$field !== void 0 ? _bind$p$field : bind[p.channel]) !== null && _ref53 !== void 0 ? _ref53 : bind\n });\n }\n });\n return signals;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const proj = selCmpt.project;\n const signal = signals.filter(s => s.name === name + TUPLE)[0];\n const fields = name + TUPLE_FIELDS;\n const values = proj.items.map(p => varName(\"\".concat(name, \"_\").concat(p.field)));\n const valid = values.map(v => \"\".concat(v, \" !== null\")).join(' && ');\n if (values.length) {\n signal.update = \"\".concat(valid, \" ? {fields: \").concat(fields, \", values: [\").concat(values.join(', '), \"]} : null\");\n }\n delete signal.value;\n delete signal.on;\n return signals;\n }\n};\nconst TOGGLE = '_toggle';\nconst toggle = {\n defined: selCmpt => {\n return selCmpt.type === 'point' && !!selCmpt.toggle;\n },\n signals: (model, selCmpt, signals) => {\n return signals.concat({\n name: selCmpt.name + TOGGLE,\n value: false,\n on: [{\n events: selCmpt.events,\n update: selCmpt.toggle\n }]\n });\n },\n modifyExpr: (model, selCmpt) => {\n const tpl = selCmpt.name + TUPLE;\n const signal = selCmpt.name + TOGGLE;\n return \"\".concat(signal, \" ? null : \").concat(tpl, \", \") + (selCmpt.resolve === 'global' ? \"\".concat(signal, \" ? null : true, \") : \"\".concat(signal, \" ? null : {unit: \").concat(unitName(model), \"}, \")) + \"\".concat(signal, \" ? \").concat(tpl, \" : null\");\n }\n};\nconst clear = {\n defined: selCmpt => {\n return selCmpt.clear !== undefined && selCmpt.clear !== false;\n },\n parse: (model, selCmpt) => {\n if (selCmpt.clear) {\n selCmpt.clear = isString(selCmpt.clear) ? eventSelector(selCmpt.clear, 'view') : selCmpt.clear;\n }\n },\n topLevelSignals: (model, selCmpt, signals) => {\n if (inputBindings.defined(selCmpt)) {\n for (const proj of selCmpt.project.items) {\n const idx = signals.findIndex(n => n.name === varName(\"\".concat(selCmpt.name, \"_\").concat(proj.field)));\n if (idx !== -1) {\n signals[idx].on.push({\n events: selCmpt.clear,\n update: 'null'\n });\n }\n }\n }\n return signals;\n },\n signals: (model, selCmpt, signals) => {\n function addClear(idx, update) {\n if (idx !== -1 && signals[idx].on) {\n signals[idx].on.push({\n events: selCmpt.clear,\n update\n });\n }\n }\n // Be as minimalist as possible when adding clear triggers to minimize dataflow execution.\n if (selCmpt.type === 'interval') {\n for (const proj of selCmpt.project.items) {\n const vIdx = signals.findIndex(n => n.name === proj.signals.visual);\n addClear(vIdx, '[0, 0]');\n if (vIdx === -1) {\n const dIdx = signals.findIndex(n => n.name === proj.signals.data);\n addClear(dIdx, 'null');\n }\n }\n } else {\n let tIdx = signals.findIndex(n => n.name === selCmpt.name + TUPLE);\n addClear(tIdx, 'null');\n if (toggle.defined(selCmpt)) {\n tIdx = signals.findIndex(n => n.name === selCmpt.name + TOGGLE);\n addClear(tIdx, 'false');\n }\n }\n return signals;\n }\n};\nconst legendBindings = {\n defined: selCmpt => {\n const spec = selCmpt.resolve === 'global' && selCmpt.bind && isLegendBinding(selCmpt.bind);\n const projLen = selCmpt.project.items.length === 1 && selCmpt.project.items[0].field !== SELECTION_ID;\n if (spec && !projLen) {\n warn(LEGEND_BINDINGS_MUST_HAVE_PROJECTION);\n }\n return spec && projLen;\n },\n parse: (model, selCmpt, selDef) => {\n // Allow legend items to be toggleable by default even though direct manipulation is disabled.\n const selDef_ = duplicate(selDef);\n selDef_.select = isString(selDef_.select) ? {\n type: selDef_.select,\n toggle: selCmpt.toggle\n } : {\n ...selDef_.select,\n toggle: selCmpt.toggle\n };\n disableDirectManipulation(selCmpt, selDef_);\n if (isObject(selDef.select) && (selDef.select.on || selDef.select.clear)) {\n const legendFilter = 'event.item && indexof(event.item.mark.role, \"legend\") < 0';\n for (const evt of selCmpt.events) {\n var _evt$filter;\n evt.filter = array$5((_evt$filter = evt.filter) !== null && _evt$filter !== void 0 ? _evt$filter : []);\n if (!evt.filter.includes(legendFilter)) {\n evt.filter.push(legendFilter);\n }\n }\n }\n const evt = isLegendStreamBinding(selCmpt.bind) ? selCmpt.bind.legend : 'click';\n const stream = isString(evt) ? eventSelector(evt, 'view') : array$5(evt);\n selCmpt.bind = {\n legend: {\n merge: stream\n }\n };\n },\n topLevelSignals: (model, selCmpt, signals) => {\n const selName = selCmpt.name;\n const stream = isLegendStreamBinding(selCmpt.bind) && selCmpt.bind.legend;\n const markName = name => s => {\n const ds = duplicate(s);\n ds.markname = name;\n return ds;\n };\n for (const proj of selCmpt.project.items) {\n if (!proj.hasLegend) continue;\n const prefix = \"\".concat(varName(proj.field), \"_legend\");\n const sgName = \"\".concat(selName, \"_\").concat(prefix);\n const hasSignal = signals.filter(s => s.name === sgName);\n if (hasSignal.length === 0) {\n const events = stream.merge.map(markName(\"\".concat(prefix, \"_symbols\"))).concat(stream.merge.map(markName(\"\".concat(prefix, \"_labels\")))).concat(stream.merge.map(markName(\"\".concat(prefix, \"_entries\"))));\n signals.unshift({\n name: sgName,\n ...(!selCmpt.init ? {\n value: null\n } : {}),\n on: [\n // Legend entries do not store values, so we need to walk the scenegraph to the symbol datum.\n {\n events,\n update: 'isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value',\n force: true\n }, {\n events: stream.merge,\n update: \"!event.item || !datum ? null : \".concat(sgName),\n force: true\n }]\n });\n }\n }\n return signals;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const proj = selCmpt.project;\n const tuple = signals.find(s => s.name === name + TUPLE);\n const fields = name + TUPLE_FIELDS;\n const values = proj.items.filter(p => p.hasLegend).map(p => varName(\"\".concat(name, \"_\").concat(varName(p.field), \"_legend\")));\n const valid = values.map(v => \"\".concat(v, \" !== null\")).join(' && ');\n const update = \"\".concat(valid, \" ? {fields: \").concat(fields, \", values: [\").concat(values.join(', '), \"]} : null\");\n if (selCmpt.events && values.length > 0) {\n tuple.on.push({\n events: values.map(signal => ({\n signal\n })),\n update\n });\n } else if (values.length > 0) {\n tuple.update = update;\n delete tuple.value;\n delete tuple.on;\n }\n const toggle = signals.find(s => s.name === name + TOGGLE);\n const events = isLegendStreamBinding(selCmpt.bind) && selCmpt.bind.legend;\n if (toggle) {\n if (!selCmpt.events) toggle.on[0].events = events;else toggle.on.push({\n ...toggle.on[0],\n events\n });\n }\n return signals;\n }\n};\nfunction parseInteractiveLegend(model, channel, legendCmpt) {\n var _model$fieldDef;\n const field = (_model$fieldDef = model.fieldDef(channel)) === null || _model$fieldDef === void 0 ? void 0 : _model$fieldDef.field;\n for (const selCmpt of vals((_model$component$sele6 = model.component.selection) !== null && _model$component$sele6 !== void 0 ? _model$component$sele6 : {})) {\n var _model$component$sele6, _selCmpt$project$hasF;\n const proj = (_selCmpt$project$hasF = selCmpt.project.hasField[field]) !== null && _selCmpt$project$hasF !== void 0 ? _selCmpt$project$hasF : selCmpt.project.hasChannel[channel];\n if (proj && legendBindings.defined(selCmpt)) {\n var _legendCmpt$get;\n const legendSelections = (_legendCmpt$get = legendCmpt.get('selections')) !== null && _legendCmpt$get !== void 0 ? _legendCmpt$get : [];\n legendSelections.push(selCmpt.name);\n legendCmpt.set('selections', legendSelections, false);\n proj.hasLegend = true;\n }\n }\n}\nconst ANCHOR$1 = '_translate_anchor';\nconst DELTA$1 = '_translate_delta';\nconst translate = {\n defined: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.translate;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const boundScales = scaleBindings.defined(selCmpt);\n const anchor = name + ANCHOR$1;\n const {\n x,\n y\n } = selCmpt.project.hasChannel;\n let events = eventSelector(selCmpt.translate, 'scope');\n if (!boundScales) {\n events = events.map(e => (e.between[0].markname = name + BRUSH, e));\n }\n signals.push({\n name: anchor,\n value: {},\n on: [{\n events: events.map(e => e.between[0]),\n update: '{x: x(unit), y: y(unit)' + (x !== undefined ? \", extent_x: \".concat(boundScales ? domain(model, X) : \"slice(\".concat(x.signals.visual, \")\")) : '') + (y !== undefined ? \", extent_y: \".concat(boundScales ? domain(model, Y) : \"slice(\".concat(y.signals.visual, \")\")) : '') + '}'\n }]\n }, {\n name: name + DELTA$1,\n value: {},\n on: [{\n events,\n update: \"{x: \".concat(anchor, \".x - x(unit), y: \").concat(anchor, \".y - y(unit)}\")\n }]\n });\n if (x !== undefined) {\n onDelta$1(model, selCmpt, x, 'width', signals);\n }\n if (y !== undefined) {\n onDelta$1(model, selCmpt, y, 'height', signals);\n }\n return signals;\n }\n};\nfunction onDelta$1(model, selCmpt, proj, size, signals) {\n var _scaleCmpt$get, _scaleCmpt$get2;\n const name = selCmpt.name;\n const anchor = name + ANCHOR$1;\n const delta = name + DELTA$1;\n const channel = proj.channel;\n const boundScales = scaleBindings.defined(selCmpt);\n const signal = signals.filter(s => s.name === proj.signals[boundScales ? 'data' : 'visual'])[0];\n const sizeSg = model.getSizeSignalRef(size).signal;\n const scaleCmpt = model.getScaleComponent(channel);\n const scaleType = scaleCmpt && scaleCmpt.get('type');\n const reversed = scaleCmpt && scaleCmpt.get('reverse'); // scale parsing sets this flag for fieldDef.sort\n const sign = !boundScales ? '' : channel === X ? reversed ? '' : '-' : reversed ? '-' : '';\n const extent = \"\".concat(anchor, \".extent_\").concat(channel);\n const offset = \"\".concat(sign).concat(delta, \".\").concat(channel, \" / \").concat(boundScales ? \"\".concat(sizeSg) : \"span(\".concat(extent, \")\"));\n const panFn = !boundScales || !scaleCmpt ? 'panLinear' : scaleType === 'log' ? 'panLog' : scaleType === 'symlog' ? 'panSymlog' : scaleType === 'pow' ? 'panPow' : 'panLinear';\n const arg = !boundScales ? '' : scaleType === 'pow' ? \", \".concat((_scaleCmpt$get = scaleCmpt.get('exponent')) !== null && _scaleCmpt$get !== void 0 ? _scaleCmpt$get : 1) : scaleType === 'symlog' ? \", \".concat((_scaleCmpt$get2 = scaleCmpt.get('constant')) !== null && _scaleCmpt$get2 !== void 0 ? _scaleCmpt$get2 : 1) : '';\n const update = \"\".concat(panFn, \"(\").concat(extent, \", \").concat(offset).concat(arg, \")\");\n signal.on.push({\n events: {\n signal: delta\n },\n update: boundScales ? update : \"clampRange(\".concat(update, \", 0, \").concat(sizeSg, \")\")\n });\n}\nconst ANCHOR = '_zoom_anchor';\nconst DELTA = '_zoom_delta';\nconst zoom = {\n defined: selCmpt => {\n return selCmpt.type === 'interval' && selCmpt.zoom;\n },\n signals: (model, selCmpt, signals) => {\n const name = selCmpt.name;\n const boundScales = scaleBindings.defined(selCmpt);\n const delta = name + DELTA;\n const {\n x,\n y\n } = selCmpt.project.hasChannel;\n const sx = $(model.scaleName(X));\n const sy = $(model.scaleName(Y));\n let events = eventSelector(selCmpt.zoom, 'scope');\n if (!boundScales) {\n events = events.map(e => (e.markname = name + BRUSH, e));\n }\n signals.push({\n name: name + ANCHOR,\n on: [{\n events,\n update: !boundScales ? \"{x: x(unit), y: y(unit)}\" : '{' + [sx ? \"x: invert(\".concat(sx, \", x(unit))\") : '', sy ? \"y: invert(\".concat(sy, \", y(unit))\") : ''].filter(expr => expr).join(', ') + '}'\n }]\n }, {\n name: delta,\n on: [{\n events,\n force: true,\n update: 'pow(1.001, event.deltaY * pow(16, event.deltaMode))'\n }]\n });\n if (x !== undefined) {\n onDelta(model, selCmpt, x, 'width', signals);\n }\n if (y !== undefined) {\n onDelta(model, selCmpt, y, 'height', signals);\n }\n return signals;\n }\n};\nfunction onDelta(model, selCmpt, proj, size, signals) {\n var _scaleCmpt$get3, _scaleCmpt$get4;\n const name = selCmpt.name;\n const channel = proj.channel;\n const boundScales = scaleBindings.defined(selCmpt);\n const signal = signals.filter(s => s.name === proj.signals[boundScales ? 'data' : 'visual'])[0];\n const sizeSg = model.getSizeSignalRef(size).signal;\n const scaleCmpt = model.getScaleComponent(channel);\n const scaleType = scaleCmpt && scaleCmpt.get('type');\n const base = boundScales ? domain(model, channel) : signal.name;\n const delta = name + DELTA;\n const anchor = \"\".concat(name).concat(ANCHOR, \".\").concat(channel);\n const zoomFn = !boundScales || !scaleCmpt ? 'zoomLinear' : scaleType === 'log' ? 'zoomLog' : scaleType === 'symlog' ? 'zoomSymlog' : scaleType === 'pow' ? 'zoomPow' : 'zoomLinear';\n const arg = !boundScales ? '' : scaleType === 'pow' ? \", \".concat((_scaleCmpt$get3 = scaleCmpt.get('exponent')) !== null && _scaleCmpt$get3 !== void 0 ? _scaleCmpt$get3 : 1) : scaleType === 'symlog' ? \", \".concat((_scaleCmpt$get4 = scaleCmpt.get('constant')) !== null && _scaleCmpt$get4 !== void 0 ? _scaleCmpt$get4 : 1) : '';\n const update = \"\".concat(zoomFn, \"(\").concat(base, \", \").concat(anchor, \", \").concat(delta).concat(arg, \")\");\n signal.on.push({\n events: {\n signal: delta\n },\n update: boundScales ? update : \"clampRange(\".concat(update, \", 0, \").concat(sizeSg, \")\")\n });\n}\nconst STORE = '_store';\nconst TUPLE = '_tuple';\nconst MODIFY = '_modify';\nconst VL_SELECTION_RESOLVE = 'vlSelectionResolve';\n// Order matters for parsing and assembly.\nconst selectionCompilers = [point$1, interval, project, toggle,\n// Bindings may disable direct manipulation.\ninputBindings, scaleBindings, legendBindings, clear, translate, zoom, nearest];\nfunction getFacetModel(model) {\n let parent = model.parent;\n while (parent) {\n if (isFacetModel(parent)) break;\n parent = parent.parent;\n }\n return parent;\n}\nfunction unitName(model) {\n let {\n escape\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n escape: true\n };\n let name = escape ? $(model.name) : model.name;\n const facetModel = getFacetModel(model);\n if (facetModel) {\n const {\n facet\n } = facetModel;\n for (const channel of FACET_CHANNELS) {\n if (facet[channel]) {\n name += \" + '__facet_\".concat(channel, \"_' + (facet[\").concat($(facetModel.vgField(channel)), \"])\");\n }\n }\n }\n return name;\n}\nfunction requiresSelectionId(model) {\n var _model$component$sele7;\n return vals((_model$component$sele7 = model.component.selection) !== null && _model$component$sele7 !== void 0 ? _model$component$sele7 : {}).reduce((identifier, selCmpt) => {\n return identifier || selCmpt.project.hasSelectionId;\n }, false);\n}\n// Binding a point selection to query widgets or legends disables default direct manipulation interaction.\n// A user can choose to re-enable it by explicitly specifying triggering input events.\nfunction disableDirectManipulation(selCmpt, selDef) {\n if (isString(selDef.select) || !selDef.select.on) delete selCmpt.events;\n if (isString(selDef.select) || !selDef.select.clear) delete selCmpt.clear;\n if (isString(selDef.select) || !selDef.select.toggle) delete selCmpt.toggle;\n}\nfunction getName(node) {\n const name = [];\n if (node.type === 'Identifier') {\n return [node.name];\n }\n if (node.type === 'Literal') {\n return [node.value];\n }\n if (node.type === 'MemberExpression') {\n name.push(...getName(node.object));\n name.push(...getName(node.property));\n }\n return name;\n}\nfunction startsWithDatum(node) {\n if (node.object.type === 'MemberExpression') {\n return startsWithDatum(node.object);\n }\n return node.object.name === 'datum';\n}\nfunction getDependentFields(expression) {\n const ast = parser$1(expression);\n const dependents = new Set();\n // visit is missing in types https://github.com/vega/vega/issues/3298\n ast.visit(node => {\n if (node.type === 'MemberExpression' && startsWithDatum(node)) {\n dependents.add(getName(node).slice(1).join('.'));\n }\n });\n return dependents;\n}\nclass FilterNode extends DataFlowNode {\n clone() {\n return new FilterNode(null, this.model, duplicate(this.filter));\n }\n constructor(parent, model, filter) {\n super(parent);\n this.model = model;\n this.filter = filter;\n // TODO: refactor this to not take a node and\n // then add a static function makeFromOperand and make the constructor take only an expression\n this.expr = expression(this.model, this.filter, this);\n this._dependentFields = getDependentFields(this.expr);\n }\n dependentFields() {\n return this._dependentFields;\n }\n producedFields() {\n return new Set(); // filter does not produce any new fields\n }\n\n assemble() {\n return {\n type: 'filter',\n expr: this.expr\n };\n }\n hash() {\n return \"Filter \".concat(this.expr);\n }\n}\nfunction parseUnitSelection(model, selDefs) {\n const selCmpts = {};\n const selectionConfig = model.config.selection;\n if (!selDefs || !selDefs.length) return selCmpts;\n for (const def of selDefs) {\n const name = varName(def.name);\n const selDef = def.select;\n const type = isString(selDef) ? selDef : selDef.type;\n const defaults = isObject(selDef) ? duplicate(selDef) : {\n type\n };\n // Set default values from config if a property hasn't been specified,\n // or if it is true. E.g., \"translate\": true should use the default\n // event handlers for translate. However, true may be a valid value for\n // a property (e.g., \"nearest\": true).\n const cfg = selectionConfig[type];\n for (const key in cfg) {\n // Project transform applies its defaults.\n if (key === 'fields' || key === 'encodings') {\n continue;\n }\n if (key === 'mark') {\n defaults[key] = {\n ...cfg[key],\n ...defaults[key]\n };\n }\n if (defaults[key] === undefined || defaults[key] === true) {\n var _cfg$key;\n defaults[key] = duplicate((_cfg$key = cfg[key]) !== null && _cfg$key !== void 0 ? _cfg$key : defaults[key]);\n }\n }\n const selCmpt = selCmpts[name] = {\n ...defaults,\n name,\n type,\n init: def.value,\n bind: def.bind,\n events: isString(defaults.on) ? eventSelector(defaults.on, 'scope') : array$5(duplicate(defaults.on))\n };\n const def_ = duplicate(def); // defensive copy to prevent compilers from causing side effects\n for (const c of selectionCompilers) {\n if (c.defined(selCmpt) && c.parse) {\n c.parse(model, selCmpt, def_);\n }\n }\n }\n return selCmpts;\n}\nfunction parseSelectionPredicate(model, pred, dfnode) {\n let datum = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'datum';\n const name = isString(pred) ? pred : pred.param;\n const vname = varName(name);\n const store = $(vname + STORE);\n let selCmpt;\n try {\n selCmpt = model.getSelectionComponent(vname, name);\n } catch (e) {\n // If a selection isn't found, treat as a variable parameter and coerce to boolean.\n return \"!!\".concat(vname);\n }\n if (selCmpt.project.timeUnit) {\n const child = dfnode !== null && dfnode !== void 0 ? dfnode : model.component.data.raw;\n const tunode = selCmpt.project.timeUnit.clone();\n if (child.parent) {\n tunode.insertAsParentOf(child);\n } else {\n child.parent = tunode;\n }\n }\n const fn = selCmpt.project.hasSelectionId ? 'vlSelectionIdTest(' : 'vlSelectionTest(';\n const resolve = selCmpt.resolve === 'global' ? ')' : \", \".concat($(selCmpt.resolve), \")\");\n const test = \"\".concat(fn).concat(store, \", \").concat(datum).concat(resolve);\n const length = \"length(data(\".concat(store, \"))\");\n return pred.empty === false ? \"\".concat(length, \" && \").concat(test) : \"!\".concat(length, \" || \").concat(test);\n}\nfunction parseSelectionExtent(model, name, extent) {\n const vname = varName(name);\n const encoding = extent['encoding'];\n let field = extent['field'];\n let selCmpt;\n try {\n selCmpt = model.getSelectionComponent(vname, name);\n } catch (e) {\n // If a selection isn't found, treat it as a variable parameter.\n return vname;\n }\n if (!encoding && !field) {\n field = selCmpt.project.items[0].field;\n if (selCmpt.project.items.length > 1) {\n warn('A \"field\" or \"encoding\" must be specified when using a selection as a scale domain. ' + \"Using \\\"field\\\": \".concat($(field), \".\"));\n }\n } else if (encoding && !field) {\n const encodings = selCmpt.project.items.filter(p => p.channel === encoding);\n if (!encodings.length || encodings.length > 1) {\n field = selCmpt.project.items[0].field;\n warn((!encodings.length ? 'No ' : 'Multiple ') + \"matching \".concat($(encoding), \" encoding found for selection \").concat($(extent.param), \". \") + \"Using \\\"field\\\": \".concat($(field), \".\"));\n } else {\n field = encodings[0].field;\n }\n }\n return \"\".concat(selCmpt.name, \"[\").concat($(replacePathInField(field)), \"]\");\n}\nfunction materializeSelections(model, main) {\n for (const [selection, selCmpt] of entries$1((_model$component$sele8 = model.component.selection) !== null && _model$component$sele8 !== void 0 ? _model$component$sele8 : {})) {\n var _model$component$sele8;\n const lookupName = model.getName(\"lookup_\".concat(selection));\n model.component.data.outputNodes[lookupName] = selCmpt.materialized = new OutputNode(new FilterNode(main, model, {\n param: selection\n }), lookupName, DataSourceType.Lookup, model.component.data.outputNodeRefCounts);\n }\n}\n\n/**\n * Converts a predicate into an expression.\n */\n// model is only used for selection filters.\nfunction expression(model, filterOp, node) {\n return logicalExpr(filterOp, predicate => {\n if (isString(predicate)) {\n return predicate;\n } else if (isSelectionPredicate(predicate)) {\n return parseSelectionPredicate(model, predicate, node);\n } else {\n // Filter Object\n return fieldFilterExpression(predicate);\n }\n });\n}\nfunction assembleTitle(title, config) {\n if (!title) {\n return undefined;\n }\n if (isArray(title) && !isText(title)) {\n return title.map(fieldDef => defaultTitle(fieldDef, config)).join(', ');\n }\n return title;\n}\nfunction setAxisEncode(axis, part, vgProp, vgRef) {\n var _axis$encode, _a$part, _b$update;\n var _a, _b;\n (_axis$encode = axis.encode) !== null && _axis$encode !== void 0 ? _axis$encode : axis.encode = {};\n (_a$part = (_a = axis.encode)[part]) !== null && _a$part !== void 0 ? _a$part : _a[part] = {};\n (_b$update = (_b = axis.encode[part]).update) !== null && _b$update !== void 0 ? _b$update : _b.update = {};\n // TODO: remove as any after https://github.com/prisma/nexus-prisma/issues/291\n axis.encode[part].update[vgProp] = vgRef;\n}\nfunction assembleAxis(axisCmpt, kind, config) {\n let opt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n header: false\n };\n const {\n disable,\n orient,\n scale,\n labelExpr,\n title,\n zindex,\n ...axis\n } = axisCmpt.combine();\n if (disable) {\n return undefined;\n }\n for (const prop in axis) {\n const propType = AXIS_PROPERTY_TYPE[prop];\n const propValue = axis[prop];\n if (propType && propType !== kind && propType !== 'both') {\n // Remove properties that are not valid for this kind of axis\n delete axis[prop];\n } else if (isConditionalAxisValue(propValue)) {\n // deal with conditional axis value\n const {\n condition,\n ...valueOrSignalRef\n } = propValue;\n const conditions = array$5(condition);\n const propIndex = CONDITIONAL_AXIS_PROP_INDEX[prop];\n if (propIndex) {\n const {\n vgProp,\n part\n } = propIndex;\n // If there is a corresponding Vega property for the channel,\n // use Vega's custom axis encoding and delete the original axis property to avoid conflicts\n const vgRef = [...conditions.map(c => {\n const {\n test,\n ...valueOrSignalCRef\n } = c;\n return {\n test: expression(null, test),\n ...valueOrSignalCRef\n };\n }), valueOrSignalRef];\n setAxisEncode(axis, part, vgProp, vgRef);\n delete axis[prop];\n } else if (propIndex === null) {\n // If propIndex is null, this means we support conditional axis property by converting the condition to signal instead.\n const signalRef = {\n signal: conditions.map(c => {\n const {\n test,\n ...valueOrSignalCRef\n } = c;\n return \"\".concat(expression(null, test), \" ? \").concat(exprFromValueRefOrSignalRef(valueOrSignalCRef), \" : \");\n }).join('') + exprFromValueRefOrSignalRef(valueOrSignalRef)\n };\n axis[prop] = signalRef;\n }\n } else if (isSignalRef(propValue)) {\n const propIndex = CONDITIONAL_AXIS_PROP_INDEX[prop];\n if (propIndex) {\n const {\n vgProp,\n part\n } = propIndex;\n setAxisEncode(axis, part, vgProp, propValue);\n delete axis[prop];\n } // else do nothing since the property already supports signal\n }\n // Do not pass labelAlign/Baseline = null to Vega since it won't pass the schema\n // Note that we need to use null so the default labelAlign is preserved.\n if (contains(['labelAlign', 'labelBaseline'], prop) && axis[prop] === null) {\n delete axis[prop];\n }\n }\n if (kind === 'grid') {\n if (!axis.grid) {\n return undefined;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n // Only need to keep encode block for grid\n const {\n grid\n } = axis.encode;\n axis.encode = {\n ...(grid ? {\n grid\n } : {})\n };\n if (isEmpty(axis.encode)) {\n delete axis.encode;\n }\n }\n return {\n scale,\n orient,\n ...axis,\n domain: false,\n labels: false,\n aria: false,\n // Always set min/maxExtent to 0 to ensure that `config.axis*.minExtent` and `config.axis*.maxExtent`\n // would not affect gridAxis\n maxExtent: 0,\n minExtent: 0,\n ticks: false,\n zindex: getFirstDefined(zindex, 0) // put grid behind marks by default\n };\n } else {\n // kind === 'main'\n if (!opt.header && axisCmpt.mainExtracted) {\n // if mainExtracted has been extracted to a separate facet\n return undefined;\n }\n if (labelExpr !== undefined) {\n var _axis$encode2;\n let expr = labelExpr;\n if ((_axis$encode2 = axis.encode) !== null && _axis$encode2 !== void 0 && (_axis$encode2 = _axis$encode2.labels) !== null && _axis$encode2 !== void 0 && _axis$encode2.update && isSignalRef(axis.encode.labels.update.text)) {\n expr = replaceAll(labelExpr, 'datum.label', axis.encode.labels.update.text.signal);\n }\n setAxisEncode(axis, 'labels', 'text', {\n signal: expr\n });\n }\n if (axis.labelAlign === null) {\n delete axis.labelAlign;\n }\n // Remove unnecessary encode block\n if (axis.encode) {\n for (const part of AXIS_PARTS) {\n if (!axisCmpt.hasAxisPart(part)) {\n delete axis.encode[part];\n }\n }\n if (isEmpty(axis.encode)) {\n delete axis.encode;\n }\n }\n const titleString = assembleTitle(title, config);\n return {\n scale,\n orient,\n grid: false,\n ...(titleString ? {\n title: titleString\n } : {}),\n ...axis,\n ...(config.aria === false ? {\n aria: false\n } : {}),\n zindex: getFirstDefined(zindex, 0) // put axis line above marks by default\n };\n }\n}\n/**\n * Add axis signals so grid line works correctly\n * (Fix https://github.com/vega/vega-lite/issues/4226)\n */\nfunction assembleAxisSignals(model) {\n const {\n axes\n } = model.component;\n const signals = [];\n for (const channel of POSITION_SCALE_CHANNELS) {\n if (axes[channel]) {\n for (const axis of axes[channel]) {\n if (!axis.get('disable') && !axis.get('gridScale')) {\n // If there is x-axis but no y-scale for gridScale, need to set height/width so x-axis can draw the grid with the right height. Same for y-axis and width.\n const sizeType = channel === 'x' ? 'height' : 'width';\n const update = model.getSizeSignalRef(sizeType).signal;\n if (sizeType !== update) {\n signals.push({\n name: sizeType,\n update\n });\n }\n }\n }\n }\n }\n return signals;\n}\nfunction assembleAxes(axisComponents, config) {\n const {\n x = [],\n y = []\n } = axisComponents;\n return [...x.map(a => assembleAxis(a, 'grid', config)), ...y.map(a => assembleAxis(a, 'grid', config)), ...x.map(a => assembleAxis(a, 'main', config)), ...y.map(a => assembleAxis(a, 'main', config))].filter(a => a); // filter undefined\n}\n\nfunction getAxisConfigFromConfigTypes(configTypes, config, channel, orient) {\n // TODO: add special casing to add conditional value based on orient signal\n return Object.assign.apply(null, [{}, ...configTypes.map(configType => {\n if (configType === 'axisOrient') {\n const orient1 = channel === 'x' ? 'bottom' : 'left';\n const orientConfig1 = config[channel === 'x' ? 'axisBottom' : 'axisLeft'] || {};\n const orientConfig2 = config[channel === 'x' ? 'axisTop' : 'axisRight'] || {};\n const props = new Set([...keys(orientConfig1), ...keys(orientConfig2)]);\n const conditionalOrientAxisConfig = {};\n for (const prop of props.values()) {\n conditionalOrientAxisConfig[prop] = {\n // orient is surely signal in this case\n signal: \"\".concat(orient['signal'], \" === \\\"\").concat(orient1, \"\\\" ? \").concat(signalOrStringValue(orientConfig1[prop]), \" : \").concat(signalOrStringValue(orientConfig2[prop]))\n };\n }\n return conditionalOrientAxisConfig;\n }\n return config[configType];\n })]);\n}\nfunction getAxisConfigs(channel, scaleType, orient, config) {\n const typeBasedConfigTypes = scaleType === 'band' ? ['axisDiscrete', 'axisBand'] : scaleType === 'point' ? ['axisDiscrete', 'axisPoint'] : isQuantitative(scaleType) ? ['axisQuantitative'] : scaleType === 'time' || scaleType === 'utc' ? ['axisTemporal'] : [];\n const axisChannel = channel === 'x' ? 'axisX' : 'axisY';\n const axisOrient = isSignalRef(orient) ? 'axisOrient' : \"axis\".concat(titleCase(orient)); // axisTop, axisBottom, ...\n const vlOnlyConfigTypes = [\n // technically Vega does have axisBand, but if we make another separation here,\n // it will further introduce complexity in the code\n ...typeBasedConfigTypes, ...typeBasedConfigTypes.map(c => axisChannel + c.substr(4))];\n const vgConfigTypes = ['axis', axisOrient, axisChannel];\n return {\n vlOnlyAxisConfig: getAxisConfigFromConfigTypes(vlOnlyConfigTypes, config, channel, orient),\n vgAxisConfig: getAxisConfigFromConfigTypes(vgConfigTypes, config, channel, orient),\n axisConfigStyle: getAxisConfigStyle([...vgConfigTypes, ...vlOnlyConfigTypes], config)\n };\n}\nfunction getAxisConfigStyle(axisConfigTypes, config) {\n const toMerge = [{}];\n for (const configType of axisConfigTypes) {\n var _config$configType;\n // TODO: add special casing to add conditional value based on orient signal\n let style = (_config$configType = config[configType]) === null || _config$configType === void 0 ? void 0 : _config$configType.style;\n if (style) {\n style = array$5(style);\n for (const s of style) {\n toMerge.push(config.style[s]);\n }\n }\n }\n return Object.assign.apply(null, toMerge);\n}\nfunction getAxisConfig(property, styleConfigIndex, style) {\n let axisConfigs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const styleConfig = getStyleConfig(property, style, styleConfigIndex);\n if (styleConfig !== undefined) {\n return {\n configFrom: 'style',\n configValue: styleConfig\n };\n }\n for (const configFrom of ['vlOnlyAxisConfig', 'vgAxisConfig', 'axisConfigStyle']) {\n var _axisConfigs$configFr;\n if (((_axisConfigs$configFr = axisConfigs[configFrom]) === null || _axisConfigs$configFr === void 0 ? void 0 : _axisConfigs$configFr[property]) !== undefined) {\n return {\n configFrom,\n configValue: axisConfigs[configFrom][property]\n };\n }\n }\n return {};\n}\nconst axisRules = {\n scale: _ref54 => {\n let {\n model,\n channel\n } = _ref54;\n return model.scaleName(channel);\n },\n format: _ref55 => {\n let {\n format\n } = _ref55;\n return format;\n },\n formatType: _ref56 => {\n let {\n formatType\n } = _ref56;\n return formatType;\n },\n grid: _ref57 => {\n var _axis$grid;\n let {\n fieldOrDatumDef,\n axis,\n scaleType\n } = _ref57;\n return (_axis$grid = axis.grid) !== null && _axis$grid !== void 0 ? _axis$grid : defaultGrid(scaleType, fieldOrDatumDef);\n },\n gridScale: _ref58 => {\n let {\n model,\n channel\n } = _ref58;\n return gridScale(model, channel);\n },\n labelAlign: _ref59 => {\n let {\n axis,\n labelAngle,\n orient,\n channel\n } = _ref59;\n return axis.labelAlign || defaultLabelAlign(labelAngle, orient, channel);\n },\n labelAngle: _ref60 => {\n let {\n labelAngle\n } = _ref60;\n return labelAngle;\n },\n labelBaseline: _ref61 => {\n let {\n axis,\n labelAngle,\n orient,\n channel\n } = _ref61;\n return axis.labelBaseline || defaultLabelBaseline(labelAngle, orient, channel);\n },\n labelFlush: _ref62 => {\n var _axis$labelFlush;\n let {\n axis,\n fieldOrDatumDef,\n channel\n } = _ref62;\n return (_axis$labelFlush = axis.labelFlush) !== null && _axis$labelFlush !== void 0 ? _axis$labelFlush : defaultLabelFlush(fieldOrDatumDef.type, channel);\n },\n labelOverlap: _ref63 => {\n var _axis$labelOverlap;\n let {\n axis,\n fieldOrDatumDef,\n scaleType\n } = _ref63;\n return (_axis$labelOverlap = axis.labelOverlap) !== null && _axis$labelOverlap !== void 0 ? _axis$labelOverlap : defaultLabelOverlap$1(fieldOrDatumDef.type, scaleType, isFieldDef(fieldOrDatumDef) && !!fieldOrDatumDef.timeUnit, isFieldDef(fieldOrDatumDef) ? fieldOrDatumDef.sort : undefined);\n },\n // we already calculate orient in parse\n orient: _ref64 => {\n let {\n orient\n } = _ref64;\n return orient;\n },\n tickCount: _ref65 => {\n var _axis$tickCount;\n let {\n channel,\n model,\n axis,\n fieldOrDatumDef,\n scaleType\n } = _ref65;\n const sizeType = channel === 'x' ? 'width' : channel === 'y' ? 'height' : undefined;\n const size = sizeType ? model.getSizeSignalRef(sizeType) : undefined;\n return (_axis$tickCount = axis.tickCount) !== null && _axis$tickCount !== void 0 ? _axis$tickCount : defaultTickCount({\n fieldOrDatumDef,\n scaleType,\n size,\n values: axis.values\n });\n },\n tickMinStep: defaultTickMinStep,\n title: _ref66 => {\n let {\n axis,\n model,\n channel\n } = _ref66;\n if (axis.title !== undefined) {\n return axis.title;\n }\n const fieldDefTitle = getFieldDefTitle(model, channel);\n if (fieldDefTitle !== undefined) {\n return fieldDefTitle;\n }\n const fieldDef = model.typedFieldDef(channel);\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef2 = model.fieldDef(channel2);\n // If title not specified, store base parts of fieldDef (and fieldDef2 if exists)\n return mergeTitleFieldDefs(fieldDef ? [toFieldDefBase(fieldDef)] : [], isFieldDef(fieldDef2) ? [toFieldDefBase(fieldDef2)] : []);\n },\n values: _ref67 => {\n let {\n axis,\n fieldOrDatumDef\n } = _ref67;\n return values$1(axis, fieldOrDatumDef);\n },\n zindex: _ref68 => {\n var _axis$zindex;\n let {\n axis,\n fieldOrDatumDef,\n mark\n } = _ref68;\n return (_axis$zindex = axis.zindex) !== null && _axis$zindex !== void 0 ? _axis$zindex : defaultZindex(mark, fieldOrDatumDef);\n }\n};\n// TODO: we need to refactor this method after we take care of config refactoring\n/**\n * Default rules for whether to show a grid should be shown for a channel.\n * If `grid` is unspecified, the default value is `true` for ordinal scales that are not binned\n */\nfunction defaultGrid(scaleType, fieldDef) {\n return !hasDiscreteDomain(scaleType) && isFieldDef(fieldDef) && !isBinning(fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.bin) && !isBinned(fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.bin);\n}\nfunction gridScale(model, channel) {\n const gridChannel = channel === 'x' ? 'y' : 'x';\n if (model.getScaleComponent(gridChannel)) {\n return model.scaleName(gridChannel);\n }\n return undefined;\n}\nfunction getLabelAngle(fieldOrDatumDef, axis, channel, styleConfig, axisConfigs) {\n const labelAngle = axis === null || axis === void 0 ? void 0 : axis.labelAngle;\n // try axis value\n if (labelAngle !== undefined) {\n return isSignalRef(labelAngle) ? labelAngle : normalizeAngle(labelAngle);\n } else {\n // try axis config value\n const {\n configValue: angle\n } = getAxisConfig('labelAngle', styleConfig, axis === null || axis === void 0 ? void 0 : axis.style, axisConfigs);\n if (angle !== undefined) {\n return normalizeAngle(angle);\n } else {\n // get default value\n if (channel === X && contains([NOMINAL, ORDINAL], fieldOrDatumDef.type) && !(isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit)) {\n return 270;\n }\n // no default\n return undefined;\n }\n }\n}\nfunction normalizeAngleExpr(angle) {\n return \"(((\".concat(angle.signal, \" % 360) + 360) % 360)\");\n}\nfunction defaultLabelBaseline(angle, orient, channel, alwaysIncludeMiddle) {\n if (angle !== undefined) {\n if (channel === 'x') {\n if (isSignalRef(angle)) {\n const a = normalizeAngleExpr(angle);\n const orientIsTop = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"top\\\")\") : orient === 'top';\n return {\n signal: \"(45 < \".concat(a, \" && \").concat(a, \" < 135) || (225 < \").concat(a, \" && \").concat(a, \" < 315) ? \\\"middle\\\" :\") + \"(\".concat(a, \" <= 45 || 315 <= \").concat(a, \") === \").concat(orientIsTop, \" ? \\\"bottom\\\" : \\\"top\\\"\")\n };\n }\n if (45 < angle && angle < 135 || 225 < angle && angle < 315) {\n return 'middle';\n }\n if (isSignalRef(orient)) {\n const op = angle <= 45 || 315 <= angle ? '===' : '!==';\n return {\n signal: \"\".concat(orient.signal, \" \").concat(op, \" \\\"top\\\" ? \\\"bottom\\\" : \\\"top\\\"\")\n };\n }\n return (angle <= 45 || 315 <= angle) === (orient === 'top') ? 'bottom' : 'top';\n } else {\n if (isSignalRef(angle)) {\n const a = normalizeAngleExpr(angle);\n const orientIsLeft = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"left\\\")\") : orient === 'left';\n const middle = alwaysIncludeMiddle ? '\"middle\"' : 'null';\n return {\n signal: \"\".concat(a, \" <= 45 || 315 <= \").concat(a, \" || (135 <= \").concat(a, \" && \").concat(a, \" <= 225) ? \").concat(middle, \" : (45 <= \").concat(a, \" && \").concat(a, \" <= 135) === \").concat(orientIsLeft, \" ? \\\"top\\\" : \\\"bottom\\\"\")\n };\n }\n if (angle <= 45 || 315 <= angle || 135 <= angle && angle <= 225) {\n return alwaysIncludeMiddle ? 'middle' : null;\n }\n if (isSignalRef(orient)) {\n const op = 45 <= angle && angle <= 135 ? '===' : '!==';\n return {\n signal: \"\".concat(orient.signal, \" \").concat(op, \" \\\"left\\\" ? \\\"top\\\" : \\\"bottom\\\"\")\n };\n }\n return (45 <= angle && angle <= 135) === (orient === 'left') ? 'top' : 'bottom';\n }\n }\n return undefined;\n}\nfunction defaultLabelAlign(angle, orient, channel) {\n if (angle === undefined) {\n return undefined;\n }\n const isX = channel === 'x';\n const startAngle = isX ? 0 : 90;\n const mainOrient = isX ? 'bottom' : 'left';\n if (isSignalRef(angle)) {\n const a = normalizeAngleExpr(angle);\n const orientIsMain = isSignalRef(orient) ? \"(\".concat(orient.signal, \" === \\\"\").concat(mainOrient, \"\\\")\") : orient === mainOrient;\n return {\n signal: \"(\".concat(startAngle ? \"(\".concat(a, \" + 90)\") : a, \" % 180 === 0) ? \").concat(isX ? null : '\"center\"', \" :\") + \"(\".concat(startAngle, \" < \").concat(a, \" && \").concat(a, \" < \").concat(180 + startAngle, \") === \").concat(orientIsMain, \" ? \\\"left\\\" : \\\"right\\\"\")\n };\n }\n if ((angle + startAngle) % 180 === 0) {\n // For bottom, use default label align so label flush still works\n return isX ? null : 'center';\n }\n if (isSignalRef(orient)) {\n const op = startAngle < angle && angle < 180 + startAngle ? '===' : '!==';\n const orientIsMain = \"\".concat(orient.signal, \" \").concat(op, \" \\\"\").concat(mainOrient, \"\\\"\");\n return {\n signal: \"\".concat(orientIsMain, \" ? \\\"left\\\" : \\\"right\\\"\")\n };\n }\n if ((startAngle < angle && angle < 180 + startAngle) === (orient === mainOrient)) {\n return 'left';\n }\n return 'right';\n}\nfunction defaultLabelFlush(type, channel) {\n if (channel === 'x' && contains(['quantitative', 'temporal'], type)) {\n return true;\n }\n return undefined;\n}\nfunction defaultLabelOverlap$1(type, scaleType, hasTimeUnit, sort) {\n // do not prevent overlap for nominal data because there is no way to infer what the missing labels are\n if (hasTimeUnit && !isObject(sort) || type !== 'nominal' && type !== 'ordinal') {\n if (scaleType === 'log' || scaleType === 'symlog') {\n return 'greedy';\n }\n return true;\n }\n return undefined;\n}\nfunction defaultOrient(channel) {\n return channel === 'x' ? 'bottom' : 'left';\n}\nfunction defaultTickCount(_ref69) {\n let {\n fieldOrDatumDef,\n scaleType,\n size,\n values: vals\n } = _ref69;\n if (!vals && !hasDiscreteDomain(scaleType) && scaleType !== 'log') {\n if (isFieldDef(fieldOrDatumDef)) {\n var _normalizeTimeUnit6;\n if (isBinning(fieldOrDatumDef.bin)) {\n // for binned data, we don't want more ticks than maxbins\n return {\n signal: \"ceil(\".concat(size.signal, \"/10)\")\n };\n }\n if (fieldOrDatumDef.timeUnit && contains(['month', 'hours', 'day', 'quarter'], (_normalizeTimeUnit6 = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit6 === void 0 ? void 0 : _normalizeTimeUnit6.unit)) {\n return undefined;\n }\n }\n return {\n signal: \"ceil(\".concat(size.signal, \"/40)\")\n };\n }\n return undefined;\n}\nfunction defaultTickMinStep(_ref70) {\n let {\n format,\n fieldOrDatumDef\n } = _ref70;\n if (format === 'd') {\n return 1;\n }\n if (isFieldDef(fieldOrDatumDef)) {\n const {\n timeUnit\n } = fieldOrDatumDef;\n if (timeUnit) {\n const signal = durationExpr(timeUnit);\n if (signal) {\n return {\n signal\n };\n }\n }\n }\n return undefined;\n}\nfunction getFieldDefTitle(model, channel) {\n const channel2 = channel === 'x' ? 'x2' : 'y2';\n const fieldDef = model.fieldDef(channel);\n const fieldDef2 = model.fieldDef(channel2);\n const title1 = fieldDef ? fieldDef.title : undefined;\n const title2 = fieldDef2 ? fieldDef2.title : undefined;\n if (title1 && title2) {\n return mergeTitle(title1, title2);\n } else if (title1) {\n return title1;\n } else if (title2) {\n return title2;\n } else if (title1 !== undefined) {\n // falsy value to disable config\n return title1;\n } else if (title2 !== undefined) {\n // falsy value to disable config\n return title2;\n }\n return undefined;\n}\nfunction values$1(axis, fieldOrDatumDef) {\n const vals = axis.values;\n if (isArray(vals)) {\n return valueArray(fieldOrDatumDef, vals);\n } else if (isSignalRef(vals)) {\n return vals;\n }\n return undefined;\n}\nfunction defaultZindex(mark, fieldDef) {\n if (mark === 'rect' && isDiscrete(fieldDef)) {\n return 1;\n }\n return 0;\n}\nclass CalculateNode extends DataFlowNode {\n clone() {\n return new CalculateNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this._dependentFields = getDependentFields(this.transform.calculate);\n }\n static parseAllForSortIndex(parent, model) {\n // get all the encoding with sort fields from model\n model.forEachFieldDef((fieldDef, channel) => {\n if (!isScaleFieldDef(fieldDef)) {\n return;\n }\n if (isSortArray(fieldDef.sort)) {\n const {\n field,\n timeUnit\n } = fieldDef;\n const sort = fieldDef.sort;\n // generate `datum[\"a\"] === val0 ? 0 : datum[\"a\"] === val1 ? 1 : ... : n` via FieldEqualPredicate\n const calculate = sort.map((sortValue, i) => {\n return \"\".concat(fieldFilterExpression({\n field,\n timeUnit,\n equal: sortValue\n }), \" ? \").concat(i, \" : \");\n }).join('') + sort.length;\n parent = new CalculateNode(parent, {\n calculate,\n as: sortArrayIndexField(fieldDef, channel, {\n forAs: true\n })\n });\n }\n });\n return parent;\n }\n producedFields() {\n return new Set([this.transform.as]);\n }\n dependentFields() {\n return this._dependentFields;\n }\n assemble() {\n return {\n type: 'formula',\n expr: this.transform.calculate,\n as: this.transform.as\n };\n }\n hash() {\n return \"Calculate \".concat(hash(this.transform));\n }\n}\nfunction sortArrayIndexField(fieldDef, channel, opt) {\n return vgField(fieldDef, {\n prefix: channel,\n suffix: 'sort_index',\n ...(opt !== null && opt !== void 0 ? opt : {})\n });\n}\n\n/**\n * Get header channel, which can be different from facet channel when orient is specified or when the facet channel is facet.\n */\nfunction getHeaderChannel(channel, orient) {\n if (contains(['top', 'bottom'], orient)) {\n return 'column';\n } else if (contains(['left', 'right'], orient)) {\n return 'row';\n }\n return channel === 'row' ? 'row' : 'column';\n}\nfunction getHeaderProperty(prop, header, config, channel) {\n const headerSpecificConfig = channel === 'row' ? config.headerRow : channel === 'column' ? config.headerColumn : config.headerFacet;\n return getFirstDefined((header || {})[prop], headerSpecificConfig[prop], config.header[prop]);\n}\nfunction getHeaderProperties(properties, header, config, channel) {\n const props = {};\n for (const prop of properties) {\n const value = getHeaderProperty(prop, header || {}, config, channel);\n if (value !== undefined) {\n props[prop] = value;\n }\n }\n return props;\n}\nconst HEADER_CHANNELS = ['row', 'column'];\nconst HEADER_TYPES = ['header', 'footer'];\n\n/**\n * Utility for generating row / column headers\n */\n// TODO: rename to assembleHeaderTitleGroup\nfunction assembleTitleGroup(model, channel) {\n const title = model.component.layoutHeaders[channel].title;\n const config = model.config ? model.config : undefined;\n const facetFieldDef = model.component.layoutHeaders[channel].facetFieldDef ? model.component.layoutHeaders[channel].facetFieldDef : undefined;\n const {\n titleAnchor,\n titleAngle: ta,\n titleOrient\n } = getHeaderProperties(['titleAnchor', 'titleAngle', 'titleOrient'], facetFieldDef.header, config, channel);\n const headerChannel = getHeaderChannel(channel, titleOrient);\n const titleAngle = normalizeAngle(ta);\n return {\n name: \"\".concat(channel, \"-title\"),\n type: 'group',\n role: \"\".concat(headerChannel, \"-title\"),\n title: {\n text: title,\n ...(channel === 'row' ? {\n orient: 'left'\n } : {}),\n style: 'guide-title',\n ...defaultHeaderGuideBaseline(titleAngle, headerChannel),\n ...defaultHeaderGuideAlign(headerChannel, titleAngle, titleAnchor),\n ...assembleHeaderProperties(config, facetFieldDef, channel, HEADER_TITLE_PROPERTIES, HEADER_TITLE_PROPERTIES_MAP)\n }\n };\n}\nfunction defaultHeaderGuideAlign(headerChannel, angle) {\n let anchor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'middle';\n switch (anchor) {\n case 'start':\n return {\n align: 'left'\n };\n case 'end':\n return {\n align: 'right'\n };\n }\n const align = defaultLabelAlign(angle, headerChannel === 'row' ? 'left' : 'top', headerChannel === 'row' ? 'y' : 'x');\n return align ? {\n align\n } : {};\n}\nfunction defaultHeaderGuideBaseline(angle, channel) {\n const baseline = defaultLabelBaseline(angle, channel === 'row' ? 'left' : 'top', channel === 'row' ? 'y' : 'x', true);\n return baseline ? {\n baseline\n } : {};\n}\nfunction assembleHeaderGroups(model, channel) {\n const layoutHeader = model.component.layoutHeaders[channel];\n const groups = [];\n for (const headerType of HEADER_TYPES) {\n if (layoutHeader[headerType]) {\n for (const headerComponent of layoutHeader[headerType]) {\n const group = assembleHeaderGroup(model, channel, headerType, layoutHeader, headerComponent);\n if (group != null) {\n groups.push(group);\n }\n }\n }\n }\n return groups;\n}\nfunction getSort$1(facetFieldDef, channel) {\n const {\n sort\n } = facetFieldDef;\n if (isSortField(sort)) {\n var _sort$order;\n return {\n field: vgField(sort, {\n expr: 'datum'\n }),\n order: (_sort$order = sort.order) !== null && _sort$order !== void 0 ? _sort$order : 'ascending'\n };\n } else if (isArray(sort)) {\n return {\n field: sortArrayIndexField(facetFieldDef, channel, {\n expr: 'datum'\n }),\n order: 'ascending'\n };\n } else {\n return {\n field: vgField(facetFieldDef, {\n expr: 'datum'\n }),\n order: sort !== null && sort !== void 0 ? sort : 'ascending'\n };\n }\n}\nfunction assembleLabelTitle(facetFieldDef, channel, config) {\n const {\n format,\n formatType,\n labelAngle,\n labelAnchor,\n labelOrient,\n labelExpr\n } = getHeaderProperties(['format', 'formatType', 'labelAngle', 'labelAnchor', 'labelOrient', 'labelExpr'], facetFieldDef.header, config, channel);\n const titleTextExpr = formatSignalRef({\n fieldOrDatumDef: facetFieldDef,\n format,\n formatType,\n expr: 'parent',\n config\n }).signal;\n const headerChannel = getHeaderChannel(channel, labelOrient);\n return {\n text: {\n signal: labelExpr ? replaceAll(replaceAll(labelExpr, 'datum.label', titleTextExpr), 'datum.value', vgField(facetFieldDef, {\n expr: 'parent'\n })) : titleTextExpr\n },\n ...(channel === 'row' ? {\n orient: 'left'\n } : {}),\n style: 'guide-label',\n frame: 'group',\n ...defaultHeaderGuideBaseline(labelAngle, headerChannel),\n ...defaultHeaderGuideAlign(headerChannel, labelAngle, labelAnchor),\n ...assembleHeaderProperties(config, facetFieldDef, channel, HEADER_LABEL_PROPERTIES, HEADER_LABEL_PROPERTIES_MAP)\n };\n}\nfunction assembleHeaderGroup(model, channel, headerType, layoutHeader, headerComponent) {\n if (headerComponent) {\n let title = null;\n const {\n facetFieldDef\n } = layoutHeader;\n const config = model.config ? model.config : undefined;\n if (facetFieldDef && headerComponent.labels) {\n const {\n labelOrient\n } = getHeaderProperties(['labelOrient'], facetFieldDef.header, config, channel);\n // Include label title in the header if orient aligns with the channel\n if (channel === 'row' && !contains(['top', 'bottom'], labelOrient) || channel === 'column' && !contains(['left', 'right'], labelOrient)) {\n title = assembleLabelTitle(facetFieldDef, channel, config);\n }\n }\n const isFacetWithoutRowCol = isFacetModel(model) && !isFacetMapping(model.facet);\n const axes = headerComponent.axes;\n const hasAxes = (axes === null || axes === void 0 ? void 0 : axes.length) > 0;\n if (title || hasAxes) {\n const sizeChannel = channel === 'row' ? 'height' : 'width';\n return {\n name: model.getName(\"\".concat(channel, \"_\").concat(headerType)),\n type: 'group',\n role: \"\".concat(channel, \"-\").concat(headerType),\n ...(layoutHeader.facetFieldDef ? {\n from: {\n data: model.getName(\"\".concat(channel, \"_domain\"))\n },\n sort: getSort$1(facetFieldDef, channel)\n } : {}),\n ...(hasAxes && isFacetWithoutRowCol ? {\n from: {\n data: model.getName(\"facet_domain_\".concat(channel))\n }\n } : {}),\n ...(title ? {\n title\n } : {}),\n ...(headerComponent.sizeSignal ? {\n encode: {\n update: {\n [sizeChannel]: headerComponent.sizeSignal\n }\n }\n } : {}),\n ...(hasAxes ? {\n axes\n } : {})\n };\n }\n }\n return null;\n}\nconst LAYOUT_TITLE_BAND = {\n column: {\n start: 0,\n end: 1\n },\n row: {\n start: 1,\n end: 0\n }\n};\nfunction getLayoutTitleBand(titleAnchor, headerChannel) {\n return LAYOUT_TITLE_BAND[headerChannel][titleAnchor];\n}\nfunction assembleLayoutTitleBand(headerComponentIndex, config) {\n const titleBand = {};\n for (const channel of FACET_CHANNELS) {\n const headerComponent = headerComponentIndex[channel];\n if (headerComponent !== null && headerComponent !== void 0 && headerComponent.facetFieldDef) {\n const {\n titleAnchor,\n titleOrient\n } = getHeaderProperties(['titleAnchor', 'titleOrient'], headerComponent.facetFieldDef.header, config, channel);\n const headerChannel = getHeaderChannel(channel, titleOrient);\n const band = getLayoutTitleBand(titleAnchor, headerChannel);\n if (band !== undefined) {\n titleBand[headerChannel] = band;\n }\n }\n }\n return isEmpty(titleBand) ? undefined : titleBand;\n}\nfunction assembleHeaderProperties(config, facetFieldDef, channel, properties, propertiesMap) {\n const props = {};\n for (const prop of properties) {\n if (!propertiesMap[prop]) {\n continue;\n }\n const value = getHeaderProperty(prop, facetFieldDef === null || facetFieldDef === void 0 ? void 0 : facetFieldDef.header, config, channel);\n if (value !== undefined) {\n props[propertiesMap[prop]] = value;\n }\n }\n return props;\n}\nfunction assembleLayoutSignals(model) {\n return [...sizeSignals(model, 'width'), ...sizeSignals(model, 'height'), ...sizeSignals(model, 'childWidth'), ...sizeSignals(model, 'childHeight')];\n}\nfunction sizeSignals(model, sizeType) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const size = model.component.layoutSize.get(sizeType);\n if (!size || size === 'merged') {\n return [];\n }\n // Read size signal name from name map, just in case it is the top-level size signal that got renamed.\n const name = model.getSizeSignalRef(sizeType).signal;\n if (size === 'step') {\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const type = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const scaleName = model.scaleName(channel);\n if (isFacetModel(model.parent)) {\n // If parent is facet and this is an independent scale, return only signal signal\n // as the width/height will be calculated using the cardinality from\n // facet's aggregate rather than reading from scale domain\n const parentResolve = model.parent.component.resolve;\n if (parentResolve.scale[channel] === 'independent') {\n return [stepSignal(scaleName, range)];\n }\n }\n return [stepSignal(scaleName, range), {\n name,\n update: sizeExpr(scaleName, scaleComponent, \"domain('\".concat(scaleName, \"').length\"))\n }];\n }\n }\n /* istanbul ignore next: Condition should not happen -- only for warning in development. */\n throw new Error('layout size is step although width/height is not step.');\n } else if (size == 'container') {\n const isWidth = name.endsWith('width');\n const expr = isWidth ? 'containerSize()[0]' : 'containerSize()[1]';\n const defaultValue = getViewConfigContinuousSize(model.config.view, isWidth ? 'width' : 'height');\n const safeExpr = \"isFinite(\".concat(expr, \") ? \").concat(expr, \" : \").concat(defaultValue);\n return [{\n name,\n init: safeExpr,\n on: [{\n update: safeExpr,\n events: 'window:resize'\n }]\n }];\n } else {\n return [{\n name,\n value: size\n }];\n }\n}\nfunction stepSignal(scaleName, range) {\n const name = \"\".concat(scaleName, \"_step\");\n if (isSignalRef(range.step)) {\n return {\n name,\n update: range.step.signal\n };\n } else {\n return {\n name,\n value: range.step\n };\n }\n}\nfunction sizeExpr(scaleName, scaleComponent, cardinality) {\n const type = scaleComponent.get('type');\n const padding = scaleComponent.get('padding');\n const paddingOuter = getFirstDefined(scaleComponent.get('paddingOuter'), padding);\n let paddingInner = scaleComponent.get('paddingInner');\n paddingInner = type === 'band' ?\n // only band has real paddingInner\n paddingInner !== undefined ? paddingInner : padding :\n // For point, as calculated in https://github.com/vega/vega-scale/blob/master/src/band.js#L128,\n // it's equivalent to have paddingInner = 1 since there is only n-1 steps between n points.\n 1;\n return \"bandspace(\".concat(cardinality, \", \").concat(signalOrStringValue(paddingInner), \", \").concat(signalOrStringValue(paddingOuter), \") * \").concat(scaleName, \"_step\");\n}\nfunction getSizeTypeFromLayoutSizeType(layoutSizeType) {\n return layoutSizeType === 'childWidth' ? 'width' : layoutSizeType === 'childHeight' ? 'height' : layoutSizeType;\n}\nfunction guideEncodeEntry(encoding, model) {\n return keys(encoding).reduce((encode, channel) => {\n const valueDef = encoding[channel];\n return {\n ...encode,\n ...wrapCondition(model, valueDef, channel, def => signalOrValueRef(def.value))\n };\n }, {});\n}\nfunction defaultScaleResolve(channel, model) {\n if (isFacetModel(model)) {\n return channel === 'theta' ? 'independent' : 'shared';\n } else if (isLayerModel(model)) {\n return 'shared';\n } else if (isConcatModel(model)) {\n return isXorY(channel) || channel === 'theta' || channel === 'radius' ? 'independent' : 'shared';\n }\n /* istanbul ignore next: should never reach here. */\n throw new Error('invalid model type for resolve');\n}\nfunction parseGuideResolve(resolve, channel) {\n const channelScaleResolve = resolve.scale[channel];\n const guide = isXorY(channel) ? 'axis' : 'legend';\n if (channelScaleResolve === 'independent') {\n if (resolve[guide][channel] === 'shared') {\n warn(independentScaleMeansIndependentGuide(channel));\n }\n return 'independent';\n }\n return resolve[guide][channel] || 'shared';\n}\nconst LEGEND_COMPONENT_PROPERTY_INDEX = {\n ...COMMON_LEGEND_PROPERTY_INDEX,\n disable: 1,\n labelExpr: 1,\n selections: 1,\n // channel scales\n opacity: 1,\n shape: 1,\n stroke: 1,\n fill: 1,\n size: 1,\n strokeWidth: 1,\n strokeDash: 1,\n // encode\n encode: 1\n};\nconst LEGEND_COMPONENT_PROPERTIES = keys(LEGEND_COMPONENT_PROPERTY_INDEX);\nclass LegendComponent extends Split {}\nconst legendEncodeRules = {\n symbols,\n gradient,\n labels: labels$1,\n entries\n};\nfunction symbols(symbolsSpec, _ref71) {\n var _legendCmpt$get2, _legendCmpt$get3, _legendCmpt$get4, _getMaxValue;\n let {\n fieldOrDatumDef,\n model,\n channel,\n legendCmpt,\n legendType\n } = _ref71;\n if (legendType !== 'symbol') {\n return undefined;\n }\n const {\n markDef,\n encoding,\n config,\n mark\n } = model;\n const filled = markDef.filled && mark !== 'trail';\n let out = {\n ...applyMarkConfig({}, model, FILL_STROKE_CONFIG),\n ...color(model, {\n filled\n })\n }; // FIXME: remove this when VgEncodeEntry is compatible with SymbolEncodeEntry\n const symbolOpacity = (_legendCmpt$get2 = legendCmpt.get('symbolOpacity')) !== null && _legendCmpt$get2 !== void 0 ? _legendCmpt$get2 : config.legend.symbolOpacity;\n const symbolFillColor = (_legendCmpt$get3 = legendCmpt.get('symbolFillColor')) !== null && _legendCmpt$get3 !== void 0 ? _legendCmpt$get3 : config.legend.symbolFillColor;\n const symbolStrokeColor = (_legendCmpt$get4 = legendCmpt.get('symbolStrokeColor')) !== null && _legendCmpt$get4 !== void 0 ? _legendCmpt$get4 : config.legend.symbolStrokeColor;\n const opacity = symbolOpacity === undefined ? (_getMaxValue = getMaxValue(encoding.opacity)) !== null && _getMaxValue !== void 0 ? _getMaxValue : markDef.opacity : undefined;\n if (out.fill) {\n // for fill legend, we don't want any fill in symbol\n if (channel === 'fill' || filled && channel === COLOR) {\n delete out.fill;\n } else {\n if (out.fill['field']) {\n // For others, set fill to some opaque value (or nothing if a color is already set)\n if (symbolFillColor) {\n delete out.fill;\n } else {\n var _config$legend$symbol;\n out.fill = signalOrValueRef((_config$legend$symbol = config.legend.symbolBaseFillColor) !== null && _config$legend$symbol !== void 0 ? _config$legend$symbol : 'black');\n out.fillOpacity = signalOrValueRef(opacity !== null && opacity !== void 0 ? opacity : 1);\n }\n } else if (isArray(out.fill)) {\n var _ref72, _getFirstConditionVal, _encoding$fill;\n const fill = (_ref72 = (_getFirstConditionVal = getFirstConditionValue((_encoding$fill = encoding.fill) !== null && _encoding$fill !== void 0 ? _encoding$fill : encoding.color)) !== null && _getFirstConditionVal !== void 0 ? _getFirstConditionVal : markDef.fill) !== null && _ref72 !== void 0 ? _ref72 : filled && markDef.color;\n if (fill) {\n out.fill = signalOrValueRef(fill);\n }\n }\n }\n }\n if (out.stroke) {\n if (channel === 'stroke' || !filled && channel === COLOR) {\n delete out.stroke;\n } else {\n if (out.stroke['field'] || symbolStrokeColor) {\n // For others, remove stroke field\n delete out.stroke;\n } else if (isArray(out.stroke)) {\n const stroke = getFirstDefined(getFirstConditionValue(encoding.stroke || encoding.color), markDef.stroke, filled ? markDef.color : undefined);\n if (stroke) {\n out.stroke = {\n value: stroke\n };\n }\n }\n }\n }\n if (channel !== OPACITY) {\n const condition = isFieldDef(fieldOrDatumDef) && selectedCondition(model, legendCmpt, fieldOrDatumDef);\n if (condition) {\n out.opacity = [{\n test: condition,\n ...signalOrValueRef(opacity !== null && opacity !== void 0 ? opacity : 1)\n }, signalOrValueRef(config.legend.unselectedOpacity)];\n } else if (opacity) {\n out.opacity = signalOrValueRef(opacity);\n }\n }\n out = {\n ...out,\n ...symbolsSpec\n };\n return isEmpty(out) ? undefined : out;\n}\nfunction gradient(gradientSpec, _ref73) {\n var _legendCmpt$get5;\n let {\n model,\n legendType,\n legendCmpt\n } = _ref73;\n if (legendType !== 'gradient') {\n return undefined;\n }\n const {\n config,\n markDef,\n encoding\n } = model;\n let out = {};\n const gradientOpacity = (_legendCmpt$get5 = legendCmpt.get('gradientOpacity')) !== null && _legendCmpt$get5 !== void 0 ? _legendCmpt$get5 : config.legend.gradientOpacity;\n const opacity = gradientOpacity === undefined ? getMaxValue(encoding.opacity) || markDef.opacity : undefined;\n if (opacity) {\n // only apply opacity if it is neither zero or undefined\n out.opacity = signalOrValueRef(opacity);\n }\n out = {\n ...out,\n ...gradientSpec\n };\n return isEmpty(out) ? undefined : out;\n}\nfunction labels$1(specifiedlabelsSpec, _ref74) {\n let {\n fieldOrDatumDef,\n model,\n channel,\n legendCmpt\n } = _ref74;\n const legend = model.legend(channel) || {};\n const config = model.config;\n const condition = isFieldDef(fieldOrDatumDef) ? selectedCondition(model, legendCmpt, fieldOrDatumDef) : undefined;\n const opacity = condition ? [{\n test: condition,\n value: 1\n }, {\n value: config.legend.unselectedOpacity\n }] : undefined;\n const {\n format,\n formatType\n } = legend;\n let text = undefined;\n if (isCustomFormatType(formatType)) {\n text = formatCustomType({\n fieldOrDatumDef,\n field: 'datum.value',\n format,\n formatType,\n config\n });\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (fieldOrDatumDef.type === 'quantitative' && config.numberFormatType) {\n text = formatCustomType({\n fieldOrDatumDef,\n field: 'datum.value',\n format: config.numberFormat,\n formatType: config.numberFormatType,\n config\n });\n } else if (fieldOrDatumDef.type === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && fieldOrDatumDef.timeUnit === undefined) {\n text = formatCustomType({\n fieldOrDatumDef,\n field: 'datum.value',\n format: config.timeFormat,\n formatType: config.timeFormatType,\n config\n });\n }\n }\n const labelsSpec = {\n ...(opacity ? {\n opacity\n } : {}),\n ...(text ? {\n text\n } : {}),\n ...specifiedlabelsSpec\n };\n return isEmpty(labelsSpec) ? undefined : labelsSpec;\n}\nfunction entries(entriesSpec, _ref75) {\n let {\n legendCmpt\n } = _ref75;\n const selections = legendCmpt.get('selections');\n return selections !== null && selections !== void 0 && selections.length ? {\n ...entriesSpec,\n fill: {\n value: 'transparent'\n }\n } : entriesSpec;\n}\nfunction getMaxValue(channelDef) {\n return getConditionValue(channelDef, (v, conditionalDef) => Math.max(v, conditionalDef.value));\n}\nfunction getFirstConditionValue(channelDef) {\n return getConditionValue(channelDef, (v, conditionalDef) => {\n return getFirstDefined(v, conditionalDef.value);\n });\n}\nfunction getConditionValue(channelDef, reducer) {\n if (hasConditionalValueDef(channelDef)) {\n return array$5(channelDef.condition).reduce(reducer, channelDef.value);\n } else if (isValueDef(channelDef)) {\n return channelDef.value;\n }\n return undefined;\n}\nfunction selectedCondition(model, legendCmpt, fieldDef) {\n const selections = legendCmpt.get('selections');\n if (!(selections !== null && selections !== void 0 && selections.length)) return undefined;\n const field = $(fieldDef.field);\n return selections.map(name => {\n const store = $(varName(name) + STORE);\n return \"(!length(data(\".concat(store, \")) || (\").concat(name, \"[\").concat(field, \"] && indexof(\").concat(name, \"[\").concat(field, \"], datum.value) >= 0))\");\n }).join(' || ');\n}\nconst legendRules = {\n direction: _ref76 => {\n let {\n direction\n } = _ref76;\n return direction;\n },\n format: _ref77 => {\n let {\n fieldOrDatumDef,\n legend,\n config\n } = _ref77;\n const {\n format,\n formatType\n } = legend;\n return guideFormat(fieldOrDatumDef, fieldOrDatumDef.type, format, formatType, config, false);\n },\n formatType: _ref78 => {\n let {\n legend,\n fieldOrDatumDef,\n scaleType\n } = _ref78;\n const {\n formatType\n } = legend;\n return guideFormatType(formatType, fieldOrDatumDef, scaleType);\n },\n gradientLength: params => {\n var _ref79, _legend$gradientLengt;\n const {\n legend,\n legendConfig\n } = params;\n return (_ref79 = (_legend$gradientLengt = legend.gradientLength) !== null && _legend$gradientLengt !== void 0 ? _legend$gradientLengt : legendConfig.gradientLength) !== null && _ref79 !== void 0 ? _ref79 : defaultGradientLength(params);\n },\n labelOverlap: _ref80 => {\n var _ref81, _legend$labelOverlap;\n let {\n legend,\n legendConfig,\n scaleType\n } = _ref80;\n return (_ref81 = (_legend$labelOverlap = legend.labelOverlap) !== null && _legend$labelOverlap !== void 0 ? _legend$labelOverlap : legendConfig.labelOverlap) !== null && _ref81 !== void 0 ? _ref81 : defaultLabelOverlap(scaleType);\n },\n symbolType: _ref82 => {\n var _legend$symbolType;\n let {\n legend,\n markDef,\n channel,\n encoding\n } = _ref82;\n return (_legend$symbolType = legend.symbolType) !== null && _legend$symbolType !== void 0 ? _legend$symbolType : defaultSymbolType(markDef.type, channel, encoding.shape, markDef.shape);\n },\n title: _ref83 => {\n let {\n fieldOrDatumDef,\n config\n } = _ref83;\n return title(fieldOrDatumDef, config, {\n allowDisabling: true\n });\n },\n type: _ref84 => {\n let {\n legendType,\n scaleType,\n channel\n } = _ref84;\n if (isColorChannel(channel) && isContinuousToContinuous(scaleType)) {\n if (legendType === 'gradient') {\n return undefined;\n }\n } else if (legendType === 'symbol') {\n return undefined;\n }\n return legendType;\n },\n values: _ref85 => {\n let {\n fieldOrDatumDef,\n legend\n } = _ref85;\n return values(legend, fieldOrDatumDef);\n }\n};\nfunction values(legend, fieldOrDatumDef) {\n const vals = legend.values;\n if (isArray(vals)) {\n return valueArray(fieldOrDatumDef, vals);\n } else if (isSignalRef(vals)) {\n return vals;\n }\n return undefined;\n}\nfunction defaultSymbolType(mark, channel, shapeChannelDef, markShape) {\n if (channel !== 'shape') {\n var _getFirstConditionVal2;\n // use the value from the shape encoding or the mark config if they exist\n const shape = (_getFirstConditionVal2 = getFirstConditionValue(shapeChannelDef)) !== null && _getFirstConditionVal2 !== void 0 ? _getFirstConditionVal2 : markShape;\n if (shape) {\n return shape;\n }\n }\n switch (mark) {\n case 'bar':\n case 'rect':\n case 'image':\n case 'square':\n return 'square';\n case 'line':\n case 'trail':\n case 'rule':\n return 'stroke';\n case 'arc':\n case 'point':\n case 'circle':\n case 'tick':\n case 'geoshape':\n case 'area':\n case 'text':\n return 'circle';\n }\n}\nfunction getLegendType(params) {\n const {\n legend\n } = params;\n return getFirstDefined(legend.type, defaultType$1(params));\n}\nfunction defaultType$1(_ref86) {\n let {\n channel,\n timeUnit,\n scaleType\n } = _ref86;\n // Following the logic in https://github.com/vega/vega-parser/blob/master/src/parsers/legend.js\n if (isColorChannel(channel)) {\n if (contains(['quarter', 'month', 'day'], timeUnit)) {\n return 'symbol';\n }\n if (isContinuousToContinuous(scaleType)) {\n return 'gradient';\n }\n }\n return 'symbol';\n}\nfunction getDirection(_ref87) {\n var _ref88, _legend$direction;\n let {\n legendConfig,\n legendType,\n orient,\n legend\n } = _ref87;\n return (_ref88 = (_legend$direction = legend.direction) !== null && _legend$direction !== void 0 ? _legend$direction : legendConfig[legendType ? 'gradientDirection' : 'symbolDirection']) !== null && _ref88 !== void 0 ? _ref88 : defaultDirection(orient, legendType);\n}\nfunction defaultDirection(orient, legendType) {\n switch (orient) {\n case 'top':\n case 'bottom':\n return 'horizontal';\n case 'left':\n case 'right':\n case 'none':\n case undefined:\n // undefined = \"right\" in Vega\n return undefined;\n // vertical is Vega's default\n default:\n // top-left / ...\n // For inner legend, uses compact layout like Tableau\n return legendType === 'gradient' ? 'horizontal' : undefined;\n }\n}\nfunction defaultGradientLength(_ref89) {\n let {\n legendConfig,\n model,\n direction,\n orient,\n scaleType\n } = _ref89;\n const {\n gradientHorizontalMaxLength,\n gradientHorizontalMinLength,\n gradientVerticalMaxLength,\n gradientVerticalMinLength\n } = legendConfig;\n if (isContinuousToContinuous(scaleType)) {\n if (direction === 'horizontal') {\n if (orient === 'top' || orient === 'bottom') {\n return gradientLengthSignal(model, 'width', gradientHorizontalMinLength, gradientHorizontalMaxLength);\n } else {\n return gradientHorizontalMinLength;\n }\n } else {\n // vertical / undefined (Vega uses vertical by default)\n return gradientLengthSignal(model, 'height', gradientVerticalMinLength, gradientVerticalMaxLength);\n }\n }\n return undefined;\n}\nfunction gradientLengthSignal(model, sizeType, min, max) {\n const sizeSignal = model.getSizeSignalRef(sizeType).signal;\n return {\n signal: \"clamp(\".concat(sizeSignal, \", \").concat(min, \", \").concat(max, \")\")\n };\n}\nfunction defaultLabelOverlap(scaleType) {\n if (contains(['quantile', 'threshold', 'log', 'symlog'], scaleType)) {\n return 'greedy';\n }\n return undefined;\n}\nfunction parseLegend(model) {\n const legendComponent = isUnitModel(model) ? parseUnitLegend(model) : parseNonUnitLegend(model);\n model.component.legends = legendComponent;\n return legendComponent;\n}\nfunction parseUnitLegend(model) {\n const {\n encoding\n } = model;\n const legendComponent = {};\n for (const channel of [COLOR, ...LEGEND_SCALE_CHANNELS]) {\n const def = getFieldOrDatumDef(encoding[channel]);\n if (!def || !model.getScaleComponent(channel)) {\n continue;\n }\n if (channel === SHAPE && isFieldDef(def) && def.type === GEOJSON) {\n continue;\n }\n legendComponent[channel] = parseLegendForChannel(model, channel);\n }\n return legendComponent;\n}\nfunction getLegendDefWithScale(model, channel) {\n const scale = model.scaleName(channel);\n if (model.mark === 'trail') {\n if (channel === 'color') {\n // trail is a filled mark, but its default symbolType (\"stroke\") should use \"stroke\"\n return {\n stroke: scale\n };\n } else if (channel === 'size') {\n return {\n strokeWidth: scale\n };\n }\n }\n if (channel === 'color') {\n return model.markDef.filled ? {\n fill: scale\n } : {\n stroke: scale\n };\n }\n return {\n [channel]: scale\n };\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isExplicit$1(value, property, legend, fieldDef) {\n switch (property) {\n case 'disable':\n return legend !== undefined;\n // if axis is specified or null/false, then its enable/disable state is explicit\n case 'values':\n // specified legend.values is already respected, but may get transformed.\n return !!(legend !== null && legend !== void 0 && legend.values);\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (property === 'title' && value === (fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.title)) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === (legend || {})[property];\n}\nfunction parseLegendForChannel(model, channel) {\n var _normalizeTimeUnit7, _legend$encoding, _legend2;\n let legend = model.legend(channel);\n const {\n markDef,\n encoding,\n config\n } = model;\n const legendConfig = config.legend;\n const legendCmpt = new LegendComponent({}, getLegendDefWithScale(model, channel));\n parseInteractiveLegend(model, channel, legendCmpt);\n const disable = legend !== undefined ? !legend : legendConfig.disable;\n legendCmpt.set('disable', disable, legend !== undefined);\n if (disable) {\n return legendCmpt;\n }\n legend = legend || {};\n const scaleType = model.getScaleComponent(channel).get('type');\n const fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n const timeUnit = isFieldDef(fieldOrDatumDef) ? (_normalizeTimeUnit7 = normalizeTimeUnit(fieldOrDatumDef.timeUnit)) === null || _normalizeTimeUnit7 === void 0 ? void 0 : _normalizeTimeUnit7.unit : undefined;\n const orient = legend.orient || config.legend.orient || 'right';\n const legendType = getLegendType({\n legend,\n channel,\n timeUnit,\n scaleType\n });\n const direction = getDirection({\n legend,\n legendType,\n orient,\n legendConfig\n });\n const ruleParams = {\n legend,\n channel,\n model,\n markDef,\n encoding,\n fieldOrDatumDef,\n legendConfig,\n config,\n scaleType,\n orient,\n legendType,\n direction\n };\n for (const property of LEGEND_COMPONENT_PROPERTIES) {\n if (legendType === 'gradient' && property.startsWith('symbol') || legendType === 'symbol' && property.startsWith('gradient')) {\n continue;\n }\n const value = property in legendRules ? legendRules[property](ruleParams) : legend[property];\n if (value !== undefined) {\n const explicit = isExplicit$1(value, property, legend, model.fieldDef(channel));\n if (explicit || config.legend[property] === undefined) {\n legendCmpt.set(property, value, explicit);\n }\n }\n }\n const legendEncoding = (_legend$encoding = (_legend2 = legend) === null || _legend2 === void 0 ? void 0 : _legend2.encoding) !== null && _legend$encoding !== void 0 ? _legend$encoding : {};\n const selections = legendCmpt.get('selections');\n const legendEncode = {};\n const legendEncodeParams = {\n fieldOrDatumDef,\n model,\n channel,\n legendCmpt,\n legendType\n };\n for (const part of ['labels', 'legend', 'title', 'symbols', 'gradient', 'entries']) {\n var _legendEncoding$part;\n const legendEncodingPart = guideEncodeEntry((_legendEncoding$part = legendEncoding[part]) !== null && _legendEncoding$part !== void 0 ? _legendEncoding$part : {}, model);\n const value = part in legendEncodeRules ? legendEncodeRules[part](legendEncodingPart, legendEncodeParams) // apply rule\n : legendEncodingPart; // no rule -- just default values\n if (value !== undefined && !isEmpty(value)) {\n legendEncode[part] = {\n ...(selections !== null && selections !== void 0 && selections.length && isFieldDef(fieldOrDatumDef) ? {\n name: \"\".concat(varName(fieldOrDatumDef.field), \"_legend_\").concat(part)\n } : {}),\n ...(selections !== null && selections !== void 0 && selections.length ? {\n interactive: !!selections\n } : {}),\n update: value\n };\n }\n }\n if (!isEmpty(legendEncode)) {\n var _legend3;\n legendCmpt.set('encode', legendEncode, !!((_legend3 = legend) !== null && _legend3 !== void 0 && _legend3.encoding));\n }\n return legendCmpt;\n}\nfunction parseNonUnitLegend(model) {\n const {\n legends,\n resolve\n } = model.component;\n for (const child of model.children) {\n parseLegend(child);\n for (const channel of keys(child.component.legends)) {\n resolve.legend[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.legend[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n legends[channel] = mergeLegendComponent(legends[channel], child.component.legends[channel]);\n if (!legends[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the legend shared.\n // Thus, mark legend as independent and remove the legend component.\n resolve.legend[channel] = 'independent';\n delete legends[channel];\n }\n }\n }\n }\n for (const channel of keys(legends)) {\n for (const child of model.children) {\n if (!child.component.legends[channel]) {\n // skip if the child does not have a particular legend\n continue;\n }\n if (resolve.legend[channel] === 'shared') {\n // After merging shared legend, make sure to remove legend from child\n delete child.component.legends[channel];\n }\n }\n }\n return legends;\n}\nfunction mergeLegendComponent(mergedLegend, childLegend) {\n if (!mergedLegend) {\n return childLegend.clone();\n }\n const mergedOrient = mergedLegend.getWithExplicit('orient');\n const childOrient = childLegend.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n }\n let typeMerged = false;\n // Otherwise, let's merge\n for (const prop of LEGEND_COMPONENT_PROPERTIES) {\n const mergedValueWithExplicit = mergeValuesWithExplicit(mergedLegend.getWithExplicit(prop), childLegend.getWithExplicit(prop), prop, 'legend',\n // Tie breaker function\n (v1, v2) => {\n switch (prop) {\n case 'symbolType':\n return mergeSymbolType(v1, v2);\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'type':\n // There are only two types. If we have different types, then prefer symbol over gradient.\n typeMerged = true;\n return makeImplicit('symbol');\n }\n return defaultTieBreaker(v1, v2, prop, 'legend');\n });\n mergedLegend.setWithExplicit(prop, mergedValueWithExplicit);\n }\n if (typeMerged) {\n var _mergedLegend$implici, _mergedLegend$explici;\n if ((_mergedLegend$implici = mergedLegend.implicit) !== null && _mergedLegend$implici !== void 0 && (_mergedLegend$implici = _mergedLegend$implici.encode) !== null && _mergedLegend$implici !== void 0 && _mergedLegend$implici.gradient) {\n deleteNestedProperty(mergedLegend.implicit, ['encode', 'gradient']);\n }\n if ((_mergedLegend$explici = mergedLegend.explicit) !== null && _mergedLegend$explici !== void 0 && (_mergedLegend$explici = _mergedLegend$explici.encode) !== null && _mergedLegend$explici !== void 0 && _mergedLegend$explici.gradient) {\n deleteNestedProperty(mergedLegend.explicit, ['encode', 'gradient']);\n }\n }\n return mergedLegend;\n}\nfunction mergeSymbolType(st1, st2) {\n if (st2.value === 'circle') {\n // prefer \"circle\" over \"stroke\"\n return st2;\n }\n return st1;\n}\nfunction setLegendEncode(legend, part, vgProp, vgRef) {\n var _legend$encode, _a$part2, _b$update2;\n var _a, _b;\n (_legend$encode = legend.encode) !== null && _legend$encode !== void 0 ? _legend$encode : legend.encode = {};\n (_a$part2 = (_a = legend.encode)[part]) !== null && _a$part2 !== void 0 ? _a$part2 : _a[part] = {};\n (_b$update2 = (_b = legend.encode[part]).update) !== null && _b$update2 !== void 0 ? _b$update2 : _b.update = {};\n // TODO: remove as any after https://github.com/prisma/nexus-prisma/issues/291\n legend.encode[part].update[vgProp] = vgRef;\n}\nfunction assembleLegends(model) {\n const legendComponentIndex = model.component.legends;\n const legendByDomain = {};\n for (const channel of keys(legendComponentIndex)) {\n const scaleComponent = model.getScaleComponent(channel);\n const domainHash = stringify$1(scaleComponent.get('domains'));\n if (legendByDomain[domainHash]) {\n for (const mergedLegendComponent of legendByDomain[domainHash]) {\n const merged = mergeLegendComponent(mergedLegendComponent, legendComponentIndex[channel]);\n if (!merged) {\n // If cannot merge, need to add this legend separately\n legendByDomain[domainHash].push(legendComponentIndex[channel]);\n }\n }\n } else {\n legendByDomain[domainHash] = [legendComponentIndex[channel].clone()];\n }\n }\n const legends = vals(legendByDomain).flat().map(l => assembleLegend(l, model.config)).filter(l => l !== undefined);\n return legends;\n}\nfunction assembleLegend(legendCmpt, config) {\n var _legend$encode2;\n const {\n disable,\n labelExpr,\n selections,\n ...legend\n } = legendCmpt.combine();\n if (disable) {\n return undefined;\n }\n if (config.aria === false && legend.aria == undefined) {\n legend.aria = false;\n }\n if ((_legend$encode2 = legend.encode) !== null && _legend$encode2 !== void 0 && _legend$encode2.symbols) {\n const out = legend.encode.symbols.update;\n if (out.fill && out.fill['value'] !== 'transparent' && !out.stroke && !legend.stroke) {\n // For non color channel's legend, we need to override symbol stroke config from Vega config if stroke channel is not used.\n out.stroke = {\n value: 'transparent'\n };\n }\n // Remove properties that the legend is encoding.\n for (const property of LEGEND_SCALE_CHANNELS) {\n if (legend[property]) {\n delete out[property];\n }\n }\n }\n if (!legend.title) {\n // title schema doesn't include null, ''\n delete legend.title;\n }\n if (labelExpr !== undefined) {\n var _legend$encode3;\n let expr = labelExpr;\n if ((_legend$encode3 = legend.encode) !== null && _legend$encode3 !== void 0 && (_legend$encode3 = _legend$encode3.labels) !== null && _legend$encode3 !== void 0 && _legend$encode3.update && isSignalRef(legend.encode.labels.update.text)) {\n expr = replaceAll(labelExpr, 'datum.label', legend.encode.labels.update.text.signal);\n }\n setLegendEncode(legend, 'labels', 'text', {\n signal: expr\n });\n }\n return legend;\n}\nfunction assembleProjections(model) {\n if (isLayerModel(model) || isConcatModel(model)) {\n return assembleProjectionsForModelAndChildren(model);\n } else {\n return assembleProjectionForModel(model);\n }\n}\nfunction assembleProjectionsForModelAndChildren(model) {\n return model.children.reduce((projections, child) => {\n return projections.concat(child.assembleProjections());\n }, assembleProjectionForModel(model));\n}\nfunction assembleProjectionForModel(model) {\n const component = model.component.projection;\n if (!component || component.merged) {\n return [];\n }\n const projection = component.combine();\n const {\n name\n } = projection; // we need to extract name so that it is always present in the output and pass TS type validation\n if (!component.data) {\n // generate custom projection, no automatic fitting\n return [{\n name,\n // translate to center by default\n ...{\n translate: {\n signal: '[width / 2, height / 2]'\n }\n },\n // parameters, overwrite default translate if specified\n ...projection\n }];\n } else {\n // generate projection that uses extent fitting\n const size = {\n signal: \"[\".concat(component.size.map(ref => ref.signal).join(', '), \"]\")\n };\n const fits = component.data.reduce((sources, data) => {\n const source = isSignalRef(data) ? data.signal : \"data('\".concat(model.lookupDataSource(data), \"')\");\n if (!contains(sources, source)) {\n // build a unique list of sources\n sources.push(source);\n }\n return sources;\n }, []);\n if (fits.length <= 0) {\n throw new Error(\"Projection's fit didn't find any data sources\");\n }\n return [{\n name,\n size,\n fit: {\n signal: fits.length > 1 ? \"[\".concat(fits.join(', '), \"]\") : fits[0]\n },\n ...projection\n }];\n }\n}\nconst PROJECTION_PROPERTIES = ['type', 'clipAngle', 'clipExtent', 'center', 'rotate', 'precision', 'reflectX', 'reflectY', 'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];\nclass ProjectionComponent extends Split {\n constructor(name, specifiedProjection, size, data) {\n super({\n ...specifiedProjection\n },\n // all explicit properties of projection\n {\n name\n } // name as initial implicit property\n );\n\n this.specifiedProjection = specifiedProjection;\n this.size = size;\n this.data = data;\n this.merged = false;\n }\n /**\n * Whether the projection parameters should fit provided data.\n */\n get isFit() {\n return !!this.data;\n }\n}\nfunction parseProjection(model) {\n model.component.projection = isUnitModel(model) ? parseUnitProjection(model) : parseNonUnitProjections(model);\n}\nfunction parseUnitProjection(model) {\n if (model.hasProjection) {\n var _replaceExprRef;\n const proj = replaceExprRef(model.specifiedProjection);\n const fit = !(proj && (proj.scale != null || proj.translate != null));\n const size = fit ? [model.getSizeSignalRef('width'), model.getSizeSignalRef('height')] : undefined;\n const data = fit ? gatherFitData(model) : undefined;\n const projComp = new ProjectionComponent(model.projectionName(true), {\n ...((_replaceExprRef = replaceExprRef(model.config.projection)) !== null && _replaceExprRef !== void 0 ? _replaceExprRef : {}),\n ...(proj !== null && proj !== void 0 ? proj : {})\n }, size, data);\n if (!projComp.get('type')) {\n projComp.set('type', 'equalEarth', false);\n }\n return projComp;\n }\n return undefined;\n}\nfunction gatherFitData(model) {\n const data = [];\n const {\n encoding\n } = model;\n for (const posssiblePair of [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]) {\n if (getFieldOrDatumDef(encoding[posssiblePair[0]]) || getFieldOrDatumDef(encoding[posssiblePair[1]])) {\n data.push({\n signal: model.getName(\"geojson_\".concat(data.length))\n });\n }\n }\n if (model.channelHasField(SHAPE) && model.typedFieldDef(SHAPE).type === GEOJSON) {\n data.push({\n signal: model.getName(\"geojson_\".concat(data.length))\n });\n }\n if (data.length === 0) {\n // main source is geojson, so we can just use that\n data.push(model.requestDataName(DataSourceType.Main));\n }\n return data;\n}\nfunction mergeIfNoConflict(first, second) {\n const allPropertiesShared = every(PROJECTION_PROPERTIES, prop => {\n // neither has the property\n if (!has$1(first.explicit, prop) && !has$1(second.explicit, prop)) {\n return true;\n }\n // both have property and an equal value for property\n if (has$1(first.explicit, prop) && has$1(second.explicit, prop) &&\n // some properties might be signals or objects and require hashing for comparison\n deepEqual(first.get(prop), second.get(prop))) {\n return true;\n }\n return false;\n });\n const size = deepEqual(first.size, second.size);\n if (size) {\n if (allPropertiesShared) {\n return first;\n } else if (deepEqual(first.explicit, {})) {\n return second;\n } else if (deepEqual(second.explicit, {})) {\n return first;\n }\n }\n // if all properties don't match, let each unit spec have its own projection\n return null;\n}\nfunction parseNonUnitProjections(model) {\n if (model.children.length === 0) {\n return undefined;\n }\n let nonUnitProjection;\n // parse all children first\n for (const child of model.children) {\n parseProjection(child);\n }\n // analyze parsed projections, attempt to merge\n const mergable = every(model.children, child => {\n const projection = child.component.projection;\n if (!projection) {\n // child layer does not use a projection\n return true;\n } else if (!nonUnitProjection) {\n // cached 'projection' is null, cache this one\n nonUnitProjection = projection;\n return true;\n } else {\n const merge = mergeIfNoConflict(nonUnitProjection, projection);\n if (merge) {\n nonUnitProjection = merge;\n }\n return !!merge;\n }\n });\n // if cached one and all other children share the same projection,\n if (nonUnitProjection && mergable) {\n // so we can elevate it to the layer level\n const name = model.projectionName(true);\n const modelProjection = new ProjectionComponent(name, nonUnitProjection.specifiedProjection, nonUnitProjection.size, duplicate(nonUnitProjection.data));\n // rename and assign all others as merged\n for (const child of model.children) {\n const projection = child.component.projection;\n if (projection) {\n if (projection.isFit) {\n modelProjection.data.push(...child.component.projection.data);\n }\n child.renameProjection(projection.get('name'), name);\n projection.merged = true;\n }\n }\n return modelProjection;\n }\n return undefined;\n}\nfunction rangeFormula(model, fieldDef, channel, config) {\n if (binRequiresRange(fieldDef, channel)) {\n var _ref90, _model$axis;\n // read format from axis or legend, if there is no format then use config.numberFormat\n const guide = isUnitModel(model) ? (_ref90 = (_model$axis = model.axis(channel)) !== null && _model$axis !== void 0 ? _model$axis : model.legend(channel)) !== null && _ref90 !== void 0 ? _ref90 : {} : {};\n const startField = vgField(fieldDef, {\n expr: 'datum'\n });\n const endField = vgField(fieldDef, {\n expr: 'datum',\n binSuffix: 'end'\n });\n return {\n formulaAs: vgField(fieldDef, {\n binSuffix: 'range',\n forAs: true\n }),\n formula: binFormatExpression(startField, endField, guide.format, guide.formatType, config)\n };\n }\n return {};\n}\nfunction binKey(bin, field) {\n return \"\".concat(binToString(bin), \"_\").concat(field);\n}\nfunction getSignalsFromModel(model, key) {\n return {\n signal: model.getName(\"\".concat(key, \"_bins\")),\n extentSignal: model.getName(\"\".concat(key, \"_extent\"))\n };\n}\nfunction getBinSignalName(model, field, bin) {\n var _normalizeBin;\n const normalizedBin = (_normalizeBin = normalizeBin(bin, undefined)) !== null && _normalizeBin !== void 0 ? _normalizeBin : {};\n const key = binKey(normalizedBin, field);\n return model.getName(\"\".concat(key, \"_bins\"));\n}\nfunction isBinTransform(t) {\n return 'as' in t;\n}\nfunction createBinComponent(t, bin, model) {\n let as;\n let span;\n if (isBinTransform(t)) {\n as = isString(t.as) ? [t.as, \"\".concat(t.as, \"_end\")] : [t.as[0], t.as[1]];\n } else {\n as = [vgField(t, {\n forAs: true\n }), vgField(t, {\n binSuffix: 'end',\n forAs: true\n })];\n }\n const normalizedBin = {\n ...normalizeBin(bin, undefined)\n };\n const key = binKey(normalizedBin, t.field);\n const {\n signal,\n extentSignal\n } = getSignalsFromModel(model, key);\n if (isParameterExtent(normalizedBin.extent)) {\n const ext = normalizedBin.extent;\n span = parseSelectionExtent(model, ext.param, ext);\n delete normalizedBin.extent; // Vega-Lite selection extent map to Vega's span property.\n }\n\n const binComponent = {\n bin: normalizedBin,\n field: t.field,\n as: [as],\n ...(signal ? {\n signal\n } : {}),\n ...(extentSignal ? {\n extentSignal\n } : {}),\n ...(span ? {\n span\n } : {})\n };\n return {\n key,\n binComponent\n };\n}\nclass BinNode extends DataFlowNode {\n clone() {\n return new BinNode(null, duplicate(this.bins));\n }\n constructor(parent, bins) {\n super(parent);\n this.bins = bins;\n }\n static makeFromEncoding(parent, model) {\n const bins = model.reduceFieldDef((binComponentIndex, fieldDef, channel) => {\n if (isTypedFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n const {\n key,\n binComponent\n } = createBinComponent(fieldDef, fieldDef.bin, model);\n binComponentIndex[key] = {\n ...binComponent,\n ...binComponentIndex[key],\n ...rangeFormula(model, fieldDef, channel, model.config)\n };\n }\n return binComponentIndex;\n }, {});\n if (isEmpty(bins)) {\n return null;\n }\n return new BinNode(parent, bins);\n }\n /**\n * Creates a bin node from BinTransform.\n * The optional parameter should provide\n */\n static makeFromTransform(parent, t, model) {\n const {\n key,\n binComponent\n } = createBinComponent(t, t.bin, model);\n return new BinNode(parent, {\n [key]: binComponent\n });\n }\n /**\n * Merge bin nodes. This method either integrates the bin config from the other node\n * or if this node already has a bin config, renames the corresponding signal in the model.\n */\n merge(other, renameSignal) {\n for (const key of keys(other.bins)) {\n if (key in this.bins) {\n renameSignal(other.bins[key].signal, this.bins[key].signal);\n // Ensure that we don't have duplicate names for signal pairs\n this.bins[key].as = unique([...this.bins[key].as, ...other.bins[key].as], hash);\n } else {\n this.bins[key] = other.bins[key];\n }\n }\n for (const child of other.children) {\n other.removeChild(child);\n child.parent = this;\n }\n other.remove();\n }\n producedFields() {\n return new Set(vals(this.bins).map(c => c.as).flat(2));\n }\n dependentFields() {\n return new Set(vals(this.bins).map(c => c.field));\n }\n hash() {\n return \"Bin \".concat(hash(this.bins));\n }\n assemble() {\n return vals(this.bins).flatMap(bin => {\n const transform = [];\n const [binAs, ...remainingAs] = bin.as;\n const {\n extent,\n ...params\n } = bin.bin;\n const binTrans = {\n type: 'bin',\n field: replacePathInField(bin.field),\n as: binAs,\n signal: bin.signal,\n ...(!isParameterExtent(extent) ? {\n extent\n } : {\n extent: null\n }),\n ...(bin.span ? {\n span: {\n signal: \"span(\".concat(bin.span, \")\")\n }\n } : {}),\n ...params\n };\n if (!extent && bin.extentSignal) {\n transform.push({\n type: 'extent',\n field: replacePathInField(bin.field),\n signal: bin.extentSignal\n });\n binTrans.extent = {\n signal: bin.extentSignal\n };\n }\n transform.push(binTrans);\n for (const as of remainingAs) {\n for (let i = 0; i < 2; i++) {\n transform.push({\n type: 'formula',\n expr: vgField({\n field: binAs[i]\n }, {\n expr: 'datum'\n }),\n as: as[i]\n });\n }\n }\n if (bin.formula) {\n transform.push({\n type: 'formula',\n expr: bin.formula,\n as: bin.formulaAs\n });\n }\n return transform;\n });\n }\n}\nfunction addDimension(dims, channel, fieldDef, model) {\n var _fieldDef$scale2;\n const channelDef2 = isUnitModel(model) ? model.encoding[getSecondaryRangeChannel(channel)] : undefined;\n if (isTypedFieldDef(fieldDef) && isUnitModel(model) && hasBandEnd(fieldDef, channelDef2, model.markDef, model.config)) {\n dims.add(vgField(fieldDef, {}));\n dims.add(vgField(fieldDef, {\n suffix: 'end'\n }));\n if (fieldDef.bin && binRequiresRange(fieldDef, channel)) {\n dims.add(vgField(fieldDef, {\n binSuffix: 'range'\n }));\n }\n } else if (isGeoPositionChannel(channel)) {\n const posChannel = getPositionChannelFromLatLong(channel);\n dims.add(model.getName(posChannel));\n } else {\n dims.add(vgField(fieldDef));\n }\n if (isScaleFieldDef(fieldDef) && isFieldRange((_fieldDef$scale2 = fieldDef.scale) === null || _fieldDef$scale2 === void 0 ? void 0 : _fieldDef$scale2.range)) {\n dims.add(fieldDef.scale.range.field);\n }\n return dims;\n}\nfunction mergeMeasures(parentMeasures, childMeasures) {\n for (const field of keys(childMeasures)) {\n // when we merge a measure, we either have to add an aggregation operator or even a new field\n const ops = childMeasures[field];\n for (const op of keys(ops)) {\n if (field in parentMeasures) {\n var _parentMeasures$field;\n // add operator to existing measure field\n parentMeasures[field][op] = new Set([...((_parentMeasures$field = parentMeasures[field][op]) !== null && _parentMeasures$field !== void 0 ? _parentMeasures$field : []), ...ops[op]]);\n } else {\n parentMeasures[field] = {\n [op]: ops[op]\n };\n }\n }\n }\n}\nclass AggregateNode extends DataFlowNode {\n clone() {\n return new AggregateNode(null, new Set(this.dimensions), duplicate(this.measures));\n }\n /**\n * @param dimensions string set for dimensions\n * @param measures dictionary mapping field name => dict of aggregation functions and names to use\n */\n constructor(parent, dimensions, measures) {\n super(parent);\n this.dimensions = dimensions;\n this.measures = measures;\n }\n get groupBy() {\n return this.dimensions;\n }\n static makeFromEncoding(parent, model) {\n let isAggregate = false;\n model.forEachFieldDef(fd => {\n if (fd.aggregate) {\n isAggregate = true;\n }\n });\n const meas = {};\n const dims = new Set();\n if (!isAggregate) {\n // no need to create this node if the model has no aggregation\n return null;\n }\n model.forEachFieldDef((fieldDef, channel) => {\n const {\n aggregate,\n field\n } = fieldDef;\n if (aggregate) {\n if (aggregate === 'count') {\n var _meas$;\n (_meas$ = meas['*']) !== null && _meas$ !== void 0 ? _meas$ : meas['*'] = {};\n meas['*']['count'] = new Set([vgField(fieldDef, {\n forAs: true\n })]);\n } else {\n if (isArgminDef(aggregate) || isArgmaxDef(aggregate)) {\n var _meas$argField;\n const op = isArgminDef(aggregate) ? 'argmin' : 'argmax';\n const argField = aggregate[op];\n (_meas$argField = meas[argField]) !== null && _meas$argField !== void 0 ? _meas$argField : meas[argField] = {};\n meas[argField][op] = new Set([vgField({\n op,\n field: argField\n }, {\n forAs: true\n })]);\n } else {\n var _meas$field;\n (_meas$field = meas[field]) !== null && _meas$field !== void 0 ? _meas$field : meas[field] = {};\n meas[field][aggregate] = new Set([vgField(fieldDef, {\n forAs: true\n })]);\n }\n // For scale channel with domain === 'unaggregated', add min/max so we can use their union as unaggregated domain\n if (isScaleChannel(channel) && model.scaleDomain(channel) === 'unaggregated') {\n var _meas$field2;\n (_meas$field2 = meas[field]) !== null && _meas$field2 !== void 0 ? _meas$field2 : meas[field] = {};\n meas[field]['min'] = new Set([vgField({\n field,\n aggregate: 'min'\n }, {\n forAs: true\n })]);\n meas[field]['max'] = new Set([vgField({\n field,\n aggregate: 'max'\n }, {\n forAs: true\n })]);\n }\n }\n } else {\n addDimension(dims, channel, fieldDef, model);\n }\n });\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n static makeFromTransform(parent, t) {\n const dims = new Set();\n const meas = {};\n for (const s of t.aggregate) {\n const {\n op,\n field,\n as\n } = s;\n if (op) {\n if (op === 'count') {\n var _meas$2;\n (_meas$2 = meas['*']) !== null && _meas$2 !== void 0 ? _meas$2 : meas['*'] = {};\n meas['*']['count'] = new Set([as ? as : vgField(s, {\n forAs: true\n })]);\n } else {\n var _meas$field3;\n (_meas$field3 = meas[field]) !== null && _meas$field3 !== void 0 ? _meas$field3 : meas[field] = {};\n meas[field][op] = new Set([as ? as : vgField(s, {\n forAs: true\n })]);\n }\n }\n }\n for (const s of (_t$groupby = t.groupby) !== null && _t$groupby !== void 0 ? _t$groupby : []) {\n var _t$groupby;\n dims.add(s);\n }\n if (dims.size + keys(meas).length === 0) {\n return null;\n }\n return new AggregateNode(parent, dims, meas);\n }\n merge(other) {\n if (setEqual(this.dimensions, other.dimensions)) {\n mergeMeasures(this.measures, other.measures);\n return true;\n }\n debug$2('different dimensions, cannot merge');\n return false;\n }\n addDimensions(fields) {\n fields.forEach(this.dimensions.add, this.dimensions);\n }\n dependentFields() {\n return new Set([...this.dimensions, ...keys(this.measures)]);\n }\n producedFields() {\n const out = new Set();\n for (const field of keys(this.measures)) {\n for (const op of keys(this.measures[field])) {\n const m = this.measures[field][op];\n if (m.size === 0) {\n out.add(\"\".concat(op, \"_\").concat(field));\n } else {\n m.forEach(out.add, out);\n }\n }\n }\n return out;\n }\n hash() {\n return \"Aggregate \".concat(hash({\n dimensions: this.dimensions,\n measures: this.measures\n }));\n }\n assemble() {\n const ops = [];\n const fields = [];\n const as = [];\n for (const field of keys(this.measures)) {\n for (const op of keys(this.measures[field])) {\n for (const alias of this.measures[field][op]) {\n as.push(alias);\n ops.push(op);\n fields.push(field === '*' ? null : replacePathInField(field));\n }\n }\n }\n const result = {\n type: 'aggregate',\n groupby: [...this.dimensions].map(replacePathInField),\n ops,\n fields,\n as\n };\n return result;\n }\n}\n\n/**\n * A node that helps us track what fields we are faceting by.\n */\nclass FacetNode extends DataFlowNode {\n /**\n * @param model The facet model.\n * @param name The name that this facet source will have.\n * @param data The source data for this facet data.\n */\n constructor(parent, model, name, data) {\n super(parent);\n this.model = model;\n this.name = name;\n this.data = data;\n for (const channel of FACET_CHANNELS) {\n const fieldDef = model.facet[channel];\n if (fieldDef) {\n const {\n bin,\n sort\n } = fieldDef;\n this[channel] = {\n name: model.getName(\"\".concat(channel, \"_domain\")),\n fields: [vgField(fieldDef), ...(isBinning(bin) ? [vgField(fieldDef, {\n binSuffix: 'end'\n })] : [])],\n ...(isSortField(sort) ? {\n sortField: sort\n } : isArray(sort) ? {\n sortIndexField: sortArrayIndexField(fieldDef, channel)\n } : {})\n };\n }\n }\n this.childModel = model.child;\n }\n hash() {\n let out = \"Facet\";\n for (const channel of FACET_CHANNELS) {\n if (this[channel]) {\n out += \" \".concat(channel.charAt(0), \":\").concat(hash(this[channel]));\n }\n }\n return out;\n }\n get fields() {\n const f = [];\n for (const channel of FACET_CHANNELS) {\n var _this$channel;\n if ((_this$channel = this[channel]) !== null && _this$channel !== void 0 && _this$channel.fields) {\n f.push(...this[channel].fields);\n }\n }\n return f;\n }\n dependentFields() {\n const depFields = new Set(this.fields);\n for (const channel of FACET_CHANNELS) {\n if (this[channel]) {\n if (this[channel].sortField) {\n depFields.add(this[channel].sortField.field);\n }\n if (this[channel].sortIndexField) {\n depFields.add(this[channel].sortIndexField);\n }\n }\n }\n return depFields;\n }\n producedFields() {\n return new Set(); // facet does not produce any new fields\n }\n /**\n * The name to reference this source is its name.\n */\n getSource() {\n return this.name;\n }\n getChildIndependentFieldsWithStep() {\n const childIndependentFieldsWithStep = {};\n for (const channel of POSITION_SCALE_CHANNELS) {\n const childScaleComponent = this.childModel.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n // independent scale\n const type = childScaleComponent.get('type');\n const range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const domain = assembleDomain(this.childModel, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n childIndependentFieldsWithStep[channel] = field;\n } else {\n warn(unknownField(channel));\n }\n }\n }\n }\n return childIndependentFieldsWithStep;\n }\n assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep) {\n const childChannel = {\n row: 'y',\n column: 'x',\n facet: undefined\n }[channel];\n const fields = [];\n const ops = [];\n const as = [];\n if (childChannel && childIndependentFieldsWithStep && childIndependentFieldsWithStep[childChannel]) {\n if (crossedDataName) {\n // If there is a crossed data, calculate max\n fields.push(\"distinct_\".concat(childIndependentFieldsWithStep[childChannel]));\n ops.push('max');\n } else {\n // If there is no crossed data, just calculate distinct\n fields.push(childIndependentFieldsWithStep[childChannel]);\n ops.push('distinct');\n }\n // Although it is technically a max, just name it distinct so it's easier to refer to it\n as.push(\"distinct_\".concat(childIndependentFieldsWithStep[childChannel]));\n }\n const {\n sortField,\n sortIndexField\n } = this[channel];\n if (sortField) {\n const {\n op = DEFAULT_SORT_OP,\n field\n } = sortField;\n fields.push(field);\n ops.push(op);\n as.push(vgField(sortField, {\n forAs: true\n }));\n } else if (sortIndexField) {\n fields.push(sortIndexField);\n ops.push('max');\n as.push(sortIndexField);\n }\n return {\n name: this[channel].name,\n // Use data from the crossed one if it exist\n source: crossedDataName !== null && crossedDataName !== void 0 ? crossedDataName : this.data,\n transform: [{\n type: 'aggregate',\n groupby: this[channel].fields,\n ...(fields.length ? {\n fields,\n ops,\n as\n } : {})\n }]\n };\n }\n assembleFacetHeaderData(childIndependentFieldsWithStep) {\n const {\n columns\n } = this.model.layout;\n const {\n layoutHeaders\n } = this.model.component;\n const data = [];\n const hasSharedAxis = {};\n for (const headerChannel of HEADER_CHANNELS) {\n for (const headerType of HEADER_TYPES) {\n var _ref91;\n const headers = (_ref91 = layoutHeaders[headerChannel] && layoutHeaders[headerChannel][headerType]) !== null && _ref91 !== void 0 ? _ref91 : [];\n for (const header of headers) {\n var _header$axes;\n if (((_header$axes = header.axes) === null || _header$axes === void 0 ? void 0 : _header$axes.length) > 0) {\n hasSharedAxis[headerChannel] = true;\n break;\n }\n }\n }\n if (hasSharedAxis[headerChannel]) {\n const cardinality = \"length(data(\\\"\".concat(this.facet.name, \"\\\"))\");\n const stop = headerChannel === 'row' ? columns ? {\n signal: \"ceil(\".concat(cardinality, \" / \").concat(columns, \")\")\n } : 1 : columns ? {\n signal: \"min(\".concat(cardinality, \", \").concat(columns, \")\")\n } : {\n signal: cardinality\n };\n data.push({\n name: \"\".concat(this.facet.name, \"_\").concat(headerChannel),\n transform: [{\n type: 'sequence',\n start: 0,\n stop\n }]\n });\n }\n }\n const {\n row,\n column\n } = hasSharedAxis;\n if (row || column) {\n data.unshift(this.assembleRowColumnHeaderData('facet', null, childIndependentFieldsWithStep));\n }\n return data;\n }\n assemble() {\n const data = [];\n let crossedDataName = null;\n const childIndependentFieldsWithStep = this.getChildIndependentFieldsWithStep();\n const {\n column,\n row,\n facet\n } = this;\n if (column && row && (childIndependentFieldsWithStep.x || childIndependentFieldsWithStep.y)) {\n var _childIndependentFiel, _childIndependentFiel2;\n // Need to create a cross dataset to correctly calculate cardinality\n crossedDataName = \"cross_\".concat(this.column.name, \"_\").concat(this.row.name);\n const fields = [].concat((_childIndependentFiel = childIndependentFieldsWithStep.x) !== null && _childIndependentFiel !== void 0 ? _childIndependentFiel : [], (_childIndependentFiel2 = childIndependentFieldsWithStep.y) !== null && _childIndependentFiel2 !== void 0 ? _childIndependentFiel2 : []);\n const ops = fields.map(() => 'distinct');\n data.push({\n name: crossedDataName,\n source: this.data,\n transform: [{\n type: 'aggregate',\n groupby: this.fields,\n fields,\n ops\n }]\n });\n }\n for (const channel of [COLUMN, ROW]) {\n if (this[channel]) {\n data.push(this.assembleRowColumnHeaderData(channel, crossedDataName, childIndependentFieldsWithStep));\n }\n }\n if (facet) {\n const facetData = this.assembleFacetHeaderData(childIndependentFieldsWithStep);\n if (facetData) {\n data.push(...facetData);\n }\n }\n return data;\n }\n}\n\n/**\n * Remove quotes from a string.\n */\nfunction unquote(pattern) {\n if (pattern.startsWith(\"'\") && pattern.endsWith(\"'\") || pattern.startsWith('\"') && pattern.endsWith('\"')) {\n return pattern.slice(1, -1);\n }\n return pattern;\n}\n/**\n * @param field The field.\n * @param parse What to parse the field as.\n */\nfunction parseExpression(field, parse) {\n const f = accessPathWithDatum(field);\n if (parse === 'number') {\n return \"toNumber(\".concat(f, \")\");\n } else if (parse === 'boolean') {\n return \"toBoolean(\".concat(f, \")\");\n } else if (parse === 'string') {\n return \"toString(\".concat(f, \")\");\n } else if (parse === 'date') {\n return \"toDate(\".concat(f, \")\");\n } else if (parse === 'flatten') {\n return f;\n } else if (parse.startsWith('date:')) {\n const specifier = unquote(parse.slice(5, parse.length));\n return \"timeParse(\".concat(f, \",'\").concat(specifier, \"')\");\n } else if (parse.startsWith('utc:')) {\n const specifier = unquote(parse.slice(4, parse.length));\n return \"utcParse(\".concat(f, \",'\").concat(specifier, \"')\");\n } else {\n warn(unrecognizedParse(parse));\n return null;\n }\n}\nfunction getImplicitFromFilterTransform(transform) {\n const implicit = {};\n forEachLeaf(transform.filter, filter => {\n if (isFieldPredicate(filter)) {\n // Automatically add a parse node for filters with filter objects\n let val = null;\n // For EqualFilter, just use the equal property.\n // For RangeFilter and OneOfFilter, all array members should have\n // the same type, so we only use the first one.\n if (isFieldEqualPredicate(filter)) {\n val = signalRefOrValue(filter.equal);\n } else if (isFieldLTEPredicate(filter)) {\n val = signalRefOrValue(filter.lte);\n } else if (isFieldLTPredicate(filter)) {\n val = signalRefOrValue(filter.lt);\n } else if (isFieldGTPredicate(filter)) {\n val = signalRefOrValue(filter.gt);\n } else if (isFieldGTEPredicate(filter)) {\n val = signalRefOrValue(filter.gte);\n } else if (isFieldRangePredicate(filter)) {\n val = filter.range[0];\n } else if (isFieldOneOfPredicate(filter)) {\n var _filter$oneOf;\n val = ((_filter$oneOf = filter.oneOf) !== null && _filter$oneOf !== void 0 ? _filter$oneOf : filter['in'])[0];\n } // else -- for filter expression, we can't infer anything\n if (val) {\n if (isDateTime(val)) {\n implicit[filter.field] = 'date';\n } else if (isNumber$1(val)) {\n implicit[filter.field] = 'number';\n } else if (isString(val)) {\n implicit[filter.field] = 'string';\n }\n }\n if (filter.timeUnit) {\n implicit[filter.field] = 'date';\n }\n }\n });\n return implicit;\n}\n/**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\nfunction getImplicitFromEncoding(model) {\n const implicit = {};\n function add(fieldDef) {\n if (isFieldOrDatumDefForTimeFormat(fieldDef)) {\n implicit[fieldDef.field] = 'date';\n } else if (fieldDef.type === 'quantitative' && isMinMaxOp(fieldDef.aggregate) // we need to parse numbers to support correct min and max\n ) {\n implicit[fieldDef.field] = 'number';\n } else if (accessPathDepth(fieldDef.field) > 1) {\n // For non-date/non-number (strings and booleans), derive a flattened field for a referenced nested field.\n // (Parsing numbers / dates already flattens numeric and temporal fields.)\n if (!(fieldDef.field in implicit)) {\n implicit[fieldDef.field] = 'flatten';\n }\n } else if (isScaleFieldDef(fieldDef) && isSortField(fieldDef.sort) && accessPathDepth(fieldDef.sort.field) > 1) {\n // Flatten fields that we sort by but that are not otherwise flattened.\n if (!(fieldDef.sort.field in implicit)) {\n implicit[fieldDef.sort.field] = 'flatten';\n }\n }\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n // Parse encoded fields\n model.forEachFieldDef((fieldDef, channel) => {\n if (isTypedFieldDef(fieldDef)) {\n add(fieldDef);\n } else {\n const mainChannel = getMainRangeChannel(channel);\n const mainFieldDef = model.fieldDef(mainChannel);\n add({\n ...fieldDef,\n type: mainFieldDef.type\n });\n }\n });\n }\n // Parse quantitative dimension fields of path marks as numbers so that we sort them correctly.\n if (isUnitModel(model)) {\n const {\n mark,\n markDef,\n encoding\n } = model;\n if (isPathMark(mark) &&\n // No need to sort by dimension if we have a connected scatterplot (order channel is present)\n !model.encoding.order) {\n const dimensionChannel = markDef.orient === 'horizontal' ? 'y' : 'x';\n const dimensionChannelDef = encoding[dimensionChannel];\n if (isFieldDef(dimensionChannelDef) && dimensionChannelDef.type === 'quantitative' && !(dimensionChannelDef.field in implicit)) {\n implicit[dimensionChannelDef.field] = 'number';\n }\n }\n }\n return implicit;\n}\n/**\n * Creates a parse node for implicit parsing from a model and updates ancestorParse.\n */\nfunction getImplicitFromSelection(model) {\n const implicit = {};\n if (isUnitModel(model) && model.component.selection) {\n for (const name of keys(model.component.selection)) {\n const selCmpt = model.component.selection[name];\n for (const proj of selCmpt.project.items) {\n if (!proj.channel && accessPathDepth(proj.field) > 1) {\n implicit[proj.field] = 'flatten';\n }\n }\n }\n }\n return implicit;\n}\nclass ParseNode extends DataFlowNode {\n clone() {\n return new ParseNode(null, duplicate(this._parse));\n }\n constructor(parent, parse) {\n super(parent);\n this._parse = parse;\n }\n hash() {\n return \"Parse \".concat(hash(this._parse));\n }\n /**\n * Creates a parse node from a data.format.parse and updates ancestorParse.\n */\n static makeExplicit(parent, model, ancestorParse) {\n var _data$format;\n // Custom parse\n let explicit = {};\n const data = model.data;\n if (!isGenerator(data) && data !== null && data !== void 0 && (_data$format = data.format) !== null && _data$format !== void 0 && _data$format.parse) {\n explicit = data.format.parse;\n }\n return this.makeWithAncestors(parent, explicit, {}, ancestorParse);\n }\n /**\n * Creates a parse node from \"explicit\" parse and \"implicit\" parse and updates ancestorParse.\n */\n static makeWithAncestors(parent, explicit, implicit, ancestorParse) {\n // We should not parse what has already been parsed in a parent (explicitly or implicitly) or what has been derived (maked as \"derived\"). We also don't need to flatten a field that has already been parsed.\n for (const field of keys(implicit)) {\n const parsedAs = ancestorParse.getWithExplicit(field);\n if (parsedAs.value !== undefined) {\n // We always ignore derived fields even if they are implicitly defined because we expect users to create the right types.\n if (parsedAs.explicit || parsedAs.value === implicit[field] || parsedAs.value === 'derived' || implicit[field] === 'flatten') {\n delete implicit[field];\n } else {\n warn(differentParse(field, implicit[field], parsedAs.value));\n }\n }\n }\n for (const field of keys(explicit)) {\n const parsedAs = ancestorParse.get(field);\n if (parsedAs !== undefined) {\n // Don't parse a field again if it has been parsed with the same type already.\n if (parsedAs === explicit[field]) {\n delete explicit[field];\n } else {\n warn(differentParse(field, explicit[field], parsedAs));\n }\n }\n }\n const parse = new Split(explicit, implicit);\n // add the format parse from this model so that children don't parse the same field again\n ancestorParse.copyAll(parse);\n // copy only non-null parses\n const p = {};\n for (const key of keys(parse.combine())) {\n const val = parse.get(key);\n if (val !== null) {\n p[key] = val;\n }\n }\n if (keys(p).length === 0 || ancestorParse.parseNothing) {\n return null;\n }\n return new ParseNode(parent, p);\n }\n get parse() {\n return this._parse;\n }\n merge(other) {\n this._parse = {\n ...this._parse,\n ...other.parse\n };\n other.remove();\n }\n /**\n * Assemble an object for Vega's format.parse property.\n */\n assembleFormatParse() {\n const formatParse = {};\n for (const field of keys(this._parse)) {\n const p = this._parse[field];\n if (accessPathDepth(field) === 1) {\n formatParse[field] = p;\n }\n }\n return formatParse;\n }\n // format parse depends and produces all fields in its parse\n producedFields() {\n return new Set(keys(this._parse));\n }\n dependentFields() {\n return new Set(keys(this._parse));\n }\n assembleTransforms() {\n let onlyNested = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return keys(this._parse).filter(field => onlyNested ? accessPathDepth(field) > 1 : true).map(field => {\n const expr = parseExpression(field, this._parse[field]);\n if (!expr) {\n return null;\n }\n const formula = {\n type: 'formula',\n expr,\n as: removePathFromField(field) // Vega output is always flattened\n };\n\n return formula;\n }).filter(t => t !== null);\n }\n}\nclass IdentifierNode extends DataFlowNode {\n clone() {\n return new IdentifierNode(null);\n }\n constructor(parent) {\n super(parent);\n }\n dependentFields() {\n return new Set();\n }\n producedFields() {\n return new Set([SELECTION_ID]);\n }\n hash() {\n return 'Identifier';\n }\n assemble() {\n return {\n type: 'identifier',\n as: SELECTION_ID\n };\n }\n}\nclass GraticuleNode extends DataFlowNode {\n clone() {\n return new GraticuleNode(null, this.params);\n }\n constructor(parent, params) {\n super(parent);\n this.params = params;\n }\n dependentFields() {\n return new Set();\n }\n producedFields() {\n return undefined; // there should never be a node before graticule\n }\n\n hash() {\n return \"Graticule \".concat(hash(this.params));\n }\n assemble() {\n return {\n type: 'graticule',\n ...(this.params === true ? {} : this.params)\n };\n }\n}\nclass SequenceNode extends DataFlowNode {\n clone() {\n return new SequenceNode(null, this.params);\n }\n constructor(parent, params) {\n super(parent);\n this.params = params;\n }\n dependentFields() {\n return new Set();\n }\n producedFields() {\n var _this$params$as;\n return new Set([(_this$params$as = this.params.as) !== null && _this$params$as !== void 0 ? _this$params$as : 'data']);\n }\n hash() {\n return \"Hash \".concat(hash(this.params));\n }\n assemble() {\n return {\n type: 'sequence',\n ...this.params\n };\n }\n}\nclass SourceNode extends DataFlowNode {\n constructor(data) {\n var _data;\n super(null); // source cannot have parent\n (_data = data) !== null && _data !== void 0 ? _data : data = {\n name: 'source'\n };\n let format;\n if (!isGenerator(data)) {\n format = data.format ? {\n ...omit(data.format, ['parse'])\n } : {};\n }\n if (isInlineData(data)) {\n this._data = {\n values: data.values\n };\n } else if (isUrlData(data)) {\n this._data = {\n url: data.url\n };\n if (!format.type) {\n // Extract extension from URL using snippet from\n // http://stackoverflow.com/questions/680929/how-to-extract-extension-from-filename-string-in-javascript\n let defaultExtension = /(?:\\.([^.]+))?$/.exec(data.url)[1];\n if (!contains(['json', 'csv', 'tsv', 'dsv', 'topojson'], defaultExtension)) {\n defaultExtension = 'json';\n }\n // defaultExtension has type string but we ensure that it is DataFormatType above\n format.type = defaultExtension;\n }\n } else if (isSphereGenerator(data)) {\n // hardwire GeoJSON sphere data into output specification\n this._data = {\n values: [{\n type: 'Sphere'\n }]\n };\n } else if (isNamedData(data) || isGenerator(data)) {\n this._data = {};\n }\n // set flag to check if generator\n this._generator = isGenerator(data);\n // any dataset can be named\n if (data.name) {\n this._name = data.name;\n }\n if (format && !isEmpty(format)) {\n this._data.format = format;\n }\n }\n dependentFields() {\n return new Set();\n }\n producedFields() {\n return undefined; // we don't know what this source produces\n }\n\n get data() {\n return this._data;\n }\n hasName() {\n return !!this._name;\n }\n get isGenerator() {\n return this._generator;\n }\n get dataName() {\n return this._name;\n }\n set dataName(name) {\n this._name = name;\n }\n set parent(parent) {\n throw new Error('Source nodes have to be roots.');\n }\n remove() {\n throw new Error('Source nodes are roots and cannot be removed.');\n }\n hash() {\n throw new Error('Cannot hash sources');\n }\n assemble() {\n return {\n name: this._name,\n ...this._data,\n transform: []\n };\n }\n}\nvar __classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n};\nvar __classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Optimizer_modified;\n/**\n * Whether this dataflow node is the source of the dataflow that produces data i.e. a source or a generator.\n */\nfunction isDataSourceNode(node) {\n return node instanceof SourceNode || node instanceof GraticuleNode || node instanceof SequenceNode;\n}\n/**\n * Abstract base class for Dataflow optimizers.\n * Contains only mutation handling logic. Subclasses need to implement iteration logic.\n */\nclass Optimizer {\n constructor() {\n _Optimizer_modified.set(this, void 0);\n __classPrivateFieldSet(this, _Optimizer_modified, false, \"f\");\n }\n // Once true, #modified is never set to false\n setModified() {\n __classPrivateFieldSet(this, _Optimizer_modified, true, \"f\");\n }\n get modifiedFlag() {\n return __classPrivateFieldGet(this, _Optimizer_modified, \"f\");\n }\n}\n_Optimizer_modified = new WeakMap();\n/**\n * Starts from a node and runs the optimization function (the \"run\" method) upwards to the root,\n * depending on the continue and modified flag values returned by the optimization function.\n */\nclass BottomUpOptimizer extends Optimizer {\n /**\n * Compute a map of node depths that we can use to determine a topological sort order.\n */\n getNodeDepths(node, depth, depths) {\n depths.set(node, depth);\n for (const child of node.children) {\n this.getNodeDepths(child, depth + 1, depths);\n }\n return depths;\n }\n /**\n * Run the optimizer on all nodes starting from the leaves.\n */\n optimize(node) {\n const depths = this.getNodeDepths(node, 0, new Map());\n const topologicalSort = [...depths.entries()].sort((a, b) => b[1] - a[1]);\n for (const tuple of topologicalSort) {\n this.run(tuple[0]);\n }\n return this.modifiedFlag;\n }\n}\n/**\n * The optimizer function (the \"run\" method), is invoked on the given node and then continues recursively.\n */\nclass TopDownOptimizer extends Optimizer {\n /**\n * Run the optimizer depth first on all nodes starting from the roots.\n */\n optimize(node) {\n this.run(node);\n for (const child of node.children) {\n this.optimize(child);\n }\n return this.modifiedFlag;\n }\n}\n\n/**\n * Merge identical nodes at forks by comparing hashes.\n *\n * Does not need to iterate from leaves so we implement this with recursion as it's a bit simpler.\n */\nclass MergeIdenticalNodes extends TopDownOptimizer {\n mergeNodes(parent, nodes) {\n const mergedNode = nodes.shift();\n for (const node of nodes) {\n parent.removeChild(node);\n node.parent = mergedNode;\n node.remove();\n }\n }\n run(node) {\n const hashes = node.children.map(x => x.hash());\n const buckets = {};\n for (let i = 0; i < hashes.length; i++) {\n if (buckets[hashes[i]] === undefined) {\n buckets[hashes[i]] = [node.children[i]];\n } else {\n buckets[hashes[i]].push(node.children[i]);\n }\n }\n for (const k of keys(buckets)) {\n if (buckets[k].length > 1) {\n this.setModified();\n this.mergeNodes(node, buckets[k]);\n }\n }\n }\n}\n/**\n * Optimizer that removes identifier nodes that are not needed for selections.\n */\nclass RemoveUnnecessaryIdentifierNodes extends TopDownOptimizer {\n constructor(model) {\n super();\n this.requiresSelectionId = model && requiresSelectionId(model);\n }\n run(node) {\n if (node instanceof IdentifierNode) {\n // Only preserve IdentifierNodes if we have default discrete selections\n // in our model tree, and if the nodes come after tuple producing nodes.\n if (!(this.requiresSelectionId && (isDataSourceNode(node.parent) || node.parent instanceof AggregateNode || node.parent instanceof ParseNode))) {\n this.setModified();\n node.remove();\n }\n }\n }\n}\n/**\n * Removes duplicate time unit nodes (as determined by the name of the output field) that may be generated due to\n * selections projected over time units. Only keeps the first time unit in any branch.\n *\n * This optimizer is a custom top down optimizer that keep track of produced fields in a branch.\n */\nclass RemoveDuplicateTimeUnits extends Optimizer {\n optimize(node) {\n this.run(node, new Set());\n return this.modifiedFlag;\n }\n run(node, timeUnitFields) {\n let producedFields = new Set();\n if (node instanceof TimeUnitNode) {\n producedFields = node.producedFields();\n if (hasIntersection(producedFields, timeUnitFields)) {\n this.setModified();\n node.removeFormulas(timeUnitFields);\n if (node.producedFields.length === 0) {\n node.remove();\n }\n }\n }\n for (const child of node.children) {\n this.run(child, new Set([...timeUnitFields, ...producedFields]));\n }\n }\n}\n/**\n * Remove output nodes that are not required.\n */\nclass RemoveUnnecessaryOutputNodes extends TopDownOptimizer {\n constructor() {\n super();\n }\n run(node) {\n if (node instanceof OutputNode && !node.isRequired()) {\n this.setModified();\n node.remove();\n }\n }\n}\n/**\n * Move parse nodes up to forks and merges them if possible.\n */\nclass MoveParseUp extends BottomUpOptimizer {\n run(node) {\n if (isDataSourceNode(node)) {\n return;\n }\n if (node.numChildren() > 1) {\n // Don't move parse further up but continue with parent.\n return;\n }\n for (const child of node.children) {\n if (child instanceof ParseNode) {\n if (node instanceof ParseNode) {\n this.setModified();\n node.merge(child);\n } else {\n // Don't swap with nodes that produce something that the parse node depends on (e.g. lookup).\n if (fieldIntersection(node.producedFields(), child.dependentFields())) {\n continue;\n }\n this.setModified();\n child.swapWithParent();\n }\n }\n }\n return;\n }\n}\n/**\n * Inserts an intermediate ParseNode containing all non-conflicting parse fields and removes the empty ParseNodes.\n *\n * We assume that dependent paths that do not have a parse node can be just merged.\n */\nclass MergeParse extends BottomUpOptimizer {\n run(node) {\n const originalChildren = [...node.children];\n const parseChildren = node.children.filter(child => child instanceof ParseNode);\n if (node.numChildren() > 1 && parseChildren.length >= 1) {\n const commonParse = {};\n const conflictingParse = new Set();\n for (const parseNode of parseChildren) {\n const parse = parseNode.parse;\n for (const k of keys(parse)) {\n if (!(k in commonParse)) {\n commonParse[k] = parse[k];\n } else if (commonParse[k] !== parse[k]) {\n conflictingParse.add(k);\n }\n }\n }\n for (const field of conflictingParse) {\n delete commonParse[field];\n }\n if (!isEmpty(commonParse)) {\n this.setModified();\n const mergedParseNode = new ParseNode(node, commonParse);\n for (const childNode of originalChildren) {\n if (childNode instanceof ParseNode) {\n for (const key of keys(commonParse)) {\n delete childNode.parse[key];\n }\n }\n node.removeChild(childNode);\n childNode.parent = mergedParseNode;\n // remove empty parse nodes\n if (childNode instanceof ParseNode && keys(childNode.parse).length === 0) {\n childNode.remove();\n }\n }\n }\n }\n }\n}\n/**\n * Repeatedly remove leaf nodes that are not output or facet nodes.\n * The reason is that we don't need subtrees that don't have any output nodes.\n * Facet nodes are needed for the row or column domains.\n */\nclass RemoveUnusedSubtrees extends BottomUpOptimizer {\n run(node) {\n if (node instanceof OutputNode || node.numChildren() > 0 || node instanceof FacetNode) ;else if (node instanceof SourceNode) ;else {\n this.setModified();\n node.remove();\n }\n }\n}\n/**\n * Merge adjacent time unit nodes.\n */\nclass MergeTimeUnits extends BottomUpOptimizer {\n run(node) {\n const timeUnitChildren = node.children.filter(x => x instanceof TimeUnitNode);\n const combination = timeUnitChildren.pop();\n for (const timeUnit of timeUnitChildren) {\n this.setModified();\n combination.merge(timeUnit);\n }\n }\n}\nclass MergeAggregates extends BottomUpOptimizer {\n run(node) {\n const aggChildren = node.children.filter(child => child instanceof AggregateNode);\n // Object which we'll use to map the fields which an aggregate is grouped by to\n // the set of aggregates with that grouping. This is useful as only aggregates\n // with the same group by can be merged\n const groupedAggregates = {};\n // Build groupedAggregates\n for (const agg of aggChildren) {\n const groupBys = hash(agg.groupBy);\n if (!(groupBys in groupedAggregates)) {\n groupedAggregates[groupBys] = [];\n }\n groupedAggregates[groupBys].push(agg);\n }\n // Merge aggregateNodes with same key in groupedAggregates\n for (const group of keys(groupedAggregates)) {\n const mergeableAggs = groupedAggregates[group];\n if (mergeableAggs.length > 1) {\n const mergedAggs = mergeableAggs.pop();\n for (const agg of mergeableAggs) {\n if (mergedAggs.merge(agg)) {\n node.removeChild(agg);\n agg.parent = mergedAggs;\n agg.remove();\n this.setModified();\n }\n }\n }\n }\n }\n}\n/**\n * Merge bin nodes and move them up through forks. Stop at filters, parse, identifier as we want them to stay before the bin node.\n */\nclass MergeBins extends BottomUpOptimizer {\n constructor(model) {\n super();\n this.model = model;\n }\n run(node) {\n const moveBinsUp = !(isDataSourceNode(node) || node instanceof FilterNode || node instanceof ParseNode || node instanceof IdentifierNode);\n const promotableBins = [];\n const remainingBins = [];\n for (const child of node.children) {\n if (child instanceof BinNode) {\n if (moveBinsUp && !fieldIntersection(node.producedFields(), child.dependentFields())) {\n promotableBins.push(child);\n } else {\n remainingBins.push(child);\n }\n }\n }\n if (promotableBins.length > 0) {\n const promotedBin = promotableBins.pop();\n for (const bin of promotableBins) {\n promotedBin.merge(bin, this.model.renameSignal.bind(this.model));\n }\n this.setModified();\n if (node instanceof BinNode) {\n node.merge(promotedBin, this.model.renameSignal.bind(this.model));\n } else {\n promotedBin.swapWithParent();\n }\n }\n if (remainingBins.length > 1) {\n const remainingBin = remainingBins.pop();\n for (const bin of remainingBins) {\n remainingBin.merge(bin, this.model.renameSignal.bind(this.model));\n }\n this.setModified();\n }\n }\n}\n/**\n * This optimizer takes output nodes that are at a fork and moves them before the fork.\n *\n * The algorithm iterates over the children and tries to find the last output node in a chain of output nodes.\n * It then moves all output nodes before that main output node. All other children (and the children of the output nodes)\n * are inserted after the main output node.\n */\nclass MergeOutputs extends BottomUpOptimizer {\n run(node) {\n const children = [...node.children];\n const hasOutputChild = some(children, child => child instanceof OutputNode);\n if (!hasOutputChild || node.numChildren() <= 1) {\n return;\n }\n const otherChildren = [];\n // The output node we will connect all other nodes to.\n // Output nodes will be added before the new node, other nodes after.\n let mainOutput;\n for (const child of children) {\n if (child instanceof OutputNode) {\n let lastOutput = child;\n while (lastOutput.numChildren() === 1) {\n const [theChild] = lastOutput.children;\n if (theChild instanceof OutputNode) {\n lastOutput = theChild;\n } else {\n break;\n }\n }\n otherChildren.push(...lastOutput.children);\n if (mainOutput) {\n // Move the output nodes before the mainOutput. We do this by setting\n // the parent of the first not to the parent of the main output and\n // the main output's parent to the last output.\n // note: the child is the first output\n node.removeChild(child);\n child.parent = mainOutput.parent;\n mainOutput.parent.removeChild(mainOutput);\n mainOutput.parent = lastOutput;\n this.setModified();\n } else {\n mainOutput = lastOutput;\n }\n } else {\n otherChildren.push(child);\n }\n }\n if (otherChildren.length) {\n this.setModified();\n for (const child of otherChildren) {\n child.parent.removeChild(child);\n child.parent = mainOutput;\n }\n }\n }\n}\n\n/**\n * A class for the join aggregate transform nodes.\n */\nclass JoinAggregateTransformNode extends DataFlowNode {\n clone() {\n return new JoinAggregateTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), d => d);\n }\n dependentFields() {\n const out = new Set();\n if (this.transform.groupby) {\n this.transform.groupby.forEach(out.add, out);\n }\n this.transform.joinaggregate.map(w => w.field).filter(f => f !== undefined).forEach(out.add, out);\n return out;\n }\n producedFields() {\n return new Set(this.transform.joinaggregate.map(this.getDefaultName));\n }\n getDefaultName(joinAggregateFieldDef) {\n var _joinAggregateFieldDe;\n return (_joinAggregateFieldDe = joinAggregateFieldDef.as) !== null && _joinAggregateFieldDe !== void 0 ? _joinAggregateFieldDe : vgField(joinAggregateFieldDef);\n }\n hash() {\n return \"JoinAggregateTransform \".concat(hash(this.transform));\n }\n assemble() {\n const fields = [];\n const ops = [];\n const as = [];\n for (const joinaggregate of this.transform.joinaggregate) {\n ops.push(joinaggregate.op);\n as.push(this.getDefaultName(joinaggregate));\n fields.push(joinaggregate.field === undefined ? null : joinaggregate.field);\n }\n const groupby = this.transform.groupby;\n return {\n type: 'joinaggregate',\n as,\n ops,\n fields,\n ...(groupby !== undefined ? {\n groupby\n } : {})\n };\n }\n}\nfunction getStackByFields(model) {\n return model.stack.stackBy.reduce((fields, by) => {\n const fieldDef = by.fieldDef;\n const _field = vgField(fieldDef);\n if (_field) {\n fields.push(_field);\n }\n return fields;\n }, []);\n}\nfunction isValidAsArray(as) {\n return isArray(as) && as.every(s => isString(s)) && as.length > 1;\n}\nclass StackNode extends DataFlowNode {\n clone() {\n return new StackNode(null, duplicate(this._stack));\n }\n constructor(parent, stack) {\n super(parent);\n this._stack = stack;\n }\n static makeFromTransform(parent, stackTransform) {\n const {\n stack,\n groupby,\n as,\n offset = 'zero'\n } = stackTransform;\n const sortFields = [];\n const sortOrder = [];\n if (stackTransform.sort !== undefined) {\n for (const sortField of stackTransform.sort) {\n sortFields.push(sortField.field);\n sortOrder.push(getFirstDefined(sortField.order, 'ascending'));\n }\n }\n const sort = {\n field: sortFields,\n order: sortOrder\n };\n let normalizedAs;\n if (isValidAsArray(as)) {\n normalizedAs = as;\n } else if (isString(as)) {\n normalizedAs = [as, \"\".concat(as, \"_end\")];\n } else {\n normalizedAs = [\"\".concat(stackTransform.stack, \"_start\"), \"\".concat(stackTransform.stack, \"_end\")];\n }\n return new StackNode(parent, {\n dimensionFieldDefs: [],\n stackField: stack,\n groupby,\n offset,\n sort,\n facetby: [],\n as: normalizedAs\n });\n }\n static makeFromEncoding(parent, model) {\n const stackProperties = model.stack;\n const {\n encoding\n } = model;\n if (!stackProperties) {\n return null;\n }\n const {\n groupbyChannels,\n fieldChannel,\n offset,\n impute\n } = stackProperties;\n const dimensionFieldDefs = groupbyChannels.map(groupbyChannel => {\n const cDef = encoding[groupbyChannel];\n return getFieldDef(cDef);\n }).filter(def => !!def);\n const stackby = getStackByFields(model);\n const orderDef = model.encoding.order;\n let sort;\n if (isArray(orderDef) || isFieldDef(orderDef)) {\n sort = sortParams(orderDef);\n } else {\n const sortOrder = isOrderOnlyDef(orderDef) ? orderDef.sort : fieldChannel === 'y' ? 'descending' : 'ascending';\n // default = descending by stackFields\n // FIXME is the default here correct for binned fields?\n sort = stackby.reduce((s, field) => {\n s.field.push(field);\n s.order.push(sortOrder);\n return s;\n }, {\n field: [],\n order: []\n });\n }\n return new StackNode(parent, {\n dimensionFieldDefs,\n stackField: model.vgField(fieldChannel),\n facetby: [],\n stackby,\n sort,\n offset,\n impute,\n as: [model.vgField(fieldChannel, {\n suffix: 'start',\n forAs: true\n }), model.vgField(fieldChannel, {\n suffix: 'end',\n forAs: true\n })]\n });\n }\n get stack() {\n return this._stack;\n }\n addDimensions(fields) {\n this._stack.facetby.push(...fields);\n }\n dependentFields() {\n const out = new Set();\n out.add(this._stack.stackField);\n this.getGroupbyFields().forEach(out.add, out);\n this._stack.facetby.forEach(out.add, out);\n this._stack.sort.field.forEach(out.add, out);\n return out;\n }\n producedFields() {\n return new Set(this._stack.as);\n }\n hash() {\n return \"Stack \".concat(hash(this._stack));\n }\n getGroupbyFields() {\n const {\n dimensionFieldDefs,\n impute,\n groupby\n } = this._stack;\n if (dimensionFieldDefs.length > 0) {\n return dimensionFieldDefs.map(dimensionFieldDef => {\n if (dimensionFieldDef.bin) {\n if (impute) {\n // For binned group by field with impute, we calculate bin_mid\n // as we cannot impute two fields simultaneously\n return [vgField(dimensionFieldDef, {\n binSuffix: 'mid'\n })];\n }\n return [\n // For binned group by field without impute, we need both bin (start) and bin_end\n vgField(dimensionFieldDef, {}), vgField(dimensionFieldDef, {\n binSuffix: 'end'\n })];\n }\n return [vgField(dimensionFieldDef)];\n }).flat();\n }\n return groupby !== null && groupby !== void 0 ? groupby : [];\n }\n assemble() {\n const transform = [];\n const {\n facetby,\n dimensionFieldDefs,\n stackField: field,\n stackby,\n sort,\n offset,\n impute,\n as\n } = this._stack;\n // Impute\n if (impute) {\n for (const dimensionFieldDef of dimensionFieldDefs) {\n const {\n bandPosition = 0.5,\n bin\n } = dimensionFieldDef;\n if (bin) {\n // As we can only impute one field at a time, we need to calculate\n // mid point for a binned field\n const binStart = vgField(dimensionFieldDef, {\n expr: 'datum'\n });\n const binEnd = vgField(dimensionFieldDef, {\n expr: 'datum',\n binSuffix: 'end'\n });\n transform.push({\n type: 'formula',\n expr: \"\".concat(bandPosition, \"*\").concat(binStart, \"+\").concat(1 - bandPosition, \"*\").concat(binEnd),\n as: vgField(dimensionFieldDef, {\n binSuffix: 'mid',\n forAs: true\n })\n });\n }\n transform.push({\n type: 'impute',\n field,\n groupby: [...stackby, ...facetby],\n key: vgField(dimensionFieldDef, {\n binSuffix: 'mid'\n }),\n method: 'value',\n value: 0\n });\n }\n }\n // Stack\n transform.push({\n type: 'stack',\n groupby: [...this.getGroupbyFields(), ...facetby],\n field,\n sort,\n as,\n offset\n });\n return transform;\n }\n}\n\n/**\n * A class for the window transform nodes\n */\nclass WindowTransformNode extends DataFlowNode {\n clone() {\n return new WindowTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n addDimensions(fields) {\n this.transform.groupby = unique(this.transform.groupby.concat(fields), d => d);\n }\n dependentFields() {\n var _this$transform$group, _this$transform$sort;\n const out = new Set();\n ((_this$transform$group = this.transform.groupby) !== null && _this$transform$group !== void 0 ? _this$transform$group : []).forEach(out.add, out);\n ((_this$transform$sort = this.transform.sort) !== null && _this$transform$sort !== void 0 ? _this$transform$sort : []).forEach(m => out.add(m.field));\n this.transform.window.map(w => w.field).filter(f => f !== undefined).forEach(out.add, out);\n return out;\n }\n producedFields() {\n return new Set(this.transform.window.map(this.getDefaultName));\n }\n getDefaultName(windowFieldDef) {\n var _windowFieldDef$as;\n return (_windowFieldDef$as = windowFieldDef.as) !== null && _windowFieldDef$as !== void 0 ? _windowFieldDef$as : vgField(windowFieldDef);\n }\n hash() {\n return \"WindowTransform \".concat(hash(this.transform));\n }\n assemble() {\n const fields = [];\n const ops = [];\n const as = [];\n const params = [];\n for (const window of this.transform.window) {\n ops.push(window.op);\n as.push(this.getDefaultName(window));\n params.push(window.param === undefined ? null : window.param);\n fields.push(window.field === undefined ? null : window.field);\n }\n const frame = this.transform.frame;\n const groupby = this.transform.groupby;\n if (frame && frame[0] === null && frame[1] === null && ops.every(o => isAggregateOp(o))) {\n // when the window does not rely on any particular window ops or frame, switch to a simpler and more efficient joinaggregate\n return {\n type: 'joinaggregate',\n as,\n ops: ops,\n fields,\n ...(groupby !== undefined ? {\n groupby\n } : {})\n };\n }\n const sortFields = [];\n const sortOrder = [];\n if (this.transform.sort !== undefined) {\n for (const sortField of this.transform.sort) {\n var _sortField$order;\n sortFields.push(sortField.field);\n sortOrder.push((_sortField$order = sortField.order) !== null && _sortField$order !== void 0 ? _sortField$order : 'ascending');\n }\n }\n const sort = {\n field: sortFields,\n order: sortOrder\n };\n const ignorePeers = this.transform.ignorePeers;\n return {\n type: 'window',\n params,\n as,\n ops,\n fields,\n sort,\n ...(ignorePeers !== undefined ? {\n ignorePeers\n } : {}),\n ...(groupby !== undefined ? {\n groupby\n } : {}),\n ...(frame !== undefined ? {\n frame\n } : {})\n };\n }\n}\n\n/**\n * Clones the subtree and ignores output nodes except for the leaves, which are renamed.\n */\nfunction cloneSubtree(facet) {\n function clone(node) {\n if (!(node instanceof FacetNode)) {\n const copy = node.clone();\n if (copy instanceof OutputNode) {\n const newName = FACET_SCALE_PREFIX + copy.getSource();\n copy.setSource(newName);\n facet.model.component.data.outputNodes[newName] = copy;\n } else if (copy instanceof AggregateNode || copy instanceof StackNode || copy instanceof WindowTransformNode || copy instanceof JoinAggregateTransformNode) {\n copy.addDimensions(facet.fields);\n }\n for (const n of node.children.flatMap(clone)) {\n n.parent = copy;\n }\n return [copy];\n }\n return node.children.flatMap(clone);\n }\n return clone;\n}\n/**\n * Move facet nodes down to the next fork or output node. Also pull the main output with the facet node.\n * After moving down the facet node, make a copy of the subtree and make it a child of the main output.\n */\nfunction moveFacetDown(node) {\n if (node instanceof FacetNode) {\n if (node.numChildren() === 1 && !(node.children[0] instanceof OutputNode)) {\n // move down until we hit a fork or output node\n const child = node.children[0];\n if (child instanceof AggregateNode || child instanceof StackNode || child instanceof WindowTransformNode || child instanceof JoinAggregateTransformNode) {\n child.addDimensions(node.fields);\n }\n child.swapWithParent();\n moveFacetDown(node);\n } else {\n // move main to facet\n const facetMain = node.model.component.data.main;\n moveMainDownToFacet(facetMain);\n // replicate the subtree and place it before the facet's main node\n const cloner = cloneSubtree(node);\n const copy = node.children.map(cloner).flat();\n for (const c of copy) {\n c.parent = facetMain;\n }\n }\n } else {\n node.children.map(moveFacetDown);\n }\n}\nfunction moveMainDownToFacet(node) {\n if (node instanceof OutputNode && node.type === DataSourceType.Main) {\n if (node.numChildren() === 1) {\n const child = node.children[0];\n if (!(child instanceof FacetNode)) {\n child.swapWithParent();\n moveMainDownToFacet(node);\n }\n }\n }\n}\nconst FACET_SCALE_PREFIX = 'scale_';\nconst MAX_OPTIMIZATION_RUNS = 5;\n/**\n * Iterates over a dataflow graph and checks whether all links are consistent.\n */\nfunction checkLinks(nodes) {\n for (const node of nodes) {\n for (const child of node.children) {\n if (child.parent !== node) {\n // log.error('Dataflow graph is inconsistent.', node, child);\n return false;\n }\n }\n if (!checkLinks(node.children)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Run the specified optimizer on the provided nodes.\n *\n * @param optimizer The optimizer instance to run.\n * @param nodes A set of nodes to optimize.\n */\nfunction runOptimizer(optimizer, nodes) {\n let modified = false;\n for (const node of nodes) {\n modified = optimizer.optimize(node) || modified;\n }\n return modified;\n}\nfunction optimizationDataflowHelper(dataComponent, model, firstPass) {\n let roots = dataComponent.sources;\n let modified = false;\n modified = runOptimizer(new RemoveUnnecessaryOutputNodes(), roots) || modified;\n modified = runOptimizer(new RemoveUnnecessaryIdentifierNodes(model), roots) || modified;\n // remove source nodes that don't have any children because they also don't have output nodes\n roots = roots.filter(r => r.numChildren() > 0);\n modified = runOptimizer(new RemoveUnusedSubtrees(), roots) || modified;\n roots = roots.filter(r => r.numChildren() > 0);\n if (!firstPass) {\n // Only run these optimizations after the optimizer has moved down the facet node.\n // With this change, we can be more aggressive in the optimizations.\n modified = runOptimizer(new MoveParseUp(), roots) || modified;\n modified = runOptimizer(new MergeBins(model), roots) || modified;\n modified = runOptimizer(new RemoveDuplicateTimeUnits(), roots) || modified;\n modified = runOptimizer(new MergeParse(), roots) || modified;\n modified = runOptimizer(new MergeAggregates(), roots) || modified;\n modified = runOptimizer(new MergeTimeUnits(), roots) || modified;\n modified = runOptimizer(new MergeIdenticalNodes(), roots) || modified;\n modified = runOptimizer(new MergeOutputs(), roots) || modified;\n }\n dataComponent.sources = roots;\n return modified;\n}\n/**\n * Optimizes the dataflow of the passed in data component.\n */\nfunction optimizeDataflow(data, model) {\n // check before optimizations\n checkLinks(data.sources);\n let firstPassCounter = 0;\n let secondPassCounter = 0;\n for (let i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n if (!optimizationDataflowHelper(data, model, true)) {\n break;\n }\n firstPassCounter++;\n }\n // move facets down and make a copy of the subtree so that we can have scales at the top level\n data.sources.map(moveFacetDown);\n for (let i = 0; i < MAX_OPTIMIZATION_RUNS; i++) {\n if (!optimizationDataflowHelper(data, model, false)) {\n break;\n }\n secondPassCounter++;\n }\n // check after optimizations\n checkLinks(data.sources);\n if (Math.max(firstPassCounter, secondPassCounter) === MAX_OPTIMIZATION_RUNS) {\n warn(\"Maximum optimization runs(\".concat(MAX_OPTIMIZATION_RUNS, \") reached.\"));\n }\n}\n\n/**\n * A class that behaves like a SignalRef but lazily generates the signal.\n * The provided generator function should use `Model.getSignalName` to use the correct signal name.\n */\nclass SignalRefWrapper {\n constructor(exprGenerator) {\n Object.defineProperty(this, 'signal', {\n enumerable: true,\n get: exprGenerator\n });\n }\n static fromName(rename, signalName) {\n return new SignalRefWrapper(() => rename(signalName));\n }\n}\nfunction parseScaleDomain(model) {\n if (isUnitModel(model)) {\n parseUnitScaleDomain(model);\n } else {\n parseNonUnitScaleDomain(model);\n }\n}\nfunction parseUnitScaleDomain(model) {\n const localScaleComponents = model.component.scales;\n for (const channel of keys(localScaleComponents)) {\n const domains = parseDomainForChannel(model, channel);\n const localScaleCmpt = localScaleComponents[channel];\n localScaleCmpt.setWithExplicit('domains', domains);\n parseSelectionDomain(model, channel);\n if (model.component.data.isFaceted) {\n // get resolve from closest facet parent as this decides whether we need to refer to cloned subtree or not\n let facetParent = model;\n while (!isFacetModel(facetParent) && facetParent.parent) {\n facetParent = facetParent.parent;\n }\n const resolve = facetParent.component.resolve.scale[channel];\n if (resolve === 'shared') {\n for (const domain of domains.value) {\n // Replace the scale domain with data output from a cloned subtree after the facet.\n if (isDataRefDomain(domain)) {\n // use data from cloned subtree (which is the same as data but with a prefix added once)\n domain.data = FACET_SCALE_PREFIX + domain.data.replace(FACET_SCALE_PREFIX, '');\n }\n }\n }\n }\n }\n}\nfunction parseNonUnitScaleDomain(model) {\n for (const child of model.children) {\n parseScaleDomain(child);\n }\n const localScaleComponents = model.component.scales;\n for (const channel of keys(localScaleComponents)) {\n let domains;\n let selectionExtent = null;\n for (const child of model.children) {\n const childComponent = child.component.scales[channel];\n if (childComponent) {\n if (domains === undefined) {\n domains = childComponent.getWithExplicit('domains');\n } else {\n domains = mergeValuesWithExplicit(domains, childComponent.getWithExplicit('domains'), 'domains', 'scale', domainsTieBreaker);\n }\n const se = childComponent.get('selectionExtent');\n if (selectionExtent && se && selectionExtent.param !== se.param) {\n warn(NEEDS_SAME_SELECTION);\n }\n selectionExtent = se;\n }\n }\n localScaleComponents[channel].setWithExplicit('domains', domains);\n if (selectionExtent) {\n localScaleComponents[channel].set('selectionExtent', selectionExtent, true);\n }\n }\n}\n/**\n * Remove unaggregated domain if it is not applicable\n * Add unaggregated domain if domain is not specified and config.scale.useUnaggregatedDomain is true.\n */\nfunction normalizeUnaggregatedDomain(domain, fieldDef, scaleType, scaleConfig) {\n if (domain === 'unaggregated') {\n const {\n valid,\n reason\n } = canUseUnaggregatedDomain(fieldDef, scaleType);\n if (!valid) {\n warn(reason);\n return undefined;\n }\n } else if (domain === undefined && scaleConfig.useUnaggregatedDomain) {\n // Apply config if domain is not specified.\n const {\n valid\n } = canUseUnaggregatedDomain(fieldDef, scaleType);\n if (valid) {\n return 'unaggregated';\n }\n }\n return domain;\n}\nfunction parseDomainForChannel(model, channel) {\n const scaleType = model.getScaleComponent(channel).get('type');\n const {\n encoding\n } = model;\n const domain = normalizeUnaggregatedDomain(model.scaleDomain(channel), model.typedFieldDef(channel), scaleType, model.config.scale);\n if (domain !== model.scaleDomain(channel)) {\n model.specifiedScales[channel] = {\n ...model.specifiedScales[channel],\n domain\n };\n }\n // If channel is either X or Y then union them with X2 & Y2 if they exist\n if (channel === 'x' && getFieldOrDatumDef(encoding.x2)) {\n if (getFieldOrDatumDef(encoding.x)) {\n return mergeValuesWithExplicit(parseSingleChannelDomain(scaleType, domain, model, 'x'), parseSingleChannelDomain(scaleType, domain, model, 'x2'), 'domain', 'scale', domainsTieBreaker);\n } else {\n return parseSingleChannelDomain(scaleType, domain, model, 'x2');\n }\n } else if (channel === 'y' && getFieldOrDatumDef(encoding.y2)) {\n if (getFieldOrDatumDef(encoding.y)) {\n return mergeValuesWithExplicit(parseSingleChannelDomain(scaleType, domain, model, 'y'), parseSingleChannelDomain(scaleType, domain, model, 'y2'), 'domain', 'scale', domainsTieBreaker);\n } else {\n return parseSingleChannelDomain(scaleType, domain, model, 'y2');\n }\n }\n return parseSingleChannelDomain(scaleType, domain, model, channel);\n}\nfunction mapDomainToDataSignal(domain, type, timeUnit) {\n return domain.map(v => {\n const data = valueExpr(v, {\n timeUnit,\n type\n });\n return {\n signal: \"{data: \".concat(data, \"}\")\n };\n });\n}\nfunction convertDomainIfItIsDateTime(domain, type, timeUnit) {\n var _normalizeTimeUnit8;\n // explicit value\n const normalizedTimeUnit = (_normalizeTimeUnit8 = normalizeTimeUnit(timeUnit)) === null || _normalizeTimeUnit8 === void 0 ? void 0 : _normalizeTimeUnit8.unit;\n if (type === 'temporal' || normalizedTimeUnit) {\n return mapDomainToDataSignal(domain, type, normalizedTimeUnit);\n }\n return [domain]; // Date time won't make sense\n}\n\nfunction parseSingleChannelDomain(scaleType, domain, model, channel) {\n const {\n encoding\n } = model;\n const fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n const {\n type\n } = fieldOrDatumDef;\n const timeUnit = fieldOrDatumDef['timeUnit'];\n if (isDomainUnionWith(domain)) {\n const defaultDomain = parseSingleChannelDomain(scaleType, undefined, model, channel);\n const unionWith = convertDomainIfItIsDateTime(domain.unionWith, type, timeUnit);\n return makeExplicit([...unionWith, ...defaultDomain.value]);\n } else if (isSignalRef(domain)) {\n return makeExplicit([domain]);\n } else if (domain && domain !== 'unaggregated' && !isParameterDomain(domain)) {\n return makeExplicit(convertDomainIfItIsDateTime(domain, type, timeUnit));\n }\n const stack = model.stack;\n if (stack && channel === stack.fieldChannel) {\n if (stack.offset === 'normalize') {\n return makeImplicit([[0, 1]]);\n }\n const data = model.requestDataName(DataSourceType.Main);\n return makeImplicit([{\n data,\n field: model.vgField(channel, {\n suffix: 'start'\n })\n }, {\n data,\n field: model.vgField(channel, {\n suffix: 'end'\n })\n }]);\n }\n const sort = isScaleChannel(channel) && isFieldDef(fieldOrDatumDef) ? domainSort(model, channel, scaleType) : undefined;\n if (isDatumDef(fieldOrDatumDef)) {\n const d = convertDomainIfItIsDateTime([fieldOrDatumDef.datum], type, timeUnit);\n return makeImplicit(d);\n }\n const fieldDef = fieldOrDatumDef; // now we can be sure it's a fieldDef\n if (domain === 'unaggregated') {\n const data = model.requestDataName(DataSourceType.Main);\n const {\n field\n } = fieldOrDatumDef;\n return makeImplicit([{\n data,\n field: vgField({\n field,\n aggregate: 'min'\n })\n }, {\n data,\n field: vgField({\n field,\n aggregate: 'max'\n })\n }]);\n } else if (isBinning(fieldDef.bin)) {\n if (hasDiscreteDomain(scaleType)) {\n if (scaleType === 'bin-ordinal') {\n // we can omit the domain as it is inferred from the `bins` property\n return makeImplicit([]);\n }\n // ordinal bin scale takes domain from bin_range, ordered by bin start\n // This is useful for both axis-based scale (x/y) and legend-based scale (other channels).\n return makeImplicit([{\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: isBoolean(sort) ? model.requestDataName(DataSourceType.Main) : model.requestDataName(DataSourceType.Raw),\n // Use range if we added it and the scale does not support computing a range as a signal.\n field: model.vgField(channel, binRequiresRange(fieldDef, channel) ? {\n binSuffix: 'range'\n } : {}),\n // we have to use a sort object if sort = true to make the sort correct by bin start\n sort: sort === true || !isObject(sort) ? {\n field: model.vgField(channel, {}),\n op: 'min' // min or max doesn't matter since we sort by the start of the bin range\n } : sort\n }]);\n } else {\n // continuous scales\n const {\n bin\n } = fieldDef;\n if (isBinning(bin)) {\n const binSignal = getBinSignalName(model, fieldDef.field, bin);\n return makeImplicit([new SignalRefWrapper(() => {\n const signal = model.getSignalName(binSignal);\n return \"[\".concat(signal, \".start, \").concat(signal, \".stop]\");\n })]);\n } else {\n return makeImplicit([{\n data: model.requestDataName(DataSourceType.Main),\n field: model.vgField(channel, {})\n }]);\n }\n }\n } else if (fieldDef.timeUnit && contains(['time', 'utc'], scaleType) && hasBandEnd(fieldDef, isUnitModel(model) ? model.encoding[getSecondaryRangeChannel(channel)] : undefined, model.markDef, model.config)) {\n const data = model.requestDataName(DataSourceType.Main);\n return makeImplicit([{\n data,\n field: model.vgField(channel)\n }, {\n data,\n field: model.vgField(channel, {\n suffix: 'end'\n })\n }]);\n } else if (sort) {\n return makeImplicit([{\n // If sort by aggregation of a specified sort field, we need to use RAW table,\n // so we can aggregate values for the scale independently from the main aggregation.\n data: isBoolean(sort) ? model.requestDataName(DataSourceType.Main) : model.requestDataName(DataSourceType.Raw),\n field: model.vgField(channel),\n sort\n }]);\n } else {\n return makeImplicit([{\n data: model.requestDataName(DataSourceType.Main),\n field: model.vgField(channel)\n }]);\n }\n}\nfunction normalizeSortField(sort, isStackedMeasure) {\n const {\n op,\n field,\n order\n } = sort;\n return {\n // Apply default op\n op: op !== null && op !== void 0 ? op : isStackedMeasure ? 'sum' : DEFAULT_SORT_OP,\n // flatten nested fields\n ...(field ? {\n field: replacePathInField(field)\n } : {}),\n ...(order ? {\n order\n } : {})\n };\n}\nfunction parseSelectionDomain(model, channel) {\n var _model$fieldDef2;\n const scale = model.component.scales[channel];\n const spec = model.specifiedScales[channel].domain;\n const bin = (_model$fieldDef2 = model.fieldDef(channel)) === null || _model$fieldDef2 === void 0 ? void 0 : _model$fieldDef2.bin;\n const domain = isParameterDomain(spec) && spec;\n const extent = isBinParams(bin) && isParameterExtent(bin.extent) && bin.extent;\n if (domain || extent) {\n // As scale parsing occurs before selection parsing, we cannot set\n // domainRaw directly. So instead, we store the selectionExtent on\n // the scale component, and then add domainRaw during scale assembly.\n scale.set('selectionExtent', domain !== null && domain !== void 0 ? domain : extent, true);\n }\n}\nfunction domainSort(model, channel, scaleType) {\n if (!hasDiscreteDomain(scaleType)) {\n return undefined;\n }\n // save to cast as the only exception is the geojson type for shape, which would not generate a scale\n const fieldDef = model.fieldDef(channel);\n const sort = fieldDef.sort;\n // if the sort is specified with array, use the derived sort index field\n if (isSortArray(sort)) {\n return {\n op: 'min',\n field: sortArrayIndexField(fieldDef, channel),\n order: 'ascending'\n };\n }\n const {\n stack\n } = model;\n const stackDimensions = stack ? new Set([...stack.groupbyFields, ...stack.stackBy.map(s => s.fieldDef.field)]) : undefined;\n // Sorted based on an aggregate calculation over a specified sort field (only for ordinal scale)\n if (isSortField(sort)) {\n const isStackedMeasure = stack && !stackDimensions.has(sort.field);\n return normalizeSortField(sort, isStackedMeasure);\n } else if (isSortByEncoding(sort)) {\n const {\n encoding,\n order\n } = sort;\n const fieldDefToSortBy = model.fieldDef(encoding);\n const {\n aggregate,\n field\n } = fieldDefToSortBy;\n const isStackedMeasure = stack && !stackDimensions.has(field);\n if (isArgminDef(aggregate) || isArgmaxDef(aggregate)) {\n return normalizeSortField({\n field: vgField(fieldDefToSortBy),\n order\n }, isStackedMeasure);\n } else if (isAggregateOp(aggregate) || !aggregate) {\n return normalizeSortField({\n op: aggregate,\n field,\n order\n }, isStackedMeasure);\n }\n } else if (sort === 'descending') {\n return {\n op: 'min',\n field: model.vgField(channel),\n order: 'descending'\n };\n } else if (contains(['ascending', undefined /* default =ascending*/], sort)) {\n return true;\n }\n // sort == null\n return undefined;\n}\n/**\n * Determine if a scale can use unaggregated domain.\n * @return {Boolean} Returns true if all of the following conditions apply:\n * 1. `scale.domain` is `unaggregated`\n * 2. Aggregation function is not `count` or `sum`\n * 3. The scale is quantitative or time scale.\n */\nfunction canUseUnaggregatedDomain(fieldDef, scaleType) {\n const {\n aggregate,\n type\n } = fieldDef;\n if (!aggregate) {\n return {\n valid: false,\n reason: unaggregateDomainHasNoEffectForRawField(fieldDef)\n };\n }\n if (isString(aggregate) && !SHARED_DOMAIN_OPS.has(aggregate)) {\n return {\n valid: false,\n reason: unaggregateDomainWithNonSharedDomainOp(aggregate)\n };\n }\n if (type === 'quantitative') {\n if (scaleType === 'log') {\n return {\n valid: false,\n reason: unaggregatedDomainWithLogScale(fieldDef)\n };\n }\n }\n return {\n valid: true\n };\n}\n/**\n * Tie breaker for mergeValuesWithExplicit for domains. We concat the specified values.\n */\nfunction domainsTieBreaker(v1, v2, property, propertyOf) {\n if (v1.explicit && v2.explicit) {\n warn(mergeConflictingDomainProperty(property, propertyOf, v1.value, v2.value));\n }\n // If equal score, concat the domains so that we union them later.\n return {\n explicit: v1.explicit,\n value: [...v1.value, ...v2.value]\n };\n}\n/**\n * Converts an array of domains to a single Vega scale domain.\n */\nfunction mergeDomains(domains) {\n const uniqueDomains = unique(domains.map(domain => {\n // ignore sort property when computing the unique domains\n if (isDataRefDomain(domain)) {\n const {\n sort: _s,\n ...domainWithoutSort\n } = domain;\n return domainWithoutSort;\n }\n return domain;\n }), hash);\n const sorts = unique(domains.map(d => {\n if (isDataRefDomain(d)) {\n const s = d.sort;\n if (s !== undefined && !isBoolean(s)) {\n if ('op' in s && s.op === 'count') {\n // let's make sure that if op is count, we don't use a field\n delete s.field;\n }\n if (s.order === 'ascending') {\n // drop order: ascending as it is the default\n delete s.order;\n }\n }\n return s;\n }\n return undefined;\n }).filter(s => s !== undefined), hash);\n if (uniqueDomains.length === 0) {\n return undefined;\n } else if (uniqueDomains.length === 1) {\n const domain = domains[0];\n if (isDataRefDomain(domain) && sorts.length > 0) {\n let sort = sorts[0];\n if (sorts.length > 1) {\n warn(MORE_THAN_ONE_SORT);\n // Get sorts with non-default ops\n const filteredSorts = sorts.filter(s => isObject(s) && 'op' in s && s.op !== 'min');\n if (sorts.every(s => isObject(s) && 'op' in s) && filteredSorts.length === 1) {\n sort = filteredSorts[0];\n } else {\n sort = true;\n }\n } else {\n // Simplify domain sort by removing field and op when the field is the same as the domain field.\n if (isObject(sort) && 'field' in sort) {\n const sortField = sort.field;\n if (domain.field === sortField) {\n sort = sort.order ? {\n order: sort.order\n } : true;\n }\n }\n }\n return {\n ...domain,\n sort\n };\n }\n return domain;\n }\n // only keep sort properties that work with unioned domains\n const unionDomainSorts = unique(sorts.map(s => {\n if (isBoolean(s) || !('op' in s) || isString(s.op) && s.op in MULTIDOMAIN_SORT_OP_INDEX) {\n return s;\n }\n warn(domainSortDropped(s));\n return true;\n }), hash);\n let sort;\n if (unionDomainSorts.length === 1) {\n sort = unionDomainSorts[0];\n } else if (unionDomainSorts.length > 1) {\n warn(MORE_THAN_ONE_SORT);\n sort = true;\n }\n const allData = unique(domains.map(d => {\n if (isDataRefDomain(d)) {\n return d.data;\n }\n return null;\n }), x => x);\n if (allData.length === 1 && allData[0] !== null) {\n // create a union domain of different fields with a single data source\n const domain = {\n data: allData[0],\n fields: uniqueDomains.map(d => d.field),\n ...(sort ? {\n sort\n } : {})\n };\n return domain;\n }\n return {\n fields: uniqueDomains,\n ...(sort ? {\n sort\n } : {})\n };\n}\n/**\n * Return a field if a scale uses a single field.\n * Return `undefined` otherwise.\n */\nfunction getFieldFromDomain(domain) {\n if (isDataRefDomain(domain) && isString(domain.field)) {\n return domain.field;\n } else if (isDataRefUnionedDomain(domain)) {\n let field;\n for (const nonUnionDomain of domain.fields) {\n if (isDataRefDomain(nonUnionDomain) && isString(nonUnionDomain.field)) {\n if (!field) {\n field = nonUnionDomain.field;\n } else if (field !== nonUnionDomain.field) {\n warn(FACETED_INDEPENDENT_DIFFERENT_SOURCES);\n return field;\n }\n }\n }\n warn(FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES);\n return field;\n } else if (isFieldRefUnionDomain(domain)) {\n warn(FACETED_INDEPENDENT_SAME_SOURCE);\n const field = domain.fields[0];\n return isString(field) ? field : undefined;\n }\n return undefined;\n}\nfunction assembleDomain(model, channel) {\n const scaleComponent = model.component.scales[channel];\n const domains = scaleComponent.get('domains').map(domain => {\n // Correct references to data as the original domain's data was determined\n // in parseScale, which happens before parseData. Thus the original data\n // reference can be incorrect.\n if (isDataRefDomain(domain)) {\n domain.data = model.lookupDataSource(domain.data);\n }\n return domain;\n });\n // domains is an array that has to be merged into a single vega domain\n return mergeDomains(domains);\n}\nfunction assembleScales(model) {\n if (isLayerModel(model) || isConcatModel(model)) {\n // For concat and layer, include scales of children too\n return model.children.reduce((scales, child) => {\n return scales.concat(assembleScales(child));\n }, assembleScalesForModel(model));\n } else {\n // For facet, child scales would not be included in the parent's scope.\n // For unit, there is no child.\n return assembleScalesForModel(model);\n }\n}\nfunction assembleScalesForModel(model) {\n return keys(model.component.scales).reduce((scales, channel) => {\n const scaleComponent = model.component.scales[channel];\n if (scaleComponent.merged) {\n // Skipped merged scales\n return scales;\n }\n const scale = scaleComponent.combine();\n const {\n name,\n type,\n selectionExtent,\n domains: _d,\n range: _r,\n reverse,\n ...otherScaleProps\n } = scale;\n const range = assembleScaleRange(scale.range, name, channel, model);\n const domain = assembleDomain(model, channel);\n const domainRaw = selectionExtent ? assembleSelectionScaleDomain(model, selectionExtent, scaleComponent, domain) : null;\n scales.push({\n name,\n type,\n ...(domain ? {\n domain\n } : {}),\n ...(domainRaw ? {\n domainRaw\n } : {}),\n range,\n ...(reverse !== undefined ? {\n reverse: reverse\n } : {}),\n ...otherScaleProps\n });\n return scales;\n }, []);\n}\nfunction assembleScaleRange(scaleRange, scaleName, channel, model) {\n // add signals to x/y range\n if (isXorY(channel)) {\n if (isVgRangeStep(scaleRange)) {\n // For width/height step, use a signal created in layout assemble instead of a constant step.\n return {\n step: {\n signal: \"\".concat(scaleName, \"_step\")\n }\n };\n }\n } else if (isObject(scaleRange) && isDataRefDomain(scaleRange)) {\n return {\n ...scaleRange,\n data: model.lookupDataSource(scaleRange.data)\n };\n }\n return scaleRange;\n}\nclass ScaleComponent extends Split {\n constructor(name, typeWithExplicit) {\n super({},\n // no initial explicit property\n {\n name\n } // name as initial implicit property\n );\n\n this.merged = false;\n this.setWithExplicit('type', typeWithExplicit);\n }\n /**\n * Whether the scale definitely includes zero in the domain\n */\n domainDefinitelyIncludesZero() {\n if (this.get('zero') !== false) {\n return true;\n }\n return some(this.get('domains'), d => isArray(d) && d.length === 2 && d[0] <= 0 && d[1] >= 0);\n }\n}\nconst RANGE_PROPERTIES = ['range', 'scheme'];\nfunction parseUnitScaleRange(model) {\n const localScaleComponents = model.component.scales;\n // use SCALE_CHANNELS instead of scales[channel] to ensure that x, y come first!\n for (const channel of SCALE_CHANNELS) {\n const localScaleCmpt = localScaleComponents[channel];\n if (!localScaleCmpt) {\n continue;\n }\n const rangeWithExplicit = parseRangeForChannel(channel, model);\n localScaleCmpt.setWithExplicit('range', rangeWithExplicit);\n }\n}\nfunction getBinStepSignal(model, channel) {\n const fieldDef = model.fieldDef(channel);\n if (fieldDef !== null && fieldDef !== void 0 && fieldDef.bin) {\n const {\n bin,\n field\n } = fieldDef;\n const sizeType = getSizeChannel(channel);\n const sizeSignal = model.getName(sizeType);\n if (isObject(bin) && bin.binned && bin.step !== undefined) {\n return new SignalRefWrapper(() => {\n const scaleName = model.scaleName(channel);\n const binCount = \"(domain(\\\"\".concat(scaleName, \"\\\")[1] - domain(\\\"\").concat(scaleName, \"\\\")[0]) / \").concat(bin.step);\n return \"\".concat(model.getSignalName(sizeSignal), \" / (\").concat(binCount, \")\");\n });\n } else if (isBinning(bin)) {\n const binSignal = getBinSignalName(model, field, bin);\n // TODO: extract this to be range step signal\n return new SignalRefWrapper(() => {\n const updatedName = model.getSignalName(binSignal);\n const binCount = \"(\".concat(updatedName, \".stop - \").concat(updatedName, \".start) / \").concat(updatedName, \".step\");\n return \"\".concat(model.getSignalName(sizeSignal), \" / (\").concat(binCount, \")\");\n });\n }\n }\n return undefined;\n}\n/**\n * Return mixins that includes one of the Vega range types (explicit range, range.step, range.scheme).\n */\nfunction parseRangeForChannel(channel, model) {\n const specifiedScale = model.specifiedScales[channel];\n const {\n size\n } = model;\n const mergedScaleCmpt = model.getScaleComponent(channel);\n const scaleType = mergedScaleCmpt.get('type');\n // Check if any of the range properties is specified.\n // If so, check if it is compatible and make sure that we only output one of the properties\n for (const property of RANGE_PROPERTIES) {\n if (specifiedScale[property] !== undefined) {\n const supportedByScaleType = scaleTypeSupportProperty(scaleType, property);\n const channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (!supportedByScaleType) {\n warn(scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n } else if (channelIncompatability) {\n // channel\n warn(channelIncompatability);\n } else {\n switch (property) {\n case 'range':\n {\n const range = specifiedScale.range;\n if (isArray(range)) {\n if (isXorY(channel)) {\n return makeExplicit(range.map(v => {\n if (v === 'width' || v === 'height') {\n // get signal for width/height\n // Just like default range logic below, we use SignalRefWrapper to account for potential merges and renames.\n const sizeSignal = model.getName(v);\n const getSignalName = model.getSignalName.bind(model);\n return SignalRefWrapper.fromName(getSignalName, sizeSignal);\n }\n return v;\n }));\n }\n } else if (isObject(range)) {\n return makeExplicit({\n data: model.requestDataName(DataSourceType.Main),\n field: range.field,\n sort: {\n op: 'min',\n field: model.vgField(channel)\n }\n });\n }\n return makeExplicit(range);\n }\n case 'scheme':\n return makeExplicit(parseScheme(specifiedScale[property]));\n }\n }\n }\n }\n const sizeChannel = channel === X || channel === 'xOffset' ? 'width' : 'height';\n const sizeValue = size[sizeChannel];\n if (isStep(sizeValue)) {\n if (isXorY(channel)) {\n if (hasDiscreteDomain(scaleType)) {\n const step = getPositionStep(sizeValue, model, channel);\n // Need to be explicit so layer with step wins over layer without step\n if (step) {\n return makeExplicit({\n step\n });\n }\n } else {\n warn(stepDropped(sizeChannel));\n }\n } else if (isXorYOffset(channel)) {\n const positionChannel = channel === XOFFSET ? 'x' : 'y';\n const positionScaleCmpt = model.getScaleComponent(positionChannel);\n const positionScaleType = positionScaleCmpt.get('type');\n if (positionScaleType === 'band') {\n const step = getOffsetStep(sizeValue, scaleType);\n if (step) {\n return makeExplicit(step);\n }\n }\n }\n }\n const {\n rangeMin,\n rangeMax\n } = specifiedScale;\n const d = defaultRange(channel, model);\n if ((rangeMin !== undefined || rangeMax !== undefined) &&\n // it's ok to check just rangeMin's compatibility since rangeMin/rangeMax are the same\n scaleTypeSupportProperty(scaleType, 'rangeMin') && isArray(d) && d.length === 2) {\n return makeExplicit([rangeMin !== null && rangeMin !== void 0 ? rangeMin : d[0], rangeMax !== null && rangeMax !== void 0 ? rangeMax : d[1]]);\n }\n return makeImplicit(d);\n}\nfunction parseScheme(scheme) {\n if (isExtendedScheme(scheme)) {\n return {\n scheme: scheme.name,\n ...omit(scheme, ['name'])\n };\n }\n return {\n scheme\n };\n}\nfunction defaultRange(channel, model) {\n const {\n size,\n config,\n mark,\n encoding\n } = model;\n const getSignalName = model.getSignalName.bind(model);\n const {\n type\n } = getFieldOrDatumDef(encoding[channel]);\n const mergedScaleCmpt = model.getScaleComponent(channel);\n const scaleType = mergedScaleCmpt.get('type');\n const {\n domain,\n domainMid\n } = model.specifiedScales[channel];\n switch (channel) {\n case X:\n case Y:\n {\n // If there is no explicit width/height for discrete x/y scales\n if (contains(['point', 'band'], scaleType)) {\n const positionSize = getDiscretePositionSize(channel, size, config.view);\n if (isStep(positionSize)) {\n const step = getPositionStep(positionSize, model, channel);\n return {\n step\n };\n }\n }\n // If step is null, use zero to width or height.\n // Note that we use SignalRefWrapper to account for potential merges and renames.\n const sizeType = getSizeChannel(channel);\n const sizeSignal = model.getName(sizeType);\n if (channel === Y && hasContinuousDomain(scaleType)) {\n // For y continuous scale, we have to start from the height as the bottom part has the max value.\n return [SignalRefWrapper.fromName(getSignalName, sizeSignal), 0];\n } else {\n return [0, SignalRefWrapper.fromName(getSignalName, sizeSignal)];\n }\n }\n case XOFFSET:\n case YOFFSET:\n return getOffsetRange(channel, model, scaleType);\n case SIZE:\n {\n // TODO: support custom rangeMin, rangeMax\n const zero = model.component.scales[channel].get('zero');\n const rangeMin = sizeRangeMin(mark, zero, config);\n const rangeMax = sizeRangeMax(mark, size, model, config);\n if (isContinuousToDiscrete(scaleType)) {\n return interpolateRange(rangeMin, rangeMax, defaultContinuousToDiscreteCount(scaleType, config, domain, channel));\n } else {\n return [rangeMin, rangeMax];\n }\n }\n case THETA:\n return [0, Math.PI * 2];\n case ANGLE:\n // TODO: add config.scale.min/maxAngleDegree (for point and text) and config.scale.min/maxAngleRadian (for arc) once we add arc marks.\n // (It's weird to add just config.scale.min/maxAngleDegree for now)\n return [0, 360];\n case RADIUS:\n {\n // max radius = half od min(width,height)\n return [0, new SignalRefWrapper(() => {\n const w = model.getSignalName('width');\n const h = model.getSignalName('height');\n return \"min(\".concat(w, \",\").concat(h, \")/2\");\n })];\n }\n case STROKEWIDTH:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minStrokeWidth, config.scale.maxStrokeWidth];\n case STROKEDASH:\n return [\n // TODO: add this to Vega's config.range?\n [1, 0], [4, 2], [2, 1], [1, 1], [1, 2, 4, 2]];\n case SHAPE:\n return 'symbol';\n case COLOR:\n case FILL:\n case STROKE:\n if (scaleType === 'ordinal') {\n // Only nominal data uses ordinal scale by default\n return type === 'nominal' ? 'category' : 'ordinal';\n } else {\n if (domainMid !== undefined) {\n return 'diverging';\n } else {\n return mark === 'rect' || mark === 'geoshape' ? 'heatmap' : 'ramp';\n }\n }\n case OPACITY:\n case FILLOPACITY:\n case STROKEOPACITY:\n // TODO: support custom rangeMin, rangeMax\n return [config.scale.minOpacity, config.scale.maxOpacity];\n }\n}\nfunction getPositionStep(step, model, channel) {\n const {\n encoding\n } = model;\n const mergedScaleCmpt = model.getScaleComponent(channel);\n const offsetChannel = getOffsetScaleChannel(channel);\n const offsetDef = encoding[offsetChannel];\n const stepFor = getStepFor({\n step,\n offsetIsDiscrete: isFieldOrDatumDef(offsetDef) && isDiscrete$1(offsetDef.type)\n });\n if (stepFor === 'offset' && channelHasFieldOrDatum(encoding, offsetChannel)) {\n var _mergedScaleCmpt$get;\n const offsetScaleCmpt = model.getScaleComponent(offsetChannel);\n const offsetScaleName = model.scaleName(offsetChannel);\n let stepCount = \"domain('\".concat(offsetScaleName, \"').length\");\n if (offsetScaleCmpt.get('type') === 'band') {\n var _ref92, _offsetScaleCmpt$get, _ref93, _offsetScaleCmpt$get2;\n const offsetPaddingInner = (_ref92 = (_offsetScaleCmpt$get = offsetScaleCmpt.get('paddingInner')) !== null && _offsetScaleCmpt$get !== void 0 ? _offsetScaleCmpt$get : offsetScaleCmpt.get('padding')) !== null && _ref92 !== void 0 ? _ref92 : 0;\n const offsetPaddingOuter = (_ref93 = (_offsetScaleCmpt$get2 = offsetScaleCmpt.get('paddingOuter')) !== null && _offsetScaleCmpt$get2 !== void 0 ? _offsetScaleCmpt$get2 : offsetScaleCmpt.get('padding')) !== null && _ref93 !== void 0 ? _ref93 : 0;\n stepCount = \"bandspace(\".concat(stepCount, \", \").concat(offsetPaddingInner, \", \").concat(offsetPaddingOuter, \")\");\n }\n const paddingInner = (_mergedScaleCmpt$get = mergedScaleCmpt.get('paddingInner')) !== null && _mergedScaleCmpt$get !== void 0 ? _mergedScaleCmpt$get : mergedScaleCmpt.get('padding');\n return {\n signal: \"\".concat(step.step, \" * \").concat(stepCount, \" / (1-\").concat(exprFromSignalRefOrValue(paddingInner), \")\")\n };\n } else {\n return step.step;\n }\n}\nfunction getOffsetStep(step, offsetScaleType) {\n const stepFor = getStepFor({\n step,\n offsetIsDiscrete: hasDiscreteDomain(offsetScaleType)\n });\n if (stepFor === 'offset') {\n return {\n step: step.step\n };\n }\n return undefined;\n}\nfunction getOffsetRange(channel, model, offsetScaleType) {\n const positionChannel = channel === XOFFSET ? 'x' : 'y';\n const positionScaleCmpt = model.getScaleComponent(positionChannel);\n const positionScaleType = positionScaleCmpt.get('type');\n const positionScaleName = model.scaleName(positionChannel);\n if (positionScaleType === 'band') {\n const size = getDiscretePositionSize(positionChannel, model.size, model.config.view);\n if (isStep(size)) {\n // step is for offset\n const step = getOffsetStep(size, offsetScaleType);\n if (step) {\n return step;\n }\n }\n // otherwise use the position\n return [0, {\n signal: \"bandwidth('\".concat(positionScaleName, \"')\")\n }];\n } else {\n // continuous scale\n const positionDef = model.encoding[positionChannel];\n if (isFieldDef(positionDef) && positionDef.timeUnit) {\n const duration = durationExpr(positionDef.timeUnit, expr => \"scale('\".concat(positionScaleName, \"', \").concat(expr, \")\"));\n const padding = model.config.scale.bandWithNestedOffsetPaddingInner;\n if (padding) {\n const startRatio = isSignalRef(padding) ? \"\".concat(padding.signal, \"/2\") : \"\".concat(padding / 2);\n const endRatio = isSignalRef(padding) ? \"(1 - \".concat(padding.signal, \"/2)\") : \"\".concat(1 - padding / 2);\n return [{\n signal: \"\".concat(startRatio, \" * (\").concat(duration, \")\")\n }, {\n signal: \"\".concat(endRatio, \" * (\").concat(duration, \")\")\n }];\n }\n return [0, {\n signal: duration\n }];\n }\n return never(\"Cannot use \".concat(channel, \" scale if \").concat(positionChannel, \" scale is not discrete.\"));\n }\n}\nfunction getDiscretePositionSize(channel, size, viewConfig) {\n const sizeChannel = channel === X ? 'width' : 'height';\n const sizeValue = size[sizeChannel];\n if (sizeValue) {\n return sizeValue;\n }\n return getViewConfigDiscreteSize(viewConfig, sizeChannel);\n}\nfunction defaultContinuousToDiscreteCount(scaleType, config, domain, channel) {\n switch (scaleType) {\n case 'quantile':\n return config.scale.quantileCount;\n case 'quantize':\n return config.scale.quantizeCount;\n case 'threshold':\n if (domain !== undefined && isArray(domain)) {\n return domain.length + 1;\n } else {\n warn(domainRequiredForThresholdScale(channel));\n // default threshold boundaries for threshold scale since domain has cardinality of 2\n return 3;\n }\n }\n}\n/**\n * Returns the linear interpolation of the range according to the cardinality\n *\n * @param rangeMin start of the range\n * @param rangeMax end of the range\n * @param cardinality number of values in the output range\n */\nfunction interpolateRange(rangeMin, rangeMax, cardinality) {\n // always return a signal since it's better to compute the sequence in Vega later\n const f = () => {\n const rMax = signalOrStringValue(rangeMax);\n const rMin = signalOrStringValue(rangeMin);\n const step = \"(\".concat(rMax, \" - \").concat(rMin, \") / (\").concat(cardinality, \" - 1)\");\n return \"sequence(\".concat(rMin, \", \").concat(rMax, \" + \").concat(step, \", \").concat(step, \")\");\n };\n if (isSignalRef(rangeMax)) {\n return new SignalRefWrapper(f);\n } else {\n return {\n signal: f()\n };\n }\n}\nfunction sizeRangeMin(mark, zero, config) {\n if (zero) {\n if (isSignalRef(zero)) {\n return {\n signal: \"\".concat(zero.signal, \" ? 0 : \").concat(sizeRangeMin(mark, false, config))\n };\n } else {\n return 0;\n }\n }\n switch (mark) {\n case 'bar':\n case 'tick':\n return config.scale.minBandSize;\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.minStrokeWidth;\n case 'text':\n return config.scale.minFontSize;\n case 'point':\n case 'square':\n case 'circle':\n return config.scale.minSize;\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMin not implemented for the mark\n throw new Error(incompatibleChannel('size', mark));\n}\nconst MAX_SIZE_RANGE_STEP_RATIO = 0.95;\nfunction sizeRangeMax(mark, size, model, config) {\n const xyStepSignals = {\n x: getBinStepSignal(model, 'x'),\n y: getBinStepSignal(model, 'y')\n };\n switch (mark) {\n case 'bar':\n case 'tick':\n {\n if (config.scale.maxBandSize !== undefined) {\n return config.scale.maxBandSize;\n }\n const min = minXYStep(size, xyStepSignals, config.view);\n if (isNumber$1(min)) {\n return min - 1;\n } else {\n return new SignalRefWrapper(() => \"\".concat(min.signal, \" - 1\"));\n }\n }\n case 'line':\n case 'trail':\n case 'rule':\n return config.scale.maxStrokeWidth;\n case 'text':\n return config.scale.maxFontSize;\n case 'point':\n case 'square':\n case 'circle':\n {\n if (config.scale.maxSize) {\n return config.scale.maxSize;\n }\n const pointStep = minXYStep(size, xyStepSignals, config.view);\n if (isNumber$1(pointStep)) {\n return Math.pow(MAX_SIZE_RANGE_STEP_RATIO * pointStep, 2);\n } else {\n return new SignalRefWrapper(() => \"pow(\".concat(MAX_SIZE_RANGE_STEP_RATIO, \" * \").concat(pointStep.signal, \", 2)\"));\n }\n }\n }\n /* istanbul ignore next: should never reach here */\n // sizeRangeMax not implemented for the mark\n throw new Error(incompatibleChannel('size', mark));\n}\n/**\n * @returns {number} Range step of x or y or minimum between the two if both are ordinal scale.\n */\nfunction minXYStep(size, xyStepSignals, viewConfig) {\n const widthStep = isStep(size.width) ? size.width.step : getViewConfigDiscreteStep(viewConfig, 'width');\n const heightStep = isStep(size.height) ? size.height.step : getViewConfigDiscreteStep(viewConfig, 'height');\n if (xyStepSignals.x || xyStepSignals.y) {\n return new SignalRefWrapper(() => {\n const exprs = [xyStepSignals.x ? xyStepSignals.x.signal : widthStep, xyStepSignals.y ? xyStepSignals.y.signal : heightStep];\n return \"min(\".concat(exprs.join(', '), \")\");\n });\n }\n return Math.min(widthStep, heightStep);\n}\nfunction parseScaleProperty(model, property) {\n if (isUnitModel(model)) {\n parseUnitScaleProperty(model, property);\n } else {\n parseNonUnitScaleProperty(model, property);\n }\n}\nfunction parseUnitScaleProperty(model, property) {\n const localScaleComponents = model.component.scales;\n const {\n config,\n encoding,\n markDef,\n specifiedScales\n } = model;\n for (const channel of keys(localScaleComponents)) {\n const specifiedScale = specifiedScales[channel];\n const localScaleCmpt = localScaleComponents[channel];\n const mergedScaleCmpt = model.getScaleComponent(channel);\n const fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n const specifiedValue = specifiedScale[property];\n const scaleType = mergedScaleCmpt.get('type');\n const scalePadding = mergedScaleCmpt.get('padding');\n const scalePaddingInner = mergedScaleCmpt.get('paddingInner');\n const supportedByScaleType = scaleTypeSupportProperty(scaleType, property);\n const channelIncompatability = channelScalePropertyIncompatability(channel, property);\n if (specifiedValue !== undefined) {\n // If there is a specified value, check if it is compatible with scale type and channel\n if (!supportedByScaleType) {\n warn(scalePropertyNotWorkWithScaleType(scaleType, property, channel));\n } else if (channelIncompatability) {\n // channel\n warn(channelIncompatability);\n }\n }\n if (supportedByScaleType && channelIncompatability === undefined) {\n if (specifiedValue !== undefined) {\n const timeUnit = fieldOrDatumDef['timeUnit'];\n const type = fieldOrDatumDef.type;\n switch (property) {\n // domainMax/Min to signal if the value is a datetime object\n case 'domainMax':\n case 'domainMin':\n if (isDateTime(specifiedScale[property]) || type === 'temporal' || timeUnit) {\n localScaleCmpt.set(property, {\n signal: valueExpr(specifiedScale[property], {\n type,\n timeUnit\n })\n }, true);\n } else {\n localScaleCmpt.set(property, specifiedScale[property], true);\n }\n break;\n default:\n localScaleCmpt.copyKeyFromObject(property, specifiedScale);\n }\n } else {\n const value = property in scaleRules ? scaleRules[property]({\n model,\n channel,\n fieldOrDatumDef,\n scaleType,\n scalePadding,\n scalePaddingInner,\n domain: specifiedScale.domain,\n domainMin: specifiedScale.domainMin,\n domainMax: specifiedScale.domainMax,\n markDef,\n config,\n hasNestedOffsetScale: channelHasNestedOffsetScale(encoding, channel),\n hasSecondaryRangeChannel: !!encoding[getSecondaryRangeChannel(channel)]\n }) : config.scale[property];\n if (value !== undefined) {\n localScaleCmpt.set(property, value, false);\n }\n }\n }\n }\n}\nconst scaleRules = {\n bins: _ref94 => {\n let {\n model,\n fieldOrDatumDef\n } = _ref94;\n return isFieldDef(fieldOrDatumDef) ? bins(model, fieldOrDatumDef) : undefined;\n },\n interpolate: _ref95 => {\n let {\n channel,\n fieldOrDatumDef\n } = _ref95;\n return interpolate(channel, fieldOrDatumDef.type);\n },\n nice: _ref96 => {\n let {\n scaleType,\n channel,\n domain,\n domainMin,\n domainMax,\n fieldOrDatumDef\n } = _ref96;\n return nice(scaleType, channel, domain, domainMin, domainMax, fieldOrDatumDef);\n },\n padding: _ref97 => {\n let {\n channel,\n scaleType,\n fieldOrDatumDef,\n markDef,\n config\n } = _ref97;\n return padding(channel, scaleType, config.scale, fieldOrDatumDef, markDef, config.bar);\n },\n paddingInner: _ref98 => {\n let {\n scalePadding,\n channel,\n markDef,\n scaleType,\n config,\n hasNestedOffsetScale\n } = _ref98;\n return paddingInner(scalePadding, channel, markDef.type, scaleType, config.scale, hasNestedOffsetScale);\n },\n paddingOuter: _ref99 => {\n let {\n scalePadding,\n channel,\n scaleType,\n scalePaddingInner,\n config,\n hasNestedOffsetScale\n } = _ref99;\n return paddingOuter(scalePadding, channel, scaleType, scalePaddingInner, config.scale, hasNestedOffsetScale);\n },\n reverse: _ref100 => {\n let {\n fieldOrDatumDef,\n scaleType,\n channel,\n config\n } = _ref100;\n const sort = isFieldDef(fieldOrDatumDef) ? fieldOrDatumDef.sort : undefined;\n return reverse(scaleType, sort, channel, config.scale);\n },\n zero: _ref101 => {\n let {\n channel,\n fieldOrDatumDef,\n domain,\n markDef,\n scaleType,\n config,\n hasSecondaryRangeChannel\n } = _ref101;\n return zero(channel, fieldOrDatumDef, domain, markDef, scaleType, config.scale, hasSecondaryRangeChannel);\n }\n};\n// This method is here rather than in range.ts to avoid circular dependency.\nfunction parseScaleRange(model) {\n if (isUnitModel(model)) {\n parseUnitScaleRange(model);\n } else {\n parseNonUnitScaleProperty(model, 'range');\n }\n}\nfunction parseNonUnitScaleProperty(model, property) {\n const localScaleComponents = model.component.scales;\n for (const child of model.children) {\n if (property === 'range') {\n parseScaleRange(child);\n } else {\n parseScaleProperty(child, property);\n }\n }\n for (const channel of keys(localScaleComponents)) {\n let valueWithExplicit;\n for (const child of model.children) {\n const childComponent = child.component.scales[channel];\n if (childComponent) {\n const childValueWithExplicit = childComponent.getWithExplicit(property);\n valueWithExplicit = mergeValuesWithExplicit(valueWithExplicit, childValueWithExplicit, property, 'scale', tieBreakByComparing((v1, v2) => {\n switch (property) {\n case 'range':\n // For step, prefer larger step\n if (v1.step && v2.step) {\n return v1.step - v2.step;\n }\n return 0;\n // TODO: precedence rule for other properties\n }\n\n return 0;\n }));\n }\n }\n localScaleComponents[channel].setWithExplicit(property, valueWithExplicit);\n }\n}\nfunction bins(model, fieldDef) {\n const bin = fieldDef.bin;\n if (isBinning(bin)) {\n const binSignal = getBinSignalName(model, fieldDef.field, bin);\n return new SignalRefWrapper(() => {\n return model.getSignalName(binSignal);\n });\n } else if (isBinned(bin) && isBinParams(bin) && bin.step !== undefined) {\n // start and stop will be determined from the scale domain\n return {\n step: bin.step\n };\n }\n return undefined;\n}\nfunction interpolate(channel, type) {\n if (contains([COLOR, FILL, STROKE], channel) && type !== 'nominal') {\n return 'hcl';\n }\n return undefined;\n}\nfunction nice(scaleType, channel, specifiedDomain, domainMin, domainMax, fieldOrDatumDef) {\n var _getFieldDef;\n if ((_getFieldDef = getFieldDef(fieldOrDatumDef)) !== null && _getFieldDef !== void 0 && _getFieldDef.bin || isArray(specifiedDomain) || domainMax != null || domainMin != null || contains([ScaleType.TIME, ScaleType.UTC], scaleType)) {\n return undefined;\n }\n return isXorY(channel) ? true : undefined;\n}\nfunction padding(channel, scaleType, scaleConfig, fieldOrDatumDef, markDef, barConfig) {\n if (isXorY(channel)) {\n if (isContinuousToContinuous(scaleType)) {\n if (scaleConfig.continuousPadding !== undefined) {\n return scaleConfig.continuousPadding;\n }\n const {\n type,\n orient\n } = markDef;\n if (type === 'bar' && !(isFieldDef(fieldOrDatumDef) && (fieldOrDatumDef.bin || fieldOrDatumDef.timeUnit))) {\n if (orient === 'vertical' && channel === 'x' || orient === 'horizontal' && channel === 'y') {\n return barConfig.continuousBandSize;\n }\n }\n }\n if (scaleType === ScaleType.POINT) {\n return scaleConfig.pointPadding;\n }\n }\n return undefined;\n}\nfunction paddingInner(paddingValue, channel, mark, scaleType, scaleConfig) {\n let hasNestedOffsetScale = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingInner.\n return undefined;\n }\n if (isXorY(channel)) {\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n // paddingOuter would only be called if it's a band scale, just return the default for bandScale.\n const {\n bandPaddingInner,\n barBandPaddingInner,\n rectBandPaddingInner,\n bandWithNestedOffsetPaddingInner\n } = scaleConfig;\n if (hasNestedOffsetScale) {\n return bandWithNestedOffsetPaddingInner;\n }\n return getFirstDefined(bandPaddingInner, mark === 'bar' ? barBandPaddingInner : rectBandPaddingInner);\n } else if (isXorYOffset(channel)) {\n if (scaleType === ScaleType.BAND) {\n return scaleConfig.offsetBandPaddingInner;\n }\n }\n return undefined;\n}\nfunction paddingOuter(paddingValue, channel, scaleType, paddingInnerValue, scaleConfig) {\n let hasNestedOffsetScale = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n if (paddingValue !== undefined) {\n // If user has already manually specified \"padding\", no need to add default paddingOuter.\n return undefined;\n }\n if (isXorY(channel)) {\n const {\n bandPaddingOuter,\n bandWithNestedOffsetPaddingOuter\n } = scaleConfig;\n if (hasNestedOffsetScale) {\n return bandWithNestedOffsetPaddingOuter;\n }\n // Padding is only set for X and Y by default.\n // Basically it doesn't make sense to add padding for color and size.\n if (scaleType === ScaleType.BAND) {\n return getFirstDefined(bandPaddingOuter,\n /* By default, paddingOuter is paddingInner / 2. The reason is that\n size (width/height) = step * (cardinality - paddingInner + 2 * paddingOuter).\n and we want the width/height to be integer by default.\n Note that step (by default) and cardinality are integers.) */\n isSignalRef(paddingInnerValue) ? {\n signal: \"\".concat(paddingInnerValue.signal, \"/2\")\n } : paddingInnerValue / 2);\n }\n } else if (isXorYOffset(channel)) {\n if (scaleType === ScaleType.POINT) {\n return 0.5; // so the point positions align with centers of band scales.\n } else if (scaleType === ScaleType.BAND) {\n return scaleConfig.offsetBandPaddingOuter;\n }\n }\n return undefined;\n}\nfunction reverse(scaleType, sort, channel, scaleConfig) {\n if (channel === 'x' && scaleConfig.xReverse !== undefined) {\n if (hasContinuousDomain(scaleType) && sort === 'descending') {\n if (isSignalRef(scaleConfig.xReverse)) {\n return {\n signal: \"!\".concat(scaleConfig.xReverse.signal)\n };\n } else {\n return !scaleConfig.xReverse;\n }\n }\n return scaleConfig.xReverse;\n }\n if (hasContinuousDomain(scaleType) && sort === 'descending') {\n // For continuous domain scales, Vega does not support domain sort.\n // Thus, we reverse range instead if sort is descending\n return true;\n }\n return undefined;\n}\nfunction zero(channel, fieldDef, specifiedDomain, markDef, scaleType, scaleConfig, hasSecondaryRangeChannel) {\n // If users explicitly provide a domain, we should not augment zero as that will be unexpected.\n const hasCustomDomain = !!specifiedDomain && specifiedDomain !== 'unaggregated';\n if (hasCustomDomain) {\n if (hasContinuousDomain(scaleType)) {\n if (isArray(specifiedDomain)) {\n const first = specifiedDomain[0];\n const last = specifiedDomain[specifiedDomain.length - 1];\n if (first <= 0 && last >= 0) {\n // if the domain includes zero, make zero remains true\n return true;\n }\n }\n return false;\n }\n }\n // If there is no custom domain, return configZero value (=`true` as default) only for the following cases:\n // 1) using quantitative field with size\n // While this can be either ratio or interval fields, our assumption is that\n // ratio are more common. However, if the scaleType is discretizing scale, we want to return\n // false so that range doesn't start at zero\n if (channel === 'size' && fieldDef.type === 'quantitative' && !isContinuousToDiscrete(scaleType)) {\n return true;\n }\n // 2) non-binned, quantitative x-scale or y-scale\n // (For binning, we should not include zero by default because binning are calculated without zero.)\n // (For area/bar charts with ratio scale chart, we should always include zero.)\n if (!(isFieldDef(fieldDef) && fieldDef.bin) && contains([...POSITION_SCALE_CHANNELS, ...POLAR_POSITION_SCALE_CHANNELS], channel)) {\n const {\n orient,\n type\n } = markDef;\n if (contains(['bar', 'area', 'line', 'trail'], type)) {\n if (orient === 'horizontal' && channel === 'y' || orient === 'vertical' && channel === 'x') {\n return false;\n }\n }\n if (contains(['bar', 'area'], type) && !hasSecondaryRangeChannel) {\n return true;\n }\n return scaleConfig === null || scaleConfig === void 0 ? void 0 : scaleConfig.zero;\n }\n return false;\n}\n\n/**\n * Determine if there is a specified scale type and if it is appropriate,\n * or determine default type if type is unspecified or inappropriate.\n */\n// NOTE: CompassQL uses this method.\nfunction scaleType(specifiedScale, channel, fieldDef, mark) {\n let hasNestedOffsetScale = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n const defaultScaleType = defaultType(channel, fieldDef, mark, hasNestedOffsetScale);\n const {\n type\n } = specifiedScale;\n if (!isScaleChannel(channel)) {\n // There is no scale for these channels\n return null;\n }\n if (type !== undefined) {\n // Check if explicitly specified scale type is supported by the channel\n if (!channelSupportScaleType(channel, type)) {\n warn(scaleTypeNotWorkWithChannel(channel, type, defaultScaleType));\n return defaultScaleType;\n }\n // Check if explicitly specified scale type is supported by the data type\n if (isFieldDef(fieldDef) && !scaleTypeSupportDataType(type, fieldDef.type)) {\n warn(scaleTypeNotWorkWithFieldDef(type, defaultScaleType));\n return defaultScaleType;\n }\n return type;\n }\n return defaultScaleType;\n}\n/**\n * Determine appropriate default scale type.\n */\n// NOTE: Voyager uses this method.\nfunction defaultType(channel, fieldDef, mark, hasNestedOffsetScale) {\n switch (fieldDef.type) {\n case 'nominal':\n case 'ordinal':\n {\n var _fieldDef$axis;\n if (isColorChannel(channel) || rangeType(channel) === 'discrete') {\n if (channel === 'shape' && fieldDef.type === 'ordinal') {\n warn(discreteChannelCannotEncode(channel, 'ordinal'));\n }\n return 'ordinal';\n }\n if (isXorY(channel) || isXorYOffset(channel)) {\n if (contains(['rect', 'bar', 'image', 'rule'], mark.type)) {\n // The rect/bar mark should fit into a band.\n // For rule, using band scale to make rule align with axis ticks better https://github.com/vega/vega-lite/issues/3429\n return 'band';\n }\n if (hasNestedOffsetScale) {\n // If there is a nested offset scale, then there is a \"band\" for the span of the nested scale.\n return 'band';\n }\n } else if (mark.type === 'arc' && channel in POLAR_POSITION_SCALE_CHANNEL_INDEX) {\n return 'band';\n }\n const dimensionSize = mark[getSizeChannel(channel)];\n if (isRelativeBandSize(dimensionSize)) {\n return 'band';\n }\n if (isPositionFieldOrDatumDef(fieldDef) && (_fieldDef$axis = fieldDef.axis) !== null && _fieldDef$axis !== void 0 && _fieldDef$axis.tickBand) {\n return 'band';\n }\n // Otherwise, use ordinal point scale so we can easily get center positions of the marks.\n return 'point';\n }\n case 'temporal':\n if (isColorChannel(channel)) {\n return 'time';\n } else if (rangeType(channel) === 'discrete') {\n warn(discreteChannelCannotEncode(channel, 'temporal'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n } else if (isFieldDef(fieldDef) && fieldDef.timeUnit && normalizeTimeUnit(fieldDef.timeUnit).utc) {\n return 'utc';\n }\n return 'time';\n case 'quantitative':\n if (isColorChannel(channel)) {\n if (isFieldDef(fieldDef) && isBinning(fieldDef.bin)) {\n return 'bin-ordinal';\n }\n return 'linear';\n } else if (rangeType(channel) === 'discrete') {\n warn(discreteChannelCannotEncode(channel, 'quantitative'));\n // TODO: consider using quantize (equivalent to binning) once we have it\n return 'ordinal';\n }\n return 'linear';\n case 'geojson':\n return undefined;\n }\n /* istanbul ignore next: should never reach this */\n throw new Error(invalidFieldType(fieldDef.type));\n}\nfunction parseScales(model) {\n let {\n ignoreRange\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n parseScaleCore(model);\n parseScaleDomain(model);\n for (const prop of NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES) {\n parseScaleProperty(model, prop);\n }\n if (!ignoreRange) {\n // range depends on zero\n parseScaleRange(model);\n }\n}\nfunction parseScaleCore(model) {\n if (isUnitModel(model)) {\n model.component.scales = parseUnitScaleCore(model);\n } else {\n model.component.scales = parseNonUnitScaleCore(model);\n }\n}\n/**\n * Parse scales for all channels of a model.\n */\nfunction parseUnitScaleCore(model) {\n const {\n encoding,\n mark,\n markDef\n } = model;\n const scaleComponents = {};\n for (const channel of SCALE_CHANNELS) {\n const fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]); // must be typed def to have scale\n // Don't generate scale for shape of geoshape\n if (fieldOrDatumDef && mark === GEOSHAPE && channel === SHAPE && fieldOrDatumDef.type === GEOJSON) {\n continue;\n }\n let specifiedScale = fieldOrDatumDef && fieldOrDatumDef['scale'];\n if (isXorYOffset(channel)) {\n const mainChannel = getMainChannelFromOffsetChannel(channel);\n if (!channelHasNestedOffsetScale(encoding, mainChannel)) {\n // Don't generate scale when the offset encoding shouldn't yield a nested scale\n if (specifiedScale) {\n warn(offsetEncodingScaleIgnored(channel));\n }\n continue;\n }\n }\n if (fieldOrDatumDef && specifiedScale !== null && specifiedScale !== false) {\n var _specifiedScale;\n (_specifiedScale = specifiedScale) !== null && _specifiedScale !== void 0 ? _specifiedScale : specifiedScale = {};\n const hasNestedOffsetScale = channelHasNestedOffsetScale(encoding, channel);\n const sType = scaleType(specifiedScale, channel, fieldOrDatumDef, markDef, hasNestedOffsetScale);\n scaleComponents[channel] = new ScaleComponent(model.scaleName(\"\".concat(channel), true), {\n value: sType,\n explicit: specifiedScale.type === sType\n });\n }\n }\n return scaleComponents;\n}\nconst scaleTypeTieBreaker = tieBreakByComparing((st1, st2) => scaleTypePrecedence(st1) - scaleTypePrecedence(st2));\nfunction parseNonUnitScaleCore(model) {\n var _a;\n const scaleComponents = model.component.scales = {};\n const scaleTypeWithExplicitIndex = {};\n const resolve = model.component.resolve;\n // Parse each child scale and determine if a particular channel can be merged.\n for (const child of model.children) {\n parseScaleCore(child);\n // Instead of always merging right away -- check if it is compatible to merge first!\n for (const channel of keys(child.component.scales)) {\n var _a$channel;\n // if resolve is undefined, set default first\n (_a$channel = (_a = resolve.scale)[channel]) !== null && _a$channel !== void 0 ? _a$channel : _a[channel] = defaultScaleResolve(channel, model);\n if (resolve.scale[channel] === 'shared') {\n const explicitScaleType = scaleTypeWithExplicitIndex[channel];\n const childScaleType = child.component.scales[channel].getWithExplicit('type');\n if (explicitScaleType) {\n if (scaleCompatible(explicitScaleType.value, childScaleType.value)) {\n // merge scale component if type are compatible\n scaleTypeWithExplicitIndex[channel] = mergeValuesWithExplicit(explicitScaleType, childScaleType, 'type', 'scale', scaleTypeTieBreaker);\n } else {\n // Otherwise, update conflicting channel to be independent\n resolve.scale[channel] = 'independent';\n // Remove from the index so they don't get merged\n delete scaleTypeWithExplicitIndex[channel];\n }\n } else {\n scaleTypeWithExplicitIndex[channel] = childScaleType;\n }\n }\n }\n }\n // Merge each channel listed in the index\n for (const channel of keys(scaleTypeWithExplicitIndex)) {\n // Create new merged scale component\n const name = model.scaleName(channel, true);\n const typeWithExplicit = scaleTypeWithExplicitIndex[channel];\n scaleComponents[channel] = new ScaleComponent(name, typeWithExplicit);\n // rename each child and mark them as merged\n for (const child of model.children) {\n const childScale = child.component.scales[channel];\n if (childScale) {\n child.renameScale(childScale.get('name'), name);\n childScale.merged = true;\n }\n }\n }\n return scaleComponents;\n}\nclass NameMap {\n constructor() {\n this.nameMap = {};\n }\n rename(oldName, newName) {\n this.nameMap[oldName] = newName;\n }\n has(name) {\n return this.nameMap[name] !== undefined;\n }\n get(name) {\n // If the name appears in the _nameMap, we need to read its new name.\n // We have to loop over the dict just in case the new name also gets renamed.\n while (this.nameMap[name] && name !== this.nameMap[name]) {\n name = this.nameMap[name];\n }\n return name;\n }\n}\n/*\n We use type guards instead of `instanceof` as `instanceof` makes\n different parts of the compiler depend on the actual implementation of\n the model classes, which in turn depend on different parts of the compiler.\n Thus, `instanceof` leads to circular dependency problems.\n\n On the other hand, type guards only make different parts of the compiler\n depend on the type of the model classes, but not the actual implementation.\n*/\nfunction isUnitModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'unit';\n}\nfunction isFacetModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'facet';\n}\nfunction isConcatModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'concat';\n}\nfunction isLayerModel(model) {\n return (model === null || model === void 0 ? void 0 : model.type) === 'layer';\n}\nclass Model {\n constructor(spec, type, parent, parentGivenName, config, resolve, view) {\n var _spec$name, _spec$transform;\n this.type = type;\n this.parent = parent;\n this.config = config;\n /**\n * Corrects the data references in marks after assemble.\n */\n this.correctDataNames = mark => {\n var _mark$from, _mark$from2;\n // TODO: make this correct\n // for normal data references\n if ((_mark$from = mark.from) !== null && _mark$from !== void 0 && _mark$from.data) {\n mark.from.data = this.lookupDataSource(mark.from.data);\n }\n // for access to facet data\n if ((_mark$from2 = mark.from) !== null && _mark$from2 !== void 0 && (_mark$from2 = _mark$from2.facet) !== null && _mark$from2 !== void 0 && _mark$from2.data) {\n mark.from.facet.data = this.lookupDataSource(mark.from.facet.data);\n }\n return mark;\n };\n this.parent = parent;\n this.config = config;\n this.view = replaceExprRef(view);\n // If name is not provided, always use parent's givenName to avoid name conflicts.\n this.name = (_spec$name = spec.name) !== null && _spec$name !== void 0 ? _spec$name : parentGivenName;\n this.title = isText(spec.title) ? {\n text: spec.title\n } : spec.title ? replaceExprRef(spec.title) : undefined;\n // Shared name maps\n this.scaleNameMap = parent ? parent.scaleNameMap : new NameMap();\n this.projectionNameMap = parent ? parent.projectionNameMap : new NameMap();\n this.signalNameMap = parent ? parent.signalNameMap : new NameMap();\n this.data = spec.data;\n this.description = spec.description;\n this.transforms = normalizeTransform((_spec$transform = spec.transform) !== null && _spec$transform !== void 0 ? _spec$transform : []);\n this.layout = type === 'layer' || type === 'unit' ? {} : extractCompositionLayout(spec, type, config);\n this.component = {\n data: {\n sources: parent ? parent.component.data.sources : [],\n outputNodes: parent ? parent.component.data.outputNodes : {},\n outputNodeRefCounts: parent ? parent.component.data.outputNodeRefCounts : {},\n // data is faceted if the spec is a facet spec or the parent has faceted data and data is undefined\n isFaceted: isFacetSpec(spec) || (parent === null || parent === void 0 ? void 0 : parent.component.data.isFaceted) && spec.data === undefined\n },\n layoutSize: new Split(),\n layoutHeaders: {\n row: {},\n column: {},\n facet: {}\n },\n mark: null,\n resolve: {\n scale: {},\n axis: {},\n legend: {},\n ...(resolve ? duplicate(resolve) : {})\n },\n selection: null,\n scales: null,\n projection: null,\n axes: {},\n legends: {}\n };\n }\n get width() {\n return this.getSizeSignalRef('width');\n }\n get height() {\n return this.getSizeSignalRef('height');\n }\n parse() {\n this.parseScale();\n this.parseLayoutSize(); // depends on scale\n this.renameTopLevelLayoutSizeSignal();\n this.parseSelections();\n this.parseProjection();\n this.parseData(); // (pathorder) depends on markDef; selection filters depend on parsed selections; depends on projection because some transforms require the finalized projection name.\n this.parseAxesAndHeaders(); // depends on scale and layout size\n this.parseLegends(); // depends on scale, markDef\n this.parseMarkGroup(); // depends on data name, scale, layout size, axisGroup, and children's scale, axis, legend and mark.\n }\n\n parseScale() {\n parseScales(this);\n }\n parseProjection() {\n parseProjection(this);\n }\n /**\n * Rename top-level spec's size to be just width / height, ignoring model name.\n * This essentially merges the top-level spec's width/height signals with the width/height signals\n * to help us reduce redundant signals declaration.\n */\n renameTopLevelLayoutSizeSignal() {\n if (this.getName('width') !== 'width') {\n this.renameSignal(this.getName('width'), 'width');\n }\n if (this.getName('height') !== 'height') {\n this.renameSignal(this.getName('height'), 'height');\n }\n }\n parseLegends() {\n parseLegend(this);\n }\n assembleEncodeFromView(view) {\n // Exclude \"style\"\n const {\n style: _,\n ...baseView\n } = view;\n const e = {};\n for (const property of keys(baseView)) {\n const value = baseView[property];\n if (value !== undefined) {\n e[property] = signalOrValueRef(value);\n }\n }\n return e;\n }\n assembleGroupEncodeEntry(isTopLevel) {\n let encodeEntry = {};\n if (this.view) {\n encodeEntry = this.assembleEncodeFromView(this.view);\n }\n if (!isTopLevel) {\n // Descriptions are already added to the top-level description so we only need to add them to the inner views.\n if (this.description) {\n encodeEntry['description'] = signalOrValueRef(this.description);\n }\n // For top-level spec, we can set the global width and height signal to adjust the group size.\n // For other child specs, we have to manually set width and height in the encode entry.\n if (this.type === 'unit' || this.type === 'layer') {\n var _encodeEntry;\n return {\n width: this.getSizeSignalRef('width'),\n height: this.getSizeSignalRef('height'),\n ...((_encodeEntry = encodeEntry) !== null && _encodeEntry !== void 0 ? _encodeEntry : {})\n };\n }\n }\n return isEmpty(encodeEntry) ? undefined : encodeEntry;\n }\n assembleLayout() {\n if (!this.layout) {\n return undefined;\n }\n const {\n spacing,\n ...layout\n } = this.layout;\n const {\n component,\n config\n } = this;\n const titleBand = assembleLayoutTitleBand(component.layoutHeaders, config);\n return {\n padding: spacing,\n ...this.assembleDefaultLayout(),\n ...layout,\n ...(titleBand ? {\n titleBand\n } : {})\n };\n }\n assembleDefaultLayout() {\n return {};\n }\n assembleHeaderMarks() {\n const {\n layoutHeaders\n } = this.component;\n let headerMarks = [];\n for (const channel of FACET_CHANNELS) {\n if (layoutHeaders[channel].title) {\n headerMarks.push(assembleTitleGroup(this, channel));\n }\n }\n for (const channel of HEADER_CHANNELS) {\n headerMarks = headerMarks.concat(assembleHeaderGroups(this, channel));\n }\n return headerMarks;\n }\n assembleAxes() {\n return assembleAxes(this.component.axes, this.config);\n }\n assembleLegends() {\n return assembleLegends(this);\n }\n assembleProjections() {\n return assembleProjections(this);\n }\n assembleTitle() {\n var _this$title;\n const {\n encoding,\n ...titleNoEncoding\n } = (_this$title = this.title) !== null && _this$title !== void 0 ? _this$title : {};\n const title = {\n ...extractTitleConfig(this.config.title).nonMarkTitleProperties,\n ...titleNoEncoding,\n ...(encoding ? {\n encode: {\n update: encoding\n }\n } : {})\n };\n if (title.text) {\n if (contains(['unit', 'layer'], this.type)) {\n // Unit/Layer\n if (contains(['middle', undefined], title.anchor)) {\n var _title$frame;\n (_title$frame = title.frame) !== null && _title$frame !== void 0 ? _title$frame : title.frame = 'group';\n }\n } else {\n var _title$anchor;\n // composition with Vega layout\n // Set title = \"start\" by default for composition as \"middle\" does not look nice\n // https://github.com/vega/vega/issues/960#issuecomment-471360328\n (_title$anchor = title.anchor) !== null && _title$anchor !== void 0 ? _title$anchor : title.anchor = 'start';\n }\n return isEmpty(title) ? undefined : title;\n }\n return undefined;\n }\n /**\n * Assemble the mark group for this model. We accept optional `signals` so that we can include concat top-level signals with the top-level model's local signals.\n */\n assembleGroup() {\n let signals = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const group = {};\n signals = signals.concat(this.assembleSignals());\n if (signals.length > 0) {\n group.signals = signals;\n }\n const layout = this.assembleLayout();\n if (layout) {\n group.layout = layout;\n }\n group.marks = [].concat(this.assembleHeaderMarks(), this.assembleMarks());\n // Only include scales if this spec is top-level or if parent is facet.\n // (Otherwise, it will be merged with upper-level's scope.)\n const scales = !this.parent || isFacetModel(this.parent) ? assembleScales(this) : [];\n if (scales.length > 0) {\n group.scales = scales;\n }\n const axes = this.assembleAxes();\n if (axes.length > 0) {\n group.axes = axes;\n }\n const legends = this.assembleLegends();\n if (legends.length > 0) {\n group.legends = legends;\n }\n return group;\n }\n getName(text) {\n return varName((this.name ? \"\".concat(this.name, \"_\") : '') + text);\n }\n getDataName(type) {\n return this.getName(DataSourceType[type].toLowerCase());\n }\n /**\n * Request a data source name for the given data source type and mark that data source as required.\n * This method should be called in parse, so that all used data source can be correctly instantiated in assembleData().\n * You can lookup the correct dataset name in assemble with `lookupDataSource`.\n */\n requestDataName(name) {\n const fullName = this.getDataName(name);\n // Increase ref count. This is critical because otherwise we won't create a data source.\n // We also increase the ref counts on OutputNode.getSource() calls.\n const refCounts = this.component.data.outputNodeRefCounts;\n refCounts[fullName] = (refCounts[fullName] || 0) + 1;\n return fullName;\n }\n getSizeSignalRef(layoutSizeType) {\n if (isFacetModel(this.parent)) {\n const sizeType = getSizeTypeFromLayoutSizeType(layoutSizeType);\n const channel = getPositionScaleChannel(sizeType);\n const scaleComponent = this.component.scales[channel];\n if (scaleComponent && !scaleComponent.merged) {\n // independent scale\n const type = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const scaleName = scaleComponent.get('name');\n const domain = assembleDomain(this, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n const fieldRef = vgField({\n aggregate: 'distinct',\n field\n }, {\n expr: 'datum'\n });\n return {\n signal: sizeExpr(scaleName, scaleComponent, fieldRef)\n };\n } else {\n warn(unknownField(channel));\n return null;\n }\n }\n }\n }\n return {\n signal: this.signalNameMap.get(this.getName(layoutSizeType))\n };\n }\n /**\n * Lookup the name of the datasource for an output node. You probably want to call this in assemble.\n */\n lookupDataSource(name) {\n const node = this.component.data.outputNodes[name];\n if (!node) {\n // Name not found in map so let's just return what we got.\n // This can happen if we already have the correct name.\n return name;\n }\n return node.getSource();\n }\n getSignalName(oldSignalName) {\n return this.signalNameMap.get(oldSignalName);\n }\n renameSignal(oldName, newName) {\n this.signalNameMap.rename(oldName, newName);\n }\n renameScale(oldName, newName) {\n this.scaleNameMap.rename(oldName, newName);\n }\n renameProjection(oldName, newName) {\n this.projectionNameMap.rename(oldName, newName);\n }\n /**\n * @return scale name for a given channel after the scale has been parsed and named.\n */\n scaleName(originalScaleName, parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a scale can't be renamed\n // before it has the original name.\n return this.getName(originalScaleName);\n }\n // If there is a scale for the channel, it should either\n // be in the scale component or exist in the name map\n if (\n // If there is a scale for the channel, there should be a local scale component for it\n isChannel(originalScaleName) && isScaleChannel(originalScaleName) && this.component.scales[originalScaleName] ||\n // in the scale name map (the scale get merged by its parent)\n this.scaleNameMap.has(this.getName(originalScaleName))) {\n return this.scaleNameMap.get(this.getName(originalScaleName));\n }\n return undefined;\n }\n /**\n * @return projection name after the projection has been parsed and named.\n */\n projectionName(parse) {\n if (parse) {\n // During the parse phase always return a value\n // No need to refer to rename map because a projection can't be renamed\n // before it has the original name.\n return this.getName('projection');\n }\n if (this.component.projection && !this.component.projection.merged || this.projectionNameMap.has(this.getName('projection'))) {\n return this.projectionNameMap.get(this.getName('projection'));\n }\n return undefined;\n }\n /**\n * Traverse a model's hierarchy to get the scale component for a particular channel.\n */\n getScaleComponent(channel) {\n /* istanbul ignore next: This is warning for debugging test */\n if (!this.component.scales) {\n throw new Error('getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().');\n }\n const localScaleComponent = this.component.scales[channel];\n if (localScaleComponent && !localScaleComponent.merged) {\n return localScaleComponent;\n }\n return this.parent ? this.parent.getScaleComponent(channel) : undefined;\n }\n /**\n * Traverse a model's hierarchy to get a particular selection component.\n */\n getSelectionComponent(variableName, origName) {\n let sel = this.component.selection[variableName];\n if (!sel && this.parent) {\n sel = this.parent.getSelectionComponent(variableName, origName);\n }\n if (!sel) {\n throw new Error(selectionNotFound(origName));\n }\n return sel;\n }\n /**\n * Returns true if the model has a signalRef for an axis orient.\n */\n hasAxisOrientSignalRef() {\n var _this$component$axes$, _this$component$axes$2;\n return ((_this$component$axes$ = this.component.axes.x) === null || _this$component$axes$ === void 0 ? void 0 : _this$component$axes$.some(a => a.hasOrientSignalRef())) || ((_this$component$axes$2 = this.component.axes.y) === null || _this$component$axes$2 === void 0 ? void 0 : _this$component$axes$2.some(a => a.hasOrientSignalRef()));\n }\n}\n/** Abstract class for UnitModel and FacetModel. Both of which can contain fieldDefs as a part of its own specification. */\nclass ModelWithField extends Model {\n /** Get \"field\" reference for Vega */\n vgField(channel) {\n let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const fieldDef = this.fieldDef(channel);\n if (!fieldDef) {\n return undefined;\n }\n return vgField(fieldDef, opt);\n }\n reduceFieldDef(f, init) {\n return reduce(this.getMapping(), (acc, cd, c) => {\n const fieldDef = getFieldDef(cd);\n if (fieldDef) {\n return f(acc, fieldDef, c);\n }\n return acc;\n }, init);\n }\n forEachFieldDef(f, t) {\n forEach(this.getMapping(), (cd, c) => {\n const fieldDef = getFieldDef(cd);\n if (fieldDef) {\n f(fieldDef, c);\n }\n }, t);\n }\n}\n\n/**\n * A class for density transform nodes\n */\nclass DensityTransformNode extends DataFlowNode {\n clone() {\n return new DensityTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n var _this$transform$as, _specifiedAs$, _specifiedAs$2;\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const specifiedAs = (_this$transform$as = this.transform.as) !== null && _this$transform$as !== void 0 ? _this$transform$as : [undefined, undefined];\n this.transform.as = [(_specifiedAs$ = specifiedAs[0]) !== null && _specifiedAs$ !== void 0 ? _specifiedAs$ : 'value', (_specifiedAs$2 = specifiedAs[1]) !== null && _specifiedAs$2 !== void 0 ? _specifiedAs$2 : 'density'];\n // set steps when we are grouping so that we get consitent sampling points for imputing and grouping\n if (transform.groupby && transform.minsteps == null && transform.maxsteps == null && transform.steps == null) {\n this.transform.steps = 200;\n }\n }\n dependentFields() {\n var _this$transform$group2;\n return new Set([this.transform.density, ...((_this$transform$group2 = this.transform.groupby) !== null && _this$transform$group2 !== void 0 ? _this$transform$group2 : [])]);\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return \"DensityTransform \".concat(hash(this.transform));\n }\n assemble() {\n const {\n density,\n ...rest\n } = this.transform;\n const result = {\n type: 'kde',\n field: density,\n ...rest\n };\n return result;\n }\n}\n\n/**\n * A class for flatten transform nodes\n */\nclass ExtentTransformNode extends DataFlowNode {\n clone() {\n return new ExtentTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform);\n }\n dependentFields() {\n return new Set([this.transform.extent]);\n }\n producedFields() {\n return new Set([]);\n }\n hash() {\n return \"ExtentTransform \".concat(hash(this.transform));\n }\n assemble() {\n const {\n extent,\n param\n } = this.transform;\n const result = {\n type: 'extent',\n field: extent,\n signal: param\n };\n return result;\n }\n}\nclass FilterInvalidNode extends DataFlowNode {\n clone() {\n return new FilterInvalidNode(null, {\n ...this.filter\n });\n }\n constructor(parent, filter) {\n super(parent);\n this.filter = filter;\n }\n static make(parent, model) {\n const {\n config,\n mark,\n markDef\n } = model;\n const invalid = getMarkPropOrConfig('invalid', markDef, config);\n if (invalid !== 'filter') {\n return null;\n }\n const filter = model.reduceFieldDef((aggregator, fieldDef, channel) => {\n const scaleComponent = isScaleChannel(channel) && model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n // While discrete domain scales can handle invalid values, continuous scales can't.\n // Thus, for non-path marks, we have to filter null for scales with continuous domains.\n // (For path marks, we will use \"defined\" property and skip these values instead.)\n if (hasContinuousDomain(scaleType) && fieldDef.aggregate !== 'count' && !isPathMark(mark)) {\n aggregator[fieldDef.field] = fieldDef; // we know that the fieldDef is a typed field def\n }\n }\n\n return aggregator;\n }, {});\n if (!keys(filter).length) {\n return null;\n }\n return new FilterInvalidNode(parent, filter);\n }\n dependentFields() {\n return new Set(keys(this.filter));\n }\n producedFields() {\n return new Set(); // filter does not produce any new fields\n }\n\n hash() {\n return \"FilterInvalid \".concat(hash(this.filter));\n }\n /**\n * Create the VgTransforms for each of the filtered fields.\n */\n assemble() {\n const filters = keys(this.filter).reduce((vegaFilters, field) => {\n const fieldDef = this.filter[field];\n const ref = vgField(fieldDef, {\n expr: 'datum'\n });\n if (fieldDef !== null) {\n if (fieldDef.type === 'temporal') {\n vegaFilters.push(\"(isDate(\".concat(ref, \") || (isValid(\").concat(ref, \") && isFinite(+\").concat(ref, \")))\"));\n } else if (fieldDef.type === 'quantitative') {\n vegaFilters.push(\"isValid(\".concat(ref, \")\"));\n vegaFilters.push(\"isFinite(+\".concat(ref, \")\"));\n } else ;\n }\n return vegaFilters;\n }, []);\n return filters.length > 0 ? {\n type: 'filter',\n expr: filters.join(' && ')\n } : null;\n }\n}\n\n/**\n * A class for flatten transform nodes\n */\nclass FlattenTransformNode extends DataFlowNode {\n clone() {\n return new FlattenTransformNode(this.parent, duplicate(this.transform));\n }\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const {\n flatten,\n as = []\n } = this.transform;\n this.transform.as = flatten.map((f, i) => {\n var _as$i;\n return (_as$i = as[i]) !== null && _as$i !== void 0 ? _as$i : f;\n });\n }\n dependentFields() {\n return new Set(this.transform.flatten);\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return \"FlattenTransform \".concat(hash(this.transform));\n }\n assemble() {\n const {\n flatten: fields,\n as\n } = this.transform;\n const result = {\n type: 'flatten',\n fields,\n as\n };\n return result;\n }\n}\n\n/**\n * A class for flatten transform nodes\n */\nclass FoldTransformNode extends DataFlowNode {\n clone() {\n return new FoldTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n var _this$transform$as2, _specifiedAs$3, _specifiedAs$4;\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const specifiedAs = (_this$transform$as2 = this.transform.as) !== null && _this$transform$as2 !== void 0 ? _this$transform$as2 : [undefined, undefined];\n this.transform.as = [(_specifiedAs$3 = specifiedAs[0]) !== null && _specifiedAs$3 !== void 0 ? _specifiedAs$3 : 'key', (_specifiedAs$4 = specifiedAs[1]) !== null && _specifiedAs$4 !== void 0 ? _specifiedAs$4 : 'value'];\n }\n dependentFields() {\n return new Set(this.transform.fold);\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return \"FoldTransform \".concat(hash(this.transform));\n }\n assemble() {\n const {\n fold,\n as\n } = this.transform;\n const result = {\n type: 'fold',\n fields: fold,\n as\n };\n return result;\n }\n}\nclass GeoJSONNode extends DataFlowNode {\n clone() {\n return new GeoJSONNode(null, duplicate(this.fields), this.geojson, this.signal);\n }\n static parseAll(parent, model) {\n if (model.component.projection && !model.component.projection.isFit) {\n return parent;\n }\n let geoJsonCounter = 0;\n for (const coordinates of [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]) {\n const pair = coordinates.map(channel => {\n const def = getFieldOrDatumDef(model.encoding[channel]);\n return isFieldDef(def) ? def.field : isDatumDef(def) ? {\n expr: \"\".concat(def.datum)\n } : isValueDef(def) ? {\n expr: \"\".concat(def['value'])\n } : undefined;\n });\n if (pair[0] || pair[1]) {\n parent = new GeoJSONNode(parent, pair, null, model.getName(\"geojson_\".concat(geoJsonCounter++)));\n }\n }\n if (model.channelHasField(SHAPE)) {\n const fieldDef = model.typedFieldDef(SHAPE);\n if (fieldDef.type === GEOJSON) {\n parent = new GeoJSONNode(parent, null, fieldDef.field, model.getName(\"geojson_\".concat(geoJsonCounter++)));\n }\n }\n return parent;\n }\n constructor(parent, fields, geojson, signal) {\n super(parent);\n this.fields = fields;\n this.geojson = geojson;\n this.signal = signal;\n }\n dependentFields() {\n var _this$fields;\n const fields = ((_this$fields = this.fields) !== null && _this$fields !== void 0 ? _this$fields : []).filter(isString);\n return new Set([...(this.geojson ? [this.geojson] : []), ...fields]);\n }\n producedFields() {\n return new Set();\n }\n hash() {\n return \"GeoJSON \".concat(this.geojson, \" \").concat(this.signal, \" \").concat(hash(this.fields));\n }\n assemble() {\n return [...(this.geojson ? [{\n type: 'filter',\n expr: \"isValid(datum[\\\"\".concat(this.geojson, \"\\\"])\")\n }] : []), {\n type: 'geojson',\n ...(this.fields ? {\n fields: this.fields\n } : {}),\n ...(this.geojson ? {\n geojson: this.geojson\n } : {}),\n signal: this.signal\n }];\n }\n}\nclass GeoPointNode extends DataFlowNode {\n clone() {\n return new GeoPointNode(null, this.projection, duplicate(this.fields), duplicate(this.as));\n }\n constructor(parent, projection, fields, as) {\n super(parent);\n this.projection = projection;\n this.fields = fields;\n this.as = as;\n }\n static parseAll(parent, model) {\n if (!model.projectionName()) {\n return parent;\n }\n for (const coordinates of [[LONGITUDE, LATITUDE], [LONGITUDE2, LATITUDE2]]) {\n const pair = coordinates.map(channel => {\n const def = getFieldOrDatumDef(model.encoding[channel]);\n return isFieldDef(def) ? def.field : isDatumDef(def) ? {\n expr: \"\".concat(def.datum)\n } : isValueDef(def) ? {\n expr: \"\".concat(def['value'])\n } : undefined;\n });\n const suffix = coordinates[0] === LONGITUDE2 ? '2' : '';\n if (pair[0] || pair[1]) {\n parent = new GeoPointNode(parent, model.projectionName(), pair, [model.getName(\"x\".concat(suffix)), model.getName(\"y\".concat(suffix))]);\n }\n }\n return parent;\n }\n dependentFields() {\n return new Set(this.fields.filter(isString));\n }\n producedFields() {\n return new Set(this.as);\n }\n hash() {\n return \"Geopoint \".concat(this.projection, \" \").concat(hash(this.fields), \" \").concat(hash(this.as));\n }\n assemble() {\n return {\n type: 'geopoint',\n projection: this.projection,\n fields: this.fields,\n as: this.as\n };\n }\n}\nclass ImputeNode extends DataFlowNode {\n clone() {\n return new ImputeNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n dependentFields() {\n var _this$transform$group3;\n return new Set([this.transform.impute, this.transform.key, ...((_this$transform$group3 = this.transform.groupby) !== null && _this$transform$group3 !== void 0 ? _this$transform$group3 : [])]);\n }\n producedFields() {\n return new Set([this.transform.impute]);\n }\n processSequence(keyvals) {\n const {\n start = 0,\n stop,\n step\n } = keyvals;\n const result = [start, stop, ...(step ? [step] : [])].join(',');\n return {\n signal: \"sequence(\".concat(result, \")\")\n };\n }\n static makeFromTransform(parent, imputeTransform) {\n return new ImputeNode(parent, imputeTransform);\n }\n static makeFromEncoding(parent, model) {\n const encoding = model.encoding;\n const xDef = encoding.x;\n const yDef = encoding.y;\n if (isFieldDef(xDef) && isFieldDef(yDef)) {\n const imputedChannel = xDef.impute ? xDef : yDef.impute ? yDef : undefined;\n if (imputedChannel === undefined) {\n return undefined;\n }\n const keyChannel = xDef.impute ? yDef : yDef.impute ? xDef : undefined;\n const {\n method,\n value,\n frame,\n keyvals\n } = imputedChannel.impute;\n const groupbyFields = pathGroupingFields(model.mark, encoding);\n return new ImputeNode(parent, {\n impute: imputedChannel.field,\n key: keyChannel.field,\n ...(method ? {\n method\n } : {}),\n ...(value !== undefined ? {\n value\n } : {}),\n ...(frame ? {\n frame\n } : {}),\n ...(keyvals !== undefined ? {\n keyvals\n } : {}),\n ...(groupbyFields.length ? {\n groupby: groupbyFields\n } : {})\n });\n }\n return null;\n }\n hash() {\n return \"Impute \".concat(hash(this.transform));\n }\n assemble() {\n const {\n impute,\n key,\n keyvals,\n method,\n groupby,\n value,\n frame = [null, null]\n } = this.transform;\n const imputeTransform = {\n type: 'impute',\n field: impute,\n key,\n ...(keyvals ? {\n keyvals: isImputeSequence(keyvals) ? this.processSequence(keyvals) : keyvals\n } : {}),\n method: 'value',\n ...(groupby ? {\n groupby\n } : {}),\n value: !method || method === 'value' ? value : null\n };\n if (method && method !== 'value') {\n const deriveNewField = {\n type: 'window',\n as: [\"imputed_\".concat(impute, \"_value\")],\n ops: [method],\n fields: [impute],\n frame,\n ignorePeers: false,\n ...(groupby ? {\n groupby\n } : {})\n };\n const replaceOriginal = {\n type: 'formula',\n expr: \"datum.\".concat(impute, \" === null ? datum.imputed_\").concat(impute, \"_value : datum.\").concat(impute),\n as: impute\n };\n return [imputeTransform, deriveNewField, replaceOriginal];\n } else {\n return [imputeTransform];\n }\n }\n}\n\n/**\n * A class for loess transform nodes\n */\nclass LoessTransformNode extends DataFlowNode {\n clone() {\n return new LoessTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n var _this$transform$as3, _specifiedAs$5, _specifiedAs$6;\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const specifiedAs = (_this$transform$as3 = this.transform.as) !== null && _this$transform$as3 !== void 0 ? _this$transform$as3 : [undefined, undefined];\n this.transform.as = [(_specifiedAs$5 = specifiedAs[0]) !== null && _specifiedAs$5 !== void 0 ? _specifiedAs$5 : transform.on, (_specifiedAs$6 = specifiedAs[1]) !== null && _specifiedAs$6 !== void 0 ? _specifiedAs$6 : transform.loess];\n }\n dependentFields() {\n var _this$transform$group4;\n return new Set([this.transform.loess, this.transform.on, ...((_this$transform$group4 = this.transform.groupby) !== null && _this$transform$group4 !== void 0 ? _this$transform$group4 : [])]);\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return \"LoessTransform \".concat(hash(this.transform));\n }\n assemble() {\n const {\n loess,\n on,\n ...rest\n } = this.transform;\n const result = {\n type: 'loess',\n x: on,\n y: loess,\n ...rest\n };\n return result;\n }\n}\nclass LookupNode extends DataFlowNode {\n clone() {\n return new LookupNode(null, duplicate(this.transform), this.secondary);\n }\n constructor(parent, transform, secondary) {\n super(parent);\n this.transform = transform;\n this.secondary = secondary;\n }\n static make(parent, model, transform, counter) {\n const sources = model.component.data.sources;\n const {\n from\n } = transform;\n let fromOutputNode = null;\n if (isLookupData(from)) {\n let fromSource = findSource(from.data, sources);\n if (!fromSource) {\n fromSource = new SourceNode(from.data);\n sources.push(fromSource);\n }\n const fromOutputName = model.getName(\"lookup_\".concat(counter));\n fromOutputNode = new OutputNode(fromSource, fromOutputName, DataSourceType.Lookup, model.component.data.outputNodeRefCounts);\n model.component.data.outputNodes[fromOutputName] = fromOutputNode;\n } else if (isLookupSelection(from)) {\n const selName = from.param;\n transform = {\n as: selName,\n ...transform\n };\n let selCmpt;\n try {\n selCmpt = model.getSelectionComponent(varName(selName), selName);\n } catch (e) {\n throw new Error(cannotLookupVariableParameter(selName));\n }\n fromOutputNode = selCmpt.materialized;\n if (!fromOutputNode) {\n throw new Error(noSameUnitLookup(selName));\n }\n }\n return new LookupNode(parent, transform, fromOutputNode.getSource());\n }\n dependentFields() {\n return new Set([this.transform.lookup]);\n }\n producedFields() {\n return new Set(this.transform.as ? array$5(this.transform.as) : this.transform.from.fields);\n }\n hash() {\n return \"Lookup \".concat(hash({\n transform: this.transform,\n secondary: this.secondary\n }));\n }\n assemble() {\n let foreign;\n if (this.transform.from.fields) {\n // lookup a few fields and add create a flat output\n foreign = {\n values: this.transform.from.fields,\n ...(this.transform.as ? {\n as: array$5(this.transform.as)\n } : {})\n };\n } else {\n // lookup full record and nest it\n let asName = this.transform.as;\n if (!isString(asName)) {\n warn(NO_FIELDS_NEEDS_AS);\n asName = '_lookup';\n }\n foreign = {\n as: [asName]\n };\n }\n return {\n type: 'lookup',\n from: this.secondary,\n key: this.transform.from.key,\n fields: [this.transform.lookup],\n ...foreign,\n ...(this.transform.default ? {\n default: this.transform.default\n } : {})\n };\n }\n}\n\n/**\n * A class for quantile transform nodes\n */\nclass QuantileTransformNode extends DataFlowNode {\n clone() {\n return new QuantileTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n var _this$transform$as4, _specifiedAs$7, _specifiedAs$8;\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const specifiedAs = (_this$transform$as4 = this.transform.as) !== null && _this$transform$as4 !== void 0 ? _this$transform$as4 : [undefined, undefined];\n this.transform.as = [(_specifiedAs$7 = specifiedAs[0]) !== null && _specifiedAs$7 !== void 0 ? _specifiedAs$7 : 'prob', (_specifiedAs$8 = specifiedAs[1]) !== null && _specifiedAs$8 !== void 0 ? _specifiedAs$8 : 'value'];\n }\n dependentFields() {\n var _this$transform$group5;\n return new Set([this.transform.quantile, ...((_this$transform$group5 = this.transform.groupby) !== null && _this$transform$group5 !== void 0 ? _this$transform$group5 : [])]);\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return \"QuantileTransform \".concat(hash(this.transform));\n }\n assemble() {\n const {\n quantile,\n ...rest\n } = this.transform;\n const result = {\n type: 'quantile',\n field: quantile,\n ...rest\n };\n return result;\n }\n}\n\n/**\n * A class for regression transform nodes\n */\nclass RegressionTransformNode extends DataFlowNode {\n clone() {\n return new RegressionTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n var _this$transform$as5, _specifiedAs$9, _specifiedAs$10;\n super(parent);\n this.transform = transform;\n this.transform = duplicate(transform); // duplicate to prevent side effects\n const specifiedAs = (_this$transform$as5 = this.transform.as) !== null && _this$transform$as5 !== void 0 ? _this$transform$as5 : [undefined, undefined];\n this.transform.as = [(_specifiedAs$9 = specifiedAs[0]) !== null && _specifiedAs$9 !== void 0 ? _specifiedAs$9 : transform.on, (_specifiedAs$10 = specifiedAs[1]) !== null && _specifiedAs$10 !== void 0 ? _specifiedAs$10 : transform.regression];\n }\n dependentFields() {\n var _this$transform$group6;\n return new Set([this.transform.regression, this.transform.on, ...((_this$transform$group6 = this.transform.groupby) !== null && _this$transform$group6 !== void 0 ? _this$transform$group6 : [])]);\n }\n producedFields() {\n return new Set(this.transform.as);\n }\n hash() {\n return \"RegressionTransform \".concat(hash(this.transform));\n }\n assemble() {\n const {\n regression,\n on,\n ...rest\n } = this.transform;\n const result = {\n type: 'regression',\n x: on,\n y: regression,\n ...rest\n };\n return result;\n }\n}\n\n/**\n * A class for pivot transform nodes.\n */\nclass PivotTransformNode extends DataFlowNode {\n clone() {\n return new PivotTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n addDimensions(fields) {\n var _this$transform$group7;\n this.transform.groupby = unique(((_this$transform$group7 = this.transform.groupby) !== null && _this$transform$group7 !== void 0 ? _this$transform$group7 : []).concat(fields), d => d);\n }\n producedFields() {\n return undefined; // return undefined so that potentially everything can depend on the pivot\n }\n\n dependentFields() {\n var _this$transform$group8;\n return new Set([this.transform.pivot, this.transform.value, ...((_this$transform$group8 = this.transform.groupby) !== null && _this$transform$group8 !== void 0 ? _this$transform$group8 : [])]);\n }\n hash() {\n return \"PivotTransform \".concat(hash(this.transform));\n }\n assemble() {\n const {\n pivot,\n value,\n groupby,\n limit,\n op\n } = this.transform;\n return {\n type: 'pivot',\n field: pivot,\n value,\n ...(limit !== undefined ? {\n limit\n } : {}),\n ...(op !== undefined ? {\n op\n } : {}),\n ...(groupby !== undefined ? {\n groupby\n } : {})\n };\n }\n}\n\n/**\n * A class for the sample transform nodes\n */\nclass SampleTransformNode extends DataFlowNode {\n clone() {\n return new SampleTransformNode(null, duplicate(this.transform));\n }\n constructor(parent, transform) {\n super(parent);\n this.transform = transform;\n }\n dependentFields() {\n return new Set();\n }\n producedFields() {\n return new Set();\n }\n hash() {\n return \"SampleTransform \".concat(hash(this.transform));\n }\n assemble() {\n return {\n type: 'sample',\n size: this.transform.sample\n };\n }\n}\nfunction makeWalkTree(data) {\n // to name datasources\n let datasetIndex = 0;\n /**\n * Recursively walk down the tree.\n */\n function walkTree(node, dataSource) {\n if (node instanceof SourceNode) {\n // If the source is a named data source or a data source with values, we need\n // to put it in a different data source. Otherwise, Vega may override the data.\n if (!node.isGenerator && !isUrlData(node.data)) {\n data.push(dataSource);\n const newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n if (node instanceof ParseNode) {\n if (node.parent instanceof SourceNode && !dataSource.source) {\n var _dataSource$format;\n // If node's parent is a root source and the data source does not refer to another data source, use normal format parse\n dataSource.format = {\n ...((_dataSource$format = dataSource.format) !== null && _dataSource$format !== void 0 ? _dataSource$format : {}),\n parse: node.assembleFormatParse()\n };\n // add calculates for all nested fields\n dataSource.transform.push(...node.assembleTransforms(true));\n } else {\n // Otherwise use Vega expression to parse\n dataSource.transform.push(...node.assembleTransforms());\n }\n }\n if (node instanceof FacetNode) {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n node.data = dataSource.name;\n } else {\n node.data = dataSource.source;\n }\n data.push(...node.assemble());\n // break here because the rest of the tree has to be taken care of by the facet.\n return;\n }\n if (node instanceof GraticuleNode || node instanceof SequenceNode || node instanceof FilterInvalidNode || node instanceof FilterNode || node instanceof CalculateNode || node instanceof GeoPointNode || node instanceof AggregateNode || node instanceof LookupNode || node instanceof WindowTransformNode || node instanceof JoinAggregateTransformNode || node instanceof FoldTransformNode || node instanceof FlattenTransformNode || node instanceof DensityTransformNode || node instanceof LoessTransformNode || node instanceof QuantileTransformNode || node instanceof RegressionTransformNode || node instanceof IdentifierNode || node instanceof SampleTransformNode || node instanceof PivotTransformNode || node instanceof ExtentTransformNode) {\n dataSource.transform.push(node.assemble());\n }\n if (node instanceof BinNode || node instanceof TimeUnitNode || node instanceof ImputeNode || node instanceof StackNode || node instanceof GeoJSONNode) {\n dataSource.transform.push(...node.assemble());\n }\n if (node instanceof OutputNode) {\n if (dataSource.source && dataSource.transform.length === 0) {\n node.setSource(dataSource.source);\n } else if (node.parent instanceof OutputNode) {\n // Note that an output node may be required but we still do not assemble a\n // separate data source for it.\n node.setSource(dataSource.name);\n } else {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n // Here we set the name of the datasource we generated. From now on\n // other assemblers can use it.\n node.setSource(dataSource.name);\n // if this node has more than one child, we will add a datasource automatically\n if (node.numChildren() === 1) {\n data.push(dataSource);\n const newData = {\n name: null,\n source: dataSource.name,\n transform: []\n };\n dataSource = newData;\n }\n }\n }\n switch (node.numChildren()) {\n case 0:\n // done\n if (node instanceof OutputNode && (!dataSource.source || dataSource.transform.length > 0)) {\n // do not push empty datasources that are simply references\n data.push(dataSource);\n }\n break;\n case 1:\n walkTree(node.children[0], dataSource);\n break;\n default:\n {\n if (!dataSource.name) {\n dataSource.name = \"data_\".concat(datasetIndex++);\n }\n let source = dataSource.name;\n if (!dataSource.source || dataSource.transform.length > 0) {\n data.push(dataSource);\n } else {\n source = dataSource.source;\n }\n for (const child of node.children) {\n const newData = {\n name: null,\n source,\n transform: []\n };\n walkTree(child, newData);\n }\n break;\n }\n }\n }\n return walkTree;\n}\n/**\n * Assemble data sources that are derived from faceted data.\n */\nfunction assembleFacetData(root) {\n const data = [];\n const walkTree = makeWalkTree(data);\n for (const child of root.children) {\n walkTree(child, {\n source: root.name,\n name: null,\n transform: []\n });\n }\n return data;\n}\n/**\n * Create Vega data array from a given compiled model and append all of them to the given array\n *\n * @param model\n * @param data array\n * @return modified data array\n */\nfunction assembleRootData(dataComponent, datasets) {\n const data = [];\n // dataComponent.sources.forEach(debug);\n // draw(dataComponent.sources);\n const walkTree = makeWalkTree(data);\n let sourceIndex = 0;\n for (const root of dataComponent.sources) {\n // assign a name if the source does not have a name yet\n if (!root.hasName()) {\n root.dataName = \"source_\".concat(sourceIndex++);\n }\n const newData = root.assemble();\n walkTree(root, newData);\n }\n // remove empty transform arrays for cleaner output\n for (const d of data) {\n if (d.transform.length === 0) {\n delete d.transform;\n }\n }\n // move sources without transforms (the ones that are potentially used in lookups) to the beginning\n let whereTo = 0;\n for (const [i, d] of data.entries()) {\n var _d$transform;\n if (((_d$transform = d.transform) !== null && _d$transform !== void 0 ? _d$transform : []).length === 0 && !d.source) {\n data.splice(whereTo++, 0, data.splice(i, 1)[0]);\n }\n }\n // now fix the from references in lookup transforms\n for (const d of data) {\n for (const t of (_d$transform2 = d.transform) !== null && _d$transform2 !== void 0 ? _d$transform2 : []) {\n var _d$transform2;\n if (t.type === 'lookup') {\n t.from = dataComponent.outputNodes[t.from].getSource();\n }\n }\n }\n // inline values for datasets that are in the datastore\n for (const d of data) {\n if (d.name in datasets) {\n d.values = datasets[d.name];\n }\n }\n return data;\n}\nfunction getHeaderType(orient) {\n if (orient === 'top' || orient === 'left' || isSignalRef(orient)) {\n // we always use header for orient signal since we can't dynamically make header becomes footer\n return 'header';\n }\n return 'footer';\n}\nfunction parseFacetHeaders(model) {\n for (const channel of FACET_CHANNELS) {\n parseFacetHeader(model, channel);\n }\n mergeChildAxis(model, 'x');\n mergeChildAxis(model, 'y');\n}\nfunction parseFacetHeader(model, channel) {\n const {\n facet,\n config,\n child,\n component\n } = model;\n if (model.channelHasField(channel)) {\n var _fieldDef$header;\n const fieldDef = facet[channel];\n const titleConfig = getHeaderProperty('title', null, config, channel);\n let title$1 = title(fieldDef, config, {\n allowDisabling: true,\n includeDefault: titleConfig === undefined || !!titleConfig\n });\n if (child.component.layoutHeaders[channel].title) {\n // TODO: better handle multiline titles\n title$1 = isArray(title$1) ? title$1.join(', ') : title$1;\n // merge title with child to produce \"Title / Subtitle / Sub-subtitle\"\n title$1 += \" / \".concat(child.component.layoutHeaders[channel].title);\n child.component.layoutHeaders[channel].title = null;\n }\n const labelOrient = getHeaderProperty('labelOrient', fieldDef.header, config, channel);\n const labels = fieldDef.header !== null ? getFirstDefined((_fieldDef$header = fieldDef.header) === null || _fieldDef$header === void 0 ? void 0 : _fieldDef$header.labels, config.header.labels, true) : false;\n const headerType = contains(['bottom', 'right'], labelOrient) ? 'footer' : 'header';\n component.layoutHeaders[channel] = {\n title: fieldDef.header !== null ? title$1 : null,\n facetFieldDef: fieldDef,\n [headerType]: channel === 'facet' ? [] : [makeHeaderComponent(model, channel, labels)]\n };\n }\n}\nfunction makeHeaderComponent(model, channel, labels) {\n const sizeType = channel === 'row' ? 'height' : 'width';\n return {\n labels,\n sizeSignal: model.child.component.layoutSize.get(sizeType) ? model.child.getSizeSignalRef(sizeType) : undefined,\n axes: []\n };\n}\nfunction mergeChildAxis(model, channel) {\n const {\n child\n } = model;\n if (child.component.axes[channel]) {\n const {\n layoutHeaders,\n resolve\n } = model.component;\n resolve.axis[channel] = parseGuideResolve(resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // For shared axis, move the axes to facet's header or footer\n const headerChannel = channel === 'x' ? 'column' : 'row';\n const layoutHeader = layoutHeaders[headerChannel];\n for (const axisComponent of child.component.axes[channel]) {\n var _layoutHeader$headerT;\n const headerType = getHeaderType(axisComponent.get('orient'));\n (_layoutHeader$headerT = layoutHeader[headerType]) !== null && _layoutHeader$headerT !== void 0 ? _layoutHeader$headerT : layoutHeader[headerType] = [makeHeaderComponent(model, headerChannel, false)];\n // FIXME: assemble shouldn't be called here, but we do it this way so we only extract the main part of the axes\n const mainAxis = assembleAxis(axisComponent, 'main', model.config, {\n header: true\n });\n if (mainAxis) {\n // LayoutHeader no longer keep track of property precedence, thus let's combine.\n layoutHeader[headerType][0].axes.push(mainAxis);\n }\n axisComponent.mainExtracted = true;\n }\n }\n }\n}\nfunction parseLayerLayoutSize(model) {\n parseChildrenLayoutSize(model);\n parseNonUnitLayoutSizeForChannel(model, 'width');\n parseNonUnitLayoutSizeForChannel(model, 'height');\n}\nfunction parseConcatLayoutSize(model) {\n parseChildrenLayoutSize(model);\n // for columns === 1 (vconcat), we can completely merge width. Otherwise, we can treat merged width as childWidth.\n const widthType = model.layout.columns === 1 ? 'width' : 'childWidth';\n // for columns === undefined (hconcat), we can completely merge height. Otherwise, we can treat merged height as childHeight.\n const heightType = model.layout.columns === undefined ? 'height' : 'childHeight';\n parseNonUnitLayoutSizeForChannel(model, widthType);\n parseNonUnitLayoutSizeForChannel(model, heightType);\n}\nfunction parseChildrenLayoutSize(model) {\n for (const child of model.children) {\n child.parseLayoutSize();\n }\n}\n/**\n * Merge child layout size (width or height).\n */\nfunction parseNonUnitLayoutSizeForChannel(model, layoutSizeType) {\n /*\n * For concat, the parent width or height might not be the same as the children's shared height.\n * For example, hconcat's subviews may share width, but the shared width is not the hconcat view's width.\n *\n * layoutSizeType represents the output of the view (could be childWidth/childHeight/width/height)\n * while the sizeType represents the properties of the child.\n */\n const sizeType = getSizeTypeFromLayoutSizeType(layoutSizeType);\n const channel = getPositionScaleChannel(sizeType);\n const resolve = model.component.resolve;\n const layoutSizeCmpt = model.component.layoutSize;\n let mergedSize;\n // Try to merge layout size\n for (const child of model.children) {\n var _resolve$scale$channe;\n const childSize = child.component.layoutSize.getWithExplicit(sizeType);\n const scaleResolve = (_resolve$scale$channe = resolve.scale[channel]) !== null && _resolve$scale$channe !== void 0 ? _resolve$scale$channe : defaultScaleResolve(channel, model);\n if (scaleResolve === 'independent' && childSize.value === 'step') {\n // Do not merge independent scales with range-step as their size depends\n // on the scale domains, which can be different between scales.\n mergedSize = undefined;\n break;\n }\n if (mergedSize) {\n if (scaleResolve === 'independent' && mergedSize.value !== childSize.value) {\n // For independent scale, only merge if all the sizes are the same.\n // If the values are different, abandon the merge!\n mergedSize = undefined;\n break;\n }\n mergedSize = mergeValuesWithExplicit(mergedSize, childSize, sizeType, '');\n } else {\n mergedSize = childSize;\n }\n }\n if (mergedSize) {\n // If merged, rename size and set size of all children.\n for (const child of model.children) {\n model.renameSignal(child.getName(sizeType), model.getName(layoutSizeType));\n child.component.layoutSize.set(sizeType, 'merged', false);\n }\n layoutSizeCmpt.setWithExplicit(layoutSizeType, mergedSize);\n } else {\n layoutSizeCmpt.setWithExplicit(layoutSizeType, {\n explicit: false,\n value: undefined\n });\n }\n}\nfunction parseUnitLayoutSize(model) {\n const {\n size,\n component\n } = model;\n for (const channel of POSITION_SCALE_CHANNELS) {\n const sizeType = getSizeChannel(channel);\n if (size[sizeType]) {\n const specifiedSize = size[sizeType];\n component.layoutSize.set(sizeType, isStep(specifiedSize) ? 'step' : specifiedSize, true);\n } else {\n const defaultSize = defaultUnitSize(model, sizeType);\n component.layoutSize.set(sizeType, defaultSize, false);\n }\n }\n}\nfunction defaultUnitSize(model, sizeType) {\n const channel = sizeType === 'width' ? 'x' : 'y';\n const config = model.config;\n const scaleComponent = model.getScaleComponent(channel);\n if (scaleComponent) {\n const scaleType = scaleComponent.get('type');\n const range = scaleComponent.get('range');\n if (hasDiscreteDomain(scaleType)) {\n const size = getViewConfigDiscreteSize(config.view, sizeType);\n if (isVgRangeStep(range) || isStep(size)) {\n // For discrete domain with range.step, use dynamic width/height\n return 'step';\n } else {\n return size;\n }\n } else {\n return getViewConfigContinuousSize(config.view, sizeType);\n }\n } else if (model.hasProjection || model.mark === 'arc') {\n // arc should use continuous size by default otherwise the pie is extremely small\n return getViewConfigContinuousSize(config.view, sizeType);\n } else {\n const size = getViewConfigDiscreteSize(config.view, sizeType);\n return isStep(size) ? size.step : size;\n }\n}\nfunction facetSortFieldName(fieldDef, sort, opt) {\n return vgField(sort, {\n suffix: \"by_\".concat(vgField(fieldDef)),\n ...(opt !== null && opt !== void 0 ? opt : {})\n });\n}\nclass FacetModel extends ModelWithField {\n constructor(spec, parent, parentGivenName, config) {\n super(spec, 'facet', parent, parentGivenName, config, spec.resolve);\n this.child = buildModel(spec.spec, this, this.getName('child'), undefined, config);\n this.children = [this.child];\n this.facet = this.initFacet(spec.facet);\n }\n initFacet(facet) {\n // clone to prevent side effect to the original spec\n if (!isFacetMapping(facet)) {\n return {\n facet: this.initFacetFieldDef(facet, 'facet')\n };\n }\n const channels = keys(facet);\n const normalizedFacet = {};\n for (const channel of channels) {\n if (![ROW, COLUMN].includes(channel)) {\n // Drop unsupported channel\n warn(incompatibleChannel(channel, 'facet'));\n break;\n }\n const fieldDef = facet[channel];\n if (fieldDef.field === undefined) {\n warn(emptyFieldDef(fieldDef, channel));\n break;\n }\n normalizedFacet[channel] = this.initFacetFieldDef(fieldDef, channel);\n }\n return normalizedFacet;\n }\n initFacetFieldDef(fieldDef, channel) {\n // Cast because we call initFieldDef, which assumes general FieldDef.\n // However, FacetFieldDef is a bit more constrained than the general FieldDef\n const facetFieldDef = initFieldDef(fieldDef, channel);\n if (facetFieldDef.header) {\n facetFieldDef.header = replaceExprRef(facetFieldDef.header);\n } else if (facetFieldDef.header === null) {\n facetFieldDef.header = null;\n }\n return facetFieldDef;\n }\n channelHasField(channel) {\n return !!this.facet[channel];\n }\n fieldDef(channel) {\n return this.facet[channel];\n }\n parseData() {\n this.component.data = parseData(this);\n this.child.parseData();\n }\n parseLayoutSize() {\n parseChildrenLayoutSize(this);\n }\n parseSelections() {\n // As a facet has a single child, the selection components are the same.\n // The child maintains its selections to assemble signals, which remain\n // within its unit.\n this.child.parseSelections();\n this.component.selection = this.child.component.selection;\n }\n parseMarkGroup() {\n this.child.parseMarkGroup();\n }\n parseAxesAndHeaders() {\n this.child.parseAxesAndHeaders();\n parseFacetHeaders(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.child.assembleSelectionTopLevelSignals(signals);\n }\n assembleSignals() {\n this.child.assembleSignals();\n return [];\n }\n assembleSelectionData(data) {\n return this.child.assembleSelectionData(data);\n }\n getHeaderLayoutMixins() {\n const layoutMixins = {};\n for (const channel of FACET_CHANNELS) {\n for (const headerType of HEADER_TYPES) {\n const layoutHeaderComponent = this.component.layoutHeaders[channel];\n const headerComponent = layoutHeaderComponent[headerType];\n const {\n facetFieldDef\n } = layoutHeaderComponent;\n if (facetFieldDef) {\n const titleOrient = getHeaderProperty('titleOrient', facetFieldDef.header, this.config, channel);\n if (['right', 'bottom'].includes(titleOrient)) {\n var _layoutMixins$titleAn;\n const headerChannel = getHeaderChannel(channel, titleOrient);\n (_layoutMixins$titleAn = layoutMixins.titleAnchor) !== null && _layoutMixins$titleAn !== void 0 ? _layoutMixins$titleAn : layoutMixins.titleAnchor = {};\n layoutMixins.titleAnchor[headerChannel] = 'end';\n }\n }\n if (headerComponent !== null && headerComponent !== void 0 && headerComponent[0]) {\n // set header/footerBand\n const sizeType = channel === 'row' ? 'height' : 'width';\n const bandType = headerType === 'header' ? 'headerBand' : 'footerBand';\n if (channel !== 'facet' && !this.child.component.layoutSize.get(sizeType)) {\n var _layoutMixins$bandTyp;\n // If facet child does not have size signal, then apply headerBand\n (_layoutMixins$bandTyp = layoutMixins[bandType]) !== null && _layoutMixins$bandTyp !== void 0 ? _layoutMixins$bandTyp : layoutMixins[bandType] = {};\n layoutMixins[bandType][channel] = 0.5;\n }\n if (layoutHeaderComponent.title) {\n var _layoutMixins$offset;\n (_layoutMixins$offset = layoutMixins.offset) !== null && _layoutMixins$offset !== void 0 ? _layoutMixins$offset : layoutMixins.offset = {};\n layoutMixins.offset[channel === 'row' ? 'rowTitle' : 'columnTitle'] = 10;\n }\n }\n }\n }\n return layoutMixins;\n }\n assembleDefaultLayout() {\n const {\n column,\n row\n } = this.facet;\n const columns = column ? this.columnDistinctSignal() : row ? 1 : undefined;\n let align = 'all';\n // Do not align the cells if the scale corresponding to the direction is indepent.\n // We always align when we facet into both row and column.\n if (!row && this.component.resolve.scale.x === 'independent') {\n align = 'none';\n } else if (!column && this.component.resolve.scale.y === 'independent') {\n align = 'none';\n }\n return {\n ...this.getHeaderLayoutMixins(),\n ...(columns ? {\n columns\n } : {}),\n bounds: 'full',\n align\n };\n }\n assembleLayoutSignals() {\n // FIXME(https://github.com/vega/vega-lite/issues/1193): this can be incorrect if we have independent scales.\n return this.child.assembleLayoutSignals();\n }\n columnDistinctSignal() {\n if (this.parent && this.parent instanceof FacetModel) {\n // For nested facet, we will add columns to group mark instead\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return undefined;\n } else {\n // In facetNode.assemble(), the name is always this.getName('column') + '_layout'.\n const facetLayoutDataName = this.getName('column_domain');\n return {\n signal: \"length(data('\".concat(facetLayoutDataName, \"'))\")\n };\n }\n }\n assembleGroupStyle() {\n return undefined;\n }\n assembleGroup(signals) {\n if (this.parent && this.parent instanceof FacetModel) {\n // Provide number of columns for layout.\n // See discussion in https://github.com/vega/vega/issues/952\n // and https://github.com/vega/vega-view/releases/tag/v1.2.6\n return {\n ...(this.channelHasField('column') ? {\n encode: {\n update: {\n // TODO(https://github.com/vega/vega-lite/issues/2759):\n // Correct the signal for facet of concat of facet_column\n columns: {\n field: vgField(this.facet.column, {\n prefix: 'distinct'\n })\n }\n }\n }\n } : {}),\n ...super.assembleGroup(signals)\n };\n }\n return super.assembleGroup(signals);\n }\n /**\n * Aggregate cardinality for calculating size\n */\n getCardinalityAggregateForChild() {\n const fields = [];\n const ops = [];\n const as = [];\n if (this.child instanceof FacetModel) {\n if (this.child.channelHasField('column')) {\n const field = vgField(this.child.facet.column);\n fields.push(field);\n ops.push('distinct');\n as.push(\"distinct_\".concat(field));\n }\n } else {\n for (const channel of POSITION_SCALE_CHANNELS) {\n const childScaleComponent = this.child.component.scales[channel];\n if (childScaleComponent && !childScaleComponent.merged) {\n const type = childScaleComponent.get('type');\n const range = childScaleComponent.get('range');\n if (hasDiscreteDomain(type) && isVgRangeStep(range)) {\n const domain = assembleDomain(this.child, channel);\n const field = getFieldFromDomain(domain);\n if (field) {\n fields.push(field);\n ops.push('distinct');\n as.push(\"distinct_\".concat(field));\n } else {\n warn(unknownField(channel));\n }\n }\n }\n }\n }\n return {\n fields,\n ops,\n as\n };\n }\n assembleFacet() {\n const {\n name,\n data\n } = this.component.data.facetRoot;\n const {\n row,\n column\n } = this.facet;\n const {\n fields,\n ops,\n as\n } = this.getCardinalityAggregateForChild();\n const groupby = [];\n for (const channel of FACET_CHANNELS) {\n const fieldDef = this.facet[channel];\n if (fieldDef) {\n groupby.push(vgField(fieldDef));\n const {\n bin,\n sort\n } = fieldDef;\n if (isBinning(bin)) {\n groupby.push(vgField(fieldDef, {\n binSuffix: 'end'\n }));\n }\n if (isSortField(sort)) {\n const {\n field,\n op = DEFAULT_SORT_OP\n } = sort;\n const outputName = facetSortFieldName(fieldDef, sort);\n if (row && column) {\n // For crossed facet, use pre-calculate field as it requires a different groupby\n // For each calculated field, apply max and assign them to the same name as\n // all values of the same group should be the same anyway.\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n } else {\n fields.push(field);\n ops.push(op);\n as.push(outputName);\n }\n } else if (isArray(sort)) {\n const outputName = sortArrayIndexField(fieldDef, channel);\n fields.push(outputName);\n ops.push('max');\n as.push(outputName);\n }\n }\n }\n const cross = !!row && !!column;\n return {\n name,\n data,\n groupby,\n ...(cross || fields.length > 0 ? {\n aggregate: {\n ...(cross ? {\n cross\n } : {}),\n ...(fields.length ? {\n fields,\n ops,\n as\n } : {})\n }\n } : {})\n };\n }\n facetSortFields(channel) {\n const {\n facet\n } = this;\n const fieldDef = facet[channel];\n if (fieldDef) {\n if (isSortField(fieldDef.sort)) {\n return [facetSortFieldName(fieldDef, fieldDef.sort, {\n expr: 'datum'\n })];\n } else if (isArray(fieldDef.sort)) {\n return [sortArrayIndexField(fieldDef, channel, {\n expr: 'datum'\n })];\n }\n return [vgField(fieldDef, {\n expr: 'datum'\n })];\n }\n return [];\n }\n facetSortOrder(channel) {\n const {\n facet\n } = this;\n const fieldDef = facet[channel];\n if (fieldDef) {\n const {\n sort\n } = fieldDef;\n const order = (isSortField(sort) ? sort.order : !isArray(sort) && sort) || 'ascending';\n return [order];\n }\n return [];\n }\n assembleLabelTitle() {\n const {\n facet,\n config\n } = this;\n if (facet.facet) {\n // Facet always uses title to display labels\n return assembleLabelTitle(facet.facet, 'facet', config);\n }\n const ORTHOGONAL_ORIENT = {\n row: ['top', 'bottom'],\n column: ['left', 'right']\n };\n for (const channel of HEADER_CHANNELS) {\n if (facet[channel]) {\n var _facet$channel;\n const labelOrient = getHeaderProperty('labelOrient', (_facet$channel = facet[channel]) === null || _facet$channel === void 0 ? void 0 : _facet$channel.header, config, channel);\n if (ORTHOGONAL_ORIENT[channel].includes(labelOrient)) {\n // Row/Column with orthogonal labelOrient must use title to display labels\n return assembleLabelTitle(facet[channel], channel, config);\n }\n }\n }\n return undefined;\n }\n assembleMarks() {\n const {\n child\n } = this;\n // If we facet by two dimensions, we need to add a cross operator to the aggregation\n // so that we create all groups\n const facetRoot = this.component.data.facetRoot;\n const data = assembleFacetData(facetRoot);\n const encodeEntry = child.assembleGroupEncodeEntry(false);\n const title = this.assembleLabelTitle() || child.assembleTitle();\n const style = child.assembleGroupStyle();\n const markGroup = {\n name: this.getName('cell'),\n type: 'group',\n ...(title ? {\n title\n } : {}),\n ...(style ? {\n style\n } : {}),\n from: {\n facet: this.assembleFacet()\n },\n // TODO: move this to after data\n sort: {\n field: FACET_CHANNELS.map(c => this.facetSortFields(c)).flat(),\n order: FACET_CHANNELS.map(c => this.facetSortOrder(c)).flat()\n },\n ...(data.length > 0 ? {\n data\n } : {}),\n ...(encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}),\n ...child.assembleGroup(assembleFacetSignals(this, []))\n };\n return [markGroup];\n }\n getMapping() {\n return this.facet;\n }\n}\nfunction makeJoinAggregateFromFacet(parent, facet) {\n const {\n row,\n column\n } = facet;\n if (row && column) {\n let newParent = null;\n // only need to make one for crossed facet\n for (const fieldDef of [row, column]) {\n if (isSortField(fieldDef.sort)) {\n const {\n field,\n op = DEFAULT_SORT_OP\n } = fieldDef.sort;\n parent = newParent = new JoinAggregateTransformNode(parent, {\n joinaggregate: [{\n op,\n field,\n as: facetSortFieldName(fieldDef, fieldDef.sort, {\n forAs: true\n })\n }],\n groupby: [vgField(fieldDef)]\n });\n }\n }\n return newParent;\n }\n return null;\n}\nfunction findSource(data, sources) {\n for (const other of sources) {\n var _data$format2, _otherData$format, _data$format3, _otherData$format2;\n const otherData = other.data;\n // if both datasets have a name defined, we cannot merge\n if (data.name && other.hasName() && data.name !== other.dataName) {\n continue;\n }\n const formatMesh = (_data$format2 = data['format']) === null || _data$format2 === void 0 ? void 0 : _data$format2.mesh;\n const otherFeature = (_otherData$format = otherData.format) === null || _otherData$format === void 0 ? void 0 : _otherData$format.feature;\n // feature and mesh are mutually exclusive\n if (formatMesh && otherFeature) {\n continue;\n }\n // we have to extract the same feature or mesh\n const formatFeature = (_data$format3 = data['format']) === null || _data$format3 === void 0 ? void 0 : _data$format3.feature;\n if ((formatFeature || otherFeature) && formatFeature !== otherFeature) {\n continue;\n }\n const otherMesh = (_otherData$format2 = otherData.format) === null || _otherData$format2 === void 0 ? void 0 : _otherData$format2.mesh;\n if ((formatMesh || otherMesh) && formatMesh !== otherMesh) {\n continue;\n }\n if (isInlineData(data) && isInlineData(otherData)) {\n if (deepEqual(data.values, otherData.values)) {\n return other;\n }\n } else if (isUrlData(data) && isUrlData(otherData)) {\n if (data.url === otherData.url) {\n return other;\n }\n } else if (isNamedData(data)) {\n if (data.name === other.dataName) {\n return other;\n }\n }\n }\n return null;\n}\nfunction parseRoot(model, sources) {\n if (model.data || !model.parent) {\n // if the model defines a data source or is the root, create a source node\n if (model.data === null) {\n // data: null means we should ignore the parent's data so we just create a new data source\n const source = new SourceNode({\n values: []\n });\n sources.push(source);\n return source;\n }\n const existingSource = findSource(model.data, sources);\n if (existingSource) {\n if (!isGenerator(model.data)) {\n existingSource.data.format = mergeDeep$1({}, model.data.format, existingSource.data.format);\n }\n // if the new source has a name but the existing one does not, we can set it\n if (!existingSource.hasName() && model.data.name) {\n existingSource.dataName = model.data.name;\n }\n return existingSource;\n } else {\n const source = new SourceNode(model.data);\n sources.push(source);\n return source;\n }\n } else {\n // If we don't have a source defined (overriding parent's data), use the parent's facet root or main.\n return model.parent.component.data.facetRoot ? model.parent.component.data.facetRoot : model.parent.component.data.main;\n }\n}\n/**\n * Parses a transform array into a chain of connected dataflow nodes.\n */\nfunction parseTransformArray(head, model, ancestorParse) {\n let lookupCounter = 0;\n for (const t of model.transforms) {\n let derivedType = undefined;\n let transformNode;\n if (isCalculate(t)) {\n transformNode = head = new CalculateNode(head, t);\n derivedType = 'derived';\n } else if (isFilter(t)) {\n var _ParseNode$makeWithAn;\n const implicit = getImplicitFromFilterTransform(t);\n transformNode = head = (_ParseNode$makeWithAn = ParseNode.makeWithAncestors(head, {}, implicit, ancestorParse)) !== null && _ParseNode$makeWithAn !== void 0 ? _ParseNode$makeWithAn : head;\n head = new FilterNode(head, model, t.filter);\n } else if (isBin(t)) {\n transformNode = head = BinNode.makeFromTransform(head, t, model);\n derivedType = 'number';\n } else if (isTimeUnit(t)) {\n derivedType = 'date';\n const parsedAs = ancestorParse.getWithExplicit(t.field);\n // Create parse node because the input to time unit is always date.\n if (parsedAs.value === undefined) {\n head = new ParseNode(head, {\n [t.field]: derivedType\n });\n ancestorParse.set(t.field, derivedType, false);\n }\n transformNode = head = TimeUnitNode.makeFromTransform(head, t);\n } else if (isAggregate(t)) {\n transformNode = head = AggregateNode.makeFromTransform(head, t);\n derivedType = 'number';\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n } else if (isLookup(t)) {\n transformNode = head = LookupNode.make(head, model, t, lookupCounter++);\n derivedType = 'derived';\n } else if (isWindow(t)) {\n transformNode = head = new WindowTransformNode(head, t);\n derivedType = 'number';\n } else if (isJoinAggregate(t)) {\n transformNode = head = new JoinAggregateTransformNode(head, t);\n derivedType = 'number';\n } else if (isStack(t)) {\n transformNode = head = StackNode.makeFromTransform(head, t);\n derivedType = 'derived';\n } else if (isFold(t)) {\n transformNode = head = new FoldTransformNode(head, t);\n derivedType = 'derived';\n } else if (isExtent(t)) {\n transformNode = head = new ExtentTransformNode(head, t);\n derivedType = 'derived';\n } else if (isFlatten(t)) {\n transformNode = head = new FlattenTransformNode(head, t);\n derivedType = 'derived';\n } else if (isPivot(t)) {\n transformNode = head = new PivotTransformNode(head, t);\n derivedType = 'derived';\n } else if (isSample(t)) {\n head = new SampleTransformNode(head, t);\n } else if (isImpute(t)) {\n transformNode = head = ImputeNode.makeFromTransform(head, t);\n derivedType = 'derived';\n } else if (isDensity(t)) {\n transformNode = head = new DensityTransformNode(head, t);\n derivedType = 'derived';\n } else if (isQuantile(t)) {\n transformNode = head = new QuantileTransformNode(head, t);\n derivedType = 'derived';\n } else if (isRegression(t)) {\n transformNode = head = new RegressionTransformNode(head, t);\n derivedType = 'derived';\n } else if (isLoess(t)) {\n transformNode = head = new LoessTransformNode(head, t);\n derivedType = 'derived';\n } else {\n warn(invalidTransformIgnored(t));\n continue;\n }\n if (transformNode && derivedType !== undefined) {\n for (const field of (_transformNode$produc = transformNode.producedFields()) !== null && _transformNode$produc !== void 0 ? _transformNode$produc : []) {\n var _transformNode$produc;\n ancestorParse.set(field, derivedType, false);\n }\n }\n }\n return head;\n}\n/*\nDescription of the dataflow (http://asciiflow.com/):\n +--------+\n | Source |\n +---+----+\n |\n v\n FormatParse\n (explicit)\n |\n v\n Transforms\n(Filter, Calculate, Binning, TimeUnit, Aggregate, Window, ...)\n |\n v\n FormatParse\n (implicit)\n |\n v\n Binning (in `encoding`)\n |\n v\n Timeunit (in `encoding`)\n |\n v\nFormula From Sort Array\n |\n v\n +--+--+\n | Raw |\n +-----+\n |\n v\n Aggregate (in `encoding`)\n |\n v\n Stack (in `encoding`)\n |\n v\n Invalid Filter\n |\n v\n +----------+\n | Main |\n +----------+\n |\n v\n +-------+\n | Facet |----> \"column\", \"column-layout\", and \"row\"\n +-------+\n |\n v\n ...Child data...\n*/\nfunction parseData(model) {\n var _data$format4, _ParseNode$makeExplic, _ParseNode$makeWithAn2;\n let head = parseRoot(model, model.component.data.sources);\n const {\n outputNodes,\n outputNodeRefCounts\n } = model.component.data;\n const data = model.data;\n const newData = data && (isGenerator(data) || isUrlData(data) || isInlineData(data));\n const ancestorParse = !newData && model.parent ? model.parent.component.data.ancestorParse.clone() : new AncestorParse();\n if (isGenerator(data)) {\n // insert generator transform\n if (isSequenceGenerator(data)) {\n head = new SequenceNode(head, data.sequence);\n } else if (isGraticuleGenerator(data)) {\n head = new GraticuleNode(head, data.graticule);\n }\n // no parsing necessary for generator\n ancestorParse.parseNothing = true;\n } else if ((data === null || data === void 0 || (_data$format4 = data.format) === null || _data$format4 === void 0 ? void 0 : _data$format4.parse) === null) {\n // format.parse: null means disable parsing\n ancestorParse.parseNothing = true;\n }\n head = (_ParseNode$makeExplic = ParseNode.makeExplicit(head, model, ancestorParse)) !== null && _ParseNode$makeExplic !== void 0 ? _ParseNode$makeExplic : head;\n // Default discrete selections require an identifer transform to\n // uniquely identify data points. Add this transform at the head of\n // the pipeline such that the identifier field is available for all\n // subsequent datasets. During optimization, we will remove this\n // transform if it proves to be unnecessary. Additional identifier\n // transforms will be necessary when new tuples are constructed\n // (e.g., post-aggregation).\n head = new IdentifierNode(head);\n // HACK: This is equivalent for merging bin extent for union scale.\n // FIXME(https://github.com/vega/vega-lite/issues/2270): Correctly merge extent / bin node for shared bin scale\n const parentIsLayer = model.parent && isLayerModel(model.parent);\n if (isUnitModel(model) || isFacetModel(model)) {\n if (parentIsLayer) {\n var _BinNode$makeFromEnco;\n head = (_BinNode$makeFromEnco = BinNode.makeFromEncoding(head, model)) !== null && _BinNode$makeFromEnco !== void 0 ? _BinNode$makeFromEnco : head;\n }\n }\n if (model.transforms.length > 0) {\n head = parseTransformArray(head, model, ancestorParse);\n }\n // create parse nodes for fields that need to be parsed (or flattened) implicitly\n const implicitSelection = getImplicitFromSelection(model);\n const implicitEncoding = getImplicitFromEncoding(model);\n head = (_ParseNode$makeWithAn2 = ParseNode.makeWithAncestors(head, {}, {\n ...implicitSelection,\n ...implicitEncoding\n }, ancestorParse)) !== null && _ParseNode$makeWithAn2 !== void 0 ? _ParseNode$makeWithAn2 : head;\n if (isUnitModel(model)) {\n head = GeoJSONNode.parseAll(head, model);\n head = GeoPointNode.parseAll(head, model);\n }\n if (isUnitModel(model) || isFacetModel(model)) {\n var _TimeUnitNode$makeFro;\n if (!parentIsLayer) {\n var _BinNode$makeFromEnco2;\n head = (_BinNode$makeFromEnco2 = BinNode.makeFromEncoding(head, model)) !== null && _BinNode$makeFromEnco2 !== void 0 ? _BinNode$makeFromEnco2 : head;\n }\n head = (_TimeUnitNode$makeFro = TimeUnitNode.makeFromEncoding(head, model)) !== null && _TimeUnitNode$makeFro !== void 0 ? _TimeUnitNode$makeFro : head;\n head = CalculateNode.parseAllForSortIndex(head, model);\n }\n // add an output node pre aggregation\n const rawName = model.getDataName(DataSourceType.Raw);\n const raw = new OutputNode(head, rawName, DataSourceType.Raw, outputNodeRefCounts);\n outputNodes[rawName] = raw;\n head = raw;\n if (isUnitModel(model)) {\n var _ImputeNode$makeFromE, _StackNode$makeFromEn;\n const agg = AggregateNode.makeFromEncoding(head, model);\n if (agg) {\n head = agg;\n if (requiresSelectionId(model)) {\n head = new IdentifierNode(head);\n }\n }\n head = (_ImputeNode$makeFromE = ImputeNode.makeFromEncoding(head, model)) !== null && _ImputeNode$makeFromE !== void 0 ? _ImputeNode$makeFromE : head;\n head = (_StackNode$makeFromEn = StackNode.makeFromEncoding(head, model)) !== null && _StackNode$makeFromEn !== void 0 ? _StackNode$makeFromEn : head;\n }\n if (isUnitModel(model)) {\n var _FilterInvalidNode$ma;\n head = (_FilterInvalidNode$ma = FilterInvalidNode.make(head, model)) !== null && _FilterInvalidNode$ma !== void 0 ? _FilterInvalidNode$ma : head;\n }\n // output node for marks\n const mainName = model.getDataName(DataSourceType.Main);\n const main = new OutputNode(head, mainName, DataSourceType.Main, outputNodeRefCounts);\n outputNodes[mainName] = main;\n head = main;\n if (isUnitModel(model)) {\n materializeSelections(model, main);\n }\n // add facet marker\n let facetRoot = null;\n if (isFacetModel(model)) {\n var _makeJoinAggregateFro;\n const facetName = model.getName('facet');\n // Derive new aggregate for facet's sort field\n // augment data source with new fields for crossed facet\n head = (_makeJoinAggregateFro = makeJoinAggregateFromFacet(head, model.facet)) !== null && _makeJoinAggregateFro !== void 0 ? _makeJoinAggregateFro : head;\n facetRoot = new FacetNode(head, model, facetName, main.getSource());\n outputNodes[facetName] = facetRoot;\n }\n return {\n ...model.component.data,\n outputNodes,\n outputNodeRefCounts,\n raw,\n main,\n facetRoot,\n ancestorParse\n };\n}\nclass ConcatModel extends Model {\n constructor(spec, parent, parentGivenName, config) {\n var _spec$resolve, _spec$resolve2;\n super(spec, 'concat', parent, parentGivenName, config, spec.resolve);\n if (((_spec$resolve = spec.resolve) === null || _spec$resolve === void 0 || (_spec$resolve = _spec$resolve.axis) === null || _spec$resolve === void 0 ? void 0 : _spec$resolve.x) === 'shared' || ((_spec$resolve2 = spec.resolve) === null || _spec$resolve2 === void 0 || (_spec$resolve2 = _spec$resolve2.axis) === null || _spec$resolve2 === void 0 ? void 0 : _spec$resolve2.y) === 'shared') {\n warn(CONCAT_CANNOT_SHARE_AXIS);\n }\n this.children = this.getChildren(spec).map((child, i) => {\n return buildModel(child, this, this.getName(\"concat_\".concat(i)), undefined, config);\n });\n }\n parseData() {\n this.component.data = parseData(this);\n for (const child of this.children) {\n child.parseData();\n }\n }\n parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n for (const child of this.children) {\n child.parseSelections();\n for (const key of keys(child.component.selection)) {\n this.component.selection[key] = child.component.selection[key];\n }\n }\n }\n parseMarkGroup() {\n for (const child of this.children) {\n child.parseMarkGroup();\n }\n }\n parseAxesAndHeaders() {\n for (const child of this.children) {\n child.parseAxesAndHeaders();\n }\n // TODO(#2415): support shared axes\n }\n\n getChildren(spec) {\n if (isVConcatSpec(spec)) {\n return spec.vconcat;\n } else if (isHConcatSpec(spec)) {\n return spec.hconcat;\n }\n return spec.concat;\n }\n parseLayoutSize() {\n parseConcatLayoutSize(this);\n }\n parseAxisGroup() {\n return null;\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce((sg, child) => child.assembleSelectionTopLevelSignals(sg), signals);\n }\n assembleSignals() {\n this.children.forEach(child => child.assembleSignals());\n return [];\n }\n assembleLayoutSignals() {\n const layoutSignals = assembleLayoutSignals(this);\n for (const child of this.children) {\n layoutSignals.push(...child.assembleLayoutSignals());\n }\n return layoutSignals;\n }\n assembleSelectionData(data) {\n return this.children.reduce((db, child) => child.assembleSelectionData(db), data);\n }\n assembleMarks() {\n // only children have marks\n return this.children.map(child => {\n const title = child.assembleTitle();\n const style = child.assembleGroupStyle();\n const encodeEntry = child.assembleGroupEncodeEntry(false);\n return {\n type: 'group',\n name: child.getName('group'),\n ...(title ? {\n title\n } : {}),\n ...(style ? {\n style\n } : {}),\n ...(encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}),\n ...child.assembleGroup()\n };\n });\n }\n assembleGroupStyle() {\n return undefined;\n }\n assembleDefaultLayout() {\n const columns = this.layout.columns;\n return {\n ...(columns != null ? {\n columns\n } : {}),\n bounds: 'full',\n // Use align each so it can work with multiple plots with different size\n align: 'each'\n };\n }\n}\nfunction isFalseOrNull(v) {\n return v === false || v === null;\n}\nconst AXIS_COMPONENT_PROPERTIES_INDEX = {\n disable: 1,\n gridScale: 1,\n scale: 1,\n ...COMMON_AXIS_PROPERTIES_INDEX,\n labelExpr: 1,\n encode: 1\n};\nconst AXIS_COMPONENT_PROPERTIES = keys(AXIS_COMPONENT_PROPERTIES_INDEX);\nclass AxisComponent extends Split {\n constructor() {\n let explicit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let implicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let mainExtracted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n super();\n this.explicit = explicit;\n this.implicit = implicit;\n this.mainExtracted = mainExtracted;\n }\n clone() {\n return new AxisComponent(duplicate(this.explicit), duplicate(this.implicit), this.mainExtracted);\n }\n hasAxisPart(part) {\n // FIXME(https://github.com/vega/vega-lite/issues/2552) this method can be wrong if users use a Vega theme.\n if (part === 'axis') {\n // always has the axis container part\n return true;\n }\n if (part === 'grid' || part === 'title') {\n return !!this.get(part);\n }\n // Other parts are enabled by default, so they should not be false or null.\n return !isFalseOrNull(this.get(part));\n }\n hasOrientSignalRef() {\n return isSignalRef(this.explicit.orient);\n }\n}\nfunction labels(model, channel, specifiedLabelsSpec) {\n var _getFieldOrDatumDef;\n const {\n encoding,\n config\n } = model;\n const fieldOrDatumDef = (_getFieldOrDatumDef = getFieldOrDatumDef(encoding[channel])) !== null && _getFieldOrDatumDef !== void 0 ? _getFieldOrDatumDef : getFieldOrDatumDef(encoding[getSecondaryRangeChannel(channel)]);\n const axis = model.axis(channel) || {};\n const {\n format,\n formatType\n } = axis;\n if (isCustomFormatType(formatType)) {\n return {\n text: formatCustomType({\n fieldOrDatumDef,\n field: 'datum.value',\n format,\n formatType,\n config\n }),\n ...specifiedLabelsSpec\n };\n } else if (format === undefined && formatType === undefined && config.customFormatTypes) {\n if (channelDefType(fieldOrDatumDef) === 'quantitative') {\n if (isPositionFieldOrDatumDef(fieldOrDatumDef) && fieldOrDatumDef.stack === 'normalize' && config.normalizedNumberFormatType) {\n return {\n text: formatCustomType({\n fieldOrDatumDef,\n field: 'datum.value',\n format: config.normalizedNumberFormat,\n formatType: config.normalizedNumberFormatType,\n config\n }),\n ...specifiedLabelsSpec\n };\n } else if (config.numberFormatType) {\n return {\n text: formatCustomType({\n fieldOrDatumDef,\n field: 'datum.value',\n format: config.numberFormat,\n formatType: config.numberFormatType,\n config\n }),\n ...specifiedLabelsSpec\n };\n }\n }\n if (channelDefType(fieldOrDatumDef) === 'temporal' && config.timeFormatType && isFieldDef(fieldOrDatumDef) && !fieldOrDatumDef.timeUnit) {\n return {\n text: formatCustomType({\n fieldOrDatumDef,\n field: 'datum.value',\n format: config.timeFormat,\n formatType: config.timeFormatType,\n config\n }),\n ...specifiedLabelsSpec\n };\n }\n }\n return specifiedLabelsSpec;\n}\nfunction parseUnitAxes(model) {\n return POSITION_SCALE_CHANNELS.reduce((axis, channel) => {\n if (model.component.scales[channel]) {\n axis[channel] = [parseAxis(channel, model)];\n }\n return axis;\n }, {});\n}\nconst OPPOSITE_ORIENT = {\n bottom: 'top',\n top: 'bottom',\n left: 'right',\n right: 'left'\n};\nfunction parseLayerAxes(model) {\n const {\n axes,\n resolve\n } = model.component;\n const axisCount = {\n top: 0,\n bottom: 0,\n right: 0,\n left: 0\n };\n for (const child of model.children) {\n child.parseAxesAndHeaders();\n for (const channel of keys(child.component.axes)) {\n resolve.axis[channel] = parseGuideResolve(model.component.resolve, channel);\n if (resolve.axis[channel] === 'shared') {\n // If the resolve says shared (and has not been overridden)\n // We will try to merge and see if there is a conflict\n axes[channel] = mergeAxisComponents(axes[channel], child.component.axes[channel]);\n if (!axes[channel]) {\n // If merge returns nothing, there is a conflict so we cannot make the axis shared.\n // Thus, mark axis as independent and remove the axis component.\n resolve.axis[channel] = 'independent';\n delete axes[channel];\n }\n }\n }\n }\n // Move axes to layer's axis component and merge shared axes\n for (const channel of POSITION_SCALE_CHANNELS) {\n for (const child of model.children) {\n if (!child.component.axes[channel]) {\n // skip if the child does not have a particular axis\n continue;\n }\n if (resolve.axis[channel] === 'independent') {\n var _axes$channel;\n // If axes are independent, concat the axisComponent array.\n axes[channel] = ((_axes$channel = axes[channel]) !== null && _axes$channel !== void 0 ? _axes$channel : []).concat(child.component.axes[channel]);\n // Automatically adjust orient\n for (const axisComponent of child.component.axes[channel]) {\n const {\n value: orient,\n explicit\n } = axisComponent.getWithExplicit('orient');\n if (isSignalRef(orient)) {\n continue;\n }\n if (axisCount[orient] > 0 && !explicit) {\n // Change axis orient if the number do not match\n const oppositeOrient = OPPOSITE_ORIENT[orient];\n if (axisCount[orient] > axisCount[oppositeOrient]) {\n axisComponent.set('orient', oppositeOrient, false);\n }\n }\n axisCount[orient]++;\n // TODO(https://github.com/vega/vega-lite/issues/2634): automatically add extra offset?\n }\n }\n // After merging, make sure to remove axes from child\n delete child.component.axes[channel];\n }\n // Show gridlines for first axis only for dual-axis chart\n if (resolve.axis[channel] === 'independent' && axes[channel] && axes[channel].length > 1) {\n for (const [index, axisCmpt] of (axes[channel] || []).entries()) {\n if (index > 0 && !!axisCmpt.get('grid') && !axisCmpt.explicit.grid) {\n axisCmpt.implicit.grid = false;\n }\n }\n }\n }\n}\nfunction mergeAxisComponents(mergedAxisCmpts, childAxisCmpts) {\n if (mergedAxisCmpts) {\n // FIXME: this is a bit wrong once we support multiple axes\n if (mergedAxisCmpts.length !== childAxisCmpts.length) {\n return undefined; // Cannot merge axis component with different number of axes.\n }\n\n const length = mergedAxisCmpts.length;\n for (let i = 0; i < length; i++) {\n const merged = mergedAxisCmpts[i];\n const child = childAxisCmpts[i];\n if (!!merged !== !!child) {\n return undefined;\n } else if (merged && child) {\n const mergedOrient = merged.getWithExplicit('orient');\n const childOrient = child.getWithExplicit('orient');\n if (mergedOrient.explicit && childOrient.explicit && mergedOrient.value !== childOrient.value) {\n // TODO: throw warning if resolve is explicit (We don't have info about explicit/implicit resolve yet.)\n // Cannot merge due to inconsistent orient\n return undefined;\n } else {\n mergedAxisCmpts[i] = mergeAxisComponent(merged, child);\n }\n }\n }\n } else {\n // For first one, return a copy of the child\n return childAxisCmpts.map(axisComponent => axisComponent.clone());\n }\n return mergedAxisCmpts;\n}\nfunction mergeAxisComponent(merged, child) {\n for (const prop of AXIS_COMPONENT_PROPERTIES) {\n const mergedValueWithExplicit = mergeValuesWithExplicit(merged.getWithExplicit(prop), child.getWithExplicit(prop), prop, 'axis',\n // Tie breaker function\n (v1, v2) => {\n switch (prop) {\n case 'title':\n return mergeTitleComponent(v1, v2);\n case 'gridScale':\n return {\n explicit: v1.explicit,\n value: getFirstDefined(v1.value, v2.value)\n };\n }\n return defaultTieBreaker(v1, v2, prop, 'axis');\n });\n merged.setWithExplicit(prop, mergedValueWithExplicit);\n }\n return merged;\n}\nfunction isExplicit(value, property, axis, model, channel) {\n if (property === 'disable') {\n return axis !== undefined; // if axis is specified or null/false, then its enable/disable state is explicit\n }\n\n axis = axis || {};\n switch (property) {\n case 'titleAngle':\n case 'labelAngle':\n return value === (isSignalRef(axis.labelAngle) ? axis.labelAngle : normalizeAngle(axis.labelAngle));\n case 'values':\n return !!axis.values;\n // specified axis.values is already respected, but may get transformed.\n case 'encode':\n // both VL axis.encoding and axis.labelAngle affect VG axis.encode\n return !!axis.encoding || !!axis.labelAngle;\n case 'title':\n // title can be explicit if fieldDef.title is set\n if (value === getFieldDefTitle(model, channel)) {\n return true;\n }\n }\n // Otherwise, things are explicit if the returned value matches the specified property\n return value === axis[property];\n}\n/**\n * Properties to always include values from config\n */\nconst propsToAlwaysIncludeConfig = new Set(['grid', 'translate',\n// the rest are not axis configs in Vega, but are in VL, so we need to set too.\n'format', 'formatType', 'orient', 'labelExpr', 'tickCount', 'position', 'tickMinStep']);\nfunction parseAxis(channel, model) {\n var _axis2, _config, _config$axis, _axis3, _axis$encoding;\n let axis = model.axis(channel);\n const axisComponent = new AxisComponent();\n const fieldOrDatumDef = getFieldOrDatumDef(model.encoding[channel]);\n const {\n mark,\n config\n } = model;\n const orient = ((_axis2 = axis) === null || _axis2 === void 0 ? void 0 : _axis2.orient) || ((_config = config[channel === 'x' ? 'axisX' : 'axisY']) === null || _config === void 0 ? void 0 : _config.orient) || ((_config$axis = config.axis) === null || _config$axis === void 0 ? void 0 : _config$axis.orient) || defaultOrient(channel);\n const scaleType = model.getScaleComponent(channel).get('type');\n const axisConfigs = getAxisConfigs(channel, scaleType, orient, model.config);\n const disable = axis !== undefined ? !axis : getAxisConfig('disable', config.style, (_axis3 = axis) === null || _axis3 === void 0 ? void 0 : _axis3.style, axisConfigs).configValue;\n axisComponent.set('disable', disable, axis !== undefined);\n if (disable) {\n return axisComponent;\n }\n axis = axis || {};\n const labelAngle = getLabelAngle(fieldOrDatumDef, axis, channel, config.style, axisConfigs);\n const formatType = guideFormatType(axis.formatType, fieldOrDatumDef, scaleType);\n const format = guideFormat(fieldOrDatumDef, fieldOrDatumDef.type, axis.format, axis.formatType, config, true);\n const ruleParams = {\n fieldOrDatumDef,\n axis,\n channel,\n model,\n scaleType,\n orient,\n labelAngle,\n format,\n formatType,\n mark,\n config\n };\n // 1.2. Add properties\n for (const property of AXIS_COMPONENT_PROPERTIES) {\n const value = property in axisRules ? axisRules[property](ruleParams) : isAxisProperty(property) ? axis[property] : undefined;\n const hasValue = value !== undefined;\n const explicit = isExplicit(value, property, axis, model, channel);\n if (hasValue && explicit) {\n axisComponent.set(property, value, explicit);\n } else {\n const {\n configValue = undefined,\n configFrom = undefined\n } = isAxisProperty(property) && property !== 'values' ? getAxisConfig(property, config.style, axis.style, axisConfigs) : {};\n const hasConfigValue = configValue !== undefined;\n if (hasValue && !hasConfigValue) {\n // only set property if it is explicitly set or has no config value (otherwise we will accidentally override config)\n axisComponent.set(property, value, explicit);\n } else if (\n // Cases need implicit values\n // 1. Axis config that aren't available in Vega\n !(configFrom === 'vgAxisConfig') ||\n // 2. Certain properties are always included (see `propsToAlwaysIncludeConfig`'s declaration for more details)\n propsToAlwaysIncludeConfig.has(property) && hasConfigValue ||\n // 3. Conditional axis values and signals\n isConditionalAxisValue(configValue) || isSignalRef(configValue)) {\n // If a config is specified and is conditional, copy conditional value from axis config\n axisComponent.set(property, configValue, false);\n }\n }\n }\n // 2) Add guide encode definition groups\n const axisEncoding = (_axis$encoding = axis.encoding) !== null && _axis$encoding !== void 0 ? _axis$encoding : {};\n const axisEncode = AXIS_PARTS.reduce((e, part) => {\n var _axisEncoding$part;\n if (!axisComponent.hasAxisPart(part)) {\n // No need to create encode for a disabled part.\n return e;\n }\n const axisEncodingPart = guideEncodeEntry((_axisEncoding$part = axisEncoding[part]) !== null && _axisEncoding$part !== void 0 ? _axisEncoding$part : {}, model);\n const value = part === 'labels' ? labels(model, channel, axisEncodingPart) : axisEncodingPart;\n if (value !== undefined && !isEmpty(value)) {\n e[part] = {\n update: value\n };\n }\n return e;\n }, {});\n // FIXME: By having encode as one property, we won't have fine grained encode merging.\n if (!isEmpty(axisEncode)) {\n axisComponent.set('encode', axisEncode, !!axis.encoding || axis.labelAngle !== undefined);\n }\n return axisComponent;\n}\nfunction initLayoutSize(_ref102) {\n let {\n encoding,\n size\n } = _ref102;\n for (const channel of POSITION_SCALE_CHANNELS) {\n const sizeType = getSizeChannel(channel);\n if (isStep(size[sizeType])) {\n if (isContinuousFieldOrDatumDef(encoding[channel])) {\n delete size[sizeType];\n warn(stepDropped(sizeType));\n }\n }\n }\n return size;\n}\nconst arc = {\n vgMark: 'arc',\n encodeEntry: model => {\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n }),\n ...pointPosition('x', model, {\n defaultPos: 'mid'\n }),\n ...pointPosition('y', model, {\n defaultPos: 'mid'\n }),\n // arcs are rectangles in polar coordinates\n ...rectPosition(model, 'radius'),\n ...rectPosition(model, 'theta')\n };\n }\n};\nconst area = {\n vgMark: 'area',\n encodeEntry: model => {\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'include',\n size: 'ignore',\n theta: 'ignore'\n }),\n ...pointOrRangePosition('x', model, {\n defaultPos: 'zeroOrMin',\n defaultPos2: 'zeroOrMin',\n range: model.markDef.orient === 'horizontal'\n }),\n ...pointOrRangePosition('y', model, {\n defaultPos: 'zeroOrMin',\n defaultPos2: 'zeroOrMin',\n range: model.markDef.orient === 'vertical'\n }),\n ...defined(model)\n };\n }\n};\nconst bar = {\n vgMark: 'rect',\n encodeEntry: model => {\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n }),\n ...rectPosition(model, 'x'),\n ...rectPosition(model, 'y')\n };\n }\n};\nconst geoshape = {\n vgMark: 'shape',\n encodeEntry: model => {\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n })\n };\n },\n postEncodingTransform: model => {\n const {\n encoding\n } = model;\n const shapeDef = encoding.shape;\n const transform = {\n type: 'geoshape',\n projection: model.projectionName(),\n // as: 'shape',\n ...(shapeDef && isFieldDef(shapeDef) && shapeDef.type === GEOJSON ? {\n field: vgField(shapeDef, {\n expr: 'datum'\n })\n } : {})\n };\n return [transform];\n }\n};\nconst image = {\n vgMark: 'image',\n encodeEntry: model => {\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'ignore',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n }),\n ...rectPosition(model, 'x'),\n ...rectPosition(model, 'y'),\n ...text$1(model, 'url')\n };\n }\n};\nconst line = {\n vgMark: 'line',\n encodeEntry: model => {\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'ignore'\n }),\n ...pointPosition('x', model, {\n defaultPos: 'mid'\n }),\n ...pointPosition('y', model, {\n defaultPos: 'mid'\n }),\n ...nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's line size is strokeWidth\n }),\n\n ...defined(model)\n };\n }\n};\nconst trail = {\n vgMark: 'trail',\n encodeEntry: model => {\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'include',\n orient: 'ignore',\n theta: 'ignore'\n }),\n ...pointPosition('x', model, {\n defaultPos: 'mid'\n }),\n ...pointPosition('y', model, {\n defaultPos: 'mid'\n }),\n ...nonPosition('size', model),\n ...defined(model)\n };\n }\n};\nfunction encodeEntry(model, fixedShape) {\n const {\n config\n } = model;\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n size: 'include',\n orient: 'ignore',\n theta: 'ignore'\n }),\n ...pointPosition('x', model, {\n defaultPos: 'mid'\n }),\n ...pointPosition('y', model, {\n defaultPos: 'mid'\n }),\n ...nonPosition('size', model),\n ...nonPosition('angle', model),\n ...shapeMixins(model, config, fixedShape)\n };\n}\nfunction shapeMixins(model, config, fixedShape) {\n if (fixedShape) {\n return {\n shape: {\n value: fixedShape\n }\n };\n }\n return nonPosition('shape', model);\n}\nconst point = {\n vgMark: 'symbol',\n encodeEntry: model => {\n return encodeEntry(model);\n }\n};\nconst circle = {\n vgMark: 'symbol',\n encodeEntry: model => {\n return encodeEntry(model, 'circle');\n }\n};\nconst square = {\n vgMark: 'symbol',\n encodeEntry: model => {\n return encodeEntry(model, 'square');\n }\n};\nconst rect = {\n vgMark: 'rect',\n encodeEntry: model => {\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n }),\n ...rectPosition(model, 'x'),\n ...rectPosition(model, 'y')\n };\n }\n};\nconst rule = {\n vgMark: 'rule',\n encodeEntry: model => {\n const {\n markDef\n } = model;\n const orient = markDef.orient;\n if (!model.encoding.x && !model.encoding.y && !model.encoding.latitude && !model.encoding.longitude) {\n // Show nothing if we have none of x, y, lat, and long.\n return {};\n }\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n }),\n ...pointOrRangePosition('x', model, {\n defaultPos: orient === 'horizontal' ? 'zeroOrMax' : 'mid',\n defaultPos2: 'zeroOrMin',\n range: orient !== 'vertical' // include x2 for horizontal or line segment rule\n }),\n\n ...pointOrRangePosition('y', model, {\n defaultPos: orient === 'vertical' ? 'zeroOrMax' : 'mid',\n defaultPos2: 'zeroOrMin',\n range: orient !== 'horizontal' // include y2 for vertical or line segment rule\n }),\n\n ...nonPosition('size', model, {\n vgChannel: 'strokeWidth' // VL's rule size is strokeWidth\n })\n };\n }\n};\n\nconst text = {\n vgMark: 'text',\n encodeEntry: model => {\n const {\n config,\n encoding\n } = model;\n return {\n ...baseEncodeEntry(model, {\n align: 'include',\n baseline: 'include',\n color: 'include',\n size: 'ignore',\n orient: 'ignore',\n theta: 'include'\n }),\n ...pointPosition('x', model, {\n defaultPos: 'mid'\n }),\n ...pointPosition('y', model, {\n defaultPos: 'mid'\n }),\n ...text$1(model),\n ...nonPosition('size', model, {\n vgChannel: 'fontSize' // VL's text size is fontSize\n }),\n\n ...nonPosition('angle', model),\n ...valueIfDefined('align', align(model.markDef, encoding, config)),\n ...valueIfDefined('baseline', baseline(model.markDef, encoding, config)),\n ...pointPosition('radius', model, {\n defaultPos: null\n }),\n ...pointPosition('theta', model, {\n defaultPos: null\n })\n };\n }\n};\nfunction align(markDef, encoding, config) {\n const a = getMarkPropOrConfig('align', markDef, config);\n if (a === undefined) {\n return 'center';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\nfunction baseline(markDef, encoding, config) {\n const b = getMarkPropOrConfig('baseline', markDef, config);\n if (b === undefined) {\n return 'middle';\n }\n // If there is a config, Vega-parser will process this already.\n return undefined;\n}\nconst tick = {\n vgMark: 'rect',\n encodeEntry: model => {\n const {\n config,\n markDef\n } = model;\n const orient = markDef.orient;\n const vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n const vgThicknessChannel = orient === 'horizontal' ? 'height' : 'width';\n return {\n ...baseEncodeEntry(model, {\n align: 'ignore',\n baseline: 'ignore',\n color: 'include',\n orient: 'ignore',\n size: 'ignore',\n theta: 'ignore'\n }),\n ...pointPosition('x', model, {\n defaultPos: 'mid',\n vgChannel: 'xc'\n }),\n ...pointPosition('y', model, {\n defaultPos: 'mid',\n vgChannel: 'yc'\n }),\n // size / thickness => width / height\n ...nonPosition('size', model, {\n defaultValue: defaultSize(model),\n vgChannel: vgSizeChannel\n }),\n [vgThicknessChannel]: signalOrValueRef(getMarkPropOrConfig('thickness', markDef, config))\n };\n }\n};\nfunction defaultSize(model) {\n var _getMarkPropOrConfig4;\n const {\n config,\n markDef\n } = model;\n const {\n orient\n } = markDef;\n const vgSizeChannel = orient === 'horizontal' ? 'width' : 'height';\n const scale = model.getScaleComponent(orient === 'horizontal' ? 'x' : 'y');\n const markPropOrConfig = (_getMarkPropOrConfig4 = getMarkPropOrConfig('size', markDef, config, {\n vgChannel: vgSizeChannel\n })) !== null && _getMarkPropOrConfig4 !== void 0 ? _getMarkPropOrConfig4 : config.tick.bandSize;\n if (markPropOrConfig !== undefined) {\n return markPropOrConfig;\n } else {\n const scaleRange = scale ? scale.get('range') : undefined;\n if (scaleRange && isVgRangeStep(scaleRange) && isNumber$1(scaleRange.step)) {\n return scaleRange.step * 3 / 4;\n }\n const defaultViewStep = getViewConfigDiscreteStep(config.view, vgSizeChannel);\n return defaultViewStep * 3 / 4;\n }\n}\nconst markCompiler = {\n arc,\n area,\n bar,\n circle,\n geoshape,\n image,\n line,\n point,\n rect,\n rule,\n square,\n text,\n tick,\n trail\n};\nfunction parseMarkGroups(model) {\n if (contains([LINE, AREA, TRAIL], model.mark)) {\n const details = pathGroupingFields(model.mark, model.encoding);\n if (details.length > 0) {\n return getPathGroups(model, details);\n }\n // otherwise use standard mark groups\n } else if (model.mark === BAR) {\n const hasCornerRadius = VG_CORNERRADIUS_CHANNELS.some(prop => getMarkPropOrConfig(prop, model.markDef, model.config));\n if (model.stack && !model.fieldDef('size') && hasCornerRadius) {\n return getGroupsForStackedBarWithCornerRadius(model);\n }\n }\n return getMarkGroup(model);\n}\nconst FACETED_PATH_PREFIX = 'faceted_path_';\nfunction getPathGroups(model, details) {\n // TODO: for non-stacked plot, map order to zindex. (Maybe rename order for layer to zindex?)\n return [{\n name: model.getName('pathgroup'),\n type: 'group',\n from: {\n facet: {\n name: FACETED_PATH_PREFIX + model.requestDataName(DataSourceType.Main),\n data: model.requestDataName(DataSourceType.Main),\n groupby: details\n }\n },\n encode: {\n update: {\n width: {\n field: {\n group: 'width'\n }\n },\n height: {\n field: {\n group: 'height'\n }\n }\n }\n },\n // With subfacet for line/area group, need to use faceted data from above.\n marks: getMarkGroup(model, {\n fromPrefix: FACETED_PATH_PREFIX\n })\n }];\n}\nconst STACK_GROUP_PREFIX = 'stack_group_';\n/**\n * We need to put stacked bars into groups in order to enable cornerRadius for stacks.\n * If stack is used and the model doesn't have size encoding, we put the mark into groups,\n * and apply cornerRadius properties at the group.\n */\nfunction getGroupsForStackedBarWithCornerRadius(model) {\n var _model$stack$groupbyC;\n // Generate the mark\n const [mark] = getMarkGroup(model, {\n fromPrefix: STACK_GROUP_PREFIX\n });\n // Get the scale for the stacked field\n const fieldScale = model.scaleName(model.stack.fieldChannel);\n const stackField = function () {\n let opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return model.vgField(model.stack.fieldChannel, opt);\n };\n // Find the min/max of the pixel value on the stacked direction\n const stackFieldGroup = (func, expr) => {\n const vgFieldMinMax = [stackField({\n prefix: 'min',\n suffix: 'start',\n expr\n }), stackField({\n prefix: 'max',\n suffix: 'start',\n expr\n }), stackField({\n prefix: 'min',\n suffix: 'end',\n expr\n }), stackField({\n prefix: 'max',\n suffix: 'end',\n expr\n })];\n return \"\".concat(func, \"(\").concat(vgFieldMinMax.map(field => \"scale('\".concat(fieldScale, \"',\").concat(field, \")\")).join(','), \")\");\n };\n let groupUpdate;\n let innerGroupUpdate;\n // Build the encoding for group and an inner group\n if (model.stack.fieldChannel === 'x') {\n // Move cornerRadius, y/yc/y2/height properties to group\n // Group x/x2 should be the min/max of the marks within\n groupUpdate = {\n ...pick(mark.encode.update, ['y', 'yc', 'y2', 'height', ...VG_CORNERRADIUS_CHANNELS]),\n x: {\n signal: stackFieldGroup('min', 'datum')\n },\n x2: {\n signal: stackFieldGroup('max', 'datum')\n },\n clip: {\n value: true\n }\n };\n // Inner group should revert the x translation, and pass height through\n innerGroupUpdate = {\n x: {\n field: {\n group: 'x'\n },\n mult: -1\n },\n height: {\n field: {\n group: 'height'\n }\n }\n };\n // The marks should use the same height as group, without y/yc/y2 properties (because it's already done by group)\n // This is why size encoding is not supported yet\n mark.encode.update = {\n ...omit(mark.encode.update, ['y', 'yc', 'y2']),\n height: {\n field: {\n group: 'height'\n }\n }\n };\n } else {\n groupUpdate = {\n ...pick(mark.encode.update, ['x', 'xc', 'x2', 'width']),\n y: {\n signal: stackFieldGroup('min', 'datum')\n },\n y2: {\n signal: stackFieldGroup('max', 'datum')\n },\n clip: {\n value: true\n }\n };\n innerGroupUpdate = {\n y: {\n field: {\n group: 'y'\n },\n mult: -1\n },\n width: {\n field: {\n group: 'width'\n }\n }\n };\n mark.encode.update = {\n ...omit(mark.encode.update, ['x', 'xc', 'x2']),\n width: {\n field: {\n group: 'width'\n }\n }\n };\n }\n // Deal with cornerRadius properties\n for (const key of VG_CORNERRADIUS_CHANNELS) {\n const configValue = getMarkConfig(key, model.markDef, model.config);\n // Move from mark to group\n if (mark.encode.update[key]) {\n groupUpdate[key] = mark.encode.update[key];\n delete mark.encode.update[key];\n } else if (configValue) {\n groupUpdate[key] = signalOrValueRef(configValue);\n }\n // Overwrite any cornerRadius on mark set by config --- they are already moved to the group\n if (configValue) {\n mark.encode.update[key] = {\n value: 0\n };\n }\n }\n const groupby = [];\n if (((_model$stack$groupbyC = model.stack.groupbyChannels) === null || _model$stack$groupbyC === void 0 ? void 0 : _model$stack$groupbyC.length) > 0) {\n for (const groupbyChannel of model.stack.groupbyChannels) {\n // For bin and time unit, we have to add bin/timeunit -end channels.\n const groupByField = model.fieldDef(groupbyChannel);\n const field = vgField(groupByField);\n if (field) {\n groupby.push(field);\n }\n if (groupByField !== null && groupByField !== void 0 && groupByField.bin || groupByField !== null && groupByField !== void 0 && groupByField.timeUnit) {\n groupby.push(vgField(groupByField, {\n binSuffix: 'end'\n }));\n }\n }\n }\n const strokeProperties = ['stroke', 'strokeWidth', 'strokeJoin', 'strokeCap', 'strokeDash', 'strokeDashOffset', 'strokeMiterLimit', 'strokeOpacity'];\n // Generate stroke properties for the group\n groupUpdate = strokeProperties.reduce((encode, prop) => {\n if (mark.encode.update[prop]) {\n return {\n ...encode,\n [prop]: mark.encode.update[prop]\n };\n } else {\n const configValue = getMarkConfig(prop, model.markDef, model.config);\n if (configValue !== undefined) {\n return {\n ...encode,\n [prop]: signalOrValueRef(configValue)\n };\n } else {\n return encode;\n }\n }\n }, groupUpdate);\n // Apply strokeForeground and strokeOffset if stroke is used\n if (groupUpdate.stroke) {\n groupUpdate.strokeForeground = {\n value: true\n };\n groupUpdate.strokeOffset = {\n value: 0\n };\n }\n return [{\n type: 'group',\n from: {\n facet: {\n data: model.requestDataName(DataSourceType.Main),\n name: STACK_GROUP_PREFIX + model.requestDataName(DataSourceType.Main),\n groupby,\n aggregate: {\n fields: [stackField({\n suffix: 'start'\n }), stackField({\n suffix: 'start'\n }), stackField({\n suffix: 'end'\n }), stackField({\n suffix: 'end'\n })],\n ops: ['min', 'max', 'min', 'max']\n }\n }\n },\n encode: {\n update: groupUpdate\n },\n marks: [{\n type: 'group',\n encode: {\n update: innerGroupUpdate\n },\n marks: [mark]\n }]\n }];\n}\nfunction getSort(model) {\n const {\n encoding,\n stack,\n mark,\n markDef,\n config\n } = model;\n const order = encoding.order;\n if (!isArray(order) && isValueDef(order) && isNullOrFalse(order.value) || !order && isNullOrFalse(getMarkPropOrConfig('order', markDef, config))) {\n return undefined;\n } else if ((isArray(order) || isFieldDef(order)) && !stack) {\n // Sort by the order field if it is specified and the field is not stacked. (For stacked field, order specify stack order.)\n return sortParams(order, {\n expr: 'datum'\n });\n } else if (isPathMark(mark)) {\n // For both line and area, we sort values based on dimension by default\n const dimensionChannel = markDef.orient === 'horizontal' ? 'y' : 'x';\n const dimensionChannelDef = encoding[dimensionChannel];\n if (isFieldDef(dimensionChannelDef)) {\n const s = dimensionChannelDef.sort;\n if (isArray(s)) {\n return {\n field: vgField(dimensionChannelDef, {\n prefix: dimensionChannel,\n suffix: 'sort_index',\n expr: 'datum'\n })\n };\n } else if (isSortField(s)) {\n return {\n field: vgField({\n // FIXME: this op might not already exist?\n // FIXME: what if dimensionChannel (x or y) contains custom domain?\n aggregate: isAggregate$1(model.encoding) ? s.op : undefined,\n field: s.field\n }, {\n expr: 'datum'\n })\n };\n } else if (isSortByEncoding(s)) {\n const fieldDefToSort = model.fieldDef(s.encoding);\n return {\n field: vgField(fieldDefToSort, {\n expr: 'datum'\n }),\n order: s.order\n };\n } else if (s === null) {\n return undefined;\n } else {\n var _model$stack2;\n return {\n field: vgField(dimensionChannelDef, {\n // For stack with imputation, we only have bin_mid\n binSuffix: (_model$stack2 = model.stack) !== null && _model$stack2 !== void 0 && _model$stack2.impute ? 'mid' : undefined,\n expr: 'datum'\n })\n };\n }\n }\n return undefined;\n }\n return undefined;\n}\nfunction getMarkGroup(model) {\n let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n fromPrefix: ''\n };\n const {\n mark,\n markDef,\n encoding,\n config\n } = model;\n const clip = getFirstDefined(markDef.clip, scaleClip(model), projectionClip(model));\n const style = getStyles(markDef);\n const key = encoding.key;\n const sort = getSort(model);\n const interactive = interactiveFlag(model);\n const aria = getMarkPropOrConfig('aria', markDef, config);\n const postEncodingTransform = markCompiler[mark].postEncodingTransform ? markCompiler[mark].postEncodingTransform(model) : null;\n return [{\n name: model.getName('marks'),\n type: markCompiler[mark].vgMark,\n ...(clip ? {\n clip: true\n } : {}),\n ...(style ? {\n style\n } : {}),\n ...(key ? {\n key: key.field\n } : {}),\n ...(sort ? {\n sort\n } : {}),\n ...(interactive ? interactive : {}),\n ...(aria === false ? {\n aria\n } : {}),\n from: {\n data: opt.fromPrefix + model.requestDataName(DataSourceType.Main)\n },\n encode: {\n update: markCompiler[mark].encodeEntry(model)\n },\n ...(postEncodingTransform ? {\n transform: postEncodingTransform\n } : {})\n }];\n}\n/**\n * If scales are bound to interval selections, we want to automatically clip\n * marks to account for panning/zooming interactions. We identify bound scales\n * by the selectionExtent property, which gets added during scale parsing.\n */\nfunction scaleClip(model) {\n const xScale = model.getScaleComponent('x');\n const yScale = model.getScaleComponent('y');\n return xScale !== null && xScale !== void 0 && xScale.get('selectionExtent') || yScale !== null && yScale !== void 0 && yScale.get('selectionExtent') ? true : undefined;\n}\n/**\n * If we use a custom projection with auto-fitting to the geodata extent,\n * we need to clip to ensure the chart size doesn't explode.\n */\nfunction projectionClip(model) {\n const projection = model.component.projection;\n return projection && !projection.isFit ? true : undefined;\n}\n/**\n * Only output interactive flags if we have selections defined somewhere in our model hierarchy.\n */\nfunction interactiveFlag(model) {\n if (!model.component.selection) return null;\n const unitCount = keys(model.component.selection).length;\n let parentCount = unitCount;\n let parent = model.parent;\n while (parent && parentCount === 0) {\n parentCount = keys(parent.component.selection).length;\n parent = parent.parent;\n }\n return parentCount ? {\n interactive: unitCount > 0 || model.mark === 'geoshape' || !!model.encoding.tooltip\n } : null;\n}\n\n/**\n * Internal model of Vega-Lite specification for the compiler.\n */\nclass UnitModel extends ModelWithField {\n constructor(spec, parent, parentGivenName) {\n var _spec$params;\n let parentGivenSize = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n let config = arguments.length > 4 ? arguments[4] : undefined;\n super(spec, 'unit', parent, parentGivenName, config, undefined, isFrameMixins(spec) ? spec.view : undefined);\n this.specifiedScales = {};\n this.specifiedAxes = {};\n this.specifiedLegends = {};\n this.specifiedProjection = {};\n this.selection = [];\n this.children = [];\n const markDef = isMarkDef(spec.mark) ? {\n ...spec.mark\n } : {\n type: spec.mark\n };\n const mark = markDef.type;\n // Need to init filled before other mark properties because encoding depends on filled but other mark properties depend on types inside encoding\n if (markDef.filled === undefined) {\n markDef.filled = defaultFilled(markDef, config, {\n graticule: spec.data && isGraticuleGenerator(spec.data)\n });\n }\n const encoding = this.encoding = initEncoding(spec.encoding || {}, mark, markDef.filled, config);\n this.markDef = initMarkdef(markDef, encoding, config);\n this.size = initLayoutSize({\n encoding,\n size: isFrameMixins(spec) ? {\n ...parentGivenSize,\n ...(spec.width ? {\n width: spec.width\n } : {}),\n ...(spec.height ? {\n height: spec.height\n } : {})\n } : parentGivenSize\n });\n // calculate stack properties\n this.stack = stack(this.markDef, encoding);\n this.specifiedScales = this.initScales(mark, encoding);\n this.specifiedAxes = this.initAxes(encoding);\n this.specifiedLegends = this.initLegends(encoding);\n this.specifiedProjection = spec.projection;\n // Selections will be initialized upon parse.\n this.selection = ((_spec$params = spec.params) !== null && _spec$params !== void 0 ? _spec$params : []).filter(p => isSelectionParameter(p));\n }\n get hasProjection() {\n const {\n encoding\n } = this;\n const isGeoShapeMark = this.mark === GEOSHAPE;\n const hasGeoPosition = encoding && GEOPOSITION_CHANNELS.some(channel => isFieldOrDatumDef(encoding[channel]));\n return isGeoShapeMark || hasGeoPosition;\n }\n /**\n * Return specified Vega-Lite scale domain for a particular channel\n * @param channel\n */\n scaleDomain(channel) {\n const scale = this.specifiedScales[channel];\n return scale ? scale.domain : undefined;\n }\n axis(channel) {\n return this.specifiedAxes[channel];\n }\n legend(channel) {\n return this.specifiedLegends[channel];\n }\n initScales(mark, encoding) {\n return SCALE_CHANNELS.reduce((scales, channel) => {\n const fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n if (fieldOrDatumDef) {\n var _fieldOrDatumDef$scal2;\n scales[channel] = this.initScale((_fieldOrDatumDef$scal2 = fieldOrDatumDef.scale) !== null && _fieldOrDatumDef$scal2 !== void 0 ? _fieldOrDatumDef$scal2 : {});\n }\n return scales;\n }, {});\n }\n initScale(scale) {\n const {\n domain,\n range\n } = scale;\n // TODO: we could simplify this function if we had a recursive replace function\n const scaleInternal = replaceExprRef(scale);\n if (isArray(domain)) {\n scaleInternal.domain = domain.map(signalRefOrValue);\n }\n if (isArray(range)) {\n scaleInternal.range = range.map(signalRefOrValue);\n }\n return scaleInternal;\n }\n initAxes(encoding) {\n return POSITION_SCALE_CHANNELS.reduce((_axis, channel) => {\n // Position Axis\n // TODO: handle ConditionFieldDef\n const channelDef = encoding[channel];\n if (isFieldOrDatumDef(channelDef) || channel === X && isFieldOrDatumDef(encoding.x2) || channel === Y && isFieldOrDatumDef(encoding.y2)) {\n const axisSpec = isFieldOrDatumDef(channelDef) ? channelDef.axis : undefined;\n _axis[channel] = axisSpec ? this.initAxis({\n ...axisSpec\n }) // convert truthy value to object\n : axisSpec;\n }\n return _axis;\n }, {});\n }\n initAxis(axis) {\n const props = keys(axis);\n const axisInternal = {};\n for (const prop of props) {\n const val = axis[prop];\n axisInternal[prop] = isConditionalAxisValue(val) ? signalOrValueRefWithCondition(val) : signalRefOrValue(val);\n }\n return axisInternal;\n }\n initLegends(encoding) {\n return NONPOSITION_SCALE_CHANNELS.reduce((_legend, channel) => {\n const fieldOrDatumDef = getFieldOrDatumDef(encoding[channel]);\n if (fieldOrDatumDef && supportLegend(channel)) {\n const legend = fieldOrDatumDef.legend;\n _legend[channel] = legend ? replaceExprRef(legend) // convert truthy value to object\n : legend;\n }\n return _legend;\n }, {});\n }\n parseData() {\n this.component.data = parseData(this);\n }\n parseLayoutSize() {\n parseUnitLayoutSize(this);\n }\n parseSelections() {\n this.component.selection = parseUnitSelection(this, this.selection);\n }\n parseMarkGroup() {\n this.component.mark = parseMarkGroups(this);\n }\n parseAxesAndHeaders() {\n this.component.axes = parseUnitAxes(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return assembleTopLevelSignals(this, signals);\n }\n assembleSignals() {\n return [...assembleAxisSignals(this), ...assembleUnitSelectionSignals(this, [])];\n }\n assembleSelectionData(data) {\n return assembleUnitSelectionData(this, data);\n }\n assembleLayout() {\n return null;\n }\n assembleLayoutSignals() {\n return assembleLayoutSignals(this);\n }\n assembleMarks() {\n var _this$component$mark;\n let marks = (_this$component$mark = this.component.mark) !== null && _this$component$mark !== void 0 ? _this$component$mark : [];\n // If this unit is part of a layer, selections should augment\n // all in concert rather than each unit individually. This\n // ensures correct interleaving of clipping and brushed marks.\n if (!this.parent || !isLayerModel(this.parent)) {\n marks = assembleUnitSelectionMarks(this, marks);\n }\n return marks.map(this.correctDataNames);\n }\n assembleGroupStyle() {\n const {\n style\n } = this.view || {};\n if (style !== undefined) {\n return style;\n }\n if (this.encoding.x || this.encoding.y) {\n return 'cell';\n } else {\n return 'view';\n }\n }\n getMapping() {\n return this.encoding;\n }\n get mark() {\n return this.markDef.type;\n }\n channelHasField(channel) {\n return channelHasField(this.encoding, channel);\n }\n fieldDef(channel) {\n const channelDef = this.encoding[channel];\n return getFieldDef(channelDef);\n }\n typedFieldDef(channel) {\n const fieldDef = this.fieldDef(channel);\n if (isTypedFieldDef(fieldDef)) {\n return fieldDef;\n }\n return null;\n }\n}\nclass LayerModel extends Model {\n constructor(spec, parent, parentGivenName, parentGivenSize, config) {\n super(spec, 'layer', parent, parentGivenName, config, spec.resolve, spec.view);\n const layoutSize = {\n ...parentGivenSize,\n ...(spec.width ? {\n width: spec.width\n } : {}),\n ...(spec.height ? {\n height: spec.height\n } : {})\n };\n this.children = spec.layer.map((layer, i) => {\n if (isLayerSpec(layer)) {\n return new LayerModel(layer, this, this.getName(\"layer_\".concat(i)), layoutSize, config);\n } else if (isUnitSpec(layer)) {\n return new UnitModel(layer, this, this.getName(\"layer_\".concat(i)), layoutSize, config);\n }\n throw new Error(invalidSpec(layer));\n });\n }\n parseData() {\n this.component.data = parseData(this);\n for (const child of this.children) {\n child.parseData();\n }\n }\n parseLayoutSize() {\n parseLayerLayoutSize(this);\n }\n parseSelections() {\n // Merge selections up the hierarchy so that they may be referenced\n // across unit specs. Persist their definitions within each child\n // to assemble signals which remain within output Vega unit groups.\n this.component.selection = {};\n for (const child of this.children) {\n child.parseSelections();\n for (const key of keys(child.component.selection)) {\n this.component.selection[key] = child.component.selection[key];\n }\n }\n }\n parseMarkGroup() {\n for (const child of this.children) {\n child.parseMarkGroup();\n }\n }\n parseAxesAndHeaders() {\n parseLayerAxes(this);\n }\n assembleSelectionTopLevelSignals(signals) {\n return this.children.reduce((sg, child) => child.assembleSelectionTopLevelSignals(sg), signals);\n }\n // TODO: Support same named selections across children.\n assembleSignals() {\n return this.children.reduce((signals, child) => {\n return signals.concat(child.assembleSignals());\n }, assembleAxisSignals(this));\n }\n assembleLayoutSignals() {\n return this.children.reduce((signals, child) => {\n return signals.concat(child.assembleLayoutSignals());\n }, assembleLayoutSignals(this));\n }\n assembleSelectionData(data) {\n return this.children.reduce((db, child) => child.assembleSelectionData(db), data);\n }\n assembleGroupStyle() {\n const uniqueStyles = new Set();\n for (const child of this.children) {\n for (const style of array$5(child.assembleGroupStyle())) {\n uniqueStyles.add(style);\n }\n }\n const styles = Array.from(uniqueStyles);\n return styles.length > 1 ? styles : styles.length === 1 ? styles[0] : undefined;\n }\n assembleTitle() {\n let title = super.assembleTitle();\n if (title) {\n return title;\n }\n // If title does not provide layer, look into children\n for (const child of this.children) {\n title = child.assembleTitle();\n if (title) {\n return title;\n }\n }\n return undefined;\n }\n assembleLayout() {\n return null;\n }\n assembleMarks() {\n return assembleLayerSelectionMarks(this, this.children.flatMap(child => {\n return child.assembleMarks();\n }));\n }\n assembleLegends() {\n return this.children.reduce((legends, child) => {\n return legends.concat(child.assembleLegends());\n }, assembleLegends(this));\n }\n}\nfunction buildModel(spec, parent, parentGivenName, unitSize, config) {\n if (isFacetSpec(spec)) {\n return new FacetModel(spec, parent, parentGivenName, config);\n } else if (isLayerSpec(spec)) {\n return new LayerModel(spec, parent, parentGivenName, unitSize, config);\n } else if (isUnitSpec(spec)) {\n return new UnitModel(spec, parent, parentGivenName, unitSize, config);\n } else if (isAnyConcatSpec(spec)) {\n return new ConcatModel(spec, parent, parentGivenName, config);\n }\n throw new Error(invalidSpec(spec));\n}\n\n/**\n * Vega-Lite's main function, for compiling Vega-Lite spec into Vega spec.\n *\n * At a high-level, we make the following transformations in different phases:\n *\n * Input spec\n * |\n * | (Normalization)\n * v\n * Normalized Spec (Row/Column channels in single-view specs becomes faceted specs, composite marks becomes layered specs.)\n * |\n * | (Build Model)\n * v\n * A model tree of the spec\n * |\n * | (Parse)\n * v\n * A model tree with parsed components (intermediate structure of visualization primitives in a format that can be easily merged)\n * |\n * | (Optimize)\n * v\n * A model tree with parsed components with the data component optimized\n * |\n * | (Assemble)\n * v\n * Vega spec\n *\n * @param inputSpec The Vega-Lite specification.\n * @param opt Optional arguments passed to the Vega-Lite compiler.\n * @returns An object containing the compiled Vega spec and normalized Vega-Lite spec.\n */\nfunction compile(inputSpec) {\n let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // 0. Augment opt with default opts\n if (opt.logger) {\n // set the singleton logger to the provided logger\n set(opt.logger);\n }\n if (opt.fieldTitle) {\n // set the singleton field title formatter\n setTitleFormatter(opt.fieldTitle);\n }\n try {\n // 1. Initialize config by deep merging default config with the config provided via option and the input spec.\n const config = initConfig(mergeConfig(opt.config, inputSpec.config));\n // 2. Normalize: Convert input spec -> normalized spec\n // - Decompose all extended unit specs into composition of unit spec. For example, a box plot get expanded into multiple layers of bars, ticks, and rules. The shorthand row/column channel is also expanded to a facet spec.\n // - Normalize autosize and width or height spec\n const spec = normalize(inputSpec, config);\n // 3. Build Model: normalized spec -> Model (a tree structure)\n // This phases instantiates the models with default config by doing a top-down traversal. This allows us to pass properties that child models derive from their parents via their constructors.\n // See the abstract `Model` class and its children (UnitModel, LayerModel, FacetModel, ConcatModel) for different types of models.\n const model = buildModel(spec, null, '', undefined, config);\n // 4 Parse: Model --> Model with components\n // Note that components = intermediate representations that are equivalent to Vega specs.\n // We need these intermediate representation because we need to merge many visualization \"components\" like projections, scales, axes, and legends.\n // We will later convert these components into actual Vega specs in the assemble phase.\n // In this phase, we do a bottom-up traversal over the whole tree to\n // parse for each type of components once (e.g., data, layout, mark, scale).\n // By doing bottom-up traversal, we start parsing components of unit specs and\n // then merge child components of parent composite specs.\n //\n // Please see inside model.parse() for order of different components parsed.\n model.parse();\n // drawDataflow(model.component.data.sources);\n // 5. Optimize the dataflow. This will modify the data component of the model.\n optimizeDataflow(model.component.data, model);\n // drawDataflow(model.component.data.sources);\n // 6. Assemble: convert model components --> Vega Spec.\n const vgSpec = assembleTopLevelModel(model, getTopLevelProperties(inputSpec, spec.autosize, config, model), inputSpec.datasets, inputSpec.usermeta);\n return {\n spec: vgSpec,\n normalized: spec\n };\n } finally {\n // Reset the singleton logger if a logger is provided\n if (opt.logger) {\n reset();\n }\n // Reset the singleton field title formatter if provided\n if (opt.fieldTitle) {\n resetTitleFormatter();\n }\n }\n}\nfunction getTopLevelProperties(inputSpec, autosize, config, model) {\n const width = model.component.layoutSize.get('width');\n const height = model.component.layoutSize.get('height');\n if (autosize === undefined) {\n autosize = {\n type: 'pad'\n };\n if (model.hasAxisOrientSignalRef()) {\n autosize.resize = true;\n }\n } else if (isString(autosize)) {\n autosize = {\n type: autosize\n };\n }\n if (width && height && isFitType(autosize.type)) {\n if (width === 'step' && height === 'step') {\n warn(droppingFit());\n autosize.type = 'pad';\n } else if (width === 'step' || height === 'step') {\n // effectively XOR, because else if\n // get step dimension\n const sizeType = width === 'step' ? 'width' : 'height';\n // log that we're dropping fit for respective channel\n warn(droppingFit(getPositionScaleChannel(sizeType)));\n // setting type to inverse fit (so if we dropped fit-x, type is now fit-y)\n const inverseSizeType = sizeType === 'width' ? 'height' : 'width';\n autosize.type = getFitType(inverseSizeType);\n }\n }\n return {\n ...(keys(autosize).length === 1 && autosize.type ? autosize.type === 'pad' ? {} : {\n autosize: autosize.type\n } : {\n autosize\n }),\n ...extractTopLevelProperties(config, false),\n ...extractTopLevelProperties(inputSpec, true)\n };\n}\n/*\n * Assemble the top-level model to a Vega spec.\n *\n * Note: this couldn't be `model.assemble()` since the top-level model\n * needs some special treatment to generate top-level properties.\n */\nfunction assembleTopLevelModel(model, topLevelProperties) {\n let datasets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let usermeta = arguments.length > 3 ? arguments[3] : undefined;\n // Config with Vega-Lite only config removed.\n const vgConfig = model.config ? stripAndRedirectConfig(model.config) : undefined;\n const data = [].concat(model.assembleSelectionData([]),\n // only assemble data in the root\n assembleRootData(model.component.data, datasets));\n const projections = model.assembleProjections();\n const title = model.assembleTitle();\n const style = model.assembleGroupStyle();\n const encodeEntry = model.assembleGroupEncodeEntry(true);\n let layoutSignals = model.assembleLayoutSignals();\n // move width and height signals with values to top level\n layoutSignals = layoutSignals.filter(signal => {\n if ((signal.name === 'width' || signal.name === 'height') && signal.value !== undefined) {\n topLevelProperties[signal.name] = +signal.value;\n return false;\n }\n return true;\n });\n const {\n params,\n ...otherTopLevelProps\n } = topLevelProperties;\n return {\n $schema: 'https://vega.github.io/schema/vega/v5.json',\n ...(model.description ? {\n description: model.description\n } : {}),\n ...otherTopLevelProps,\n ...(title ? {\n title\n } : {}),\n ...(style ? {\n style\n } : {}),\n ...(encodeEntry ? {\n encode: {\n update: encodeEntry\n }\n } : {}),\n data,\n ...(projections.length > 0 ? {\n projections\n } : {}),\n ...model.assembleGroup([...layoutSignals, ...model.assembleSelectionTopLevelSignals([]), ...assembleParameterSignals(params)]),\n ...(vgConfig ? {\n config: vgConfig\n } : {}),\n ...(usermeta ? {\n usermeta\n } : {})\n };\n}\nconst version$2 = pkg$1.version;\nvar vegaLiteImport = /*#__PURE__*/Object.freeze({\n __proto__: null,\n accessPathDepth: accessPathDepth,\n accessPathWithDatum: accessPathWithDatum,\n compile: compile,\n contains: contains,\n deepEqual: deepEqual,\n deleteNestedProperty: deleteNestedProperty,\n duplicate: duplicate,\n entries: entries$1,\n every: every,\n fieldIntersection: fieldIntersection,\n flatAccessWithDatum: flatAccessWithDatum,\n getFirstDefined: getFirstDefined,\n hasIntersection: hasIntersection,\n hash: hash,\n internalField: internalField,\n isBoolean: isBoolean,\n isEmpty: isEmpty,\n isEqual: isEqual,\n isInternalField: isInternalField,\n isNullOrFalse: isNullOrFalse,\n isNumeric: isNumeric,\n keys: keys,\n logicalExpr: logicalExpr,\n mergeDeep: mergeDeep$1,\n never: never,\n normalize: normalize,\n normalizeAngle: normalizeAngle,\n omit: omit,\n pick: pick,\n prefixGenerator: prefixGenerator,\n removePathFromField: removePathFromField,\n replaceAll: replaceAll,\n replacePathInField: replacePathInField,\n resetIdCounter: resetIdCounter,\n setEqual: setEqual,\n some: some,\n stringify: stringify$1,\n titleCase: titleCase,\n unique: unique,\n uniqueId: uniqueId,\n vals: vals,\n varName: varName,\n version: version$2\n});\nfunction e(e) {\n const [n, r] = /schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g.exec(e).slice(1, 3);\n return {\n library: n,\n version: r\n };\n}\nvar name = \"vega-themes\";\nvar version$1 = \"2.14.0\";\nvar description = \"Themes for stylized Vega and Vega-Lite visualizations.\";\nvar keywords = [\"vega\", \"vega-lite\", \"themes\", \"style\"];\nvar license = \"BSD-3-Clause\";\nvar author = {\n name: \"UW Interactive Data Lab\",\n url: \"https://idl.cs.washington.edu\"\n};\nvar contributors = [{\n name: \"Emily Gu\",\n url: \"https://github.com/emilygu\"\n}, {\n name: \"Arvind Satyanarayan\",\n url: \"http://arvindsatya.com\"\n}, {\n name: \"Jeffrey Heer\",\n url: \"https://idl.cs.washington.edu\"\n}, {\n name: \"Dominik Moritz\",\n url: \"https://www.domoritz.de\"\n}];\nvar main = \"build/vega-themes.js\";\nvar module = \"build/vega-themes.module.js\";\nvar unpkg = \"build/vega-themes.min.js\";\nvar jsdelivr = \"build/vega-themes.min.js\";\nvar types = \"build/vega-themes.module.d.ts\";\nvar repository = {\n type: \"git\",\n url: \"https://github.com/vega/vega-themes.git\"\n};\nvar files = [\"src\", \"build\"];\nvar scripts = {\n prebuild: \"yarn clean\",\n build: \"rollup -c\",\n clean: \"rimraf build && rimraf examples/build\",\n \"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n \"copy:build\": \"rsync -r build/* examples/build\",\n \"deploy:gh\": \"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples\",\n preversion: \"yarn lint\",\n serve: \"browser-sync start -s -f build examples --serveStatic examples\",\n start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n format: \"eslint . --fix\",\n lint: \"eslint .\",\n release: \"release-it\"\n};\nvar devDependencies = {\n \"@babel/core\": \"^7.22.9\",\n \"@babel/plugin-proposal-async-generator-functions\": \"^7.20.7\",\n \"@babel/plugin-proposal-json-strings\": \"^7.18.6\",\n \"@babel/plugin-proposal-object-rest-spread\": \"^7.20.7\",\n \"@babel/plugin-proposal-optional-catch-binding\": \"^7.18.6\",\n \"@babel/plugin-transform-runtime\": \"^7.22.9\",\n \"@babel/preset-env\": \"^7.22.9\",\n \"@babel/preset-typescript\": \"^7.22.5\",\n \"@release-it/conventional-changelog\": \"^7.0.0\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n \"@rollup/plugin-terser\": \"^0.4.3\",\n \"@typescript-eslint/eslint-plugin\": \"^6.0.0\",\n \"@typescript-eslint/parser\": \"^6.0.0\",\n \"browser-sync\": \"^2.29.3\",\n concurrently: \"^8.2.0\",\n eslint: \"^8.45.0\",\n \"eslint-config-prettier\": \"^8.8.0\",\n \"eslint-plugin-prettier\": \"^5.0.0\",\n \"gh-pages\": \"^5.0.0\",\n prettier: \"^3.0.0\",\n \"release-it\": \"^16.1.0\",\n rollup: \"^3.26.2\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-ts\": \"^3.2.0\",\n typescript: \"^5.1.6\",\n vega: \"^5.25.0\",\n \"vega-lite\": \"^5.9.3\"\n};\nvar peerDependencies = {\n vega: \"*\",\n \"vega-lite\": \"*\"\n};\nvar dependencies = {};\nvar pkg = {\n name: name,\n version: version$1,\n description: description,\n keywords: keywords,\n license: license,\n author: author,\n contributors: contributors,\n main: main,\n module: module,\n unpkg: unpkg,\n jsdelivr: jsdelivr,\n types: types,\n repository: repository,\n files: files,\n scripts: scripts,\n devDependencies: devDependencies,\n peerDependencies: peerDependencies,\n dependencies: dependencies\n};\nconst lightColor = '#fff';\nconst medColor = '#888';\nconst darkTheme = {\n background: '#333',\n view: {\n stroke: medColor\n },\n title: {\n color: lightColor,\n subtitleColor: lightColor\n },\n style: {\n 'guide-label': {\n fill: lightColor\n },\n 'guide-title': {\n fill: lightColor\n }\n },\n axis: {\n domainColor: lightColor,\n gridColor: medColor,\n tickColor: lightColor\n }\n};\nconst markColor$7 = '#4572a7';\nconst excelTheme = {\n background: '#fff',\n arc: {\n fill: markColor$7\n },\n area: {\n fill: markColor$7\n },\n line: {\n stroke: markColor$7,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$7\n },\n rect: {\n fill: markColor$7\n },\n shape: {\n stroke: markColor$7\n },\n symbol: {\n fill: markColor$7,\n strokeWidth: 1.5,\n size: 50\n },\n axis: {\n bandPosition: 0.5,\n grid: true,\n gridColor: '#000000',\n gridOpacity: 1,\n gridWidth: 0.5,\n labelPadding: 10,\n tickSize: 5,\n tickWidth: 0.5\n },\n axisBand: {\n grid: false,\n tickExtra: true\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 50,\n symbolType: 'square'\n },\n range: {\n category: ['#4572a7', '#aa4643', '#8aa453', '#71598e', '#4598ae', '#d98445', '#94aace', '#d09393', '#b9cc98', '#a99cbc']\n }\n};\nconst markColor$6 = '#30a2da';\nconst axisColor$2 = '#cbcbcb';\nconst guideLabelColor = '#999';\nconst guideTitleColor = '#333';\nconst backgroundColor$2 = '#f0f0f0';\nconst blackTitle = '#333';\nconst fiveThirtyEightTheme = {\n arc: {\n fill: markColor$6\n },\n area: {\n fill: markColor$6\n },\n axis: {\n domainColor: axisColor$2,\n grid: true,\n gridColor: axisColor$2,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n titleColor: guideTitleColor,\n tickColor: axisColor$2,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n labelPadding: 4\n },\n axisBand: {\n grid: false\n },\n background: backgroundColor$2,\n group: {\n fill: backgroundColor$2\n },\n legend: {\n labelColor: blackTitle,\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n titleColor: blackTitle,\n titleFontSize: 14,\n titlePadding: 10\n },\n line: {\n stroke: markColor$6,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$6,\n strokeWidth: 0.5\n },\n rect: {\n fill: markColor$6\n },\n range: {\n category: ['#30a2da', '#fc4f30', '#e5ae38', '#6d904f', '#8b8b8b', '#b96db8', '#ff9e27', '#56cc60', '#52d2ca', '#52689e', '#545454', '#9fe4f8'],\n diverging: ['#cc0020', '#e77866', '#f6e7e1', '#d6e8ed', '#91bfd9', '#1d78b5'],\n heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5']\n },\n point: {\n filled: true,\n shape: 'circle'\n },\n shape: {\n stroke: markColor$6\n },\n bar: {\n binSpacing: 2,\n fill: markColor$6,\n stroke: null\n },\n title: {\n anchor: 'start',\n fontSize: 24,\n fontWeight: 600,\n offset: 20\n }\n};\nconst markColor$5 = '#000';\nconst ggplot2Theme = {\n group: {\n fill: '#e5e5e5'\n },\n arc: {\n fill: markColor$5\n },\n area: {\n fill: markColor$5\n },\n line: {\n stroke: markColor$5\n },\n path: {\n stroke: markColor$5\n },\n rect: {\n fill: markColor$5\n },\n shape: {\n stroke: markColor$5\n },\n symbol: {\n fill: markColor$5,\n size: 40\n },\n axis: {\n domain: false,\n grid: true,\n gridColor: '#FFFFFF',\n gridOpacity: 1,\n labelColor: '#7F7F7F',\n labelPadding: 4,\n tickColor: '#7F7F7F',\n tickSize: 5.67,\n titleFontSize: 16,\n titleFontWeight: 'normal'\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 40\n },\n range: {\n category: ['#000000', '#7F7F7F', '#1A1A1A', '#999999', '#333333', '#B0B0B0', '#4D4D4D', '#C9C9C9', '#666666', '#DCDCDC']\n }\n};\nconst headlineFontSize = 22;\nconst headlineFontWeight = 'normal';\nconst labelFont$1 = 'Benton Gothic, sans-serif';\nconst labelFontSize = 11.5;\nconst labelFontWeight = 'normal';\nconst markColor$4 = '#82c6df';\n// const markHighlight = '#006d8f';\n// const markDemocrat = '#5789b8';\n// const markRepublican = '#d94f54';\nconst titleFont = 'Benton Gothic Bold, sans-serif';\nconst titleFontWeight = 'normal';\nconst titleFontSize$1 = 13;\nconst colorSchemes$1 = {\n 'category-6': ['#ec8431', '#829eb1', '#c89d29', '#3580b1', '#adc839', '#ab7fb4'],\n 'fire-7': ['#fbf2c7', '#f9e39c', '#f8d36e', '#f4bb6a', '#e68a4f', '#d15a40', '#ab4232'],\n 'fireandice-6': ['#e68a4f', '#f4bb6a', '#f9e39c', '#dadfe2', '#a6b7c6', '#849eae'],\n 'ice-7': ['#edefee', '#dadfe2', '#c4ccd2', '#a6b7c6', '#849eae', '#607785', '#47525d']\n};\nconst latimesTheme = {\n background: '#ffffff',\n title: {\n anchor: 'start',\n color: '#000000',\n font: titleFont,\n fontSize: headlineFontSize,\n fontWeight: headlineFontWeight\n },\n arc: {\n fill: markColor$4\n },\n area: {\n fill: markColor$4\n },\n line: {\n stroke: markColor$4,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$4\n },\n rect: {\n fill: markColor$4\n },\n shape: {\n stroke: markColor$4\n },\n symbol: {\n fill: markColor$4,\n size: 30\n },\n axis: {\n labelFont: labelFont$1,\n labelFontSize,\n labelFontWeight,\n titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight\n },\n axisX: {\n labelAngle: 0,\n labelPadding: 4,\n tickSize: 3\n },\n axisY: {\n labelBaseline: 'middle',\n maxExtent: 45,\n minExtent: 45,\n tickSize: 2,\n titleAlign: 'left',\n titleAngle: 0,\n titleX: -45,\n titleY: -11\n },\n legend: {\n labelFont: labelFont$1,\n labelFontSize,\n symbolType: 'square',\n titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight\n },\n range: {\n category: colorSchemes$1['category-6'],\n diverging: colorSchemes$1['fireandice-6'],\n heatmap: colorSchemes$1['fire-7'],\n ordinal: colorSchemes$1['fire-7'],\n ramp: colorSchemes$1['fire-7']\n }\n};\nconst markColor$3 = '#ab5787';\nconst axisColor$1 = '#979797';\nconst quartzTheme = {\n background: '#f9f9f9',\n arc: {\n fill: markColor$3\n },\n area: {\n fill: markColor$3\n },\n line: {\n stroke: markColor$3\n },\n path: {\n stroke: markColor$3\n },\n rect: {\n fill: markColor$3\n },\n shape: {\n stroke: markColor$3\n },\n symbol: {\n fill: markColor$3,\n size: 30\n },\n axis: {\n domainColor: axisColor$1,\n domainWidth: 0.5,\n gridWidth: 0.2,\n labelColor: axisColor$1,\n tickColor: axisColor$1,\n tickWidth: 0.2,\n titleColor: axisColor$1\n },\n axisBand: {\n grid: false\n },\n axisX: {\n grid: true,\n tickSize: 10\n },\n axisY: {\n domain: false,\n grid: true,\n tickSize: 0\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square'\n },\n range: {\n category: ['#ab5787', '#51b2e5', '#703c5c', '#168dd9', '#d190b6', '#00609f', '#d365ba', '#154866', '#666666', '#c4c4c4']\n }\n};\nconst markColor$2 = '#3e5c69';\nconst voxTheme = {\n background: '#fff',\n arc: {\n fill: markColor$2\n },\n area: {\n fill: markColor$2\n },\n line: {\n stroke: markColor$2\n },\n path: {\n stroke: markColor$2\n },\n rect: {\n fill: markColor$2\n },\n shape: {\n stroke: markColor$2\n },\n symbol: {\n fill: markColor$2\n },\n axis: {\n domainWidth: 0.5,\n grid: true,\n labelPadding: 2,\n tickSize: 5,\n tickWidth: 0.5,\n titleFontWeight: 'normal'\n },\n axisBand: {\n grid: false\n },\n axisX: {\n gridWidth: 0.2\n },\n axisY: {\n gridDash: [3],\n gridWidth: 0.4\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolType: 'square'\n },\n range: {\n category: ['#3e5c69', '#6793a6', '#182429', '#0570b0', '#3690c0', '#74a9cf', '#a6bddb', '#e2ddf2']\n }\n};\nconst markColor$1 = '#1696d2';\nconst axisColor = '#000000';\nconst backgroundColor$1 = '#FFFFFF';\nconst font = 'Lato';\nconst labelFont = 'Lato';\nconst sourceFont = 'Lato';\nconst gridColor$1 = '#DEDDDD';\nconst titleFontSize = 18;\nconst colorSchemes = {\n 'main-colors': ['#1696d2', '#d2d2d2', '#000000', '#fdbf11', '#ec008b', '#55b748', '#5c5859', '#db2b27'],\n 'shades-blue': ['#CFE8F3', '#A2D4EC', '#73BFE2', '#46ABDB', '#1696D2', '#12719E', '#0A4C6A', '#062635'],\n 'shades-gray': ['#F5F5F5', '#ECECEC', '#E3E3E3', '#DCDBDB', '#D2D2D2', '#9D9D9D', '#696969', '#353535'],\n 'shades-yellow': ['#FFF2CF', '#FCE39E', '#FDD870', '#FCCB41', '#FDBF11', '#E88E2D', '#CA5800', '#843215'],\n 'shades-magenta': ['#F5CBDF', '#EB99C2', '#E46AA7', '#E54096', '#EC008B', '#AF1F6B', '#761548', '#351123'],\n 'shades-green': ['#DCEDD9', '#BCDEB4', '#98CF90', '#78C26D', '#55B748', '#408941', '#2C5C2D', '#1A2E19'],\n 'shades-black': ['#D5D5D4', '#ADABAC', '#848081', '#5C5859', '#332D2F', '#262223', '#1A1717', '#0E0C0D'],\n 'shades-red': ['#F8D5D4', '#F1AAA9', '#E9807D', '#E25552', '#DB2B27', '#A4201D', '#6E1614', '#370B0A'],\n 'one-group': ['#1696d2', '#000000'],\n 'two-groups-cat-1': ['#1696d2', '#000000'],\n 'two-groups-cat-2': ['#1696d2', '#fdbf11'],\n 'two-groups-cat-3': ['#1696d2', '#db2b27'],\n 'two-groups-seq': ['#a2d4ec', '#1696d2'],\n 'three-groups-cat': ['#1696d2', '#fdbf11', '#000000'],\n 'three-groups-seq': ['#a2d4ec', '#1696d2', '#0a4c6a'],\n 'four-groups-cat-1': ['#000000', '#d2d2d2', '#fdbf11', '#1696d2'],\n 'four-groups-cat-2': ['#1696d2', '#ec0008b', '#fdbf11', '#5c5859'],\n 'four-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a'],\n 'five-groups-cat-1': ['#1696d2', '#fdbf11', '#d2d2d2', '#ec008b', '#000000'],\n 'five-groups-cat-2': ['#1696d2', '#0a4c6a', '#d2d2d2', '#fdbf11', '#332d2f'],\n 'five-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a', '#000000'],\n 'six-groups-cat-1': ['#1696d2', '#ec008b', '#fdbf11', '#000000', '#d2d2d2', '#55b748'],\n 'six-groups-cat-2': ['#1696d2', '#d2d2d2', '#ec008b', '#fdbf11', '#332d2f', '#0a4c6a'],\n 'six-groups-seq': ['#cfe8f3', '#a2d4ec', '#73bfe2', '#46abdb', '#1696d2', '#12719e'],\n 'diverging-colors': ['#ca5800', '#fdbf11', '#fdd870', '#fff2cf', '#cfe8f3', '#73bfe2', '#1696d2', '#0a4c6a']\n};\nconst urbanInstituteTheme = {\n background: backgroundColor$1,\n title: {\n anchor: 'start',\n fontSize: titleFontSize,\n font: font\n },\n axisX: {\n domain: true,\n domainColor: axisColor,\n domainWidth: 1,\n grid: false,\n labelFontSize: 12,\n labelFont: labelFont,\n labelAngle: 0,\n tickColor: axisColor,\n tickSize: 5,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font\n },\n axisY: {\n domain: false,\n domainWidth: 1,\n grid: true,\n gridColor: gridColor$1,\n gridWidth: 1,\n labelFontSize: 12,\n labelFont: labelFont,\n labelPadding: 8,\n ticks: false,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n titleAngle: 0,\n titleY: -10,\n titleX: 18\n },\n legend: {\n labelFontSize: 12,\n labelFont: labelFont,\n symbolSize: 100,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n orient: 'right',\n offset: 10\n },\n view: {\n stroke: 'transparent'\n },\n range: {\n category: colorSchemes['six-groups-cat-1'],\n diverging: colorSchemes['diverging-colors'],\n heatmap: colorSchemes['diverging-colors'],\n ordinal: colorSchemes['six-groups-seq'],\n ramp: colorSchemes['shades-blue']\n },\n area: {\n fill: markColor$1\n },\n rect: {\n fill: markColor$1\n },\n line: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 5\n },\n trail: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 0,\n size: 1\n },\n path: {\n stroke: markColor$1,\n strokeWidth: 0.5\n },\n point: {\n filled: true\n },\n text: {\n font: sourceFont,\n color: markColor$1,\n fontSize: 11,\n align: 'center',\n fontWeight: 400,\n size: 11\n },\n style: {\n bar: {\n fill: markColor$1,\n stroke: null\n }\n },\n arc: {\n fill: markColor$1\n },\n shape: {\n stroke: markColor$1\n },\n symbol: {\n fill: markColor$1,\n size: 30\n }\n};\n\n/**\n * Copyright 2020 Google LLC.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file or at\n * https://developers.google.com/open-source/licenses/bsd\n */\n\nconst markColor = '#3366CC';\nconst gridColor = '#ccc';\nconst defaultFont$1 = 'Arial, sans-serif';\nconst googlechartsTheme = {\n arc: {\n fill: markColor\n },\n area: {\n fill: markColor\n },\n path: {\n stroke: markColor\n },\n rect: {\n fill: markColor\n },\n shape: {\n stroke: markColor\n },\n symbol: {\n stroke: markColor\n },\n circle: {\n fill: markColor\n },\n background: '#fff',\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n style: {\n 'guide-label': {\n font: defaultFont$1,\n fontSize: 12\n },\n 'guide-title': {\n font: defaultFont$1,\n fontSize: 12\n },\n 'group-title': {\n font: defaultFont$1,\n fontSize: 12\n }\n },\n title: {\n font: defaultFont$1,\n fontSize: 14,\n fontWeight: 'bold',\n dy: -3,\n anchor: 'start'\n },\n axis: {\n gridColor: gridColor,\n tickColor: gridColor,\n domain: false,\n grid: true\n },\n range: {\n category: ['#4285F4', '#DB4437', '#F4B400', '#0F9D58', '#AB47BC', '#00ACC1', '#FF7043', '#9E9D24', '#5C6BC0', '#F06292', '#00796B', '#C2185B'],\n heatmap: ['#c6dafc', '#5e97f6', '#2a56c6']\n }\n};\nconst ptToPx = value => value * (1 / 3 + 1);\nconst fontSmallPx = ptToPx(9);\nconst legendFontPx = ptToPx(10);\nconst fontLargePx = ptToPx(12);\nconst fontStandard = 'Segoe UI';\nconst fontTitle = 'wf_standard-font, helvetica, arial, sans-serif';\nconst firstLevelElementColor = '#252423';\nconst secondLevelElementColor = '#605E5C';\nconst backgroundColor = 'transparent';\nconst backgroundSecondaryColor = '#C8C6C4';\nconst paletteColor1 = '#118DFF';\nconst paletteColor2 = '#12239E';\nconst paletteColor3 = '#E66C37';\nconst paletteColor4 = '#6B007B';\nconst paletteColor5 = '#E044A7';\nconst paletteColor6 = '#744EC2';\nconst paletteColor7 = '#D9B300';\nconst paletteColor8 = '#D64550';\nconst divergentColorMax = paletteColor1;\nconst divergentColorMin = '#DEEFFF';\nconst divergentPalette = [divergentColorMin, divergentColorMax];\nconst ordinalPalette = [divergentColorMin, '#c7e4ff', '#b0d9ff', '#9aceff', '#83c3ff', '#6cb9ff', '#55aeff', '#3fa3ff', '#2898ff', divergentColorMax];\nconst powerbiTheme = {\n view: {\n stroke: backgroundColor\n },\n background: backgroundColor,\n font: fontStandard,\n header: {\n titleFont: fontTitle,\n titleFontSize: fontLargePx,\n titleColor: firstLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor\n },\n axis: {\n ticks: false,\n grid: false,\n domain: false,\n labelColor: secondLevelElementColor,\n labelFontSize: fontSmallPx,\n titleFont: fontTitle,\n titleColor: firstLevelElementColor,\n titleFontSize: fontLargePx,\n titleFontWeight: 'normal'\n },\n axisQuantitative: {\n tickCount: 3,\n grid: true,\n gridColor: backgroundSecondaryColor,\n gridDash: [1, 5],\n labelFlush: false\n },\n axisBand: {\n tickExtra: true\n },\n axisX: {\n labelPadding: 5\n },\n axisY: {\n labelPadding: 10\n },\n bar: {\n fill: paletteColor1\n },\n line: {\n stroke: paletteColor1,\n strokeWidth: 3,\n strokeCap: 'round',\n strokeJoin: 'round'\n },\n text: {\n font: fontStandard,\n fontSize: fontSmallPx,\n fill: secondLevelElementColor\n },\n arc: {\n fill: paletteColor1\n },\n area: {\n fill: paletteColor1,\n line: true,\n opacity: 0.6\n },\n path: {\n stroke: paletteColor1\n },\n rect: {\n fill: paletteColor1\n },\n point: {\n fill: paletteColor1,\n filled: true,\n size: 75\n },\n shape: {\n stroke: paletteColor1\n },\n symbol: {\n fill: paletteColor1,\n strokeWidth: 1.5,\n size: 50\n },\n legend: {\n titleFont: fontStandard,\n titleFontWeight: 'bold',\n titleColor: secondLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor,\n symbolType: 'circle',\n symbolSize: 75\n },\n range: {\n category: [paletteColor1, paletteColor2, paletteColor3, paletteColor4, paletteColor5, paletteColor6, paletteColor7, paletteColor8],\n diverging: divergentPalette,\n heatmap: divergentPalette,\n ordinal: ordinalPalette\n }\n};\nconst defaultFont = 'IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,\".sfnstext-regular\",sans-serif';\nconst fontWeight = 400;\nconst darkCategories = ['#8a3ffc', '#33b1ff', '#007d79', '#ff7eb6', '#fa4d56', '#fff1f1', '#6fdc8c', '#4589ff', '#d12771', '#d2a106', '#08bdba', '#bae6ff', '#ba4e00', '#d4bbff'];\nconst lightCategories = ['#6929c4', '#1192e8', '#005d5d', '#9f1853', '#fa4d56', '#570408', '#198038', '#002d9c', '#ee538b', '#b28600', '#009d9a', '#012749', '#8a3800', '#a56eff'];\nfunction genCarbonConfig(_ref103) {\n let {\n type,\n background\n } = _ref103;\n const viewbg = type === 'dark' ? '#161616' : '#ffffff';\n const textColor = type === 'dark' ? '#f4f4f4' : '#161616';\n const category = type === 'dark' ? darkCategories : lightCategories;\n const markColor = type === 'dark' ? '#d4bbff' : '#6929c4';\n return {\n background,\n arc: {\n fill: markColor\n },\n area: {\n fill: markColor\n },\n path: {\n stroke: markColor\n },\n rect: {\n fill: markColor\n },\n shape: {\n stroke: markColor\n },\n symbol: {\n stroke: markColor\n },\n circle: {\n fill: markColor\n },\n view: {\n fill: viewbg,\n stroke: viewbg\n },\n group: {\n fill: viewbg\n },\n title: {\n color: textColor,\n anchor: 'start',\n dy: -15,\n fontSize: 16,\n font: defaultFont,\n fontWeight: 600\n },\n axis: {\n labelColor: textColor,\n labelFontSize: 12,\n grid: true,\n gridColor: '#525252',\n titleColor: textColor,\n labelAngle: 0\n },\n style: {\n 'guide-label': {\n font: defaultFont,\n fill: textColor,\n fontWeight: fontWeight\n },\n 'guide-title': {\n font: defaultFont,\n fill: textColor,\n fontWeight: fontWeight\n }\n },\n range: {\n category,\n diverging: ['#750e13', '#a2191f', '#da1e28', '#fa4d56', '#ff8389', '#ffb3b8', '#ffd7d9', '#fff1f1', '#e5f6ff', '#bae6ff', '#82cfff', '#33b1ff', '#1192e8', '#0072c3', '#00539a', '#003a6d'],\n heatmap: ['#f6f2ff', '#e8daff', '#d4bbff', '#be95ff', '#a56eff', '#8a3ffc', '#6929c4', '#491d8b', '#31135e', '#1c0f30']\n }\n };\n}\nconst carbonwhite = genCarbonConfig({\n type: 'light',\n background: '#ffffff'\n});\nconst carbong10 = genCarbonConfig({\n type: 'light',\n background: '#f4f4f4'\n});\nconst carbong90 = genCarbonConfig({\n type: 'dark',\n background: '#262626'\n});\nconst carbong100 = genCarbonConfig({\n type: 'dark',\n background: '#161616'\n});\nconst version = pkg.version;\nvar themes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n carbong10: carbong10,\n carbong100: carbong100,\n carbong90: carbong90,\n carbonwhite: carbonwhite,\n dark: darkTheme,\n excel: excelTheme,\n fivethirtyeight: fiveThirtyEightTheme,\n ggplot2: ggplot2Theme,\n googlecharts: googlechartsTheme,\n latimes: latimesTheme,\n powerbi: powerbiTheme,\n quartz: quartzTheme,\n urbaninstitute: urbanInstituteTheme,\n version: version,\n vox: voxTheme\n});\nfunction _typeof$1(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof$1(obj);\n}\nfunction _toPrimitive$1(input, hint) {\n if (_typeof$1(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof$1(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey$1(arg) {\n var key = _toPrimitive$1(arg, \"string\");\n return _typeof$1(key) === \"symbol\" ? key : String(key);\n}\nfunction _defineProperty$3(obj, key, value) {\n key = _toPropertyKey$1(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nconst _excluded$1 = [\"title\", \"image\"];\n\n/**\n * Format the value to be shown in the tooltip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nfunction formatValue(value, valueToHtml, maxDepth) {\n if (isArray(value)) {\n return \"[\".concat(value.map(v => valueToHtml(isString(v) ? v : stringify(v, maxDepth))).join(', '), \"]\");\n }\n if (isObject(value)) {\n let content = '';\n const _ref = value,\n {\n title,\n image\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded$1);\n if (title) {\n content += \"

\".concat(valueToHtml(title), \"

\");\n }\n if (image) {\n content += \"\");\n }\n const keys = Object.keys(rest);\n if (keys.length > 0) {\n content += '';\n for (const key of keys) {\n let val = rest[key];\n\n // ignore undefined properties\n if (val === undefined) {\n continue;\n }\n if (isObject(val)) {\n val = stringify(val, maxDepth);\n }\n content += \"\");\n }\n content += \"
\".concat(valueToHtml(key), \":\").concat(valueToHtml(val), \"
\";\n }\n return content || '{}'; // show empty object if there are no properties\n }\n\n return valueToHtml(value);\n}\nfunction replacer(maxDepth) {\n const stack = [];\n return function (key, value) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n const pos = stack.indexOf(this) + 1;\n stack.length = pos;\n if (stack.length > maxDepth) {\n return '[Object]';\n }\n if (stack.indexOf(value) >= 0) {\n return '[Circular]';\n }\n stack.push(value);\n return value;\n };\n}\n\n/**\n * Stringify any JS object to valid JSON\n */\nfunction stringify(obj, maxDepth) {\n return JSON.stringify(obj, replacer(maxDepth));\n}\n\n// generated with build-style.sh\nvar defaultStyle = \"#vg-tooltip-element {\\n visibility: hidden;\\n padding: 8px;\\n position: fixed;\\n z-index: 1000;\\n font-family: sans-serif;\\n font-size: 11px;\\n border-radius: 3px;\\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\\n /* The default theme is the light theme. */\\n background-color: rgba(255, 255, 255, 0.95);\\n border: 1px solid #d9d9d9;\\n color: black;\\n}\\n#vg-tooltip-element.visible {\\n visibility: visible;\\n}\\n#vg-tooltip-element h2 {\\n margin-top: 0;\\n margin-bottom: 10px;\\n font-size: 13px;\\n}\\n#vg-tooltip-element table {\\n border-spacing: 0;\\n}\\n#vg-tooltip-element table tr {\\n border: none;\\n}\\n#vg-tooltip-element table tr td {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-top: 2px;\\n padding-bottom: 2px;\\n}\\n#vg-tooltip-element table tr td.key {\\n color: #808080;\\n max-width: 150px;\\n text-align: right;\\n padding-right: 4px;\\n}\\n#vg-tooltip-element table tr td.value {\\n display: block;\\n max-width: 300px;\\n max-height: 7em;\\n text-align: left;\\n}\\n#vg-tooltip-element.dark-theme {\\n background-color: rgba(32, 32, 32, 0.9);\\n border: 1px solid #f5f5f5;\\n color: white;\\n}\\n#vg-tooltip-element.dark-theme td.key {\\n color: #bfbfbf;\\n}\\n\";\nconst EL_ID = 'vg-tooltip-element';\nconst DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n /**\n * Y offset.\n */\n offsetY: 10,\n /**\n * ID of the tooltip element.\n */\n id: EL_ID,\n /**\n * ID of the tooltip CSS style.\n */\n styleId: 'vega-tooltip-style',\n /**\n * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n *\n * There are two predefined themes: \"light\" (default) and \"dark\".\n */\n theme: 'light',\n /**\n * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n */\n disableDefaultStyle: false,\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML,\n /**\n * The maximum recursion depth when printing objects in the tooltip.\n */\n maxDepth: 2,\n /**\n * A function to customize the rendered HTML of the tooltip.\n * @param value A value string, or object of value strings keyed by field\n * @param sanitize The `sanitize` function from `options.sanitize`\n * @returns {string} The returned string will become the `innerHTML` of the tooltip element\n */\n formatTooltip: formatValue\n};\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nfunction escapeHTML(value) {\n return String(value).replace(/&/g, '&').replace(/ window.innerWidth) {\n x = +event.clientX - offsetX - tooltipBox.width;\n }\n let y = event.clientY + offsetY;\n if (y + tooltipBox.height > window.innerHeight) {\n y = +event.clientY - offsetY - tooltipBox.height;\n }\n return {\n x,\n y\n };\n}\nfunction ownKeys$2(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) {\n _defineProperty$3(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\n\n/**\n * The tooltip handler class.\n */\nclass Handler {\n /**\n * The handler function. We bind this to this function in the constructor.\n */\n\n /**\n * Complete tooltip options.\n */\n\n /**\n * The tooltip html element.\n */\n\n /**\n * Create the tooltip handler and initialize the element and style.\n *\n * @param options Tooltip Options\n */\n constructor(options) {\n this.options = _objectSpread$2(_objectSpread$2({}, DEFAULT_OPTIONS), options);\n const elementId = this.options.id;\n this.el = null;\n\n // bind this to call\n this.call = this.tooltipHandler.bind(this);\n\n // prepend a default stylesheet for tooltips to the head\n if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n const style = document.createElement('style');\n style.setAttribute('id', this.options.styleId);\n style.innerHTML = createDefaultStyle(elementId);\n const head = document.head;\n if (head.childNodes.length > 0) {\n head.insertBefore(style, head.childNodes[0]);\n } else {\n head.appendChild(style);\n }\n }\n }\n\n /**\n * The tooltip handler function.\n */\n tooltipHandler(handler, event, item, value) {\n // console.log(handler, event, item, value);\n\n // append a div element that we use as a tooltip unless it already exists\n this.el = document.getElementById(this.options.id);\n if (!this.el) {\n var _document$fullscreenE;\n this.el = document.createElement('div');\n this.el.setAttribute('id', this.options.id);\n this.el.classList.add('vg-tooltip');\n const tooltipContainer = (_document$fullscreenE = document.fullscreenElement) !== null && _document$fullscreenE !== void 0 ? _document$fullscreenE : document.body;\n tooltipContainer.appendChild(this.el);\n }\n\n // hide tooltip for null, undefined, or empty string values\n if (value == null || value === '') {\n this.el.classList.remove('visible', \"\".concat(this.options.theme, \"-theme\"));\n return;\n }\n\n // set the tooltip content\n this.el.innerHTML = this.options.formatTooltip(value, this.options.sanitize, this.options.maxDepth);\n\n // make the tooltip visible\n this.el.classList.add('visible', \"\".concat(this.options.theme, \"-theme\"));\n const {\n x,\n y\n } = calculatePosition(event, this.el.getBoundingClientRect(), this.options.offsetX, this.options.offsetY);\n this.el.style.top = \"\".concat(y, \"px\");\n this.el.style.left = \"\".concat(x, \"px\");\n }\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nfunction _defineProperty$2(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar iterator;\nvar hasRequiredIterator;\nfunction requireIterator() {\n if (hasRequiredIterator) return iterator;\n hasRequiredIterator = 1;\n iterator = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value;\n }\n };\n };\n return iterator;\n}\nvar yallist = Yallist$1;\nYallist$1.Node = Node;\nYallist$1.create = Yallist$1;\nfunction Yallist$1(list) {\n var self = this;\n if (!(self instanceof Yallist$1)) {\n self = new Yallist$1();\n }\n self.tail = null;\n self.head = null;\n self.length = 0;\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item);\n });\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i]);\n }\n }\n return self;\n}\nYallist$1.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list');\n }\n var next = node.next;\n var prev = node.prev;\n if (next) {\n next.prev = prev;\n }\n if (prev) {\n prev.next = next;\n }\n if (node === this.head) {\n this.head = next;\n }\n if (node === this.tail) {\n this.tail = prev;\n }\n node.list.length--;\n node.next = null;\n node.prev = null;\n node.list = null;\n return next;\n};\nYallist$1.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return;\n }\n if (node.list) {\n node.list.removeNode(node);\n }\n var head = this.head;\n node.list = this;\n node.next = head;\n if (head) {\n head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.length++;\n};\nYallist$1.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return;\n }\n if (node.list) {\n node.list.removeNode(node);\n }\n var tail = this.tail;\n node.list = this;\n node.prev = tail;\n if (tail) {\n tail.next = node;\n }\n this.tail = node;\n if (!this.head) {\n this.head = node;\n }\n this.length++;\n};\nYallist$1.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i]);\n }\n return this.length;\n};\nYallist$1.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i]);\n }\n return this.length;\n};\nYallist$1.prototype.pop = function () {\n if (!this.tail) {\n return undefined;\n }\n var res = this.tail.value;\n this.tail = this.tail.prev;\n if (this.tail) {\n this.tail.next = null;\n } else {\n this.head = null;\n }\n this.length--;\n return res;\n};\nYallist$1.prototype.shift = function () {\n if (!this.head) {\n return undefined;\n }\n var res = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return res;\n};\nYallist$1.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this;\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.next;\n }\n};\nYallist$1.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this;\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.prev;\n }\n};\nYallist$1.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next;\n }\n if (i === n && walker !== null) {\n return walker.value;\n }\n};\nYallist$1.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev;\n }\n if (i === n && walker !== null) {\n return walker.value;\n }\n};\nYallist$1.prototype.map = function (fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist$1();\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.next;\n }\n return res;\n};\nYallist$1.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist$1();\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.prev;\n }\n return res;\n};\nYallist$1.prototype.reduce = function (fn, initial) {\n var acc;\n var walker = this.head;\n if (arguments.length > 1) {\n acc = initial;\n } else if (this.head) {\n walker = this.head.next;\n acc = this.head.value;\n } else {\n throw new TypeError('Reduce of empty list with no initial value');\n }\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i);\n walker = walker.next;\n }\n return acc;\n};\nYallist$1.prototype.reduceReverse = function (fn, initial) {\n var acc;\n var walker = this.tail;\n if (arguments.length > 1) {\n acc = initial;\n } else if (this.tail) {\n walker = this.tail.prev;\n acc = this.tail.value;\n } else {\n throw new TypeError('Reduce of empty list with no initial value');\n }\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i);\n walker = walker.prev;\n }\n return acc;\n};\nYallist$1.prototype.toArray = function () {\n var arr = new Array(this.length);\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value;\n walker = walker.next;\n }\n return arr;\n};\nYallist$1.prototype.toArrayReverse = function () {\n var arr = new Array(this.length);\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value;\n walker = walker.prev;\n }\n return arr;\n};\nYallist$1.prototype.slice = function (from, to) {\n to = to || this.length;\n if (to < 0) {\n to += this.length;\n }\n from = from || 0;\n if (from < 0) {\n from += this.length;\n }\n var ret = new Yallist$1();\n if (to < from || to < 0) {\n return ret;\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next;\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value);\n }\n return ret;\n};\nYallist$1.prototype.sliceReverse = function (from, to) {\n to = to || this.length;\n if (to < 0) {\n to += this.length;\n }\n from = from || 0;\n if (from < 0) {\n from += this.length;\n }\n var ret = new Yallist$1();\n if (to < from || to < 0) {\n return ret;\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev;\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value);\n }\n return ret;\n};\nYallist$1.prototype.splice = function (start, deleteCount) {\n if (start > this.length) {\n start = this.length - 1;\n }\n if (start < 0) {\n start = this.length + start;\n }\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next;\n }\n var ret = [];\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value);\n walker = this.removeNode(walker);\n }\n if (walker === null) {\n walker = this.tail;\n }\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev;\n }\n for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {\n walker = insert(this, walker, i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2]);\n }\n return ret;\n};\nYallist$1.prototype.reverse = function () {\n var head = this.head;\n var tail = this.tail;\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev;\n walker.prev = walker.next;\n walker.next = p;\n }\n this.head = tail;\n this.tail = head;\n return this;\n};\nfunction insert(self, node, value) {\n var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);\n if (inserted.next === null) {\n self.tail = inserted;\n }\n if (inserted.prev === null) {\n self.head = inserted;\n }\n self.length++;\n return inserted;\n}\nfunction push(self, item) {\n self.tail = new Node(item, self.tail, null, self);\n if (!self.head) {\n self.head = self.tail;\n }\n self.length++;\n}\nfunction unshift(self, item) {\n self.head = new Node(item, null, self.head, self);\n if (!self.tail) {\n self.tail = self.head;\n }\n self.length++;\n}\nfunction Node(value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list);\n }\n this.list = list;\n this.value = value;\n if (prev) {\n prev.next = this;\n this.prev = prev;\n } else {\n this.prev = null;\n }\n if (next) {\n next.prev = this;\n this.next = next;\n } else {\n this.next = null;\n }\n}\ntry {\n // add if support for Symbol.iterator is present\n requireIterator()(Yallist$1);\n} catch (er) {}\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = yallist;\nconst MAX = Symbol('max');\nconst LENGTH = Symbol('length');\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator');\nconst ALLOW_STALE = Symbol('allowStale');\nconst MAX_AGE = Symbol('maxAge');\nconst DISPOSE = Symbol('dispose');\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');\nconst LRU_LIST = Symbol('lruList');\nconst CACHE = Symbol('cache');\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');\nconst naiveLength = () => 1;\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor(options) {\n if (typeof options === 'number') options = {\n max: options\n };\n if (!options) options = {};\n if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');\n // Kind of weird to have a default max of Infinity, but oh well.\n this[MAX] = options.max || Infinity;\n const lc = options.length || naiveLength;\n this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;\n this[ALLOW_STALE] = options.stale || false;\n if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');\n this[MAX_AGE] = options.maxAge || 0;\n this[DISPOSE] = options.dispose;\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;\n this.reset();\n }\n\n // resize the cache when the max changes.\n set max(mL) {\n if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');\n this[MAX] = mL || Infinity;\n trim(this);\n }\n get max() {\n return this[MAX];\n }\n set allowStale(allowStale) {\n this[ALLOW_STALE] = !!allowStale;\n }\n get allowStale() {\n return this[ALLOW_STALE];\n }\n set maxAge(mA) {\n if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');\n this[MAX_AGE] = mA;\n trim(this);\n }\n get maxAge() {\n return this[MAX_AGE];\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator(lC) {\n if (typeof lC !== 'function') lC = naiveLength;\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC;\n this[LENGTH] = 0;\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);\n this[LENGTH] += hit.length;\n });\n }\n trim(this);\n }\n get lengthCalculator() {\n return this[LENGTH_CALCULATOR];\n }\n get length() {\n return this[LENGTH];\n }\n get itemCount() {\n return this[LRU_LIST].length;\n }\n rforEach(fn, thisp) {\n thisp = thisp || this;\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev;\n forEachStep(this, fn, walker, thisp);\n walker = prev;\n }\n }\n forEach(fn, thisp) {\n thisp = thisp || this;\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next;\n forEachStep(this, fn, walker, thisp);\n walker = next;\n }\n }\n keys() {\n return this[LRU_LIST].toArray().map(k => k.key);\n }\n values() {\n return this[LRU_LIST].toArray().map(k => k.value);\n }\n reset() {\n if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value));\n }\n this[CACHE] = new Map(); // hash of items by key\n this[LRU_LIST] = new Yallist(); // list of items in order of use recency\n this[LENGTH] = 0; // length of items in the list\n }\n\n dump() {\n return this[LRU_LIST].map(hit => isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h);\n }\n dumpLru() {\n return this[LRU_LIST];\n }\n set(key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE];\n if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');\n const now = maxAge ? Date.now() : 0;\n const len = this[LENGTH_CALCULATOR](value, key);\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key));\n return false;\n }\n const node = this[CACHE].get(key);\n const item = node.value;\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);\n }\n item.now = now;\n item.maxAge = maxAge;\n item.value = value;\n this[LENGTH] += len - item.length;\n item.length = len;\n this.get(key);\n trim(this);\n return true;\n }\n const hit = new Entry(key, value, len, now, maxAge);\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE]) this[DISPOSE](key, value);\n return false;\n }\n this[LENGTH] += hit.length;\n this[LRU_LIST].unshift(hit);\n this[CACHE].set(key, this[LRU_LIST].head);\n trim(this);\n return true;\n }\n has(key) {\n if (!this[CACHE].has(key)) return false;\n const hit = this[CACHE].get(key).value;\n return !isStale(this, hit);\n }\n get(key) {\n return get(this, key, true);\n }\n peek(key) {\n return get(this, key, false);\n }\n pop() {\n const node = this[LRU_LIST].tail;\n if (!node) return null;\n del(this, node);\n return node.value;\n }\n del(key) {\n del(this, this[CACHE].get(key));\n }\n load(arr) {\n // reset the cache\n this.reset();\n const now = Date.now();\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l];\n const expiresAt = hit.e || 0;\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v);else {\n const maxAge = expiresAt - now;\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge);\n }\n }\n }\n }\n prune() {\n this[CACHE].forEach((value, key) => get(this, key, false));\n }\n}\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key);\n if (node) {\n const hit = node.value;\n if (isStale(self, hit)) {\n del(self, node);\n if (!self[ALLOW_STALE]) return undefined;\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();\n self[LRU_LIST].unshiftNode(node);\n }\n }\n return hit.value;\n }\n};\nconst isStale = (self, hit) => {\n if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;\n const diff = Date.now() - hit.now;\n return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];\n};\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev;\n del(self, walker);\n walker = prev;\n }\n }\n};\nconst del = (self, node) => {\n if (node) {\n const hit = node.value;\n if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);\n self[LENGTH] -= hit.length;\n self[CACHE].delete(hit.key);\n self[LRU_LIST].removeNode(node);\n }\n};\nclass Entry {\n constructor(key, value, length, now, maxAge) {\n this.key = key;\n this.value = value;\n this.length = length;\n this.now = now;\n this.maxAge = maxAge || 0;\n }\n}\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value;\n if (isStale(self, hit)) {\n del(self, node);\n if (!self[ALLOW_STALE]) hit = undefined;\n }\n if (hit) fn.call(thisp, hit.value, hit.key, self);\n};\nvar lruCache = LRUCache;\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({\n loose: true\n});\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = options => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== 'object') {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nvar re$1 = {\n exports: {}\n};\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0';\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */9007199254740991;\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010\n};\nconst debug$1 = typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? function () {\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n return console.error('SEMVER', ...args);\n} : () => {};\nvar debug_1 = debug$1;\n(function (module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = constants;\n const debug = debug_1;\n exports = module.exports = {};\n\n // The actual regexps go on exports.re\n const re = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = '[a-zA-Z0-9-]';\n\n // Replace some greedy regex tokens to prevent regex dos issues. These regex are\n // used internally via the safeRe object since all inputs in this library get\n // normalized first to trim and collapse all extra whitespace. The original\n // regexes are exported for userland consumption and lower level usage. A\n // future breaking change could export the safer regex only with a note that\n // all input should have extra whitespace removed.\n const safeRegexReplacements = [['\\\\s', 1], ['\\\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]];\n const makeSafeRegex = value => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(\"\".concat(token, \"*\")).join(\"\".concat(token, \"{0,\").concat(max, \"}\")).split(\"\".concat(token, \"+\")).join(\"\".concat(token, \"{1,\").concat(max, \"}\"));\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t[name] = index;\n src[index] = value;\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined);\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined);\n };\n\n // The following Regular Expressions can be used for tokenizing,\n // validating, and parsing SemVer version strings.\n\n // ## Numeric Identifier\n // A single `0`, or a non-zero digit followed by zero or more digits.\n\n createToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*');\n createToken('NUMERICIDENTIFIERLOOSE', '\\\\d+');\n\n // ## Non-numeric Identifier\n // Zero or more digits, followed by a letter or hyphen, and then zero or\n // more letters, digits, or hyphens.\n\n createToken('NONNUMERICIDENTIFIER', \"\\\\d*[a-zA-Z-]\".concat(LETTERDASHNUMBER, \"*\"));\n\n // ## Main Version\n // Three dot-separated numeric identifiers.\n\n createToken('MAINVERSION', \"(\".concat(src[t.NUMERICIDENTIFIER], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIER], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIER], \")\"));\n createToken('MAINVERSIONLOOSE', \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\\\\.\") + \"(\".concat(src[t.NUMERICIDENTIFIERLOOSE], \")\"));\n\n // ## Pre-release Version Identifier\n // A numeric identifier, or a non-numeric identifier.\n\n createToken('PRERELEASEIDENTIFIER', \"(?:\".concat(src[t.NUMERICIDENTIFIER], \"|\").concat(src[t.NONNUMERICIDENTIFIER], \")\"));\n createToken('PRERELEASEIDENTIFIERLOOSE', \"(?:\".concat(src[t.NUMERICIDENTIFIERLOOSE], \"|\").concat(src[t.NONNUMERICIDENTIFIER], \")\"));\n\n // ## Pre-release Version\n // Hyphen, followed by one or more dot-separated pre-release version\n // identifiers.\n\n createToken('PRERELEASE', \"(?:-(\".concat(src[t.PRERELEASEIDENTIFIER], \"(?:\\\\.\").concat(src[t.PRERELEASEIDENTIFIER], \")*))\"));\n createToken('PRERELEASELOOSE', \"(?:-?(\".concat(src[t.PRERELEASEIDENTIFIERLOOSE], \"(?:\\\\.\").concat(src[t.PRERELEASEIDENTIFIERLOOSE], \")*))\"));\n\n // ## Build Metadata Identifier\n // Any combination of digits, letters, or hyphens.\n\n createToken('BUILDIDENTIFIER', \"\".concat(LETTERDASHNUMBER, \"+\"));\n\n // ## Build Metadata\n // Plus sign, followed by one or more period-separated build metadata\n // identifiers.\n\n createToken('BUILD', \"(?:\\\\+(\".concat(src[t.BUILDIDENTIFIER], \"(?:\\\\.\").concat(src[t.BUILDIDENTIFIER], \")*))\"));\n\n // ## Full Version String\n // A main version, followed optionally by a pre-release version and\n // build metadata.\n\n // Note that the only major, minor, patch, and pre-release sections of\n // the version string are capturing groups. The build metadata is not a\n // capturing group, because it should not ever be used in version\n // comparison.\n\n createToken('FULLPLAIN', \"v?\".concat(src[t.MAINVERSION]).concat(src[t.PRERELEASE], \"?\").concat(src[t.BUILD], \"?\"));\n createToken('FULL', \"^\".concat(src[t.FULLPLAIN], \"$\"));\n\n // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n // common in the npm registry.\n createToken('LOOSEPLAIN', \"[v=\\\\s]*\".concat(src[t.MAINVERSIONLOOSE]).concat(src[t.PRERELEASELOOSE], \"?\").concat(src[t.BUILD], \"?\"));\n createToken('LOOSE', \"^\".concat(src[t.LOOSEPLAIN], \"$\"));\n createToken('GTLT', '((?:<|>)?=?)');\n\n // Something like \"2.*\" or \"1.2.x\".\n // Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n // Only the first item is strictly required.\n createToken('XRANGEIDENTIFIERLOOSE', \"\".concat(src[t.NUMERICIDENTIFIERLOOSE], \"|x|X|\\\\*\"));\n createToken('XRANGEIDENTIFIER', \"\".concat(src[t.NUMERICIDENTIFIER], \"|x|X|\\\\*\"));\n createToken('XRANGEPLAIN', \"[v=\\\\s]*(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIER], \")\") + \"(?:\".concat(src[t.PRERELEASE], \")?\").concat(src[t.BUILD], \"?\") + \")?)?\");\n createToken('XRANGEPLAINLOOSE', \"[v=\\\\s]*(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\\\\.(\".concat(src[t.XRANGEIDENTIFIERLOOSE], \")\") + \"(?:\".concat(src[t.PRERELEASELOOSE], \")?\").concat(src[t.BUILD], \"?\") + \")?)?\");\n createToken('XRANGE', \"^\".concat(src[t.GTLT], \"\\\\s*\").concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('XRANGELOOSE', \"^\".concat(src[t.GTLT], \"\\\\s*\").concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // Coercion.\n // Extract anything that could conceivably be a part of a valid semver\n createToken('COERCE', \"\".concat('(^|[^\\\\d])' + '(\\\\d{1,').concat(MAX_SAFE_COMPONENT_LENGTH, \"})\") + \"(?:\\\\.(\\\\d{1,\".concat(MAX_SAFE_COMPONENT_LENGTH, \"}))?\") + \"(?:\\\\.(\\\\d{1,\".concat(MAX_SAFE_COMPONENT_LENGTH, \"}))?\") + \"(?:$|[^\\\\d])\");\n createToken('COERCERTL', src[t.COERCE], true);\n\n // Tilde ranges.\n // Meaning is \"reasonably at or greater than\"\n createToken('LONETILDE', '(?:~>?)');\n createToken('TILDETRIM', \"(\\\\s*)\".concat(src[t.LONETILDE], \"\\\\s+\"), true);\n exports.tildeTrimReplace = '$1~';\n createToken('TILDE', \"^\".concat(src[t.LONETILDE]).concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('TILDELOOSE', \"^\".concat(src[t.LONETILDE]).concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // Caret ranges.\n // Meaning is \"at least and backwards compatible with\"\n createToken('LONECARET', '(?:\\\\^)');\n createToken('CARETTRIM', \"(\\\\s*)\".concat(src[t.LONECARET], \"\\\\s+\"), true);\n exports.caretTrimReplace = '$1^';\n createToken('CARET', \"^\".concat(src[t.LONECARET]).concat(src[t.XRANGEPLAIN], \"$\"));\n createToken('CARETLOOSE', \"^\".concat(src[t.LONECARET]).concat(src[t.XRANGEPLAINLOOSE], \"$\"));\n\n // A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\n createToken('COMPARATORLOOSE', \"^\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.LOOSEPLAIN], \")$|^$\"));\n createToken('COMPARATOR', \"^\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.FULLPLAIN], \")$|^$\"));\n\n // An expression to strip any whitespace between the gtlt and the thing\n // it modifies, so that `> 1.2.3` ==> `>1.2.3`\n createToken('COMPARATORTRIM', \"(\\\\s*)\".concat(src[t.GTLT], \"\\\\s*(\").concat(src[t.LOOSEPLAIN], \"|\").concat(src[t.XRANGEPLAIN], \")\"), true);\n exports.comparatorTrimReplace = '$1$2$3';\n\n // Something like `1.2.3 - 1.2.4`\n // Note that these all use the loose form, because they'll be\n // checked against either the strict or loose comparator form\n // later.\n createToken('HYPHENRANGE', \"^\\\\s*(\".concat(src[t.XRANGEPLAIN], \")\") + \"\\\\s+-\\\\s+\" + \"(\".concat(src[t.XRANGEPLAIN], \")\") + \"\\\\s*$\");\n createToken('HYPHENRANGELOOSE', \"^\\\\s*(\".concat(src[t.XRANGEPLAINLOOSE], \")\") + \"\\\\s+-\\\\s+\" + \"(\".concat(src[t.XRANGEPLAINLOOSE], \")\") + \"\\\\s*$\");\n\n // Star ranges basically just allow anything at all.\n createToken('STAR', '(<|>)?=?\\\\s*\\\\*');\n // >=0.0.0 is like a star\n createToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$');\n createToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$');\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a, b) => {\n const anum = numeric.test(a);\n const bnum = numeric.test(b);\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n};\nconst rcompareIdentifiers = (a, b) => compareIdentifiers$1(b, a);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst {\n MAX_LENGTH,\n MAX_SAFE_INTEGER\n} = constants;\nconst {\n safeRe: re,\n t\n} = reExports;\nconst parseOptions = parseOptions_1;\nconst {\n compareIdentifiers\n} = identifiers;\nlet SemVer$1 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(\"Invalid version. Must be a string. Got type \\\"\".concat(typeof version, \"\\\".\"));\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\"version is longer than \".concat(MAX_LENGTH, \" characters\"));\n }\n debug('SemVer', version, options);\n this.options = options;\n this.loose = !!options.loose;\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease;\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);\n if (!m) {\n throw new TypeError(\"Invalid Version: \".concat(version));\n }\n this.raw = version;\n\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version');\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version');\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version');\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split('.').map(id => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n }\n format() {\n this.version = \"\".concat(this.major, \".\").concat(this.minor, \".\").concat(this.patch);\n if (this.prerelease.length) {\n this.version += \"-\".concat(this.prerelease.join('.'));\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug('SemVer.compare', this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i = 0;\n do {\n const a = this.prerelease[i];\n const b = other.prerelease[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i = 0;\n do {\n const a = this.build[i];\n const b = other.build[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier, identifierBase);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier, identifierBase);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier, identifierBase);\n this.inc('pre', identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase);\n }\n this.inc('pre', identifier, identifierBase);\n break;\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty');\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists');\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(\"invalid increment argument: \".concat(release));\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += \"+\".concat(this.build.join('.'));\n }\n return this;\n }\n};\nvar semver = SemVer$1;\nconst SemVer = semver;\nconst compare$6 = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));\nvar compare_1 = compare$6;\nconst compare$5 = compare_1;\nconst eq$1 = (a, b, loose) => compare$5(a, b, loose) === 0;\nvar eq_1 = eq$1;\nconst compare$4 = compare_1;\nconst neq$1 = (a, b, loose) => compare$4(a, b, loose) !== 0;\nvar neq_1 = neq$1;\nconst compare$3 = compare_1;\nconst gt$1 = (a, b, loose) => compare$3(a, b, loose) > 0;\nvar gt_1 = gt$1;\nconst compare$2 = compare_1;\nconst gte$1 = (a, b, loose) => compare$2(a, b, loose) >= 0;\nvar gte_1 = gte$1;\nconst compare$1 = compare_1;\nconst lt$1 = (a, b, loose) => compare$1(a, b, loose) < 0;\nvar lt_1 = lt$1;\nconst compare = compare_1;\nconst lte$1 = (a, b, loose) => compare(a, b, loose) <= 0;\nvar lte_1 = lte$1;\nconst eq = eq_1;\nconst neq = neq_1;\nconst gt = gt_1;\nconst gte = gte_1;\nconst lt = lt_1;\nconst lte = lte_1;\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version;\n }\n if (typeof b === 'object') {\n b = b.version;\n }\n return a === b;\n case '!==':\n if (typeof a === 'object') {\n a = a.version;\n }\n if (typeof b === 'object') {\n b = b.version;\n }\n return a !== b;\n case '':\n case '=':\n case '==':\n return eq(a, b, loose);\n case '!=':\n return neq(a, b, loose);\n case '>':\n return gt(a, b, loose);\n case '>=':\n return gte(a, b, loose);\n case '<':\n return lt(a, b, loose);\n case '<=':\n return lte(a, b, loose);\n default:\n throw new TypeError(\"Invalid operator: \".concat(op));\n }\n};\nvar cmp_1 = cmp;\nvar comparator;\nvar hasRequiredComparator;\nfunction requireComparator() {\n if (hasRequiredComparator) return comparator;\n hasRequiredComparator = 1;\n const ANY = Symbol('SemVer ANY');\n // hoisted class for cyclic dependency\n class Comparator {\n static get ANY() {\n return ANY;\n }\n constructor(comp, options) {\n options = parseOptions(options);\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp;\n } else {\n comp = comp.value;\n }\n }\n comp = comp.trim().split(/\\s+/).join(' ');\n debug('comparator', comp, options);\n this.options = options;\n this.loose = !!options.loose;\n this.parse(comp);\n if (this.semver === ANY) {\n this.value = '';\n } else {\n this.value = this.operator + this.semver.version;\n }\n debug('comp', this);\n }\n parse(comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];\n const m = comp.match(r);\n if (!m) {\n throw new TypeError(\"Invalid comparator: \".concat(comp));\n }\n this.operator = m[1] !== undefined ? m[1] : '';\n if (this.operator === '=') {\n this.operator = '';\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY;\n } else {\n this.semver = new SemVer(m[2], this.options.loose);\n }\n }\n toString() {\n return this.value;\n }\n test(version) {\n debug('Comparator.test', version, this.options.loose);\n if (this.semver === ANY || version === ANY) {\n return true;\n }\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options);\n } catch (er) {\n return false;\n }\n }\n return cmp(version, this.operator, this.semver, this.options);\n }\n intersects(comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required');\n }\n if (this.operator === '') {\n if (this.value === '') {\n return true;\n }\n return new Range(comp.value, options).test(this.value);\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true;\n }\n return new Range(this.value, options).test(comp.semver);\n }\n options = parseOptions(options);\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease && (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false;\n }\n if (!options.includePrerelease && (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false;\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true;\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true;\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (this.semver.version === comp.semver.version && this.operator.includes('=') && comp.operator.includes('=')) {\n return true;\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) && this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true;\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) && this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true;\n }\n return false;\n }\n }\n comparator = Comparator;\n const parseOptions = parseOptions_1;\n const {\n safeRe: re,\n t\n } = reExports;\n const cmp = cmp_1;\n const debug = debug_1;\n const SemVer = semver;\n const Range = requireRange();\n return comparator;\n}\nvar range;\nvar hasRequiredRange;\nfunction requireRange() {\n if (hasRequiredRange) return range;\n hasRequiredRange = 1;\n // hoisted class for cyclic dependency\n class Range {\n constructor(range, options) {\n options = parseOptions(options);\n if (range instanceof Range) {\n if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {\n return range;\n } else {\n return new Range(range.raw, options);\n }\n }\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value;\n this.set = [[range]];\n this.format();\n return this;\n }\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().split(/\\s+/).join(' ');\n\n // First, split on ||\n this.set = this.raw.split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length);\n if (!this.set.length) {\n throw new TypeError(\"Invalid SemVer Range: \".concat(this.raw));\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0];\n this.set = this.set.filter(c => !isNullSet(c[0]));\n if (this.set.length === 0) {\n this.set = [first];\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c];\n break;\n }\n }\n }\n }\n this.format();\n }\n format() {\n this.range = this.set.map(comps => comps.join(' ').trim()).join('||').trim();\n return this.range;\n }\n toString() {\n return this.range;\n }\n parseRange(range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);\n const memoKey = memoOpts + ':' + range;\n const cached = cache.get(memoKey);\n if (cached) {\n return cached;\n }\n const loose = this.options.loose;\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease));\n debug('hyphen replace', range);\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);\n debug('comparator trim', range);\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace);\n debug('tilde trim', range);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace);\n debug('caret trim', range);\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range.split(' ').map(comp => parseComparator(comp, this.options)).join(' ').split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options));\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options);\n return !!comp.match(re[t.COMPARATORLOOSE]);\n });\n }\n debug('range list', rangeList);\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map();\n const comparators = rangeList.map(comp => new Comparator(comp, this.options));\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp];\n }\n rangeMap.set(comp.value, comp);\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('');\n }\n const result = [...rangeMap.values()];\n cache.set(memoKey, result);\n return result;\n }\n intersects(range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required');\n }\n return this.set.some(thisComparators => {\n return isSatisfiable(thisComparators, options) && range.set.some(rangeComparators => {\n return isSatisfiable(rangeComparators, options) && thisComparators.every(thisComparator => {\n return rangeComparators.every(rangeComparator => {\n return thisComparator.intersects(rangeComparator, options);\n });\n });\n });\n });\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test(version) {\n if (!version) {\n return false;\n }\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options);\n } catch (er) {\n return false;\n }\n }\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true;\n }\n }\n return false;\n }\n }\n range = Range;\n const LRU = lruCache;\n const cache = new LRU({\n max: 1000\n });\n const parseOptions = parseOptions_1;\n const Comparator = requireComparator();\n const debug = debug_1;\n const SemVer = semver;\n const {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace\n } = reExports;\n const {\n FLAG_INCLUDE_PRERELEASE,\n FLAG_LOOSE\n } = constants;\n const isNullSet = c => c.value === '<0.0.0-0';\n const isAny = c => c.value === '';\n\n // take a set of comparators and determine whether there\n // exists a version which can satisfy it\n const isSatisfiable = (comparators, options) => {\n let result = true;\n const remainingComparators = comparators.slice();\n let testComparator = remainingComparators.pop();\n while (result && remainingComparators.length) {\n result = remainingComparators.every(otherComparator => {\n return testComparator.intersects(otherComparator, options);\n });\n testComparator = remainingComparators.pop();\n }\n return result;\n };\n\n // comprised of xranges, tildes, stars, and gtlt's at this point.\n // already replaced the hyphen ranges\n // turn into a set of JUST comparators.\n const parseComparator = (comp, options) => {\n debug('comp', comp, options);\n comp = replaceCarets(comp, options);\n debug('caret', comp);\n comp = replaceTildes(comp, options);\n debug('tildes', comp);\n comp = replaceXRanges(comp, options);\n debug('xrange', comp);\n comp = replaceStars(comp, options);\n debug('stars', comp);\n return comp;\n };\n const isX = id => !id || id.toLowerCase() === 'x' || id === '*';\n\n // ~, ~> --> * (any, kinda silly)\n // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n // ~0.0.1 --> >=0.0.1 <0.1.0-0\n const replaceTildes = (comp, options) => {\n return comp.trim().split(/\\s+/).map(c => replaceTilde(c, options)).join(' ');\n };\n const replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr);\n let ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = \">=\".concat(M, \".0.0 <\").concat(+M + 1, \".0.0-0\");\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = \">=\".concat(M, \".\").concat(m, \".0 <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else if (pr) {\n debug('replaceTilde pr', pr);\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n debug('tilde return', ret);\n return ret;\n });\n };\n\n // ^ --> * (any, kinda silly)\n // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n // ^1.2.3 --> >=1.2.3 <2.0.0-0\n // ^1.2.0 --> >=1.2.0 <2.0.0-0\n // ^0.0.1 --> >=0.0.1 <0.0.2-0\n // ^0.1.0 --> >=0.1.0 <0.2.0-0\n const replaceCarets = (comp, options) => {\n return comp.trim().split(/\\s+/).map(c => replaceCaret(c, options)).join(' ');\n };\n const replaceCaret = (comp, options) => {\n debug('caret', comp, options);\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];\n const z = options.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr);\n let ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = \">=\".concat(M, \".0.0\").concat(z, \" <\").concat(+M + 1, \".0.0-0\");\n } else if (isX(p)) {\n if (M === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(z, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(z, \" <\").concat(+M + 1, \".0.0-0\");\n }\n } else if (pr) {\n debug('replaceCaret pr', pr);\n if (M === '0') {\n if (m === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(m, \".\").concat(+p + 1, \"-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \"-\").concat(pr, \" <\").concat(+M + 1, \".0.0-0\");\n }\n } else {\n debug('no pr');\n if (M === '0') {\n if (m === '0') {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p).concat(z, \" <\").concat(M, \".\").concat(m, \".\").concat(+p + 1, \"-0\");\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p).concat(z, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n } else {\n ret = \">=\".concat(M, \".\").concat(m, \".\").concat(p, \" <\").concat(+M + 1, \".0.0-0\");\n }\n }\n debug('caret return', ret);\n return ret;\n });\n };\n const replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options);\n return comp.split(/\\s+/).map(c => replaceXRange(c, options)).join(' ');\n };\n const replaceXRange = (comp, options) => {\n comp = comp.trim();\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr);\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : '';\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n if (gtlt === '<') {\n pr = '-0';\n }\n ret = \"\".concat(gtlt + M, \".\").concat(m, \".\").concat(p).concat(pr);\n } else if (xm) {\n ret = \">=\".concat(M, \".0.0\").concat(pr, \" <\").concat(+M + 1, \".0.0-0\");\n } else if (xp) {\n ret = \">=\".concat(M, \".\").concat(m, \".0\").concat(pr, \" <\").concat(M, \".\").concat(+m + 1, \".0-0\");\n }\n debug('xRange return', ret);\n return ret;\n });\n };\n\n // Because * is AND-ed with everything else in the comparator,\n // and '' means \"any version\", just remove the *s entirely.\n const replaceStars = (comp, options) => {\n debug('replaceStars', comp, options);\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '');\n };\n const replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options);\n return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '');\n };\n\n // This function is passed to string.replace(re[t.HYPHENRANGE])\n // M, m, patch, prerelease, build\n // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n // 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n // 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n const hyphenReplace = incPr => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = \">=\".concat(fM, \".0.0\").concat(incPr ? '-0' : '');\n } else if (isX(fp)) {\n from = \">=\".concat(fM, \".\").concat(fm, \".0\").concat(incPr ? '-0' : '');\n } else if (fpr) {\n from = \">=\".concat(from);\n } else {\n from = \">=\".concat(from).concat(incPr ? '-0' : '');\n }\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = \"<\".concat(+tM + 1, \".0.0-0\");\n } else if (isX(tp)) {\n to = \"<\".concat(tM, \".\").concat(+tm + 1, \".0-0\");\n } else if (tpr) {\n to = \"<=\".concat(tM, \".\").concat(tm, \".\").concat(tp, \"-\").concat(tpr);\n } else if (incPr) {\n to = \"<\".concat(tM, \".\").concat(tm, \".\").concat(+tp + 1, \"-0\");\n } else {\n to = \"<=\".concat(to);\n }\n return \"\".concat(from, \" \").concat(to).trim();\n };\n const testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false;\n }\n }\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver);\n if (set[i].semver === Comparator.ANY) {\n continue;\n }\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver;\n if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {\n return true;\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n return true;\n };\n return range;\n}\nconst Range = requireRange();\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options);\n } catch (er) {\n return false;\n }\n return range.test(version);\n};\nvar satisfies_1 = satisfies;\nvar satisfies$1 = /*@__PURE__*/getDefaultExportFromCjs(satisfies_1);\n\n/**\n * Open editor url in a new window, and pass a message.\n */\nfunction post(window, url, data) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const editor = window.open(url);\n const wait = 10000;\n const step = 250;\n const {\n origin\n } = new URL(url);\n // eslint-disable-next-line no-bitwise\n let count = ~~(wait / step);\n function listen(evt) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, origin);\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n\n// generated with build-style.sh\nvar embedStyle = \".vega-embed {\\n position: relative;\\n display: inline-block;\\n box-sizing: border-box;\\n}\\n.vega-embed.has-actions {\\n padding-right: 38px;\\n}\\n.vega-embed details:not([open]) > :not(summary) {\\n display: none !important;\\n}\\n.vega-embed summary {\\n list-style: none;\\n position: absolute;\\n top: 0;\\n right: 0;\\n padding: 6px;\\n z-index: 1000;\\n background: white;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\\n color: #1b1e23;\\n border: 1px solid #aaa;\\n border-radius: 999px;\\n opacity: 0.2;\\n transition: opacity 0.4s ease-in;\\n cursor: pointer;\\n line-height: 0px;\\n}\\n.vega-embed summary::-webkit-details-marker {\\n display: none;\\n}\\n.vega-embed summary:active {\\n box-shadow: #aaa 0px 0px 0px 1px inset;\\n}\\n.vega-embed summary svg {\\n width: 14px;\\n height: 14px;\\n}\\n.vega-embed details[open] summary {\\n opacity: 0.7;\\n}\\n.vega-embed:hover summary, .vega-embed:focus-within summary {\\n opacity: 1 !important;\\n transition: opacity 0.2s ease;\\n}\\n.vega-embed .vega-actions {\\n position: absolute;\\n z-index: 1001;\\n top: 35px;\\n right: -9px;\\n display: flex;\\n flex-direction: column;\\n padding-bottom: 8px;\\n padding-top: 8px;\\n border-radius: 4px;\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\\n border: 1px solid #d9d9d9;\\n background: white;\\n animation-duration: 0.15s;\\n animation-name: scale-in;\\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\\n text-align: left;\\n}\\n.vega-embed .vega-actions a {\\n padding: 8px 16px;\\n font-family: sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n white-space: nowrap;\\n color: #434a56;\\n text-decoration: none;\\n}\\n.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus {\\n background-color: #f7f7f9;\\n color: black;\\n}\\n.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\\n content: \\\"\\\";\\n display: inline-block;\\n position: absolute;\\n}\\n.vega-embed .vega-actions::before {\\n left: auto;\\n right: 14px;\\n top: -16px;\\n border: 8px solid rgba(0, 0, 0, 0);\\n border-bottom-color: #d9d9d9;\\n}\\n.vega-embed .vega-actions::after {\\n left: auto;\\n right: 15px;\\n top: -14px;\\n border: 7px solid rgba(0, 0, 0, 0);\\n border-bottom-color: #fff;\\n}\\n.vega-embed .chart-wrapper.fit-x {\\n width: 100%;\\n}\\n.vega-embed .chart-wrapper.fit-y {\\n height: 100%;\\n}\\n\\n.vega-embed-wrapper {\\n max-width: 100%;\\n overflow: auto;\\n padding-right: 14px;\\n}\\n\\n@keyframes scale-in {\\n from {\\n opacity: 0;\\n transform: scale(0.6);\\n }\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n\";\nfunction mergeDeep(dest) {\n for (var _len11 = arguments.length, src = new Array(_len11 > 1 ? _len11 - 1 : 0), _key11 = 1; _key11 < _len11; _key11++) {\n src[_key11 - 1] = arguments[_key11];\n }\n for (const s of src) {\n deepMerge_(dest, s);\n }\n return dest;\n}\nfunction deepMerge_(dest, src) {\n for (const property of Object.keys(src)) {\n writeConfig(dest, property, src[property], true);\n }\n}\nfunction ownKeys$1(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) {\n _defineProperty$2(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nconst vega = vegaImport;\nlet vegaLite = vegaLiteImport;\n\n// For backwards compatibility with Vega-Lite before v4.\nconst w = typeof window !== 'undefined' ? window : undefined;\nif (vegaLite === undefined && w !== null && w !== void 0 && (_w$vl = w.vl) !== null && _w$vl !== void 0 && _w$vl.compile) {\n vegaLite = w.vl;\n}\nconst DEFAULT_ACTIONS = {\n export: {\n svg: true,\n png: true\n },\n source: true,\n compiled: true,\n editor: true\n};\nconst I18N = {\n CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n COMPILED_ACTION: 'View Compiled Vega',\n EDITOR_ACTION: 'Open in Vega Editor',\n PNG_ACTION: 'Save as PNG',\n SOURCE_ACTION: 'View Source',\n SVG_ACTION: 'Save as SVG'\n};\nconst NAMES = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite'\n};\nconst VERSION = {\n vega: vega.version,\n 'vega-lite': vegaLite ? vegaLite.version : 'not available'\n};\nconst PREPROCESSOR = {\n vega: vgSpec => vgSpec,\n 'vega-lite': (vlSpec, config) => vegaLite.compile(vlSpec, {\n config: config\n }).spec\n};\nconst SVG_CIRCLES = \"\\n\\n \\n \\n \\n\";\nconst CHART_WRAPPER_CLASS = 'chart-wrapper';\nfunction isTooltipHandler(h) {\n return typeof h === 'function';\n}\nfunction viewSource(source, sourceHeader, sourceFooter, mode) {\n const header = \"\".concat(sourceHeader, \"
\");\n  const footer = \"
\".concat(sourceFooter, \"\");\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const win = window.open('');\n win.document.write(header + source + footer);\n win.document.title = \"\".concat(NAMES[mode], \" JSON Source\");\n}\n\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nfunction guessMode(spec, providedMode) {\n // Decide mode\n if (spec.$schema) {\n const parsed = e(spec.$schema);\n if (providedMode && providedMode !== parsed.library) {\n var _NAMES$providedMode;\n console.warn(\"The given visualization spec is written in \".concat(NAMES[parsed.library], \", but mode argument sets \").concat((_NAMES$providedMode = NAMES[providedMode]) !== null && _NAMES$providedMode !== void 0 ? _NAMES$providedMode : providedMode, \".\"));\n }\n const mode = parsed.library;\n if (!satisfies$1(VERSION[mode], \"^\".concat(parsed.version.slice(1)))) {\n console.warn(\"The input spec uses \".concat(NAMES[mode], \" \").concat(parsed.version, \", but the current version of \").concat(NAMES[mode], \" is v\").concat(VERSION[mode], \".\"));\n }\n return mode;\n }\n\n // try to guess from the provided spec\n if ('mark' in spec || 'encoding' in spec || 'layer' in spec || 'hconcat' in spec || 'vconcat' in spec || 'facet' in spec || 'repeat' in spec) {\n return 'vega-lite';\n }\n if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n return 'vega';\n }\n return providedMode !== null && providedMode !== void 0 ? providedMode : 'vega';\n}\nfunction isLoader(o) {\n return !!(o && 'load' in o);\n}\nfunction createLoader(opts) {\n return isLoader(opts) ? opts : vega.loader(opts);\n}\nfunction embedOptionsFromUsermeta(parsedSpec) {\n var _parsedSpec$usermeta$, _parsedSpec$usermeta;\n const opts = (_parsedSpec$usermeta$ = (_parsedSpec$usermeta = parsedSpec.usermeta) === null || _parsedSpec$usermeta === void 0 ? void 0 : _parsedSpec$usermeta.embedOptions) !== null && _parsedSpec$usermeta$ !== void 0 ? _parsedSpec$usermeta$ : {};\n if (isString(opts.defaultStyle)) {\n // we don't allow styles set via usermeta since it would allow injection of logic (we set the style via innerHTML)\n opts.defaultStyle = false;\n }\n return opts;\n}\n\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opts A JavaScript object containing options for embedding.\n */\nasync function embed(el, spec) {\n var _parsedOpts$config, _usermetaOpts$config;\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let parsedSpec;\n let loader;\n if (isString(spec)) {\n loader = createLoader(opts.loader);\n parsedSpec = JSON.parse(await loader.load(spec));\n } else {\n parsedSpec = spec;\n }\n const loadedEmbedOptions = embedOptionsFromUsermeta(parsedSpec);\n const usermetaLoader = loadedEmbedOptions.loader;\n\n // either create the loader for the first time or create a new loader if the spec has new loader options\n if (!loader || usermetaLoader) {\n var _opts$loader;\n loader = createLoader((_opts$loader = opts.loader) !== null && _opts$loader !== void 0 ? _opts$loader : usermetaLoader);\n }\n const usermetaOpts = await loadOpts(loadedEmbedOptions, loader);\n const parsedOpts = await loadOpts(opts, loader);\n const mergedOpts = _objectSpread$1(_objectSpread$1({}, mergeDeep(parsedOpts, usermetaOpts)), {}, {\n config: mergeConfig((_parsedOpts$config = parsedOpts.config) !== null && _parsedOpts$config !== void 0 ? _parsedOpts$config : {}, (_usermetaOpts$config = usermetaOpts.config) !== null && _usermetaOpts$config !== void 0 ? _usermetaOpts$config : {})\n });\n return await _embed(el, parsedSpec, mergedOpts, loader);\n}\nasync function loadOpts(opt, loader) {\n var _opt$config;\n const config = isString(opt.config) ? JSON.parse(await loader.load(opt.config)) : (_opt$config = opt.config) !== null && _opt$config !== void 0 ? _opt$config : {};\n const patch = isString(opt.patch) ? JSON.parse(await loader.load(opt.patch)) : opt.patch;\n return _objectSpread$1(_objectSpread$1(_objectSpread$1({}, opt), patch ? {\n patch\n } : {}), config ? {\n config\n } : {});\n}\nfunction getRoot(el) {\n var _document$head;\n const possibleRoot = el.getRootNode ? el.getRootNode() : document;\n return possibleRoot instanceof ShadowRoot ? {\n root: possibleRoot,\n rootContainer: possibleRoot\n } : {\n root: document,\n rootContainer: (_document$head = document.head) !== null && _document$head !== void 0 ? _document$head : document.body\n };\n}\nasync function _embed(el, spec) {\n var _opts$config, _opts$actions, _opts$renderer, _opts$logLevel, _opts$downloadFileNam, _ref104, _vega$expressionInter;\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let loader = arguments.length > 3 ? arguments[3] : undefined;\n const config = opts.theme ? mergeConfig(themes[opts.theme], (_opts$config = opts.config) !== null && _opts$config !== void 0 ? _opts$config : {}) : opts.config;\n const actions = isBoolean$2(opts.actions) ? opts.actions : mergeDeep({}, DEFAULT_ACTIONS, (_opts$actions = opts.actions) !== null && _opts$actions !== void 0 ? _opts$actions : {});\n const i18n = _objectSpread$1(_objectSpread$1({}, I18N), opts.i18n);\n const renderer = (_opts$renderer = opts.renderer) !== null && _opts$renderer !== void 0 ? _opts$renderer : 'canvas';\n const logLevel = (_opts$logLevel = opts.logLevel) !== null && _opts$logLevel !== void 0 ? _opts$logLevel : vega.Warn;\n const downloadFileName = (_opts$downloadFileNam = opts.downloadFileName) !== null && _opts$downloadFileNam !== void 0 ? _opts$downloadFileNam : 'visualization';\n const element = typeof el === 'string' ? document.querySelector(el) : el;\n if (!element) {\n throw new Error(\"\".concat(el, \" does not exist\"));\n }\n if (opts.defaultStyle !== false) {\n const ID = 'vega-embed-style';\n const {\n root,\n rootContainer\n } = getRoot(element);\n if (!root.getElementById(ID)) {\n const style = document.createElement('style');\n style.id = ID;\n style.innerHTML = opts.defaultStyle === undefined || opts.defaultStyle === true ? embedStyle.toString() : opts.defaultStyle;\n rootContainer.appendChild(style);\n }\n }\n const mode = guessMode(spec, opts.mode);\n let vgSpec = PREPROCESSOR[mode](spec, config);\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n const parsed = e(vgSpec.$schema);\n if (!satisfies$1(VERSION.vega, \"^\".concat(parsed.version.slice(1)))) {\n console.warn(\"The compiled spec uses Vega \".concat(parsed.version, \", but current version is v\").concat(VERSION.vega, \".\"));\n }\n }\n }\n element.classList.add('vega-embed');\n if (actions) {\n element.classList.add('has-actions');\n }\n element.innerHTML = ''; // clear container\n\n let container = element;\n if (actions) {\n const chartWrapper = document.createElement('div');\n chartWrapper.classList.add(CHART_WRAPPER_CLASS);\n element.appendChild(chartWrapper);\n container = chartWrapper;\n }\n const patch = opts.patch;\n if (patch) {\n vgSpec = patch instanceof Function ? patch(vgSpec) : applyPatch(vgSpec, patch, true, false).newDocument;\n }\n\n // Set locale. Note that this is a global setting.\n if (opts.formatLocale) {\n vega.formatLocale(opts.formatLocale);\n }\n if (opts.timeFormatLocale) {\n vega.timeFormatLocale(opts.timeFormatLocale);\n }\n\n // Set custom expression functions\n if (opts.expressionFunctions) {\n for (const name in opts.expressionFunctions) {\n const expressionFunction = opts.expressionFunctions[name];\n if ('fn' in expressionFunction) {\n vega.expressionFunction(name, expressionFunction.fn, expressionFunction['visitor']);\n } else if (expressionFunction instanceof Function) {\n vega.expressionFunction(name, expressionFunction);\n }\n }\n }\n const {\n ast\n } = opts;\n\n // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n // This call may throw an Error if parsing fails.\n const runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : config, {\n ast\n });\n const view = new (opts.viewClass || vega.View)(runtime, _objectSpread$1({\n loader,\n logLevel,\n renderer\n }, ast ? {\n expr: (_ref104 = (_vega$expressionInter = vega.expressionInterpreter) !== null && _vega$expressionInter !== void 0 ? _vega$expressionInter : opts.expr) !== null && _ref104 !== void 0 ? _ref104 : expression$1\n } : {}));\n view.addSignalListener('autosize', (_, autosize) => {\n const {\n type\n } = autosize;\n if (type == 'fit-x') {\n container.classList.add('fit-x');\n container.classList.remove('fit-y');\n } else if (type == 'fit-y') {\n container.classList.remove('fit-x');\n container.classList.add('fit-y');\n } else if (type == 'fit') {\n container.classList.add('fit-x', 'fit-y');\n } else {\n container.classList.remove('fit-x', 'fit-y');\n }\n });\n if (opts.tooltip !== false) {\n const handler = isTooltipHandler(opts.tooltip) ? opts.tooltip :\n // user provided boolean true or tooltip options\n new Handler(opts.tooltip === true ? {} : opts.tooltip).call;\n view.tooltip(handler);\n }\n let {\n hover\n } = opts;\n if (hover === undefined) {\n hover = mode === 'vega';\n }\n if (hover) {\n const {\n hoverSet,\n updateSet\n } = typeof hover === 'boolean' ? {} : hover;\n view.hover(hoverSet, updateSet);\n }\n if (opts) {\n if (opts.width != null) {\n view.width(opts.width);\n }\n if (opts.height != null) {\n view.height(opts.height);\n }\n if (opts.padding != null) {\n view.padding(opts.padding);\n }\n }\n await view.initialize(container, opts.bind).runAsync();\n let documentClickHandler;\n if (actions !== false) {\n let wrapper = element;\n if (opts.defaultStyle !== false) {\n const details = document.createElement('details');\n details.title = i18n.CLICK_TO_VIEW_ACTIONS;\n element.append(details);\n wrapper = details;\n const summary = document.createElement('summary');\n summary.innerHTML = SVG_CIRCLES;\n details.append(summary);\n documentClickHandler = ev => {\n if (!details.contains(ev.target)) {\n details.removeAttribute('open');\n }\n };\n document.addEventListener('click', documentClickHandler);\n }\n const ctrl = document.createElement('div');\n wrapper.append(ctrl);\n ctrl.classList.add('vega-actions');\n\n // add 'Export' action\n if (actions === true || actions.export !== false) {\n for (const ext of ['svg', 'png']) {\n if (actions === true || actions.export === true || actions.export[ext]) {\n const i18nExportAction = i18n[\"\".concat(ext.toUpperCase(), \"_ACTION\")];\n const exportLink = document.createElement('a');\n const scaleFactor = isObject(opts.scaleFactor) ? opts.scaleFactor[ext] : opts.scaleFactor;\n exportLink.text = i18nExportAction;\n exportLink.href = '#';\n exportLink.target = '_blank';\n exportLink.download = \"\".concat(downloadFileName, \".\").concat(ext);\n // add link on mousedown so that it's correct when the click happens\n exportLink.addEventListener('mousedown', async function (e) {\n e.preventDefault();\n const url = await view.toImageURL(ext, scaleFactor);\n this.href = url;\n });\n ctrl.append(exportLink);\n }\n }\n }\n\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n const viewSourceLink = document.createElement('a');\n viewSourceLink.text = i18n.SOURCE_ACTION;\n viewSourceLink.href = '#';\n viewSourceLink.addEventListener('click', function (e) {\n var _opts$sourceHeader, _opts$sourceFooter;\n viewSource(stringify$2(spec), (_opts$sourceHeader = opts.sourceHeader) !== null && _opts$sourceHeader !== void 0 ? _opts$sourceHeader : '', (_opts$sourceFooter = opts.sourceFooter) !== null && _opts$sourceFooter !== void 0 ? _opts$sourceFooter : '', mode);\n e.preventDefault();\n });\n ctrl.append(viewSourceLink);\n }\n\n // add 'View Compiled' action\n if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n const compileLink = document.createElement('a');\n compileLink.text = i18n.COMPILED_ACTION;\n compileLink.href = '#';\n compileLink.addEventListener('click', function (e) {\n var _opts$sourceHeader2, _opts$sourceFooter2;\n viewSource(stringify$2(vgSpec), (_opts$sourceHeader2 = opts.sourceHeader) !== null && _opts$sourceHeader2 !== void 0 ? _opts$sourceHeader2 : '', (_opts$sourceFooter2 = opts.sourceFooter) !== null && _opts$sourceFooter2 !== void 0 ? _opts$sourceFooter2 : '', 'vega');\n e.preventDefault();\n });\n ctrl.append(compileLink);\n }\n\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n var _opts$editorUrl;\n const editorUrl = (_opts$editorUrl = opts.editorUrl) !== null && _opts$editorUrl !== void 0 ? _opts$editorUrl : 'https://vega.github.io/editor/';\n const editorLink = document.createElement('a');\n editorLink.text = i18n.EDITOR_ACTION;\n editorLink.href = '#';\n editorLink.addEventListener('click', function (e) {\n post(window, editorUrl, {\n config: config,\n mode,\n renderer,\n spec: stringify$2(spec)\n });\n e.preventDefault();\n });\n ctrl.append(editorLink);\n }\n }\n function finalize() {\n if (documentClickHandler) {\n document.removeEventListener('click', documentClickHandler);\n }\n view.finalize();\n }\n return {\n view,\n spec,\n vgSpec,\n finalize,\n embedOptions: opts\n };\n}\nfunction isFunction(functionToCheck) {\n const getType = {};\n return !!functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\nfunction updateSingleDatasetInView(view, name, value) {\n if (value) {\n if (isFunction(value)) {\n value(view.data(name));\n } else {\n view.change(name, vega.changeset().remove(() => true).insert(value));\n }\n }\n}\nfunction updateMultipleDatasetsInView(view, data) {\n Object.keys(data).forEach(name => {\n updateSingleDatasetInView(view, name, data[name]);\n });\n}\nfunction getUniqueFieldNames(objects) {\n const fields = new Set();\n objects.forEach(o => {\n Object.keys(o).forEach(field => {\n fields.add(field);\n });\n });\n return fields;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nconst NOOP = () => {};\nfunction addSignalListenersToView(view, signalListeners) {\n const signalNames = Object.keys(signalListeners);\n signalNames.forEach(signalName => {\n try {\n view.addSignalListener(signalName, signalListeners[signalName]);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Cannot add invalid signal listener.', error);\n }\n });\n return signalNames.length > 0;\n}\nfunction computeSpecChanges(newSpec, oldSpec) {\n if (newSpec === oldSpec) return false;\n const changes = {\n width: false,\n height: false,\n isExpensive: false\n };\n const fieldNames = getUniqueFieldNames([newSpec, oldSpec]);\n if (fieldNames.has('width') && (!('width' in newSpec) || !('width' in oldSpec) || newSpec.width !== oldSpec.width)) {\n if ('width' in newSpec && typeof newSpec.width === 'number') {\n changes.width = newSpec.width;\n } else {\n changes.isExpensive = true;\n }\n }\n if (fieldNames.has('height') && (!('height' in newSpec) || !('height' in oldSpec) || newSpec.height !== oldSpec.height)) {\n if ('height' in newSpec && typeof newSpec.height === 'number') {\n changes.height = newSpec.height;\n } else {\n changes.isExpensive = true;\n }\n } // Delete cheap fields\n\n fieldNames.delete('width');\n fieldNames.delete('height');\n if ([...fieldNames].some(field => !(field in newSpec) || !(field in oldSpec) || !equal(newSpec[field], oldSpec[field]))) {\n changes.isExpensive = true;\n }\n return changes.width !== false || changes.height !== false || changes.isExpensive ? changes : false;\n}\nfunction removeSignalListenersFromView(view, signalListeners) {\n const signalNames = Object.keys(signalListeners);\n signalNames.forEach(signalName => {\n try {\n view.removeSignalListener(signalName, signalListeners[signalName]);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Cannot remove invalid signal listener.', error);\n }\n });\n return signalNames.length > 0;\n}\nfunction combineSpecWithDimension(props) {\n const {\n spec,\n width,\n height\n } = props;\n if (typeof width !== 'undefined' && typeof height !== 'undefined') {\n return {\n ...spec,\n width,\n height\n };\n }\n if (typeof width !== 'undefined') {\n return {\n ...spec,\n width\n };\n }\n if (typeof height !== 'undefined') {\n return {\n ...spec,\n height\n };\n }\n return spec;\n}\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nclass VegaEmbed extends React.PureComponent {\n constructor() {\n super(...arguments);\n _defineProperty$1(this, \"containerRef\", /*#__PURE__*/React.createRef());\n _defineProperty$1(this, \"resultPromise\", void 0);\n _defineProperty$1(this, \"handleError\", error => {\n const {\n onError = NOOP\n } = this.props;\n onError(error, this.containerRef.current); // eslint-disable-next-line no-console\n\n console.warn(error);\n return undefined;\n });\n _defineProperty$1(this, \"modifyView\", action => {\n if (this.resultPromise) {\n this.resultPromise.then(result => {\n if (result) {\n action(result.view);\n }\n return true;\n }).catch(this.handleError);\n }\n });\n }\n componentDidMount() {\n this.createView();\n }\n componentDidUpdate(prevProps) {\n const fieldSet = getUniqueFieldNames([this.props, prevProps]);\n fieldSet.delete('className');\n fieldSet.delete('signalListeners');\n fieldSet.delete('spec');\n fieldSet.delete('style');\n fieldSet.delete('width');\n fieldSet.delete('height'); // Only create a new view if necessary\n\n if (Array.from(fieldSet).some(f => this.props[f] !== prevProps[f])) {\n this.clearView();\n this.createView();\n } else {\n const specChanges = computeSpecChanges(combineSpecWithDimension(this.props), combineSpecWithDimension(prevProps));\n const {\n signalListeners: newSignalListeners\n } = this.props;\n const {\n signalListeners: oldSignalListeners\n } = prevProps;\n if (specChanges) {\n if (specChanges.isExpensive) {\n this.clearView();\n this.createView();\n } else {\n const areSignalListenersChanged = !shallowEqual(newSignalListeners, oldSignalListeners);\n this.modifyView(view => {\n if (specChanges.width !== false) {\n view.width(specChanges.width);\n }\n if (specChanges.height !== false) {\n view.height(specChanges.height);\n }\n if (areSignalListenersChanged) {\n if (oldSignalListeners) {\n removeSignalListenersFromView(view, oldSignalListeners);\n }\n if (newSignalListeners) {\n addSignalListenersToView(view, newSignalListeners);\n }\n }\n view.run();\n });\n }\n } else if (!shallowEqual(newSignalListeners, oldSignalListeners)) {\n this.modifyView(view => {\n if (oldSignalListeners) {\n removeSignalListenersFromView(view, oldSignalListeners);\n }\n if (newSignalListeners) {\n addSignalListenersToView(view, newSignalListeners);\n }\n view.run();\n });\n }\n }\n }\n componentWillUnmount() {\n this.clearView();\n }\n createView() {\n const {\n spec,\n onNewView,\n signalListeners = {},\n width,\n height,\n ...options\n } = this.props;\n if (this.containerRef.current) {\n const finalSpec = combineSpecWithDimension(this.props);\n this.resultPromise = embed(this.containerRef.current, finalSpec, options).then(result => {\n if (result) {\n const {\n view\n } = result;\n if (addSignalListenersToView(view, signalListeners)) {\n view.run();\n }\n }\n return result;\n }).catch(this.handleError);\n if (onNewView) {\n this.modifyView(onNewView);\n }\n }\n }\n clearView() {\n if (this.resultPromise) {\n this.resultPromise.then(result => {\n if (result) {\n result.finalize();\n }\n }).catch(this.handleError);\n }\n this.resultPromise = undefined;\n return this;\n }\n render() {\n const {\n className,\n style\n } = this.props; // Create the container Vega draws inside\n\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: this.containerRef,\n className: className,\n style: style\n });\n }\n}\n_defineProperty$1(VegaEmbed, \"propTypes\", {\n className: _pt.string,\n onError: _pt.func\n});\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nconst EMPTY = {};\nclass Vega extends React.PureComponent {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"vegaEmbed\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"handleNewView\", view => {\n this.update();\n const {\n onNewView = NOOP\n } = this.props;\n onNewView(view);\n });\n }\n componentDidMount() {\n this.update();\n }\n componentDidUpdate(prevProps) {\n if (!shallowEqual(this.props.data, prevProps.data)) {\n this.update();\n }\n }\n update() {\n const {\n data\n } = this.props;\n if (this.vegaEmbed.current && data && Object.keys(data).length > 0) {\n this.vegaEmbed.current.modifyView(view => {\n updateMultipleDatasetsInView(view, data);\n view.resize().run();\n });\n }\n }\n render() {\n const {\n data,\n ...restProps\n } = this.props;\n return /*#__PURE__*/React.createElement(VegaEmbed, _extends({\n ref: this.vegaEmbed\n }, restProps, {\n onNewView: this.handleNewView\n }));\n }\n}\n_defineProperty(Vega, \"defaultProps\", {\n data: EMPTY\n});\nvar _excluded = [\"actions\", \"className\", \"config\", \"label\"];\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty$4(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar defaultConfig = {\n font: 'var(--utrecht-vega-visualization-font-family, var(--utrecht-document-font-family))',\n title: {\n fontSize: 20,\n anchor: 'start',\n offset: 32,\n subtitleFontSize: 16\n },\n range: {\n category: {\n scheme: 'set1'\n }\n },\n axis: {\n labelFontSize: 16,\n titleFontSize: 16,\n labelFontWeight: 'bold',\n titleFontWeight: 'normal',\n labelAngle: 0,\n ticks: false,\n labelPadding: 12,\n domainColor: 'var(--utrecht-vega-visualization-axis-domain-color, black)',\n gridColor: 'var(--utrecht-vega-visualization-axis-grid-color, gray)',\n tickColor: 'var(--utrecht-vega-visualization-axis-tick-color, black)'\n },\n axisY: {\n titleAngle: 0,\n titleX: 0,\n titleY: 7,\n titleAlign: 'left',\n titleFontWeight: 'bold',\n domain: false\n },\n legend: {\n labelFontSize: 16,\n titleFontSize: 16\n },\n bar: {\n width: {\n band: 0.85\n }\n },\n view: {\n stroke: null\n },\n padding: {\n left: 20,\n top: 20,\n right: 25,\n bottom: 20\n },\n locale: {\n number: {\n decimal: ',',\n thousands: '.',\n grouping: [3],\n currency: ['', \"\\xA0\\u20AC\"]\n },\n time: {\n dateTime: '%a %e %B %Y %X',\n date: '%d-%m-%Y',\n time: '%H:%M:%S',\n periods: ['AM', 'PM'],\n days: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n shortDays: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n months: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],\n shortMonths: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec']\n }\n }\n};\nvar VegaVisualization = function VegaVisualization(_ref) {\n var _ref$actions = _ref.actions,\n actions = _ref$actions === void 0 ? false : _ref$actions,\n className = _ref.className,\n config = _ref.config,\n label = _ref.label,\n restProps = _objectWithoutProperties$1(_ref, _excluded);\n return jsx(\"div\", {\n className: clsx('utrecht-vega-visualisation', className),\n role: \"image\",\n \"aria-label\": label,\n children: jsx(\"div\", {\n \"aria-hidden\": true,\n children: jsx(Vega, _objectSpread(_objectSpread({}, restProps), {}, {\n actions: actions,\n renderer: 'svg',\n config: _objectSpread(_objectSpread({}, defaultConfig), config)\n }))\n })\n });\n};\nexport { Accordion, AccordionProvider, AccordionSection, Alert, AlertDialog, Article, Backdrop, BadgeCounter, BadgeList, BreadcrumbLink, BreadcrumbNav, BreadcrumbSeparator, Button, ButtonGroup, ButtonLink, Calendar, Checkbox, Code, CodeBlock, ColorSample, CurrencyData, DataBadge, DataList, DataListActions, DataListItem, DataListKey, DataListValue, DataPlaceholder, Document, Emphasis, Fieldset, FieldsetLegend, Figure, FigureCaption, FormField, FormFieldDescription, FormLabel, FormToggle, HTMLContent, Heading, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, HeadingGroup, IBANData, Icon, Image$1 as Image, IndexCharNav, Link, LinkButton, LinkSocial, ListSocial, ListSocialItem, Logo, LogoImage, Mark$3 as Mark, NumberValue, OrderedList, OrderedListItem, Page, PageContent, PageFooter, PageHeader, Paragraph, PreHeading, PrimaryActionButton, RadioButton, SecondaryActionButton, Select, SelectOption, Separator, SkipLink, SpotlightSection, StatusBadge, Strong, SubtleButton, Surface, Table, TableBody, TableCaption, TableCell, TableFooter, TableHeader, TableHeaderCell, TableRow, Textarea, Textbox, URLValue, UnorderedList, UnorderedListItem, VegaVisualization };"],"names":["_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","_templateObject15","_templateObject16","_templateObject17","_templateObject18","_w$vl","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","_excluded$1r","ownKeys$1t","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread$1t","arguments","length","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","Button","forwardRef","_ref","appearance","busy","disabled","children","className","hint","pressed","restProps","jsx","undefined","displayName","_excluded$1q","ownKeys$1s","_objectSpread$1s","Heading","level","appearances","HeadingX","headingClassName","indexOf","_excluded$1p","ownKeys$1r","_objectSpread$1r","AccordionSection","id","label","_ref$headingLevel","headingLevel","_ref$expanded","expanded","section","buttonRef","onActivate","onButtonBlur","onButtonFocus","panelAttributes","hidden","idPrefix","idSuffix","useId","buttonId","concat","panelId","jsxs","onClick","onFocus","onBlur","Accordion","_ref2","group","heading","props","headingId","Fragment","role","_ref4","sections","useRef","_useAccordion","console","log","refs","map","_","buttonRefs","activeElement","focusNextSection","_nextSection$current","items","item","currentIndex","index","nextSection","current","focus","focusFirstSection","_firstSection$current","firstSection","focusPreviousSection","_previousSection$curr","previousSection","focusLastSection","_firstSection$current2","useAccordion","_useState","useState","_useState2","setActiveElement","_useState3","_useState4","sectionsState","setSectionsState","handleButtonFocus","handleButtonBlur","onKeyDown","evt","code","preventDefault","key","activatedIndex","body","_excluded$1o","ownKeys$1q","_objectSpread$1q","Alert","icon","_excluded$1n","ownKeys$1p","_objectSpread$1p","AlertDialog","_excluded$1m","ownKeys$1o","_objectSpread$1o","_evt$target","target","click","ButtonLink","external","href","placeholder","rel","_excluded$1l","ownKeys$1n","_objectSpread$1n","IndexCharNav","component","currentChar","characters","onLinkClick","Link","LinkComponent","links","_char","_ref3","_char2","customLinkComponentStyle","_excluded$1k","ownKeys$1m","_objectSpread$1m","Article","_excluded$1j","ownKeys$1l","_objectSpread$1l","Backdrop","_excluded$1i","ownKeys$1k","_objectSpread$1k","BadgeCounter","value","_excluded$1h","ownKeys$1j","_objectSpread$1j","BadgeList","_excluded$1g","ownKeys$1i","_objectSpread$1i","boxContent","_excluded$1f","_excluded2$4","_excluded3$1","_excluded4$1","ownKeys$1h","_objectSpread$1h","useMicrodataItem","prop","itemScope","itemType","itemProp","useMicrodataProp","BreadcrumbNav","_ref2$headingLevel","BreadcrumbItem","BreadcrumbSeparator","display","BreadcrumbLink","_ref5","_ref5$Link","Link$1","content","String","_excluded$1e","ownKeys$1g","_objectSpread$1g","ButtonGroup","_excluded$10","ownKeys$12","_objectSpread$12","Checkbox","_ref$appearance","invalid","required","_excluded$$","ownKeys$11","_objectSpread$11","Code","_excluded$_","ownKeys$10","_objectSpread$10","CodeBlock","_excluded$Z","ownKeys$$","_objectSpread$$","ColorSample","color","_excluded$Y","ownKeys$_","_objectSpread$_","CurrencyData","_ref$currency","currency","amount","_ref$locale","locale","number","parseFloat","labelFormatted","Intl","NumberFormat","minimumFractionDigits","Number","isInteger","useGrouping","format","replace","formatLabel","visuallyFormatted","formatted","test","formatVisually","_excluded$X","ownKeys$Z","_objectSpread$Z","DataBadge","dateTime","_excluded$W","ownKeys$Y","_objectSpread$Y","Document","_excluded$V","_excluded2$3","_excluded3","_excluded4","ownKeys$X","_objectSpread$X","DataList","DataListItem","DataListKey","DataListValue","emptyDescription","multiline","notranslate","empty","translate","DataListActions","_excluded$U","ownKeys$W","_objectSpread$W","Emphasis","_excluded$T","_excluded2$2","ownKeys$V","_objectSpread$V","Fieldset","ariaDescribedby","ariaLabel","ariaLabelledby","form","name","FieldsetOnly","_excluded$S","ownKeys$U","_objectSpread$U","FieldsetLegend","_excluded$R","ownKeys$T","_objectSpread$T","Figure","_excluded$Q","ownKeys$S","_objectSpread$S","FigureCaption","_excluded$P","ownKeys$R","_objectSpread$R","FormField","_excluded$O","ownKeys$Q","_objectSpread$Q","FormFieldDescription","valid","warning","_excluded$N","ownKeys$P","_objectSpread$P","FormLabel","checked","_excluded$M","ownKeys$O","_objectSpread$O","FormToggle","tabIndex","defaultChecked","htmlFor","_excluded$L","ownKeys$N","_objectSpread$N","HTMLContent","_excluded$K","ownKeys$M","_objectSpread$M","Heading1","_excluded$J","ownKeys$L","_objectSpread$L","Heading2","_excluded$I","ownKeys$K","_objectSpread$K","Heading3","_excluded$H","ownKeys$J","_objectSpread$J","Heading4","_excluded$G","ownKeys$I","_objectSpread$I","Heading5","_excluded$F","ownKeys$H","_objectSpread$H","Heading6","_excluded$E","ownKeys$G","_objectSpread$G","HeadingGroup","_excluded$D","ownKeys$F","_objectSpread$F","IBANData","normalized","toUpperCase","_excluded$C","ownKeys$E","_objectSpread$E","Icon","_excluded$B","ownKeys$D","_objectSpread$D","Image$1","photo","_excluded$A","ownKeys$C","_objectSpread$C","LinkButton","inline","_excluded$z","ownKeys$B","_objectSpread$B","LinkSocial","_excluded$y","ownKeys$A","_objectSpread$A","Logo","ownKeys$z","_objectSpread$z","LogoImage","width","height","viewBox","fill","xmlns","clipPath","d","_excluded$x","ownKeys$y","_objectSpread$y","Mark$3","_excluded$w","ownKeys$x","_objectSpread$x","NumberValue","_excluded$v","ownKeys$w","_objectSpread$w","OrderedList","_excluded$u","ownKeys$v","_objectSpread$v","OrderedListItem","_excluded$t","ownKeys$u","_objectSpread$u","Page","_excluded$s","_excluded2$1","ownKeys$t","_objectSpread$t","PageContent","PageContentMain","_excluded$r","ownKeys$s","_objectSpread$s","PageFooter","_excluded$q","ownKeys$r","_objectSpread$r","PageHeader","_excluded$p","ownKeys$q","_objectSpread$q","Paragraph","lead","small","_excluded$o","ownKeys$p","DataPlaceholder","loading","_objectSpread$p","_excluded$n","ownKeys$o","_objectSpread$o","PreHeading","_excluded$m","ownKeys$n","RadioButton","_objectSpread$n","_excluded$l","_excluded2","ownKeys$m","_objectSpread$m","Select","noscript","SelectOption","_excluded$k","ownKeys$l","_objectSpread$l","Separator","_excluded$j","ownKeys$k","_objectSpread$k","SkipLink","_excluded$i","ownKeys$j","_objectSpread$j","SpotlightSection","aside","_excluded$h","ownKeys$i","_objectSpread$i","StatusBadge","status","_excluded$g","ownKeys$h","_objectSpread$h","Strong","_excluded$f","ownKeys$g","_objectSpread$g","Surface","_excluded$e","ownKeys$f","_objectSpread$f","Table","_excluded$d","ownKeys$e","_objectSpread$e","TableBody","_excluded$c","ownKeys$d","_objectSpread$d","TableCaption","_excluded$b","ownKeys$c","_objectSpread$c","TableCell","numericColumn","selected","_excluded$a","ownKeys$b","_objectSpread$b","TableFooter","sticky","_excluded$9","ownKeys$a","_objectSpread$a","TableHeader","_excluded$8","ownKeys$9","_objectSpread$9","TableHeaderCell","scope","_excluded$7","ownKeys$8","_objectSpread$8","TableRow","_excluded$6","ownKeys$7","_objectSpread$7","Textarea","dir","readOnly","_excluded$5","ownKeys$6","_objectSpread$6","Textbox","_ref$type","maxLength","inputMode","_excluded$4","ownKeys$5","_objectSpread$5","URLValue","_excluded$3","ownKeys$4","_objectSpread$4","UnorderedList","_excluded$2","ownKeys$3","_objectSpread$3","UnorderedListItem","getDefaultExportFromCjs$1","x","__esModule","prototype","hasOwnProperty","call","propTypes","exports","ReactPropTypesSecret_1","hasRequiredReactPropTypesSecret","factoryWithThrowingShims","hasRequiredFactoryWithThrowingShims","requireReactPropTypesSecret","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","requireFactoryWithThrowingShims","_pt","EMPTY$1","shallowEqual","a","b","aKeys","bKeys","every","extendStatics","__extends","setPrototypeOf","__proto__","Array","p","__","this","constructor","create","_hasOwnProperty","obj","_objectKeys","isArray","keys_1","k","i","_deepClone","JSON","parse","stringify","isInteger$1","str","charCode","len","charCodeAt","escapePathComponent","path","unescapePathComponent","hasUndefined","i_1","objKeys","objKeysLength","patchErrorMessageFormatter","message","args","messageParts","join","PatchError","_super","operation","tree","_newTarget","_this","JsonPatchError","deepClone","objOps","add","newDocument","remove","removed","move","getValueByPointer","originalValue","applyOperation","op","from","copy","valueToCopy","_areEquals","_get","arrOps","arr","splice","pointer","getOriginalDestination","validateOperation","mutateDocument","banPrototypeModifications","validator","returnValue","split","existingPathFragment","validateFunction","TypeError","slice","applyPatch","patch","results","length_1","pathLen","existingPathLen","error","validate","sequence","externalValidator","arrA","arrB","core","freeze","applyReducer","operationResult","beforeDict","WeakMap","Mirror","observers","Map","ObserverInfo","callback","observer","generate$1","invertible","mirror","get","_generate","patches","temp","toJSON","newKeys","oldKeys","deleted","oldVal","newVal","duplex","compare","tree1","tree2","generate","observe","getMirror","observerInfo","getObserverFromMirror","set","next","dirtyCheck","fastCheck","clearTimeout","setTimeout","window","addEventListener","unobserve","delete","removeObserverFromMirror","removeEventListener","root","assign","stringOrChar","jsonStringifyPrettyCompact","passedObj","options","indent","replacer","Infinity","_stringify","currentIndent","reserved","end","keyPart","nextIndent","prettified","start","match","stringLiteral","stringify$2","accessor","fn","fields","fname","accessorName","accessorFields","getter","get1","getN","field","splitAccessPath","n","j","c","q","s","substring","field$1","opt","identity$6","zero$5","one$2","truthy","falsy","log$1$1","method","input","None$2","Error$1","Warn","Info","Debug","logger","handler","warn","info","debug","isObject","isLegalKey","mergeConfig","_len","configs","_key","reduce","out","source","signals","mergeNamed","layout","writeConfig","output","recurse","peek$1","toNumber","exp$2","sign","Math","exp","log$4","symlog$1","log1p","abs","symexp","expm1","pow$4","exponent","pow","pan","domain","delta","lift","ground","d0","d1","dd","panLinear","panLog","panPow","panSymlog","constant","zoom$2","anchor","scale","da","zoomLinear","zoomLog","zoomPow","zoomSymlog","quarter","date","Date","getMonth","utcquarter","getUTCMonth","array$5","clampRange","range","min","max","span","lo","hi","isFunction$1","DESCENDING","compare$8","orders","ord","fmap","gen","comparator","comparator$1","f","ascending$3","u","v","compare1","compareN","order","constant$5","debounce","delay","tid","extend$1","extent","extentIndex","hop","has$1","property","NULL","fastmap","has$1$1","size","has","clear","clean","flush","threshold","left","right","center","l","inherits","child","parent","members","proto","writable","configurable","inrange","r0","r1","isBoolean$2","isDate$1","toString","isIterable","Symbol","iterator","isNumber$1","isRegExp","isString","flat","lerp","frac","lruCache$1","maxsize","curr","prev","update","merge$3","array0","array1","n0","n1","merged","i0","i1","repeat","reps","pad$2","padchar","align","ceil","$","toBoolean","defaultParser","toDate","parser","toSet","truncate$1","ellipsis","visitArray","visitor","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","inferColumns","rows","columnSet","row","column","pad$1","formatDate","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","isNaN","getUTCFullYear","getUTCDate","dsvFormat","delimiter","reFormat","RegExp","DELIMITER","parseRows","text","N","I","eof","eol","token","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","identity$5","feature","topology","objects","features","geometries","feature$1","bbox","properties","geometry","object$1","transformPoint","transform","x0","y0","kx","ky","dx","dy","transform$3","arcs","arc","points","pop","reverse$2","point","line","ring","polygon","coordinates","stitch","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","g","p1","p0","dp","ends","fg","unshift","gf","mesh","meshArcs","geom","geomsByArc","extract0","extract1","extract2","extract3","geoms","extractArcs","ascending$2","NaN","descending$2","bisector$1","compare2","mid","zero$4","number$6","ascendingBisect","bisectRight$1","bisectLeft$1","bisect$1","Adder","_partials","Float64Array","_n","y","valueOf","InternMap","entries","keyof","super","_intern","intern_get","intern_set","intern_delete","InternSet","Set","values","_ref6","_ref7","_ref8","ascendingDefined","e10","sqrt","e5","e2","tickSpec","stop","count","step","power","floor","log10","factor","i2","inc","round","ticks","reverse","tickIncrement","tickStep","max$2","valueof","min$2","quickselect","compareDefined","m","z","sd","swap$1","quantile$1","numbers$2","value0","subarray","quantileSorted","median","merge$2","arrays","flatten","range$5","sum$1","sum","formatDecimalParts","toExponential","coefficient","prefixExponent","re$2","formatSpecifier","specifier","exec","FormatSpecifier","zero","comma","precision","trim","formatRounded","formatTypes","toFixed","toLocaleString","toPrecision","identity$4","locale$2","format$3","formatPrefix","map$1","prefixes","formatLocale$1","grouping","thousands","currencyPrefix","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","prefix","toLowerCase","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","precisionFixed","precisionPrefix","precisionRound","definition","defaultLocale$2","t0$2","t1$1","timeInterval$1","floori","offseti","interval","offset","previous","setTime","isFinite","millisecond","durationSecond$1","durationMinute$1","durationHour$1","durationDay$1","durationWeek$1","durationMonth$1","durationYear$1","second","getMilliseconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","timeHour","getHours","utcHour","setUTCMinutes","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","getFullYear","utcMonth","setUTCMonth","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","month","week","day","hour","minute","tickIntervals","tickInterval","_ref9","utcTicks","utcTickInterval","timeTicks","timeTickInterval","YEAR","QUARTER","MONTH","WEEK","DATE","DAY","DAYOFYEAR","HOURS","MINUTES","SECONDS","MILLISECONDS","TIME_UNITS","UNITS","timeUnits","units","unit","sort","defaultSpecifiers","timeUnitSpecifier","specifiers","fmt","t0$1","localYear","dayofyear","localDayOfYear","localWeekNum","localFirst","localDate$1","H","M","S","L","utcdayofyear","utcDayOfYear","utcweek","utcWeekNum","UTC","utcFirst","utcDate$1","inv","newDate","phase","getUnit","weekday","firstDay","localGet","localInv","w","timeFloor","utcGet","utcInv","utcFloor","timeIntervals","utcIntervals","timeInterval","utcInterval","offset$3","ival","timeOffset","utcOffset","sequence$1","timeSequence","utcSequence","durationSecond","durationMinute","durationHour","durationDay","durationMonth","durationYear","Milli","Seconds","Minutes","Hours","Day","Month","Year","intervals","bin$2","ext","maxbins","localDate","utcDate","formatLocale","locale_dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pad","pads","charAt","newParse","Z","Q","V","W","U","X","utcFormat","utcParse","locale$1","timeFormat$2","timeParse$1","utcFormat$1","utcParse$1","numberRe","percentRe","requoteRe","requote","names","dISO","dow","UTCdISO","memoize","cache","spec","numberLocale","formatFloat","numberFormat","decimalChar","dec","idx","lastIndexOf","rightmostDigit","trimZeroes","formatSpan","defaultNumberLocale","defaultTimeLocale","resetNumberFormatDefaultLocale","numberFormatLocale","numberFormatDefaultLocale","timeMultiFormat","timeLocale","timeFormat","timeParse","resetTimeFormatDefaultLocale","timeFormatLocale","timeFormatDefaultLocale","defaultLocale$1","createLocale","numberSpec","timeSpec","defaultLocale","protocol_re","allowed_re","whitespace_re","fileProtocol","async","load$1","uri","sanitize","url","localFile","file","http","fileAccess","result","isFile","loadFile","base","isAllowed","hasProtocol","baseURL","startsWith","endsWith","mode","defaultProtocol","context","crossOrigin","fileLoader","fs","filename","Promise","accept","reject","readFile","data","fileReject","httpLoader","fetch","response","ok","statusText","httpReject","isValid","isNumber","typeParsers","boolean","integer","unknown","typeTests","typeList","inferType","inferTypes","types","delimitedFormat","delim","dsv","responseType","header","json","Buffer","isBuffer","parseJSON","filters","interior","exterior","topojson","format$2","csv","tsv","formats$1","reader","read","schema","timeParser","utcParser","datum","parsers","parts","pattern","parse$6","loader","load","loaderFactory","UniqueList","idFunc","list","ids","asyncCallback","df","TUPLE_ID_KEY","TUPLE_ID","isTuple","tupleid","setid","ingest$1","derive","rederive","replace$1","stableCompare","cmp","isChangeSet","changeset","rem","mod","remp","modp","reflow","insert","modify","tuple","encode","pulse","tuples","cur","modifies","CACHE$1","Parameters","force","modified","OP_ID","NO_PARAMS","Operator","init","params","react","stamp","rank","qrank","flags","_update","parameters","flag","bit","state","targets","_targets","skip","initonly","argval","_argval","argops","_argops","deps","marshall","detach","evaluate","StopPropagation","run","rv","STREAM_ID","EventStream","receive","_filter","_apply","stream","consume","_consume","val","trg","stopPropagation","merge","throttle","pause","now","dataflow","between","active","SKIP$2","onStream","touch","onOperator","updater","connect","Pulse","materialize","filter$1","visit","addFilter","MultiPulse","pulses","hash","changed","ADD","REM","MOD","changes","reentrant","ADD_REM","ADD_MOD","ALL","REFLOW","SOURCE","NO_SOURCE","NO_FIELDS","fork","clone","addAll","src","addF","remF","modF","srcF","cleans","runAfter","nomod","some","NO_OPT","Heap","nodes","peek","siftdown","last","ridx","cidx","siftup","pidx","Dataflow","logLevel","_clock","_rank","_locale","_loader","_touched","_input","_pulse","_heap","_postrun","logMethod","_log","Transform","cleanThreshold","shift","sources","targetRank","rerank","queue","_enqueue","ingest","preload","pending","_pending","requests","done","loadPending","res","request","events","send","querySelectorAll","on","prerun","postrun","_getPulse","then","pr","priority","all","cb","runAsync","_running","enqueue","singlePulse","transforms","definition$1","transform$2","Definition","numbers$1","quantiles","quartiles","estimateBandwidth","mean","variance","deviation","h","bin$1","maxb","logb","div","divide","minstep","steps","eps","nice","random","bootstrapCI","samples","alpha","mu","dotbin","smooth","thresh","smoothing","SQRT2PI","PI","SQRT2","nextSample","sampleNormal","stdev","rds","densityNormal","cumulativeNormal","cd","quantileNormal","erfinv","gaussian","sigma","dist","sample","pdf","cdf","icdf","kde","support","bandwidth","kernel","sampleLogNormal","densityLogNormal","cumulativeLogNormal","quantileLogNormal","lognormal","mixture$1","dists","weights","normalize","distributions","sampleUniform","densityUniform","cumulativeUniform","quantileUniform","uniform","constant$4","coef","predict","rSquared","ols","uX","uY","uXY","uX2","slope","Y","xv","yv","ux","uy","visitPoints","SSE","SST","sse","sst","linear$2","XY","X2","log$3","exp$1","ly","xy","YL","XYL","X2Y","c0","c1","pow$3","YS","lx","quad","x2","X3","X4","X2X2","poly","lhs","rhs","matrix","gaussianElimination","uncenter","loess","bw","yhat","residuals","robustWeights","iter","edge","denom","xk","yk","tricube","xkw","updateInterval","medianResidual","arg","cnt","output$1","MIN_RADIANS","sampleCurve","minSteps","maxSteps","minX","maxX","sx","sy","ymin","ymax","scaleY","pm","angleDelta","a0","atan2","a1","groupkey","measureName","as","noop$4","base_op","AggregateOps","cell","store","num","__count__","missing","product","mean_d","average","req","dev","variancep","stdevp","stderr","distinct","ci0","ci1","q2","q1","q3","argmin","argmax","ValidAggregateOps","createMeasure","compareIndex","_ops","add$3","set$5","_out","compileMeasures","agg","ops","getreqs","resolve","ctr","TupleStore","reset","measure","prototype$1","Aggregate$1","_adds","_mods","_alen","_mlen","_drop","_cross","_dims","_dnames","_measures","_countOnly","_counts","_prev","_inputs","_outputs","_add","_rem","_ext","_q","quartile","ci","_ci","aggr","drop","cross","dims","vals","collect","cells","inputs","outputs","inputMap","inputVisit","groupby","dname","cellkey","mname","outname","newcell","newtuple","measures","celltuple","counts","adds","mods","Bin","SortedList","resort","Collect$1","Compare$1","update$5","CountPattern","Cross","band","bins","_bins","b0","b1","process","tokens","tcase","tokenize","case","_parameterCheck","_match","_stop","_finish","stopwords","_tuples","Distributions","mixture","normal","FUNCTION","parse$4","def","Density","fieldNames","partition$1$1","groups","distribution","source$1","minsteps","maxsteps","DotBin","Expression$1","update$4","expr","Extent","Subflow","Facet$1","_keys","Field$1","update$3","Filter","Flatten","Fold","Formula","Generate","autostep","detachSubflow","activate","flow","subflow","flows","sf","_group","detached","initTargets","act","rekey","k0","k1","isMod","revisit","maxlen","fnames","generator","Methods$1","Empty$1","Impute","JoinAggregate","KDE","Key$1","update$2","Load$1","Lookup","MultiExtent$1","update$1","extents","MultiValues$1","Params$2","Pivot","PreFacet$1","Project","Proxy$1","Quantile$1","gVals","kVal","impute","getValue","getField$1","fName","kName","gNames","keyvals","gKey","kMap","gMap","partition$4","_impute","cumulative","density","defaultValue","default","_transform","limit","pivotKeys","get$5","bind","aggregateParams","project$1","lut","dt","Relay$1","Sample","Sequence","Sieve$1","TimeUnit","probs","cap","OUTPUT","TupleIndex","Values$1","utc","timezone","_floor","u0","u1","tunits","WindowOps","row_number","dense_rank","drank","percent_rank","cume_dist","cume","ntile","lag","first_value","last_value","nth_value","nth","prev_value","next_value","find$2","ValidWindowOps","WindowState","windows","countOnly","visitInputs","param","WindowOp","Window","processPartition","ignorePeers","frame","setWindow","adjustRange","bisect","wind","tx","aggregate","bin","countpattern","expression","facet","fold","formula","joinaggregate","lookup","multiextent","multivalues","pivot","prefacet","project","proxy","quantile","relay","sieve","timeunit","tupleindex","constant$3","abs$2","atan2$1","cos$2","cos","max$1","min$1","sin$2","sin","sqrt$3","epsilon$5","pi$3","halfPi$2","tau$3","asin$2","asin","pi$2","tau$2","epsilon$4","tauEpsilon","append$1","strings","Path$1","digits","_x0","_y0","_x1","_y1","_append","appendRound$1","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","y2","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","tan","acos","t01","t21","ccw","cw","rect","path$3","withPath","RangeError","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","array$4","Linear$1","_context","curveLinear","x$3","y$3","line$2$1","defined","curve","buffer","defined0","lineStart","lineEnd","area$2$1","area","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","_line","_point","circle$1","draw","noop$3","point$7","that","Basis","BasisClosed","BasisOpen","Bundle","beta","_basis","_beta","_x2","_x3","_x4","_y2","_y3","_y4","_x","_y","curveBundle","custom","bundle","point$6","_k","Cardinal","tension","curveCardinal","cardinal","CardinalClosed","_x5","_y5","curveCardinalClosed","CardinalOpen","curveCardinalOpen","point$5","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","curveCatmullRom","catmullRom","CatmullRomClosed","curveCatmullRomClosed","CatmullRomOpen","curveCatmullRomOpen","LinearClosed","sign$1","slope3","h0","h1","s0","s1","slope2","point$4","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_t","domCanvas","getContext","_t0","px","py","domImage","Image","initRange","initInterpolator","interpolator","implicit","ordinal","define","factory","extend","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color$3","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb$1","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","hsl$2","clamph","clampt","hsl2rgb","m1","m2","channels","displayable","formatHex8","formatHsl","clamp","radians$1","degrees$2","Xn","Yn","Zn","t2","t3","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab$1","lab2xyz","lrgb2rgb","hcl$2","hclConvert","A","B$1","C$1","D$1","E","ED","EB","BC_DA","cubehelix$2","Cubehelix","bl","cubehelixConvert","basis","v0","v1","v2","v3","basis$1","basisClosed","cosh","sinh","constant$2","linear$1","hue$1","gamma","nogamma","exponential","rgbGamma","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","numberArray","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","interpolate$1$1","date$1","interpolateNumber","reA","reB","am","bm","bs","bi","lastIndex","one$1","zero$3","interpolateRound","svgNode","degrees$1","identity$3","translateX","translateY","rotate","skewX","scaleX","decompose","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","createElementNS","setAttribute","baseVal","consolidate","zoom$1","zoomRho","rho","rho2","rho4","zoom","ux0","uy0","w0","ux1","uy1","w1","coshr0","tanh","duration","_1","_2","hsl","hue","hsl$1","hslLong","hcl","hcl$1","hclLong","cubehelix","cubehelixGamma","cubehelix$1","cubehelixLong","piecewise","interpolate","$$1","interpolateArray","interpolateBasis","interpolateBasisClosed","interpolateCubehelix","interpolateCubehelixLong","interpolateDate","interpolateDiscrete","interpolateHcl","interpolateHclLong","interpolateHsl","interpolateHslLong","interpolateHue","interpolateLab","interpolateNumberArray","interpolateObject","interpolateRgb","interpolateRgbBasis","interpolateRgbBasisClosed","interpolateString","interpolateZoom","quantize","number$5","identity$2","normalize$2","constants$1","bimap","polymap","copy$2","transformer$3","untransform","rescale","clamper","invert","rangeRound","continuous$1","tickFormat$1","linearish","tickFormat","prestep","maxIter","nice$1","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log2","logp","powp","transformSymlog","transformSymexp","symlogish","transformPow","transformSqrt","transformSquare","powish","pow$2","number$4","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","transformer$2","k10","copy$1","sequential","sequentialPow","transformer$1","k21","r2","divergingPow","bandSpace","paddingInner","paddingOuter","space","Linear","Log","Pow","Sqrt","Symlog","Time","Sequential","Diverging","Quantile","Quantize","Threshold","Ordinal","Point","Band","BinOrdinal","Continuous","Discrete$1","Discretizing","Interpolating","Temporal","ordinalRange","range$1","invertRange","pointish","slice$2","scales","VEGA_SCALE","registerScale","scale$4","metadata","invertExtent","invertRangeExtent","create$2","isValidScaleType","hasType","isContinuous$1","isDiscrete$2","isDiscretizing$1","isLogarithmic","isInterpolating","isQuantile$1","identity$1","linear","log$2","symlog","sequentialLog","sequentialSymlog","diverging","divergingLog","divergingSymlog","thresholds","quantize$1","scaleBinOrdinal","numbers","scaleProps","interpolateRange$1","interpolateColors","interpolate$1","quantizeInterpolator","scaleFraction","scale$1","interp","palette","apply$1","scheme$1","schemes","scheme","category10","category20","category20b","category20c","tableau10","tableau20","accent","dark2","paired","pastel1","pastel2","set1","set2","set3","blues","greens","greys","oranges","purples","reds","blueGreen","bluePurple","greenBlue","orangeRed","purpleBlue","purpleBlueGreen","purpleRed","redPurple","yellowGreen","yellowOrangeBrown","yellowOrangeRed","blueOrange","brownBlueGreen","purpleGreen","purpleOrange","redBlue","redGrey","yellowGreenBlue","redYellowBlue","redYellowGreen","pinkYellowGreen","spectral","viridis","magma","inferno","plasma","cividis","rainbow","sinebow","turbo","browns","tealBlues","teals","warmGreys","goldGreen","goldOrange","goldRed","lightGreyRed","lightGreyTeal","lightMulti","lightOrange","lightTealBlue","darkBlue","darkGold","darkGreen","darkMulti","darkRed","SymbolLegend","DiscreteLegend","defaultFormatter","ascending$1","descending$1","tickCount","minStep","validTicks","endpoints","tickValues","noSkip","varfmt","tickLog","symbols$2","labelValues","binValues","thresholdValues","isDiscreteRange","labelFormat","thresholdFormat","formatRange","formatDiscrete","formatPoint","get$4","formatValue$2","dflt","format$1","isTemporal","domainCaption","gradient_id","patternPrefix","isGradient","gradient","gradientRef","defs","get$3","Gradient$1","stops","lookup$4","horizontal","vertical","curves","orientation","entry","paramCounts","commandPattern","numberPattern","spacePattern","flagPattern","parse$3","commands","cmd","paramCount","segment","ws","parseParams","DegToRad","HalfPi","Tau","HalfSqrt3","segmentCache","bezierCache","join$1","bezier","th0","th1","rx","ry","sin_th","cos_th","a00","a01","a10","a11","cos_th0","sin_th0","cos_th1","sin_th1","th_half","sin_th_h2","x3","y3","scale$1$1","sX","sY","pathRender","tempX","tempY","tempControlX","tempControlY","controlX","controlY","anchorX","anchorY","beginPath","drawArc","coords","seg","large","sweep","rotateX","th","pl","sfactor_sq","sfactor","xc","yc","th_arc","segs","th2","th3","segments","bez","Tan30","builtins","symbols$1","parsed","customSymbol","C","rectangleX","rectangleY","rectangleWidth","rectangleHeight","number$3","vg_rect","crTL","crTR","crBL","crBR","rectangle","tl","tr","br","cornerRadius","vg_trail","ready","w2","ud","trail","value$1","x$2","y$2","arcShape","padRadius","da0","da1","ap","rp","rc0","rc1","oc","x32","y32","intersect$3","ax","ay","bx","by","kc","acos$1","lc","centroid","arc$2$1","areavShape","areahShape","lineShape","rectShape","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomRight","cornerRadiusBottomLeft","symbolShape","Symbol$1","trailShape","hasCornerRadius","clip_id","resetSVGClipId","clip$1$1","renderer","clip","_defs","clipping","Bounds","union","Item","mark","bounds","GroupItem","ResourceLoader","customLoader","increment","decrement","boundStroke","miter","stroke","strokeOpacity","sw","strokeWidth","expand","strokeJoin","miterAdjustment","MAX_VALUE","equals","angle","rotatedPoints","intersect","encloses","alignsWith","intersects","contains","sanitizeURL","catch","loadImage","img","cors","onload","onerror","complete","poll","circleThreshold","rot","ma","mb","mc","md","add$2","addL","addX","addY","addp","addpL","boundContext","deg","context$1","px1","py1","px2","py2","quadExtrema","px3","py3","cubicExtrema","sa","ea","cubic","s2","context$2","intersectPath","brush","isPointInPath","intersectPoint","box","intersectRect","intersectRule","intersectBoxLine","blend","globalCompositeOperation","value$2","addStops","addColorStop","color$2","createRadialGradient","image","ictx","fillStyle","createLinearGradient","fillRect","createPattern","gradient$2","fillOpacity","globalAlpha","Empty","lw","strokeStyle","lineWidth","lineCap","strokeCap","lineJoin","miterLimit","strokeMiterLimit","setLineDash","strokeDash","lineDashOffset","strokeDashOffset","compare$7","zindex","zorder","scene","zdirty","zitems","pickVisit","hit","drawAll","drawPath","drawOne","pick$1","gx","gy","pixelRatio","hitPath","filled","isPointInStroke","pickPath","translate$2","translateItem","markItemPath","isect","tag","nested","attr","emit","rotateItem","bound","pick","arc$2","markMultiItemPath","tip","area$2","orient","clipGroup","offset$1","strokeOffset","emitRectangle","off","rectanglePath","hitBackground","hitForeground","hitCorner","noBound","fore","strokeForeground","save","restore","dw","dh","ix","interactive","marktype","pickMark","background","foreground","getImage","imageWidth","aspect","imageHeight","imageXOffset","imageYOffset","baseline","image$1","toDataURL","ar0","ar1","imageSmoothingEnabled","drawImage","xOffset","yOffset","line$2","path$1","pathCache","path$2","scale$3","transformItem","draw$2","rect$1","rule$2","widthCache","textMetrics","fontSize","measureWidth","estimateWidth","canvas","useCanvas","use","_estimateWidth","textValue","currentFontHeight","_measureWidth","font$1","currentFont","font","measureText","lineHeight","textLines","lineBreak","multiLineOffset","widthGetter","rtl","truncate","fontFamily","quote","fontStyle","fontVariant","fontWeight","offset$2","textAlign","tempBounds$1","anchorPoint","radius","theta","text$2","lh","fillText","strokeText","trail$2","Marks","rule","boundItem$1","DUMMY","boundMark","hasItems","keys$2","sceneToJSON","sceneFromJSON","initialize$1","Scenegraph","createMark","aria","description","domCreate","doc","ns","domFind","el","childNodes","tagName","domChild","ownerDocument","domClear","removeChild","cssClass","point$2","event","getBoundingClientRect","clientX","clientLeft","clientY","top","clientTop","Handler$1","customTooltip","_active","_handlers","_tooltip","defaultTooltip$1","Renderer","_el","_bgcolor","markdef","initialize","origin","_obj","_origin","_scene","_handlerIndex","handlers","eventName","handleHref","MouseEvent","dispatchEvent","handleTooltip","show","tooltip","mdef","resolveItem","getItemBoundingClientRect","bottom","scaleFactor","resize","bgcolor","_width","_height","_scale","dirty","render","_call","_render","renderAsync","_ready","_load","redraw","DragEnterEvent","DragLeaveEvent","DragOverEvent","MouseDownEvent","MouseMoveEvent","MouseOutEvent","MouseOverEvent","ClickEvent","MouseWheelEvent","TouchStartEvent","TouchMoveEvent","TouchEndEvent","TooltipShowEvent","TooltipHideEvent","HrefEvent","CanvasHandler","_down","_touch","_first","_events","eventListenerCheck","eventBundle","fire","moveEvent","overEvent","outEvent","pickEvent","exit","inactive","_canvas","DOMMouseScroll","mousemove","dragover","mouseout","dragleave","mousedown","touchstart","changedTouches","touchmove","touchend","vegaType","devicePixelRatio","CanvasRenderer","_options","_redraw","_dirty","_tempb","base$1","SVGHandler","_hrefHandler","listener","_tooltipHandler","externalContext","inDOM","HTMLElement","parentNode","ratio","setTransform","ctx","db","vb","viewBounds","clipToBounds","clip$2","clearRect","__data__","svg","_svg","ARIA_HIDDEN","ARIA_LABEL","ARIA_ROLE","ARIA_ROLEDESCRIPTION","GRAPHICS_OBJECT","GRAPHICS_SYMBOL","roledesc","AriaIgnore","AriaGuides","desc","caption","title","extractTitle","channelCaption","titleCaption","AriaEncode","ariaRole","ariaRoleDescription","ariaItemAttributes","hide","ariaMarkAttributes","ariaGuide","ariaMark","innerText","markup","buf","outer","inner","stack","open","attrs","close","serializeXML","_serialize","hasAttributes","attributes","hasChildNodes","nodeType","nodeValue","stylesAttr","stylesCss","rootAttributes","svgns","SVGRenderer","_dirtyID","_root","dirtyParents","updateGradient","grad","pt","setAttributes","preserveAspectRatio","fx","fy","fr","updateClipping","mask","bind$1","sibling","__values__","bg","cg","ownerSVGElement","previousSibling","siblingCheck","nextSibling","_clearDefs","setAttributeNS","RootIndex","setProperty","removeAttribute","_dirtyCheck","_dirtyAll","isDirty","isGroup","lastChild","element$1","values$2","extra","mark_extras","setStyle","ts","textContent","removeAttributeNS","removeProperty","loc","SVGStringRenderer","_text","class","attrList","_hrefs","prefixed","styleList","Canvas","None$1","RenderType","PNG","SVG","None","modules","renderModule","intersect$2","hits","intersectMark","intersectGroup","visitMark","intersectItem","marks","headless","clipBounds","boundClip","TOLERANCE","sceneEqual","pathEqual","ka","kb","objectEqual","Top$1","Left$1","Right$1","Bottom$1","TopLeft","TopRight","BottomLeft","BottomRight","Start$1","Middle$1","End$1","X$1","Y$1","Group","AxisRole$1","TitleRole$1","FrameRole$1","ScopeRole$1","LegendRole$1","RowHeader","RowFooter","RowTitle","ColHeader","ColFooter","ColTitle","Padding$1","Symbols$1","Fit","FitX","FitY","Pad","All","Each","Flush","Column","Row","Bound$1","boundItem","view","rebound","markBounds","COUNTER_NAME","Identifier$1","Mark$2","Overlap$1","counter","_signals","scenegraph","lookup$1$1","Init","methods","parity","greedy","sep","intersect$1","hasOverlap","hasBounds","reset$1","Render$1","separation","boundScale","boundTolerance","tolerance","boundTest","boundOrient","tempBounds","set$4","isYAxis","axisLayout","axis","indices","grid","labels","axisIndices","position","minExtent","maxExtent","titlePadding","dl","axisTitleLayout","auto","bboxFlush","bboxFull","get$2","offsetValue$1","gridLayout","nodirty","alignCol","alignRow","padCol","padRow","ncols","nrows","xExtent","xMax","yExtent","yMax","boxes","trellisLayout","views","rowheaders","rowfooters","colheaders","colfooters","rowtitle","coltitle","gridLayoutGroups","boundFlush","boundFull","headerBand","layoutHeaders","footerBand","titleAnchor","titleBand","layoutTitle","headers","isX","bf","stride","back","legendParams","config","lookup$3","legends","offsets","mult","legendLayout","legend","_bounds","ex","ey","tpad","ty","translate$1","legendTitleOffset","legendGroupLayout","legendBounds","widths","legendEntryLayout","lr","noBar","vgrad","ViewLayout$1","xBounds","yBounds","autosize","pos","subtitle","titleLayout","_autosize","viewWidth","viewHeight","_resizeView","viewSizeLayout","layoutGroup","shouldReflow","vtx","identifier","overlap","viewlayout","AxisTicks$1","DataJoin$1","defaultItemCreate","Encode$1","LegendEntries$1","newMap","fmod","encoders","reenter","enter","fraction","lskip","perc","adjust","labelFraction","perc2","sourceX","sourceY","targetX","targetY","LinkPath","Paths","line$1","arc$1","rr","hypot","iy","sr","ta","sc","ss","tc","mr","Pie","DEFAULT_COUNT","includePad","SKIP$1","Scale$1","domainCheck","adjustScheme","flip","SortItems$1","isContinuousColor","rawDomain","domainMid","scaleKey","rangeStep","configureRangeStep","scheme$1$1","schemeExtent","interpolateGamma","schemeCount","configureScheme","configureRange","domainRaw","configureBins","raw","includeZero","padDomain","domainMin","domainMax","domainImplicit","configureDomain","Zero","Center$1","Normalize","DefOutput","Stack","stackCenter","stackNormalize","stackZero","lastPos","lastNeg","partition$3","encode$1","axisticks","datajoin","legendentries","linkpath","pie","sortitems","epsilon$3","epsilon2","pi$1","halfPi$1","quarterPi","tau$1","degrees","radians","abs$1","cos$1","log$1","pow$1","sin$1","sqrt$1","asin$1","noop$2","streamGeometry","streamGeometryType","streamObjectType","Feature","FeatureCollection","Sphere","sphere","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","closed","coordinate","polygonStart","polygonEnd","geoStream","lambda00$2","phi00$2","lambda0$1","cosPhi0","sinPhi0","lambda0","phi0","lambda1","phi1","lambda2","lambda00$1","phi00$1","deltaSum","ranges","range$4","areaRingSum$1","areaSum$1","areaStream$1","areaRingStart$1","areaRingEnd$1","areaRing","areaPointFirst$1","areaPoint$1","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","W0","W1","X0$1","Y0$1","Z0$1","X1$1","Y1$1","Z1$1","X2$2","Y2$2","Z2$1","lambda00","phi00","x0$4","y0$4","z0","boundsStream$2","boundsPoint$1","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","inflection","phii","lambdai","antimeridian","rangeCompare","rangeContains","centroidStream$1","centroidPoint$1","centroidLineStart$1","centroidLineEnd$1","centroidRingStart$1","centroidRingEnd$1","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","circleRadius","cosRadius","clipBuffer","lines","rejoin","pointEqual","Intersection","other","clipRejoin","compareIntersection","startInside","subject","link","isSubject","longitude","clip$1","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","winding","point0","sinPhi1","cosPhi1","point1","absDelta","intersection","phiArc","polygonContains","pointLine","ringSegments","validSegment","clipAntimeridian","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","to","direction","clipCircle","cr","smallRadius","notHemisphere","visible","two","n2","n2n2","n1n2","determinant","c2","n1xn2","uu","polar","v00","point2","sinRadius","circleStream","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","polygonInside","cleanInside","graticuleX","graticuleY","x00$2","y00$2","x0$3","y0$3","identity","areaSum","areaRingSum","areaStream","areaRingStart","areaRingEnd","areaPointFirst","areaPoint","pathArea","x0$2","y0$2","boundsStream","x00$1","y00$1","x0$1","y0$1","boundsStream$1","X0","Y0","Z0","X1","Y1","Z1","X2$1","Y2$1","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","pathCentroid","PathContext","_radius","pointRadius","lengthRing","lengthSum","lengthStream","lengthPointFirst","lengthPoint","pathMeasure","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","append","appendRound","geoPath","projection","projectionStream","contextStream","transformer","TransformStream","fit$1","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","resample","delta2","resampleLineTo","depth","phi2","dx2","dy2","dz","b00","c00","resampleStream","ringPoint","resample$1","resampleNone","transformRadians","scaleTranslateRotate","scaleTranslate","cosAlpha","sinAlpha","ai","fi","projection$1","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cacheStream","preclip","postclip","recenter","transformRotate","clipAngle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","sy0","forward","cylindricalEqualAreaRaw","r0y","geoConicEqualArea","geoAlbers","azimuthalRaw","azimuthalInvert","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","nx","A1","A2","A3","A4","equalEarthRaw","l2","l6","gnomonicRaw","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","epsilon$2","pi","halfPi","sqrt2","mollweideBromleyTheta","cp","cpsinPhi","mollweideRaw","mollweideBromleyRaw","defaultPath","projectionProperties","proj","projections","create$1","getProjectionPath","albers","albersusa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","azimuthalequalarea","azimuthalequidistant","conicconformal","conicequalarea","conicequidistant","equalEarth","equirectangular","gnomonic","mercator","mollweide","naturalEarth1","orthographic","stereographic","transversemercator","noop$1","cases","contours","smoothLinear","tz","contour","polygons","holes","startIndex","endIndex","isorings","area$1","hole","contains$1","xt","yt","_0","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear$1","Isocontour","transform$1","transformPolygon","transformRing","number$2","density2D","weight","values0","Float32Array","values1","blurX","blurY","sz","cellSize","LN2","KDE2D","levels","paths","transformPaths","PARAMS","Contour","partition$2","post","GeoJSON","GeoPath","GeoPoint","GeoShape","Graticule","DX","DY","graticule","outline","extentMajor","extentMinor","stepMajor","stepMinor","Heatmap","dependency","$x","$y","$value","$max","Projection$1","set$3","_features","_points","lon","lat","geojson","initPath","shapeGenerator","shared","dep","opacity_","color_","can","getImageData","pix","putImageData","toCanvas","fit","featurize","collectGeoJSON","geo","geopath","geopoint","geoshape","heatmap","isocontour","kde2d","add$1","xm","ym","xp","yp","leaf","Quad","defaultX","defaultY","quadtree","Quadtree","leaf_copy","treeProto","constant$1","jiggle","x$1","vx","y$1","vy","index$1","find$1","nodeById","nodeId","cover","xz","yz","find","quads","retainer","removeAll","visitAfter","noop","dispatch","Dispatch","get$1","set$2","typename","T","typenames","parseTypenames","taskHead","taskTail","timeout","interval$2","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","setFrame","requestAnimationFrame","clearNow","Timer$1","_time","_next","timer$1","restart","wake","timerFlush","sleep","nap","poke","clearInterval","setInterval","a$1","c$1","m$1","initialRadius","initialAngle","forceSimulation","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","lcg$1","tick","iterations","initializeNodes","initializeForce","randomSource","closest","ForceMap","strength","collide","radii","ri","ri2","prepare","rj","_nodes","_random","nbody","strengths","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","distances","bias","distance","initializeStrength","initializeDistance","Forces","ForceParams","ForceConfig","ForceOutput","Force","setup","sim","getForce","numForces","setForceParam","change","iters","stopped","static","finish","defaultSeparation$2","meanXReduce","maxYReduce","hierarchy","mapChildren","objectChildren","childs","Node$2","eachBefore","computeHeight","copyData","optional","constantZero","eachAfter","each","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","extendBasis","B","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","enclosesWeak","encloseBasis","encloseBasis1","r21","r3","a2","a3","b2","b3","c3","d3","ab","place","score","Node$1","circle","packSiblingsRandom","circles","array$2","aa","sj","sk","pack","shuffle","packEncloseRandom","defaultRadius","radiusLeaf","packChildrenRandom","translateChild","roundNode","treemapDice","preroot","ambiguous","imputed","defaultId","defaultParentId","parentId","stratify","nodeKey","currentId","currentParentId","nodeByKey","slash","normalize$1","P","parentof","defaultSeparation$1","nextLeft","nextRight","moveSubtree","wm","wp","nextAncestor","vim","TreeNode","treemapSlice","squarifyRatio","sumValue","minValue","maxValue","newRatio","minRatio","dice","treemapSquarify","squarify","treemapResquarify","resquarify","_squarify","lookup$2","Nest","children$1","nest","valuesByKey","keyValue","HierarchyLayout","defaultSeparation","setParams","setFields","Output$3","Pack","lcg","Output$2","Partition","Stratify","partition","positionNode","parentKey","Layouts","tidy","nodeSize","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","som","apportion","cluster","previousNode","meanX","maxY","leafLeft","leafRight","Output$1$1","Tree","TreeLinks","Tiles","binary","sums","valueOffset","valueTarget","valueLeft","valueRight","slicedice","Output$4","Treemap","tile","paddingStack","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","treelinks","ALPHA_MASK","getBuffer","Uint32Array","DIV","SIZE$1","RIGHT0","RIGHT1","scaler","bitmap","_set","_clear","getRange","indexStart","indexEnd","setRange","clearRange","outOfBounds","Bitmap","textWidth","textHeight","collision","bm0","bm1","X_DIR","Y_DIR","Aligns","Baselines","boundary","isInside","anchorCode","TOP","MIDDLE","BOTTOM","placeAreaLabel","bitmaps","avoidBaseMark","markIndex","areaWidth","maxAreaWidth","tryLabel","maxSize","_xMid","_yMid","swapTmp","labelPlaced","labelPlaced2","bm2","labelLayout","texts","avoidMarks","lineAnchor","positions","getOffsets","anchors","Int8Array","getAnchors","grouptype","isGroupArea","markBoundary","infPadding","isNaiveGroupArea","maxTextWidth","maxTextHeight","labelInside","baseMark","border","baseMarkContext","strokeContext","baseMarkBuffer","strokeBuffer","layer1","layer2","strokeAlpha","baseMarkAlpha","markBitmaps","baseBitmaps","_d$textWidth","sizeFactor","insideFactor","SQRT1_2","placeMarkLabel","Output$1","Anchors","Label$1","null","Loess","Methods","Regression","dof","degreesOfFreedom","model","dom","reg","regression","splitter","resulterrbound","elen","flen","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","vec","ccwerrboundB","ccwerrboundC","C1","C2","orient2d","detleft","detright","det","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_i","_j","u3","acx","bcx","acy","bcy","estimate","errbound","C1len","C2len","Dlen","orient2dadapt","EPSILON","EDGE_STACK","Delaunator","getX","defaultGetX","getY","defaultGetY","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","hullPrev","hullNext","hullTri","hullHash","minY","minDist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","triangles","halfedges","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","_legalize","pseudoAngle","ar","al","inCircle","hbl","_link","bp","tempDist","swap","tmp","epsilon","Path","Voronoi$1","delaunay","xmin","xmax","_circumcenters","vectors","_init","circumcenters","inedges","ti","tj","_renderSegment","_project","renderBounds","renderCell","_clip","cellPolygons","cellPolygon","_regioncode","_clipSegment","_step","neighbors","cj","loop","li","aj","lj","_cell","e0","_simplify","_clipInfinite","_clipFinite","e1","sx0","sx1","sy1","_edgecode","_edge","vx0","vy0","vxn","vyn","tau","pointX","pointY","jitter","Delaunay","flatArray","flatIterable","_delaunator","_hullIndex","collinear","hullIndex","voronoi","dc","renderHull","renderPoints","hullPolygon","renderTriangle","trianglePolygons","trianglePolygon","Voronoi","defaultExtent","toPathString","cloudRadians","ch","cloud","spiral","archimedeanSpiral","words","board","dxdy","startX","startY","maxDelta","cloudCollide","collideRects","sprite","msx","contextAndRatio","zeroArray","tags","xoff","yoff","hasText","cloudSprite","cloudBounds","functor","spirals","di","w32","maxh","wcr","wsr","hcr","hsr","pixels","seen","seenRow","archimedean","rectangular","Output","Params$1","Wordcloud","fontSizeRange","fsize","sizeScale","wordcloud","array8","Uint8Array","array16","Uint16Array","array32","array$1","Dimension","query","one","onAdd","added","dim","SortedIndex","addi","oldv","oldi","addv","permute","index0","value1","index1","merge$1","reindex","CrossFilter","lengthen","_index","Bitmaps","_indices","ResolveFilter","reinit","eval","bits","remMap","modMap","indexMap","incrementOne","incrementAll","old","lo1","hi1","lo0","hi0","ignore","pass","xf","crossfilter","resolvefilter","Literal","Property","ArrayExpression","BinaryExpression","CallExpression","ConditionalExpression","LogicalExpression","MemberExpression","ObjectExpression","UnaryExpression","ASTNode","TokenName","lookahead","elements","callee","consequent","alternate","argument","TokenBooleanLiteral","TokenEOF","TokenIdentifier","TokenKeyword","TokenNullLiteral","TokenNumericLiteral","TokenPunctuator","TokenStringLiteral","SyntaxArrayExpression","SyntaxBinaryExpression","SyntaxCallExpression","SyntaxConditionalExpression","SyntaxIdentifier","SyntaxLiteral","SyntaxLogicalExpression","SyntaxMemberExpression","SyntaxObjectExpression","SyntaxProperty","SyntaxUnaryExpression","MessageUnexpectedToken","MessageUnexpectedNumber","MessageUnexpectedString","MessageUnexpectedIdentifier","MessageUnexpectedReserved","MessageUnexpectedEOS","MessageInvalidRegExp","MessageUnterminatedRegExp","MessageStrictOctalLiteral","MessageStrictDuplicateProperty","ILLEGAL$1","DISABLED","RegexNonAsciiIdentifierStart","RegexNonAsciiIdentifierPart","assert","condition","isDecimalDigit","isHexDigit","isOctalDigit","isWhiteSpace","isLineTerminator","isIdentifierStart","fromCharCode","isIdentifierPart","keywords$2","skipComment","scanHexEscape","throwError","scanUnicodeCodePointEscape","cu1","cu2","getEscapedIdentifier","substr","scanIdentifier","getIdentifier","scanPunctuator","code2","ch2","ch3","ch4","ch1","scanNumericLiteral","scanHexLiteral","octal","scanOctalLiteral","scanRegExp","classMarker","terminated","literal","scanRegExpBody","search","scanRegExpFlags","$0","$1","exception","testRegExp","regex","advance","scanStringLiteral","lex","finishBinaryExpression","operator","finishCallExpression","finishIdentifier","finishLiteral","finishMemberExpression","computed","member","finishProperty","kind","messageFormat","msg","whole","throwUnexpected","expect","matchKeyword","keyword","parseArrayInitialiser","parseConditionalExpression","finishArrayExpression","parseObjectPropertyKey","parseObjectProperty","parseObjectInitialiser","finishObjectExpression","legalKeywords","parsePrimaryExpression","parseExpression$1","parseGroupExpression","parseArguments","parseNonComputedProperty","isIdentifierName","parseComputedMember","parsePostfixExpression","parseLeftHandSideExpressionAllowCall","parseUnaryExpression","finishUnaryExpression","binaryPrecedence","prec","marker","markers","parseBinaryExpression","finishConditionalExpression","parser$1","Constants$1","LN10","LOG2E","LOG10E","MIN_VALUE","Functions$1","codegen","cast","fncall","STRING","REGEXP","datetime","timezoneoffset","utcdate","utcday","utcyear","utcmonth","utchours","utcminutes","utcseconds","utcmilliseconds","upper","lower","regexp","if","allowed","forbidden","constants","functions","globalvar","fieldvar","outputGlobal","globals","memberDepth","ast","Generators","Identifier","stripQuotes","ascending","descending","zero$2","set$1","Intersect","Union","SelectionId","$selectionId","TYPE_ENUM","TYPE_RANGE_INC","TYPE_RANGE_EXC","TYPE_RANGE_LE","TYPE_RANGE_RE","UNIT_INDEX","testPoint","dval","bisector","bisectLeft","bisectRight","_len6","others","_key6","_len5","_key5","E_union","E_intersect","R_union","R_intersect","selectionVisitor","indexName","dataName","getData","indataRef","tuplesRef","data$1","wrap","timeFormat$1","dateObj","setYear","ScalePrefix","SignalPrefix","dataVisitor","scaleVisitor","addScaleDependency","scaleName","scaleRef","getScale","nameOrFunction","maybeScale","isRegisteredScale","internalScaleFunctions","fnctx","visitors","__bandwidth","_bandwidth","_range","geoMethod","methodName","globalMethod","geoArea","geoBounds","deltaMax","geoCentroid","channel_luminance_value","channelValue","luminance","equal$1","equalArray","equalObject","removePredicate","accessors","seq","treeNodes","_window","markname","functionContext","isBoolean","isDate","isDefined","indexof","_len2","_key2","lastindexof","_len3","_key3","repl","_len4","_key4","pluck","lab","contrast","color1","color2","lum1","lum2","monthFormat","monthAbbrevFormat","dayFormat","dayAbbrevFormat","inScope","pinchDistance","touches","pinchAngle","screen","containerSize","container","clientWidth","clientHeight","windowSize","innerWidth","innerHeight","bandspace","setdata","pathShape","retval","toggle","predicate","_trigger","lassoAppend","lasso","lassoPath","intersectLasso","pixelLasso","bb","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","testx","testy","intersections","prevX","prevY","pointInPolygon","eventFunctions","thisPrefix","astVisitors","codegenParams","codeGenerator","expressionFunction","signalName","getSignal","signalRef","$expr","$fields","$params","miss","unitIdx","isMulti","vl5","resUnit","resolved","multiRes","acc","Skip$2","Swap","canonicalType","expression$2","expressionCodegen","parameter","adjustSpatial$1","lt","gt","_compare","parseParameter$2","PARSERS","$ref","$key","$flat","parseParameters","parameterExpression","$field","$name","$encode","enc","encodeExpression","$output","$compare","$order","$tupleid","$subflow","subctx","operators","SKIP","Context","Subcontext","subcontext","isCollect","$ingest","$format","$request","unresolved","signal","operatorExpression","eventExpression","handlerExpression","eventConfig","parseOperator","parseOperatorParameters","parseStream","updates","parseUpdate","isOperator","srcid","getState","dataset","setState","substate","Default","setCursor","cursor","globalCursor","dataref","_runtime","_viewWidth","_viewHeight","eventExtend","_renderer","vega","itemGroup","extension","VIEW$1","NO_TRAP","trap","trackEventListener","_eventListeners","permit","_eventConfig","itemFilter","markTarget","invoke","BindClass","NameClass","RadioClass","Event","wrapper","checkbox","select","radio","range$2","option","valuesEqual","selectedIndex","prepend","initializeRenderer","lookup$1","querySelector","number$1","padding$1","paddingObject$1","renderHeadless","module","_scenegraph","Width","Height","Padding","Skip$1","dataTest","signalTest","defaultTooltip","formatArray","formatValue$1","formatTooltip","View$1","_elBind","_renderType","_handler","_globalCursor","_preventDefault","_timers","_resizeListeners","defaults","unpack","initializeEventConfig","runtime","_bind","bindings","_resize","resetSize","_resizeWidth","_resizeHeight","resizePadding","initializeResize","_background","user","cursor$1","hover","lookupSignal","findOperatorHandler","addOperatorListener","removeOperatorListener","resizeRenderer","_desc","_resetRenderer","rerun","addResizeListener","removeResizeListener","addSignalListener","removeSignalListener","addDataListener","removeDataListener","timer","total","_restart","elapsed","interval$1","timestamp","prevent","allow","finalize","timers","listeners","hoverSet","leaveSet","elBind","initializeAria","Handler","prevHandler","initializeHandler","binding","toImageURL","mime","blob","Blob","URL","createObjectURL","toBlobURL","toSVG","VIEW","LBRACK","RBRACK","LBRACE","RBRACE","COLON","COMMA","NAME","GT","ILLEGAL","DEFAULT_MARKS","DEFAULT_SOURCE","MARKS","eventSelector","selector","parseMerge","parseSelector","endChar","pushChar","popChar","parseBetween","parseThrottle","isMarkType","parseStream$1","parseAutosize","paddingObject","parsePadding","encoder","addEncode","addEncoders","extendEncode","MarkRole","FrameRole","ScopeRole","AxisRole","AxisDomainRole","AxisGridRole","AxisLabelRole","AxisTickRole","AxisTitleRole","LegendRole","LegendBandRole","LegendEntryRole","LegendGradientRole","LegendLabelRole","LegendSymbolRole","LegendTitleRole","TitleRole","TitleTextRole","TitleSubtitleRole","applyDefault","entry$1","gradient$1","_color","color$1","resolveField","parseEncode","applyDefaults","parseBlock","block","parse$1","rule$1","OUTER","OUTER_INVALID","outerError","parseSignal","addSignal","addBinding","Entry$1","fieldRef$1","keyFieldRef","compareRef","Descending","aggrField","Scope$1","View","isSignal","hasSignal","specValue","deref","Timer","mergeStream","nestedStream","eventStream","streamParameters","addStream","eventSource","markrole","filterMark","OP_VALUE_EXPR","isSubscope","mergeSources","addUpdate","streamSource","Aggregate","AxisTicks","Bound","Collect","Compare","DataJoin","Encode","Expression","Facet","Field","Key","LegendEntries","Load","Mark$1","MultiExtent","MultiValues","Overlap","Params","PreFacet","Projection","Proxy","Relay","Render","Scale","Sieve","SortItems","ViewLayout","Values","FIELD_REF_ID","MULTIDOMAIN_SORT_OPS","parseScale","parseScaleDomain$1","parseScaleRange$1","parseLiteral","parseScaleInterpolate","parseScaleNice","parseArray","objectProperty","parseScaleBins","dataLookupError","explicitDomain","multipleDomain","singularDomain","valuesRef","parseSort","domainRef","extentRef","coll","addDataPipeline","fieldRef","ordinalMultipleDomain","quantileMultipleDomain","numericMultipleDomain","countsRef","sortRef","multidomain","parseParameter$1","Top","Left","Right","Bottom","Center","Vertical","Start","End","Index","Label","Offset","Perc","Perc2","Value","GuideLabelStyle","GuideTitleStyle","GroupTitleStyle","GroupSubtitleStyle","Symbols","Gradient","Discrete","Size","LegendScales","Skip","zero$1","GroupMark","RectMark","RuleMark","SymbolMark","TextMark","guideGroup","isVertical","symbolDirection","gradientDirection","gradientLength","gradientWidth","gradientThickness","gradientHeight","entryColumns","getEncoding","anchorExpr","alignExpr$1","extendOffset","guideMark","extras","legendGradient","userEncode","thickness","legendGradientDiscrete","dataRef","vv","alignExpr","baselineExpr","legendGradientLabels","labelLimit","gradientLabelLimit","labelOffset","gradientLabelOffset","legendSymbolGroups","symbolOffset","valueRef","xSignal","yEncode","baseFill","baseStroke","symbolBaseFillColor","symbolBaseStrokeColor","symbols","isL","isR","isLR","isVG","baseline$1","alignFlip","exprAlign","exprAnchor","exprAngle","exprBaseline","getRole","parseTransform","pdef","parseParameter","lookupRef","parseIndexParameter","parseSubParameter","parseSubParameters","projectionRef","parameterValue","isExpr","isField","isCompare","outerExpr","exprRef","outerField","isData","getDataRef","DataScope","fieldKey","addSortField","ds","optype","sortKey","parseTrigger","trigger","parseMark","layoutRef","boundRef","keyRef","parseData$1","joinRef","$context","markpath","markRef","generates","encodeRef","pushState","subscope","addData","toRuntime","parseFacet","parseSubflow","popState","tol","parseOverlap","parseLegend$1","legendEncode","entryLayout","scaleType","scaleCount","legendType","entryRef","tickMinStep","legendSymbolLayout","getChannel","getStyle","getFontSize","sizeExpression","_anchor","legendTitle","buildLegendEncode","fromEntries","angleExpr","parseTitle","buildTitle","titleEncode","buildSubTitle","groupEncode","parseData$2","upstream","analyze","getSign","ifLeftTopExpr","ifX","ifXEnc","ifY","ifYEnc","ifTop","ifTopExpr","ifRight","ifRightExpr","$orient","ifEnc","ifExpr","isSimple","toExpr","ifOrient","fallback","axisConfig","styleProp","keys$1","axisGrid","vscale","gridScale","offsetValue","tickPos","gridStart","gridEnd","flushExpr","axisTitle","titlePos","autoY","autoX","autoLayout","parseAxis$1","or","axisBand","xyKeys","axisX","axisY","orientKeys","axisTop","axisBottom","axisLeft","axisRight","axisEncode","tickBand","ticksRef","tickSize","axisTicks","flushOffset","labelAlign","labelBaseline","flushOn","offsetExpr","axisLabels","pos0","pos1","axisDomain","buildAxisEncode","parseScope","preprocessed","addProjection","parseProjection$1","addScale","initScale","parseSignalUpdates","axes","parseLambdas","rootEncode","parseView","signalObject","pre","collectSignals","Scope","lambdas","_id","_subid","_nextsub","_parent","_encode","_lookup","_markpath","Subscope","propertyLambda","arrayLambda","objectLambda","vref","annotate","check","isExpr$1","sig","hasOwnSignal","addScaleProj","projectionType","dataScope","vegaImport","bandwidthNRD","codegenExpression","interpolateRange","isFunction","lruCache","defaultFont","defaultColor","lightGray","square","subtitlePadding","bandPosition","domainWidth","domainColor","gridWidth","gridColor","labelAngle","labelPadding","tickColor","tickOffset","tickRound","tickWidth","gridAlign","columnPadding","rowPadding","gradientStrokeColor","gradientStrokeWidth","labelOverlap","symbolLimit","symbolType","symbolSize","symbolStrokeWidth","titleLimit","titleOrient","category","ramp","parseExpression","pathCurves","pathParse","pathRectangle","pathSymbols","pathTrail","randomInteger","randomKDE","randomLCG","seed","randomLogNormal","randomMixture","randomNormal","randomUniform","regressionConstant","regressionExp","regressionLinear","regressionLoess","regressionLog","regressionPoly","regressionPow","regressionQuad","resetDefaultLocale","resetSVGDefIds","runtimeContext","scenePickVisit","sceneVisit","sceneZOrder","setRandom","stringValue","timeBin","version","Constants","Ops","Unary","Functions","ms","getTime","EventFunctions","DisallowedMethods","setImmediate","Visitors","interpret","expression$1","adjustSpatial","pkg$1","_instanceof","nativeMap","nativeSet","nativePromise","circular","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","__isArray","__isRegExp","__getRegExpFlags","__isDate","allocUnsafe","getPrototypeOf","keyChild","valueChild","entryChild","descriptor","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","global","ignoreCase","clonePrototype","clone_","fastDeepEqual","equal","fastJsonStableStringify","opts","cycles","aobj","bobj","seenIndex","stableStringify","isLogicalOr","isLogicalAnd","and","isLogicalNot","not","forEachLeaf","subop","normalizeLogicalComposition","normalizer","deepEqual","duplicate","never","omit","stringify$1","isNullOrFalse","includes","mergeDeep$1","dest","_len7","_key7","deepMerge_$1","unique","setEqual","hasIntersection","prefixGenerator","wrappedWithAccessors","computedPrefixes","fieldIntersection","isEmpty","entries$1","varName","alphanumericS","logicalExpr","deleteNestedProperty","orderedProps","titleCase","accessPathWithDatum","pieces","flatAccessWithDatum","escapePathAccess","replacePathInField","replaceAll","replacement","removePathFromField","accessPathDepth","getFirstDefined","_len8","_key8","idCounter","uniqueId","internalField","isInternalField","normalizeAngle","isNumeric","ROW","COLUMN","FACET","Y2","XOFFSET","YOFFSET","RADIUS","RADIUS2","THETA","THETA2","LATITUDE","LONGITUDE","LATITUDE2","LONGITUDE2","COLOR","FILL","STROKE","SHAPE","SIZE","ANGLE","OPACITY","FILLOPACITY","STROKEOPACITY","STROKEWIDTH","STROKEDASH","TEXT$1","ORDER","DETAIL","KEY","TOOLTIP","HREF","URL$1","DESCRIPTION","POLAR_POSITION_CHANNEL_INDEX","radius2","isPolarPositionChannel","GEO_POSIITON_CHANNEL_INDEX","longitude2","latitude","latitude2","getPositionChannelFromLatLong","channel","isGeoPositionChannel","GEOPOSITION_CHANNELS","UNIT_CHANNEL_INDEX","detail","isColorChannel","FACET_CHANNEL_INDEX","FACET_CHANNELS","CHANNEL_INDEX","CHANNELS","_o","_d","_tt1","SINGLE_DEF_CHANNEL_INDEX","_r","_c","_f","SINGLE_DEF_UNIT_CHANNEL_INDEX","isChannel","SECONDARY_RANGE_CHANNEL","isSecondaryRangeChannel","getMainRangeChannel","getVgPositionChannel","getSecondaryRangeChannel","getSizeChannel","getOffsetChannel","getOffsetScaleChannel","getMainChannelFromOffsetChannel","UNIT_CHANNELS","_xo","_yo","_latitude","_longitude","_latitude2","_longitude2","_theta","_theta2","_radius2","NONPOSITION_CHANNEL_INDEX","NONPOSITION_CHANNELS","POSITION_SCALE_CHANNEL_INDEX","POSITION_SCALE_CHANNELS","isXorY","POLAR_POSITION_SCALE_CHANNEL_INDEX","POLAR_POSITION_SCALE_CHANNELS","getPositionScaleChannel","sizeType","OFFSET_SCALE_CHANNEL_INDEX","isXorYOffset","_tt","_hr","_u","_al","_dd","_oo","NONPOSITION_SCALE_CHANNEL_INDEX","NONPOSITION_SCALE_CHANNELS","SCALE_CHANNEL_INDEX","SCALE_CHANNELS","isScaleChannel","supportMark","ALL_MARKS","ALL_MARKS_EXCEPT_GEOSHAPE","bar","getSupportedMark","_g","rangeType","AGGREGATE_OP_INDEX","MULTIDOMAIN_SORT_OP_INDEX","isArgminDef","isArgmaxDef","isAggregateOp","COUNTING_OPS","isCountingAggregateOp","SUM_OPS","SHARED_DOMAIN_OPS","binToString","normalizeBin","isParameterExtent","isBinning","isBinParams","binned","isBinned","autoMaxBins","isExprRef","replaceExprRef","newIndex","signalRefOrValue","extractTitleConfig","titleConfig","subtitleColor","subtitleFont","subtitleFontSize","subtitleFontStyle","subtitleFontWeight","subtitleLineHeight","rest","nonMarkTitleProperties","titleMarkConfig","subtitleMarkConfig","isText","isSignalRef","isVgRangeStep","isDataRefDomain","VG_MARK_CONFIGS","VG_MARK_INDEX","VG_CORNERRADIUS_CHANNELS","signalOrValueRefWithCondition","conditionalSignalRefOrValue","signalOrValueRef","exprFromSignalRefOrValue","exprFromValueRefOrSignalRef","signalOrStringValue","applyMarkConfig","propsList","getMarkConfig","markDef","getStyles","_mark$style","getMarkPropOrConfig","vgChannel","ignoreVgConfig","getMarkStyleConfig","styleConfigIndex","getStyleConfig","styles","styleConfig","sortParams","orderDef","fieldRefOption","orderChannelDef","_orderChannelDef$sort","vgField","mergeTitleFieldDefs","f1","f2","fdToMerge","fieldDef1","mergeTitle","title1","title2","mergeTitleComponent","v1Val","v2Val","explicit","invalidSpec","FIT_NON_SINGLE","containerSizeNonSingle","containerSizeNotCompatibleWithAutosize","fitDirection","droppingFit","unknownField","cannotProjectOnChannelWithoutField","cannotProjectAggregate","selectionNotSupported","NEEDS_SAME_SELECTION","columnsNotSupportByRowCol","differentParse","local","invalidTransformIgnored","customFormatTypeNotAllowed","offsetNestedInsideContinuousPositionScaleDropped","mainChannel","replaceOffsetWithMainChannel","invalidFieldType","droppingColor","emptyFieldDef","fieldDef","incompatibleChannel","markOrFacet","when","offsetEncodingScaleIgnored","channelShouldBeDiscrete","channelShouldBeDiscreteOrDiscretizing","discreteChannelCannotEncode","unaggregateDomainHasNoEffectForRawField","unaggregateDomainWithNonSharedDomainOp","unaggregatedDomainWithLogScale","scalePropertyNotWorkWithScaleType","stepDropped","MORE_THAN_ONE_SORT","invalidTimeUnit","unitName","errorBand1DNotSupport","channelRequiredForBinned","main$1","isDateTime","part","TIMEUNIT_PARTS","MONTHS","SHORT_MONTHS","DAYS","SHORT_DAYS","dateTimeParts","droppedDay","lowerM","monthIndex","shortM","shortMonthIndex","normalizeMonth","normalizeQuarter","lowerD","dayIndex","shortD","shortDayIndex","normalizeDay","timeUnit","dateTimeToExpr","LOCAL_SINGLE_TIMEUNIT_INDEX","isBinnedTimeUnit","isBinnedTimeUnitString","isUTCTimeUnit","VEGALITE_TIMEFORMAT","getTimeUnitParts","containsTimeUnit","getSmallestTimeUnitPart","fullTimeUnit","fieldExpr","lastTimeUnit","dateExpr","dateTimeExprToExpr","timeUnitSpecifierExpression","timeUnitParts","normalizeTimeUnit","getLocalTimeUnitFromUTCTimeUnit","durationExpr","normalizedTimeUnit","smallestUnitPart","startDate","getDateTimePartAndStep","endDate","DATE_PARTS","isDatePart","isFieldEqualPredicate","isFieldLTPredicate","isFieldLTEPredicate","lte","isFieldGTPredicate","isFieldGTEPredicate","gte","isFieldRangePredicate","isFieldOneOfPredicate","in","isFieldPredicate","predicateValueExpr","valueExpr","wrapTime","fieldFilterExpression","useInRange","rawFieldExpr","fieldExpr$1","predicateValuesExpr","isFieldValidPredicate","fieldValidPredicate","exprs","normalizePredicate$1","isContinuous","isDiscrete$1","QUANTITATIVE","ORDINAL","TEMPORAL","NOMINAL","GEOJSON","ScaleType","LINEAR","LOG","POW","SQRT","SYMLOG","IDENTITY","SEQUENTIAL","TIME","QUANTILE","QUANTIZE","THRESHOLD","BIN_ORDINAL","POINT","BAND","SCALE_CATEGORY_INDEX","scaleCompatible","scaleType1","scaleType2","scaleCategory1","scaleCategory2","SCALE_PRECEDENCE_INDEX","scaleTypePrecedence","QUANTITATIVE_SCALES","CONTINUOUS_TO_CONTINUOUS_SCALES","isQuantitative","CONTINUOUS_TO_DISCRETE_SCALES","CONTINUOUS_DOMAIN_SCALES","DISCRETE_DOMAIN_SCALES","hasDiscreteDomain","hasContinuousDomain","isContinuousToContinuous","isContinuousToDiscrete","isParameterDomain","domain$1","rangeMax","rangeMin","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX","NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES","scaleTypeSupportProperty","channelScalePropertyIncompatability","Mark","ARC","AREA","BAR","IMAGE","LINE","RECT","RULE","TEXT","TICK","TRAIL","CIRCLE","SQUARE","GEOSHAPE","isPathMark","isRectBasedMark","PRIMITIVE_MARKS","isMarkDef","FILL_STROKE_CONFIG","VL_ONLY_MARK_CONFIG_PROPERTIES","timeUnitBandSize","timeUnitBandPosition","MARK_CONFIGS","isRelativeBandSize","BAR_CORNER_RADIUS_INDEX","defaultBarConfig","binSpacing","continuousBandSize","minBandSize","defaultRectConfig","midPointRefWithPositionInvalidTest","channelDef","midPoint","isFieldDef","_ref10","fieldInvalidTestValueRef","wrapPositionInvalidTest","fieldInvalidPredicate","valueRefForFieldOrDatumDef","isDatumDef","interpolatedSignalRef","_ref11","fieldOrDatumDef","fieldOrDatumDef2","startSuffix","_ref13","channel2Def","defaultRef","isFieldOrDatumDef","_ref14","_bandPosition2","isTypedFieldDef","_bandPosition","getBandPosition","fieldDef2","binSuffix","binRequiresRange","isValueDef","offsetMixins","widthHeightValueOrSignalRef","isCustomFormatType","customFormatExpr","BIN_RANGE_DELIMITER","formatSignalRef","_ref15","normalizeStack","formatCustomType","fieldToFormat","channelDefType","customFormatTypes","normalizedNumberFormatType","normalizedNumberFormat","numberFormatType","timeFormatType","isFieldOrDatumDefForTimeFormat","_normalizeTimeUnit","_fieldOrDatumDef$scal","_ref20","rawTimeFormat","isUTCScale","formatExpression","timeFormatExpression","isScaleFieldDef","specifiedFormat","binFormatExpression","formatExpr","datumDef","datumDefToExpr","_ref16","_field2","guideFormat","omitTimeFormatConfig","isPositionFieldOrDatumDef","_normalizeTimeUnit2","_ref18","guideFormatType","_normalizeTimeUnit3","_ref17","binNumberFormatExpr","_ref19","startField","endField","DEFAULT_SORT_OP","SORT_BY_CHANNEL_INDEX","isSortByChannel","isSortByEncoding","isSortField","isSortArray","isFacetMapping","isFacetFieldDef","isFacetSpec","toFieldDefBase","isSortableFieldDef","_ref21","getBandSize","_ref22","useVlSizeChannel","sizeChannel","_config$mark$type3","_config$mark$type","_config$mark$type2","discreteBandSize","hasBandEnd","isOrderOnlyDef","isConditionalDef","hasConditionalFieldDef","hasConditionalFieldOrDatumDef","isContinuousFieldOrDatumDef","isDiscrete","isNumericDataDef","isUnbinnedQuantitativeFieldOrDatumDef","isMarkPropFieldOrDatumDef","isStringFieldOrDatumDef","toStringFieldDef","argAccessor","isCount","nofn","isOpFieldDef","_opt$binSuffix","_opt$suffix","_opt$suffix2","tu","timeUnitToString","forAs","defaultTitleFormatter","fieldTitle","timeUnitParams","functionalTitleFormatter","countTitle","_normalizeTimeUnit4","verbalTitleFormatter","titleFormatter","setTitleFormatter","formatter","_ref23","_getGuide","allowDisabling","includeDefault","guideTitle","getGuide","defaultTitle","_ref24","getFormatMixins","_getGuide2","guide","getFieldDef","getFieldOrDatumDef","initChannelDef","primitiveChannelDef","initFieldOrDatumDef","fd","guideType","newGuide","initFieldDef","initDatumDef","compositeMark","invalidAggregate","channelShouldNotBeUsedForBinned","fullType","getFullName","invalidFieldTypeForCountAggregate","newType","_fieldDef$scale","defaultType$2","compatible","COMPATIBLE","_def$scale","isDiscretizing","channelCompatibility","encoding","sub","labelOrient","isTimeFieldDef","_ref25","_normalizeTimeUnit5","undefinedIfExprNotRequired","isTime","isLocalSingleTimeUnit","valueArray","CONDITIONAL_AXIS_PROP_INDEX","vgProp","labelColor","labelFont","labelFontSize","labelFontStyle","labelFontWeight","labelOpacity","gridDash","gridDashOffset","gridOpacity","tickDash","tickDashOffset","tickOpacity","isConditionalAxisValue","AXIS_PARTS","AXIS_PROPERTY_TYPE","gridCap","domainCap","domainDash","domainDashOffset","domainOpacity","labelBound","labelFlush","labelFlushOffset","labelLineHeight","labelSeparation","tickCap","titleAlign","titleAngle","titleBaseline","titleColor","titleFont","titleFontSize","titleFontStyle","titleFontWeight","titleLineHeight","titleOpacity","titleX","titleY","tickExtra","COMMON_AXIS_PROPERTIES_INDEX","AXIS_PROPERTIES_INDEX","labelExpr","isAxisProperty","AXIS_CONFIGS","axisDiscrete","axisPoint","axisQuantitative","axisTemporal","axisXBand","axisXDiscrete","axisXPoint","axisXQuantitative","axisXTemporal","axisYBand","axisYDiscrete","axisYPoint","axisYQuantitative","axisYTemporal","isUnitSpec","CompositeMarkNormalizer","hasMatchingType","getMarkType","channelHasField","channelHasFieldOrDatum","channelHasNestedOffsetScale","isAggregate$1","extractTransformsFromEncoding","oldEncoding","aggOp","remaining","isTitleDefined","newField","newFieldDef","aggregateEntry","secondaryChannel","isNonPositionScaleChannel","markChannelCompatible","markSupported","primaryFieldDef","normalizeEncoding","normalizedEncoding","newChannelDef","mapping","thisArg","pathGroupingFields","details","getCompositeMarkTooltip","tooltipSummary","continuousAxisChannelDef","encodingWithoutContinuousAxis","withFieldName","fiveSummaryTooltip","_ref26","fieldPrefix","titlePrefix","mainTitle","getTitle","escape","tooltipFieldDefs","channelDefArray","fieldDefs","makeCompositeAggregatePartFactory","compositeMarkDef","continuousAxis","sharedEncoding","compositeMarkConfig","_ref27","partName","positionPrefix","endPositionPrefix","extraEncoding","partLayerMixins","partBaseSpec","compositeMarkContinuousAxis","continuousAxisChannelDef2","continuousAxisChannelDefError","continuousAxisChannelDefError2","filterAggregateFromChannelDef","continuousAxisWithoutAggregate","errorBarContinuousAxisHasCustomizedAggregate","compositeMarkOrient","xAggregate","yAggregate","BOXPLOT","boxPlotNormalizer","normalizeBoxPlot","getBoxPlotType","_ref28","_markDef$extent","_encoding","_p","outerSpec","boxplot","sizeValue","boxPlotType","ticksOrient","boxOrient","customTooltipWithoutAggregatedField","continuousFieldName","boxplotSpecificAggregate","boxParamsQuartiles","postAggregateCalculates","calculate","oldContinuousAxisChannelDef","oldEncodingWithoutContinuousAxis","filteredEncoding","customTooltipWithAggregatedField","filterTooltipWithAggregatedField","boxParams","encodingWithoutSizeColorAndContinuousAxis","makeBoxPlotPart","makeBoxPlotExtent","makeBoxPlotBox","makeBoxPlotMidTick","fiveSummaryTooltipEncoding","endTick","whiskerTooltipEncoding","whiskerLayers","boxLayers","_outerSpec$transform","layer","lowerBoxExpr","upperBoxExpr","iqrExpr","lowerWhiskerExpr","upperWhiskerExpr","joinaggregateTransform","filteredWhiskerSpec","encodingWithoutSizeColorContinuousAxisAndTooltip","axisWithoutTitle","outlierLayersMixins","filteredLayersMixins","filteredLayersMixinsTransforms","continousAxisField","ERRORBAR","errorBarNormalizer","normalizeErrorBar","_ref29","tooltipEncoding","errorBarParams","makeErrorBarPart","errorbar","errorBarOrientAndInputType","xError","xError2","yError","yError2","errorBarIsInputTypeRaw","inputType","isTypeAggregatedUpperLower","errorBarIsInputTypeAggregatedUpperLower","isTypeAggregatedError","errorBarIsInputTypeAggregatedError","_outerSpec$transform2","errorBarSpecificAggregate","tooltipTitleWithFieldName","errorBarCenterIsUsedWithWrongExtent","getTitlePrefix","centerOp","lowerExtentOp","upperExtentOp","errorBarCenterAndExtentAreNotNeeded","postAggregateCalculate","errorBarAggregationAndCalculation","oldContinuousAxisChannelDef2","oldContinuousAxisChannelDefError","oldContinuousAxisChannelDefError2","oldAggregate","oldGroupBy","ERRORBAND","errorBandNormalizer","normalizeErrorBand","_ref30","errorBandDef","makeErrorBandPart","errorband","is2D","bandMark","bordersMark","compositeMarkRegistry","VL_ONLY_LEGEND_CONFIG","HEADER_TITLE_PROPERTIES_MAP","HEADER_LABEL_PROPERTIES_MAP","labelAnchor","HEADER_TITLE_PROPERTIES","HEADER_LABEL_PROPERTIES","HEADER_CONFIGS","headerRow","headerColumn","headerFacet","LEGEND_SCALE_CHANNELS","SELECTION_ID","defaultConfig$2","encodings","isLegendBinding","isLegendStreamBinding","isSelectionParameter","assembleParameterSignals","isConcatSpec","isVConcatSpec","isHConcatSpec","getStepFor","_ref31","offsetIsDiscrete","_step$for","for","isStep","isFrameMixins","COMPOSITION_LAYOUT_PROPERTIES","spacing","getViewConfigContinuousSize","viewConfig","_viewConfig$channel","getViewConfigDiscreteStep","getViewConfigDiscreteSize","DEFAULT_STEP","_viewConfig$channel2","defaultConfig$1","continuousWidth","continuousHeight","outliers","borders","pointPadding","barBandPaddingInner","rectBandPaddingInner","bandWithNestedOffsetPaddingInner","bandWithNestedOffsetPaddingOuter","minFontSize","maxFontSize","minOpacity","maxOpacity","minSize","minStrokeWidth","maxStrokeWidth","quantileCount","quantizeCount","gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity","selection","tab10","DEFAULT_FONT_SIZE","guideLabel","groupTitle","groupSubtitle","DEFAULT_COLOR","gray0","gray1","gray2","gray3","gray4","gray5","gray6","gray7","gray8","gray9","gray10","gray11","gray12","gray13","gray14","gray15","getAxisConfigInternal","axisConfigInternal","configPropsWithExpr","initConfig","specifiedConfig","restConfig","mergedConfig","fontConfig","colorSignalConfig","fontSizeSignalConfig","outputConfig","markConfigType","axisConfigType","headerConfigType","styleConfigInternal","getStyleConfigInternal","MARK_STYLES","VL_ONLY_CONFIG_PROPERTIES","VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX","stripAndRedirectConfig","markType","vlOnlyMarkSpecificConfigs","redirectConfigToStyleConfig","redirectTitleConfig","toProp","compositeMarkPart","_toProp","_toProp2","isLayerSpec","SpecMapper","mapFacet","isRepeatSpec","mapRepeat","mapHConcat","mapVConcat","mapConcat","mapLayerOrUnit","mapLayer","mapUnit","subspec","hconcat","vconcat","STACK_OFFSET_INDEX","STACKABLE_MARKS","STACK_BY_DEFAULT_MARKS","isUnbinnedQuantitative","potentialStackedChannel","_ref32","isCartesian","xDef","yDef","_stackedFieldDef$scal","_stackedFieldDef$scal2","fieldChannel","stackedFieldDef","stackedField","dimensionChannel","getDimensionChannel","groupbyChannels","groupbyFields","dimensionDef","dimensionField","dimensionOffsetChannel","dimensionOffsetDef","dimensionOffsetField","stackBy","cDef","cannotStackNonLinearScale","initMarkdef","originalMarkDef","specifiedOrient","original","actual","xIsMeasure","yIsMeasure","xIsTemporal","yIsTemporal","cornerRadiusEnd","newProps","newProp","dropLineAndPoint","dropLineAndPointFromConfig","getPointOverlay","markConfig","getLineOverlay","PathOverlayNormalizer","normParams","pointOverlay","lineOverlay","stackProps","overlayEncoding","stackFieldChannel","replaceRepeaterInFacet","repeater","replaceRepeaterInMapping","replaceRepeaterInFieldDef","replaceRepeaterInEncoding","replaceRepeatInProp","isRepeatRef","noSuchRepeatedValue","replaceRepeaterInFieldOrDatumDef","replaceRepeaterInChannelDef","channelDefWithoutCondition","RuleForRangedLineNormalizer","mainChannelDef","hasX2","hasY2","mergeEncoding","_ref35","parentEncoding","parentChannelDef","mergedChannelDef","mergeProjection","parentProjection","projectionOverridden","isFilter","isImputeSequence","isLookup","isPivot","isDensity","isQuantile","isRegression","isLoess","isSample","isWindow","isJoinAggregate","isFlatten","isCalculate","isBin","isImpute","isTimeUnit","isAggregate","isStack","isFold","isExtent","normalizeTransforms","normalizePredicate","normalizeBinExtent","normalizeChannelDef","_enc$scale","cond","normalizeSelectionComposition","_normParams$emptySele2","_a$param","_a","pred","emptySelections","selectionPredicates","TopLevelSelectionsNormalizer","_normParams$selection3","selections","_normParams$path","addSpecNameToParams","_params$path","normalizedSpec","topLevelSelectionNormalizer","coreNormalizer","selectionCompatNormalizer","normalizeGenericSpec","sizeInfo","isFitCompatible","autosizeDefault","_normalizeAutoSize","normalizeAutoSize","nonFacetUnitNormalizers","hasRow","hasColumn","hasFacet","mapFacetedUnit","specWithReplacedEncoding","repeaterPrefix","mapUnitWithParentEncodingOrProjection","normalizeLayerOrUnit","unitNormalizer","isLayerRepeatSpec","mapLayerRepeat","mapNonLayerRepeat","childSpec","layerValue","childRepeater","childName","_childSpec$data","remainingProperties","repeatValues","repeatValue","rowValue","columnValue","mergedProjection","mergedEncoding","facetMapping","getFacetMappingAndLayout","newEncoding","facets","defWithoutLayout","_layout$prop","_ref34","otherParams","_normParams$emptySele","_normParams$selection","_ref36","selDef","_normParams$selection2","TOP_LEVEL_PROPERTIES","extractTopLevelProperties","includeParams","Split","combine","getWithExplicit","setWithExplicit","_ref37","copyKeyFromSplit","_ref38","copyKeyFromObject","copyAll","makeExplicit","makeImplicit","tieBreakByComparing","propertyOf","diff","defaultTieBreaker","mergeConflictingProperty","mergeValuesWithExplicit","tieBreaker","AncestorParse","parseNothing","isUrlData","isInlineData","isNamedData","isGenerator","isSequenceGenerator","isSphereGenerator","isGraticuleGenerator","DataSourceType","assembleProjection","hasLegend","assembleInit","assembled","dateTimeToTimestamp","assembleUnitSelectionSignals","selCmpt","_model$component$sele","modifyExpr","TUPLE","selectionCompilers","MODIFY","STORE","cleanupEmptyOnArray","assembleFacetSignals","getName","assembleUnitSelectionMarks","_model$component$sele4","DataFlowNode","debugName","_children","addChild","numChildren","oldChild","insertAsParentOf","swapWithParent","newParent","OutputNode","cloneObj","_source","_name","refCounts","dependentFields","producedFields","_hash","getSource","setSource","isTimeUnitTransformComponent","timeUnitComponent","offsetAs","TimeUnitNode","makeFromEncoding","reduceFieldDef","isUnitModel","makeFromTransform","removeFormulas","newFormula","fieldAs","assemble","smallestUnit","TUPLE_FIELDS","SelectionProjectionComponent","_len9","_key9","hasChannel","hasField","hasSelectionId","_selCmpt$project","sg","cfg","initVal","_fields","_encodings","getScaleComponent","geoChannel","_fields2","allSignals","scaleBindings","topLevelSignals","isTopLevelLayer","namedSg","VL_SELECTION_RESOLVE","_model$parent$parent","isLayerModel","BRUSH","SCALE_TRIGGER","GEO_INIT_TICK","INIT","hasProjection","filterExpr","_a$filter","tupleSg","scaledInterval","vname","visual","projectionName","scaled","getSizeSignalRef","coord","von","hasScales","vinit","initIdx","initSg","channelSignals","centerSg","xvname","yvname","xinit","yinit","sizeSg","visualSignals","triggerSg","scaleTriggers","toNum","dataSignals","vgStroke","point$1","_model$component$sele5","fieldsSg","brushes","cmpt","wrapCondition","refFn","vgConditions","conditionValueRef","isConditionalParameter","parseSelectionPredicate","text$1","textRef","tooltipRefForEncoding","reactiveGeom","tooltipRefFromChannelDef","markTooltip","tooltipData","formatConfig","tooltipFormat","toSkip","fDef","_value","channel2","keyValues","_ref39","enableAria","description$1","ariaRoleDesc","descriptionValue","_ref40","nonPosition","_defaultValue","_opt$filled","_ref41","_getMarkPropOrConfig","_getMarkPropOrConfig2","transparentIfNeeded","defaultFill","defaultStroke","colorVgChannel","fillStrokeMarkDefAndConfig","positionOffset","_ref42","baseChannel","offsetType","markDefOffsetValue","pointPosition","_ref43","defaultPos","pointPositionDefaultRef","positionRef","_ref44","definedValueOrConfig","domainDefinitelyIncludesZero","ALIGNED_X_CHANNEL","BASELINED_Y_CHANNEL","middle","vgAlignedPositionChannel","defaultAlign","alignChannel","alignExcludingSignal","rangeMarkAlignmentCannotBeExpression","pointOrRangePosition","_ref45","defaultPos2","rangePosition","_ref46","pos2Mixins","vgSizeChannel","_ref47","position2Ref","position2orSize","pointPosition2OrSize","dimensionSize","relativeBandSizeNotSupported","rectPosition","_ref48","_encoding$sizeChannel","channelDef2","hasSizeDef","offsetScaleChannel","isBarBand","offsetScaleName","offsetScale","sizeMixins","cannotApplySizeToNonOrientedMark","hasSizeFromMarkOrEncoding","bandSize","defaultSizeRef","defaultBandAlign","posRef","vgChannel2","sizeRef","sizeOffset","positionAndSize","_ref49","_model$component$axes","_axis$get","_getMarkPropOrConfig3","axisTranslate","offset2","bandSizeExpr","_ref12","binSizeExpr","binSpacingOffset","getBinSpacing","binSpacingOffset2","rectBinRef","startRef","rectBinPosition","hasFieldDef","bandWidth","cannotUseRelativeBandSizeWithNonBandScale","scaleRange","bandPaddingInner","isEnd","spacingOffset","reverseExpr","translateExpr","minBandSizeExpr","spacingAndSizeOffset","_ref50","ALWAYS_IGNORE","baseEncodeEntry","markDefProperties","wrapAllFieldsInvalid","_ref51","filterIndex","aggregator","scaleComponent","allFieldsInvalidPredicate$1","_ref52","_model$stack","allFieldsInvalidPredicate","valueIfDefined","VORONOI","nearest","cellDef","isVoronoi","exists","_mark$name","inputBindings","disableDirectManipulation","sgname","_ref53","_bind$p$field","TOGGLE","tpl","findIndex","addClear","vIdx","tIdx","legendBindings","projLen","selDef_","legendFilter","_evt$filter","selName","markName","sgName","ANCHOR$1","DELTA$1","boundScales","onDelta$1","_scaleCmpt$get","_scaleCmpt$get2","scaleCmpt","reversed","panFn","ANCHOR","DELTA","onDelta","_scaleCmpt$get3","_scaleCmpt$get4","zoomFn","facetModel","isFacetModel","getFacetModel","requiresSelectionId","_model$component$sele7","startsWithDatum","getDependentFields","dependents","FilterNode","_dependentFields","dfnode","getSelectionComponent","tunode","parseSelectionExtent","filterOp","isSelectionPredicate","setAxisEncode","vgRef","_axis$encode","_a$part","_b$update","_b","assembleAxis","axisCmpt","disable","propType","propValue","valueOrSignalRef","conditions","propIndex","valueOrSignalCRef","mainExtracted","_axis$encode2","hasAxisPart","titleString","assembleTitle","assembleAxisSignals","getAxisConfigFromConfigTypes","configTypes","configType","orient1","orientConfig1","orientConfig2","conditionalOrientAxisConfig","getAxisConfigStyle","axisConfigTypes","toMerge","_config$configType","getAxisConfig","axisConfigs","configFrom","configValue","_axisConfigs$configFr","axisRules","_ref54","_ref55","_ref56","_ref57","_axis$grid","defaultGrid","_ref58","gridChannel","_ref59","defaultLabelAlign","_ref60","_ref61","defaultLabelBaseline","_ref62","_axis$labelFlush","defaultLabelFlush","_ref63","_axis$labelOverlap","hasTimeUnit","defaultLabelOverlap$1","_ref64","_ref65","_axis$tickCount","_ref69","_normalizeTimeUnit6","defaultTickCount","_ref70","_ref66","fieldDefTitle","getFieldDefTitle","typedFieldDef","_ref67","values$1","_ref68","_axis$zindex","defaultZindex","normalizeAngleExpr","alwaysIncludeMiddle","orientIsTop","orientIsLeft","mainOrient","orientIsMain","CalculateNode","parseAllForSortIndex","forEachFieldDef","sortValue","sortArrayIndexField","getHeaderChannel","getHeaderProperty","headerSpecificConfig","getHeaderProperties","HEADER_CHANNELS","HEADER_TYPES","assembleTitleGroup","facetFieldDef","headerChannel","defaultHeaderGuideBaseline","defaultHeaderGuideAlign","assembleHeaderProperties","assembleHeaderGroups","layoutHeader","headerType","headerComponent","assembleHeaderGroup","getSort$1","_sort$order","assembleLabelTitle","titleTextExpr","isFacetWithoutRowCol","hasAxes","sizeSignal","LAYOUT_TITLE_BAND","getLayoutTitleBand","propertiesMap","assembleLayoutSignals","sizeSignals","layoutSize","stepSignal","sizeExpr","isWidth","safeExpr","cardinality","getSizeTypeFromLayoutSizeType","layoutSizeType","guideEncodeEntry","valueDef","defaultScaleResolve","isConcatModel","parseGuideResolve","channelScaleResolve","independentScaleMeansIndependentGuide","LEGEND_COMPONENT_PROPERTIES","clipHeight","fillColor","gradientOpacity","legendX","legendY","strokeColor","symbolDash","symbolDashOffset","symbolFillColor","symbolOpacity","symbolStrokeColor","LegendComponent","legendEncodeRules","symbolsSpec","_ref71","_legendCmpt$get2","_legendCmpt$get3","_legendCmpt$get4","_getMaxValue","legendCmpt","getMaxValue","_config$legend$symbol","_ref72","_getFirstConditionVal","_encoding$fill","getFirstConditionValue","selectedCondition","gradientSpec","_ref73","_legendCmpt$get5","specifiedlabelsSpec","_ref74","labelsSpec","entriesSpec","_ref75","getConditionValue","conditionalDef","reducer","hasConditionalValueDef","legendRules","_ref76","_ref77","_ref78","_ref79","_legend$gradientLengt","legendConfig","_ref89","gradientLengthSignal","defaultGradientLength","_ref80","_ref81","_legend$labelOverlap","defaultLabelOverlap","_ref82","_legend$symbolType","shapeChannelDef","markShape","_getFirstConditionVal2","defaultSymbolType","_ref83","_ref84","_ref85","getLegendType","_ref86","defaultType$1","getDirection","_ref87","_ref88","_legend$direction","defaultDirection","parseLegend","legendComponent","parseLegendForChannel","parseUnitLegend","mergeLegendComponent","parseNonUnitLegend","isExplicit$1","_normalizeTimeUnit7","_legend$encoding","_legend2","getLegendDefWithScale","_model$fieldDef","_model$component$sele6","_selCmpt$project$hasF","_legendCmpt$get","legendSelections","parseInteractiveLegend","ruleParams","legendEncoding","legendEncodeParams","_legendEncoding$part","legendEncodingPart","_legend3","mergedLegend","childLegend","mergedOrient","childOrient","typeMerged","mergedValueWithExplicit","mergeSymbolType","_mergedLegend$implici","_mergedLegend$explici","st1","st2","assembleLegends","legendComponentIndex","legendByDomain","domainHash","mergedLegendComponent","_legend$encode2","_legend$encode3","_legend$encode","_a$part2","_b$update2","setLegendEncode","assembleLegend","assembleProjections","assembleProjectionForModel","assembleProjectionsForModelAndChildren","fits","lookupDataSource","PROJECTION_PROPERTIES","ProjectionComponent","specifiedProjection","isFit","parseProjection","_replaceExprRef","posssiblePair","requestDataName","Main","gatherFitData","projComp","parseUnitProjection","nonUnitProjection","mergable","allPropertiesShared","mergeIfNoConflict","modelProjection","renameProjection","parseNonUnitProjections","rangeFormula","_ref90","_model$axis","formulaAs","binKey","getBinSignalName","_normalizeBin","createBinComponent","isBinTransform","normalizedBin","extentSignal","getSignalsFromModel","binComponent","BinNode","binComponentIndex","renameSignal","flatMap","binAs","remainingAs","binTrans","addDimension","_fieldDef$scale2","posChannel","isFieldRange","AggregateNode","dimensions","groupBy","meas","_meas$","_meas$argField","argField","_meas$field","_meas$field2","scaleDomain","_meas$2","_meas$field3","_t$groupby","parentMeasures","childMeasures","_parentMeasures$field","mergeMeasures","debug$2","addDimensions","alias","FacetNode","sortField","sortIndexField","childModel","_this$channel","depFields","getChildIndependentFieldsWithStep","childIndependentFieldsWithStep","childScaleComponent","getFieldFromDomain","assembleDomain","assembleRowColumnHeaderData","crossedDataName","childChannel","assembleFacetHeaderData","hasSharedAxis","_ref91","_header$axes","_childIndependentFiel","_childIndependentFiel2","facetData","unquote","getImplicitFromFilterTransform","_filter$oneOf","getImplicitFromEncoding","mainFieldDef","dimensionChannelDef","ParseNode","_parse","ancestorParse","_data$format","makeWithAncestors","parsedAs","assembleFormatParse","formatParse","assembleTransforms","onlyNested","IdentifierNode","GraticuleNode","SequenceNode","_this$params$as","SourceNode","_data","defaultExtension","_generator","hasName","_Optimizer_modified","__classPrivateFieldSet","receiver","__classPrivateFieldGet","isDataSourceNode","Optimizer","setModified","modifiedFlag","BottomUpOptimizer","getNodeDepths","depths","optimize","topologicalSort","TopDownOptimizer","MergeIdenticalNodes","mergeNodes","mergedNode","hashes","buckets","RemoveUnnecessaryIdentifierNodes","RemoveDuplicateTimeUnits","timeUnitFields","RemoveUnnecessaryOutputNodes","MoveParseUp","MergeParse","originalChildren","parseChildren","commonParse","conflictingParse","parseNode","mergedParseNode","childNode","RemoveUnusedSubtrees","MergeTimeUnits","timeUnitChildren","combination","MergeAggregates","aggChildren","groupedAggregates","groupBys","mergeableAggs","mergedAggs","MergeBins","moveBinsUp","promotableBins","remainingBins","promotedBin","remainingBin","MergeOutputs","otherChildren","mainOutput","lastOutput","theChild","JoinAggregateTransformNode","getDefaultName","joinAggregateFieldDef","_joinAggregateFieldDe","StackNode","_stack","stackTransform","sortFields","sortOrder","normalizedAs","isValidAsArray","dimensionFieldDefs","stackField","facetby","stackProperties","groupbyChannel","stackby","_field","getStackByFields","getGroupbyFields","dimensionFieldDef","binStart","binEnd","WindowTransformNode","_this$transform$group","_this$transform$sort","windowFieldDef","_windowFieldDef$as","_sortField$order","moveFacetDown","facetMain","main","moveMainDownToFacet","cloner","newName","FACET_SCALE_PREFIX","outputNodes","MAX_OPTIMIZATION_RUNS","checkLinks","runOptimizer","optimizer","optimizationDataflowHelper","dataComponent","firstPass","roots","SignalRefWrapper","exprGenerator","fromName","rename","parseScaleDomain","localScaleComponents","domains","parseDomainForChannel","parseSelectionDomain","isFaceted","facetParent","parseUnitScaleDomain","selectionExtent","childComponent","domainsTieBreaker","se","parseNonUnitScaleDomain","scaleConfig","reason","canUseUnaggregatedDomain","useUnaggregatedDomain","normalizeUnaggregatedDomain","specifiedScales","parseSingleChannelDomain","convertDomainIfItIsDateTime","_normalizeTimeUnit8","mapDomainToDataSignal","isDomainUnionWith","defaultDomain","unionWith","stackDimensions","normalizeSortField","fieldDefToSortBy","isStackedMeasure","domainSort","Raw","binSignal","getSignalName","_model$fieldDef2","mergeConflictingDomainProperty","mergeDomains","uniqueDomains","_s","domainWithoutSort","sorts","filteredSorts","unionDomainSorts","domainSortDropped","allData","isDataRefUnionedDomain","nonUnionDomain","isFieldRefUnionDomain","assembleScales","assembleScalesForModel","otherScaleProps","assembleScaleRange","parsedExtent","assembleSelectionScaleDomain","ScaleComponent","typeWithExplicit","RANGE_PROPERTIES","getBinStepSignal","binCount","updatedName","parseRangeForChannel","specifiedScale","supportedByScaleType","channelIncompatability","parseScheme","getPositionStep","positionChannel","getOffsetStep","mergedScaleCmpt","positionSize","getDiscretePositionSize","offsetScaleType","positionScaleCmpt","positionScaleType","positionScaleName","positionDef","startRatio","endRatio","getOffsetRange","sizeRangeMin","xyStepSignals","maxBandSize","minXYStep","pointStep","MAX_SIZE_RANGE_STEP_RATIO","sizeRangeMax","rMax","rMin","domainRequiredForThresholdScale","defaultContinuousToDiscreteCount","defaultRange","isExtendedScheme","offsetChannel","offsetDef","_mergedScaleCmpt$get","offsetScaleCmpt","stepCount","_ref92","_offsetScaleCmpt$get","_ref93","_offsetScaleCmpt$get2","offsetPaddingInner","offsetPaddingOuter","widthStep","heightStep","parseScaleProperty","localScaleCmpt","specifiedValue","scalePadding","scalePaddingInner","scaleRules","hasNestedOffsetScale","hasSecondaryRangeChannel","parseUnitScaleProperty","parseNonUnitScaleProperty","_ref94","_ref95","_ref96","specifiedDomain","_getFieldDef","_ref97","barConfig","continuousPadding","_ref98","paddingValue","offsetBandPaddingInner","_ref99","paddingInnerValue","bandPaddingOuter","offsetBandPaddingOuter","_ref100","xReverse","_ref101","parseScaleRange","rangeWithExplicit","parseUnitScaleRange","valueWithExplicit","defaultScaleType","_fieldDef$axis","defaultType","channelSupportScaleType","specifiedType","fieldDefType","scaleTypeNotWorkWithFieldDef","scaleTypeNotWorkWithChannel","parseScaleCore","scaleComponents","_specifiedScale","sType","parseUnitScaleCore","scaleTypeWithExplicitIndex","_a$channel","explicitScaleType","childScaleType","scaleTypeTieBreaker","childScale","renameScale","parseNonUnitScaleCore","NameMap","nameMap","oldName","Model","parentGivenName","_spec$name","_spec$transform","correctDataNames","_mark$from","_mark$from2","scaleNameMap","projectionNameMap","signalNameMap","normalizeTransform","specType","compositionConfig","spacingConfig","_spacing$row","_spacing$column","extractCompositionLayout","outputNodeRefCounts","parseLayoutSize","renameTopLevelLayoutSizeSignal","parseSelections","parseData","parseAxesAndHeaders","parseLegends","parseMarkGroup","ignoreRange","parseScales","assembleEncodeFromView","baseView","assembleGroupEncodeEntry","isTopLevel","encodeEntry","_encodeEntry","assembleLayout","headerComponentIndex","assembleLayoutTitleBand","assembleDefaultLayout","assembleHeaderMarks","headerMarks","assembleAxes","axisComponents","_this$title","titleNoEncoding","_title$frame","_title$anchor","assembleGroup","assembleSignals","assembleMarks","getDataName","fullName","oldSignalName","originalScaleName","localScaleComponent","variableName","origName","sel","selectionNotFound","hasAxisOrientSignalRef","_this$component$axes$","_this$component$axes$2","hasOrientSignalRef","ModelWithField","getMapping","DensityTransformNode","_this$transform$as","_specifiedAs$","_specifiedAs$2","specifiedAs","_this$transform$group2","ExtentTransformNode","FilterInvalidNode","make","vegaFilters","FlattenTransformNode","_as$i","FoldTransformNode","_this$transform$as2","_specifiedAs$3","_specifiedAs$4","GeoJSONNode","parseAll","geoJsonCounter","pair","_this$fields","GeoPointNode","ImputeNode","_this$transform$group3","processSequence","imputeTransform","imputedChannel","keyChannel","LoessTransformNode","_this$transform$as3","_specifiedAs$5","_specifiedAs$6","_this$transform$group4","LookupNode","secondary","fromOutputNode","isLookupData","fromSource","findSource","fromOutputName","isLookupSelection","cannotLookupVariableParameter","materialized","noSameUnitLookup","foreign","asName","QuantileTransformNode","_this$transform$as4","_specifiedAs$7","_specifiedAs$8","_this$transform$group5","RegressionTransformNode","_this$transform$as5","_specifiedAs$9","_specifiedAs$10","_this$transform$group6","PivotTransformNode","_this$transform$group7","_this$transform$group8","SampleTransformNode","makeWalkTree","datasetIndex","walkTree","dataSource","_dataSource$format","getHeaderType","parseFacetHeader","_fieldDef$header","title$1","makeHeaderComponent","mergeChildAxis","axisComponent","_layoutHeader$headerT","mainAxis","parseChildrenLayoutSize","parseNonUnitLayoutSizeForChannel","layoutSizeCmpt","mergedSize","_resolve$scale$channe","childSize","scaleResolve","defaultUnitSize","facetSortFieldName","FacetModel","buildModel","initFacet","initFacetFieldDef","normalizedFacet","parseFacetHeaders","assembleSelectionTopLevelSignals","assembleSelectionData","getHeaderLayoutMixins","layoutMixins","layoutHeaderComponent","_layoutMixins$titleAn","bandType","_layoutMixins$bandTyp","_layoutMixins$offset","columnDistinctSignal","facetLayoutDataName","assembleGroupStyle","getCardinalityAggregateForChild","assembleFacet","facetRoot","outputName","facetSortFields","facetSortOrder","ORTHOGONAL_ORIENT","_facet$channel","assembleFacetData","markGroup","_data$format2","_otherData$format","_data$format3","_otherData$format2","otherData","formatMesh","otherFeature","formatFeature","otherMesh","_data$format4","_ParseNode$makeExplic","_ParseNode$makeWithAn2","existingSource","parseRoot","parentIsLayer","_BinNode$makeFromEnco","lookupCounter","derivedType","transformNode","_ParseNode$makeWithAn","_transformNode$produc","parseTransformArray","implicitSelection","getImplicitFromSelection","implicitEncoding","_TimeUnitNode$makeFro","_BinNode$makeFromEnco2","rawName","_ImputeNode$makeFromE","_StackNode$makeFromEn","_FilterInvalidNode$ma","mainName","_model$component$sele8","lookupName","materializeSelections","_makeJoinAggregateFro","facetName","makeJoinAggregateFromFacet","ConcatModel","_spec$resolve","_spec$resolve2","getChildren","widthType","heightType","parseConcatLayoutSize","parseAxisGroup","layoutSignals","AXIS_COMPONENT_PROPERTIES_INDEX","AXIS_COMPONENT_PROPERTIES","AxisComponent","OPPOSITE_ORIENT","mergeAxisComponents","mergedAxisCmpts","childAxisCmpts","mergeAxisComponent","isExplicit","propsToAlwaysIncludeConfig","parseAxis","_axis2","_config","_config$axis","_axis3","_axis$encoding","defaultOrient","typeBasedConfigTypes","axisChannel","axisOrient","vlOnlyConfigTypes","vgConfigTypes","vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle","getAxisConfigs","getLabelAngle","hasValue","hasConfigValue","axisEncoding","_axisEncoding$part","axisEncodingPart","specifiedLabelsSpec","_getFieldOrDatumDef","fixedShape","shapeMixins","vgMark","vgThicknessChannel","defaultSize","_getMarkPropOrConfig4","markPropOrConfig","markCompiler","postEncodingTransform","shapeDef","parseMarkGroups","FACETED_PATH_PREFIX","getMarkGroup","fromPrefix","getPathGroups","_model$stack$groupbyC","STACK_GROUP_PREFIX","fieldScale","stackFieldGroup","vgFieldMinMax","groupUpdate","innerGroupUpdate","groupByField","getGroupsForStackedBarWithCornerRadius","xScale","yScale","scaleClip","projectionClip","_model$stack2","getSort","unitCount","parentCount","interactiveFlag","UnitModel","_spec$params","parentGivenSize","specifiedAxes","specifiedLegends","_ref33","filledConfig","defaultFilled","initEncoding","_ref102","initLayoutSize","initScales","initAxes","initLegends","isGeoShapeMark","hasGeoPosition","_fieldOrDatumDef$scal2","scaleInternal","_axis","axisSpec","initAxis","axisInternal","_legend","supportLegend","specifiedSize","parseUnitLayoutSize","selDefs","selCmpts","selectionConfig","_cfg$key","def_","parseUnitSelection","hasSelections","_model$component$sele2","isPoint","assembleTopLevelSignals","dataCopy","_model$component$sele3","assembleUnitSelectionData","_this$component$mark","LayerModel","axisCount","_axes$channel","oppositeOrient","parseLayerAxes","uniqueStyles","assembleLayerSelectionMarks","unitSize","isAnyConcatSpec","version$2","vegaLiteImport","compile","inputSpec","newLogger","firstPassCounter","secondPassCounter","optimizeDataflow","vgSpec","topLevelProperties","datasets","usermeta","vgConfig","sourceIndex","newData","whereTo","_d$transform","_d$transform2","assembleRootData","otherTopLevelProps","$schema","assembleTopLevelModel","autoSizeType","inverseSizeType","getFitType","getTopLevelProperties","isEqual","dict","dictKeys","otherKeys","mergeDeep","resetIdCounter","library","pkg","lightColor","medColor","darkTheme","markColor$7","excelTheme","markColor$6","axisColor$2","backgroundColor$2","blackTitle","fiveThirtyEightTheme","markColor$5","ggplot2Theme","labelFont$1","markColor$4","colorSchemes$1","latimesTheme","markColor$3","axisColor$1","quartzTheme","markColor$2","voxTheme","markColor$1","axisColor","colorSchemes","urbanInstituteTheme","markColor","defaultFont$1","googlechartsTheme","ptToPx","fontSmallPx","legendFontPx","fontLargePx","fontStandard","fontTitle","firstLevelElementColor","secondLevelElementColor","backgroundColor","paletteColor1","divergentColorMin","divergentPalette","powerbiTheme","darkCategories","lightCategories","genCarbonConfig","_ref103","viewbg","textColor","carbonwhite","carbong10","carbong90","carbong100","themes","dark","excel","fivethirtyeight","ggplot2","googlecharts","latimes","powerbi","quartz","urbaninstitute","vox","_typeof$1","_toPropertyKey$1","prim","toPrimitive","_toPrimitive$1","_defineProperty$3","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_excluded$1","EL_ID","DEFAULT_OPTIONS","offsetX","offsetY","styleId","theme","disableDefaultStyle","valueToHtml","ownKeys$2","enumerableOnly","sym","_objectSpread$2","elementId","tooltipHandler","getElementById","innerHTML","createDefaultStyle","_document$fullscreenE","classList","fullscreenElement","tooltipBox","calculatePosition","_typeof","_toPropertyKey","_toPrimitive","_defineProperty$2","getDefaultExportFromCjs","hasRequiredIterator","yallist","Yallist$1","self","tail","inserted","Node","removeNode","unshiftNode","pushNode","thisp","walker","forEachReverse","getReverse","mapReverse","initial","reduceReverse","toArray","toArrayReverse","ret","sliceReverse","deleteCount","Yallist","er","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","doUse","isStale","del","maxAge","Entry","forEachStep","stale","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lengthCalculator","lC","itemCount","rforEach","dump","dumpLru","expiresAt","prune","looseOption","loose","emptyOpts","parseOptions_1","re$1","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","debug$1","NODE_DEBUG","_len10","_key10","debug_1","safeRe","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","reExports","numeric","compareIdentifiers$1","anum","bnum","identifiers","compareIdentifiers","rcompareIdentifiers","parseOptions","semver","SemVer","includePrerelease","LOOSE","FULL","major","minor","prerelease","build","compareMain","comparePre","compareBuild","release","identifierBase","compare_1","compare$5","eq_1","compare$4","neq_1","compare$3","gt_1","compare$2","gte_1","compare$1","lt_1","lte_1","eq","neq","hasRequiredComparator","hasRequiredRange","cmp_1","requireRange","Range","Comparator","parseRange","isNullSet","isAny","comps","memoKey","cached","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","TILDETRIM","CARETTRIM","rangeList","comp","parseComparator","replaceGTE0","COMPARATORLOOSE","rangeMap","comparators","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","ANY","COMPARATOR","requireComparator","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","replaceTilde","TILDELOOSE","TILDE","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","anyX","STAR","GTE0PRE","GTE0","incPr","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","satisfies_1","satisfies$1","embedStyle","_len11","_key11","deepMerge_","ownKeys$1","_objectSpread$1","vegaLite","vl","DEFAULT_ACTIONS","export","png","compiled","editor","I18N","CLICK_TO_VIEW_ACTIONS","COMPILED_ACTION","EDITOR_ACTION","PNG_ACTION","SOURCE_ACTION","SVG_ACTION","NAMES","VERSION","PREPROCESSOR","vlSpec","SVG_CIRCLES","CHART_WRAPPER_CLASS","viewSource","sourceHeader","sourceFooter","footer","win","write","createLoader","embed","_parsedOpts$config","_usermetaOpts$config","parsedSpec","loadedEmbedOptions","_parsedSpec$usermeta$","_parsedSpec$usermeta","embedOptions","defaultStyle","embedOptionsFromUsermeta","usermetaLoader","_opts$loader","usermetaOpts","loadOpts","parsedOpts","mergedOpts","_opts$config","_opts$actions","_opts$renderer","_opts$logLevel","_opts$downloadFileNam","_ref104","_vega$expressionInter","actions","i18n","downloadFileName","ID","rootContainer","_document$head","possibleRoot","getRootNode","ShadowRoot","getRoot","providedMode","_NAMES$providedMode","guessMode","chartWrapper","expressionFunctions","viewClass","expressionInterpreter","isTooltipHandler","documentClickHandler","updateSet","summary","ev","ctrl","i18nExportAction","exportLink","download","viewSourceLink","_opts$sourceHeader","_opts$sourceFooter","compileLink","_opts$sourceHeader2","_opts$sourceFooter2","_opts$editorUrl","editorUrl","editorLink","listen","postMessage","_embed","_opt$config","updateMultipleDatasetsInView","functionToCheck","updateSingleDatasetInView","getUniqueFieldNames","NOOP","addSignalListenersToView","signalListeners","signalNames","removeSignalListenersFromView","combineSpecWithDimension","_defineProperty$1","VegaEmbed","onError","containerRef","action","resultPromise","handleError","componentDidMount","createView","componentDidUpdate","prevProps","fieldSet","clearView","specChanges","newSpec","oldSpec","isExpensive","computeSpecChanges","newSignalListeners","oldSignalListeners","areSignalListenersChanged","modifyView","componentWillUnmount","onNewView","finalSpec","_extends","_defineProperty","Vega","vegaEmbed","handleNewView"],"sourceRoot":""} \ No newline at end of file diff --git a/824715f2-cf6903bb3e85bc31c3f7.js b/824715f2-cf6903bb3e85bc31c3f7.js new file mode 100644 index 00000000..7445c008 --- /dev/null +++ b/824715f2-cf6903bb3e85bc31c3f7.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkproduct_website_template=self.webpackChunkproduct_website_template||[]).push([[369],{1800:function(t,r,e){e.d(r,{AS:function(){return Lc},BB:function(){return Tt},EK:function(){return wt},Ee:function(){return ue},GS:function(){return De},JH:function(){return Ae},QI:function(){return jc},RM:function(){return Go},SC:function(){return sc},T3:function(){return Te},Ux:function(){return He},WA:function(){return $e},XJ:function(){return Lr},aC:function(){return Sr},bZ:function(){return Z},dn:function(){return jt},iA:function(){return qo},k8:function(){return Vr},mr:function(){return Xe},nL:function(){return jr},nv:function(){return eo},pj:function(){return Xo},rU:function(){return X},xD:function(){return ac},xs:function(){return lc}});var o=e(7424),c=e.n(o),a=e(215),n=e.n(a),u=e(8416),i=e.n(u),l=e(7294),d=e(5893),h=e(5505),b=e(3012),s=e.n(b),v=e(434),f=e.n(v);function p(t,r){void 0===r&&(r={});var e=r.insertAt;if(t&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===e&&o.firstChild?o.insertBefore(c,o.firstChild):o.appendChild(c),c.styleSheet?c.styleSheet.cssText=t:c.appendChild(document.createTextNode(t))}}p(".utrecht-accordion__section{break-inside:avoid;margin-block-end:var(--utrecht-accordion-section-margin-block-end);margin-block-start:var(--utrecht-accordion-section-margin-block-start)}.utrecht-accordion__button{--utrecht-button-focus-scale:1;--utrecht-button-hover-scale:1;--utrecht-button-inline-size:100%;--utrecht-button-subtle-background-color:var(--utrecht-accordion-button-background-color);--utrecht-button-subtle-padding-inline-start:var(--utrecht-accordion-button-padding-inline-start);--utrecht-button-subtle-padding-inline-end:var(--utrecht-accordion-button-padding-inline-end);--utrecht-button-subtle-padding-block-start:var(--utrecht-accordion-button-padding-block-start);--utrecht-button-subtle-padding-block-end:var(--utrecht-accordion-button-padding-block-end);--utrecht-button-subtle-color:var(--utrecht-accordion-button-color);--utrecht-button-subtle-hover-background-color:var(--utrecht-accordion-button-hover-background-color);--utrecht-button-subtle-hover-border-color:var(--utrecht-accordion-button-hover-border-color);--utrecht-button-subtle-hover-color:var(--utrecht-accordion-button-hover-color);--utrecht-button-subtle-active-background-color:var(--utrecht-accordion-button-active-background-color);--utrecht-button-subtle-active-border-color:var(--utrecht-accordion-button-active-border-color);--utrecht-button-subtle-active-color:var(--utrecht-accordion-button-active-color);--utrecht-button-subtle-focus-background-color:var(--utrecht-accordion-button-focus-background-color);--utrecht-button-subtle-focus-border-color:var(--utrecht-accordion-button-focus-border-color);--utrecht-button-subtle-focus-color:var(--utrecht-accordion-button-focus-color);--utrecht-button-subtle-border-color:var(--utrecht-accordion-button-border-color);--utrecht-button-subtle-border-width:var(--utrecht-accordion-button-border-width);justify-content:start!important;position:relative}.utrecht-accordion__button[aria-expanded]:after{background-color:var(--utrecht-accordion-button-icon-background-color);background-position:50%;background-repeat:no-repeat;block-size:var(--utrecht-accordion-button-icon-size);content:\"\";inline-size:var(--utrecht-accordion-button-icon-size);inset-block-start:0;inset-inline-end:0;position:absolute}.utrecht-accordion__button[aria-expanded=false]:after{background-image:var(--utrecht-accordion-icon-arrow-down,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='21.39' height='14.39'%3E%3Cpath fill='none' stroke='%231D1D1D' stroke-width='3' stroke-miterlimit='10' d='m15.866 4.135-5.32 5.322-5.322-5.322'/%3E%3C/svg%3E\"))}.utrecht-accordion__button[aria-expanded=true]:after{background-image:var(--utrecht-accordion-icon-arrow-up,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='21.39' height='14.39'%3E%3Cpath fill='none' stroke='%231D1D1D' stroke-width='3' stroke-miterlimit='10' d='m5.223 9.457 5.32-5.322 5.322 5.322'/%3E%3C/svg%3E\"));background-position:50%;background-repeat:no-repeat;content:\"\"}.utrecht-accordion__panel{border-block-start:none;border-color:var(--utrecht-accordion-panel-border-color);border-style:solid;border-width:var(--utrecht-accordion-panel-border-width);padding-block-end:var(--utrecht-accordion-panel-padding-block-end);padding-block-start:var(--utrecht-accordion-panel-padding-block-start);padding-inline-end:var(--utrecht-accordion-panel-padding-inline-end);padding-inline-start:var(--utrecht-accordion-panel-padding-inline-start)}");var g=["appearance","busy","disabled","children","className","hint","pressed","type"];function m(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function k(t){for(var r=1;r=0?o[u]:void 0,l=i?(c=o,(n=(a=i)?c.indexOf(a):-1)>=0&&n+1<=c.length-1?c[n+1]:void 0):void 0;null==l||null===(r=l.current)||void 0===r||r.focus()},focusFirstSection:function(){var t,r,c=(r=o).length>=1?r[0]:void 0;console.log(e),null==c||null===(t=c.current)||void 0===t||t.focus()},focusPreviousSection:function(t){var r,c,a,n,u=e.indexOf(t),i=u>=0?o[u]:void 0,l=i?(c=o,(n=(a=i)?c.indexOf(a):-1)>=0&&n-1<=c.length-1?c[n-1]:void 0):void 0;null==l||null===(r=l.current)||void 0===r||r.focus()},focusLastSection:function(){var t,r,e=(r=o).length>=1?r[r.length-1]:void 0;null==e||null===(t=e.current)||void 0===t||t.focus()}}}(r,e),a=o.refs,n=o.buttonRefs,u=o.focusNextSection,i=o.focusFirstSection,h=o.focusLastSection,b=o.focusPreviousSection,s=(0,l.useState)(null),v=c()(s,2),f=v[0],p=v[1],g=(0,l.useState)(r),m=c()(g,2),k=m[0],C=m[1],y=function(t){p(t)},w=function(t){p(null)};return(0,d.jsx)(N,{onKeyDown:function(t){if("End"===t.code)h();else if("Home"===t.code)i();else if("ArrowDown"===t.code)f&&u(f);else{if("ArrowUp"!==t.code)return;f&&b(f)}t.preventDefault()},ref:e,children:k.map((function(t,r){return(0,l.createElement)(z,P(P({},t),{},{ref:a[r],buttonRef:n[r],key:r,onButtonFocus:y,onButtonBlur:w,onActivate:function(t){var r=a.indexOf(t);C(k.map((function(t,e){return e===r?P(P({},t),{},{expanded:!t.expanded}):t})))}}),t.body)}))})}).displayName="AccordionProvider";p('.utrecht-alert{background-color:var(--_utrecht-alert-background-color,var(--utrecht-alert-background-color));border-color:var(--_utrecht-alert-border-color,var(--utrecht-alert-border-color));border-radius:var(--utrecht-alert-border-radius,0);border-style:solid;border-width:var(--_utrecht-alert-border-width,var(--utrecht-alert-border-width,0));color:var(--_utrecht-alert-color,var(--utrecht-alert-color));display:grid;gap:var(--utrecht-alert-icon-gap);grid-template-areas:"icon message";grid-template-columns:0fr 100fr;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-start, 0));padding-block-end:var(--utrecht-alert-padding-block-end);padding-block-start:var(--utrecht-alert-padding-block-start);padding-inline-end:var(--utrecht-alert-padding-inline-end);padding-inline-start:var(--utrecht-alert-padding-inline-start)}.utrecht-alert__icon{--utrecht-icon-color:var(--_utrecht-alert-icon-color,var(--utrecht-alert-icon-color));grid-area:icon}.utrecht-alert__message{grid-area:message}.utrecht-alert--info{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-info-color);--_utrecht-alert-background-color:var(--utrecht-alert-info-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-info-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-info-border-width);--_utrecht-alert-color:var(--utrecht-alert-info-color)}.utrecht-alert--ok{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-ok-color);--_utrecht-alert-background-color:var(--utrecht-alert-ok-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-ok-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-ok-border-width);--_utrecht-alert-color:var(--utrecht-alert-ok-color)}.utrecht-alert--warning{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-warning-color);--_utrecht-alert-background-color:var(--utrecht-alert-warning-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-warning-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-warning-border-width);--_utrecht-alert-color:var(--utrecht-alert-warning-color)}.utrecht-alert--error{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-error-color);--_utrecht-alert-background-color:var(--utrecht-alert-error-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-error-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-error-border-width);--_utrecht-alert-color:var(--utrecht-alert-error-color)}');var L=["children","className","icon","type"];function D(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function E(t){for(var r=1;r0&&"utrecht-currency-data--positive",l),"aria-label":v,children:e||f}))})).displayName="CurrencyData";p(".utrecht-badge-data{background-color:var(--utrecht-badge-background-color,#000);border-radius:var(--utrecht-badge-border-radius,.5ch);color:var(--utrecht-badge-color,#fff);display:inline-block;font-family:var(--utrecht-document-font-family,sans-serif);font-size:var(--utrecht-badge-font-size,inherit);font-style:var(--utrecht-badge-font-style,normal);font-weight:var(--utrecht-badge-font-weight,bold);letter-spacing:var(--utrecht-badge-data-letter-spacing,inherit);line-height:var(--utrecht-badge-line-height,1em);max-block-size:max-content;max-inline-size:max-content;min-block-size:1em;min-inline-size:1em;padding-block-end:var(--utrecht-badge-padding-block,.5ex);padding-block-start:var(--utrecht-badge-padding-block,.5ex);padding-inline-end:var(--utrecht-badge-padding-inline,.5ch);padding-inline-start:var(--utrecht-badge-padding-inline,.5ch);text-decoration:none;text-transform:var(--utrecht-badge-data-text-transform,inherit)}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-badge-data{border:1px solid}}");var Zt=["children","className","dateTime","value"];function St(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function Ht(t){for(var r=1;r*{--utrecht-space-around:1}.utrecht-form-field-description--invalid{color:var(--utrecht-form-field-description-invalid-color,var(--utrecht-feedback-invalid-color,var(--utrecht-feedback-danger-color)))}.utrecht-form-field-description--valid{color:var(--utrecht-form-field-description-valid-color,var(--utrecht-feedback-valid-color,var(--utrecht-feedback-safe-color)))}.utrecht-form-field-description--warning{color:var(--utrecht-form-field-description-warning-color,var(--utrecht-feedback-warning-color))}");var hr=["invalid","valid","warning","className","children"];function br(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function sr(t){for(var r=1;rlegend{color:var(--utrecht-form-fieldset-legend-disabled-color,var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit)))}.utrecht-html label{color:var(--utrecht-form-label-color);font-size:var(--utrecht-form-label-font-size);font-weight:var(--utrecht-form-label-font-weight)}.utrecht-html input[type=checkbox i]~label{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-checkbox-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-html input[type=radio i]~label{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-radio-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-html mark{background-color:var(--utrecht-mark-background-color,revert);color:var(--utrecht-mark-color,revert)}@media print{.utrecht-html mark{outline-color:currentColor;outline-style:dotted;outline-width:.1em}}@media screen and (-ms-high-contrast:active){.utrecht-html mark{background-color:Highlight;color:HighlightText}}.utrecht-html h1{color:var(--utrecht-heading-1-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-1-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-1-font-size,revert);font-weight:var(--utrecht-heading-1-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-1-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-start, 0))}.utrecht-html h1,.utrecht-html h2{--utrecht-space-around:1;break-inside:avoid-column;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h2{color:var(--utrecht-heading-2-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-2-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-2-font-size,revert);font-weight:var(--utrecht-heading-2-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-2-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-start, 0))}.utrecht-html h3{color:var(--utrecht-heading-3-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-3-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-3-font-size,revert);font-weight:var(--utrecht-heading-3-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-3-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-start, 0))}.utrecht-html h3,.utrecht-html h4{--utrecht-space-around:1;break-inside:avoid-column;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h4{color:var(--utrecht-heading-4-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-4-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-4-font-size,revert);font-weight:var(--utrecht-heading-4-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-4-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-start, 0))}.utrecht-html h5{color:var(--utrecht-heading-5-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-5-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-5-font-size,revert);font-weight:var(--utrecht-heading-5-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-5-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-start, 0))}.utrecht-html h5,.utrecht-html h6{--utrecht-space-around:1;break-inside:avoid-column;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h6{color:var(--utrecht-heading-6-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-6-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-6-font-size,revert);font-weight:var(--utrecht-heading-6-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-6-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-start, 0))}.utrecht-html hgroup{--utrecht-pre-heading-order:-1;--utrecht-space-around:1;display:flex;flex-direction:column;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-start, 0))}.utrecht-html hgroup>*{--utrecht-space-around:0}.utrecht-html a{--utrecht-icon-size:var(--utrecht-link-icon-size,1em);color:var(--_utrecht-link-state-color,var(--utrecht-link-color,var(--_utrecht-link-forced-colors-color)))}.utrecht-html a:visited{--_utrecht-link-forced-colors-color:visitedtext;--_utrecht-link-state-color:var(--utrecht-link-visited-color)}.utrecht-html a:hover{--_utrecht-link-forced-colors-color:linktext;--_utrecht-link-state-color:var(--utrecht-link-hover-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-hover-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-hover-text-decoration-thickness);text-decoration-skip:none;text-decoration-skip-ink:none}.utrecht-html a:active{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-html a:focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-link-focus-background-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);text-decoration-skip-ink:none;z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-html a:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html a[href^="tel:" i]{white-space:nowrap}.utrecht-html ol{--utrecht-space-around:1;box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit)));line-height:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit)));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-end, var(--utrecht-unordered-list-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-start, var(--utrecht-unordered-list-margin-block-start, 0)));padding-inline-start:var(--utrecht-ordered-list-padding-inline-start,var(--utrecht-unordered-list-padding-inline-start,2ch));text-align:start}.utrecht-html ol>li{margin-block-end:var(--utrecht-ordered-list-item-margin-block-end,var(--utrecht-unordered-list-item-margin-block-end));margin-block-start:var(--utrecht-ordered-list-item-margin-block-start,var(--utrecht-unordered-list-item-margin-block-start));padding-inline-start:var(--utrecht-ordered-list-item-padding-inline-start,var(--utrecht-unordered-list-item-padding-inline-start,1ch))}.utrecht-html ol:lang(ar){list-style:arabic-indic}.utrecht-html p{color:var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit));font-family:var(--utrecht-paragraph-font-family,var(--utrecht-document-font-family,inherit));font-size:var(--utrecht-paragraph-font-size,var(--utrecht-document-font-size,inherit));font-weight:var(--utrecht-paragraph-font-weight,inherit);line-height:var(--utrecht-paragraph-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-start, 0))}.utrecht-html p.lead{color:var(--utrecht-paragraph-lead-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-lead-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-lead-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-lead-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-html *~p{--utrecht-space-around:1}.utrecht-html p:has(>small:only-child){color:var(--utrecht-paragraph-small-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-small-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-small-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-small-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-html p>small:only-child{font-size:inherit}.utrecht-html pre:has(>code:only-child){--utrecht-code-color:var(--utrecht-code-block-color,inherit);--utrecht-code-background-color:var(--utrecht-code-block-background-color,inherit);--utrecht-code-font-weight:var(--utrecht-code-block-font-weight,inherit);--utrecht-code-font-size:var(--utrecht-code-block-font-size,inherit);--utrecht-code-font-family:var(--utrecht-code-block-font-family,monospace);background-color:var(--utrecht-code-background-color);background-color:var(--utrecht-code-block-background-color);color:var(--utrecht-code-color);display:block;font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-size:var(--utrecht-code-block-font-size,var(--utrecht-code-font-size));font-variant-ligatures:none;line-height:var(--utrecht-code-line-height);line-height:var(--utrecht-code-block-line-height,var(--utrecht-code-line-height));margin-block-end:var(--utrecht-code-block-margin-block-end);margin-block-start:var(--utrecht-code-block-margin-block-start);margin-inline-end:var(--utrecht-code-block-margin-inline-end);margin-inline-start:var(--utrecht-code-block-margin-inline-start);padding-block-end:var(--utrecht-code-block-padding-block-end);padding-block-start:var(--utrecht-code-block-padding-block-start);padding-inline-end:var(--utrecht-code-block-padding-inline-end);padding-inline-start:var(--utrecht-code-block-padding-inline-start);white-space:pre}.utrecht-html pre:has(>code:only-child)>code{display:contents}.utrecht-html input[type=radio i]{--_utrecht-radio-button-background-color:var(\n --_utrecht-radio-button-interactive-background-color,var(--_utrecht-radio-button-state-background-color,var(--utrecht-radio-button-background-color))\n );--_utrecht-radio-button-border-color:var(\n --_utrecht-radio-button-interactive-border-color,var(--_utrecht-radio-button-state-border-color,var(--utrecht-radio-button-border-color,currentColor))\n );--_utrecht-radio-button-border-width:var(\n --_utrecht-radio-button-interactive-border-width,var(--_utrecht-radio-button-state-border-width,var(--utrecht-radio-button-border-width))\n );--_utrecht-radio-button-color:var(\n --_utrecht-radio-button-interactive-color,var(--_utrecht-radio-button-state-color,var(--utrecht-radio-button-color,currentColor))\n );--_utrecht-radio-button-icon-size:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--_utrecht-radio-button-background-color);background-image:radial-gradient(circle,var(--_utrecht-radio-button-color,transparent) calc(var(--_utrecht-radio-button-icon-size, 50%) - 5%),var(--_utrecht-radio-button-background-color,currentColor) var(--_utrecht-radio-button-icon-size,50%));background-position:50%;background-repeat:no-repeat;background-size:contain;block-size:var(--utrecht-radio-button-size,1em);border-color:var(--_utrecht-radio-button-border-color);border-radius:50%;border-style:solid;border-width:var(--_utrecht-radio-button-border-width);cursor:var(--utrecht-action-activate-cursor,revert);inline-size:var(--utrecht-radio-button-size,1em);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-end:var(--utrecht-radio-button-margin-inline-end);margin-inline-start:0;min-block-size:24px;min-inline-size:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:top}.utrecht-html input[type=radio i]:checked{--_utrecht-radio-button-icon-size:var(--utrecht-radio-button-icon-size,50%);--_utrecht-radio-button-state-background-color:var(--utrecht-radio-button-checked-background-color);--_utrecht-radio-button-state-border-color:var(--utrecht-radio-button-checked-border-color);--_utrecht-radio-button-state-border-width:var(--utrecht-radio-button-checked-border-width);--_utrecht-radio-button-state-color:var(--utrecht-radio-button-checked-color);--_utrecht-radio-button-state-active-background-color:var(--utrecht-radio-button-checked-active-background-color);--_utrecht-radio-button-state-active-border-color:var(--utrecht-radio-button-checked-active-border-color);--_utrecht-radio-button-state-active-border-width:var(--utrecht-radio-button-checked-active-border-width);--_utrecht-radio-button-state-active-color:var(--utrecht-radio-button-checked-active-color);--_utrecht-radio-button-state-focus-background-color:var(--utrecht-radio-button-checked-focus-background-color);--_utrecht-radio-button-state-focus-border-color:var(--utrecht-radio-button-checked-focus-border-color);--_utrecht-radio-button-state-focus-border-width:var(--utrecht-radio-button-checked-focus-border-width);--_utrecht-radio-button-state-focus-color:var(--utrecht-radio-button-checked-focus-color);--_utrecht-radio-button-state-hover-background-color:var(--utrecht-radio-button-checked-hover-background-color);--_utrecht-radio-button-state-hover-border-color:var(--utrecht-radio-button-checked-hover-border-color);--_utrecht-radio-button-state-hover-border-width:var(--utrecht-radio-button-checked-hover-border-width);--_utrecht-radio-button-state-hover-color:var(--utrecht-radio-button-checked-hover-color)}.utrecht-html input[type=radio i]:disabled{--_utrecht-radio-button-background-color:var(--utrecht-radio-button-disabled-background-color);--_utrecht-radio-button-border-color:var(--utrecht-radio-button-disabled-border-color);--_utrecht-radio-button-border-width:var(--utrecht-radio-button-disabled-border-width);--_utrecht-radio-button-color:var(--utrecht-radio-button-disabled-color);--_utrecht-radio-button-focus-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-focus-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-focus-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-focus-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-active-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-active-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-active-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-active-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-hover-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-hover-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-hover-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-hover-color:var(--_utrecht-radio-button-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html input[type=radio i]:invalid,.utrecht-html input[type=radio i][aria-invalid=true]{border-color:var(--utrecht-radio-button-invalid-border-color,var(--utrecht-radio-button-border-color));border-width:var(--utrecht-radio-button-invalid-border-width,var(--utrecht-radio-button-border-width));color:var(--utrecht-radio-button-invalid-color,var(--utrecht-radio-button-color))}.utrecht-html input[type=radio i]:focus:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\n --utrecht-radio-button-focus-background-color,var(--utrecht-radio-button-focus-background-color)\n );--_utrecht-radio-button-interactive-border-color:var(\n --utrecht-radio-button-focus-border-color,var(--utrecht-radio-button-focus-border-color)\n );--_utrecht-radio-button-interactive-border-width:var(\n --utrecht-radio-button-focus-border-width,var(--utrecht-radio-button-focus-border-width)\n );--_utrecht-radio-button-interactive-color:var(\n --utrecht-radio-button-focus-color,var(--utrecht-radio-button-focus-color)\n )}.utrecht-html input[type=radio i]:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input[type=radio i]:hover:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\n --_utrecht-radio-button-state-hover-background-color,var(--utrecht-radio-button-hover-background-color)\n );--_utrecht-radio-button-interactive-border-color:var(\n --_utrecht-radio-button-state-hover-border-color,var(--utrecht-radio-button-hover-border-color)\n );--_utrecht-radio-button-interactive-border-width:var(\n --_utrecht-radio-button-state-hover-border-width,var(--utrecht-radio-button-hover-border-width)\n );--_utrecht-radio-button-interactive-color:var(\n --_utrecht-radio-button-state-hover-color,var(--utrecht-radio-button-hover-color)\n )}.utrecht-html input[type=radio i]:active:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\n --_utrecht-radio-button-state-active-background-color,var(--utrecht-radio-button-active-background-color)\n );--_utrecht-radio-button-interactive-border-color:var(\n --_utrecht-radio-button-state-active-border-color,var(--utrecht-radio-button-active-border-color)\n );--_utrecht-radio-button-interactive-border-width:var(\n --_utrecht-radio-button-state-active-border-width,var(--utrecht-radio-button-active-border-width)\n );--_utrecht-radio-button-interactive-color:var(\n --_utrecht-radio-button-state-active-color,var(--utrecht-radio-button-active-color)\n )}.utrecht-html select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:var(--utrecht-select-background-color,var(--utrecht-form-control-background-color));background-image:var(--utrecht-select-background-image);background-position:100%;background-repeat:no-repeat;background-size:1.4em;border-block-end-width:var(--utrecht-select-border-block-end-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width)));border-block-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-color:var(--utrecht-select-border-color,var(--utrecht-form-control-border-color));border-inline-end-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-inline-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-radius:var(--utrecht-select-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;color:var(--utrecht-select-color,var(--utrecht-form-control-color));font-family:var(--utrecht-select-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-select-font-size,var(--utrecht-form-control-font-size));inline-size:100%;max-inline-size:var(--utrecht-select-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-select-padding-block-end,var(--utrecht-form-control-padding-block-end));padding-block-start:var(--utrecht-select-padding-block-start,var(--utrecht-form-control-padding-block-start));padding-inline-end:var(--utrecht-select-padding-inline-end,var(--utrecht-form-control-padding-inline-end));padding-inline-start:var(--utrecht-select-padding-inline-start,var(--utrecht-form-control-padding-inline-start))}.utrecht-html select:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-select-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-select-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html select:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html select:disabled{background-color:var(--utrecht-select-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html select[aria-invalid=true]{--_utrecht-select-border-width:var(\n --utrecht-select-invalid-border-width,var(\n --utrecht-form-control-invalid-border-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width))\n )\n );background-color:var(--utrecht-select-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-select-border-width);border-block-end-width:var(--utrecht-select-invalid-border-block-end-width,var(--utrecht-form-control-invalid-border-block-end-width,var(--utrecht-select-border-block-end-width,var(--utrecht-form-control-border-block-end-width,var(--_utrecht-select-border-width)))));border-color:var(--utrecht-select-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))))}.utrecht-html hr{border-color:var(--utrecht-separator-color);border-width:0 0 var(--utrecht-separator-block-size) 0;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-start, 0))}.utrecht-html hr,.utrecht-html table{--utrecht-space-around:1;border-style:solid}.utrecht-html table{border-collapse:separate;border-color:var(--utrecht-table-border-color,0);border-spacing:0;border-width:var(--utrecht-table-border-width,0);font-family:var(--utrecht-table-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-table-font-size,inherit);inline-size:100%;line-height:var(--utrecht-table-line-height,inherit);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-start, 0))}.utrecht-html caption{break-inside:avoid;color:var(--utrecht-table-caption-color);font-family:var(--utrecht-table-caption-font-family);font-size:var(--utrecht-table-caption-font-size);font-weight:var(--utrecht-table-caption-font-weight);line-height:var(--utrecht-table-caption-line-height);margin-block-end:var(--utrecht-table-caption-margin-block-end);page-break-after:avoid;text-align:var(--utrecht-table-caption-text-align,center)}.utrecht-html thead{--_utrecht-table-header-cell-vertical-align:bottom;--_utrecht-table-header-cell-z-index:8;background-color:var(--utrecht-table-header-background-color);break-inside:avoid;color:var(--utrecht-table-header-color);font-weight:var(--utrecht-table-header-font-weight);page-break-inside:avoid;text-transform:var(--utrecht-table-header-text-transform)}.utrecht-html tbody{--_utrecht-table-header-cell-z-index:2}.utrecht-html th{color:var(--utrecht-table-header-cell-color);font-size:var(--utrecht-table-header-cell-font-size);font-weight:var(--utrecht-table-header-cell-font-weight,bold);text-transform:var(--utrecht-table-header-cell-text-transform);vertical-align:var(--_utrecht-table-header-cell-vertical-align,top);z-index:var(--_utrecht-table-header-cell-z-index)}.utrecht-html td,.utrecht-html th{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start}.utrecht-html td,.utrecht-html th{border-block-end-color:var(--utrecht-table-row-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-row-border-block-end-width,0);vertical-align:top}.utrecht-html td:first-child,.utrecht-html th:first-child{padding-inline-start:var(--utrecht-table-row-padding-inline-start,var(--utrecht-table-cell-padding-inline-start,0))}.utrecht-html td:last-child,.utrecht-html th:last-child{padding-inline-end:var(--utrecht-table-row-padding-inline-end,var(--utrecht-table-cell-padding-inline-end,0))}.utrecht-html thead tr:last-child th{border-block-end-color:var(--utrecht-table-header-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-header-border-block-end-width,0)}.utrecht-html td.numeric,.utrecht-html tfoot>tr>th.numeric,.utrecht-html th[scope=column].numeric,.utrecht-html thead>tr>th.numeric{--_utrecht-table-cell-text-align:right;text-align:var(--_utrecht-table-cell-text-align)}.utrecht-html td.numeric{font-variant-numeric:lining-nums tabular-nums}.utrecht-html table.alternate-row-color>tr:nth-child(2n)>td,.utrecht-html table.alternate-row-color>tr:nth-child(2n)>th{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-html table.alternate-row-color>tr:nth-child(odd)>td,.utrecht-html table.alternate-row-color>tr:nth-child(odd)>th{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-html table.alternate-row-color>tbody>tr:nth-child(2n)>td,.utrecht-html table.alternate-row-color>tbody>tr:nth-child(2n)>th{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-html table.alternate-row-color>tbody>tr:nth-child(odd)>td,.utrecht-html table.alternate-row-color>tbody>tr:nth-child(odd)>th{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-html textarea{background-color:var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textarea-border-bottom-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textarea-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textarea-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textarea-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textarea-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textarea-line-height,initial);max-inline-size:var(--utrecht-textarea-max-inline-size,var(--utrecht-form-control-max-inline-size));min-block-size:var(--utrecht-textarea-min-block-size);padding-block-end:var(--utrecht-textarea-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textarea-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textarea-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textarea-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial));resize:vertical;resize:block}.utrecht-html textarea:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textarea-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textarea-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html textarea:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html textarea:invalid,.utrecht-html textarea[aria-invalid=true]{--_utrecht-textarea-border-width:var(\n --utrecht-textarea-invalid-border-width,var(\n --utrecht-form-control-invalid-border-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width))\n )\n );background-color:var(--utrecht-textarea-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textarea-border-width);border-block-end-width:var(--utrecht-textarea-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textarea-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textarea-border-width)))));border-color:var(--utrecht-textarea-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-html textarea:read-only{background-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textarea-border,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textarea-border,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-html textarea:disabled{background-color:var(--utrecht-textarea-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html textarea::placeholder{color:var(--utrecht-textarea-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-html input:not([type]),.utrecht-html input[type=date i],.utrecht-html input[type=datetime-local i],.utrecht-html input[type=email i],.utrecht-html input[type=month i],.utrecht-html input[type=number i],.utrecht-html input[type=password i],.utrecht-html input[type=search i],.utrecht-html input[type=tel i],.utrecht-html input[type=text i],.utrecht-html input[type=time i],.utrecht-html input[type=url i],.utrecht-html input[type=week i]{background-color:var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textbox-border-bottom-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textbox-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textbox-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textbox-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textbox-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textbox-line-height,var(--utrecht-form-control-line-height,initial));max-inline-size:var(--utrecht-textbox-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-textbox-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textbox-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textbox-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textbox-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial))}.utrecht-html input:not([type]):focus,.utrecht-html input[type=date i]:focus,.utrecht-html input[type=datetime-local i]:focus,.utrecht-html input[type=email i]:focus,.utrecht-html input[type=month i]:focus,.utrecht-html input[type=number i]:focus,.utrecht-html input[type=password i]:focus,.utrecht-html input[type=search i]:focus,.utrecht-html input[type=tel i]:focus,.utrecht-html input[type=text i]:focus,.utrecht-html input[type=time i]:focus,.utrecht-html input[type=url i]:focus,.utrecht-html input[type=week i]:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textbox-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textbox-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input:not([type]):focus:not(:focus-visible),.utrecht-html input[type=date i]:focus:not(:focus-visible),.utrecht-html input[type=datetime-local i]:focus:not(:focus-visible),.utrecht-html input[type=email i]:focus:not(:focus-visible),.utrecht-html input[type=month i]:focus:not(:focus-visible),.utrecht-html input[type=number i]:focus:not(:focus-visible),.utrecht-html input[type=password i]:focus:not(:focus-visible),.utrecht-html input[type=search i]:focus:not(:focus-visible),.utrecht-html input[type=tel i]:focus:not(:focus-visible),.utrecht-html input[type=text i]:focus:not(:focus-visible),.utrecht-html input[type=time i]:focus:not(:focus-visible),.utrecht-html input[type=url i]:focus:not(:focus-visible),.utrecht-html input[type=week i]:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html input:not([type]):invalid,.utrecht-html input:not([type])[aria-invalid=true],.utrecht-html input[type=date i]:invalid,.utrecht-html input[type=date i][aria-invalid=true],.utrecht-html input[type=datetime-local i]:invalid,.utrecht-html input[type=datetime-local i][aria-invalid=true],.utrecht-html input[type=email i]:invalid,.utrecht-html input[type=email i][aria-invalid=true],.utrecht-html input[type=month i]:invalid,.utrecht-html input[type=month i][aria-invalid=true],.utrecht-html input[type=number i]:invalid,.utrecht-html input[type=number i][aria-invalid=true],.utrecht-html input[type=password i]:invalid,.utrecht-html input[type=password i][aria-invalid=true],.utrecht-html input[type=search i]:invalid,.utrecht-html input[type=search i][aria-invalid=true],.utrecht-html input[type=tel i]:invalid,.utrecht-html input[type=tel i][aria-invalid=true],.utrecht-html input[type=text i]:invalid,.utrecht-html input[type=text i][aria-invalid=true],.utrecht-html input[type=time i]:invalid,.utrecht-html input[type=time i][aria-invalid=true],.utrecht-html input[type=url i]:invalid,.utrecht-html input[type=url i][aria-invalid=true],.utrecht-html input[type=week i]:invalid,.utrecht-html input[type=week i][aria-invalid=true]{--_utrecht-textbox-border-width:var(\n --utrecht-textbox-invalid-border-width,var(\n --utrecht-form-control-invalid-border-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width))\n )\n );background-color:var(--utrecht-textbox-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textbox-border-width);border-block-end-width:var(--utrecht-textbox-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textbox-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textbox-border-width)))));border-color:var(--utrecht-textbox-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-html input:not([type]):read-only,.utrecht-html input[type=date i]:read-only,.utrecht-html input[type=datetime-local i]:read-only,.utrecht-html input[type=email i]:read-only,.utrecht-html input[type=month i]:read-only,.utrecht-html input[type=number i]:read-only,.utrecht-html input[type=password i]:read-only,.utrecht-html input[type=search i]:read-only,.utrecht-html input[type=tel i]:read-only,.utrecht-html input[type=text i]:read-only,.utrecht-html input[type=time i]:read-only,.utrecht-html input[type=url i]:read-only,.utrecht-html input[type=week i]:read-only{background-color:var(--utrecht-textbox-read-only-background-color,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-read-only-border-color,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-html input:not([type]):disabled,.utrecht-html input[type=date i]:disabled,.utrecht-html input[type=datetime-local i]:disabled,.utrecht-html input[type=email i]:disabled,.utrecht-html input[type=month i]:disabled,.utrecht-html input[type=number i]:disabled,.utrecht-html input[type=password i]:disabled,.utrecht-html input[type=search i]:disabled,.utrecht-html input[type=tel i]:disabled,.utrecht-html input[type=text i]:disabled,.utrecht-html input[type=time i]:disabled,.utrecht-html input[type=url i]:disabled,.utrecht-html input[type=week i]:disabled{background-color:var(--utrecht-textbox-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html input:not([type])::placeholder,.utrecht-html input[type=date i]::placeholder,.utrecht-html input[type=datetime-local i]::placeholder,.utrecht-html input[type=email i]::placeholder,.utrecht-html input[type=month i]::placeholder,.utrecht-html input[type=number i]::placeholder,.utrecht-html input[type=password i]::placeholder,.utrecht-html input[type=search i]::placeholder,.utrecht-html input[type=tel i]::placeholder,.utrecht-html input[type=text i]::placeholder,.utrecht-html input[type=time i]::placeholder,.utrecht-html input[type=url i]::placeholder,.utrecht-html input[type=week i]::placeholder{color:var(--utrecht-textbox-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-html input[autocomplete~=current-password i],.utrecht-html input[autocomplete~=new-password i],.utrecht-html input[type=password i]{font-variant-ligatures:none;font-variant-numeric:slashed-zero}.utrecht-html input[autocomplete~=bday i],.utrecht-html input[autocomplete~=bday-day i],.utrecht-html input[autocomplete~=bday-month i],.utrecht-html input[autocomplete~=bday-year i],.utrecht-html input[autocomplete~=cc-csc i],.utrecht-html input[autocomplete~=cc-exp i],.utrecht-html input[autocomplete~=cc-exp-month i],.utrecht-html input[autocomplete~=cc-exp-year i],.utrecht-html input[autocomplete~=cc-number i],.utrecht-html input[autocomplete~=one-time-code i],.utrecht-html input[autocomplete~=postal-code i],.utrecht-html input[autocomplete~=tel i],.utrecht-html input[autocomplete~=tel-area-code i],.utrecht-html input[autocomplete~=tel-country-code i],.utrecht-html input[autocomplete~=tel-extension i],.utrecht-html input[autocomplete~=tel-local i],.utrecht-html input[autocomplete~=tel-national i],.utrecht-html input[autocomplete~=transaction-amount i],.utrecht-html input[inputmode=decimal i],.utrecht-html input[inputmode=numeric i],.utrecht-html input[inputmode=tel i],.utrecht-html input[type=number i],.utrecht-html input[type=tel i]{-moz-appearance:textfield;font-variant-numeric:lining-nums tabular-nums}.utrecht-html input[inputmode=email i],.utrecht-html input[inputmode=url i],.utrecht-html input[type=email i],.utrecht-html input[type=url i]{font-variant-ligatures:none}.utrecht-html ul{--utrecht-space-around:1;box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit));line-height:var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-end, var(--utrecht-paragraph-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-start, var(--utrecht-paragraph-margin-block-start, 0)));padding-inline-start:var(--utrecht-unordered-list-padding-inline-start,2ch);text-align:start}.utrecht-html ul>li{margin-block-end:var(--utrecht-unordered-list-item-margin-block-end);margin-block-start:var(--utrecht-unordered-list-item-margin-block-start);padding-inline-start:var(--utrecht-unordered-list-item-padding-inline-start,1ch)}.utrecht-html ul>li::marker{color:var(--utrecht-unordered-list-marker-color);content:"ā—"}');var Cr=["children","className"];function yr(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function wr(t){for(var r=1;r*{--utrecht-space-around:0}");var Gr=["children","className"];function Ur(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function Kr(t){for(var r=1;r*{block-size:100%;display:inline-block;inline-size:auto}");var ve=["children","className"];function fe(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function pe(t){for(var r=1;rli,.utrecht-ordered-list--html-content>li,.utrecht-ordered-list__item{margin-block-end:var(--utrecht-ordered-list-item-margin-block-end,var(--utrecht-unordered-list-item-margin-block-end));margin-block-start:var(--utrecht-ordered-list-item-margin-block-start,var(--utrecht-unordered-list-item-margin-block-start));padding-inline-start:var(--utrecht-ordered-list-item-padding-inline-start,var(--utrecht-unordered-list-item-padding-inline-start,1ch))}");var ze=["children","className"];function Ne(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function Le(t){for(var r=1;rcaption,.utrecht-table__caption{break-inside:avoid;color:var(--utrecht-table-caption-color);font-family:var(--utrecht-table-caption-font-family);font-size:var(--utrecht-table-caption-font-size);font-weight:var(--utrecht-table-caption-font-weight);line-height:var(--utrecht-table-caption-line-height);margin-block-end:var(--utrecht-table-caption-margin-block-end);page-break-after:avoid;text-align:var(--utrecht-table-caption-text-align,center)}.utrecht-table--html-table>thead,.utrecht-table__header{--_utrecht-table-header-cell-vertical-align:bottom;--_utrecht-table-header-cell-z-index:8;background-color:var(--utrecht-table-header-background-color);break-inside:avoid;color:var(--utrecht-table-header-color);font-weight:var(--utrecht-table-header-font-weight);page-break-inside:avoid;text-transform:var(--utrecht-table-header-text-transform)}.utrecht-table__header--sticky th{background-color:var(--utrecht-table-header-sticky-background-color);color:var(--utrecht-table-header-sticky-color);inset-block-start:0;position:sticky}.utrecht-table__header--sticky tr:last-child>th{border-block-end-color:var(--utrecht-table-header-sticky-border-block-end-color,var(--utrecht-table-header-border-block-end-color,transparent));border-block-end-style:solid;border-block-end-width:var(--utrecht-table-header-sticky-border-block-end-width,var(--utrecht-table-header-border-block-end-width,0))}.utrecht-table__footer{--_utrecht-table-header-cell-z-index:5;z-index:3}.utrecht-table__footer--sticky{background-color:var(--utrecht-table-footer-sticky-background-color,var(--utrecht-table-footer-background-color));color:var(--utrecht-table-footer-sticky-color,var(--utrecht-table-footer-color));inset-block-end:0;position:sticky}.utrecht-table__footer--sticky tr:first-child>td,.utrecht-table__footer--sticky tr:first-child>th{border-block-start-color:var(--utrecht-table-header-sticky-border-block-start-color,var(--utrecht-table-header-border-block-start-color,transparent));border-block-start-style:solid;border-block-start-width:var(--utrecht-table-header-sticky-border-block-start-width,var(--utrecht-table-header-border-block-start-width,0))}.utrecht-table--html-table>tbody,.utrecht-table__body{--_utrecht-table-header-cell-z-index:2}.utrecht-table--fixed{inline-size:fit-content;table-layout:fixed}.utrecht-table--fixed th,.utrecht-table--oneline td,.utrecht-table--oneline th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.utrecht-table--html-table>tbody>tr,.utrecht-table--html-table>tfoot>tr,.utrecht-table--html-table>thead>tr,.utrecht-table--html-table>tr,.utrecht-table__row{break-inside:avoid;page-break-inside:avoid}.utrecht-table__row--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table--html-table>tbody>tr>th,.utrecht-table--html-table>tfoot>tr>th,.utrecht-table--html-table>thead>tr>th,.utrecht-table--html-table>tr>th,.utrecht-table__header-cell{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);color:var(--utrecht-table-header-cell-color);font-size:var(--utrecht-table-header-cell-font-size);font-weight:var(--utrecht-table-header-cell-font-weight,bold);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start;text-transform:var(--utrecht-table-header-cell-text-transform);vertical-align:var(--_utrecht-table-header-cell-vertical-align,top);z-index:var(--_utrecht-table-header-cell-z-index)}.utrecht-table__header-cell--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table__header-cell--sticky-block{background-color:#eee;color:#000;inset-block-start:0;position:sticky;z-index:calc(var(--_utrecht-table-header-cell-z-index, 0) + 2)}.utrecht-table__header-cell--sticky-inline{background-color:#eee;color:#000;inset-inline-start:0;position:sticky;z-index:calc(var(--_utrecht-table-header-cell-z-index, 0) + 1)}.utrecht-table--html-table>tbody>tr>td,.utrecht-table--html-table>tfoot>tr>td,.utrecht-table--html-table>thead>tr>td,.utrecht-table--html-table>tr>td,.utrecht-table__cell{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);border-block-end-color:var(--utrecht-table-row-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-row-border-block-end-width,0);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start;vertical-align:top}.utrecht-table--html-table>tbody>tr>td:first-child,.utrecht-table--html-table>tfoot>tr>td:first-child,.utrecht-table--html-table>thead>tr>td:first-child,.utrecht-table--html-table>tr>td:first-child,.utrecht-table__cell--first{padding-inline-start:var(--utrecht-table-row-padding-inline-start,var(--utrecht-table-cell-padding-inline-start,0))}.utrecht-table--html-table>tbody>tr>td:last-child,.utrecht-table--html-table>tfoot>tr>td:last-child,.utrecht-table--html-table>thead>tr>td:last-child,.utrecht-table--html-table>tr>td:last-child,.utrecht-table__cell--last{padding-inline-end:var(--utrecht-table-row-padding-inline-end,var(--utrecht-table-cell-padding-inline-end,0))}.utrecht-table__cell--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table__cell--numeric-column,.utrecht-table__header-cell--numeric-column{--_utrecht-table-cell-text-align:right;text-align:var(--_utrecht-table-cell-text-align)}.utrecht-table__cell--numeric-data{font-variant-numeric:lining-nums tabular-nums}.utrecht-table__row--alternate-odd{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-table__row--alternate-even{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-table__header-cell{--utrecht-button-font-size:inherit;--utrecht-button-font-weight:inherit;--utrecht-button-padding-inline-start:var(--utrecht-table-cell-padding-inline-start);--utrecht-button-padding-inline-end:var(--utrecht-table-cell-padding-inline-end);--utrecht-button-padding-block-start:var(--utrecht-table-cell-padding-block-start);--utrecht-button-padding-block-end:var(--utrecht-table-cell-padding-block-end);--utrecht-button-hover-scale:1;--utrecht-button-focus-scale:1;--utrecht-button-min-block-size:100%;--utrecht-button-min-inline-size:100%;--utrecht-button-border-color:transparent;--utrecht-button-border-size:1px}.utrecht-table__header-cell:has(.utrecht-button){padding-block-end:0;padding-block-start:0;padding-inline-end:0;padding-inline-start:0}.utrecht-table__header-cell-button{justify-content:var(--_utrecht-table-cell-text-align,start)}.utrecht-table__data--truncate{display:block;max-inline-size:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.utrecht-table__container{max-inline-size:100%;overflow-inline:scroll}.utrecht-table__header--hidden{clip:rect(1px,1px,1px,1px);block-size:1px;border:0 solid silver;clip-path:inset(50%);inline-size:1px;outline:1px solid red;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.utrecht-table--busy{cursor:var(--utrecht-action-busy-cursor,busy)}.utrecht-table--alternate-row-color .utrecht-table__body .utrecht-table__row:nth-child(odd){background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-table--alternate-row-color .utrecht-table__body .utrecht-table__row:nth-child(2n){background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-table--row-hover .utrecht-table__body .utrecht-table__row:hover .utrecht-table__cell,.utrecht-table--row-hover .utrecht-table__body .utrecht-table__row:hover .utrecht-table__header-cell{background-color:#ffefd5;color:maroon}.utrecht-table--row-focus-within .utrecht-table__body .utrecht-table__row:focus-within .utrecht-table__cell,.utrecht-table--row-focus-within .utrecht-table__body .utrecht-table__row:focus-within .utrecht-table__header-cell{background-color:#ffefd5;color:maroon}");var Vo=["busy","children","className"];function To(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function Bo(t){for(var r=1;rli,.utrecht-unordered-list--html-content>li,.utrecht-unordered-list__item{margin-block-end:var(--utrecht-unordered-list-item-margin-block-end);margin-block-start:var(--utrecht-unordered-list-item-margin-block-start);padding-inline-start:var(--utrecht-unordered-list-item-padding-inline-start,1ch)}.utrecht-unordered-list--html-content ul>li::marker,.utrecht-unordered-list--html-content>li::marker,.utrecht-unordered-list__item::marker,.utrecht-unordered-list__marker{color:var(--utrecht-unordered-list-marker-color);content:"ā—"}');var _c=["children","className"];function xc(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,o)}return e}function Oc(t){for(var r=1;r= 1 ? items[0] : undefined;\n};\n/**\r\n * Find the last item in an array\r\n */\nvar lastItem = function lastItem(items) {\n return items.length >= 1 ? items[items.length - 1] : undefined;\n};\n/**\r\n * Find the next item in an array, compared to an item in the array\r\n */\nvar nextItem = function nextItem(items, item) {\n var currentIndex = item ? items.indexOf(item) : -1;\n return currentIndex >= 0 && currentIndex + 1 <= items.length - 1 ? items[currentIndex + 1] : undefined;\n};\n/**\r\n * Find the previous item in an array, compared to an item in the array\r\n */\nvar previousItem = function previousItem(items, item) {\n var currentIndex = item ? items.indexOf(item) : -1;\n return currentIndex >= 0 && currentIndex - 1 <= items.length - 1 ? items[currentIndex - 1] : undefined;\n};\nvar AccordionSection = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var id = _ref.id,\n label = _ref.label,\n _ref$headingLevel = _ref.headingLevel,\n headingLevel = _ref$headingLevel === void 0 ? 1 : _ref$headingLevel,\n _ref$expanded = _ref.expanded,\n expanded = _ref$expanded === void 0 ? false : _ref$expanded,\n disabled = _ref.disabled,\n section = _ref.section,\n children = _ref.children,\n buttonRef = _ref.buttonRef,\n onActivate = _ref.onActivate,\n onButtonBlur = _ref.onButtonBlur,\n onButtonFocus = _ref.onButtonFocus;\n var panelAttributes = {\n className: clsx('utrecht-accordion__panel', {\n 'utrecht-accordion__panel--expanded': expanded\n }),\n // Use the `hidden` attribute so the toggle works even without CSS\n hidden: !expanded,\n // Use the `aria-hidden` attribute too, so it even works when CSS\n // doesn't use `display: none` to make transitions.\n 'aria-hidden': !expanded\n };\n var idPrefix = 'utrecht-accordion';\n var idSuffix = id || useId();\n var buttonId = \"\".concat(idPrefix).concat(idSuffix, \"-button\");\n var panelId = \"\".concat(idPrefix).concat(idSuffix, \"-panel\");\n // We render `__section` as `div` for a specific reasons:\n // - when a user navigates to the `region` landmark we want the first\n // content of the landmark to be the actual content, instead of starting\n // with the button that controls the region.\n // - we only want expanded sections to show up as landmarks\n return jsxs(\"div\", {\n className: clsx('utrecht-accordion__section'),\n id: id,\n ref: ref,\n children: [jsx(Heading, {\n level: headingLevel,\n className: clsx('utrecht-accordion__header'),\n children: jsx(Button, {\n className: clsx('utrecht-accordion__button'),\n appearance: \"subtle-button\",\n \"aria-expanded\": expanded === true,\n \"aria-controls\": panelId,\n disabled: disabled,\n id: buttonId,\n onClick: function onClick() {\n return typeof onActivate === 'function' && onActivate(ref);\n },\n onFocus: function onFocus() {\n return typeof onButtonFocus === 'function' && onButtonFocus(ref);\n },\n onBlur: function onBlur() {\n return typeof onButtonBlur === 'function' && onButtonBlur(ref);\n },\n ref: buttonRef,\n children: label\n })\n }), section ? jsx(\"section\", _objectSpread$1d(_objectSpread$1d({\n id: panelId,\n \"aria-labelledby\": buttonId\n }, panelAttributes), {}, {\n children: children\n })) : jsx(\"div\", _objectSpread$1d(_objectSpread$1d({}, panelAttributes), {}, {\n children: children\n }))]\n });\n});\nAccordionSection.displayName = 'AccordionSection';\nvar Accordion = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var children = _ref2.children,\n group = _ref2.group,\n headingLevel = _ref2.headingLevel,\n heading = _ref2.heading,\n props = _objectWithoutProperties(_ref2, _excluded$1c);\n var headingId = useId();\n return jsxs(Fragment, {\n children: [!!heading && typeof headingLevel === 'number' && jsx(Heading, {\n level: headingLevel,\n children: heading\n }), jsx(\"div\", _objectSpread$1d(_objectSpread$1d({\n className: clsx('utrecht-accordion'),\n role: group ? 'group' : undefined,\n \"aria-labelledby\": group ? headingId : undefined\n }, props), {}, {\n ref: ref,\n children: children\n }))]\n });\n});\nAccordion.displayName = 'Accordion';\nvar useAccordion = function useAccordion(sections, ref) {\n console.log('useAccordion');\n // const sections: AccordionSectionProviderProps[] = [];\n var refs = sections.map(function (_) {\n return useRef(null);\n });\n var buttonRefs = sections.map(function (_) {\n return useRef(null);\n });\n return {\n ref: ref,\n refs: refs,\n buttonRefs: buttonRefs,\n /* ForwardedRef of the last section to receive focus */\n activeElement: null,\n /* ForwardedRef for each section, in document order */\n sections: sections,\n focusNextSection: function focusNextSection(activeElement) {\n var _nextSection$current;\n var index = refs.indexOf(activeElement);\n var buttonRef = index >= 0 ? buttonRefs[index] : undefined;\n var nextSection = buttonRef ? nextItem(buttonRefs, buttonRef) : undefined;\n nextSection === null || nextSection === void 0 || (_nextSection$current = nextSection.current) === null || _nextSection$current === void 0 || _nextSection$current.focus();\n },\n focusFirstSection: function focusFirstSection() {\n var _firstSection$current;\n var firstSection = firstItem(buttonRefs);\n console.log(refs);\n firstSection === null || firstSection === void 0 || (_firstSection$current = firstSection.current) === null || _firstSection$current === void 0 || _firstSection$current.focus();\n },\n focusPreviousSection: function focusPreviousSection(activeElement) {\n var _previousSection$curr;\n var index = refs.indexOf(activeElement);\n var buttonRef = index >= 0 ? buttonRefs[index] : undefined;\n var previousSection = buttonRef ? previousItem(buttonRefs, buttonRef) : undefined;\n previousSection === null || previousSection === void 0 || (_previousSection$curr = previousSection.current) === null || _previousSection$curr === void 0 || _previousSection$curr.focus();\n },\n focusLastSection: function focusLastSection() {\n var _firstSection$current2;\n var firstSection = lastItem(buttonRefs);\n firstSection === null || firstSection === void 0 || (_firstSection$current2 = firstSection.current) === null || _firstSection$current2 === void 0 || _firstSection$current2.focus();\n }\n };\n};\nvar AccordionProvider = function AccordionProvider(_ref4) {\n var sections = _ref4.sections;\n var ref = useRef(null);\n var _useAccordion = useAccordion(sections, ref),\n refs = _useAccordion.refs,\n buttonRefs = _useAccordion.buttonRefs,\n focusNextSection = _useAccordion.focusNextSection,\n focusFirstSection = _useAccordion.focusFirstSection,\n focusLastSection = _useAccordion.focusLastSection,\n focusPreviousSection = _useAccordion.focusPreviousSection;\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n activeElement = _useState2[0],\n setActiveElement = _useState2[1];\n var _useState3 = useState(sections),\n _useState4 = _slicedToArray(_useState3, 2),\n sectionsState = _useState4[0],\n setSectionsState = _useState4[1];\n var handleButtonFocus = function handleButtonFocus(ref) {\n setActiveElement(ref);\n };\n var handleButtonBlur = function handleButtonBlur(_) {\n setActiveElement(null);\n };\n var handleKeyDown = function handleKeyDown(evt) {\n if (evt.code === 'End') {\n focusLastSection();\n } else if (evt.code === 'Home') {\n focusFirstSection();\n } else if (evt.code === 'ArrowDown') {\n if (activeElement) {\n focusNextSection(activeElement);\n }\n } else if (evt.code === 'ArrowUp') {\n if (activeElement) {\n focusPreviousSection(activeElement);\n }\n } else {\n // Do not `preventDefault()`\n return;\n }\n // Prevent scrolling the page\n evt.preventDefault();\n };\n return jsx(Accordion, {\n onKeyDown: handleKeyDown,\n ref: ref,\n children: sectionsState.map(function (section, index) {\n var handleActivate = function handleActivate(ref) {\n var activatedIndex = refs.indexOf(ref);\n // const activatedSection = activatedIndex >= 0 ? sections[index] : undefined;\n setSectionsState(sectionsState.map(function (section, index) {\n if (index === activatedIndex) {\n return _objectSpread$1d(_objectSpread$1d({}, section), {}, {\n expanded: !section.expanded\n });\n } else {\n return section;\n }\n }));\n };\n return /*#__PURE__*/createElement(AccordionSection, _objectSpread$1d(_objectSpread$1d({}, section), {}, {\n ref: refs[index],\n buttonRef: buttonRefs[index],\n key: index,\n onButtonFocus: handleButtonFocus,\n onButtonBlur: handleButtonBlur,\n onActivate: handleActivate\n }), section.body);\n })\n });\n};\nAccordionProvider.displayName = 'AccordionProvider';\nvar css_248z$13 = \".utrecht-alert{background-color:var(--_utrecht-alert-background-color,var(--utrecht-alert-background-color));border-color:var(--_utrecht-alert-border-color,var(--utrecht-alert-border-color));border-radius:var(--utrecht-alert-border-radius,0);border-style:solid;border-width:var(--_utrecht-alert-border-width,var(--utrecht-alert-border-width,0));color:var(--_utrecht-alert-color,var(--utrecht-alert-color));display:grid;gap:var(--utrecht-alert-icon-gap);grid-template-areas:\\\"icon message\\\";grid-template-columns:0fr 100fr;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-start, 0));padding-block-end:var(--utrecht-alert-padding-block-end);padding-block-start:var(--utrecht-alert-padding-block-start);padding-inline-end:var(--utrecht-alert-padding-inline-end);padding-inline-start:var(--utrecht-alert-padding-inline-start)}.utrecht-alert__icon{--utrecht-icon-color:var(--_utrecht-alert-icon-color,var(--utrecht-alert-icon-color));grid-area:icon}.utrecht-alert__message{grid-area:message}.utrecht-alert--info{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-info-color);--_utrecht-alert-background-color:var(--utrecht-alert-info-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-info-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-info-border-width);--_utrecht-alert-color:var(--utrecht-alert-info-color)}.utrecht-alert--ok{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-ok-color);--_utrecht-alert-background-color:var(--utrecht-alert-ok-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-ok-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-ok-border-width);--_utrecht-alert-color:var(--utrecht-alert-ok-color)}.utrecht-alert--warning{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-warning-color);--_utrecht-alert-background-color:var(--utrecht-alert-warning-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-warning-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-warning-border-width);--_utrecht-alert-color:var(--utrecht-alert-warning-color)}.utrecht-alert--error{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-error-color);--_utrecht-alert-background-color:var(--utrecht-alert-error-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-error-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-error-border-width);--_utrecht-alert-color:var(--utrecht-alert-error-color)}\";\nstyleInject(css_248z$13);\nvar _excluded$1b = [\"children\", \"className\", \"icon\", \"type\"];\nfunction ownKeys$1c(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1c(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1c(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1c(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Alert = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n icon = _ref.icon,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded$1b);\n return jsxs(\"div\", _objectSpread$1c(_objectSpread$1c({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-alert', {\n 'utrecht-alert--error': type === 'error',\n 'utrecht-alert--info': type === 'info',\n 'utrecht-alert--ok': type === 'ok',\n 'utrecht-alert--warning': type === 'warning'\n }, className),\n children: [icon && jsx(\"div\", {\n className: \"utrecht-alert__icon\",\n children: icon\n }), jsx(\"div\", {\n className: \"utrecht-alert__message\",\n children: children\n })]\n }));\n});\nAlert.displayName = 'Alert';\nvar css_248z$12 = \".utrecht-alert-dialog:not(dialog:not([open])){--utrecht-alert-dialog-margin-block-start:auto;--utrecht-alert-dialog-margin-block-end:auto;background-color:var(--_utrecht-alert-background-color,var(--utrecht-alert-background-color));border-color:var(--utrecht-alert-dialog-border-color);border-radius:var(--utrecht-alert-border-radius,0);border-radius:var(--utrecht-alert-dialog-border-radius,0);border-style:solid;border-width:var(--utrecht-alert-dialog-border-width,0);box-shadow:var(--utrecht-alert-dialog-box-shadow);color:var(--_utrecht-alert-color,var(--utrecht-alert-color));display:grid;gap:var(--utrecht-alert-icon-gap);grid-template-areas:\\\"icon message\\\";grid-template-columns:0fr 100fr;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-alert-margin-block-start, 0));max-block-size:var(--utrecht-alert-dialog-max-block-size);max-inline-size:var(--utrecht-alert-dialog-max-inline-size);min-block-size:var(--utrecht-alert-dialog-min-block-size);min-inline-size:var(--utrecht-alert-dialog-min-inline-size);padding-block-end:var(--utrecht-alert-padding-block-end);padding-block-start:var(--utrecht-alert-padding-block-start);padding-inline-end:var(--utrecht-alert-padding-inline-end);padding-inline-start:var(--utrecht-alert-padding-inline-start)}.utrecht-alert-dialog::backdrop{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-opacity);--_utrecht-backdrop-fade-in-animation-duration:var(--utrecht-backdrop-fade-in-animation-duration,0);animation-duration:min(var(--utrecht-motion-max-animation-duration,var(--_utrecht-backdrop-fade-in-animation-duration)),var(--_utrecht-backdrop-fade-in-animation-duration,0));animation-name:utrecht-backdrop-fade-in;animation-timing-function:ease-in-out;background-color:var(--utrecht-backdrop-background-color);color:var(--utrecht-backdrop-color);opacity:var(--_utrecht-backdrop-opacity);-webkit-user-select:none;user-select:none}@keyframes utrecht-backdrop-fade-in{0%{opacity:0}to{opacity:var(--_utrecht-backdrop-opacity)}}@media (prefers-reduced-motion:reduce){.utrecht-alert-dialog::backdrop{--_utrecht-backdrop-fade-in-animation-duration:0}}@media (prefers-reduced-transparency:reduce){.utrecht-alert-dialog::backdrop{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-reduced-transparency-opacity,100%)}}.utrecht-alert-dialog__icon{--utrecht-icon-color:var(--_utrecht-alert-icon-color,var(--utrecht-alert-icon-color));grid-area:icon}.utrecht-alert-dialog__message{grid-area:message}.utrecht-alert-dialog--error{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-error-color);--_utrecht-alert-background-color:var(--utrecht-alert-error-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-error-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-error-border-width);--_utrecht-alert-color:var(--utrecht-alert-error-color)}.utrecht-alert-dialog--info{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-info-color);--_utrecht-alert-background-color:var(--utrecht-alert-info-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-info-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-info-border-width);--_utrecht-alert-color:var(--utrecht-alert-info-color)}.utrecht-alert-dialog--warning{--_utrecht-alert-icon-color:var(--utrecht-alert-icon-warning-color);--_utrecht-alert-background-color:var(--utrecht-alert-warning-background-color);--_utrecht-alert-border-color:var(--utrecht-alert-warning-border-color);--_utrecht-alert-border-width:var(--utrecht-alert-warning-border-width);--_utrecht-alert-color:var(--utrecht-alert-warning-color)}\";\nstyleInject(css_248z$12);\nvar _excluded$1a = [\"children\", \"className\", \"icon\", \"type\"];\nfunction ownKeys$1b(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1b(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1b(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1b(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar AlertDialog = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n icon = _ref.icon,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded$1a);\n return jsxs(\"dialog\", _objectSpread$1b(_objectSpread$1b({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-alert-dialog', {\n 'utrecht-alert-dialog--error': type === 'error',\n 'utrecht-alert-dialog--info': type === 'info',\n 'utrecht-alert-dialog--warning': type === 'warning',\n className: className\n }),\n children: [icon && jsx(\"div\", {\n className: \"utrecht-alert-dialog__icon\",\n children: icon\n }), jsx(\"div\", {\n className: \"utrecht-alert-dialog__message\",\n children: children\n })]\n }));\n});\nAlertDialog.displayName = 'AlertDialog';\nvar css_248z$11 = \".utrecht-article{max-inline-size:var(--utrecht-article-max-inline-size)}\";\nstyleInject(css_248z$11);\nvar _excluded$19 = [\"children\", \"className\"];\nfunction ownKeys$1a(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1a(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1a(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1a(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Article = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$19);\n return jsx(\"article\", _objectSpread$1a(_objectSpread$1a({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-article', className),\n children: children\n }));\n});\nArticle.displayName = 'Article';\nvar css_248z$10 = \".utrecht-backdrop{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-opacity);--_utrecht-backdrop-fade-in-animation-duration:var(--utrecht-backdrop-fade-in-animation-duration,0);animation-duration:min(var(--utrecht-motion-max-animation-duration,var(--_utrecht-backdrop-fade-in-animation-duration)),var(--_utrecht-backdrop-fade-in-animation-duration,0));animation-name:utrecht-backdrop-fade-in;animation-timing-function:ease-in-out;background-color:var(--utrecht-backdrop-background-color);color:var(--utrecht-backdrop-color);display:block;inset-block-end:0;inset-block-start:0;inset-inline-end:0;inset-inline-start:0;opacity:var(--_utrecht-backdrop-opacity);position:absolute;-webkit-user-select:none;user-select:none;z-index:var(--utrecht-backdrop-z-index)}@keyframes utrecht-backdrop-fade-in{0%{opacity:0}to{opacity:var(--_utrecht-backdrop-opacity)}}@media (prefers-reduced-motion:reduce){.utrecht-backdrop{--_utrecht-backdrop-fade-in-animation-duration:0}}@media (prefers-reduced-transparency:reduce){.utrecht-backdrop{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-reduced-transparency-opacity,100%)}}.utrecht-backdrop--reduced-motion{--_utrecht-backdrop-fade-in-animation-duration:0}.utrecht-backdrop--reduced-transparency{--_utrecht-backdrop-opacity:var(--utrecht-backdrop-reduced-transparency-opacity,100%)}.utrecht-backdrop--viewport{position:fixed}\";\nstyleInject(css_248z$10);\nvar _excluded$18 = [\"children\", \"className\"];\nfunction ownKeys$19(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$19(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$19(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$19(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Backdrop = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$18);\n return jsx(\"div\", _objectSpread$19(_objectSpread$19({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-backdrop', className),\n children: children\n }));\n});\nBackdrop.displayName = 'Backdrop';\nvar css_248z$$ = \".utrecht-badge-counter{background-color:var(--utrecht-badge-counter-background-color,var(--utrecht-badge-background-color,#000));border-radius:var(--utrecht-badge-counter-border-radius,var(--utrecht-badge-border-radius,.5ch));color:var(--utrecht-badge-counter-color,var(--utrecht-badge-color,#fff));display:inline-block;font-family:var(--utrecht-document-font-family,sans-serif);font-size:var(--utrecht-badge-counter-font-size);font-style:var(--utrecht-badge-counter-font-style,normal);font-weight:var(--utrecht-badge-counter-font-weight,var(--utrecht-badge-font-weight,bold));line-height:1;max-block-size:max-content;max-inline-size:max-content;min-block-size:var(--utrecht-badge-counter-min-size,1em);min-inline-size:var(--utrecht-badge-counter-min-size,1em);padding-block-end:var(--utrecht-badge-counter-padding-block,var(--utrecht-badge-padding-block,.5ex));padding-block-start:var(--utrecht-badge-counter-padding-block,var(--utrecht-badge-padding-block,.5ex));padding-inline-end:var(--utrecht-badge-counter-padding-inline,var(--utrecht-badge-padding-inline,.5ch));padding-inline-start:var(--utrecht-badge-counter-padding-inline,var(--utrecht-badge-padding-inline,.5ch));text-align:center;text-decoration:none;white-space:nowrap}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-badge-counter{border:1px solid}}\";\nstyleInject(css_248z$$);\nvar _excluded$17 = [\"children\", \"className\", \"value\"];\nfunction ownKeys$18(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$18(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$18(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$18(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar BadgeCounter = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n value = _ref.value,\n restProps = _objectWithoutProperties(_ref, _excluded$17);\n var props = _objectSpread$18({\n children: children,\n className: clsx('utrecht-badge-counter', className)\n }, restProps);\n return typeof value !== 'undefined' ? jsx(\"data\", _objectSpread$18(_objectSpread$18({}, props), {}, {\n value: value,\n ref: ref\n })) : jsx(\"span\", _objectSpread$18(_objectSpread$18({}, props), {}, {\n ref: ref\n }));\n});\nBadgeCounter.displayName = 'BadgeCounter';\nvar css_248z$_ = \".utrecht-badge-list{display:flex;flex-wrap:wrap;gap:var(--utrecht-badge-list-item-margin-block) var(--utrecht-badge-list-item-margin-inline)}\";\nstyleInject(css_248z$_);\nvar _excluded$16 = [\"children\", \"className\"];\nfunction ownKeys$17(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$17(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$17(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$17(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar BadgeList = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$16);\n return jsx(\"div\", _objectSpread$17(_objectSpread$17({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-badge-list', className),\n children: children\n }));\n});\nBadgeList.displayName = 'BadgeList';\nvar css_248z$Z = \".utrecht-breadcrumb-nav{--utrecht-focus-background-color:var(--utrecht-breadcrumb-nav-link-focus-background-color);--utrecht-link-background-color:var(--utrecht-breadcrumb-nav-link-background-color);--utrecht-link-focus-color:var(--utrecht-breadcrumb-nav-link-focus-color,var(--utrecht-breadcrumb-nav-link-color));--utrecht-link-focus-text-decoration:var(--utrecht-link-text-decoration);--utrecht-link-hover-color:var(--utrecht-breadcrumb-nav-link-color);--utrecht-link-hover-text-decoration:var(--utrecht-link-text-decoration);--utrecht-link-visited-color:var(--utrecht-breadcrumb-nav-link-color);--utrecht-link-visited-text-decoration:var(--utrecht-link-text-decoration);--utrecht-link-color:var(--utrecht-breadcrumb-nav-link-color);--utrecht-link-placeholder-color:var(--utrecht-link-breadcrumb-link-disabled-color);font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-breadcrumb-nav-font-size);text-transform:var(--utrecht-document-text-transform,inherit)}.utrecht-breadcrumb-nav__heading{display:none}.utrecht-breadcrumb-nav__list{display:flex;flex-wrap:wrap;min-block-size:var(--utrecht-breadcrumb-nav-min-block-size)}.utrecht-breadcrumb-nav__list--html-ol{list-style:none;padding-inline-start:0}.utrecht-breadcrumb-nav__list--html-ol,.utrecht-breadcrumb-nav__list--html-p{margin-block-end:0;margin-block-start:0}.utrecht-breadcrumb-nav__item{block-size:100%}.utrecht-breadcrumb-nav__link{--utrecht-icon-size:var(--utrecht-breadcrumb-nav-link-icon-size);--utrecht-link-icon-size:var(--utrecht-breadcrumb-nav-link-icon-size);background-color:var(--utrecht-breadcrumb-nav-link-background-color);display:inline-block;padding-block-end:var(--utrecht-breadcrumb-nav-item-padding-block-end,8px);padding-block-start:var(--utrecht-breadcrumb-nav-item-padding-block-start,8px);padding-inline-end:var(--utrecht-breadcrumb-nav-item-padding-inline-end,8px);padding-inline-start:var(--utrecht-breadcrumb-nav-item-padding-inline-start,8px)}.utrecht-breadcrumb-nav__link--disabled{--utrecht-link-placeholder-color:var(\\n --utrecht-breadcrumb-nav-link-disabled-color,var(--utrecht-breadcrumb-nav-link-color)\\n );background-color:var(--utrecht-breadcrumb-nav-link-disabled-background-color,var(--utrecht-breadcrumb-nav-link-background-color));color:var(--utrecht-link-placeholder-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-breadcrumb-nav__link--current{--utrecht-link-current-font-weight:var(--utrecht-breadcrumb-nav-link-current-font-weight,inherit);cursor:var(--utrecht-action-inert-cursor,default);font-weight:var(--utrecht-breadcrumb-nav-link-current-font-weight,inherit)}.utrecht-breadcrumb-nav__separator,.utrecht-breadcrumb-nav__separator--html-li{--_utrecht-breadcrumb-nav-separator-display:inline-flex;--utrecht-icon-size:var(--utrecht-breadcrumb-nav-separator-icon-size);align-items:center;color:var(--utrecht-breadcrumb-nav-separator-color);cursor:var(--utrecht-action-inert-cursor,default);display:var(--_utrecht-breadcrumb-nav-separator-display);inline-size:fit-content;-webkit-user-select:none;user-select:none}.utrecht-breadcrumb-nav--arrows{--utrecht-breadcrumb-nav-arrow-size:24px;min-block-size:var(--utrecht-breadcrumb-nav-min-block-size);overflow:hidden}.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link{background-color:var(--utrecht-breadcrumb-nav-arrows-link-background-color);padding-inline-end:0;position:relative}.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link:after,.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link:before{block-size:0;border-block-end-width:var(--utrecht-breadcrumb-nav-min-block-size);border-block-start-width:var(--utrecht-breadcrumb-nav-min-block-size);border-color:transparent;border-style:solid;content:\\\" \\\";display:block;inline-size:0;inset-block-start:50%;inset-inline-start:100%;margin-block-start:calc(var(--utrecht-breadcrumb-nav-min-block-size)*-1);position:absolute}.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link:after{border-inline-start-color:var(--utrecht-breadcrumb-nav-arrows-link-background-color);border-inline-start-width:var(--utrecht-breadcrumb-nav-arrow-size);z-index:2}.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link:before{border-inline-start-color:var(--utrecht-document-background-color);border-inline-start-width:var(--utrecht-breadcrumb-nav-arrow-size);margin-block-start:calc(var(--utrecht-breadcrumb-nav-min-block-size)*-1);margin-inline-start:1px;z-index:1}.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link--focus,.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link:focus{--utrecht-link-focus-background-color:var(--utrecht-breadcrumb-nav-arrows-link-focus-background-color);background-color:var(--utrecht-breadcrumb-nav-arrows-link-focus-background-color)}.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link--focus:after,.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link:focus:after{border-inline-start-color:var(--utrecht-breadcrumb-nav-arrows-link-focus-background-color)}.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__item~.utrecht-breadcrumb-nav__item .utrecht-breadcrumb-nav__link,.utrecht-breadcrumb-nav--arrows .utrecht-breadcrumb-nav__link~.utrecht-breadcrumb-nav__link{padding-inline-start:calc(var(--utrecht-breadcrumb-nav-item-padding-inline-start) + var(--utrecht-breadcrumb-nav-arrow-size))}.utrecht-breadcrumb-nav__item~.utrecht-breadcrumb-nav__item{margin-inline-start:var(--utrecht-breadcrumb-nav-item-divider-inline-size)}\";\nstyleInject(css_248z$Z);\nvar _excluded$15 = [\"boxContent\", \"children\", \"className\", \"external\", \"href\", \"placeholder\", \"role\"];\nfunction ownKeys$16(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$16(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$16(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$16(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Link = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var boxContent = _ref.boxContent,\n children = _ref.children,\n className = _ref.className,\n external = _ref.external,\n href = _ref.href,\n placeholder = _ref.placeholder,\n role = _ref.role,\n restProps = _objectWithoutProperties(_ref, _excluded$15);\n return (\n // \"utrecht-link--telephone\" does not have a corresponding API,\n // since it is primarily a basis for implementing input[href^=\"tel\"].\n // Telephone number rendering in React is best achieved using composition\n // of the TelephoneValue component.\n jsx(\"a\", _objectSpread$16(_objectSpread$16({\n href: placeholder ? undefined : href,\n ref: ref,\n role: role || (placeholder ? 'link' : undefined),\n className: clsx('utrecht-link', 'utrecht-link--html-a', {\n 'utrecht-link--box-content': boxContent,\n 'utrecht-link--external': external,\n 'utrecht-link--placeholder': placeholder\n }, className),\n \"aria-disabled\": placeholder ? 'true' : undefined,\n rel: external ? 'external noopener noreferrer' : undefined\n }, restProps), {}, {\n children: children\n }))\n );\n});\nLink.displayName = 'Link';\nvar _excluded$14 = [\"appearance\", \"children\", \"className\", \"headingLevel\", \"label\"],\n _excluded2$4 = [\"className\", \"children\"],\n _excluded3$1 = [\"className\", \"children\"],\n _excluded4$1 = [\"children\", \"disabled\", \"current\", \"href\", \"index\", \"rel\", \"role\", \"Link\", \"className\"];\nfunction ownKeys$15(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$15(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$15(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$15(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar useMicrodataItem = function useMicrodataItem(_ref) {\n var prop = _ref.prop,\n type = _ref.type;\n return {\n itemScope: true,\n itemType: type,\n itemProp: prop\n };\n};\nvar useMicrodataProp = function useMicrodataProp(prop) {\n return {\n itemProp: prop\n };\n};\nvar BreadcrumbNav = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var appearance = _ref2.appearance,\n children = _ref2.children,\n className = _ref2.className,\n _ref2$headingLevel = _ref2.headingLevel,\n headingLevel = _ref2$headingLevel === void 0 ? 2 : _ref2$headingLevel,\n label = _ref2.label,\n restProps = _objectWithoutProperties(_ref2, _excluded$14);\n var headingId = label ? useId() : undefined;\n return jsxs(\"nav\", _objectSpread$15(_objectSpread$15({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-breadcrumb-nav', 'utrecht-breadcrumb-nav--html-ol', {\n 'utrecht-breadcrumb-nav--arrows': appearance === 'arrows'\n }, className),\n \"aria-labelledby\": headingId,\n children: [label && jsx(Heading, {\n id: headingId,\n className: \"utrecht-breadcrumb-nav__heading\",\n level: headingLevel,\n \"aria-hidden\": \"true\",\n children: label\n }), jsx(\"ol\", _objectSpread$15(_objectSpread$15({\n className: \"utrecht-breadcrumb-nav__list utrecht-breadcrumb-nav__list--html-ol\"\n }, useMicrodataItem({\n type: 'https://schema.org/BreadcrumbList'\n })), {}, {\n children: children\n }))]\n }));\n});\nBreadcrumbNav.displayName = 'BreadcrumbNav';\nvar BreadcrumbNavItem = /*#__PURE__*/forwardRef(function (_ref3, ref) {\n var className = _ref3.className,\n children = _ref3.children,\n restProps = _objectWithoutProperties(_ref3, _excluded2$4);\n return jsx(\"li\", _objectSpread$15(_objectSpread$15(_objectSpread$15({\n className: clsx('utrecht-breadcrumb-nav__item', className)\n }, useMicrodataItem({\n type: 'https://schema.org/ListItem',\n prop: 'itemListElement'\n })), {}, {\n ref: ref\n }, restProps), {}, {\n children: children\n }));\n});\nBreadcrumbNavItem.displayName = 'BreadcrumbNavItem';\nvar BreadcrumbNavSeparator = /*#__PURE__*/forwardRef(function (_ref4, ref) {\n var className = _ref4.className,\n children = _ref4.children,\n restProps = _objectWithoutProperties(_ref4, _excluded3$1);\n return jsx(\"li\", _objectSpread$15(_objectSpread$15({\n \"aria-hidden\": \"true\",\n hidden: true,\n style: {\n display: 'var(--_utrecht-breadcrumb-nav-separator-display, block)'\n },\n className: clsx('utrecht-breadcrumb-nav__separator', 'utrecht-breadcrumb-nav__separator--html-li', className),\n ref: ref\n }, restProps), {}, {\n children: children\n }));\n});\nBreadcrumbNavSeparator.displayName = 'BreadcrumbNavSeparator';\nvar BreadcrumbNavLink = /*#__PURE__*/forwardRef(function (_ref5, ref) {\n var children = _ref5.children,\n disabled = _ref5.disabled,\n current = _ref5.current,\n href = _ref5.href,\n index = _ref5.index,\n rel = _ref5.rel,\n role = _ref5.role,\n _ref5$Link = _ref5.Link,\n Link$1 = _ref5$Link === void 0 ? Link : _ref5$Link,\n className = _ref5.className,\n restProps = _objectWithoutProperties(_ref5, _excluded4$1);\n var DefaultLinkComponent = Link$1;\n var LinkComponent = Link$1 || DefaultLinkComponent;\n return jsx(BreadcrumbNavItem, {\n children: jsxs(LinkComponent, _objectSpread$15(_objectSpread$15(_objectSpread$15({\n className: clsx('utrecht-breadcrumb-nav__link', className, {\n 'utrecht-breadcrumb-nav__link--current': current,\n 'utrecht-breadcrumb-nav__link--disabled': disabled\n }),\n href: disabled ? undefined : href,\n rel: rel,\n role: role || (disabled ? 'link' : undefined),\n \"aria-current\": current && 'page',\n \"aria-disabled\": disabled ? 'true' : undefined\n }, useMicrodataProp('item')), restProps), {}, {\n ref: ref,\n children: [jsx(\"span\", _objectSpread$15(_objectSpread$15({\n className: \"utrecht-breadcrumb-nav__text\"\n }, useMicrodataProp('name')), {}, {\n children: children\n })), typeof index === 'number' ? jsx(\"meta\", _objectSpread$15(_objectSpread$15({}, useMicrodataProp('position')), {}, {\n content: String(index + 1)\n })) : null]\n }))\n });\n});\nBreadcrumbNavLink.displayName = 'BreadcrumbNavLink';\nvar css_248z$Y = \".utrecht-button{--_utrecht-button-background-color:var(\\n --_utrecht-button-hint-background-color,var(--_utrecht-button-appearance-background-color,var(--utrecht-button-background-color))\\n );--_utrecht-button-color:var(\\n --_utrecht-button-hint-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-color))\\n );--_utrecht-button-border-color:var(\\n --_utrecht-button-hint-border-color,var(--_utrecht-button-appearance-border-color,var(--utrecht-button-border-color,transparent))\\n );--_utrecht-button-border-bottom-color:var(\\n --_utrecht-button-hint-border-bottom-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-border-bottom-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-border-bottom-color,var(--utrecht-button-border-color,transparent))\\n )\\n )\\n )\\n );--_utrecht-button-disabled-background-color:var(\\n --_utrecht-button-hint-disabled-background-color,var(\\n --_utrecht-button-appearance-disabled-background-color,var(--utrecht-button-disabled-background-color,var(--utrecht-button-background-color))\\n )\\n );--_utrecht-button-disabled-border-color:var(\\n --_utrecht-button-hint-disabled-border-color,var(\\n --_utrecht-button-appearance-disabled-border-color,var(--utrecht-button-disabled-border-color,var(--utrecht-button-border-color))\\n )\\n );--_utrecht-button-disabled-color:var(\\n --_utrecht-button-hint-disabled-color,var(--_utrecht-button-appearance-disabled-color,var(--utrecht-button-disabled-color,var(--utrecht-button-color)))\\n );--_utrecht-button-pressed-background-color:var(\\n --_utrecht-button-hint-pressed-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-pressed-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-pressed-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-border-color:var(\\n --_utrecht-button-hint-pressed-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-pressed-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-pressed-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-color:var(\\n --_utrecht-button-hint-pressed-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-pressed-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-pressed-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-focus-background-color:var(\\n --_utrecht-button-hint-focus-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-focus-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-focus-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-border-color:var(\\n --_utrecht-button-hint-focus-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-focus-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-focus-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-color:var(\\n --_utrecht-button-hint-focus-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-focus-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-focus-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-hover-background-color:var(\\n --_utrecht-button-hint-hover-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-hover-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-hover-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-border-color:var(\\n --_utrecht-button-hint-hover-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-hover-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-hover-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-color:var(\\n --_utrecht-button-hint-hover-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-hover-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-hover-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-active-background-color:var(\\n --_utrecht-button-hint-active-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-active-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-active-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-border-color:var(\\n --_utrecht-button-hint-active-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-active-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-active-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-color:var(\\n --_utrecht-button-hint-active-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-active-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-active-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-border-width:var(--_utrecht-button-appearance-border-width,var(--utrecht-button-border-width,0));--_utrecht-button-border-block-end-width:var(\\n --utrecht-button-border-bottom-width,var(--_utrecht-button-border-width,0)\\n );--utrecht-icon-size:var(--utrecht-button-icon-size,1em);align-items:center;background-color:var(--_utrecht-button-background-color);border-block-end-color:var(--_utrecht-button-border-bottom-color);border-block-end-width:var(--_utrecht-button-border-block-end-width);border-color:var(--_utrecht-button-border-color);border-radius:var(--utrecht-button-border-radius);border-style:solid;border-width:var(--_utrecht-button-border-width);box-sizing:border-box;color:var(--_utrecht-button-color);cursor:var(--utrecht-action-activate-cursor,revert);display:inline-flex;font-family:var(--utrecht-button-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-button-font-size,var(--utrecht-document-font-family,inherit));font-weight:var(--_utrecht-button-appearance-font-weight,var(--utrecht-button-font-weight));gap:var(--utrecht-button-icon-gap);inline-size:var(--utrecht-button-inline-size,auto);justify-content:center;line-height:var(--utrecht-button-line-height);min-block-size:var(--utrecht-button-min-block-size,44px);min-inline-size:var(--utrecht-button-min-inline-size,44px);padding-block-end:var(--utrecht-button-padding-block-end);padding-block-start:var(--utrecht-button-padding-block-start);padding-inline-end:var(--utrecht-button-padding-inline-end);padding-inline-start:var(--utrecht-button-padding-inline-start);text-transform:var(--utrecht-button-text-transform);-webkit-user-select:none;user-select:none}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-button{--_utrecht-button-disabled-border-color:GrayText;--_utrecht-button-disabled-color:GrayText;background-color:ButtonFace;border-color:buttonborder;color:ButtonText}}.utrecht-button--distanced{margin-block-end:var(--utrecht-button-margin-block-end);margin-block-start:var(--utrecht-button-margin-block-start);margin-inline-end:var(--utrecht-button-margin-inline-end);margin-inline-start:var(--utrecht-button-margin-inline-start)}.utrecht-button--submit{cursor:var(--utrecht-action-submit-cursor,revert)}.utrecht-button--busy{cursor:var(--utrecht-action-busy-cursor,wait)}.utrecht-button--pressed{background-color:var(--_utrecht-button-pressed-background-color);border-color:var(--_utrecht-button-pressed-border-color);color:var(--_utrecht-button-pressed-color)}.utrecht-button--disabled,.utrecht-button:disabled{background-color:var(--_utrecht-button-disabled-background-color);border-color:var(--_utrecht-button-disabled-border-color);color:var(--_utrecht-button-disabled-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-button--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-button--focus:not(.utrecht-button--disabled){background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-button:focus,.utrecht-button:focus:not(:disabled,[aria-disabled=true],.utrecht-button--disabled){--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-button:focus:not(:disabled,[aria-disabled=true],.utrecht-button--disabled){background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-button:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-button--hover:not(:disabled,.utrecht-button--disabled),.utrecht-button:hover:not(:disabled,[aria-disabled=true],.utrecht-button--disabled){background-color:var(--_utrecht-button-hover-background-color);border-color:var(--_utrecht-button-hover-border-color);color:var(--_utrecht-button-hover-color);scale:var(--utrecht-button-hover-scale,1)}.utrecht-button--active,.utrecht-button:active:not(:disabled,[aria-disabled=true],.utrecht-button--disabled){background-color:var(--_utrecht-button-active-background-color);border-color:var(--_utrecht-button-active-border-color);color:var(--_utrecht-button-active-color)}.utrecht-button--primary-action{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-primary-action-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-primary-action-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-primary-action-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-primary-action-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-primary-action-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-primary-action-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-primary-action-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-primary-action-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-primary-action-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-primary-action-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-primary-action-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-primary-action-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-primary-action-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-primary-action-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-primary-action-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-primary-action-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-primary-action-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-primary-action-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-primary-action-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-primary-action-pressed-color)}.utrecht-button--secondary-action{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-secondary-action-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-secondary-action-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-secondary-action-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-secondary-action-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-secondary-action-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-secondary-action-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-secondary-action-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-secondary-action-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-secondary-action-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-secondary-action-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-secondary-action-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-secondary-action-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-secondary-action-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-secondary-action-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-secondary-action-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-secondary-action-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-secondary-action-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-secondary-action-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-secondary-action-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-secondary-action-pressed-color)}.utrecht-button--subtle{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-subtle-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-subtle-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-subtle-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-subtle-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-subtle-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-subtle-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-subtle-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-subtle-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-subtle-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-subtle-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-subtle-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-subtle-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-subtle-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-subtle-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-subtle-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-subtle-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-subtle-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-subtle-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-subtle-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-subtle-pressed-color)}.utrecht-button--primary-action.utrecht-button--danger{--_utrecht-button-hint-active-background-color:var(--utrecht-button-primary-action-danger-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-primary-action-danger-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-primary-action-danger-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-primary-action-danger-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-primary-action-danger-border-color);--_utrecht-button-hint-color:var(--utrecht-button-primary-action-danger-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-primary-action-danger-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-primary-action-danger-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-primary-action-danger-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-primary-action-danger-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-primary-action-danger-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-primary-action-danger-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-primary-action-danger-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-primary-action-danger-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-primary-action-danger-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-primary-action-danger-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-primary-action-danger-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-primary-action-danger-pressed-color)}.utrecht-button--primary-action.utrecht-button--ready{--_utrecht-button-hint-active-background-color:var(--utrecht-button-primary-action-ready-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-primary-action-ready-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-primary-action-ready-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-primary-action-ready-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-primary-action-ready-border-color);--_utrecht-button-hint-color:var(--utrecht-button-primary-action-ready-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-primary-action-ready-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-primary-action-ready-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-primary-action-ready-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-primary-action-ready-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-primary-action-ready-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-primary-action-ready-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-primary-action-ready-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-primary-action-ready-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-primary-action-ready-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-primary-action-ready-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-primary-action-ready-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-primary-action-ready-pressed-color)}.utrecht-button--primary-action.utrecht-button--warning{--_utrecht-button-hint-active-background-color:var(--utrecht-button-primary-action-warning-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-primary-action-warning-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-primary-action-warning-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-primary-action-warning-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-primary-action-warning-border-color);--_utrecht-button-hint-color:var(--utrecht-button-primary-action-warning-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-primary-action-warning-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-primary-action-warning-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-primary-action-warning-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-primary-action-warning-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-primary-action-warning-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-primary-action-warning-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-primary-action-warning-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-primary-action-warning-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-primary-action-warning-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-primary-action-warning-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-primary-action-warning-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-primary-action-warning-pressed-color)}.utrecht-button--secondary-action.utrecht-button--danger{--_utrecht-button-hint-active-background-color:var(--utrecht-button-secondary-action-danger-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-secondary-action-danger-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-secondary-action-danger-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-secondary-action-danger-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-secondary-action-danger-border-color);--_utrecht-button-hint-color:var(--utrecht-button-secondary-action-danger-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-secondary-action-danger-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-secondary-action-danger-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-secondary-action-danger-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-secondary-action-danger-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-secondary-action-danger-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-secondary-action-danger-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-secondary-action-danger-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-secondary-action-danger-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-secondary-action-danger-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-secondary-action-danger-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-secondary-action-danger-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-secondary-action-danger-pressed-color)}.utrecht-button--secondary-action.utrecht-button--ready{--_utrecht-button-hint-active-background-color:var(--utrecht-button-secondary-action-ready-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-secondary-action-ready-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-secondary-action-ready-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-secondary-action-ready-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-secondary-action-ready-border-color);--_utrecht-button-hint-color:var(--utrecht-button-secondary-action-ready-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-secondary-action-ready-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-secondary-action-ready-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-secondary-action-ready-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-secondary-action-ready-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-secondary-action-ready-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-secondary-action-ready-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-secondary-action-ready-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-secondary-action-ready-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-secondary-action-ready-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-secondary-action-ready-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-secondary-action-ready-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-secondary-action-ready-pressed-color)}.utrecht-button--secondary-action.utrecht-button--warning{--_utrecht-button-hint-active-background-color:var(--utrecht-button-secondary-action-warning-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-secondary-action-warning-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-secondary-action-warning-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-secondary-action-warning-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-secondary-action-warning-border-color);--_utrecht-button-hint-color:var(--utrecht-button-secondary-action-warning-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-secondary-action-warning-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-secondary-action-warning-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-secondary-action-warning-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-secondary-action-warning-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-secondary-action-warning-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-secondary-action-warning-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-secondary-action-warning-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-secondary-action-warning-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-secondary-action-warning-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-secondary-action-warning-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-secondary-action-warning-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-secondary-action-warning-pressed-color)}.utrecht-button--subtle.utrecht-button--danger{--_utrecht-button-hint-active-background-color:var(--utrecht-button-subtle-danger-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-subtle-danger-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-subtle-danger-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-subtle-danger-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-subtle-danger-border-color);--_utrecht-button-hint-color:var(--utrecht-button-subtle-danger-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-subtle-danger-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-subtle-danger-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-subtle-danger-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-subtle-danger-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-subtle-danger-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-subtle-danger-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-subtle-danger-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-subtle-danger-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-subtle-danger-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-subtle-danger-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-subtle-danger-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-subtle-danger-pressed-color)}.utrecht-button--subtle.utrecht-button--ready{--_utrecht-button-hint-active-background-color:var(--utrecht-button-subtle-ready-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-subtle-ready-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-subtle-ready-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-subtle-ready-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-subtle-ready-border-color);--_utrecht-button-hint-color:var(--utrecht-button-subtle-ready-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-subtle-ready-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-subtle-ready-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-subtle-ready-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-subtle-ready-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-subtle-ready-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-subtle-ready-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-subtle-ready-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-subtle-ready-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-subtle-ready-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-subtle-ready-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-subtle-ready-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-subtle-ready-pressed-color)}.utrecht-button--subtle.utrecht-button--warning{--_utrecht-button-hint-active-background-color:var(--utrecht-button-subtle-warning-active-background-color);--_utrecht-button-hint-active-border-color:var(--utrecht-button-subtle-warning-active-border-color);--_utrecht-button-hint-active-color:var(--utrecht-button-subtle-warning-active-color);--_utrecht-button-hint-background-color:var(--utrecht-button-subtle-warning-background-color);--_utrecht-button-hint-border-color:var(--utrecht-button-subtle-warning-border-color);--_utrecht-button-hint-color:var(--utrecht-button-subtle-warning-color);--_utrecht-button-hint-disabled-background-color:var(\\n --utrecht-button-subtle-warning-disabled-background-color\\n );--_utrecht-button-hint-disabled-border-color:var(--utrecht-button-subtle-warning-disabled-border-color);--_utrecht-button-hint-disabled-color:var(--utrecht-button-subtle-warning-disabled-color);--_utrecht-button-hint-focus-background-color:var(--utrecht-button-subtle-warning-focus-background-color);--_utrecht-button-hint-focus-border-color:var(--utrecht-button-subtle-warning-focus-border-color);--_utrecht-button-hint-focus-color:var(--utrecht-button-subtle-warning-focus-color);--_utrecht-button-hint-hover-background-color:var(--utrecht-button-subtle-warning-hover-background-color);--_utrecht-button-hint-hover-border-color:var(--utrecht-button-subtle-warning-hover-border-color);--_utrecht-button-hint-hover-color:var(--utrecht-button-subtle-warning-hover-color);--_utrecht-button-hint-pressed-background-color:var(\\n --utrecht-button-subtle-warning-pressed-background-color\\n );--_utrecht-button-hint-pressed-border-color:var(--utrecht-button-subtle-warning-pressed-border-color);--_utrecht-button-hint-pressed-color:var(--utrecht-button-subtle-warning-pressed-color)}\";\nstyleInject(css_248z$Y);\nvar css_248z$X = \".utrecht-button-group,.utrecht-button-group--distanced{background-color:var(--utrecht-button-group-background-color);display:flex;flex-wrap:wrap;gap:var(--utrecht-button-group-inline-gap,1em);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-button-group-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-button-group-margin-block-start, 0));min-block-size:var(--utrecht-button-block-size);padding-block-end:var(--utrecht-button-group-padding-block-end);padding-block-start:var(--utrecht-button-group-padding-block-start)}.utrecht-button-group--horizontal .utrecht-link-button,.utrecht-button-group:not(.utrecht-button-group--vertical) .utrecht-link-button,.utrecht-button-group__link-button--horizontal{--utrecht-button-padding-inline-end:0;--utrecht-button-padding-inline-start:0}.utrecht-button-group--vertical{flex-direction:column;gap:var(--utrecht-button-group-block-gap,1em)}\";\nstyleInject(css_248z$X);\nvar _excluded$13 = [\"children\", \"className\"];\nfunction ownKeys$14(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$14(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$14(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$14(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar ButtonGroup = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$13);\n return jsx(\"p\", _objectSpread$14(_objectSpread$14({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-button-group', className),\n children: children\n }));\n});\nButtonGroup.displayName = 'ButtonGroup';\nvar css_248z$W = \".utrecht-button-link{--_utrecht-button-background-color:var(\\n --_utrecht-button-hint-background-color,var(--_utrecht-button-appearance-background-color,var(--utrecht-button-background-color))\\n );--_utrecht-button-color:var(\\n --_utrecht-button-hint-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-color))\\n );--_utrecht-button-border-color:var(\\n --_utrecht-button-hint-border-color,var(--_utrecht-button-appearance-border-color,var(--utrecht-button-border-color,transparent))\\n );--_utrecht-button-border-bottom-color:var(\\n --_utrecht-button-hint-border-bottom-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-border-bottom-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-border-bottom-color,var(--utrecht-button-border-color,transparent))\\n )\\n )\\n )\\n );--_utrecht-button-disabled-background-color:var(\\n --_utrecht-button-hint-disabled-background-color,var(\\n --_utrecht-button-appearance-disabled-background-color,var(--utrecht-button-disabled-background-color,var(--utrecht-button-background-color))\\n )\\n );--_utrecht-button-disabled-border-color:var(\\n --_utrecht-button-hint-disabled-border-color,var(\\n --_utrecht-button-appearance-disabled-border-color,var(--utrecht-button-disabled-border-color,var(--utrecht-button-border-color))\\n )\\n );--_utrecht-button-disabled-color:var(\\n --_utrecht-button-hint-disabled-color,var(--_utrecht-button-appearance-disabled-color,var(--utrecht-button-disabled-color,var(--utrecht-button-color)))\\n );--_utrecht-button-pressed-background-color:var(\\n --_utrecht-button-hint-pressed-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-pressed-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-pressed-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-border-color:var(\\n --_utrecht-button-hint-pressed-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-pressed-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-pressed-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-color:var(\\n --_utrecht-button-hint-pressed-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-pressed-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-pressed-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-focus-background-color:var(\\n --_utrecht-button-hint-focus-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-focus-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-focus-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-border-color:var(\\n --_utrecht-button-hint-focus-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-focus-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-focus-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-color:var(\\n --_utrecht-button-hint-focus-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-focus-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-focus-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-hover-background-color:var(\\n --_utrecht-button-hint-hover-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-hover-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-hover-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-border-color:var(\\n --_utrecht-button-hint-hover-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-hover-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-hover-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-color:var(\\n --_utrecht-button-hint-hover-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-hover-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-hover-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-active-background-color:var(\\n --_utrecht-button-hint-active-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-active-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-active-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-border-color:var(\\n --_utrecht-button-hint-active-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-active-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-active-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-color:var(\\n --_utrecht-button-hint-active-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-active-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-active-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-border-width:var(--_utrecht-button-appearance-border-width,var(--utrecht-button-border-width,0));--_utrecht-button-border-block-end-width:var(\\n --utrecht-button-border-bottom-width,var(--_utrecht-button-border-width,0)\\n );--utrecht-icon-size:var(--utrecht-button-icon-size,1em);align-items:center;background-color:var(--_utrecht-button-background-color);border-block-end-color:var(--_utrecht-button-border-bottom-color);border-block-end-width:var(--_utrecht-button-border-block-end-width);border-color:var(--_utrecht-button-border-color);border-radius:var(--utrecht-button-border-radius);border-style:solid;border-width:var(--_utrecht-button-border-width);box-sizing:border-box;color:var(--_utrecht-button-color);cursor:var(--utrecht-action-activate-cursor,revert);cursor:var(--utrecht-action-navigate-cursor,pointer);display:inline-flex;font-family:var(--utrecht-button-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-button-font-size,var(--utrecht-document-font-family,inherit));font-weight:var(--_utrecht-button-appearance-font-weight,var(--utrecht-button-font-weight));gap:var(--utrecht-button-icon-gap);inline-size:var(--utrecht-button-inline-size,auto);justify-content:center;line-height:var(--utrecht-button-line-height);min-block-size:var(--utrecht-button-min-block-size,44px);min-inline-size:var(--utrecht-button-min-inline-size,44px);padding-block-end:var(--utrecht-button-padding-block-end);padding-block-start:var(--utrecht-button-padding-block-start);padding-inline-end:var(--utrecht-button-padding-inline-end);padding-inline-start:var(--utrecht-button-padding-inline-start);text-decoration:none;text-transform:var(--utrecht-button-text-transform);-webkit-user-select:none;user-select:none}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-button-link{--_utrecht-button-disabled-border-color:GrayText;--_utrecht-button-disabled-color:GrayText;background-color:ButtonFace;border-color:buttonborder;color:ButtonText}}.utrecht-button-link--active{background-color:var(--_utrecht-button-active-background-color);border-color:var(--_utrecht-button-active-border-color);color:var(--_utrecht-button-active-color)}.utrecht-button-link--hover{background-color:var(--_utrecht-button-hover-background-color);border-color:var(--_utrecht-button-hover-border-color);color:var(--_utrecht-button-hover-color);scale:var(--utrecht-button-hover-scale,1)}.utrecht-button-link--focus{background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-button-link--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-button-link--placeholder{background-color:var(--_utrecht-button-disabled-background-color);border-color:var(--_utrecht-button-disabled-border-color);color:var(--_utrecht-button-disabled-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-button-link--html-a:focus{background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-button-link--html-a:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-button-link--html-a:hover{background-color:var(--_utrecht-button-hover-background-color);border-color:var(--_utrecht-button-hover-border-color);color:var(--_utrecht-button-hover-color);scale:var(--utrecht-button-hover-scale,1)}.utrecht-button-link--html-a:active{background-color:var(--_utrecht-button-active-background-color);border-color:var(--_utrecht-button-active-border-color);color:var(--_utrecht-button-active-color)}.utrecht-button-link--primary-action{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-primary-action-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-primary-action-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-primary-action-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-primary-action-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-primary-action-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-primary-action-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-primary-action-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-primary-action-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-primary-action-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-primary-action-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-primary-action-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-primary-action-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-primary-action-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-primary-action-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-primary-action-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-primary-action-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-primary-action-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-primary-action-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-primary-action-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-primary-action-pressed-color)}.utrecht-button-link--secondary-action{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-secondary-action-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-secondary-action-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-secondary-action-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-secondary-action-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-secondary-action-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-secondary-action-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-secondary-action-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-secondary-action-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-secondary-action-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-secondary-action-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-secondary-action-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-secondary-action-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-secondary-action-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-secondary-action-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-secondary-action-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-secondary-action-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-secondary-action-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-secondary-action-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-secondary-action-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-secondary-action-pressed-color)}.utrecht-button-link--subtle{--_utrecht-button-appearance-active-background-color:var(--utrecht-button-subtle-active-background-color);--_utrecht-button-appearance-active-border-color:var(--utrecht-button-subtle-active-border-color);--_utrecht-button-appearance-active-color:var(--utrecht-button-subtle-active-color);--_utrecht-button-appearance-background-color:var(--utrecht-button-subtle-background-color);--_utrecht-button-appearance-border-color:var(--utrecht-button-subtle-border-color);--_utrecht-button-appearance-border-width:var(--utrecht-button-subtle-border-width);--_utrecht-button-appearance-color:var(--utrecht-button-subtle-color);--_utrecht-button-appearance-font-weight:var(--utrecht-button-subtle-font-weight);--_utrecht-button-appearance-disabled-background-color:var(\\n --utrecht-button-subtle-disabled-background-color\\n );--_utrecht-button-appearance-disabled-border-color:var(--utrecht-button-subtle-disabled-border-color);--_utrecht-button-appearance-disabled-color:var(--utrecht-button-subtle-disabled-color);--_utrecht-button-appearance-focus-background-color:var(--utrecht-button-subtle-focus-background-color);--_utrecht-button-appearance-focus-border-color:var(--utrecht-button-subtle-focus-border-color);--_utrecht-button-appearance-focus-color:var(--utrecht-button-subtle-focus-color);--_utrecht-button-appearance-hover-background-color:var(--utrecht-button-subtle-hover-background-color);--_utrecht-button-appearance-hover-border-color:var(--utrecht-button-subtle-hover-border-color);--_utrecht-button-appearance-hover-color:var(--utrecht-button-subtle-hover-color);--_utrecht-button-appearance-pressed-background-color:var(--utrecht-button-subtle-pressed-background-color);--_utrecht-button-appearance-pressed-border-color:var(--utrecht-button-subtle-pressed-border-color);--_utrecht-button-appearance-pressed-color:var(--utrecht-button-subtle-pressed-color)}\";\nstyleInject(css_248z$W);\nvar _excluded$12 = [\"appearance\", \"children\", \"className\", \"external\", \"href\", \"placeholder\", \"role\"];\nfunction ownKeys$13(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$13(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$13(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$13(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar onKeyDown = function onKeyDown(evt) {\n var _evt$target;\n if (evt.key === ' ' && typeof ((_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.click) === 'function') {\n // Prevent other side-effects, such as scrolling\n evt.preventDefault();\n // Navigate to the link target\n evt.target.click();\n }\n};\nvar ButtonLink = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var appearance = _ref.appearance,\n children = _ref.children,\n className = _ref.className,\n external = _ref.external,\n href = _ref.href,\n placeholder = _ref.placeholder,\n role = _ref.role,\n restProps = _objectWithoutProperties(_ref, _excluded$12);\n var props = restProps;\n if (role === 'button') {\n // When this link is announced as button by accessibility tools,\n // it should also behave like a button. Links are not activated\n // using `Space`, so we need to implement that behaviour here\n // to reach parity with the `button` element.\n props = _objectSpread$13(_objectSpread$13({}, restProps), {}, {\n onKeyDown: onKeyDown\n });\n }\n return jsx(\"a\", _objectSpread$13(_objectSpread$13({\n href: placeholder ? undefined : href,\n ref: ref,\n role: role || (placeholder ? 'link' : undefined),\n className: clsx('utrecht-button-link', 'utrecht-button-link--html-a', {\n 'utrecht-button-link--external': external,\n 'utrecht-button-link--primary-action': appearance === 'primary-action-button',\n 'utrecht-button-link--secondary-action': appearance === 'secondary-action-button',\n 'utrecht-button-link--subtle': appearance === 'subtle-button',\n 'utrecht-button-link--placeholder': placeholder\n }, className),\n rel: external ? 'external noopener noreferrer' : undefined,\n \"aria-disabled\": placeholder ? 'true' : undefined\n }, props), {}, {\n children: children\n }));\n});\nButtonLink.displayName = 'ButtonLink';\nvar css_248z$V = \".utrecht-checkbox{cursor:var(--utrecht-action-activate-cursor,revert);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-start:0;-webkit-user-select:none;user-select:none}.utrecht-checkbox--disabled{cursor:var(--utrecht-action-disabled-cursor,revert)}.utrecht-checkbox--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-checkbox--html-input:disabled{cursor:var(--utrecht-action-disabled-cursor,revert)}.utrecht-checkbox--html-input:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-checkbox--html-input:focus:not(:focus-visible){box-shadow:none;outline-style:revert}\";\nstyleInject(css_248z$V);\nvar css_248z$U = \".utrecht-checkbox--custom,.utrecht-custom-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:50%;background-repeat:no-repeat;background-size:contain;block-size:var(--utrecht-checkbox-size,1em);border-color:var(--utrecht-checkbox-border-color);border-style:solid;border-width:var(--utrecht-checkbox-border-width);cursor:var(--utrecht-action-activate-cursor,revert);inline-size:var(--utrecht-checkbox-size,1em);margin-block-start:var(--utrecht-checkbox-margin-block-start);min-block-size:24px;min-inline-size:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact;vertical-align:top}.utrecht-checkbox--custom.utrecht-checkbox--checked,.utrecht-custom-checkbox--checked{background-color:var(--utrecht-checkbox-checked-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-checked-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-checked-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--disabled,.utrecht-custom-checkbox--disabled{border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-disabled-border-width,var(--utrecht-checkbox-border-width));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-checkbox--custom.utrecht-checkbox--disabled:checked,.utrecht-custom-checkbox--disabled:checked{background-color:var(--utrecht-checkbox-disabled-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color))}.utrecht-checkbox--custom.utrecht-checkbox--disabled:active,.utrecht-custom-checkbox--disabled:active{border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color))}.utrecht-checkbox--custom.utrecht-checkbox--indeterminate,.utrecht-custom-checkbox--indeterminate{background-color:var(--utrecht-checkbox-indeterminate-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-indeterminate-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-indeterminate-border-width,var(--utrecht-checkbox-border-width));color:var(--utrecht-checkbox-indeterminate-color,var(--utrecht-checkbox-color))}.utrecht-checkbox--custom.utrecht-checkbox--invalid,.utrecht-custom-checkbox--invalid{border-color:var(--utrecht-checkbox-invalid-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-invalid-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--active,.utrecht-custom-checkbox--active{background-color:var(--utrecht-checkbox-active-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-active-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-active-border-width,var(--utrecht-checkbox-border-width));color:var(--utrecht-checkbox-active-color,var(--utrecht-checkbox-color))}.utrecht-checkbox--custom.utrecht-checkbox--hover,.utrecht-custom-checkbox--hover{background-color:var(--utrecht-checkbox-hover-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-hover-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-hover-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--focus,.utrecht-custom-checkbox--focus{background-color:var(--utrecht-checkbox-focus-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-focus-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-focus-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--focus-visible,.utrecht-custom-checkbox--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-checkbox--custom.utrecht-checkbox--html-input:disabled,.utrecht-custom-checkbox--html-input:disabled{border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-disabled-border-width,var(--utrecht-checkbox-border-width));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-checkbox--custom.utrecht-checkbox--html-input:disabled:checked,.utrecht-custom-checkbox--html-input:disabled:checked{background-color:var(--utrecht-checkbox-disabled-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:disabled:active,.utrecht-custom-checkbox--html-input:disabled:active{border-color:var(--utrecht-checkbox-disabled-border-color,var(--utrecht-checkbox-border-color))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:hover,.utrecht-custom-checkbox--html-input:hover{background-color:var(--utrecht-checkbox-hover-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-hover-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-hover-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:focus,.utrecht-custom-checkbox--html-input:focus{background-color:var(--utrecht-checkbox-focus-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-focus-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-focus-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:focus-visible,.utrecht-custom-checkbox--html-input:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-checkbox--custom.utrecht-checkbox--html-input:invalid,.utrecht-checkbox--custom.utrecht-checkbox--html-input[aria-invalid=true],.utrecht-custom-checkbox--html-input:invalid,.utrecht-custom-checkbox--html-input[aria-invalid=true]{border-color:var(--utrecht-checkbox-invalid-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-invalid-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:active,.utrecht-custom-checkbox--html-input:active{background-color:var(--utrecht-checkbox-active-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-active-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-active-border-width,var(--utrecht-checkbox-border-width));color:var(--utrecht-checkbox-active-color,var(--utrecht-checkbox-color))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:active,.utrecht-checkbox--custom.utrecht-checkbox--html-input:checked,.utrecht-custom-checkbox--html-input:active,.utrecht-custom-checkbox--html-input:checked{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E\\\")}.utrecht-checkbox--custom.utrecht-checkbox--html-input:checked,.utrecht-custom-checkbox--html-input:checked{background-color:var(--utrecht-checkbox-checked-background-color,var(--utrecht-checkbox-background-color));border-color:var(--utrecht-checkbox-checked-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-checked-border-width,var(--utrecht-checkbox-border-width))}.utrecht-checkbox--custom.utrecht-checkbox--html-input:indeterminate,.utrecht-custom-checkbox--html-input:indeterminate{background-color:var(--utrecht-checkbox-indeterminate-background-color,var(--utrecht-checkbox-background-color));background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E\\\");border-color:var(--utrecht-checkbox-indeterminate-border-color,var(--utrecht-checkbox-border-color));border-width:var(--utrecht-checkbox-indeterminate-border-width,var(--utrecht-checkbox-border-width));color:var(--utrecht-checkbox-indeterminate-color,var(--utrecht-checkbox-color))}\";\nstyleInject(css_248z$U);\nvar _excluded$11 = [\"appearance\", \"disabled\", \"invalid\", \"required\", \"className\"];\nfunction ownKeys$12(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$12(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$12(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$12(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Checkbox = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _ref$appearance = _ref.appearance,\n appearance = _ref$appearance === void 0 ? 'custom' : _ref$appearance,\n disabled = _ref.disabled,\n invalid = _ref.invalid,\n required = _ref.required,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$11);\n return jsx(\"input\", _objectSpread$12(_objectSpread$12({}, restProps), {}, {\n ref: ref,\n type: \"checkbox\",\n className: clsx('utrecht-checkbox', 'utrecht-checkbox--html-input', {\n 'utrecht-checkbox--disabled': disabled,\n 'utrecht-checkbox--custom': appearance === 'custom',\n 'utrecht-checkbox--invalid': invalid,\n 'utrecht-checkbox--required': required\n }, className),\n \"aria-invalid\": invalid || undefined,\n disabled: disabled,\n required: required\n }));\n});\nCheckbox.displayName = 'Checkbox';\nvar css_248z$T = \".utrecht-code{background-color:var(--utrecht-code-background-color);color:var(--utrecht-code-color);font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-variant-ligatures:none;line-height:var(--utrecht-code-line-height)}\";\nstyleInject(css_248z$T);\nvar _excluded$10 = [\"children\", \"className\"];\nfunction ownKeys$11(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$11(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$11(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$11(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Code = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$10);\n return jsx(\"code\", _objectSpread$11(_objectSpread$11({\n ref: ref,\n className: clsx('utrecht-code', className)\n }, restProps), {}, {\n children: children\n }));\n});\nCode.displayName = 'Code';\nvar css_248z$S = \".utrecht-code-block{--utrecht-code-color:var(--utrecht-code-block-color,inherit);--utrecht-code-background-color:var(--utrecht-code-block-background-color,inherit);--utrecht-code-font-weight:var(--utrecht-code-block-font-weight,inherit);--utrecht-code-font-size:var(--utrecht-code-block-font-size,inherit);--utrecht-code-font-family:var(--utrecht-code-block-font-family,monospace);background-color:var(--utrecht-code-background-color);background-color:var(--utrecht-code-block-background-color);color:var(--utrecht-code-color);display:block;font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-size:var(--utrecht-code-block-font-size,var(--utrecht-code-font-size));font-variant-ligatures:none;line-height:var(--utrecht-code-line-height);line-height:var(--utrecht-code-block-line-height,var(--utrecht-code-line-height));margin-block-end:var(--utrecht-code-block-margin-block-end);margin-block-start:var(--utrecht-code-block-margin-block-start);margin-inline-end:var(--utrecht-code-block-margin-inline-end);margin-inline-start:var(--utrecht-code-block-margin-inline-start);padding-block-end:var(--utrecht-code-block-padding-block-end);padding-block-start:var(--utrecht-code-block-padding-block-start);padding-inline-end:var(--utrecht-code-block-padding-inline-end);padding-inline-start:var(--utrecht-code-block-padding-inline-start);white-space:pre}.utrecht-code-block__content{font-family:inherit;font-size:inherit}\";\nstyleInject(css_248z$S);\nvar _excluded$$ = [\"children\", \"className\"];\nfunction ownKeys$10(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$10(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$10(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$10(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar CodeBlock = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$$);\n return jsx(\"pre\", _objectSpread$10(_objectSpread$10({\n ref: ref,\n className: clsx('utrecht-code-block', className)\n }, restProps), {}, {\n children: jsx(\"code\", {\n className: \"utrecht-code-block__content\",\n children: children\n })\n }));\n});\nCodeBlock.displayName = 'CodeBlock';\nvar css_248z$R = \".utrecht-color-sample{background-color:var(--utrecht-color-sample-background-color,currentColor);block-size:var(--utrecht-color-sample-block-size,2em);border-color:var(--utrecht-color-sample-border-color,var(--utrecht-color-sample-default-border-color));border-radius:var(--utrecht-color-sample-border-radius,0);border-style:solid;border-width:var(--utrecht-color-sample-border-width,0);box-sizing:border-box;display:inline-block;inline-size:var(--utrecht-color-sample-inline-size,2em);-webkit-print-color-adjust:exact;print-color-adjust:exact}@media (forced-colors:active){.utrecht-color-sample{forced-color-adjust:none}}@media (forced-colors:active) and (prefers-color-scheme:dark){.utrecht-color-sample{--utrecht-color-sample-default-border-color:var(--utrecht-color-sample-dark-border-color,#000)}}@media (forced-colors:active) and (prefers-color-scheme:light){.utrecht-color-sample{--utrecht-color-sample-default-border-color:var(--utrecht-color-sample-light-border-color,#fff)}}\";\nstyleInject(css_248z$R);\nvar _excluded$_ = [\"children\", \"className\", \"color\", \"style\"];\nfunction ownKeys$$(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$$(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$$(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$$(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar ColorSample = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n color = _ref.color,\n style = _ref.style,\n restProps = _objectWithoutProperties(_ref, _excluded$_);\n return jsx(\"data\", _objectSpread$$(_objectSpread$$({\n ref: ref,\n className: clsx('utrecht-color-sample', className),\n style: _objectSpread$$(_objectSpread$$({}, style), {}, {\n color: color\n }),\n value: color\n }, restProps), {}, {\n children: children\n }));\n});\nColorSample.displayName = 'ColorSample';\nvar css_248z$Q = \".utrecht-column-layout{column-gap:var(--utrecht-column-layout-gap,2em);column-width:var(--utrecht-column-layout-column-width,40ch);display:block}.utrecht-column-layout--rule{column-rule-color:var(--utrecht-column-layout-column-rule-color);column-rule-style:solid;column-rule-width:var(--utrecht-column-layout-column-rule-width,0)}\";\nstyleInject(css_248z$Q);\nvar ColumnLayout = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n rule = _ref.rule;\n return jsx(\"div\", {\n className: clsx('utrecht-column-layout', {\n 'utrecht-column-layout--rule': rule\n }, className),\n ref: ref,\n children: children\n });\n});\nColumnLayout.displayName = 'ColumnLayout';\nvar css_248z$P = \".utrecht-currency-data{font-variant-numeric:lining-nums tabular-nums;white-space:nowrap}\";\nstyleInject(css_248z$P);\nvar _excluded$Z = [\"children\", \"currency\", \"amount\", \"locale\", \"className\"];\nfunction ownKeys$_(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$_(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$_(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$_(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar formatLabel = function formatLabel(locale, currency, amount) {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency,\n minimumFractionDigits: Number.isInteger(amount) ? 0 : undefined,\n useGrouping: false\n }).format(amount)\n // Remove whitespace\n .replace(/[\\s]+/g, '')\n // Replace dash (U+002D) with minus sign (U+2212)\n .replace('-', \"\\u2212\");\n};\nvar formatVisually = function formatVisually(locale, currency, amount) {\n var formatted = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency\n }).format(amount);\n // Replace dash (U+002D) with minus sign (U+2212)\n formatted = formatted.replace(/-/, \"\\u2212\");\n // Move the minus to before the currency\n if ((locale === 'nl' || locale === 'nl-NL') && /\\u2212/.test(formatted)) {\n formatted = formatted.replace(/(.+)\\u2212(.+)/, \"\\u2212 $1$2\");\n }\n // Replace white space with non-breaking space\n formatted = formatted.replace(/ /g, \"\\xA0\");\n return formatted;\n};\nvar CurrencyData = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n _ref$currency = _ref.currency,\n currency = _ref$currency === void 0 ? 'EUR' : _ref$currency,\n amount = _ref.amount,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? 'nl-NL' : _ref$locale,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$Z);\n var number = typeof amount === 'string' ? parseFloat(amount) : amount;\n var labelFormatted = formatLabel(locale, currency, number);\n var visuallyFormatted = formatVisually(locale, currency, number);\n return jsx(\"data\", _objectSpread$_(_objectSpread$_({}, restProps), {}, {\n ref: ref,\n value: \"\".concat(currency, \" \").concat(amount),\n className: clsx('utrecht-currency-data', number < 0 && 'utrecht-currency-data--negative', number > 0 && 'utrecht-currency-data--positive', className),\n \"aria-label\": labelFormatted,\n children: children || visuallyFormatted\n }));\n});\nCurrencyData.displayName = 'CurrencyData';\nvar css_248z$O = \".utrecht-badge-data{background-color:var(--utrecht-badge-background-color,#000);border-radius:var(--utrecht-badge-border-radius,.5ch);color:var(--utrecht-badge-color,#fff);display:inline-block;font-family:var(--utrecht-document-font-family,sans-serif);font-size:var(--utrecht-badge-font-size,inherit);font-style:var(--utrecht-badge-font-style,normal);font-weight:var(--utrecht-badge-font-weight,bold);letter-spacing:var(--utrecht-badge-data-letter-spacing,inherit);line-height:var(--utrecht-badge-line-height,1em);max-block-size:max-content;max-inline-size:max-content;min-block-size:1em;min-inline-size:1em;padding-block-end:var(--utrecht-badge-padding-block,.5ex);padding-block-start:var(--utrecht-badge-padding-block,.5ex);padding-inline-end:var(--utrecht-badge-padding-inline,.5ch);padding-inline-start:var(--utrecht-badge-padding-inline,.5ch);text-decoration:none;text-transform:var(--utrecht-badge-data-text-transform,inherit)}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-badge-data{border:1px solid}}\";\nstyleInject(css_248z$O);\nvar _excluded$Y = [\"children\", \"className\", \"dateTime\", \"value\"];\nfunction ownKeys$Z(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$Z(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$Z(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Z(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar DataBadge = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n dateTime = _ref.dateTime,\n value = _ref.value,\n restProps = _objectWithoutProperties(_ref, _excluded$Y);\n var props = _objectSpread$Z({\n children: children,\n className: clsx('utrecht-badge-data', className)\n }, restProps);\n return typeof dateTime !== 'undefined' ? jsx(\"time\", _objectSpread$Z(_objectSpread$Z({}, props), {}, {\n dateTime: dateTime,\n ref: ref\n })) : typeof value !== 'undefined' ? jsx(\"data\", _objectSpread$Z(_objectSpread$Z({}, props), {}, {\n value: value,\n ref: ref\n })) : jsx(\"span\", _objectSpread$Z(_objectSpread$Z({}, props), {}, {\n ref: ref\n }));\n});\nDataBadge.displayName = 'DataBadge';\nvar css_248z$N = \".utrecht-document{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;color:var(--utrecht-document-color,inherit);font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-document-font-size,inherit);font-weight:var(--utrecht-document-font-weight,inherit);line-height:var(--utrecht-document-line-height,inherit);text-rendering:optimizeLegibility}.utrecht-document :lang(ar){letter-spacing:0!important}.utrecht-document--surface{background-color:var(--utrecht-document-background-color,inherit)}\";\nstyleInject(css_248z$N);\nvar _excluded$X = [\"children\", \"className\"];\nfunction ownKeys$Y(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$Y(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$Y(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Y(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Document = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$X);\n return jsx(\"div\", _objectSpread$Y(_objectSpread$Y({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-document', className),\n children: children\n }));\n});\nDocument.displayName = 'Document';\nvar css_248z$M = \".utrecht-data-list{display:block;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-data-list-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-data-list-margin-block-start, 0))}.utrecht-data-list__item-key{color:var(--utrecht-data-list-item-key-color);font-size:var(--utrecht-data-list-item-key-font-size);font-weight:var(--utrecht-data-list-item-key-font-weight);line-height:var(--utrecht-data-list-item-key-line-height)}.utrecht-data-list__item-value{color:var(--utrecht-data-list-item-value-color);font-size:var(--utrecht-data-list-item-value-font-size);font-weight:var(--utrecht-data-list-item-value-font-weight);line-height:var(--utrecht-data-list-item-value-line-height);min-block-size:calc(var(--utrecht-data-list-item-value-line-height)*1rem)}.utrecht-data-list__actions--html-dd,.utrecht-data-list__item-value--html-dd{margin-inline-start:0}.utrecht-data-list__item-value--multiline{white-space:pre-line}.utrecht-data-list--rows .utrecht-data-list__actions{align-items:baseline;display:flex;grid-column:-1;grid-row:1;justify-content:flex-end}.utrecht-data-list--rows .utrecht-data-list__item{--_utrecht-minmax:max(var(--utrecht-data-list-rows-column-min-inline-size,25ch),var(--utrecht-data-list-rows-column-inline-size,80%));--_utrecht-auto-col:minmax(var(--_utrecht-minmax),max-content);border-block-end-color:var(--utrecht-data-list-rows-border-bottom-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-data-list-rows-border-bottom-width,0);column-gap:var(--utrecht-data-list-rows-gap);display:grid;grid-auto-columns:1fr;grid-template-columns:repeat(auto-fit,var(--_utrecht-auto-col));margin-block-start:var(--utrecht-data-list-rows-item-margin-block-start);row-gap:0}.utrecht-data-list--rows .utrecht-data-list__item:first-of-type{margin-block-start:0}.utrecht-data-list--rows .utrecht-data-list__item-value{margin-block-start:var(--utrecht-data-list-rows-item-value-margin-block-start)}\";\nstyleInject(css_248z$M);\nvar _excluded$W = [\"appearance\", \"children\", \"className\"],\n _excluded2$3 = [\"children\", \"className\"],\n _excluded3 = [\"children\", \"className\"],\n _excluded4 = [\"children\", \"className\"];\nfunction ownKeys$X(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$X(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$X(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$X(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar DataList = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var appearance = _ref.appearance,\n children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$W);\n return jsx(\"dl\", _objectSpread$X(_objectSpread$X({}, restProps), {}, {\n className: clsx('utrecht-data-list', 'utrecht-data-list--html-dl', appearance === 'rows' && 'utrecht-data-list--rows', className),\n ref: ref,\n children: children\n }));\n});\nDataList.displayName = 'DataList';\nvar DataListItem = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var children = _ref2.children,\n className = _ref2.className,\n restProps = _objectWithoutProperties(_ref2, _excluded2$3);\n return jsx(\"div\", _objectSpread$X(_objectSpread$X({}, restProps), {}, {\n className: clsx('utrecht-data-list__item', className),\n ref: ref,\n children: children\n }));\n});\nDataListItem.displayName = 'DataListItem';\nvar DataListKey = /*#__PURE__*/forwardRef(function (_ref3, ref) {\n var children = _ref3.children,\n className = _ref3.className,\n restProps = _objectWithoutProperties(_ref3, _excluded3);\n return jsx(\"dt\", _objectSpread$X(_objectSpread$X({}, restProps), {}, {\n className: clsx('utrecht-data-list__item-key', className),\n ref: ref,\n children: children\n }));\n});\nDataListKey.displayName = 'DataListKey';\nvar DataListValue = /*#__PURE__*/forwardRef(function (_ref4, ref) {\n var value = _ref4.value,\n children = _ref4.children,\n className = _ref4.className,\n emptyDescription = _ref4.emptyDescription,\n multiline = _ref4.multiline,\n notranslate = _ref4.notranslate;\n var empty = value === '' || value === null;\n return jsx(\"dd\", {\n className: clsx('utrecht-data-list__item-value', 'utrecht-data-list__item-value--html-dd', className, multiline && 'utrecht-data-list__item-value--multiline'),\n translate: typeof notranslate === 'boolean' ? notranslate ? 'no' : 'yes' : undefined,\n ref: ref,\n children: empty ? jsx(\"span\", {\n \"aria-label\": emptyDescription,\n children: \"-\"\n }) : children\n });\n});\nDataListValue.displayName = 'DataListValue';\nvar DataListActions = /*#__PURE__*/forwardRef(function (_ref5, ref) {\n var children = _ref5.children,\n className = _ref5.className,\n restProps = _objectWithoutProperties(_ref5, _excluded4);\n return jsx(\"dd\", _objectSpread$X(_objectSpread$X({}, restProps), {}, {\n className: clsx('utrecht-data-list__actions', 'utrecht-data-list__actions--html-dd', className),\n ref: ref,\n children: children\n }));\n});\nDataListActions.displayName = 'DataListActions';\nvar css_248z$L = \".utrecht-emphasis--stressed{font-style:var(--utrecht-emphasis-stressed-font-style,italic)}.utrecht-emphasis--strong{font-weight:var(--utrecht-emphasis-strong-font-weight,bold)}\";\nstyleInject(css_248z$L);\nvar _excluded$V = [\"children\", \"className\"];\nfunction ownKeys$W(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$W(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$W(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$W(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Emphasis = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$V);\n return jsx(\"em\", _objectSpread$W(_objectSpread$W({\n ref: ref,\n className: clsx('utrecht-emphasis', 'utrecht-emphasis--stressed', className)\n }, restProps), {}, {\n children: children\n }));\n});\nEmphasis.displayName = 'Emphasis';\nvar css_248z$K = \".utrecht-form-fieldset{margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-margin-block-start, 0))}.utrecht-form-fieldset--html-fieldset,.utrecht-form-fieldset__fieldset--html-fieldset{all:revert;border:0;margin-inline-end:0;margin-inline-start:0;min-inline-size:0;padding-block-end:0;padding-block-start:.01em;padding-inline-end:0;padding-inline-start:0}.utrecht-form-fieldset__legend--html-legend{display:table;inline-size:100%;padding-inline-end:0;padding-inline-start:0}.utrecht-form-fieldset--distanced{--utrecht-space-around:1}.utrecht-form-fieldset--section{background-color:var(--utrecht-form-fieldset-section-background-color);color:var(--utrecht-form-fieldset-section-color)}.utrecht-form-fieldset__legend{break-inside:avoid;color:var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit));font-family:var(--utrecht-form-fieldset-legend-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-form-fieldset-legend-font-size);font-weight:var(--utrecht-form-fieldset-legend-font-weight);line-height:var(--utrecht-form-fieldset-legend-line-height);page-break-after:avoid;page-break-inside:avoid}.utrecht-form-fieldset__legend--disabled{color:var(--utrecht-form-fieldset-legend-disabled-color,var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit)))}.utrecht-form-fieldset__legend--distanced{margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-legend-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-legend-margin-block-start, 0))}.utrecht-form-fieldset--invalid{border-inline-start-color:var(--utrecht-form-fieldset-invalid-border-inline-start-color,var(--utrecht-form-field-invalid-border-inline-start-color));border-inline-start-style:solid;border-inline-start-width:var(--utrecht-form-fieldset-invalid-border-inline-start-width,var(--utrecht-form-field-invalid-border-inline-start-width));padding-inline-start:var(--utrecht-form-fieldset-invalid-padding-inline-start,var(--utrecht-form-field-invalid-padding-inline-start))}\";\nstyleInject(css_248z$K);\nvar _excluded$U = [\"aria-describedby\", \"aria-label\", \"aria-labelledby\", \"className\", \"children\", \"disabled\", \"form\", \"invalid\", \"name\", \"role\"],\n _excluded2$2 = [\"className\", \"children\", \"disabled\", \"invalid\"];\nfunction ownKeys$V(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$V(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$V(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$V(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Fieldset = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var ariaDescribedby = _ref['aria-describedby'],\n ariaLabel = _ref['aria-label'],\n ariaLabelledby = _ref['aria-labelledby'],\n className = _ref.className,\n children = _ref.children,\n disabled = _ref.disabled,\n form = _ref.form,\n invalid = _ref.invalid,\n name = _ref.name,\n role = _ref.role,\n restProps = _objectWithoutProperties(_ref, _excluded$U);\n return jsx(\"div\", _objectSpread$V(_objectSpread$V({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-fieldset', disabled && 'utrecht-form-fieldset--disabled', invalid && 'utrecht-form-fieldset--invalid', className),\n children: jsx(\"fieldset\", {\n \"aria-describedby\": ariaDescribedby,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-invalid\": invalid || undefined,\n disabled: disabled,\n form: form,\n name: name,\n role: role,\n className: clsx('utrecht-form-fieldset__fieldset', 'utrecht-form-fieldset--html-fieldset'),\n children: children\n })\n }));\n});\nFieldset.displayName = 'Fieldset';\nvar FieldsetOnly = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n children = _ref2.children,\n disabled = _ref2.disabled,\n invalid = _ref2.invalid,\n restProps = _objectWithoutProperties(_ref2, _excluded2$2);\n return jsx(\"fieldset\", _objectSpread$V(_objectSpread$V({}, restProps), {}, {\n ref: ref,\n \"aria-invalid\": invalid || undefined,\n disabled: disabled,\n className: clsx('utrecht-form-fieldset', 'utrecht-form-fieldset--html-fieldset', disabled && 'utrecht-form-fieldset--disabled', invalid && 'utrecht-form-fieldset--invalid', className),\n children: children\n }));\n});\nFieldsetOnly.displayName = 'Fieldset';\nvar _excluded$T = [\"className\", \"children\"];\nfunction ownKeys$U(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$U(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$U(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$U(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FieldsetLegend = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded$T);\n return jsx(\"legend\", _objectSpread$U(_objectSpread$U({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-fieldset__legend', 'utrecht-form-fieldset__legend--html-legend', className),\n children: children\n }));\n});\nFieldsetLegend.displayName = 'FieldsetLegend';\nvar css_248z$J = \".utrecht-figure{margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-figure-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-figure-margin-block-start, 0))}.utrecht-figure__caption{color:var(--utrecht-figure-caption-color);font-size:var(--utrecht-figure-caption-font-size);line-height:var(--utrecht-figure-caption-line-height)}\";\nstyleInject(css_248z$J);\nvar _excluded$S = [\"className\", \"children\"];\nfunction ownKeys$T(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$T(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$T(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$T(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Figure = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded$S);\n return jsx(\"figure\", _objectSpread$T(_objectSpread$T({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-figure', className),\n children: children\n }));\n});\nFigure.displayName = 'Figure';\nvar _excluded$R = [\"className\", \"children\"];\nfunction ownKeys$S(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$S(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$S(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$S(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FigureCaption = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded$R);\n return jsx(\"figcaption\", _objectSpread$S(_objectSpread$S({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-figure__caption', className),\n children: children\n }));\n});\nFigureCaption.displayName = 'FigureCaption';\nvar css_248z$I = \".utrecht-form-field{break-inside:avoid;font-family:var(--utrecht-document-font-family,inherit);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-field-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-field-margin-block-start, 0));max-inline-size:var(--utrecht-form-field-max-inline-size);page-break-inside:avoid}.utrecht-form-field--distanced{--utrecht-space-around:1}.utrecht-form-field--invalid{border-inline-start-color:var(--utrecht-form-field-invalid-border-inline-start-color);border-inline-start-style:solid;border-inline-start-width:var(--utrecht-form-field-invalid-border-inline-start-width);padding-inline-start:var(--utrecht-form-field-invalid-padding-inline-start)}.utrecht-form-field--checkbox{display:grid;gap:0 var(--utrecht-checkbox-margin-inline-end,12px);grid-template-areas:\\\"input label\\\" \\\"input description\\\" \\\"input description-invalid\\\";grid-template-columns:var(--utrecht-checkbox-size) 100fr}.utrecht-form-field--checkbox .utrecht-form-field__label:has(.utrecht-form-field__input){margin-inline-start:calc((var(--utrecht-checkbox-size) + var(--utrecht-checkbox-margin-inline-end, 12px))*-1)}.utrecht-form-field--checkbox .utrecht-form-field__label .utrecht-form-field__input{margin-inline-end:var(--utrecht-checkbox-margin-inline-end,12px)}.utrecht-form-field--radio{display:grid;gap:0 var(--utrecht-radio-button-margin-inline-end,12px);grid-template-areas:\\\"input label\\\" \\\"input description\\\" \\\"input description-invalid\\\";grid-template-columns:var(--utrecht-radio-button-size) 100fr}.utrecht-form-field--radio .utrecht-form-field__label:has(.utrecht-form-field__input){margin-inline-start:calc((var(--utrecht-radio-button-size) + var(--utrecht-radio-button-margin-inline-end, 12px))*-1)}.utrecht-form-field--radio .utrecht-form-field__label .utrecht-form-field__input{margin-inline-end:var(--utrecht-radio-button-margin-inline-end,12px)}.utrecht-form-field__input{grid-area:input;order:5}.utrecht-form-field__label{grid-area:label;margin-block-end:var(--utrecht-form-field-label-margin-block-end);margin-block-start:0;order:1}.utrecht-form-field .utrecht-form-field-description{grid-area:description;margin-block-end:var(--utrecht-form-field-description-margin-block-end);margin-block-start:var(--utrecht-form-field-description-margin-block-start);order:2}.utrecht-form-field .utrecht-form-field-description--invalid{grid-area:description-invalid;order:3}.utrecht-form-field__description{grid-area:description;margin-block-end:var(--utrecht-form-field-description-margin-block-end);margin-block-start:var(--utrecht-form-field-description-margin-block-start);order:2}.utrecht-form-field__description--before{grid-area:description-before;order:4}\";\nstyleInject(css_248z$I);\nvar _excluded$Q = [\"className\", \"children\", \"invalid\", \"type\"];\nfunction ownKeys$R(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$R(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$R(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$R(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FormField = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n invalid = _ref.invalid,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded$Q);\n return jsx(\"div\", _objectSpread$R(_objectSpread$R({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-field', {\n 'utrecht-form-field--invalid': invalid,\n 'utrecht-form-field--checkbox': type === 'checkbox',\n 'utrecht-form-field--radio': type === 'radio',\n 'utrecht-form-field--text': !type || type === 'text'\n }, className),\n children: children\n }));\n});\nFormField.displayName = 'FormField';\nvar css_248z$H = \".utrecht-form-field-description{--utrecht-document-color:currentColor;color:var(--utrecht-form-field-description-color);font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-form-field-description-font-size,inherit);font-style:var(--utrecht-form-field-description-font-style);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-field-description-margin-block-end, var(--utrecht-paragraph-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-field-description-margin-block-start, var(--utrecht-paragraph-margin-block-start, 0)))}.utrecht-form-field-description--distanced,.utrecht-form-field-description>*{--utrecht-space-around:1}.utrecht-form-field-description--invalid{color:var(--utrecht-form-field-description-invalid-color,var(--utrecht-feedback-invalid-color,var(--utrecht-feedback-danger-color)))}.utrecht-form-field-description--valid{color:var(--utrecht-form-field-description-valid-color,var(--utrecht-feedback-valid-color,var(--utrecht-feedback-safe-color)))}.utrecht-form-field-description--warning{color:var(--utrecht-form-field-description-warning-color,var(--utrecht-feedback-warning-color))}\";\nstyleInject(css_248z$H);\nvar _excluded$P = [\"invalid\", \"valid\", \"warning\", \"className\", \"children\"];\nfunction ownKeys$Q(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$Q(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$Q(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Q(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FormFieldDescription = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var invalid = _ref.invalid,\n valid = _ref.valid,\n warning = _ref.warning,\n className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded$P);\n return jsx(\"div\", _objectSpread$Q(_objectSpread$Q({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-field-description', invalid && 'utrecht-form-field-description--invalid', valid && 'utrecht-form-field-description--valid', warning && 'utrecht-form-field-description--warning', className),\n children: children\n }));\n});\nFormFieldDescription.displayName = 'FormFieldDescription';\nvar css_248z$G = \".utrecht-form-label{color:var(--utrecht-form-label-color);font-size:var(--utrecht-form-label-font-size);font-weight:var(--utrecht-form-label-font-weight)}.utrecht-form-label--checkbox{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-checkbox-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-form-label--checked{font-weight:var(--utrecht-form-label-checked-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-form-label--disabled{cursor:var(--utrecht-action-disabled-cursor,revert);font-weight:var(--utrecht-form-label-disabled-color,var(--utrecht-form-label-color))}.utrecht-form-label--radio{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-radio-font-weight,var(--utrecht-form-label-font-weight))}\";\nstyleInject(css_248z$G);\nvar _excluded$O = [\"children\", \"className\", \"type\", \"disabled\", \"checked\"];\nfunction ownKeys$P(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$P(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$P(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$P(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FormLabel = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n type = _ref.type,\n disabled = _ref.disabled,\n checked = _ref.checked,\n restProps = _objectWithoutProperties(_ref, _excluded$O);\n return jsx(\"label\", _objectSpread$P(_objectSpread$P({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-form-label', type && \"utrecht-form-label--\".concat(type), disabled && 'utrecht-form-label--disabled', checked && 'utrecht-form-label--checked', className),\n children: children\n }));\n});\nFormLabel.displayName = 'FormLabel';\nvar css_248z$F = \".utrecht-form-toggle{align-items:center;block-size:var(--utrecht-form-toggle-height,2em);border-color:var(--utrecht-form-toggle-border-color,currentColor);border-radius:var(--utrecht-form-toggle-border-radius,999rem);border-style:var(--utrecht-form-toggle-border-style,solid);border-width:var(--utrecht-form-toggle-border-width,1px);color:var(--utrecht-form-toggle-color);cursor:var(--utrecht-action-activate-cursor,revert);display:flex;inline-size:var(--utrecht-form-toggle-width,6em);padding-block-end:var(--utrecht-form-toggle-padding-block-end);padding-block-start:var(--utrecht-form-toggle-padding-block-start);padding-inline-end:var(--utrecht-form-toggle-padding-inline-end);padding-inline-start:var(--utrecht-form-toggle-padding-inline-start);position:relative;-webkit-user-select:none;user-select:none}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-form-toggle{--utrecht-form-toggle-background-color:ButtonFace;--utrecht-form-toggle-border-color:buttonborder;--utrecht-form-toggle-border-width:1px;--utrecht-form-toggle-border-radius:var(--utrecht-form-toggle-track-border-radius);--utrecht-form-toggle-thumb-background-color:ButtonText;--utrecht-form-toggle-thumb-disabled-background-color:GrayText;border-color:var(--utrecht-form-toggle-track-disabled-border-color,var(--utrecht-form-toggle-track-border-color));border-width:min(var(--utrecht-form-toggle-border-width,1px),1px)}}.utrecht-form-toggle--focus-visible,.utrecht-form-toggle--html-div:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-form-toggle--hover{background-color:var(--utrecht-form-toggle-hover-background-color,var(--utrecht-form-toggle-background-color));color:var(--utrecht-form-toggle-hover-color,var(--utrecht-form-toggle-color))}.utrecht-form-toggle--disabled,.utrecht-form-toggle--html-div:disabled{border-color:var(--utrecht-form-toggle-disabled-border-color,var(--utrecht-form-toggle-border-color,currentColor));border-style:var(--utrecht-form-toggle-disabled-border-style,var(--utrecht-form-toggle-border-style,solid));border-width:var(--utrecht-form-toggle-disabled-border-width,var(--utrecht-form-toggle-border-width,1px));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-form-toggle__thumb{background-color:var(--utrecht-form-toggle-thumb-background-color,currentColor);border-radius:var(--utrecht-form-toggle-thumb-border-radius,50%);box-shadow:var(--utrecht-form-toggle-thumb-box-shadow);margin-inline-end:var(--utrecht-form-toggle-thumb-margin-inline-end,0);margin-inline-start:var(--utrecht-form-toggle-thumb-margin-inline-start,0);min-block-size:var(--utrecht-form-toggle-thumb-min-inline-size,1.5em);min-inline-size:var(--utrecht-form-toggle-thumb-min-inline-size,1.5em);z-index:20}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:checked~.utrecht-form-toggle__track .utrecht-form-toggle__thumb,.utrecht-form-toggle__thumb--checked{margin-inline-start:auto}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:not(:checked)~.utrecht-form-toggle__track .utrecht-form-toggle__thumb,.utrecht-form-toggle__thumb--not-checked{margin-inline-end:auto}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:disabled~.utrecht-form-toggle__track .utrecht-form-toggle__thumb,.utrecht-form-toggle__thumb--disabled{background-color:var(--utrecht-form-toggle-thumb-disabled-background-color,#aaa);box-shadow:var(--utrecht-form-toggle-thumb-disabled-box-shadow,0)}.utrecht-form-toggle__track{align-items:center;background-color:var(--utrecht-form-toggle-accent-color);block-size:100%;border-radius:var(--utrecht-form-toggle-track-border-radius,var(--utrecht-form-toggle-border-radius));display:flex;inline-size:100%}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:checked~.utrecht-form-toggle__track,.utrecht-form-toggle__track--checked{background-color:var(--utrecht-form-toggle-checked-accent-color,var(--utrecht-form-toggle-accent-color))}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:disabled~.utrecht-form-toggle__track,.utrecht-form-toggle__track--disabled{background-color:var(--utrecht-form-toggle-background-disabled-background-color,#ddd);color:var(--utrecht-form-toggle-disabled-color,#000)}.utrecht-form-toggle__track--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox{clip:rect(1px,1px,1px,1px)!important;block-size:1px!important;border:0!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;inline-size:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important}.utrecht-form-toggle--html-checkbox .utrecht-form-toggle__checkbox:focus-visible~.utrecht-form-toggle__track{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}\";\nstyleInject(css_248z$F);\nvar _excluded$N = [\"checked\", \"disabled\", \"invalid\", \"id\", \"hidden\", \"required\", \"role\", \"tabIndex\", \"className\"];\nfunction ownKeys$O(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$O(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$O(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$O(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar FormToggle = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var checked = _ref.checked,\n disabled = _ref.disabled,\n invalid = _ref.invalid,\n id = _ref.id,\n hidden = _ref.hidden,\n required = _ref.required,\n role = _ref.role,\n tabIndex = _ref.tabIndex,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$N);\n return jsxs(\"div\", {\n className: clsx('utrecht-form-toggle', 'utrecht-form-toggle--html-checkbox', {\n 'utrecht-form-toggle--disabled': disabled,\n 'utrecht-form-toggle--invalid': invalid,\n 'utrecht-form-toggle--required': required\n }, className),\n hidden: hidden,\n children: [jsx(\"input\", _objectSpread$O({\n id: id,\n \"aria-invalid\": invalid || undefined,\n type: \"checkbox\",\n className: \"utrecht-form-toggle__checkbox\",\n defaultChecked: checked || undefined,\n disabled: disabled || undefined,\n required: required,\n ref: ref,\n role: role,\n tabIndex: tabIndex\n }, restProps)), jsx(\"label\", {\n htmlFor: id,\n className: \"utrecht-form-toggle__track\",\n children: jsx(\"div\", {\n className: \"utrecht-form-toggle__thumb\"\n })\n })]\n });\n});\nFormToggle.displayName = 'FormToggle';\nvar css_248z$E = \"@charset \\\"UTF-8\\\";.utrecht-html{--utrecht-space-around:1}.utrecht-html article{max-inline-size:var(--utrecht-article-max-inline-size)}.utrecht-html blockquote{--utrecht-document-color:var(--utrecht-blockquote-content-color,inherit);--utrecht-paragraph-font-size:var(--utrecht-blockquote-content-font-size,inherit);--utrecht-space-around:1;background-color:var(--utrecht-blockquote-background-color);color:var(--utrecht-blockquote-color);color:var(--utrecht-blockquote-content-color,inherit);font-family:var(--utrecht-document-font-family);font-size:var(--utrecht-blockquote-font-size);font-size:var(--utrecht-blockquote-content-font-size,inherit);font-style:var(--utrecht-blockquote-font-style);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-blockquote-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-blockquote-margin-block-start, 0));margin-inline-end:var(--utrecht-blockquote-margin-inline-end);margin-inline-start:var(--utrecht-blockquote-margin-inline-start);padding-block-end:var(--utrecht-blockquote-padding-block-end);padding-block-start:var(--utrecht-blockquote-padding-block-start);padding-inline-end:var(--utrecht-blockquote-padding-inline-end);padding-inline-start:var(--utrecht-blockquote-padding-inline-start)}.utrecht-html button,.utrecht-html input[type=button i],.utrecht-html input[type=reset i],.utrecht-html input[type=submit i]{--_utrecht-button-background-color:var(\\n --_utrecht-button-hint-background-color,var(--_utrecht-button-appearance-background-color,var(--utrecht-button-background-color))\\n );--_utrecht-button-color:var(\\n --_utrecht-button-hint-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-color))\\n );--_utrecht-button-border-color:var(\\n --_utrecht-button-hint-border-color,var(--_utrecht-button-appearance-border-color,var(--utrecht-button-border-color,transparent))\\n );--_utrecht-button-border-bottom-color:var(\\n --_utrecht-button-hint-border-bottom-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-border-bottom-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-border-bottom-color,var(--utrecht-button-border-color,transparent))\\n )\\n )\\n )\\n );--_utrecht-button-disabled-background-color:var(\\n --_utrecht-button-hint-disabled-background-color,var(\\n --_utrecht-button-appearance-disabled-background-color,var(--utrecht-button-disabled-background-color,var(--utrecht-button-background-color))\\n )\\n );--_utrecht-button-disabled-border-color:var(\\n --_utrecht-button-hint-disabled-border-color,var(\\n --_utrecht-button-appearance-disabled-border-color,var(--utrecht-button-disabled-border-color,var(--utrecht-button-border-color))\\n )\\n );--_utrecht-button-disabled-color:var(\\n --_utrecht-button-hint-disabled-color,var(--_utrecht-button-appearance-disabled-color,var(--utrecht-button-disabled-color,var(--utrecht-button-color)))\\n );--_utrecht-button-pressed-background-color:var(\\n --_utrecht-button-hint-pressed-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-pressed-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-pressed-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-border-color:var(\\n --_utrecht-button-hint-pressed-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-pressed-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-pressed-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-pressed-color:var(\\n --_utrecht-button-hint-pressed-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-pressed-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-pressed-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-focus-background-color:var(\\n --_utrecht-button-hint-focus-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-focus-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-focus-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-border-color:var(\\n --_utrecht-button-hint-focus-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-focus-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-focus-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-focus-color:var(\\n --_utrecht-button-hint-focus-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-focus-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-focus-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-hover-background-color:var(\\n --_utrecht-button-hint-hover-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-hover-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-hover-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-border-color:var(\\n --_utrecht-button-hint-hover-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-hover-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-hover-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-hover-color:var(\\n --_utrecht-button-hint-hover-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-hover-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-hover-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-active-background-color:var(\\n --_utrecht-button-hint-active-background-color,var(\\n --_utrecht-button-hint-background-color,var(\\n --_utrecht-button-appearance-active-background-color,var(\\n --_utrecht-button-appearance-background-color,var(--utrecht-button-active-background-color,var(--utrecht-button-background-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-border-color:var(\\n --_utrecht-button-hint-active-border-color,var(\\n --_utrecht-button-hint-border-color,var(\\n --_utrecht-button-appearance-active-border-color,var(\\n --_utrecht-button-appearance-border-color,var(--utrecht-button-active-border-color,var(--utrecht-button-border-color))\\n )\\n )\\n )\\n );--_utrecht-button-active-color:var(\\n --_utrecht-button-hint-active-color,var(\\n --_utrecht-button-hint-color,var(\\n --_utrecht-button-appearance-active-color,var(--_utrecht-button-appearance-color,var(--utrecht-button-active-color,var(--utrecht-button-color)))\\n )\\n )\\n );--_utrecht-button-border-width:var(--_utrecht-button-appearance-border-width,var(--utrecht-button-border-width,0));--_utrecht-button-border-block-end-width:var(\\n --utrecht-button-border-bottom-width,var(--_utrecht-button-border-width,0)\\n );--utrecht-icon-size:var(--utrecht-button-icon-size,1em);align-items:center;background-color:var(--_utrecht-button-background-color);border-block-end-color:var(--_utrecht-button-border-bottom-color);border-block-end-width:var(--_utrecht-button-border-block-end-width);border-color:var(--_utrecht-button-border-color);border-radius:var(--utrecht-button-border-radius);border-style:solid;border-width:var(--_utrecht-button-border-width);box-sizing:border-box;color:var(--_utrecht-button-color);cursor:var(--utrecht-action-activate-cursor,revert);display:inline-flex;font-family:var(--utrecht-button-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-button-font-size,var(--utrecht-document-font-family,inherit));font-weight:var(--_utrecht-button-appearance-font-weight,var(--utrecht-button-font-weight));gap:var(--utrecht-button-icon-gap);inline-size:var(--utrecht-button-inline-size,auto);justify-content:center;line-height:var(--utrecht-button-line-height);margin-block-end:var(--utrecht-button-margin-block-end);margin-block-start:var(--utrecht-button-margin-block-start);margin-inline-end:var(--utrecht-button-margin-inline-end);margin-inline-start:var(--utrecht-button-margin-inline-start);min-block-size:var(--utrecht-button-min-block-size,44px);min-inline-size:var(--utrecht-button-min-inline-size,44px);padding-block-end:var(--utrecht-button-padding-block-end);padding-block-start:var(--utrecht-button-padding-block-start);padding-inline-end:var(--utrecht-button-padding-inline-end);padding-inline-start:var(--utrecht-button-padding-inline-start);text-transform:var(--utrecht-button-text-transform);-webkit-user-select:none;user-select:none}.utrecht-html button[type=submit i],.utrecht-html input[type=submit i]{cursor:var(--utrecht-action-submit-cursor,revert)}.utrecht-html button:disabled,.utrecht-html button[aria-disabled=true]{background-color:var(--_utrecht-button-disabled-background-color);border-color:var(--_utrecht-button-disabled-border-color);color:var(--_utrecht-button-disabled-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html button:disabled[aria-busy=true],.utrecht-html button[aria-busy=true],.utrecht-html button[aria-disabled=true][aria-busy=true]{cursor:var(--utrecht-action-busy-cursor,wait)}.utrecht-html button:active:not([aria-disabled=true],:disabled){background-color:var(--_utrecht-button-active-background-color);border-color:var(--_utrecht-button-active-border-color);color:var(--_utrecht-button-active-color)}.utrecht-html button:hover:not([aria-disabled=true],:disabled){background-color:var(--_utrecht-button-hover-background-color);border-color:var(--_utrecht-button-hover-border-color);color:var(--_utrecht-button-hover-color);scale:var(--utrecht-button-hover-scale,1)}.utrecht-html button:focus:not([aria-disabled=true],:disabled){background-color:var(--_utrecht-button-focus-background-color);border-color:var(--_utrecht-button-focus-border-color);color:var(--_utrecht-button-focus-color);scale:var(--utrecht-button-focus-scale,1)}.utrecht-html button:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input[type=checkbox i]{cursor:var(--utrecht-action-activate-cursor,revert);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-start:0;-webkit-user-select:none;user-select:none}.utrecht-html input[type=checkbox i]:disabled{cursor:var(--utrecht-action-disabled-cursor,revert)}.utrecht-html input[type=checkbox i]:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input[type=checkbox i]:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html body{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;background-color:var(--utrecht-document-background-color,inherit);color:var(--utrecht-document-color,inherit);font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-document-font-size,inherit);font-weight:var(--utrecht-document-font-weight,inherit);line-height:var(--utrecht-document-line-height,inherit);text-rendering:optimizeLegibility}.utrecht-html body :lang(ar){letter-spacing:0!important}.utrecht-html code{background-color:var(--utrecht-code-background-color);color:var(--utrecht-code-color);font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-variant-ligatures:none;line-height:var(--utrecht-code-line-height)}.utrecht-html em{font-style:var(--utrecht-emphasis-stressed-font-style,italic)}.utrecht-html strong{font-weight:var(--utrecht-emphasis-strong-font-weight,bold)}.utrecht-html fieldset{--utrecht-space-around:1;all:revert;border:0;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-margin-block-start, 0));margin-inline-end:0;margin-inline-start:0;min-inline-size:0;padding-block-end:0;padding-block-start:.01em;padding-inline-end:0;padding-inline-start:0}.utrecht-html figure{margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-figure-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-figure-margin-block-start, 0))}.utrecht-html figcaption{color:var(--utrecht-figure-caption-color);font-size:var(--utrecht-figure-caption-font-size);line-height:var(--utrecht-figure-caption-line-height)}.utrecht-html form{max-inline-size:var(--utrecht-form-max-inline-size)}.utrecht-html legend{break-inside:avoid;color:var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit));display:table;font-family:var(--utrecht-form-fieldset-legend-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-form-fieldset-legend-font-size);font-weight:var(--utrecht-form-fieldset-legend-font-weight);inline-size:100%;line-height:var(--utrecht-form-fieldset-legend-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-legend-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-form-fieldset-legend-margin-block-start, 0));padding-inline-end:0;padding-inline-start:0;page-break-after:avoid;page-break-inside:avoid}.utrecht-html fieldset:disabled>legend{color:var(--utrecht-form-fieldset-legend-disabled-color,var(--utrecht-form-fieldset-legend-color,var(--utrecht-document-color,inherit)))}.utrecht-html label{color:var(--utrecht-form-label-color);font-size:var(--utrecht-form-label-font-size);font-weight:var(--utrecht-form-label-font-weight)}.utrecht-html input[type=checkbox i]~label{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-checkbox-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-html input[type=radio i]~label{color:var(--utrecht-form-label-checkbox-color,var(--utrecht-form-label-color));cursor:var(--utrecht-action-activate-cursor,revert);font-weight:var(--utrecht-form-label-radio-font-weight,var(--utrecht-form-label-font-weight))}.utrecht-html mark{background-color:var(--utrecht-mark-background-color,revert);color:var(--utrecht-mark-color,revert)}@media print{.utrecht-html mark{outline-color:currentColor;outline-style:dotted;outline-width:.1em}}@media screen and (-ms-high-contrast:active){.utrecht-html mark{background-color:Highlight;color:HighlightText}}.utrecht-html h1{color:var(--utrecht-heading-1-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-1-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-1-font-size,revert);font-weight:var(--utrecht-heading-1-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-1-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-start, 0))}.utrecht-html h1,.utrecht-html h2{--utrecht-space-around:1;break-inside:avoid-column;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h2{color:var(--utrecht-heading-2-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-2-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-2-font-size,revert);font-weight:var(--utrecht-heading-2-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-2-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-start, 0))}.utrecht-html h3{color:var(--utrecht-heading-3-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-3-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-3-font-size,revert);font-weight:var(--utrecht-heading-3-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-3-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-start, 0))}.utrecht-html h3,.utrecht-html h4{--utrecht-space-around:1;break-inside:avoid-column;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h4{color:var(--utrecht-heading-4-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-4-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-4-font-size,revert);font-weight:var(--utrecht-heading-4-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-4-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-start, 0))}.utrecht-html h5{color:var(--utrecht-heading-5-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-5-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-5-font-size,revert);font-weight:var(--utrecht-heading-5-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-5-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-start, 0))}.utrecht-html h5,.utrecht-html h6{--utrecht-space-around:1;break-inside:avoid-column;page-break-after:avoid;page-break-inside:avoid}.utrecht-html h6{color:var(--utrecht-heading-6-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-6-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-6-font-size,revert);font-weight:var(--utrecht-heading-6-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-6-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-start, 0))}.utrecht-html hgroup{--utrecht-pre-heading-order:-1;--utrecht-space-around:1;display:flex;flex-direction:column;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-start, 0))}.utrecht-html hgroup>*{--utrecht-space-around:0}.utrecht-html a{--utrecht-icon-size:var(--utrecht-link-icon-size,1em);color:var(--_utrecht-link-state-color,var(--utrecht-link-color,var(--_utrecht-link-forced-colors-color)))}.utrecht-html a:visited{--_utrecht-link-forced-colors-color:visitedtext;--_utrecht-link-state-color:var(--utrecht-link-visited-color)}.utrecht-html a:hover{--_utrecht-link-forced-colors-color:linktext;--_utrecht-link-state-color:var(--utrecht-link-hover-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-hover-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-hover-text-decoration-thickness);text-decoration-skip:none;text-decoration-skip-ink:none}.utrecht-html a:active{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-html a:focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-link-focus-background-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);text-decoration-skip-ink:none;z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-html a:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html a[href^=\\\"tel:\\\" i]{white-space:nowrap}.utrecht-html ol{--utrecht-space-around:1;box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit)));line-height:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit)));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-end, var(--utrecht-unordered-list-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-start, var(--utrecht-unordered-list-margin-block-start, 0)));padding-inline-start:var(--utrecht-ordered-list-padding-inline-start,var(--utrecht-unordered-list-padding-inline-start,2ch));text-align:start}.utrecht-html ol>li{margin-block-end:var(--utrecht-ordered-list-item-margin-block-end,var(--utrecht-unordered-list-item-margin-block-end));margin-block-start:var(--utrecht-ordered-list-item-margin-block-start,var(--utrecht-unordered-list-item-margin-block-start));padding-inline-start:var(--utrecht-ordered-list-item-padding-inline-start,var(--utrecht-unordered-list-item-padding-inline-start,1ch))}.utrecht-html ol:lang(ar){list-style:arabic-indic}.utrecht-html p{color:var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit));font-family:var(--utrecht-paragraph-font-family,var(--utrecht-document-font-family,inherit));font-size:var(--utrecht-paragraph-font-size,var(--utrecht-document-font-size,inherit));font-weight:var(--utrecht-paragraph-font-weight,inherit);line-height:var(--utrecht-paragraph-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-start, 0))}.utrecht-html p.lead{color:var(--utrecht-paragraph-lead-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-lead-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-lead-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-lead-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-html *~p{--utrecht-space-around:1}.utrecht-html p:has(>small:only-child){color:var(--utrecht-paragraph-small-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-small-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-small-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-small-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-html p>small:only-child{font-size:inherit}.utrecht-html pre:has(>code:only-child){--utrecht-code-color:var(--utrecht-code-block-color,inherit);--utrecht-code-background-color:var(--utrecht-code-block-background-color,inherit);--utrecht-code-font-weight:var(--utrecht-code-block-font-weight,inherit);--utrecht-code-font-size:var(--utrecht-code-block-font-size,inherit);--utrecht-code-font-family:var(--utrecht-code-block-font-family,monospace);background-color:var(--utrecht-code-background-color);background-color:var(--utrecht-code-block-background-color);color:var(--utrecht-code-color);display:block;font-family:var(--utrecht-code-font-family,monospace),monospace;font-size:var(--utrecht-code-font-size);font-size:var(--utrecht-code-block-font-size,var(--utrecht-code-font-size));font-variant-ligatures:none;line-height:var(--utrecht-code-line-height);line-height:var(--utrecht-code-block-line-height,var(--utrecht-code-line-height));margin-block-end:var(--utrecht-code-block-margin-block-end);margin-block-start:var(--utrecht-code-block-margin-block-start);margin-inline-end:var(--utrecht-code-block-margin-inline-end);margin-inline-start:var(--utrecht-code-block-margin-inline-start);padding-block-end:var(--utrecht-code-block-padding-block-end);padding-block-start:var(--utrecht-code-block-padding-block-start);padding-inline-end:var(--utrecht-code-block-padding-inline-end);padding-inline-start:var(--utrecht-code-block-padding-inline-start);white-space:pre}.utrecht-html pre:has(>code:only-child)>code{display:contents}.utrecht-html input[type=radio i]{--_utrecht-radio-button-background-color:var(\\n --_utrecht-radio-button-interactive-background-color,var(--_utrecht-radio-button-state-background-color,var(--utrecht-radio-button-background-color))\\n );--_utrecht-radio-button-border-color:var(\\n --_utrecht-radio-button-interactive-border-color,var(--_utrecht-radio-button-state-border-color,var(--utrecht-radio-button-border-color,currentColor))\\n );--_utrecht-radio-button-border-width:var(\\n --_utrecht-radio-button-interactive-border-width,var(--_utrecht-radio-button-state-border-width,var(--utrecht-radio-button-border-width))\\n );--_utrecht-radio-button-color:var(\\n --_utrecht-radio-button-interactive-color,var(--_utrecht-radio-button-state-color,var(--utrecht-radio-button-color,currentColor))\\n );--_utrecht-radio-button-icon-size:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--_utrecht-radio-button-background-color);background-image:radial-gradient(circle,var(--_utrecht-radio-button-color,transparent) calc(var(--_utrecht-radio-button-icon-size, 50%) - 5%),var(--_utrecht-radio-button-background-color,currentColor) var(--_utrecht-radio-button-icon-size,50%));background-position:50%;background-repeat:no-repeat;background-size:contain;block-size:var(--utrecht-radio-button-size,1em);border-color:var(--_utrecht-radio-button-border-color);border-radius:50%;border-style:solid;border-width:var(--_utrecht-radio-button-border-width);cursor:var(--utrecht-action-activate-cursor,revert);inline-size:var(--utrecht-radio-button-size,1em);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-end:var(--utrecht-radio-button-margin-inline-end);margin-inline-start:0;min-block-size:24px;min-inline-size:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:top}.utrecht-html input[type=radio i]:checked{--_utrecht-radio-button-icon-size:var(--utrecht-radio-button-icon-size,50%);--_utrecht-radio-button-state-background-color:var(--utrecht-radio-button-checked-background-color);--_utrecht-radio-button-state-border-color:var(--utrecht-radio-button-checked-border-color);--_utrecht-radio-button-state-border-width:var(--utrecht-radio-button-checked-border-width);--_utrecht-radio-button-state-color:var(--utrecht-radio-button-checked-color);--_utrecht-radio-button-state-active-background-color:var(--utrecht-radio-button-checked-active-background-color);--_utrecht-radio-button-state-active-border-color:var(--utrecht-radio-button-checked-active-border-color);--_utrecht-radio-button-state-active-border-width:var(--utrecht-radio-button-checked-active-border-width);--_utrecht-radio-button-state-active-color:var(--utrecht-radio-button-checked-active-color);--_utrecht-radio-button-state-focus-background-color:var(--utrecht-radio-button-checked-focus-background-color);--_utrecht-radio-button-state-focus-border-color:var(--utrecht-radio-button-checked-focus-border-color);--_utrecht-radio-button-state-focus-border-width:var(--utrecht-radio-button-checked-focus-border-width);--_utrecht-radio-button-state-focus-color:var(--utrecht-radio-button-checked-focus-color);--_utrecht-radio-button-state-hover-background-color:var(--utrecht-radio-button-checked-hover-background-color);--_utrecht-radio-button-state-hover-border-color:var(--utrecht-radio-button-checked-hover-border-color);--_utrecht-radio-button-state-hover-border-width:var(--utrecht-radio-button-checked-hover-border-width);--_utrecht-radio-button-state-hover-color:var(--utrecht-radio-button-checked-hover-color)}.utrecht-html input[type=radio i]:disabled{--_utrecht-radio-button-background-color:var(--utrecht-radio-button-disabled-background-color);--_utrecht-radio-button-border-color:var(--utrecht-radio-button-disabled-border-color);--_utrecht-radio-button-border-width:var(--utrecht-radio-button-disabled-border-width);--_utrecht-radio-button-color:var(--utrecht-radio-button-disabled-color);--_utrecht-radio-button-focus-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-focus-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-focus-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-focus-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-active-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-active-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-active-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-active-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-hover-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-hover-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-hover-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-hover-color:var(--_utrecht-radio-button-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html input[type=radio i]:invalid,.utrecht-html input[type=radio i][aria-invalid=true]{border-color:var(--utrecht-radio-button-invalid-border-color,var(--utrecht-radio-button-border-color));border-width:var(--utrecht-radio-button-invalid-border-width,var(--utrecht-radio-button-border-width));color:var(--utrecht-radio-button-invalid-color,var(--utrecht-radio-button-color))}.utrecht-html input[type=radio i]:focus:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --utrecht-radio-button-focus-background-color,var(--utrecht-radio-button-focus-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --utrecht-radio-button-focus-border-color,var(--utrecht-radio-button-focus-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --utrecht-radio-button-focus-border-width,var(--utrecht-radio-button-focus-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --utrecht-radio-button-focus-color,var(--utrecht-radio-button-focus-color)\\n )}.utrecht-html input[type=radio i]:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input[type=radio i]:hover:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-hover-background-color,var(--utrecht-radio-button-hover-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-hover-border-color,var(--utrecht-radio-button-hover-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-hover-border-width,var(--utrecht-radio-button-hover-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-hover-color,var(--utrecht-radio-button-hover-color)\\n )}.utrecht-html input[type=radio i]:active:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-active-background-color,var(--utrecht-radio-button-active-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-active-border-color,var(--utrecht-radio-button-active-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-active-border-width,var(--utrecht-radio-button-active-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-active-color,var(--utrecht-radio-button-active-color)\\n )}.utrecht-html select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:var(--utrecht-select-background-color,var(--utrecht-form-control-background-color));background-image:var(--utrecht-select-background-image);background-position:100%;background-repeat:no-repeat;background-size:1.4em;border-block-end-width:var(--utrecht-select-border-block-end-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width)));border-block-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-color:var(--utrecht-select-border-color,var(--utrecht-form-control-border-color));border-inline-end-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-inline-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-radius:var(--utrecht-select-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;color:var(--utrecht-select-color,var(--utrecht-form-control-color));font-family:var(--utrecht-select-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-select-font-size,var(--utrecht-form-control-font-size));inline-size:100%;max-inline-size:var(--utrecht-select-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-select-padding-block-end,var(--utrecht-form-control-padding-block-end));padding-block-start:var(--utrecht-select-padding-block-start,var(--utrecht-form-control-padding-block-start));padding-inline-end:var(--utrecht-select-padding-inline-end,var(--utrecht-form-control-padding-inline-end));padding-inline-start:var(--utrecht-select-padding-inline-start,var(--utrecht-form-control-padding-inline-start))}.utrecht-html select:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-select-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-select-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html select:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html select:disabled{background-color:var(--utrecht-select-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html select[aria-invalid=true]{--_utrecht-select-border-width:var(\\n --utrecht-select-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-select-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-select-border-width);border-block-end-width:var(--utrecht-select-invalid-border-block-end-width,var(--utrecht-form-control-invalid-border-block-end-width,var(--utrecht-select-border-block-end-width,var(--utrecht-form-control-border-block-end-width,var(--_utrecht-select-border-width)))));border-color:var(--utrecht-select-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))))}.utrecht-html hr{border-color:var(--utrecht-separator-color);border-width:0 0 var(--utrecht-separator-block-size) 0;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-start, 0))}.utrecht-html hr,.utrecht-html table{--utrecht-space-around:1;border-style:solid}.utrecht-html table{border-collapse:separate;border-color:var(--utrecht-table-border-color,0);border-spacing:0;border-width:var(--utrecht-table-border-width,0);font-family:var(--utrecht-table-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-table-font-size,inherit);inline-size:100%;line-height:var(--utrecht-table-line-height,inherit);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-start, 0))}.utrecht-html caption{break-inside:avoid;color:var(--utrecht-table-caption-color);font-family:var(--utrecht-table-caption-font-family);font-size:var(--utrecht-table-caption-font-size);font-weight:var(--utrecht-table-caption-font-weight);line-height:var(--utrecht-table-caption-line-height);margin-block-end:var(--utrecht-table-caption-margin-block-end);page-break-after:avoid;text-align:var(--utrecht-table-caption-text-align,center)}.utrecht-html thead{--_utrecht-table-header-cell-vertical-align:bottom;--_utrecht-table-header-cell-z-index:8;background-color:var(--utrecht-table-header-background-color);break-inside:avoid;color:var(--utrecht-table-header-color);font-weight:var(--utrecht-table-header-font-weight);page-break-inside:avoid;text-transform:var(--utrecht-table-header-text-transform)}.utrecht-html tbody{--_utrecht-table-header-cell-z-index:2}.utrecht-html th{color:var(--utrecht-table-header-cell-color);font-size:var(--utrecht-table-header-cell-font-size);font-weight:var(--utrecht-table-header-cell-font-weight,bold);text-transform:var(--utrecht-table-header-cell-text-transform);vertical-align:var(--_utrecht-table-header-cell-vertical-align,top);z-index:var(--_utrecht-table-header-cell-z-index)}.utrecht-html td,.utrecht-html th{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start}.utrecht-html td,.utrecht-html th{border-block-end-color:var(--utrecht-table-row-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-row-border-block-end-width,0);vertical-align:top}.utrecht-html td:first-child,.utrecht-html th:first-child{padding-inline-start:var(--utrecht-table-row-padding-inline-start,var(--utrecht-table-cell-padding-inline-start,0))}.utrecht-html td:last-child,.utrecht-html th:last-child{padding-inline-end:var(--utrecht-table-row-padding-inline-end,var(--utrecht-table-cell-padding-inline-end,0))}.utrecht-html thead tr:last-child th{border-block-end-color:var(--utrecht-table-header-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-header-border-block-end-width,0)}.utrecht-html td.numeric,.utrecht-html tfoot>tr>th.numeric,.utrecht-html th[scope=column].numeric,.utrecht-html thead>tr>th.numeric{--_utrecht-table-cell-text-align:right;text-align:var(--_utrecht-table-cell-text-align)}.utrecht-html td.numeric{font-variant-numeric:lining-nums tabular-nums}.utrecht-html table.alternate-row-color>tr:nth-child(2n)>td,.utrecht-html table.alternate-row-color>tr:nth-child(2n)>th{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-html table.alternate-row-color>tr:nth-child(odd)>td,.utrecht-html table.alternate-row-color>tr:nth-child(odd)>th{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-html table.alternate-row-color>tbody>tr:nth-child(2n)>td,.utrecht-html table.alternate-row-color>tbody>tr:nth-child(2n)>th{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-html table.alternate-row-color>tbody>tr:nth-child(odd)>td,.utrecht-html table.alternate-row-color>tbody>tr:nth-child(odd)>th{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-html textarea{background-color:var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textarea-border-bottom-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textarea-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textarea-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textarea-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textarea-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textarea-line-height,initial);max-inline-size:var(--utrecht-textarea-max-inline-size,var(--utrecht-form-control-max-inline-size));min-block-size:var(--utrecht-textarea-min-block-size);padding-block-end:var(--utrecht-textarea-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textarea-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textarea-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textarea-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial));resize:vertical;resize:block}.utrecht-html textarea:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textarea-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textarea-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html textarea:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html textarea:invalid,.utrecht-html textarea[aria-invalid=true]{--_utrecht-textarea-border-width:var(\\n --utrecht-textarea-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textarea-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textarea-border-width);border-block-end-width:var(--utrecht-textarea-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textarea-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textarea-border-width)))));border-color:var(--utrecht-textarea-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-html textarea:read-only{background-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textarea-border,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textarea-border,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-html textarea:disabled{background-color:var(--utrecht-textarea-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html textarea::placeholder{color:var(--utrecht-textarea-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-html input:not([type]),.utrecht-html input[type=date i],.utrecht-html input[type=datetime-local i],.utrecht-html input[type=email i],.utrecht-html input[type=month i],.utrecht-html input[type=number i],.utrecht-html input[type=password i],.utrecht-html input[type=search i],.utrecht-html input[type=tel i],.utrecht-html input[type=text i],.utrecht-html input[type=time i],.utrecht-html input[type=url i],.utrecht-html input[type=week i]{background-color:var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textbox-border-bottom-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textbox-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textbox-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textbox-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textbox-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textbox-line-height,var(--utrecht-form-control-line-height,initial));max-inline-size:var(--utrecht-textbox-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-textbox-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textbox-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textbox-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textbox-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial))}.utrecht-html input:not([type]):focus,.utrecht-html input[type=date i]:focus,.utrecht-html input[type=datetime-local i]:focus,.utrecht-html input[type=email i]:focus,.utrecht-html input[type=month i]:focus,.utrecht-html input[type=number i]:focus,.utrecht-html input[type=password i]:focus,.utrecht-html input[type=search i]:focus,.utrecht-html input[type=tel i]:focus,.utrecht-html input[type=text i]:focus,.utrecht-html input[type=time i]:focus,.utrecht-html input[type=url i]:focus,.utrecht-html input[type=week i]:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textbox-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textbox-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-html input:not([type]):focus:not(:focus-visible),.utrecht-html input[type=date i]:focus:not(:focus-visible),.utrecht-html input[type=datetime-local i]:focus:not(:focus-visible),.utrecht-html input[type=email i]:focus:not(:focus-visible),.utrecht-html input[type=month i]:focus:not(:focus-visible),.utrecht-html input[type=number i]:focus:not(:focus-visible),.utrecht-html input[type=password i]:focus:not(:focus-visible),.utrecht-html input[type=search i]:focus:not(:focus-visible),.utrecht-html input[type=tel i]:focus:not(:focus-visible),.utrecht-html input[type=text i]:focus:not(:focus-visible),.utrecht-html input[type=time i]:focus:not(:focus-visible),.utrecht-html input[type=url i]:focus:not(:focus-visible),.utrecht-html input[type=week i]:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-html input:not([type]):invalid,.utrecht-html input:not([type])[aria-invalid=true],.utrecht-html input[type=date i]:invalid,.utrecht-html input[type=date i][aria-invalid=true],.utrecht-html input[type=datetime-local i]:invalid,.utrecht-html input[type=datetime-local i][aria-invalid=true],.utrecht-html input[type=email i]:invalid,.utrecht-html input[type=email i][aria-invalid=true],.utrecht-html input[type=month i]:invalid,.utrecht-html input[type=month i][aria-invalid=true],.utrecht-html input[type=number i]:invalid,.utrecht-html input[type=number i][aria-invalid=true],.utrecht-html input[type=password i]:invalid,.utrecht-html input[type=password i][aria-invalid=true],.utrecht-html input[type=search i]:invalid,.utrecht-html input[type=search i][aria-invalid=true],.utrecht-html input[type=tel i]:invalid,.utrecht-html input[type=tel i][aria-invalid=true],.utrecht-html input[type=text i]:invalid,.utrecht-html input[type=text i][aria-invalid=true],.utrecht-html input[type=time i]:invalid,.utrecht-html input[type=time i][aria-invalid=true],.utrecht-html input[type=url i]:invalid,.utrecht-html input[type=url i][aria-invalid=true],.utrecht-html input[type=week i]:invalid,.utrecht-html input[type=week i][aria-invalid=true]{--_utrecht-textbox-border-width:var(\\n --utrecht-textbox-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textbox-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textbox-border-width);border-block-end-width:var(--utrecht-textbox-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textbox-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textbox-border-width)))));border-color:var(--utrecht-textbox-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-html input:not([type]):read-only,.utrecht-html input[type=date i]:read-only,.utrecht-html input[type=datetime-local i]:read-only,.utrecht-html input[type=email i]:read-only,.utrecht-html input[type=month i]:read-only,.utrecht-html input[type=number i]:read-only,.utrecht-html input[type=password i]:read-only,.utrecht-html input[type=search i]:read-only,.utrecht-html input[type=tel i]:read-only,.utrecht-html input[type=text i]:read-only,.utrecht-html input[type=time i]:read-only,.utrecht-html input[type=url i]:read-only,.utrecht-html input[type=week i]:read-only{background-color:var(--utrecht-textbox-read-only-background-color,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-read-only-border-color,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-html input:not([type]):disabled,.utrecht-html input[type=date i]:disabled,.utrecht-html input[type=datetime-local i]:disabled,.utrecht-html input[type=email i]:disabled,.utrecht-html input[type=month i]:disabled,.utrecht-html input[type=number i]:disabled,.utrecht-html input[type=password i]:disabled,.utrecht-html input[type=search i]:disabled,.utrecht-html input[type=tel i]:disabled,.utrecht-html input[type=text i]:disabled,.utrecht-html input[type=time i]:disabled,.utrecht-html input[type=url i]:disabled,.utrecht-html input[type=week i]:disabled{background-color:var(--utrecht-textbox-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-html input:not([type])::placeholder,.utrecht-html input[type=date i]::placeholder,.utrecht-html input[type=datetime-local i]::placeholder,.utrecht-html input[type=email i]::placeholder,.utrecht-html input[type=month i]::placeholder,.utrecht-html input[type=number i]::placeholder,.utrecht-html input[type=password i]::placeholder,.utrecht-html input[type=search i]::placeholder,.utrecht-html input[type=tel i]::placeholder,.utrecht-html input[type=text i]::placeholder,.utrecht-html input[type=time i]::placeholder,.utrecht-html input[type=url i]::placeholder,.utrecht-html input[type=week i]::placeholder{color:var(--utrecht-textbox-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-html input[autocomplete~=current-password i],.utrecht-html input[autocomplete~=new-password i],.utrecht-html input[type=password i]{font-variant-ligatures:none;font-variant-numeric:slashed-zero}.utrecht-html input[autocomplete~=bday i],.utrecht-html input[autocomplete~=bday-day i],.utrecht-html input[autocomplete~=bday-month i],.utrecht-html input[autocomplete~=bday-year i],.utrecht-html input[autocomplete~=cc-csc i],.utrecht-html input[autocomplete~=cc-exp i],.utrecht-html input[autocomplete~=cc-exp-month i],.utrecht-html input[autocomplete~=cc-exp-year i],.utrecht-html input[autocomplete~=cc-number i],.utrecht-html input[autocomplete~=one-time-code i],.utrecht-html input[autocomplete~=postal-code i],.utrecht-html input[autocomplete~=tel i],.utrecht-html input[autocomplete~=tel-area-code i],.utrecht-html input[autocomplete~=tel-country-code i],.utrecht-html input[autocomplete~=tel-extension i],.utrecht-html input[autocomplete~=tel-local i],.utrecht-html input[autocomplete~=tel-national i],.utrecht-html input[autocomplete~=transaction-amount i],.utrecht-html input[inputmode=decimal i],.utrecht-html input[inputmode=numeric i],.utrecht-html input[inputmode=tel i],.utrecht-html input[type=number i],.utrecht-html input[type=tel i]{-moz-appearance:textfield;font-variant-numeric:lining-nums tabular-nums}.utrecht-html input[inputmode=email i],.utrecht-html input[inputmode=url i],.utrecht-html input[type=email i],.utrecht-html input[type=url i]{font-variant-ligatures:none}.utrecht-html ul{--utrecht-space-around:1;box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit));line-height:var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-end, var(--utrecht-paragraph-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-start, var(--utrecht-paragraph-margin-block-start, 0)));padding-inline-start:var(--utrecht-unordered-list-padding-inline-start,2ch);text-align:start}.utrecht-html ul>li{margin-block-end:var(--utrecht-unordered-list-item-margin-block-end);margin-block-start:var(--utrecht-unordered-list-item-margin-block-start);padding-inline-start:var(--utrecht-unordered-list-item-padding-inline-start,1ch)}.utrecht-html ul>li::marker{color:var(--utrecht-unordered-list-marker-color);content:\\\"ā—\\\"}\";\nstyleInject(css_248z$E);\nvar _excluded$M = [\"children\", \"className\"];\nfunction ownKeys$N(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$N(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$N(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$N(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar HTMLContent = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$M);\n return jsx(\"div\", _objectSpread$N(_objectSpread$N({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-html', className),\n children: children\n }));\n});\nHTMLContent.displayName = 'HTMLContent';\nvar css_248z$D = \".utrecht-heading-1{break-inside:avoid-column;color:var(--utrecht-heading-1-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-1-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-1-font-size,revert);font-weight:var(--utrecht-heading-1-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-1-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-1-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-1--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$D);\nvar css_248z$C = \".utrecht-heading-2{break-inside:avoid-column;color:var(--utrecht-heading-2-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-2-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-2-font-size,revert);font-weight:var(--utrecht-heading-2-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-2-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-2-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-2--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$C);\nvar css_248z$B = \".utrecht-heading-3{break-inside:avoid-column;color:var(--utrecht-heading-3-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-3-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-3-font-size,revert);font-weight:var(--utrecht-heading-3-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-3-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-3-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-3--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$B);\nvar css_248z$A = \".utrecht-heading-4{break-inside:avoid-column;color:var(--utrecht-heading-4-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-4-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-4-font-size,revert);font-weight:var(--utrecht-heading-4-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-4-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-4-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-4--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$A);\nvar css_248z$z = \".utrecht-heading-5{break-inside:avoid-column;color:var(--utrecht-heading-5-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-5-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-5-font-size,revert);font-weight:var(--utrecht-heading-5-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-5-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-5-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-5--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$z);\nvar css_248z$y = \".utrecht-heading-6{break-inside:avoid-column;color:var(--utrecht-heading-6-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-heading-6-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-heading-6-font-size,revert);font-weight:var(--utrecht-heading-6-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-heading-6-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-6-margin-block-start, 0));page-break-after:avoid;page-break-inside:avoid}.utrecht-heading-6--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$y);\nvar _excluded$L = [\"children\", \"className\"];\nfunction ownKeys$M(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$M(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading1 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$L);\n return jsx(\"h1\", _objectSpread$M(_objectSpread$M({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-1', className),\n children: children\n }));\n});\nHeading1.displayName = 'Heading1';\nvar _excluded$K = [\"children\", \"className\"];\nfunction ownKeys$L(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$L(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$L(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$L(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading2 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$K);\n return jsx(\"h2\", _objectSpread$L(_objectSpread$L({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-2', className),\n children: children\n }));\n});\nHeading2.displayName = 'Heading2';\nvar _excluded$J = [\"children\", \"className\"];\nfunction ownKeys$K(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$K(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading3 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$J);\n return jsx(\"h3\", _objectSpread$K(_objectSpread$K({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-3', className),\n children: children\n }));\n});\nHeading3.displayName = 'Heading3';\nvar _excluded$I = [\"children\", \"className\"];\nfunction ownKeys$J(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$J(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$J(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$J(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading4 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$I);\n return jsx(\"h4\", _objectSpread$J(_objectSpread$J({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-4', className),\n children: children\n }));\n});\nHeading4.displayName = 'Heading4';\nvar _excluded$H = [\"children\", \"className\"];\nfunction ownKeys$I(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$I(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading5 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$H);\n return jsx(\"h5\", _objectSpread$I(_objectSpread$I({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-5', className),\n children: children\n }));\n});\nHeading5.displayName = 'Heading5';\nvar _excluded$G = [\"children\", \"className\"];\nfunction ownKeys$H(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$H(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$H(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$H(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Heading6 = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$G);\n return jsx(\"h6\", _objectSpread$H(_objectSpread$H({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-6', className),\n children: children\n }));\n});\nHeading6.displayName = 'Heading6';\nvar css_248z$x = \".utrecht-heading-group{--utrecht-pre-heading-order:-1;display:flex;flex-direction:column;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-heading-group-margin-block-start, 0))}.utrecht-heading-group>*{--utrecht-space-around:0}\";\nstyleInject(css_248z$x);\nvar _excluded$F = [\"children\", \"className\"];\nfunction ownKeys$G(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$G(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$G(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$G(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar HeadingGroup = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$F);\n return jsx(\"hgroup\", _objectSpread$G(_objectSpread$G({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-heading-group', className),\n children: children\n }));\n});\nHeadingGroup.displayName = 'HeadingGroup';\nvar css_248z$w = \".utrecht-iban-data{font-variant-numeric:lining-nums slashed-zero tabular-nums;white-space:nowrap}\";\nstyleInject(css_248z$w);\nvar _excluded$E = [\"children\", \"value\", \"className\"];\nfunction ownKeys$F(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$F(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n/* Exported only for unit tests, not part of the public API */\nvar normalizeIBAN = function normalizeIBAN(iban) {\n return iban\n // Remove whitespace and word separator characters such as the dash\n .replace(/[\\s+\\W]+/g, '').toUpperCase();\n};\n/* Exported only for unit tests, not part of the public API */\nvar formatIBAN = function formatIBAN(normalizedIBAN) {\n return normalizedIBAN\n // Add a space after every four characters, except at the end\n .replace(/(.{4})(?!$)/g, '$1 ');\n};\nvar IBANData = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n value = _ref.value,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$E);\n var normalized = normalizeIBAN(value);\n var formatted = formatIBAN(normalized);\n console.log({\n value: value,\n normalized: normalized,\n formatted: formatted\n });\n return jsx(\"data\", _objectSpread$F(_objectSpread$F({}, restProps), {}, {\n ref: ref,\n value: normalized,\n className: clsx('utrecht-iban-data', className),\n translate: \"no\",\n children: children || formatted\n }));\n});\nIBANData.displayName = 'IBANData';\nvar css_248z$v = \".utrecht-icon{block-size:var(--utrecht-icon-size);color:var(--utrecht-icon-color);display:inline-block;font-size:var(--utrecht-icon-size);inline-size:var(--utrecht-icon-size);inset-block-start:var(--utrecht-icon-inset-block-start,0);position:relative}.utrecht-icon svg{height:100%;pointer-events:none;width:100%}\";\nstyleInject(css_248z$v);\nvar _excluded$D = [\"children\", \"className\"];\nfunction ownKeys$E(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$E(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$E(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$E(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Icon = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$D);\n return jsx(\"span\", _objectSpread$E(_objectSpread$E({\n \"aria-hidden\": \"true\",\n ref: ref,\n className: clsx('utrecht-icon', className)\n }, restProps), {}, {\n children: children\n }));\n});\nIcon.displayName = 'Icon';\nvar css_248z$u = \".utrecht-index-char-nav{--utrecht-button-padding-inline-start:1ch;--utrecht-button-padding-inline-end:1ch;display:flex;flex-wrap:wrap;gap:var(--utrecht-index-char-nav-gap);margin-block-end:var(--utrecht-index-char-nav-margin-block-end);margin-block-start:var(--utrecht-index-char-nav-margin-block-start)}.utrecht-index-char-nav__link--current{--utrecht-button-primary-action-font-weight:var(--utrecht-index-char-nav-link-current-font-weight);--utrecht-button-link-primary-action-font-weight:var(--utrecht-index-char-nav-link-current-font-weight)}.utrecht-index-char-nav__link--disabled{pointer-events:none}\";\nstyleInject(css_248z$u);\nvar _excluded$C = [\"component\", \"currentChar\", \"characters\", \"onLinkClick\", \"Link\"];\nfunction ownKeys$D(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$D(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar IndexCharNav = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var component = _ref.component,\n currentChar = _ref.currentChar,\n characters = _ref.characters,\n onLinkClick = _ref.onLinkClick,\n Link = _ref.Link,\n restProps = _objectWithoutProperties(_ref, _excluded$C);\n var LinkComponent = Link ? Link : ButtonLink;\n var links = [];\n if (component === 'button') {\n links = characters.map(function (_ref2) {\n var _char = _ref2[\"char\"],\n disabled = _ref2.disabled;\n var current = currentChar === _char;\n return /*#__PURE__*/createElement(Button, _objectSpread$D(_objectSpread$D({}, restProps), {}, {\n className: clsx({\n 'utrecht-index-char-nav__link--current': current\n }),\n ref: ref,\n key: _char,\n appearance: current ? 'primary-action-button' : 'secondary-action-button',\n disabled: disabled,\n onClick: function onClick() {\n return typeof onLinkClick === 'function' && onLinkClick(_char);\n },\n pressed: current\n }), _char);\n });\n } else {\n links = characters.map(function (_ref3) {\n var _char2 = _ref3[\"char\"],\n disabled = _ref3.disabled,\n href = _ref3.href;\n var current = currentChar === _char2;\n var customLinkComponentStyle = clsx('utrecht-button-link', 'utrecht-button-link--html-a', 'utrecht-index-char-nav__link', {\n 'utrecht-index-char-nav__link--current': current,\n 'utrecht-button-link--primary-action': current,\n 'utrecht-button-link--secondary-action': !current,\n 'utrecht-index-char-nav__link--disabled': disabled,\n 'utrecht-button-link--placeholder': disabled\n });\n return jsx(LinkComponent, _objectSpread$D(_objectSpread$D({\n ref: ref,\n appearance: Link ? undefined : current ? 'primary-action-button' : 'secondary-action-button',\n href: href,\n className: clsx(Link && customLinkComponentStyle, 'utrecht-index-char-nav__link', {\n 'utrecht-index-char-nav__link--disabled': disabled,\n 'utrecht-index-char-nav__link--current': current\n }),\n \"aria-current\": current ? 'page' : undefined,\n \"aria-disabled\": disabled,\n placeholder: Link ? undefined : disabled,\n onClick: function onClick() {\n return typeof onLinkClick === 'function' && onLinkClick(_char2);\n }\n }, restProps), {}, {\n children: _char2\n }), _char2);\n });\n }\n return jsx(\"div\", {\n className: \"utrecht-index-char-nav\",\n role: \"group\",\n children: links\n });\n});\nIndexCharNav.displayName = 'IndexCharNav';\nvar css_248z$t = \".utrecht-img{height:auto;width:auto}.utrecht-img--photo,.utrecht-img--scale-down{max-height:100%;max-width:100%}\";\nstyleInject(css_248z$t);\nvar _excluded$B = [\"className\", \"photo\"];\nfunction ownKeys$C(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$C(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$C(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$C(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Image = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n photo = _ref.photo,\n restProps = _objectWithoutProperties(_ref, _excluded$B);\n return jsx(\"img\", _objectSpread$C(_objectSpread$C({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-img', {\n 'utrecht-img--photo': photo\n }, className)\n }));\n});\nImage.displayName = 'Image';\nvar css_248z$s = \".utrecht-link{--utrecht-icon-size:var(--utrecht-link-icon-size,1em);color:var(--_utrecht-link-state-color,var(--utrecht-link-color,var(--_utrecht-link-forced-colors-color)))}.utrecht-link:any-link{--_utrecht-link-forced-colors-color:linktext;text-decoration-color:var(--_utrecht-link-state-text-decoration-color,var(--utrecht-link-text-decoration-color,currentColor));text-decoration-line:var(--_utrecht-link-state-text-decoration,var(--utrecht-link-text-decoration,underline));text-decoration-skip-ink:all;text-decoration-thickness:max(var(--_utrecht-link-state-text-decoration-thickness,var(--utrecht-link-text-decoration-thickness)),1px);text-underline-offset:var(--utrecht-link-text-underline-offset)}.utrecht-link--icon-left{background-image:var(--utrecht-link-icon-left-background-image,none);background-position:0 .25em;background-repeat:no-repeat;color:var(--utrecht-link-color,LinkText);font-weight:var(--utrecht-typography-weight-scale-bold-font-weight);padding-inline-start:var(--utrecht-space-block-md);text-decoration-line:none}.utrecht-link--visited{--_utrecht-link-forced-colors-color:visitedtext;--_utrecht-link-state-color:var(--utrecht-link-visited-color)}.utrecht-link--hover,.utrecht-link--html-a:any-link:hover{--_utrecht-link-forced-colors-color:linktext;--_utrecht-link-state-color:var(--utrecht-link-hover-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-hover-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-hover-text-decoration-thickness);text-decoration-skip:none;text-decoration-skip-ink:none}.utrecht-link--focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;background-color:var(--utrecht-link-focus-background-color,transparent);text-decoration-skip-ink:none}.utrecht-link--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-link--html-a:any-link:focus,.utrecht-link--html-span:focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-link-focus-background-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);text-decoration-skip-ink:none;z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-link--html-a:any-link:focus:not(:focus-visible),.utrecht-link--html-span:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-link--active,.utrecht-link--html-a:any-link:active,.utrecht-link--html-span:active{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-link--telephone{white-space:nowrap}.utrecht-link--current{cursor:var(--utrecht-action-inert-cursor,normal);font-weight:var(--utrecht-link-current-font-weight)}.utrecht-link--box-content:any-link{color:unset;display:inline-block;text-decoration-line:unset;text-decoration-skip-ink:unset;text-decoration-thickness:unset;text-underline-offset:unset}.utrecht-link--placeholder{--_utrecht-link-forced-colors-color:GrayText;--_utrecht-link-state-color:var(--utrecht-link-placeholder-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed);font-weight:var(--utrecht-link-placeholder-font-weight);text-decoration-line:none}.utrecht-link--forced-colors{--utrecht-focus-outline-color:Highlight;--utrecht-focus-inverse-outline-color:HighlightText;--utrecht-link-color:linktext;--utrecht-link-hover-color:linktext;--utrecht-link-focus-color:linktext;--utrecht-link-active-color:activetext;--utrecht-link-visited-color:visitedtext;--utrecht-link-placeholder-color:GrayText}\";\nstyleInject(css_248z$s);\nvar css_248z$r = \".utrecht-link-button{--utrecht-icon-size:var(--utrecht-link-icon-size,1em);--_utrecht-link-forced-colors-color:linktext;--utrecht-icon-size:var(--utrecht-button-icon-size,1em);align-items:center;color:var(--_utrecht-link-state-color,var(--utrecht-link-color,var(--_utrecht-link-forced-colors-color)));cursor:pointer;display:inline-flex;font-family:var(--utrecht-button-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-button-font-size,var(--utrecht-document-font-family));font-weight:var(--utrecht-button-font-weight);gap:var(--utrecht-button-icon-gap);inline-size:var(--utrecht-button-inline-size,auto);justify-content:center;line-height:inherit;min-block-size:var(--utrecht-button-min-block-size,44px);min-inline-size:var(--utrecht-button-min-inline-size,44px);padding-block-end:var(--utrecht-button-padding-block-end);padding-block-start:var(--utrecht-button-padding-block-start);padding-inline-end:var(--utrecht-button-padding-inline-end);padding-inline-start:var(--utrecht-button-padding-inline-start);text-decoration-color:var(--_utrecht-link-state-text-decoration-color,var(--utrecht-link-text-decoration-color,currentColor));text-decoration-line:var(--_utrecht-link-state-text-decoration,var(--utrecht-link-text-decoration,underline));text-decoration-skip-ink:all;text-decoration-thickness:max(var(--_utrecht-link-state-text-decoration-thickness,var(--utrecht-link-text-decoration-thickness)),1px);text-transform:var(--utrecht-button-text-transform);text-underline-offset:var(--utrecht-link-text-underline-offset);-webkit-user-select:none;user-select:none}.utrecht-link-button--hover,.utrecht-link-button--html-button:not(:disabled):hover{--_utrecht-link-forced-colors-color:linktext;--_utrecht-link-state-color:var(--utrecht-link-hover-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-hover-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-hover-text-decoration-thickness);text-decoration-skip:none;text-decoration-skip-ink:none}.utrecht-link-button--disabled{--_utrecht-link-forced-colors-color:GrayText;--_utrecht-link-state-color:var(--utrecht-link-placeholder-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed);font-weight:var(--utrecht-link-placeholder-font-weight);text-decoration-line:none}.utrecht-link-button--focus,.utrecht-link-button--html-button:not(:disabled):focus{--_utrecht-link-state-color:var(--utrecht-link-focus-color);--_utrecht-link-state-text-decoration:var(--utrecht-link-focus-text-decoration);--_utrecht-link-state-text-decoration-thickness:var(--utrecht-link-focus-text-decoration-thickness);text-decoration-skip:none;background-color:var(--utrecht-link-focus-background-color,transparent);text-decoration-skip-ink:none}.utrecht-link-button--focus-visible,.utrecht-link-button--html-button:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);z-index:var(--utrecht-stack-focus-z-index,1)}.utrecht-link-button--active,.utrecht-link-button--html-button:not(:disabled):active{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-link-button--inline{--utrecht-icon-inset-block-start:var(--utrecht-icon-baseline-inset-block-start);min-block-size:auto;min-inline-size:auto;padding-block-end:0;padding-block-start:0;padding-inline-end:0;padding-inline-start:0}.utrecht-link-button--pressed{--_utrecht-link-forced-colors-color:activetext;--_utrecht-link-state-color:var(--utrecht-link-active-color)}.utrecht-link-button--html-button{background-color:transparent;border-width:0}\";\nstyleInject(css_248z$r);\nvar _excluded$A = [\"children\", \"disabled\", \"inline\", \"className\", \"pressed\", \"type\"];\nfunction ownKeys$B(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$B(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar LinkButton = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n inline = _ref.inline,\n className = _ref.className,\n pressed = _ref.pressed,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded$A);\n return jsx(\"button\", _objectSpread$B(_objectSpread$B({\n ref: ref,\n \"aria-pressed\": typeof pressed === 'boolean' ? pressed : undefined,\n className: clsx('utrecht-link-button', 'utrecht-link-button--html-button', {\n 'utrecht-link-button--disabled': disabled,\n 'utrecht-link-button--inline': inline,\n 'utrecht-link-button--pressed': pressed\n }, className),\n disabled: disabled,\n type: type || 'button'\n }, restProps), {}, {\n children: children\n }));\n});\nLinkButton.displayName = 'LinkButton';\nvar css_248z$q = \".utrecht-link-social{--utrecht-icon-size:var(--utrecht-link-social-icon-size);--utrecht-icon-color:currentColor;align-items:center;background-color:var(--utrecht-link-social-background-color);block-size:var(--utrecht-link-social-size);border-color:var(--utrecht-link-social-border-color);border-radius:50%;border-style:solid;border-width:var(--utrecht-link-social-border-width);color:var(--utrecht-link-social-color);display:inline-flex;inline-size:var(--utrecht-link-social-size);justify-content:center}.utrecht-link-social--hover,.utrecht-link-social:hover{background-color:var(--utrecht-link-social-hover-background-color,var(--utrecht-link-social-background-color));color:var(--utrecht-link-social-hover-color,var(--utrecht-link-social-color));transform:var(--utrecht-link-social-hover-transform-scale)}.utrecht-link-social--focus-visible,.utrecht-link-social:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-link-social--distanced{margin-inline-start:var(--utrecht-link-social-margin-inline-start)}\";\nstyleInject(css_248z$q);\nvar _excluded$z = [\"children\", \"className\", \"external\"];\nfunction ownKeys$A(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$A(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar LinkSocial = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n external = _ref.external,\n restProps = _objectWithoutProperties(_ref, _excluded$z);\n return jsx(\"a\", _objectSpread$A(_objectSpread$A({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-link-social', className),\n rel: external !== false ? 'external noopener noreferrer' : undefined,\n children: children\n }));\n});\nLinkSocial.displayName = 'LinkSocial';\nvar css_248z$p = \".utrecht-list-social{display:flex;margin-block-end:var(--utrecht-list-social-margin-block-end);margin-block-start:var(--utrecht-list-social-margin-block-start);padding-inline-end:var(--utrecht-list-social-padding-inline-end);padding-inline-start:var(--utrecht-list-social-padding-inline-start)}.utrecht-list-social__item{list-style-type:none;margin-inline-end:var(--utrecht-list-social-item-margin-inline-end)}.utrecht-list-social__item:last-child{margin-inline-end:0}\";\nstyleInject(css_248z$p);\nvar ListSocial = function ListSocial(_ref) {\n var children = _ref.children;\n return jsx(\"ul\", {\n className: clsx('utrecht-list-social'),\n children: children\n });\n};\nvar ListSocialItem = function ListSocialItem(_ref2) {\n var children = _ref2.children;\n return jsx(\"li\", {\n className: clsx('utrecht-list-social__item'),\n children: children\n });\n};\nvar css_248z$o = \".utrecht-logo{display:block;max-block-size:var(--utrecht-logo-max-block-size,192px);max-inline-size:var(--utrecht-logo-max-inline-size,96px);min-block-size:var(--utrecht-logo-min-block-size);min-inline-size:var(--utrecht-logo-min-inline-size)}.utrecht-logo>*{block-size:100%;display:inline-block;inline-size:auto}\";\nstyleInject(css_248z$o);\nvar _excluded$y = [\"children\", \"className\"];\nfunction ownKeys$z(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$z(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$z(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$z(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Logo = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$y);\n return jsx(\"div\", _objectSpread$z(_objectSpread$z({\n ref: ref,\n className: clsx('utrecht-logo', className)\n }, restProps), {}, {\n children: children\n }));\n});\nLogo.displayName = 'Logo';\nfunction ownKeys$y(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$y(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$y(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$y(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar LogoImage = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var restProps = _extends({}, (_objectDestructuringEmpty(_ref), _ref));\n return jsxs(\"svg\", _objectSpread$y(_objectSpread$y({\n width: \"192\",\n height: \"100\",\n viewBox: \"0 0 192 100\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref\n }, restProps), {}, {\n children: [jsxs(\"g\", {\n clipPath: \"url(#clip0_908_6292)\",\n children: [jsx(\"path\", {\n d: \"M124.75 61.3114C126.41 60.4985 127.932 59.5127 129.264 58.3712C129.558 57.9561 129.887 57.6448 130.267 57.4373C132.844 54.8084 134.453 51.4013 134.453 47.2331C134.453 47.2331 134.453 44.2583 134.453 43.5147C134.349 43.5492 134.245 43.5665 134.124 43.5665C134.003 43.5665 133.882 43.5492 133.761 43.5147L133.484 45.0885C130.924 44.6043 131.201 42.0619 132.931 41.1971C133.917 40.6955 134.228 40.3323 133.934 39.9519C133.847 39.8481 133.744 39.7962 133.623 39.7962C133.259 39.7962 132.723 40.194 132.204 40.5745C131.979 40.7474 131.685 40.8339 131.374 40.8339C130.7 40.8339 129.973 40.4015 129.662 39.3811L128.763 39.8827C128.607 37.9629 129.8 37.0117 131.011 37.0117C131.582 37.0117 132.17 37.2192 132.619 37.6343C132.792 37.79 132.965 37.8591 133.138 37.8591C133.692 37.8591 134.072 37.1673 133.329 36.7695C132.619 36.389 131.945 35.213 132.602 34.4693L131.53 33.4662C132.014 33.1721 132.533 33.0338 133.017 33.0338C133.536 33.0338 134.038 33.2067 134.453 33.5526V19.9932C134.124 19.924 133.744 19.5954 133.744 19.1285C133.744 18.6096 134.055 18.2983 134.453 18.1426V17.0184C133.64 17.1914 133.034 17.693 132.792 18.3848L131.651 18.4021C131.599 17.5373 132.014 16.759 132.896 16.465V15.3408C132.152 15.4965 131.668 15.8597 131.374 16.1883C131.288 16.2748 131.219 16.3785 131.132 16.4823L130.267 16.4996C130.233 15.6694 130.648 14.9257 131.426 14.6663V14.1474H128.261H92.2871H89.122V14.6663C89.9176 14.9257 90.3327 15.6694 90.2808 16.4996L89.4161 16.4823C89.3469 16.3785 89.2604 16.292 89.1739 16.1883C88.8799 15.877 88.3783 15.5138 87.652 15.3408V16.465C88.5167 16.759 88.9318 17.5373 88.8972 18.4021L87.7557 18.3848C87.5136 17.693 86.9083 17.2087 86.0954 17.0184V18.1426C86.4932 18.2983 86.7872 18.6096 86.7872 19.1285C86.7872 19.5781 86.424 19.924 86.0954 19.9932V33.5353C86.5105 33.1894 86.9947 33.0338 87.5136 33.0338C88.0151 33.0338 88.534 33.1894 89.001 33.4662L87.9287 34.4693C88.5686 35.2303 87.8941 36.389 87.2023 36.7695C86.4586 37.1673 86.8564 37.8591 87.3925 37.8591C87.5655 37.8591 87.7384 37.79 87.9114 37.6343C88.3611 37.2192 88.9491 37.0117 89.5198 37.0117C90.7305 37.0117 91.9239 37.9456 91.7682 39.8827L90.8343 39.3638C90.523 40.3842 89.7966 40.8166 89.122 40.8166C88.8107 40.8166 88.5167 40.7301 88.2919 40.5572C87.773 40.1767 87.2369 39.7789 86.8737 39.7789C86.7526 39.7789 86.6315 39.8308 86.5624 39.9346C86.2856 40.315 86.5797 40.6955 87.5655 41.1798C89.3123 42.0446 89.589 44.587 87.012 45.0712L86.7353 43.4974C86.6142 43.532 86.4932 43.5492 86.3721 43.5492C86.2683 43.5492 86.1646 43.532 86.0608 43.5147V47.2331C86.0608 51.4186 87.6865 54.8257 90.2808 57.4546C90.6094 57.6448 90.9207 57.9388 91.1975 58.3193C92.5292 59.4954 94.0858 60.4812 95.7634 61.3114C95.7634 61.3114 124.75 61.3114 124.75 61.3114Z\",\n fill: \"white\"\n }), jsx(\"path\", {\n d: \"M135.162 2.40404C135.162 2.21379 135.145 2.04084 135.127 1.85059H132.516C132.498 3.33798 132.118 4.77348 131.461 5.89766C131.011 6.65865 130.475 7.22939 129.87 7.5753H130.06C132.879 7.59259 135.162 5.27504 135.162 2.40404ZM132.516 12.3142C132.308 12.2796 132.118 12.2623 131.91 12.2623C131.755 12.2623 131.599 12.2796 131.443 12.2969C130.959 12.3488 130.475 12.5044 130.094 12.7811C129.662 13.0925 129.351 13.6113 129.333 14.1648H130.146C130.509 13.8707 130.942 13.6632 131.409 13.5594V14.6836C130.613 14.943 130.198 15.6867 130.25 16.5169L131.115 16.4996C131.184 16.3958 131.27 16.3094 131.357 16.2056C131.651 15.8943 132.152 15.5311 132.879 15.3581V16.4823C132.014 16.7763 131.599 17.5546 131.634 18.4194L132.775 18.4021C133.035 17.6757 133.674 17.1741 134.539 17.0185V18.1254C134.09 18.2637 133.726 18.575 133.726 19.1458C133.726 19.6473 134.176 20.0105 134.539 20.0105L134.505 20.9618C134.505 20.9618 134.505 20.9618 134.522 20.9618C134.764 20.9618 134.972 20.8926 135.196 20.7888C135.906 20.4083 136.182 19.5781 136.165 18.8172L137.203 18.3156C137.203 18.3502 137.22 18.3848 137.22 18.4367C137.306 19.0766 137.22 19.6992 137.012 20.2354L138.967 22.0859C139.347 21.152 139.849 20.27 140.454 19.4571C140.679 19.1804 140.904 18.9036 141.146 18.6615C140.299 18.0216 139.261 17.226 138.915 16.9666C137.825 16.1537 136.822 15.2544 135.784 14.3723C135.145 13.8361 134.487 13.3 133.796 12.833C133.398 12.5736 132.965 12.4007 132.516 12.3142ZM150.658 46.6451C150.814 46.7316 150.97 46.7662 151.125 46.7662C151.506 46.7662 151.869 46.5586 152.077 46.23C152.042 46.0398 151.973 45.8322 151.921 45.642C151.748 45.1231 151.488 44.6216 151.125 44.1373C150.658 43.5147 150.036 42.9439 149.206 42.477C149.084 42.4078 148.946 42.3213 148.79 42.2348C149.344 42.9093 149.673 43.3936 149.88 43.8087C150.105 44.2238 150.209 44.5524 150.364 44.8637C150.312 44.9156 150.278 44.9675 150.243 45.0194C149.863 45.5901 150.088 46.3511 150.658 46.6451ZM70.6335 43.7914C70.8411 43.3936 71.1697 42.892 71.7231 42.2175C71.5848 42.304 71.4291 42.3905 71.308 42.4597C70.4779 42.9266 69.8552 43.4974 69.3883 44.12C69.0251 44.6043 68.7829 45.1231 68.5927 45.6247C68.5235 45.8149 68.4716 46.0225 68.437 46.2127C68.6446 46.5413 69.0078 46.7489 69.3883 46.7489C69.5439 46.7489 69.6996 46.7143 69.8552 46.6278C70.426 46.3338 70.6508 45.5728 70.253 44.9848C70.2184 44.9329 70.1839 44.881 70.132 44.8291C70.3049 44.5351 70.4087 44.2065 70.6335 43.7914ZM142.287 13.1098C142.495 13.1098 142.72 13.0925 142.945 13.0752C142.27 12.833 141.734 12.4352 141.388 11.8818C140.904 11.1381 140.835 10.3425 141.025 9.63342C140.99 9.63342 140.956 9.65072 140.921 9.65072C140.108 9.82367 139.693 10.4463 139.849 11.2765C140.074 12.5217 140.852 13.1098 142.287 13.1098ZM152.163 48.0633C152.18 47.8904 152.198 47.7174 152.198 47.5272C151.869 47.7174 151.488 47.8212 151.108 47.8212C150.762 47.8212 150.451 47.7347 150.139 47.579C149.534 47.2677 149.119 46.697 148.998 46.0225C148.912 45.5901 148.963 45.1404 149.136 44.7426C149.136 44.7426 149.136 44.7253 149.119 44.7253C148.652 44.6389 148.133 44.5697 147.562 44.5005C146.611 44.3967 145.746 44.3448 144.951 44.3448C137.514 44.3448 136.909 48.4265 136.909 48.4265C135.75 52.7676 139.226 54.7219 139.226 54.7219C139.226 54.7219 140.022 58.6825 138.258 60.1872L136.424 59.5646L135.508 59.2533L134.989 59.0803C134.159 57.9043 132.81 57.0741 131.53 57.0741C130.285 57.0741 129.091 57.8697 128.503 59.9278L129.8 59.6511C129.8 60.9828 130.233 61.3287 130.907 61.3287C131.046 61.3287 131.201 61.3114 131.357 61.2941C131.547 61.2595 131.737 61.2249 131.945 61.1903C132.585 61.0693 133.052 60.9309 133.38 60.9309C133.692 60.9309 133.899 61.052 134.02 61.3806C134.193 61.8822 133.709 62.1935 133.086 62.3491C131.564 62.695 130.7 63.7673 130.976 65.2028C131.046 65.5314 131.149 65.86 131.34 66.2232C131.409 66.3789 131.495 66.5173 131.599 66.6729C131.599 66.6729 131.616 66.6729 131.616 66.6902L133.121 65.7736C133.346 65.9984 133.605 66.0849 133.865 66.0849C134.435 66.0849 134.989 65.6698 135.196 65.3066C135.214 65.272 135.231 65.2374 135.248 65.2028C135.421 64.8569 135.439 64.4591 135.439 64.0959C135.439 63.8884 135.421 63.6809 135.421 63.4906C135.421 63.2658 135.421 63.0755 135.473 62.9372C135.56 62.6604 135.784 62.4702 136.027 62.3664C136.113 62.3318 136.217 62.3145 136.303 62.3145C136.459 62.3145 136.615 62.3664 136.753 62.4702C137.116 62.7296 137.116 63.1274 137.064 63.5252C137.012 63.9403 136.943 64.3208 137.168 64.6667C137.185 64.7013 137.203 64.7186 137.22 64.7532C137.306 64.8569 137.41 64.9607 137.514 65.0472C137.583 65.0991 137.894 65.3239 137.894 65.4104L137.739 67.2437C138.707 67.1745 139.78 66.9669 140.299 66.0849C140.402 65.9119 140.489 65.6871 140.541 65.4623C140.731 64.7877 140.817 63.9576 140.921 62.7988C141.354 62.6258 141.734 62.401 142.063 62.107C142.478 61.7438 142.806 61.2941 142.997 60.7234C143.515 59.1668 143.965 56.0537 143.273 52.7676C143.273 52.7676 150.243 51.9028 151.748 51.1418C151.886 50.0868 152.025 49.0318 152.163 48.0633ZM146.023 7.93849C146.023 7.93849 145.072 8.50924 145.262 9.40858C145.574 10.0658 145.971 10.7403 146.473 11.3283L147.441 10.3598C148.583 9.30481 149.586 8.92432 150.416 8.92432C151.506 8.92432 152.267 9.61613 152.578 10.4117C153.062 11.6224 153.01 12.5909 152.838 13.2135C152.699 13.6805 152.319 14.061 151.454 14.1302C151.298 14.1475 151.125 14.1475 150.952 14.1475C149.171 14.1475 146.836 13.5075 146.836 13.5075C146.473 15.4446 146.248 15.8251 149.015 15.8251C149.655 15.8251 150.451 15.8078 151.437 15.7732L148.669 17.0358C148.358 17.0185 148.064 17.0012 147.77 17.0012C145.729 17.0012 144.103 17.6065 142.824 18.5923C142.53 18.8172 142.253 19.0593 141.993 19.3187C141.008 20.3218 140.299 21.5671 139.797 22.8815C139.659 23.262 139.538 23.6425 139.434 24.023C138.898 26.0293 138.828 28.122 139.105 29.7996C139.313 29.5402 139.52 29.298 139.762 29.0559L139.883 28.9348C140.714 28.122 142.115 26.7211 143.792 25.8563C144.415 25.3029 145.003 24.7494 145.574 24.1441C146.801 22.8469 147.891 21.4114 148.704 19.7857C148.202 21.5325 147.355 23.2101 146.352 24.7494C145.954 25.3547 145.539 25.9428 145.107 26.5135C144.726 26.6692 144.38 26.8421 144.034 27.0497C142.564 27.8798 141.319 29.1597 140.593 29.8861C140.16 30.3012 139.814 30.7681 139.486 31.2524C139.226 31.6329 139.001 32.0134 138.759 32.4112C138.586 32.7052 138.396 33.0165 138.223 33.3105C137.445 34.5731 136.407 35.8183 135.819 35.8183C135.612 35.8183 135.456 35.6627 135.387 35.3168C135.075 33.7429 134.09 33.0511 133.017 33.0511C132.516 33.0511 131.997 33.2067 131.53 33.4835L132.602 34.4866C131.962 35.2476 132.637 36.4064 133.329 36.7869C134.072 37.1846 133.674 37.8764 133.138 37.8764C132.965 37.8764 132.792 37.8073 132.619 37.6516C132.17 37.2365 131.582 37.029 131.011 37.029C129.8 37.029 128.607 37.9629 128.763 39.9L129.697 39.3811C130.008 40.4015 130.734 40.8339 131.409 40.8339C131.72 40.8339 132.014 40.7474 132.239 40.5745C132.758 40.194 133.294 39.7962 133.657 39.7962C133.778 39.7962 133.899 39.8481 133.968 39.9519C134.245 40.3324 133.951 40.7129 132.965 41.1971C131.219 42.0619 130.942 44.6043 133.519 45.0885L133.796 43.5147C133.917 43.5493 134.038 43.5666 134.159 43.5666C134.902 43.5666 135.421 42.9093 135.508 42.4251C135.629 41.716 135.594 41.2836 135.629 40.8339C135.646 40.4361 135.906 40.2632 136.165 40.2632C136.476 40.2632 136.788 40.488 136.822 40.8858C136.874 41.6295 136.857 42.598 138.171 42.8229L138.586 44.1546C139.832 43.7222 141.077 42.2867 138.811 39.8654C138.777 38.6374 140.074 37.9283 141.89 36.9079C142.201 36.735 142.53 36.5447 142.858 36.3545C143.031 36.2507 143.204 36.1469 143.377 36.0432C143.74 35.8183 145.141 34.7979 146.369 33.7429L147.441 34.3136C147.217 34.5039 146.974 34.7114 146.698 34.9536C145.591 35.8702 144.397 36.7696 143.948 37.029C143.861 37.0809 143.775 37.1328 143.688 37.1846C144.864 38.2742 146.127 39.2255 147.268 39.9865C147.735 40.2978 148.185 40.5918 148.6 40.8512C149.015 41.1106 149.413 41.3355 149.742 41.5257C150.658 42.0446 151.385 42.6845 151.938 43.4109C152.301 43.8779 152.578 44.3794 152.786 44.881C152.993 45.3653 153.132 45.8668 153.201 46.3684C153.235 46.5413 153.253 46.697 153.27 46.8699C153.304 47.3369 153.287 47.7866 153.235 48.219C153.166 48.6859 153.114 49.1529 153.045 49.6199C152.959 50.329 152.889 51.0208 152.838 51.7299C152.768 52.5601 152.734 53.3729 152.734 54.1858C152.734 56.6763 153.114 58.4577 154.844 60.1526C156.089 61.3806 157.836 61.6746 159.531 61.7957C160.413 61.8476 162.886 62.2108 164.564 62.4702C165.532 62.6086 166.259 63.4214 166.31 64.4072C166.38 65.739 166.362 67.4858 165.895 68.0738L163.612 67.7625C163.076 66.9669 161.796 66.3443 160.551 66.3443C159.583 66.3443 158.631 66.7248 158.095 67.7279C157.94 68.0219 157.801 68.3678 157.732 68.7829C157.715 68.904 157.697 69.0251 157.68 69.1634L158.407 68.8694L158.822 68.6965C158.839 68.8002 158.856 68.8867 158.874 68.9732C159.116 69.9763 159.635 70.3395 160.257 70.3395C160.551 70.3395 160.862 70.253 161.191 70.132C161.226 70.1147 161.26 70.0974 161.312 70.0801C161.9 69.8379 162.315 69.6477 162.627 69.6477C162.834 69.6477 162.99 69.7342 163.128 69.9763C163.318 70.3049 163.128 70.5816 162.8 70.8065C162.696 70.8756 162.557 70.9448 162.436 70.9967C160.69 71.7231 160.188 73.418 161.796 75.1821L163.007 74.1098C163.197 74.2309 163.388 74.2828 163.561 74.2828C164.149 74.2828 164.685 73.7466 164.823 73.3489C165.048 72.7435 164.806 72.0517 164.719 71.5502C164.702 71.4118 164.685 71.2734 164.702 71.1697C164.737 70.8929 164.927 70.6681 165.152 70.547C165.255 70.4952 165.359 70.4606 165.48 70.4606C165.584 70.4606 165.688 70.4779 165.792 70.5297C165.895 70.5816 165.982 70.6508 166.051 70.7373C166.207 70.9275 166.241 71.187 166.241 71.4464C166.241 71.5847 166.241 71.7404 166.259 71.8788C166.293 72.1209 166.362 72.3457 166.57 72.536C166.674 72.6225 166.777 72.6916 166.881 72.7608C166.95 72.7954 167.279 72.9511 167.296 73.0202L167.452 74.7152C168.663 74.4212 169.994 73.8331 169.666 71.9479C169.614 71.6366 169.51 71.2734 169.337 70.8756C169.285 70.7373 169.216 70.5816 169.13 70.426C170.185 69.9071 170.876 68.9213 171.049 67.7625C171.205 66.7075 171.032 62.9545 170.911 60.8098C170.859 59.9451 170.202 59.236 169.354 59.1149C168.386 58.9766 167.141 58.7863 166.224 58.5961C164.771 58.2848 163.37 57.6448 163.042 56.6071C162.765 55.7078 162.921 55.604 163.007 54.6874C163.076 53.9783 163.163 53.2519 163.215 52.5428C163.215 52.439 163.232 52.3179 163.232 52.2142C163.249 51.7991 163.232 51.3667 163.18 50.9516C163.267 51.0035 163.353 51.0554 163.439 51.1073C163.716 51.2629 164.01 51.3667 164.304 51.4532C164.633 51.5396 164.961 51.5742 165.307 51.5742C166.034 51.5742 166.743 51.384 167.383 50.9862C168.542 50.2771 169.216 49.0491 169.181 47.7001C169.13 45.2961 167.763 43.6012 166.449 41.9581C165.826 41.1798 165.169 40.367 164.685 39.5022C163.145 36.735 162.782 33.7256 163.612 30.5606C163.976 29.177 164.806 27.9317 165.688 26.6C166.016 26.0984 166.328 25.6315 166.639 25.1126C166.639 25.1126 167.331 25.4239 167.781 25.3201C167.902 25.2856 168.023 25.2337 168.161 25.1472C169.216 24.49 170.34 21.8092 170.288 18.5923C170.254 16.0326 169.648 13.9053 168.455 12.1585C168.715 12.8849 168.939 13.6459 169.078 14.4069C169.233 15.2371 169.285 16.1018 169.233 16.932C169.181 17.7795 169.008 18.5923 168.732 19.3533C168.853 18.5404 168.853 17.7276 168.749 16.932C168.645 16.1364 168.438 15.3754 168.144 14.649C167.884 14.0091 167.573 13.3865 167.21 12.7984C167.452 14.2858 167.452 15.7905 167.054 17.6584C166.812 18.8172 166.31 19.9241 165.878 20.8926C165.48 21.7746 165.186 22.4837 165.065 23.0718C164.927 23.7117 165.013 24.196 165.446 24.5938C165.377 24.7148 165.29 24.8359 165.221 24.9569C165.031 25.251 164.823 25.5623 164.616 25.8736C163.716 27.2399 162.782 28.6408 162.367 30.232C161.468 33.691 161.883 37.1155 163.561 40.1421C164.097 41.1106 164.788 41.9581 165.446 42.7883C166.674 44.3275 167.85 45.7803 167.902 47.752C167.919 48.6513 167.487 49.4296 166.726 49.8966C165.93 50.3809 164.979 50.4155 164.166 50.0177C164.149 50.0004 164.114 50.0004 164.097 49.9831C163.474 49.6545 162.921 49.0318 162.592 48.3054C162.575 48.2708 162.575 48.2363 162.557 48.2017C162.16 47.0429 161.675 45.9014 161.122 44.8118C159.496 41.5603 157.473 38.5164 156.193 35.0919C155.086 32.1517 155.587 28.5716 155.587 28.5716C156.712 29.0213 158.355 29.0732 158.355 29.0732C158.303 25.4066 166.172 16.8974 161.381 6.52029C161.053 7.05644 160.62 7.60989 160.015 8.18063L159.583 8.59571V7.09103C162.09 4.49675 160.932 2.02354 159.998 1.19337C159.289 1.4528 158.476 2.23109 157.87 3.18232L156.815 2.83642C157.075 2.40404 157.369 1.98895 157.697 1.60846C157.594 1.53928 157.49 1.48739 157.369 1.4701C157.317 1.4701 157.248 1.4528 157.161 1.4528C155.587 1.4528 149.672 2.81912 149.084 3.13043L148.617 4.72159C147.009 5.15397 145.522 6.01873 144.467 6.58947C144.553 7.03914 145.037 8.05956 146.023 7.93849ZM157.767 18.0908C158.199 16.8974 158.545 15.6694 158.822 14.4242C158.683 15.704 158.493 16.9666 158.199 18.2291C157.905 19.4917 157.507 20.7196 157.04 21.9303C156.573 23.141 156.037 24.317 155.484 25.4758C155.034 26.3924 154.567 27.2918 154.1 28.1911C153.668 28.0528 153.149 27.8279 152.578 27.4993C153.91 25.5796 155.19 23.6252 156.262 21.5671C156.833 20.4429 157.352 19.2841 157.767 18.0908ZM153.218 19.9759C152.941 20.8061 152.665 21.6536 152.319 22.4837C151.973 23.3139 151.54 24.1268 151.091 24.8878C150.814 25.3547 150.537 25.8217 150.261 26.2887C149.672 26.0811 149.084 25.9601 148.514 25.9255C149.015 25.3374 149.534 24.7321 150.018 24.1441C150.572 23.4696 151.073 22.7951 151.54 22.0859C151.99 21.3596 152.405 20.5986 152.803 19.8203C153.201 19.042 153.581 18.2464 153.979 17.4681C153.737 18.2983 153.477 19.1458 153.218 19.9759ZM152.872 5.01561C151.661 6.20898 151.264 6.93537 151.264 6.93537C149.655 7.00455 149.309 5.98414 149.309 4.98102C150.883 5.4134 152.872 5.01561 152.872 5.01561ZM131.426 8.68219H89.1567V11.2073C89.7274 11.2592 90.4538 11.4494 91.0937 11.8991C91.8201 12.4352 92.2698 13.2654 92.2871 14.1129V14.1475H128.244V14.1129C128.261 13.2654 128.711 12.4352 129.437 11.8991C130.094 11.4148 130.855 11.2419 131.426 11.19V8.68219ZM98.0118 13.2308L94.5355 11.5013L98.0118 9.77178L101.488 11.5013L98.0118 13.2308ZM110.274 13.0406C108.579 13.0406 107.196 12.3488 107.196 11.5013C107.196 10.6538 108.579 9.96203 110.274 9.96203C111.969 9.96203 113.353 10.6538 113.353 11.5013C113.353 12.3488 111.969 13.0406 110.274 13.0406ZM122.536 13.2308L119.06 11.5013L122.536 9.77178L126.013 11.5013L122.536 13.2308ZM86.4413 61.3806C86.5624 61.052 86.7699 60.9309 87.0812 60.9309C87.4099 60.9309 87.8768 61.052 88.5167 61.1903C88.7243 61.2249 88.9145 61.2595 89.1048 61.2941C89.2604 61.3114 89.4161 61.3287 89.5545 61.3287C90.229 61.3287 90.6613 61.0001 90.6613 59.6511L91.9585 59.9278C91.3704 57.8697 90.1771 57.0741 88.9318 57.0741C87.652 57.0741 86.303 57.9216 85.4728 59.0803L84.9539 59.2533L84.0719 59.5992L82.2386 60.2218C80.4572 58.7171 81.2701 54.7565 81.2701 54.7565C81.2701 54.7565 84.7464 52.8022 83.5876 48.4611C83.5876 48.4611 82.9823 44.3794 75.5454 44.3794C74.7498 44.3794 73.885 44.4313 72.9338 44.5351C72.363 44.6043 71.8442 44.6735 71.3772 44.7599C71.3772 44.7599 71.3772 44.7772 71.3599 44.7772C71.5329 45.175 71.5848 45.6247 71.4983 46.0571C71.3772 46.7316 70.9621 47.3023 70.3568 47.6136C70.0628 47.7693 69.7342 47.8558 69.3883 47.8558C69.0078 47.8558 68.6446 47.752 68.2987 47.5617C68.2987 47.752 68.316 47.9249 68.3333 48.0979C68.4716 49.0664 68.61 50.1041 68.6965 51.1937C70.2012 51.9547 77.1711 52.8195 77.1711 52.8195C76.4966 56.1056 76.929 59.2187 77.4478 60.7753C77.6381 61.346 77.9667 61.7957 78.3818 62.1589C78.7104 62.4529 79.0909 62.6777 79.5233 62.8507C79.6097 63.9922 79.6962 64.8396 79.9037 65.5141C79.9556 65.7563 80.0421 65.9638 80.1459 66.1368C80.6647 67.0188 81.737 67.2264 82.7056 67.2955L82.5499 65.4623C82.5499 65.3758 82.8785 65.1509 82.9304 65.0991C83.0342 65.0126 83.1379 64.9088 83.2244 64.805C83.2417 64.7704 83.259 64.7532 83.2763 64.7186C83.5011 64.3554 83.432 63.9749 83.3801 63.5771C83.3282 63.1793 83.3282 62.7815 83.6914 62.5221C83.8298 62.4183 83.9854 62.3664 84.1411 62.3664C84.2448 62.3664 84.3313 62.3837 84.4178 62.4183C84.6599 62.5048 84.8848 62.7123 84.9712 62.989C85.0231 63.1274 85.0231 63.3177 85.0231 63.5425C85.0231 63.7327 85.0058 63.9403 85.0058 64.1478C85.0058 64.511 85.0404 64.9088 85.1961 65.2547C85.2134 65.2893 85.2307 65.3239 85.248 65.3585C85.4555 65.7044 86.0089 66.1368 86.5797 66.1368C86.8391 66.1368 87.0985 66.0503 87.3234 65.8255L88.8281 66.7421C88.8281 66.7421 88.8454 66.7421 88.8454 66.7248C88.9491 66.5691 89.0183 66.4135 89.1048 66.2751C89.2777 65.9119 89.3988 65.5833 89.468 65.2547C89.7447 63.8019 88.8799 62.7469 87.358 62.401C86.7699 62.2108 86.2684 61.8994 86.4413 61.3806ZM143.066 69.3883C142.651 68.7483 142.149 68.2987 141.682 67.9528C141.509 67.849 141.336 67.7625 141.146 67.6587L140.662 67.4166C139.832 68.1257 138.707 68.2987 137.877 68.3505L136.615 68.437L136.718 67.1745L136.822 65.86C136.684 65.739 136.545 65.6006 136.407 65.4277C136.407 65.4104 136.39 65.4104 136.39 65.3931C136.338 65.5487 136.269 65.7044 136.182 65.8428C135.802 66.5 134.902 67.1572 133.917 67.1572C133.657 67.1572 133.415 67.1053 133.173 67.0188L132.602 67.3647C132.637 67.3993 132.689 67.4339 132.723 67.4685C134.574 69.1807 135.957 69.371 138.31 69.9071C139.901 70.2703 141.388 71.187 141.89 72.83C142.184 73.7812 142.132 74.8189 142.08 75.8048C142.08 75.8048 145.331 73.9542 143.602 70.3049C143.464 70.0455 143.273 69.7169 143.066 69.3883ZM120.876 68.1257C119.856 67.088 118.766 66.206 117.676 65.6871C116.777 65.2547 115.878 64.9607 115.03 64.7704C114.477 64.6494 113.941 64.5629 113.439 64.511C113.145 64.4764 112.868 64.4591 112.592 64.4418C111.865 64.4764 111.087 64.4937 110.274 64.4937C109.461 64.4937 108.683 64.4764 107.957 64.4418C107.68 64.4591 107.403 64.4764 107.092 64.511C106.59 64.5629 106.054 64.6494 105.501 64.7704C104.653 64.9607 103.754 65.2547 102.854 65.6871C101.765 66.2232 100.675 67.088 99.6548 68.1257C99.5857 68.1949 99.5338 68.2468 99.4819 68.316C97.2681 70.72 97.8561 73.0721 97.8561 73.0721C97.8561 73.0721 100.693 69.3018 104.93 69.3018C106.953 69.3018 108.7 69.9763 109.6 70.426L110.257 70.7719L110.914 70.426C111.813 69.9936 113.56 69.3018 115.584 69.3018C119.821 69.3018 122.657 73.0721 122.657 73.0721C122.657 73.0721 123.263 70.72 121.032 68.316C120.997 68.2641 120.945 68.1949 120.876 68.1257ZM98.8766 67.3647C100.554 65.6698 102.405 64.5975 104.082 64.0268C102.56 63.7846 101.263 63.4733 100.105 63.1101C99.9835 63.1101 99.8624 63.0928 99.7413 63.0928C99.3781 63.0928 99.0149 63.1101 98.6863 63.1447C97.7178 63.2658 96.8011 63.4387 95.9191 63.4387C93.6188 63.4387 91.5953 63.0928 89.9522 62.6431C90.1252 62.868 90.2809 63.1101 90.3846 63.3868C90.644 64.0268 90.6959 64.7532 90.5403 65.4968C90.6095 65.5141 90.6613 65.5314 90.7305 65.5487C91.0418 65.6179 91.3359 65.6871 91.578 65.7217C92.045 65.8082 92.3217 65.8255 92.3217 65.8255C92.3217 65.8255 91.9066 66.0503 91.3186 66.4481C90.6095 66.9323 89.6582 67.6587 88.8454 68.5408C85.0231 72.7435 89.2431 75.9258 89.2431 75.9258C89.2431 75.9258 88.3092 71.7923 90.2981 70.4779C93.4805 68.4024 95.1754 70.1838 98.7382 67.4685C98.7901 67.4685 98.8247 67.4166 98.8766 67.3647ZM87.9287 67.3993L87.358 67.0534C87.1331 67.1399 86.8737 67.1918 86.6143 67.1918C85.6112 67.1918 84.7118 66.5346 84.3486 65.8773C84.2621 65.7217 84.193 65.5833 84.1411 65.4277C84.1411 65.445 84.1238 65.445 84.1238 65.4623C83.9854 65.6352 83.847 65.7736 83.7087 65.8946L83.8125 67.2091L83.9162 68.4716L82.6537 68.3851C81.8235 68.3333 80.7166 68.1603 79.8692 67.4512L79.3849 67.6933C79.1946 67.7971 79.0217 67.8836 78.8487 67.9874C78.3645 68.3333 77.8802 68.7829 77.4651 69.4229C77.2403 69.7515 77.0673 70.0628 76.929 70.3741C75.1995 74.0234 78.451 75.874 78.451 75.874C78.3991 74.8881 78.3645 73.8504 78.6412 72.8992C79.1428 71.2561 80.6301 70.3568 82.2213 69.9763C84.5907 69.4229 85.9571 69.2499 87.8076 67.5377C87.8595 67.4685 87.8941 67.4339 87.9287 67.3993ZM129.212 66.4827C128.624 66.0849 128.209 65.86 128.209 65.86C128.209 65.86 128.503 65.8255 128.953 65.7563C129.195 65.7217 129.489 65.6525 129.8 65.5833C129.852 65.566 129.921 65.5487 129.991 65.5314C129.835 64.7877 129.887 64.0613 130.146 63.4214C130.25 63.162 130.406 62.9026 130.579 62.6777C128.936 63.1274 126.912 63.4733 124.612 63.4733C123.73 63.4733 122.813 63.2831 121.845 63.1793C121.516 63.1447 121.153 63.1274 120.79 63.1274C120.668 63.1274 120.565 63.1274 120.444 63.1274C119.285 63.4906 117.97 63.8019 116.466 64.0441C118.143 64.6148 119.994 65.6698 121.672 67.382C121.723 67.4339 121.758 67.4685 121.793 67.5204C125.355 70.2357 127.05 68.4543 130.233 70.5297C132.222 71.8269 131.288 75.9777 131.288 75.9777C131.288 75.9777 135.49 72.7954 131.686 68.5927C130.873 67.6933 129.904 66.9496 129.212 66.4827ZM170.738 71.8615C170.859 72.6052 170.79 73.2624 170.513 73.8504C169.925 75.0957 168.628 75.5453 167.711 75.7875L166.483 76.0988L166.362 74.8362L166.241 73.6602C166.138 73.591 166.016 73.5045 165.913 73.418C165.895 73.5218 165.861 73.6256 165.826 73.7293C165.532 74.5422 164.598 75.3724 163.543 75.3724C163.439 75.3724 163.336 75.3724 163.232 75.3551L162.488 76.0123L161.693 76.7214L160.966 75.9258C159.946 74.8189 159.531 73.5737 159.79 72.4322C159.877 72.069 160.015 71.7231 160.223 71.4118C159.583 71.4118 159.012 71.1697 158.58 70.72C158.424 70.547 158.268 70.3568 158.164 70.132L158.095 70.1492L156.418 70.8411L156.608 69.0424C156.608 68.9732 156.625 68.9213 156.625 68.8521C155.881 68.9732 154.982 69.2499 153.841 69.6823C153.685 69.7688 153.512 69.8379 153.356 69.8898C153.27 69.9244 153.201 69.959 153.114 69.9763C153.477 70.1838 153.841 70.3914 154.169 70.5989C155.812 71.6539 156.936 72.7954 157.525 73.9888C157.888 74.3693 158.286 74.7844 158.718 75.2513C160.499 77.1538 162.903 78.0359 165.377 78.0359C169.614 78.0359 173.99 75.4243 175.529 70.8238C175.512 70.8411 173.419 71.5502 170.738 71.8615ZM153.495 71.481C151.298 70.0974 148.877 69.3191 148.877 69.3191C149.309 69.3537 149.707 69.371 150.088 69.371C151.039 69.371 151.817 69.2499 152.457 69.0597C152.82 68.9559 153.149 68.8175 153.426 68.6792C155.449 67.6414 155.518 65.7909 155.518 65.7909C153.91 66.8805 152.492 67.261 151.177 67.261C149.482 67.261 147.943 66.6556 146.369 66.2059C145.902 66.0676 145.435 66.0157 144.986 66.0157C143.688 66.0157 142.564 66.5 141.924 66.8459C142.737 67.3474 143.429 67.9874 143.965 68.8002C144.173 69.1288 144.363 69.4574 144.519 69.7688C145.037 70.4779 145.366 71.1005 145.885 71.5156C147.078 72.5187 148.739 72.7262 150.243 72.83C154.809 73.1759 156.677 77.2922 156.677 77.2922C157.058 76.3409 156.988 75.4416 156.625 74.6287C156.054 73.3834 154.826 72.3284 153.495 71.481ZM78.5893 66.8459C77.9494 66.5 76.8425 66.0157 75.5281 66.0157C75.0784 66.0157 74.6287 66.0676 74.1444 66.2059C72.5533 66.6556 71.0313 67.261 69.3364 67.261C68.022 67.261 66.6038 66.8978 64.9953 65.7909C64.9953 65.7909 65.0818 67.6414 67.088 68.6792C67.3647 68.8175 67.6933 68.9559 68.0565 69.0597C68.6965 69.2499 69.4921 69.371 70.426 69.371C70.8065 69.371 71.2043 69.3537 71.6366 69.3191C71.6366 69.3191 69.2153 70.0974 67.0188 71.481C65.6871 72.3284 64.4592 73.3834 63.9057 74.6287C63.5425 75.4416 63.4733 76.3236 63.8538 77.2922C63.8538 77.2922 65.7044 73.1759 70.2876 72.83C71.7923 72.7089 73.4353 72.5014 74.646 71.5156C75.1649 71.0832 75.4935 70.4606 76.0123 69.7688C76.168 69.4401 76.3582 69.1288 76.5658 68.8002C77.0846 67.9874 77.7764 67.3301 78.5893 66.8459ZM51.4013 70.4433C51.3321 70.5989 51.2629 70.7546 51.1937 70.8929C51.0381 71.2907 50.917 71.6366 50.8651 71.9652C50.5192 73.8504 51.8683 74.4385 53.0789 74.7325L53.2346 73.0375C53.2519 72.9684 53.5805 72.8127 53.6497 72.7781C53.7534 72.7089 53.8745 72.6398 53.961 72.5533C54.1685 72.363 54.2377 72.1382 54.2723 71.8961C54.2896 71.7577 54.2896 71.6193 54.2896 71.4637C54.3069 71.2043 54.3415 70.9448 54.4798 70.7546C54.549 70.6681 54.6182 70.5989 54.7393 70.547C54.843 70.4952 54.9468 70.4779 55.0506 70.4779C55.1716 70.4779 55.2754 70.5124 55.3792 70.5643C55.604 70.6854 55.7943 70.9102 55.8289 71.187C55.8461 71.2907 55.8289 71.4291 55.8116 71.5675C55.7251 72.069 55.483 72.7608 55.7078 73.3662C55.8462 73.7639 56.3823 74.3001 56.9703 74.3001C57.1606 74.3001 57.3335 74.2482 57.5238 74.1271L58.7344 75.1994C60.3429 73.4353 59.8413 71.7404 58.0945 71.014C57.9562 70.9621 57.8351 70.8929 57.7313 70.8238C57.4027 70.5989 57.2125 70.3049 57.4027 69.9936C57.5411 69.7515 57.6967 69.665 57.9043 69.665C58.2156 69.665 58.6134 69.8552 59.2187 70.0974C59.2533 70.1147 59.2879 70.132 59.3398 70.1492C59.6684 70.2703 59.9797 70.3568 60.2737 70.3568C60.8963 70.3568 61.3979 69.9936 61.6573 68.9905C61.6746 68.904 61.6919 68.8002 61.7092 68.7138L62.1243 68.8867L62.8507 69.1807C62.8334 69.0596 62.8161 68.9213 62.7988 68.8002C62.7296 68.3851 62.5913 68.0392 62.4356 67.7452C61.8995 66.7594 60.9482 66.3616 59.9797 66.3616C58.7344 66.3616 57.4546 66.9842 56.9185 67.7798L54.6355 68.0911C54.1685 67.5031 54.1512 65.7736 54.2204 64.4245C54.2723 63.4387 54.9987 62.6431 55.9672 62.4875C57.6276 62.2454 60.1181 61.8822 61.0001 61.813C62.6777 61.6919 64.4246 61.3979 65.6871 60.1699C67.4166 58.4577 67.7971 56.6763 67.7971 54.2031C67.7971 53.3902 67.7625 52.5773 67.6933 51.7472C67.6415 51.0381 67.555 50.329 67.4858 49.6372C67.4339 49.1702 67.3647 48.7032 67.2956 48.2363C67.2264 47.8039 67.2264 47.3369 67.261 46.8872C67.2783 46.7143 67.2956 46.5586 67.3302 46.3857C67.4166 45.8841 67.555 45.3998 67.7452 44.8983C67.9528 44.3794 68.2468 43.8952 68.5927 43.4282C69.1461 42.7018 69.8725 42.0619 70.7892 41.543C71.1178 41.3528 71.5156 41.1279 71.9307 40.8685C72.3458 40.6091 72.7954 40.3324 73.2624 40.0038C74.4039 39.2428 75.6664 38.2915 76.8425 37.2019C76.756 37.15 76.6695 37.0982 76.5831 37.0463C76.1507 36.7869 74.9573 35.9048 73.8331 34.9709C73.5564 34.746 73.3143 34.5385 73.0894 34.3309L74.1617 33.7602C75.407 34.8152 76.7906 35.8529 77.1538 36.0605C77.3268 36.1642 77.4997 36.268 77.6727 36.3718C78.0013 36.562 78.3299 36.7523 78.6412 36.9252C80.4572 37.9629 81.7543 38.672 81.7197 39.8827C79.4714 42.304 80.6993 43.7395 81.9446 44.1719L82.3597 42.8402C83.6741 42.6153 83.6568 41.6468 83.7087 40.9031C83.7433 40.5053 84.0546 40.2805 84.3659 40.2805C84.6253 40.2805 84.8848 40.4534 84.9021 40.8512C84.9366 41.2836 84.9021 41.7333 85.0231 42.4424C85.1096 42.9266 85.6284 43.5839 86.3721 43.5839C86.4932 43.5839 86.6143 43.5666 86.7353 43.532L87.0121 45.1058C89.5718 44.6216 89.295 42.0792 87.5655 41.2144C86.5797 40.7129 86.2684 40.3497 86.5624 39.9692C86.6489 39.8481 86.7526 39.8135 86.8737 39.8135C87.2369 39.8135 87.7731 40.2113 88.2919 40.5918C88.5167 40.7647 88.8108 40.8512 89.1221 40.8512C89.7966 40.8512 90.523 40.4188 90.8343 39.3984L91.7682 39.9173C91.9239 37.9975 90.7305 37.0463 89.5199 37.0463C88.9491 37.0463 88.3611 37.2538 87.9114 37.6689C87.7385 37.8246 87.5655 37.8937 87.3926 37.8937C86.8391 37.8937 86.4586 37.2019 87.2023 36.8041C87.9114 36.4237 88.5859 35.2476 87.9287 34.5039L89.001 33.5008C88.5167 33.2067 87.9979 33.0684 87.5136 33.0684C86.4413 33.0684 85.4555 33.7602 85.1442 35.3341C85.075 35.6973 84.9193 35.8356 84.7118 35.8356C84.1238 35.8356 83.0861 34.5731 82.3078 33.3278C82.1175 33.0338 81.9446 32.7225 81.7716 32.4285C81.5468 32.0307 81.3047 31.6502 81.0452 31.2697C80.7166 30.7854 80.3707 30.3185 79.9383 29.9034C79.2119 29.177 77.9494 27.9144 76.4966 27.067C76.1507 26.8767 75.7875 26.6865 75.4243 26.5308C74.9919 25.9601 74.5595 25.372 74.179 24.7667C73.1586 23.2101 72.3112 21.5498 71.8269 19.803C72.6225 21.446 73.7294 22.8815 74.9573 24.1614C75.5281 24.7667 76.1161 25.3201 76.7387 25.8736C78.4164 26.7384 79.8173 28.1393 80.6474 28.9521L80.7685 29.0732C81.0106 29.3153 81.2355 29.5575 81.4257 29.8169C81.7024 28.122 81.6333 26.0293 81.0971 24.0403C80.9933 23.6598 80.8723 23.262 80.7339 22.8988C80.2324 21.5671 79.5233 20.3218 78.5374 19.336C78.278 19.0766 78.0013 18.8345 77.7073 18.6096C76.4274 17.6238 74.8017 17.0185 72.7608 17.0185C72.4668 17.0185 72.1728 17.0358 71.8615 17.0531L69.0943 15.7905C70.0801 15.8078 70.8757 15.8424 71.5156 15.8424C74.2828 15.8424 74.058 15.4619 73.6948 13.5248C73.6948 13.5248 71.3599 14.1648 69.5785 14.1648C69.4056 14.1648 69.2326 14.1648 69.077 14.1475C68.2122 14.0783 67.8317 13.6978 67.6933 13.2308C67.5204 12.6082 67.4685 11.6397 67.9528 10.429C68.2641 9.63342 69.0251 8.94161 70.1147 8.94161C70.9448 8.94161 71.948 9.3394 73.0894 10.3771L74.058 11.3456C74.5595 10.7576 74.9573 10.0831 75.2686 9.42588C75.4762 8.52653 74.5077 7.95579 74.5077 7.95579C75.4935 8.07686 75.9777 7.05644 76.1334 6.58947C75.0784 6.01873 73.5737 5.15397 71.9826 4.72159L71.5156 3.13043C70.9103 2.81912 64.9953 1.4528 63.4387 1.4528C63.3523 1.4528 63.3004 1.4528 63.2312 1.4701C63.1101 1.48739 62.9891 1.53928 62.9026 1.60846C63.2312 1.97166 63.5252 2.38674 63.7846 2.83642L62.7296 3.18232C62.1416 2.23109 61.3287 1.43551 60.6023 1.19337C59.6511 2.02354 58.5096 4.49675 61.0174 7.09103V8.59571L60.585 8.18063C59.9797 7.60989 59.5473 7.05644 59.2187 6.52029C54.428 16.8974 62.2973 25.4066 62.2454 29.0732C62.2454 29.0732 63.8884 29.0213 65.0126 28.5716C65.0126 28.5716 65.5142 32.1517 64.4073 35.0919C63.1274 38.5164 61.1039 41.5603 59.4781 44.8118C58.9247 45.9187 58.4404 47.0429 58.0426 48.2017C58.0253 48.2363 58.0253 48.2708 58.0081 48.3054C57.6794 49.0145 57.126 49.6372 56.5034 49.9831C56.4861 50.0004 56.4515 50.0004 56.4342 50.0177C55.6213 50.4327 54.6701 50.3809 53.8745 49.8966C53.0962 49.4296 52.6811 48.634 52.6984 47.752C52.7503 45.7803 53.9091 44.3275 55.1543 42.7883C55.8116 41.9581 56.5034 41.1106 57.0395 40.1421C58.7172 37.1155 59.1322 33.691 58.2329 30.232C57.8178 28.6408 56.8839 27.2399 55.9845 25.8736C55.777 25.5623 55.5867 25.2683 55.3792 24.9569C55.2927 24.8359 55.2235 24.7148 55.1543 24.5938C55.5867 24.196 55.6732 23.7117 55.5348 23.0718C55.4138 22.4837 55.1025 21.7746 54.722 20.8926C54.2896 19.9241 53.788 18.8172 53.5459 17.6584C53.1481 15.7905 53.1481 14.2858 53.3902 12.7984C53.027 13.3865 52.7157 14.0091 52.4563 14.649C52.1623 15.3754 51.9547 16.1364 51.851 16.932C51.7472 17.7276 51.7472 18.5404 51.8683 19.3533C51.5915 18.5923 51.4186 17.7622 51.3667 16.932C51.3148 16.0845 51.3667 15.2371 51.5224 14.4069C51.6607 13.6459 51.8683 12.8849 52.145 12.1585C50.9516 13.9053 50.3463 16.0326 50.3117 18.5923C50.2771 21.8092 51.384 24.5073 52.439 25.1472C52.5774 25.2337 52.6984 25.2856 52.8195 25.3201C53.2692 25.4239 53.961 25.1126 53.961 25.1126C54.2723 25.6315 54.5836 26.0984 54.9122 26.6C55.7943 27.9317 56.6244 29.1943 56.9876 30.5606C57.8005 33.7256 57.4546 36.735 55.9153 39.5022C55.4311 40.367 54.7911 41.1798 54.1512 41.9581C52.8368 43.6012 51.4705 45.2961 51.4186 47.7001C51.384 49.0491 52.0585 50.2771 53.2173 50.9862C53.8399 51.3667 54.5663 51.5742 55.2927 51.5742C55.6213 51.5742 55.9672 51.5223 56.2958 51.4532C56.5898 51.3667 56.8839 51.2629 57.1606 51.1073C57.2471 51.0554 57.3335 51.0035 57.42 50.9516C57.3681 51.3667 57.3508 51.7991 57.3681 52.2142C57.3681 52.3179 57.3854 52.439 57.3854 52.5428C57.4373 53.2519 57.5411 53.9783 57.593 54.6874C57.6794 55.604 57.8351 55.7078 57.5584 56.6071C57.2298 57.6448 55.8289 58.2675 54.3761 58.5961C53.4594 58.8036 52.2142 58.9939 51.2456 59.1149C50.3809 59.236 49.741 59.9451 49.6891 60.8098C49.568 62.9372 49.395 66.7075 49.5507 67.7625C49.6545 68.9386 50.3463 69.9244 51.4013 70.4433ZM71.2216 4.98102C71.2216 5.96684 70.8584 7.00455 69.2672 6.93537C69.2672 6.93537 68.8521 6.20898 67.6588 5.01561C67.6415 5.01561 69.6304 5.4134 71.2216 4.98102ZM67.7106 19.8203C68.1084 20.5986 68.5235 21.3596 68.9732 22.0859C69.4402 22.8123 69.9417 23.4869 70.4952 24.1441C70.9794 24.7321 71.4983 25.3374 71.9999 25.9255C71.4291 25.9601 70.8584 26.0811 70.253 26.2887C69.9763 25.8217 69.6996 25.3547 69.4229 24.8878C68.9732 24.1268 68.5581 23.3139 68.1949 22.4837C67.849 21.6536 67.555 20.8234 67.2956 19.9759C67.0188 19.1458 66.7767 18.2983 66.5346 17.4508C66.9324 18.2464 67.3129 19.042 67.7106 19.8203ZM65.0472 25.4758C64.4764 24.317 63.9403 23.141 63.4906 21.9303C63.0236 20.7196 62.6432 19.4744 62.3318 18.2291C62.0378 16.9666 61.8303 15.704 61.7092 14.4242C61.9859 15.6694 62.3318 16.8974 62.7642 18.0908C63.1966 19.2841 63.7155 20.4429 64.2862 21.5671C65.3585 23.6252 66.6383 25.5796 67.9701 27.4993C67.3993 27.8279 66.8805 28.0528 66.4481 28.1911C65.9638 27.2918 65.4969 26.3924 65.0472 25.4758ZM97.7524 5.11938H98.9457C99.2571 6.1225 99.7586 6.96996 100.381 7.59259H102.803C102.197 7.24669 101.644 6.67595 101.211 5.91496C100.554 4.79077 100.174 3.35527 100.156 1.86789H96.732C96.7147 3.35527 96.3342 4.79077 95.6769 5.91496C95.2273 6.67595 94.6911 7.24669 94.0858 7.59259H96.3515C96.9395 6.96996 97.4411 6.1225 97.7524 5.11938ZM90.7651 7.59259H91.0245C90.4192 7.24669 89.8658 6.67595 89.4334 5.91496C88.7762 4.79077 88.3957 3.35527 88.3784 1.86789H85.6976C85.6803 2.02354 85.6803 2.1792 85.6803 2.35215C85.6457 5.18856 87.9979 7.59259 90.7651 7.59259ZM109.686 5.11938H110.879C111.191 6.1225 111.692 6.96996 112.315 7.59259H114.892C114.287 7.24669 113.75 6.67595 113.301 5.91496C112.644 4.79077 112.263 3.35527 112.246 1.86789H108.51C108.493 3.35527 108.112 4.79077 107.455 5.91496C107.005 6.67595 106.469 7.24669 105.864 7.59259H108.285C108.873 6.96996 109.375 6.1225 109.686 5.11938ZM66.3616 70.6162C66.6902 70.4087 67.0361 70.2011 67.4166 69.9936C67.3302 69.959 67.261 69.9244 67.1745 69.9071C67.0015 69.8379 66.8459 69.7688 66.6902 69.6996C65.5487 69.2499 64.6494 68.9905 63.9057 68.8694C63.9057 68.9386 63.923 68.9905 63.923 69.0597L64.1132 70.8584L62.4356 70.1665L62.3664 70.1492C62.2454 70.3741 62.107 70.5643 61.9513 70.7373C61.519 71.187 60.9482 71.4291 60.3083 71.4291C60.5158 71.7404 60.6542 72.0863 60.7407 72.4495C61.0001 73.591 60.5677 74.8362 59.5646 75.9431L58.8382 76.7387L58.0426 76.0296L57.2989 75.3724C57.1952 75.3897 57.0914 75.3897 56.9876 75.3897C55.9326 75.3897 54.9987 74.5595 54.7047 73.7466C54.6701 73.6429 54.6355 73.5391 54.6182 73.4353C54.5144 73.5218 54.3934 73.6083 54.2896 73.6775L54.1685 74.8535L54.0475 76.1161L52.8195 75.8048C51.9029 75.5799 50.6057 75.113 50.0177 73.8677C49.741 73.2797 49.6718 72.6225 49.7928 71.8788C47.1121 71.5675 45.0021 70.8584 45.0021 70.8584C46.5413 75.4762 50.917 78.0704 55.1543 78.0704C57.6276 78.0704 60.0489 77.1884 61.813 75.2859C62.2454 74.8362 62.6259 74.4039 63.0064 74.0234C63.5944 72.8127 64.7186 71.6712 66.3616 70.6162ZM121.81 5.11938H123.003C123.315 6.1225 123.816 6.96996 124.439 7.59259H126.808C126.203 7.24669 125.649 6.67595 125.217 5.91496C124.56 4.79077 124.179 3.35527 124.162 1.86789H120.617C120.599 3.35527 120.219 4.79077 119.562 5.91496C119.112 6.67595 118.576 7.22939 117.97 7.59259H120.392C120.997 6.96996 121.499 6.1225 121.81 5.11938ZM80.0767 19.4398C80.682 20.2354 81.1836 21.1347 81.5641 22.0687L83.5184 20.2008C83.3109 19.6646 83.2417 19.042 83.3109 18.4021C83.3109 18.3675 83.3282 18.3329 83.3282 18.281L84.3659 18.7826C84.3313 19.5609 84.6253 20.3737 85.3344 20.7542C85.5593 20.8753 85.7495 20.9272 86.0089 20.9272C86.0089 20.9272 86.0089 20.9272 86.0262 20.9272L85.9917 19.9759C86.3376 19.9759 86.8045 19.6127 86.8045 19.1112C86.8045 18.5404 86.4413 18.2291 85.9917 18.0908V16.9839C86.8564 17.1395 87.4963 17.6584 87.7558 18.3675L88.8972 18.3848C88.9491 17.52 88.534 16.7417 87.652 16.4477V15.3235C88.3957 15.4792 88.8799 15.8424 89.174 16.171C89.2604 16.2575 89.3296 16.3612 89.4161 16.465L90.2809 16.4823C90.3154 15.6521 89.9004 14.9085 89.1221 14.649V13.5248C89.6063 13.6286 90.0214 13.8189 90.3846 14.1302H91.1975C91.1802 13.594 90.8689 13.0752 90.4365 12.7466C90.0733 12.4871 89.6063 12.3315 89.1394 12.2623C88.9664 12.245 88.7762 12.2277 88.6032 12.2277C88.413 12.2277 88.24 12.245 88.0498 12.2796C87.5828 12.3488 87.1158 12.539 86.718 12.7984C86.0262 13.2654 85.369 13.8016 84.7291 14.3377C83.6914 15.2025 82.6883 16.1191 81.5987 16.932C81.2528 17.1914 80.1978 17.987 79.3676 18.6269C79.627 18.9036 79.8519 19.1631 80.0767 19.4398ZM80.682 11.2765C80.8377 10.4463 80.4226 9.84096 79.6097 9.65072C79.5751 9.65072 79.5405 9.63342 79.506 9.63342C79.6962 10.3425 79.6097 11.1208 79.1428 11.8818C78.7969 12.4179 78.2607 12.833 77.5862 13.0752C77.811 13.1098 78.0359 13.1098 78.2434 13.1098C79.6789 13.1098 80.4572 12.5217 80.682 11.2765Z\",\n fill: \"white\"\n }), jsx(\"path\", {\n d: \"M66.5691 89.1393C65.2201 89.1393 64.217 89.6582 63.5598 90.6959C62.9544 89.6582 62.0205 89.1393 60.7753 89.1393C59.53 89.1393 58.5961 89.6236 57.9734 90.5748V89.3988H55.8461V99.2051H57.9734V93.7053C57.9734 92.8578 58.181 92.2179 58.5788 91.7682C58.9766 91.3358 59.5127 91.111 60.1526 91.111C60.7407 91.111 61.1903 91.3012 61.5189 91.6644C61.8476 92.0449 62.0032 92.5638 62.0032 93.2383V99.1878H64.1305V93.688C64.1305 92.8232 64.3208 92.1833 64.7013 91.7509C65.0818 91.3185 65.6006 91.111 66.2578 91.111C66.8459 91.111 67.3128 91.3012 67.6587 91.6644C68.0046 92.0449 68.1776 92.5638 68.1776 93.2383V99.1878H70.3049V93.0999C70.3049 91.8893 69.959 90.9207 69.2845 90.1943C68.5754 89.5025 67.676 89.1393 66.5691 89.1393Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M180.06 89.1393C178.676 89.1393 177.656 89.6409 177.016 90.644V85.4555H174.889V99.1878H177.016V93.9301C177.016 92.9789 177.241 92.2698 177.708 91.8028C178.158 91.3358 178.763 91.111 179.507 91.111C180.181 91.111 180.717 91.3012 181.115 91.699C181.513 92.0968 181.703 92.6502 181.703 93.3939V99.2051H183.83V93.1864C183.83 91.9238 183.484 90.938 182.793 90.2289C182.084 89.5025 181.184 89.1393 180.06 89.1393Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M36.1988 94.1203H40.7993C40.5918 95.0716 40.1075 95.8326 39.3292 96.4033C38.5683 96.9741 37.5651 97.2508 36.3545 97.2508C34.8325 97.2508 33.6045 96.7838 32.6706 95.8499C31.7367 94.9159 31.2697 93.7572 31.2697 92.3389C31.2697 90.9207 31.7367 89.7447 32.6706 88.8107C33.6045 87.8768 34.7806 87.3925 36.2161 87.3925C37.0982 87.3925 37.911 87.6001 38.6374 87.9979C39.3638 88.3956 39.9 88.9318 40.2632 89.5717L41.8198 87.8941C41.2663 87.1677 40.5745 86.5451 39.727 86.0781C38.672 85.4901 37.496 85.196 36.2161 85.196C34.1753 85.196 32.4631 85.8878 31.0794 87.2715C29.6958 88.6551 29.004 90.3327 29.004 92.3216C29.004 94.3279 29.6958 96.0055 31.0794 97.3891C32.4631 98.7555 34.2099 99.4473 36.3372 99.4473C38.3434 99.4473 39.9692 98.8419 41.1971 97.6486C42.4424 96.4552 43.065 94.9159 43.065 93.0307V92.1141H36.1988V94.1203Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M191.233 91.4396V89.3988H188.794V86.6488H186.667V89.3988H184.868V91.4396H186.667V96.1439C186.667 97.4237 187.013 98.3058 187.722 98.79C188.431 99.2743 189.59 99.4127 191.215 99.2051V97.3027C190.679 97.3373 190.23 97.3372 189.866 97.32C189.503 97.3027 189.226 97.1989 189.054 97.0259C188.863 96.853 188.777 96.559 188.777 96.1439V91.4396C188.777 91.4396 191.233 91.4396 191.233 91.4396Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M49.4642 89.1393C47.9422 89.1393 46.697 89.6409 45.7285 90.6267C44.7772 91.6126 44.293 92.8405 44.293 94.3106C44.293 95.798 44.7772 97.0432 45.7631 98.0118C46.7489 98.9803 48.0287 99.4819 49.6372 99.4819C51.3321 99.4819 52.6638 98.8938 53.6151 97.7523L52.1796 96.3168C51.6088 97.1297 50.7787 97.5275 49.6545 97.5275C48.8416 97.5275 48.1498 97.32 47.5963 96.9222C47.0256 96.5244 46.6797 95.9536 46.524 95.21H54.3415C54.3933 94.8468 54.4279 94.5527 54.4279 94.3279C54.4279 92.8924 53.961 91.6644 53.0443 90.6613C52.0931 89.6409 50.8997 89.1393 49.4642 89.1393ZM46.4895 93.4804C46.6278 92.7367 46.9737 92.1487 47.4926 91.7163C48.0114 91.2839 48.6686 91.0764 49.4469 91.0764C50.1387 91.0764 50.7441 91.2839 51.2629 91.6817C51.7818 92.0795 52.1104 92.6849 52.2487 93.4804H46.4895Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M76.9117 89.1393C75.3897 89.1393 74.1445 89.6409 73.1759 90.6267C72.2074 91.6126 71.7231 92.8405 71.7231 94.3106C71.7231 95.798 72.2074 97.0432 73.1932 98.0118C74.1791 98.9803 75.4589 99.4819 77.0674 99.4819C78.7623 99.4819 80.094 98.8938 81.0452 97.7523L79.6097 96.3168C79.039 97.1297 78.2088 97.5275 77.0846 97.5275C76.2718 97.5275 75.58 97.32 75.0265 96.9222C74.4558 96.5244 74.1099 95.9536 73.9542 95.21H81.7716C81.8235 94.8468 81.8581 94.5527 81.8581 94.3279C81.8581 92.8924 81.3911 91.6644 80.4745 90.6613C79.5233 89.6409 78.3472 89.1393 76.9117 89.1393ZM73.9196 93.4804C74.058 92.7367 74.4039 92.1487 74.9227 91.7163C75.4416 91.2839 76.0988 91.0764 76.8771 91.0764C77.5689 91.0764 78.1742 91.2839 78.6931 91.6817C79.212 92.0795 79.5406 92.6849 79.6789 93.4804H73.9196Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M87.9806 89.1393C86.4586 89.1393 85.2133 89.6409 84.2448 90.6267C83.2763 91.6126 82.792 92.8405 82.792 94.3106C82.792 95.798 83.2763 97.0432 84.2621 98.0118C85.2479 98.9803 86.5278 99.4819 88.1362 99.4819C89.8311 99.4819 91.1629 98.8938 92.1141 97.7523L90.6786 96.3168C90.1079 97.1297 89.2777 97.5275 88.1535 97.5275C87.3406 97.5275 86.6488 97.32 86.0954 96.9222C85.5246 96.5244 85.1787 95.9536 85.0231 95.21H92.8405C92.8924 94.8468 92.927 94.5527 92.927 94.3279C92.927 92.8924 92.46 91.6644 91.5434 90.6613C90.6094 89.6409 89.4333 89.1393 87.9806 89.1393ZM85.0058 93.4804C85.1441 92.7367 85.49 92.1487 86.0089 91.7163C86.5278 91.2839 87.185 91.0764 87.9633 91.0764C88.6551 91.0764 89.2604 91.2839 89.7793 91.6817C90.2981 92.0795 90.6267 92.6849 90.7651 93.4804H85.0058Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M116.777 89.1393C115.255 89.1393 114.01 89.6409 113.041 90.6267C112.073 91.6126 111.589 92.8405 111.589 94.3106C111.589 95.798 112.073 97.0432 113.059 98.0118C114.044 98.9803 115.324 99.4819 116.933 99.4819C118.628 99.4819 119.959 98.8938 120.911 97.7523L119.475 96.3168C118.904 97.1297 118.074 97.5275 116.95 97.5275C116.137 97.5275 115.445 97.32 114.892 96.9222C114.321 96.5244 113.975 95.9536 113.82 95.21H121.637C121.689 94.8468 121.723 94.5527 121.723 94.3279C121.723 92.8924 121.257 91.6644 120.34 90.6613C119.406 89.6409 118.213 89.1393 116.777 89.1393ZM113.802 93.4804C113.941 92.7367 114.287 92.1487 114.805 91.7163C115.324 91.2839 115.981 91.0764 116.76 91.0764C117.452 91.0764 118.057 91.2839 118.576 91.6817C119.095 92.0795 119.423 92.6849 119.562 93.4804H113.802Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M158.199 89.1393C156.677 89.1393 155.432 89.6409 154.463 90.6267C153.495 91.6126 153.01 92.8405 153.01 94.3106C153.01 95.798 153.495 97.0432 154.481 98.0118C155.466 98.9803 156.746 99.4819 158.355 99.4819C160.05 99.4819 161.381 98.8938 162.333 97.7523L160.897 96.3168C160.326 97.1297 159.496 97.5275 158.372 97.5275C157.559 97.5275 156.867 97.32 156.314 96.9222C155.743 96.5244 155.397 95.9536 155.242 95.21H163.059C163.111 94.8468 163.145 94.5527 163.145 94.3279C163.145 92.8924 162.678 91.6644 161.762 90.6613C160.828 89.6409 159.652 89.1393 158.199 89.1393ZM155.224 93.4804C155.363 92.7367 155.708 92.1487 156.227 91.7163C156.746 91.2839 157.403 91.0764 158.182 91.0764C158.873 91.0764 159.479 91.2839 159.998 91.6817C160.517 92.0795 160.845 92.6849 160.984 93.4804H155.224Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M108.337 86.6488H106.21V89.3988H104.411V91.4396H106.21V96.1439C106.21 97.4237 106.556 98.3058 107.265 98.79C107.974 99.2743 109.133 99.4127 110.758 99.2051V97.3027C110.222 97.3373 109.772 97.3372 109.409 97.32C109.046 97.3027 108.769 97.1989 108.596 97.0259C108.406 96.853 108.32 96.559 108.32 96.1439V91.4396H110.758V89.3988H108.32L108.337 86.6488C108.337 86.6488 108.32 86.6488 108.337 86.6488Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M135.819 94.5181C135.819 95.3483 135.577 96.0228 135.075 96.5244C134.591 97.0259 133.847 97.2681 132.862 97.2681C131.876 97.2681 131.149 97.0259 130.648 96.5244C130.164 96.0228 129.904 95.3656 129.904 94.5181V85.4728H127.638V94.6565C127.638 96.1266 128.123 97.2854 129.091 98.1674C130.06 99.0322 131.305 99.4646 132.844 99.4646C134.384 99.4646 135.629 99.0322 136.597 98.1674C137.566 97.3027 138.05 96.1266 138.05 94.6565V85.4728H135.785V94.5181H135.819Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M143.36 86.6488H141.232V89.3988H139.434V91.4396H141.232V96.1439C141.232 97.4237 141.578 98.3058 142.287 98.79C142.996 99.2743 144.155 99.4127 145.781 99.2051V97.3027C145.245 97.3373 144.795 97.3372 144.432 97.32C144.069 97.3027 143.792 97.1989 143.619 97.0259C143.429 96.853 143.342 96.559 143.342 96.1439V91.4396H145.781V89.3988H143.342V86.6488H143.36Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M99.6029 89.1393C98.2193 89.1393 97.1989 89.6409 96.559 90.644V89.3815H94.4316V99.1878H96.559V93.9301C96.559 92.9789 96.7838 92.2698 97.2508 91.8028C97.7004 91.3358 98.3058 91.111 99.0495 91.111C99.724 91.111 100.26 91.3012 100.658 91.699C101.056 92.0968 101.246 92.6503 101.246 93.394V99.2051H103.373V93.1864C103.373 91.9239 103.027 90.938 102.336 90.2289C101.626 89.5025 100.727 89.1393 99.6029 89.1393Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M149.655 91.0418V89.3987H147.528V99.2051H149.655V94.2587C149.655 93.2556 149.949 92.5292 150.555 92.0968C151.16 91.6644 151.869 91.4742 152.682 91.5261V89.2258C151.195 89.2258 150.191 89.8311 149.655 91.0418Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M172.122 95.798C171.672 96.7319 170.807 97.3546 169.752 97.5102C169.735 97.5102 169.718 97.5102 169.7 97.5102C169.562 97.5275 169.406 97.5448 169.251 97.5448C167.521 97.5448 166.189 96.2131 166.189 94.3106C166.189 92.4081 167.521 91.0764 169.251 91.0764C169.406 91.0764 169.545 91.0937 169.683 91.111C169.7 91.111 169.718 91.111 169.735 91.111C170.79 91.2494 171.637 91.872 172.104 92.7713L173.522 91.3531C172.589 90.0041 171.032 89.1566 169.251 89.1566C166.38 89.1566 164.097 91.405 164.097 94.3279C164.097 97.2335 166.38 99.4819 169.251 99.4819C171.049 99.4819 172.606 98.5998 173.54 97.2508L172.122 95.798Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M110.274 13.0405C111.974 13.0405 113.353 12.3514 113.353 11.5013C113.353 10.6512 111.974 9.96201 110.274 9.96201C108.574 9.96201 107.196 10.6512 107.196 11.5013C107.196 12.3514 108.574 13.0405 110.274 13.0405Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M101.471 11.5013L98.0118 9.75447L94.5355 11.5013L98.0118 13.2308L101.471 11.5013Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M126.013 11.5013L122.536 9.75447L119.077 11.5013L122.536 13.2308L126.013 11.5013Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M175.183 69.8206C175.148 69.8379 173.125 70.4951 170.565 70.7892C171.395 70.0801 171.949 69.0769 172.122 67.9355C172.243 67.0707 172.208 64.6494 171.983 60.7753C171.914 59.3916 170.859 58.2502 169.493 58.0772C168.213 57.9043 167.158 57.7313 166.449 57.5756C164.979 57.247 164.183 56.7109 164.079 56.3304C163.941 55.9153 163.958 55.8634 164.01 55.4829C164.028 55.31 164.062 55.1024 164.097 54.8257C164.131 54.5144 164.149 54.2204 164.2 53.8918C164.252 53.494 164.287 53.0789 164.322 52.6638C164.322 52.6465 164.322 52.6119 164.322 52.5946C164.65 52.6638 164.996 52.6984 165.325 52.6984C166.241 52.6984 167.158 52.4563 167.954 51.9547C169.441 51.0381 170.306 49.4642 170.271 47.7174C170.202 44.9502 168.663 43.0131 167.296 41.3182C166.674 40.5399 166.068 39.7962 165.636 39.0179C164.235 36.4928 163.906 33.7602 164.667 30.8719C164.979 29.6785 165.757 28.4852 166.587 27.2399C166.76 26.9805 166.933 26.7038 167.106 26.4443C167.227 26.4616 167.348 26.4789 167.469 26.4789C167.988 26.4789 168.42 26.306 168.732 26.1157C170.721 24.8878 171.413 20.8753 171.378 18.6269C171.326 13.9226 169.475 10.5328 165.757 8.26709L164.477 7.48881L164.961 8.90702C166.086 12.1758 166.691 14.1993 165.982 17.4854C165.757 18.5404 165.307 19.5436 164.875 20.5121C164.2 22.0341 163.543 23.5041 164.114 24.6975C163.976 24.9051 163.837 25.1299 163.699 25.3374C162.748 26.7729 161.762 28.2603 161.312 30.0244C160.344 33.7602 160.793 37.4614 162.609 40.7301C163.18 41.7679 163.906 42.6672 164.598 43.532C165.757 44.9848 166.777 46.23 166.812 47.8385C166.829 48.513 166.397 48.8762 166.155 49.0318C165.671 49.3258 165.1 49.3431 164.598 49.0837C164.2 48.8762 163.82 48.4611 163.578 47.9768C163.197 46.8526 162.713 45.6766 162.056 44.3794C161.468 43.2034 160.828 42.0446 160.205 40.9204C159.064 38.845 157.974 36.8906 157.179 34.7633C156.573 33.1203 156.504 31.2351 156.539 30.0244C157.403 30.1801 158.164 30.2147 158.303 30.2147L159.427 30.2493L159.41 29.1251C159.392 28.2776 160.067 26.8075 160.828 25.0953C162.921 20.4602 166.086 13.4729 162.021 5.46528C161.987 5.41339 161.969 5.34421 161.935 5.29232C162.108 4.73888 162.16 4.23732 162.142 3.82223C162.125 2.28296 161.364 1.0723 160.672 0.449675L160.188 0.0172952L159.583 0.224837C159.185 0.363199 158.804 0.605331 158.424 0.899349C158.164 0.657217 157.836 0.484265 157.455 0.432379C157.352 0.415084 157.248 0.415084 157.109 0.415084C155.432 0.415084 149.327 1.7987 148.531 2.21378L148.116 2.42132L147.978 2.871L147.684 3.89142C146.335 4.34109 145.107 5.0156 144.19 5.51716C144.069 5.58634 143.948 5.65552 143.827 5.70741L143.135 6.0879L143.291 6.86619C143.308 6.98725 143.913 10.0312 145.677 12.0893L145.764 12.1758C145.331 12.2104 144.951 12.245 144.605 12.245C143.55 12.245 142.72 11.9337 142.322 11.311C141.699 10.3425 142.149 9.30481 142.876 8.76865C142.478 8.5957 142.097 8.49193 141.63 8.49193C141.354 8.49193 141.042 8.52652 140.696 8.613C139.313 8.92431 138.534 10.0831 138.794 11.484C139.088 13.1616 140.264 14.1993 142.305 14.1993C142.72 14.1993 143.152 14.1647 143.636 14.0783C144.328 13.9572 145.037 13.7497 145.746 13.5248C145.746 13.5594 145.729 13.5767 145.729 13.6113C145.556 14.5798 145.401 15.41 145.937 16.0845C144.449 16.3612 143.1 16.9839 141.959 17.9178C141.025 17.2087 139.762 16.2575 139.572 16.1018C138.828 15.5484 138.137 14.943 137.393 14.3204C137.099 14.061 136.788 13.8016 136.476 13.5421C135.836 13.006 135.145 12.4525 134.401 11.9337C133.847 11.5532 133.208 11.311 132.516 11.2246V8.16332C134.712 7.19479 136.251 4.96372 136.251 2.42132C136.251 1.85058 136.182 1.31443 136.027 0.795578H131.374C131.409 1.10689 131.426 1.4182 131.426 1.74681C131.426 4.51404 130.042 6.95266 128.33 6.95266C126.618 6.95266 125.234 4.51404 125.234 1.74681C125.234 1.4182 125.252 1.10689 125.286 0.795578H119.458C119.492 1.10689 119.51 1.4182 119.51 1.74681C119.51 4.51404 118.126 6.95266 116.414 6.95266C114.702 6.95266 113.318 4.51404 113.318 1.74681C113.318 1.4182 113.335 1.10689 113.37 0.795578H107.351C107.386 1.10689 107.403 1.4182 107.403 1.74681C107.403 4.51404 106.019 6.95266 104.307 6.95266C102.595 6.95266 101.211 4.51404 101.211 1.74681C101.211 1.4182 101.229 1.10689 101.263 0.795578H95.5732C95.6078 1.10689 95.6251 1.4182 95.6251 1.74681C95.6251 4.51404 94.2415 6.95266 92.5292 6.95266C90.817 6.95266 89.4334 4.51404 89.4334 1.74681C89.4334 1.4182 89.4507 1.10689 89.4853 0.795578H84.7637C84.6253 1.29714 84.5562 1.81599 84.5562 2.35214C84.5562 4.80806 85.9917 7.00455 88.0498 8.04226V11.2246C87.358 11.311 86.6835 11.5532 86.1127 11.951C85.369 12.4525 84.6772 13.0233 84.0373 13.5594C83.726 13.8188 83.432 14.0783 83.1207 14.3377C82.377 14.9603 81.6852 15.5657 80.9415 16.1191C80.7512 16.2575 79.4887 17.2087 78.5547 17.9351C77.4132 17.0012 76.0815 16.3785 74.5768 16.1018C75.113 15.41 74.9573 14.5798 74.7844 13.6286C74.7844 13.6113 74.7671 13.5767 74.7671 13.5421C75.4762 13.7843 76.1853 13.9745 76.8771 14.0956C77.3614 14.182 77.7937 14.2166 78.2088 14.2166C80.2497 14.2166 81.4257 13.1789 81.7197 11.5013C81.9792 10.1004 81.2009 8.94161 79.8173 8.63029C79.4714 8.56111 79.1601 8.50923 78.8833 8.50923C78.4164 8.50923 78.0359 8.613 77.6381 8.78595C78.3645 9.3221 78.8142 10.3598 78.1915 11.3283C77.7937 11.9683 76.9463 12.2623 75.9086 12.2623C75.5454 12.2623 75.1649 12.2277 74.7844 12.1585L74.8709 12.072C76.635 10.0139 77.2403 6.98725 77.2576 6.84889L77.4132 6.07061L76.7214 5.69011C76.6004 5.62093 76.4793 5.56905 76.3582 5.49987C75.4243 4.99831 74.2136 4.32379 72.8646 3.87412L72.5706 2.8537L72.4322 2.40403L72.0171 2.19649C71.2216 1.7814 65.1164 0.397789 63.4387 0.397789C63.3177 0.397789 63.1966 0.397789 63.0928 0.415084C62.7123 0.46697 62.3837 0.639922 62.1243 0.882054C61.7438 0.570741 61.346 0.345904 60.9655 0.207542L60.3602 0L59.8586 0.397789C59.1668 1.02042 58.4058 2.23108 58.3885 3.77035C58.3885 4.18543 58.4404 4.68699 58.5961 5.24044C58.5615 5.30962 58.5269 5.36151 58.5096 5.41339C54.4452 13.4211 57.6103 20.4083 59.703 25.0434C60.464 26.7383 61.1385 28.2084 61.1212 29.0732L61.1039 30.1974L62.2281 30.1628C62.3491 30.1628 63.1101 30.1282 63.9922 29.9725C64.0268 31.1832 63.9749 33.0857 63.3523 34.7114C62.5567 36.8387 61.4671 38.7931 60.3256 40.8685C59.703 41.9927 59.0631 43.1515 58.475 44.3275C57.8351 45.6247 57.3335 46.8008 56.953 47.9249C56.7109 48.4092 56.3477 48.8243 55.9326 49.0318C55.4311 49.2913 54.8603 49.274 54.3761 48.9799C54.1166 48.8243 53.7016 48.4611 53.7188 47.7866C53.7534 46.1954 54.7566 44.9329 55.9326 43.4801C56.6244 42.6153 57.3335 41.7333 57.9216 40.6783C59.7376 37.4095 60.1872 33.7083 59.2187 29.9725C58.769 28.2084 57.7832 26.7211 56.832 25.2856C56.6936 25.078 56.5553 24.8532 56.4169 24.6456C56.9876 23.4523 56.3477 21.9822 55.6559 20.4602C55.2235 19.4917 54.7739 18.4885 54.549 17.4335C53.8399 14.1302 54.4452 12.1239 55.5694 8.85513L56.0537 7.43693L54.7739 8.21521C51.0554 10.4809 49.2048 13.8707 49.1529 18.575C49.1183 20.8234 49.8274 24.8532 51.7991 26.0638C52.1104 26.2541 52.5255 26.427 53.0616 26.427C53.1827 26.427 53.2865 26.4097 53.4248 26.3924C53.5978 26.6519 53.7707 26.9286 53.9437 27.188C54.7739 28.4333 55.5521 29.6266 55.8634 30.82C56.6071 33.7083 56.2785 36.4582 54.8949 38.966C54.4625 39.7443 53.8745 40.488 53.2346 41.2663C51.8683 42.9612 50.329 44.881 50.2598 47.6655C50.2252 49.395 51.09 50.9862 52.5774 51.9028C53.3729 52.4044 54.2896 52.6465 55.2062 52.6465C55.5521 52.6465 55.8807 52.6119 56.2094 52.5427C56.2094 52.56 56.2094 52.5946 56.2094 52.6119C56.2439 53.027 56.2785 53.4421 56.3304 53.8399C56.365 54.1685 56.3996 54.4625 56.4342 54.7738C56.4515 55.0506 56.4861 55.2581 56.5207 55.4311C56.5726 55.7943 56.5898 55.8634 56.4515 56.2785C56.3304 56.659 55.5521 57.1952 54.082 57.5238C53.3729 57.6794 52.3179 57.8524 51.0381 58.0253C49.6718 58.2156 48.6168 59.3571 48.5476 60.7234C48.34 64.5975 48.2882 67.0188 48.4092 67.8836C48.5822 69.0251 49.1356 70.0282 49.9658 70.7373C47.4061 70.4433 45.3653 69.7687 45.348 69.7687L43.2899 69.0769L43.9817 71.1351C44.7945 73.5564 46.3338 75.5972 48.4611 77.0327C50.4328 78.3645 52.8022 79.0909 55.1543 79.0909C58.0253 79.0909 60.6369 78.0186 62.5221 76.0642C62.5394 76.6003 62.6432 77.1192 62.8507 77.6554L63.8019 80.0248L64.8569 77.7072C64.9261 77.5689 66.5346 74.179 70.3741 73.885C72.0171 73.7639 73.885 73.5218 75.3378 72.3111C75.3378 72.3111 75.3378 72.3111 75.3551 72.3111C75.3551 72.7089 75.3897 73.0894 75.4935 73.4699C76.0123 75.6145 77.8629 76.7041 77.9321 76.7387L79.6443 77.7245L79.5406 75.7529C79.506 74.9054 79.4541 73.9369 79.6962 73.1413C80.1286 71.7058 81.6333 71.1697 82.4807 70.9621C82.6883 70.9102 82.8958 70.8583 83.0861 70.8238C84.487 70.5124 85.6285 70.253 86.8045 69.5612C86.303 70.547 86.0954 71.5502 86.1992 72.5706C86.4413 75.113 88.5167 76.7041 88.6032 76.7733L90.9727 78.5547L90.3154 75.6664C90.0733 74.5595 89.8831 72.0344 90.9035 71.3772C92.166 70.547 93.1173 70.4433 94.2242 70.3222C95.1408 70.2184 96.1266 70.0974 97.2854 69.5958C96.3861 71.5847 96.7666 73.2105 96.8011 73.297L97.3546 75.4935L98.7209 73.6775C98.7382 73.6429 101.298 70.3395 104.93 70.3395C107.559 70.3395 109.686 71.6366 109.703 71.6539L110.274 71.9998L110.845 71.6539C110.862 71.6366 112.989 70.3395 115.618 70.3395C119.25 70.3395 121.81 73.6602 121.827 73.6775L123.194 75.4935L123.747 73.297C123.764 73.2105 124.162 71.5847 123.263 69.5958C124.422 70.0974 125.407 70.2184 126.324 70.3222C127.431 70.4433 128.399 70.5643 129.645 71.3772C130.665 72.0517 130.492 74.5595 130.233 75.6664L129.576 78.5547L131.945 76.7733C132.031 76.7041 134.107 75.113 134.349 72.5706C134.453 71.5502 134.245 70.547 133.744 69.5612C134.92 70.2357 136.061 70.4951 137.462 70.8238C137.652 70.8756 137.86 70.9102 138.067 70.9621C138.915 71.1524 140.42 71.7058 140.852 73.1413C141.094 73.9369 141.042 74.9054 141.008 75.7529L140.904 77.7245L142.616 76.7387C142.703 76.6868 144.553 75.6145 145.055 73.4699C145.141 73.0894 145.193 72.6916 145.193 72.3111C145.193 72.3111 145.193 72.3111 145.21 72.3111C146.663 73.5218 148.531 73.7466 150.174 73.885C154.014 74.179 155.622 77.5689 155.691 77.7072L156.746 80.0248L157.697 77.6554C157.905 77.1192 158.026 76.5831 158.026 76.0642C159.911 78.0186 162.523 79.0909 165.394 79.0909C167.746 79.0909 170.115 78.3645 172.087 77.0327C174.214 75.5972 175.771 73.5564 176.567 71.1351L177.258 69.0769L175.183 69.8206ZM142.287 13.1097C140.835 13.1097 140.074 12.5217 139.849 11.2765C139.693 10.4463 140.108 9.84096 140.921 9.65071C140.956 9.65071 140.99 9.63341 141.025 9.63341C140.835 10.3425 140.921 11.1208 141.388 11.8818C141.734 12.4179 142.27 12.833 142.945 13.0752C142.72 13.0924 142.495 13.1097 142.287 13.1097ZM79.1255 11.8818C79.6097 11.1381 79.6789 10.3425 79.4887 9.63341C79.5233 9.63341 79.5578 9.65071 79.5924 9.65071C80.4053 9.82366 80.8204 10.4463 80.6647 11.2765C80.4399 12.5217 79.6616 13.1097 78.2261 13.1097C78.0186 13.1097 77.7937 13.0924 77.5689 13.0752C78.2434 12.833 78.7796 12.4352 79.1255 11.8818ZM142.011 19.3014C142.27 19.042 142.547 18.7999 142.841 18.575C144.121 17.5892 145.746 16.9839 147.787 16.9839C148.081 16.9839 148.375 17.0012 148.687 17.0185L151.454 15.7559C150.468 15.7732 149.673 15.8078 149.033 15.8078C146.265 15.8078 146.49 15.4273 146.853 13.4902C146.853 13.4902 149.188 14.1302 150.97 14.1302C151.143 14.1302 151.316 14.1302 151.471 14.1129C152.336 14.0437 152.716 13.6632 152.855 13.1962C153.028 12.5736 153.08 11.6051 152.595 10.3944C152.284 9.59882 151.523 8.90702 150.434 8.90702C149.603 8.90702 148.6 9.30481 147.459 10.3425L146.49 11.311C145.989 10.723 145.591 10.0485 145.28 9.39128C145.072 8.49193 146.041 7.92119 146.041 7.92119C145.055 8.04226 144.57 7.02184 144.415 6.55487C145.47 5.98413 146.974 5.11937 148.566 4.68699L149.033 3.09584C149.638 2.78452 155.553 1.4182 157.109 1.4182C157.196 1.4182 157.248 1.4182 157.317 1.4355C157.438 1.45279 157.559 1.50468 157.646 1.57386C157.317 1.93706 157.023 2.35214 156.764 2.80182L157.819 3.14772C158.407 2.19649 159.219 1.40091 159.946 1.15878C160.897 1.98895 162.039 4.46216 159.531 7.05643V8.56111L159.963 8.14603C160.568 7.57529 161.001 7.02184 161.329 6.48569C166.12 16.8628 158.251 25.372 158.303 29.0386C158.303 29.0386 156.66 28.9867 155.536 28.537C155.536 28.537 155.034 32.1171 156.141 35.0573C157.421 38.4818 159.444 41.5257 161.07 44.7772C161.623 45.8841 162.108 47.0083 162.506 48.1671C162.523 48.2017 162.523 48.2363 162.54 48.2708C162.869 48.9799 163.422 49.6026 164.045 49.9485C164.062 49.9658 164.097 49.9658 164.114 49.9831C164.927 50.3981 165.878 50.3463 166.674 49.862C167.452 49.395 167.867 48.5995 167.85 47.7174C167.798 45.7457 166.639 44.293 165.394 42.7537C164.737 41.9235 164.045 41.076 163.509 40.1075C161.831 37.0809 161.416 33.6564 162.315 30.1974C162.73 28.6062 163.664 27.2053 164.564 25.839C164.771 25.5277 164.961 25.2337 165.169 24.9224C165.255 24.8013 165.325 24.6802 165.394 24.5592C164.961 24.1614 164.875 23.6771 165.013 23.0372C165.134 22.4491 165.446 21.74 165.826 20.858C166.259 19.8895 166.76 18.7826 167.002 17.6238C167.4 15.7559 167.4 14.2512 167.158 12.7638C167.521 13.3519 167.832 13.9745 168.092 14.6144C168.386 15.3408 168.593 16.1018 168.697 16.8974C168.801 17.693 168.801 18.5058 168.68 19.3187C168.957 18.5577 169.13 17.7276 169.181 16.8974C169.233 16.0499 169.181 15.2025 169.026 14.3723C168.887 13.6113 168.68 12.8503 168.403 12.1239C169.597 13.8707 170.202 15.998 170.236 18.5577C170.271 21.7746 169.164 24.4727 168.109 25.1126C167.971 25.1991 167.85 25.251 167.729 25.2856C167.279 25.3893 166.587 25.078 166.587 25.078C166.276 25.5969 165.965 26.0638 165.636 26.5654C164.754 27.8971 163.924 29.1597 163.561 30.526C162.748 33.691 163.094 36.7004 164.633 39.4676C165.117 40.3324 165.757 41.1452 166.397 41.9235C167.711 43.5666 169.078 45.2615 169.13 47.6655C169.164 49.0145 168.49 50.2425 167.331 50.9516C166.708 51.3321 165.982 51.5396 165.255 51.5396C164.927 51.5396 164.581 51.4877 164.252 51.4186C163.958 51.3321 163.664 51.2283 163.388 51.0727C163.301 51.0208 163.215 50.9689 163.128 50.917C163.18 51.3321 163.197 51.7645 163.18 52.1796C163.18 52.2833 163.163 52.4044 163.163 52.5082C163.111 53.2173 163.007 53.9437 162.955 54.6528C162.869 55.5694 162.713 55.6732 162.99 56.5725C163.318 57.6102 164.719 58.2329 166.172 58.5615C167.089 58.769 168.334 58.9593 169.303 59.0803C170.167 59.2014 170.807 59.9105 170.859 60.7753C170.98 62.9026 171.153 66.6729 170.997 67.7279C170.825 68.8867 170.15 69.8725 169.078 70.3914C169.147 70.547 169.216 70.7027 169.285 70.8411C169.441 71.2388 169.562 71.5847 169.614 71.9134C169.96 73.7985 168.611 74.3866 167.4 74.6806L167.244 72.9857C167.227 72.9165 166.899 72.7608 166.829 72.7262C166.726 72.657 166.604 72.5879 166.518 72.5014C166.31 72.3111 166.241 72.0863 166.207 71.8442C166.189 71.7058 166.189 71.5674 166.189 71.4118C166.172 71.1524 166.138 70.8929 165.999 70.7027C165.93 70.6162 165.861 70.547 165.74 70.4951C165.636 70.4433 165.532 70.426 165.428 70.426C165.307 70.426 165.204 70.4606 165.1 70.5124C164.875 70.6335 164.685 70.8583 164.65 71.1351C164.633 71.2388 164.65 71.3772 164.667 71.5156C164.754 72.0171 164.996 72.7089 164.771 73.3143C164.633 73.7121 164.097 74.2482 163.509 74.2482C163.318 74.2482 163.145 74.1963 162.955 74.0753L161.745 75.1476C160.136 73.3834 160.638 71.6885 162.384 70.9621C162.523 70.9102 162.644 70.8411 162.748 70.7719C163.076 70.547 163.267 70.253 163.076 69.9417C162.938 69.6996 162.782 69.6131 162.575 69.6131C162.263 69.6131 161.866 69.8033 161.26 70.0455C161.226 70.0628 161.191 70.0801 161.139 70.0974C160.811 70.2184 160.499 70.3049 160.205 70.3049C159.583 70.3049 159.081 69.9417 158.822 68.9386C158.804 68.8521 158.787 68.7483 158.77 68.6619L158.355 68.8348L157.628 69.1288C157.646 69.0078 157.663 68.8694 157.68 68.7483C157.749 68.3332 157.888 67.9874 158.043 67.6933C158.58 66.7075 159.531 66.3097 160.499 66.3097C161.745 66.3097 163.024 66.9323 163.561 67.7279L165.843 68.0392C166.31 67.4512 166.328 65.7217 166.259 64.3727C166.207 63.3868 165.48 62.5913 164.512 62.4356C162.851 62.1935 160.361 61.8303 159.479 61.7611C157.801 61.64 156.054 61.346 154.792 60.118C153.062 58.4058 152.682 56.6244 152.682 54.1512C152.682 53.3383 152.716 52.5255 152.786 51.6953C152.838 50.9862 152.924 50.2771 152.993 49.5853C153.045 49.1183 153.114 48.6513 153.183 48.1844C153.253 47.752 153.253 47.285 153.218 46.8353C153.201 46.6624 153.183 46.5067 153.149 46.3338C153.062 45.8322 152.924 45.348 152.734 44.8464C152.526 44.3275 152.232 43.8433 151.886 43.3763C151.333 42.6499 150.606 42.01 149.69 41.4911C149.361 41.3009 148.963 41.076 148.548 40.8166C148.133 40.5572 147.684 40.2805 147.217 39.9519C146.075 39.1909 144.813 38.2396 143.636 37.15C143.723 37.0982 143.809 37.0463 143.896 36.9944C144.328 36.735 145.522 35.8529 146.646 34.919C146.923 34.6941 147.165 34.4866 147.39 34.279L146.317 33.7083C145.072 34.7633 143.688 35.801 143.325 36.0086C143.152 36.1123 142.979 36.2161 142.806 36.3199C142.478 36.5101 142.149 36.7004 141.838 36.8733C140.022 37.911 138.725 38.6201 138.759 39.8308C141.008 42.2521 139.78 43.6876 138.534 44.12L138.119 42.7883C136.805 42.5634 136.822 41.5949 136.77 40.8512C136.736 40.4534 136.424 40.2286 136.113 40.2286C135.854 40.2286 135.594 40.4015 135.577 40.7993C135.542 41.2317 135.577 41.6814 135.456 42.3905C135.369 42.8747 134.851 43.532 134.107 43.532C133.986 43.532 133.865 43.5147 133.744 43.4801L133.467 45.0539C130.907 44.5697 131.184 42.0273 132.913 41.1625C133.899 40.661 134.211 40.2978 133.917 39.9173C133.83 39.8135 133.726 39.7616 133.605 39.7616C133.242 39.7616 132.706 40.1594 132.187 40.5399C131.962 40.7129 131.668 40.7993 131.357 40.7993C130.682 40.7993 129.956 40.3669 129.645 39.3465L128.763 39.8827C128.607 37.9629 129.8 37.0117 131.011 37.0117C131.582 37.0117 132.17 37.2192 132.619 37.6343C132.792 37.79 132.965 37.8591 133.138 37.8591C133.692 37.8591 134.072 37.1673 133.329 36.7695C132.619 36.3891 131.945 35.213 132.602 34.4693L131.53 33.4662C132.014 33.1722 132.533 33.0338 133.017 33.0338C134.09 33.0338 135.075 33.7256 135.387 35.2995C135.456 35.6627 135.612 35.801 135.819 35.801C136.407 35.801 137.445 34.5385 138.223 33.2932C138.413 32.9992 138.586 32.6879 138.759 32.3939C138.984 31.9961 139.226 31.6156 139.486 31.2351C139.814 30.7508 140.16 30.2839 140.593 29.8688C141.319 29.1424 142.581 27.8798 144.034 27.0324C144.38 26.8421 144.743 26.6519 145.107 26.4962C145.539 25.9255 145.971 25.3374 146.352 24.7321C147.372 23.1755 148.22 21.5152 148.704 19.7684C147.908 21.4114 146.802 22.8469 145.574 24.1268C145.003 24.7321 144.415 25.2855 143.792 25.839C142.115 26.7038 140.714 28.1047 139.883 28.9175L139.762 29.0386C139.52 29.2807 139.295 29.5229 139.105 29.7823C138.828 28.0874 138.898 25.9947 139.434 24.0057C139.538 23.6252 139.659 23.2274 139.797 22.8642C140.299 21.5498 141.025 20.3045 142.011 19.3014ZM148.479 12.4352C149.136 12.2104 149.794 12.0374 150.416 12.0374C150.935 12.0374 151.419 12.1585 151.869 12.4179C151.852 12.6255 151.817 12.7984 151.8 12.8849C151.8 12.9022 151.8 12.9022 151.8 12.9022C151.8 12.9022 151.713 12.9887 151.367 13.0233C151.246 13.0406 151.108 13.0406 150.952 13.0406C150.278 13.0406 149.517 12.9368 148.842 12.8157C148.168 12.712 147.147 12.4871 147.147 12.4871C147.044 11.9337 147.13 11.3456 147.338 11.3629C147.58 11.4148 147.753 12.0029 148.479 12.4352ZM147.77 11.5705L148.185 11.1381C149.223 10.2042 149.967 9.99661 150.399 9.99661C151.177 9.99661 151.488 10.6019 151.558 10.7922C151.627 10.9651 151.679 11.1381 151.731 11.2938C151.316 11.1035 150.866 11.0343 150.399 11.0343C149.569 11.0343 148.687 11.2938 147.77 11.5705ZM154.93 64.8915C153.65 65.7563 152.457 66.1714 151.194 66.1714C150.018 66.1714 148.877 65.8254 147.666 65.445C147.338 65.3412 147.009 65.2374 146.663 65.1509C146.127 64.9953 145.556 64.9261 144.986 64.9261C143.602 64.9261 142.409 65.3758 141.63 65.7736C141.717 65.4795 141.993 64.3727 141.993 63.5252C143.014 62.9545 143.723 62.1416 144.069 61.0866C144.588 59.5127 145.003 56.7282 144.588 53.7188C145.401 53.6151 146.559 53.4421 147.718 53.2519C148.981 53.0443 150.018 52.8368 150.779 52.6465C151.143 52.56 151.437 52.4736 151.696 52.3871C151.661 52.9924 151.644 53.5978 151.644 54.2031C151.644 55.7078 151.783 56.832 152.094 57.8178C152.474 58.9939 153.114 60.0143 154.065 60.9482C155.587 62.4529 157.628 62.7815 159.427 62.9026C160.067 62.9545 161.831 63.1793 164.373 63.5598C164.823 63.629 165.186 64.0095 165.204 64.4764C165.273 65.7217 165.221 66.4654 165.152 66.8805L164.149 66.7421C163.318 65.8427 161.9 65.2547 160.517 65.2547C158.77 65.2547 157.455 66.1714 156.867 67.7279C156.556 67.7625 156.21 67.8144 155.864 67.9009C156.521 66.8978 156.573 65.9638 156.591 65.8427L156.677 63.6809L154.93 64.8915ZM137.549 65.0818C137.445 64.9953 137.341 64.8915 137.255 64.7877C137.237 64.7532 137.22 64.7359 137.203 64.7013C136.978 64.3381 137.047 63.9576 137.099 63.5598C137.151 63.162 137.151 62.7642 136.788 62.5048C136.649 62.401 136.494 62.3491 136.338 62.3491C136.234 62.3491 136.148 62.3664 136.061 62.401C135.819 62.4875 135.594 62.695 135.508 62.9717C135.456 63.1101 135.456 63.3004 135.456 63.5252C135.456 63.7154 135.473 63.923 135.473 64.1305C135.473 64.4937 135.439 64.8915 135.283 65.2374C135.266 65.272 135.248 65.3066 135.231 65.3412C135.023 65.6871 134.47 66.1195 133.899 66.1195C133.64 66.1195 133.38 66.033 133.156 65.8082L131.651 66.7248C131.651 66.7248 131.634 66.7248 131.634 66.7075C131.53 66.5519 131.461 66.3962 131.374 66.2578C131.201 65.8946 131.08 65.566 131.011 65.2374C130.734 63.7846 131.599 62.7296 133.121 62.3837C133.744 62.2454 134.245 61.9167 134.055 61.4152C133.934 61.0866 133.726 60.9655 133.415 60.9655C133.086 60.9655 132.619 61.0866 131.98 61.2249C131.772 61.2595 131.582 61.2941 131.392 61.3287C131.236 61.346 131.08 61.3633 130.942 61.3633C130.267 61.3633 129.835 61.0347 129.835 59.6857L128.538 59.9624C129.126 57.9043 130.319 57.1087 131.564 57.1087C132.844 57.1087 134.193 57.9561 135.023 59.1149L135.542 59.2879L136.459 59.5992L138.292 60.2218C140.074 58.7171 139.261 54.7565 139.261 54.7565C139.261 54.7565 135.784 52.8022 136.943 48.4611C136.943 48.4611 137.549 44.3794 144.986 44.3794C145.781 44.3794 146.646 44.4313 147.597 44.5351C148.168 44.6043 148.687 44.6734 149.154 44.7599C149.154 44.7599 149.154 44.7772 149.171 44.7772C148.998 45.175 148.946 45.6247 149.033 46.0571C149.154 46.7316 149.569 47.3023 150.174 47.6136C150.468 47.7693 150.797 47.8558 151.143 47.8558C151.523 47.8558 151.886 47.752 152.232 47.5617C152.232 47.752 152.215 47.9249 152.198 48.0979C152.059 49.0664 151.921 50.1041 151.834 51.1937C150.33 51.9547 143.36 52.8195 143.36 52.8195C144.034 56.1056 143.602 59.2187 143.083 60.7753C142.893 61.346 142.564 61.7957 142.149 62.1589C141.82 62.4529 141.44 62.6777 141.008 62.8507C140.921 63.9922 140.835 64.8396 140.627 65.5141C140.575 65.7563 140.489 65.9638 140.385 66.1368C139.866 67.0188 138.794 67.2264 137.825 67.2955L137.981 65.4623C137.929 65.3585 137.618 65.1336 137.549 65.0818ZM140.022 39.5541C140.316 39.0871 141.302 38.551 142.322 37.9629C142.443 37.8937 142.581 37.8246 142.72 37.7381C142.91 37.911 143.1 38.084 143.291 38.2569C143.758 38.672 144.242 39.0698 144.726 39.4503L144.743 39.4676L147.13 41.9581C147.753 42.6153 148.185 43.1169 148.479 43.532L145.003 43.2898C143.291 43.2898 141.907 43.4974 140.783 43.826C140.938 43.5838 141.06 43.3071 141.129 43.0304C141.405 41.716 140.765 40.488 140.022 39.5541ZM149.897 43.7914C149.69 43.3936 149.361 42.892 148.808 42.2175C148.946 42.304 149.102 42.3905 149.223 42.4597C150.053 42.9266 150.676 43.4974 151.143 44.12C151.506 44.6043 151.748 45.1231 151.938 45.6247C152.007 45.8149 152.059 46.0225 152.094 46.2127C151.886 46.5413 151.523 46.7489 151.143 46.7489C150.987 46.7489 150.831 46.7143 150.676 46.6278C150.105 46.3338 149.88 45.5728 150.278 44.9848C150.312 44.9329 150.347 44.881 150.399 44.8291C150.226 44.5351 150.105 44.2065 149.897 43.7914ZM133.778 12.833C134.47 13.3 135.127 13.8361 135.767 14.3723C136.805 15.2371 137.808 16.1537 138.898 16.9666C139.244 17.226 140.299 18.0216 141.129 18.6615C140.887 18.9209 140.662 19.1804 140.437 19.4571C139.832 20.2527 139.33 21.152 138.949 22.0859L136.995 20.2354C137.203 19.6992 137.272 19.0766 137.203 18.4367C137.203 18.4021 137.185 18.3675 137.185 18.3156L136.148 18.8172C136.182 19.5954 135.888 20.4083 135.179 20.7888C134.954 20.9099 134.764 20.9618 134.505 20.9618C134.505 20.9618 134.505 20.9618 134.487 20.9618L134.522 20.0105C134.176 20.0105 133.709 19.6473 133.709 19.1458C133.709 18.575 134.072 18.2637 134.522 18.1253V17.0185C133.657 17.1741 133.017 17.693 132.758 18.4021L131.616 18.4194C131.564 17.5546 131.98 16.7763 132.862 16.4823V15.3581C132.118 15.5138 131.634 15.877 131.34 16.2056C131.253 16.2921 131.184 16.3958 131.097 16.4996L130.233 16.5169C130.198 15.6867 130.613 14.943 131.392 14.6836V13.5594C130.907 13.6632 130.492 13.8534 130.129 14.1648H129.316C129.333 13.6286 129.645 13.1097 130.077 12.7811C130.458 12.5044 130.942 12.3488 131.426 12.2969C131.582 12.2796 131.737 12.2623 131.893 12.2623C132.101 12.2623 132.308 12.2796 132.498 12.3142C132.965 12.4006 133.398 12.5736 133.778 12.833ZM131.461 5.91495C132.118 4.79076 132.498 3.35526 132.516 1.86788H135.127C135.145 2.05813 135.162 2.23108 135.162 2.42132C135.162 5.27503 132.879 7.59258 130.06 7.59258H129.87C130.475 7.22938 131.011 6.67594 131.461 5.91495ZM119.544 5.91495C120.202 4.79076 120.582 3.35526 120.599 1.86788H124.145C124.162 3.35526 124.543 4.79076 125.2 5.91495C125.65 6.67594 126.186 7.24668 126.791 7.59258H124.422C123.816 6.96996 123.315 6.12249 122.986 5.11937H121.793C121.481 6.12249 120.98 6.96996 120.357 7.59258H117.936C118.558 7.22938 119.112 6.67594 119.544 5.91495ZM107.455 5.91495C108.112 4.79076 108.493 3.35526 108.51 1.86788H112.246C112.263 3.35526 112.644 4.79076 113.301 5.91495C113.75 6.67594 114.287 7.22938 114.892 7.59258H112.315C111.71 6.96996 111.208 6.12249 110.879 5.11937H109.686C109.375 6.12249 108.873 6.96996 108.251 7.59258H105.829C106.452 7.22938 107.005 6.67594 107.455 5.91495ZM95.6597 5.91495C96.3169 4.79076 96.6974 3.35526 96.7147 1.86788H100.139C100.156 3.35526 100.537 4.79076 101.194 5.91495C101.644 6.67594 102.18 7.24668 102.785 7.59258H100.364C99.7586 6.96996 99.2571 6.12249 98.9284 5.11937H97.7351C97.4238 6.12249 96.9222 6.96996 96.2996 7.59258H94.0339C94.6738 7.22938 95.2273 6.67594 95.6597 5.91495ZM85.6457 2.33485C85.6457 2.17919 85.6457 2.02354 85.663 1.85058H88.3438C88.3611 3.33797 88.7416 4.77347 89.3988 5.89766C89.8485 6.65864 90.3846 7.22938 90.99 7.57529H90.7305C87.9979 7.59258 85.6457 5.18855 85.6457 2.33485ZM81.616 16.9493C82.7056 16.1364 83.7087 15.2371 84.7464 14.355C85.3863 13.8188 86.0435 13.2827 86.7353 12.8157C87.1331 12.539 87.5828 12.3661 88.0671 12.2969C88.24 12.2623 88.4303 12.245 88.6205 12.245C88.7935 12.245 88.9664 12.2623 89.1567 12.2796C89.6236 12.3488 90.0906 12.4871 90.4538 12.7638C90.8862 13.0752 91.1975 13.594 91.2148 14.1475H90.4019C90.0387 13.8534 89.6063 13.6459 89.1394 13.5421V14.6663C89.935 14.9257 90.35 15.6694 90.2982 16.4996L89.4334 16.4823C89.3642 16.3785 89.2777 16.2921 89.1913 16.1883C88.8972 15.877 88.3957 15.5138 87.6693 15.3408V16.465C88.534 16.759 88.9491 17.5373 88.9145 18.4021L87.7731 18.3848C87.5136 17.6584 86.8737 17.1568 86.0089 17.0012V18.1081C86.4586 18.2464 86.8218 18.5577 86.8218 19.1285C86.8218 19.63 86.3721 19.9932 86.0089 19.9932L86.0435 20.9445C86.0435 20.9445 86.0435 20.9445 86.0262 20.9445C85.7841 20.9445 85.5766 20.8753 85.3517 20.7715C84.6426 20.391 84.3659 19.5608 84.3832 18.7999L83.3455 18.2983C83.3455 18.3329 83.3282 18.3675 83.3282 18.4194C83.2417 19.0593 83.3282 19.6819 83.5357 20.2181L81.5814 22.0859C81.2009 21.152 80.6993 20.2699 80.094 19.4571C79.8692 19.1804 79.6443 18.9036 79.4022 18.6615C80.2151 18.0043 81.2701 17.2087 81.616 16.9493ZM49.4815 67.7798C49.3259 66.7248 49.4988 62.9717 49.6199 60.8271C49.6718 59.9624 50.329 59.2533 51.1765 59.1322C52.145 58.9939 53.3902 58.8036 54.3069 58.6134C55.7597 58.3021 57.1606 57.6621 57.4892 56.6244C57.7659 55.7251 57.6103 55.6213 57.5238 54.7046C57.4546 53.9955 57.3681 53.2691 57.3162 52.56C57.3162 52.4563 57.299 52.3352 57.299 52.2314C57.2817 51.8164 57.2989 51.384 57.3508 50.9689C57.2644 51.0208 57.1779 51.0727 57.0914 51.1245C56.8147 51.2802 56.5207 51.384 56.2266 51.4705C55.898 51.5569 55.5694 51.5915 55.2235 51.5915C54.4971 51.5915 53.788 51.4013 53.1481 51.0035C51.9893 50.2944 51.3148 49.0664 51.3494 47.7174C51.4013 45.3134 52.7676 43.6184 54.082 41.9754C54.7047 41.1971 55.3619 40.3842 55.8462 39.5195C57.3854 36.7523 57.7486 33.7429 56.9185 30.5779C56.5553 29.1943 55.7251 27.949 54.843 26.6173C54.5144 26.1157 54.2031 25.6487 53.8918 25.1299C53.8918 25.1299 53.2 25.4412 52.7503 25.3374C52.6293 25.3028 52.5082 25.251 52.3698 25.1645C51.3148 24.5073 50.1906 21.8265 50.2425 18.6096C50.2771 16.0499 50.8824 13.9226 52.0758 12.1758C51.8164 12.9022 51.5915 13.6632 51.4532 14.4242C51.2975 15.2543 51.2456 16.1191 51.2975 16.9493C51.3494 17.7967 51.5224 18.6096 51.7991 19.3706C51.678 18.5577 51.678 17.7449 51.7818 16.9493C51.8856 16.1537 52.0931 15.3927 52.3871 14.6663C52.6465 14.0264 52.9579 13.4038 53.3211 12.8157C53.0789 14.3031 53.0789 15.8078 53.4767 17.6757C53.7188 18.8344 54.2204 19.9413 54.6528 20.9099C55.0506 21.7919 55.3446 22.501 55.4657 23.0891C55.604 23.729 55.5175 24.2132 55.0852 24.611C55.1543 24.7321 55.2408 24.8532 55.31 24.9742C55.5003 25.2683 55.7078 25.5796 55.9153 25.8909C56.8147 27.2572 57.7486 28.6581 58.1637 30.2493C59.0631 33.7083 58.648 37.1327 56.9703 40.1594C56.4342 41.1279 55.7424 41.9754 55.0852 42.8056C53.8572 44.3448 52.6811 45.7976 52.6293 47.7693C52.612 48.6686 53.0443 49.4469 53.8053 49.9139C54.6009 50.3982 55.5521 50.4327 56.365 50.035C56.3823 50.0177 56.4169 50.0177 56.4342 50.0004C57.0568 49.6718 57.6103 49.0491 57.9389 48.3227C57.9562 48.2881 57.9562 48.2535 57.9735 48.219C58.3713 47.0602 58.8555 45.9187 59.409 44.8291C61.0347 41.5776 63.0582 38.5337 64.3381 35.1092C65.445 32.169 64.9434 28.5889 64.9434 28.5889C63.8192 29.0386 62.1762 29.0905 62.1762 29.0905C62.2281 25.4239 54.3588 16.9147 59.1495 6.53758C59.4781 7.07373 59.9105 7.62717 60.5159 8.19791L60.9482 8.613V7.10832C58.4404 4.51404 59.5992 2.04083 60.5331 1.21066C61.2423 1.47009 62.0551 2.24837 62.6605 3.19961L63.7155 2.8537C63.456 2.42132 63.162 2.00624 62.8334 1.62575C62.9372 1.55657 63.041 1.50468 63.162 1.48739C63.2139 1.48739 63.2831 1.47009 63.3696 1.47009C64.9434 1.47009 70.8584 2.83641 71.4464 3.14772L71.9653 4.72158C73.5737 5.15396 75.0611 6.01872 76.1161 6.58946C75.9432 7.03914 75.4589 8.05955 74.4904 7.95578C74.4904 7.95578 75.4416 8.52652 75.2513 9.42587C74.94 10.0831 74.5422 10.7576 74.0407 11.3456L73.0722 10.3771C71.9307 9.3221 70.9275 8.94161 70.0974 8.94161C69.0078 8.94161 68.2468 9.63341 67.9355 10.429C67.4512 11.6397 67.5031 12.6082 67.6761 13.2308C67.8144 13.6978 68.1949 14.0783 69.0597 14.1475C69.2153 14.1647 69.3883 14.1648 69.5612 14.1648C71.3426 14.1648 73.6775 13.5248 73.6775 13.5248C74.0407 15.4619 74.2655 15.8424 71.4983 15.8424C70.8584 15.8424 70.0628 15.8251 69.077 15.7905L71.8442 17.053C72.1555 17.0357 72.4495 17.0185 72.7435 17.0185C74.7844 17.0185 76.4101 17.6238 77.69 18.6096C77.984 18.8344 78.2607 19.0766 78.5201 19.336C79.506 20.3391 80.2151 21.5844 80.7166 22.8988C80.855 23.2793 80.9761 23.6598 81.0798 24.0403C81.616 26.0465 81.6852 28.1393 81.4084 29.8169C81.2009 29.5575 80.9933 29.3153 80.7512 29.0732L80.6301 28.9521C79.8 28.1393 78.3991 26.7383 76.7214 25.8736C76.0988 25.3201 75.5108 24.7667 74.94 24.1614C73.7121 22.8642 72.6225 21.4287 71.8096 19.803C72.3112 21.5498 73.1586 23.2274 74.1618 24.7667C74.5595 25.372 74.9746 25.9601 75.407 26.5308C75.7875 26.6865 76.1334 26.8594 76.4793 27.067C77.9494 27.8971 79.1946 29.177 79.921 29.9034C80.3534 30.3184 80.6993 30.7854 81.0279 31.2697C81.2874 31.6502 81.5122 32.0307 81.7543 32.4285C81.9273 32.7225 82.1175 33.0338 82.2905 33.3278C83.0688 34.5904 84.1065 35.8356 84.6945 35.8356C84.9021 35.8356 85.0577 35.68 85.1269 35.334C85.4382 33.7602 86.424 33.0684 87.4963 33.0684C87.9979 33.0684 88.5168 33.224 88.9837 33.5008L87.9114 34.5039C88.5513 35.2649 87.8768 36.4236 87.185 36.8041C86.4413 37.2019 86.8391 37.8937 87.3753 37.8937C87.5482 37.8937 87.7212 37.8246 87.8941 37.6689C88.3438 37.2538 88.9318 37.0463 89.5026 37.0463C90.7132 37.0463 91.9066 37.9802 91.7509 39.9173L90.817 39.3984C90.5057 40.4188 89.7793 40.8512 89.1048 40.8512C88.7935 40.8512 88.4995 40.7647 88.2746 40.5918C87.7558 40.2113 87.2196 39.8135 86.8564 39.8135C86.7353 39.8135 86.6143 39.8654 86.5451 39.9692C86.2684 40.3497 86.5624 40.7301 87.5482 41.2144C89.295 42.0792 89.5718 44.6216 86.9948 45.1058L86.718 43.532C86.597 43.5666 86.4759 43.5838 86.3549 43.5838C85.6112 43.5838 85.0923 42.9266 85.0058 42.4424C84.8848 41.7333 84.9194 41.3009 84.8848 40.8512C84.8675 40.4534 84.608 40.2805 84.3486 40.2805C84.0373 40.2805 83.726 40.5053 83.6914 40.9031C83.6395 41.6468 83.6568 42.6153 82.3424 42.8402L81.9273 44.1719C80.682 43.7395 79.4368 42.304 81.7025 39.8827C81.737 38.6547 80.4399 37.9456 78.6239 36.9252C78.3126 36.7523 77.984 36.562 77.6554 36.3718C77.4824 36.268 77.3095 36.1642 77.1365 36.0604C76.7733 35.8356 75.3724 34.8152 74.1445 33.7602L73.0722 34.3309C73.297 34.5212 73.5391 34.7287 73.8158 34.9708C74.9227 35.8875 76.1161 36.7868 76.5658 37.0463C76.6523 37.0982 76.7387 37.15 76.8252 37.2019C75.6491 38.2915 74.3866 39.2428 73.2451 40.0037C72.7781 40.3151 72.3285 40.6091 71.9134 40.8685C71.4983 41.1279 71.1005 41.3528 70.7719 41.543C69.8552 42.0619 69.1289 42.7018 68.5754 43.4282C68.2122 43.8952 67.9355 44.3967 67.7279 44.8983C67.5204 45.3825 67.382 45.8841 67.3129 46.3857C67.2783 46.5586 67.261 46.7143 67.2437 46.8872C67.2091 47.3542 67.2264 47.8039 67.2783 48.2363C67.3475 48.7032 67.3993 49.1702 67.4685 49.6372C67.555 50.3463 67.6242 51.0381 67.6761 51.7472C67.7452 52.5773 67.7798 53.3902 67.7798 54.2031C67.7798 56.6936 67.3993 58.475 65.6698 60.1699C64.4246 61.3979 62.6777 61.6919 60.9828 61.813C60.1008 61.8649 57.6276 62.2281 55.9499 62.4875C54.9814 62.6258 54.255 63.4387 54.2031 64.4245C54.1339 65.7563 54.1512 67.5031 54.6182 68.0911L56.9012 67.7798C57.4373 66.9842 58.7172 66.3616 59.9624 66.3616C60.9309 66.3616 61.8822 66.7421 62.4183 67.7452C62.574 68.0392 62.7123 68.3851 62.7815 68.8002C62.7988 68.9213 62.8161 69.0424 62.8334 69.1807L62.107 68.8867L61.6919 68.7137C61.6746 68.8175 61.6573 68.904 61.64 68.9905C61.3979 69.9936 60.8791 70.3568 60.2564 70.3568C59.9624 70.3568 59.6511 70.2703 59.3225 70.1492C59.2879 70.1319 59.2533 70.1147 59.2014 70.0974C58.6134 69.8552 58.1983 69.665 57.887 69.665C57.6794 69.665 57.5238 69.7515 57.3854 69.9936C57.1952 70.3222 57.3854 70.5989 57.714 70.8238C57.8178 70.8929 57.9562 70.9621 58.0772 71.014C59.824 71.7404 60.3256 73.4353 58.7172 75.1994L57.5065 74.1271C57.3162 74.2482 57.126 74.3001 56.953 74.3001C56.365 74.3001 55.8289 73.7639 55.6905 73.3661C55.4657 72.7608 55.7078 72.069 55.7943 71.5674C55.8116 71.4291 55.8289 71.2907 55.8116 71.187C55.777 70.9102 55.5867 70.6854 55.3619 70.5643C55.2581 70.5124 55.1543 70.4779 55.0333 70.4779C54.9295 70.4779 54.8257 70.4951 54.722 70.547C54.6182 70.5989 54.5317 70.6681 54.4625 70.7546C54.3069 70.9448 54.2723 71.2043 54.2723 71.4637C54.2723 71.602 54.2723 71.7577 54.255 71.8961C54.2204 72.1382 54.1512 72.363 53.9437 72.5533C53.8399 72.6397 53.7361 72.7089 53.6324 72.7781C53.5632 72.8127 53.2346 72.9684 53.2173 73.0375L53.0616 74.7325C51.851 74.4385 50.5192 73.8504 50.8478 71.9652C50.8997 71.6539 51.0035 71.2907 51.1765 70.8929C51.2283 70.7546 51.2975 70.5989 51.384 70.4433C50.3463 69.9244 49.6545 68.9386 49.4815 67.7798ZM70.1147 12.0374C70.7373 12.0374 71.3772 12.1931 72.0517 12.4352C72.7781 11.9856 72.9338 11.4148 73.2105 11.3802C73.4181 11.3629 73.5045 11.951 73.4008 12.5044C73.4008 12.5044 72.3803 12.7293 71.7058 12.833C71.0313 12.9541 70.2703 13.0579 69.5958 13.0579C69.4402 13.0579 69.3018 13.0579 69.1807 13.0406C68.8521 13.006 68.7484 12.9368 68.7484 12.9195C68.7484 12.9195 68.7484 12.9195 68.7484 12.9022C68.7138 12.7984 68.6792 12.6428 68.6792 12.4352C69.1116 12.1585 69.5958 12.0374 70.1147 12.0374ZM68.7829 11.2938C68.8175 11.1381 68.8867 10.9651 68.9559 10.7922C69.0251 10.6019 69.3364 9.99661 70.1147 9.99661C70.5644 9.99661 71.308 10.1869 72.3285 11.1381L72.7435 11.5705C71.8269 11.2765 70.9275 11.0343 70.0974 11.0343C69.6477 11.0343 69.2153 11.1208 68.7829 11.2938ZM82.2213 60.2218L84.0719 59.5992L84.9885 59.2879L85.5074 59.1149C86.3376 57.9388 87.6866 57.1087 88.9664 57.1087C90.2117 57.1087 91.405 57.9043 91.9931 59.9624L90.6959 59.6857C90.6959 61.0174 90.2636 61.3633 89.589 61.3633C89.4507 61.3633 89.295 61.346 89.1394 61.3287C88.9491 61.2941 88.7589 61.2595 88.5513 61.2249C87.9114 61.1039 87.4444 60.9655 87.1158 60.9655C86.8045 60.9655 86.597 61.0866 86.4759 61.4152C86.303 61.9167 86.7872 62.2281 87.4099 62.3837C88.9318 62.7296 89.7966 63.8019 89.5199 65.2374C89.4507 65.566 89.3469 65.8946 89.1567 66.2578C89.0875 66.4135 89.001 66.5519 88.8972 66.7075C88.8972 66.7075 88.8799 66.7075 88.8799 66.7248L87.3753 65.8082C87.1504 66.033 86.891 66.1195 86.6316 66.1195C86.0608 66.1195 85.5074 65.7044 85.2998 65.3412C85.2825 65.3066 85.2653 65.272 85.248 65.2374C85.075 64.8915 85.0577 64.4937 85.0577 64.1305C85.0577 63.923 85.075 63.7154 85.075 63.5252C85.075 63.3004 85.075 63.1101 85.0231 62.9717C84.9366 62.695 84.7118 62.5048 84.4697 62.401C84.3832 62.3664 84.2794 62.3491 84.193 62.3491C84.0373 62.3491 83.8816 62.401 83.7433 62.5048C83.3801 62.7642 83.3801 63.162 83.432 63.5598C83.4839 63.9749 83.553 64.3554 83.3282 64.7013C83.3109 64.7359 83.2936 64.7532 83.2763 64.7877C83.1898 64.8915 83.0861 64.9953 82.9823 65.0818C82.9131 65.1336 82.6018 65.3585 82.6018 65.445L82.7575 67.2782C81.7889 67.2091 80.7166 67.0015 80.1978 66.1195C80.094 65.9465 80.0075 65.7217 79.9556 65.4968C79.7654 64.8223 79.6789 63.9922 79.5751 62.8334C79.1428 62.6604 78.7623 62.4356 78.4337 62.1416C78.0186 61.7784 77.69 61.3287 77.4997 60.758C76.9809 59.2014 76.5312 56.0883 77.223 52.8022C77.223 52.8022 70.253 51.9374 68.7484 51.1764C68.6446 50.0868 68.5235 49.0318 68.3852 48.0806C68.3679 47.9076 68.3506 47.7347 68.3506 47.5444C68.6792 47.7347 69.0597 47.8385 69.4402 47.8385C69.7861 47.8385 70.0974 47.752 70.4087 47.5963C71.014 47.285 71.4291 46.7143 71.5502 46.0398C71.6367 45.6074 71.5848 45.1577 71.4118 44.7599C71.4118 44.7599 71.4118 44.7426 71.4291 44.7426C71.8961 44.6561 72.4149 44.587 72.9857 44.5178C73.9369 44.414 74.8017 44.3621 75.5972 44.3621C83.0342 44.3621 83.6395 48.4438 83.6395 48.4438C84.7983 52.7849 81.322 54.7392 81.322 54.7392C81.322 54.7392 80.4572 58.7171 82.2213 60.2218ZM63.9057 65.8427C63.9057 65.9638 63.9749 66.8978 64.6321 67.9009C64.2689 67.8144 63.9403 67.7625 63.629 67.7279C63.041 66.1714 61.7265 65.2547 59.9797 65.2547C58.5961 65.2547 57.1779 65.8427 56.3477 66.7421L55.3446 66.8805C55.2754 66.4481 55.2235 65.7044 55.2927 64.4764C55.31 64.0095 55.6732 63.629 56.1229 63.5598C58.6653 63.1793 60.4294 62.9372 61.0693 62.9026C62.868 62.7815 64.9088 62.4529 66.4308 60.9482C67.382 60.0143 68.0393 58.9766 68.4025 57.8178C68.7138 56.832 68.8521 55.7251 68.8521 54.2031C68.8521 53.5978 68.8348 52.9924 68.8002 52.3871C69.0597 52.4736 69.371 52.56 69.7169 52.6465C70.4779 52.8368 71.5156 53.0443 72.7781 53.2519C73.9369 53.4421 75.0957 53.6151 75.9086 53.7188C75.4935 56.7455 75.8913 59.5127 76.4274 61.0866C76.7733 62.1243 77.4824 62.9545 78.5028 63.5252C78.5028 64.6321 78.8487 65.739 78.8487 65.7736C78.0705 65.3758 76.8771 64.9261 75.4935 64.9261C74.9227 64.9261 74.352 65.0126 73.8158 65.1509C73.4699 65.2547 73.1413 65.3585 72.8127 65.445C71.6021 65.8082 70.4779 66.1714 69.2845 66.1714C68.022 66.1714 66.8286 65.7736 65.5488 64.8915L63.7673 63.6809L63.9057 65.8427ZM70.2703 45.0021C70.6508 45.5901 70.4433 46.3511 69.8725 46.6451C69.7169 46.7316 69.5612 46.7662 69.4056 46.7662C69.0251 46.7662 68.6619 46.5586 68.4543 46.23C68.4889 46.0398 68.5581 45.8322 68.61 45.642C68.7829 45.1231 69.0424 44.6216 69.4056 44.1373C69.8725 43.5147 70.4952 42.9439 71.3253 42.477C71.4464 42.4078 71.5848 42.3213 71.7404 42.2348C71.187 42.9093 70.8584 43.3936 70.6508 43.8087C70.426 44.2238 70.3222 44.5524 70.1666 44.8637C70.1839 44.8983 70.2357 44.9502 70.2703 45.0021ZM77.2403 38.2742C77.4305 38.1013 77.6208 37.9283 77.811 37.7554C77.9494 37.8246 78.0705 37.911 78.2088 37.9802C79.2292 38.551 80.1978 39.1044 80.5091 39.5714C79.7654 40.488 79.1082 41.7333 79.4368 43.0304C79.506 43.3071 79.627 43.5838 79.7827 43.826C78.6585 43.4974 77.2749 43.2898 75.5627 43.2898L72.0863 43.532C72.3803 43.1169 72.7954 42.6153 73.4354 41.9581L75.8221 39.4676L75.8394 39.4503C76.2891 39.0871 76.7733 38.6893 77.2403 38.2742ZM61.813 75.2686C60.0316 77.1711 57.6276 78.0531 55.1543 78.0531C50.917 78.0531 46.5413 75.4416 45.0021 70.8411C45.0021 70.8411 47.0948 71.5502 49.7928 71.8615C49.6718 72.6052 49.741 73.2624 50.0177 73.8504C50.6057 75.0957 51.9029 75.5453 52.8195 75.7875L54.0475 76.0988L54.1685 74.8362L54.2896 73.6602C54.3934 73.591 54.5144 73.5045 54.6182 73.418C54.6355 73.5218 54.6701 73.6256 54.7047 73.7293C54.9987 74.5422 55.9326 75.3724 56.9876 75.3724C57.0914 75.3724 57.1952 75.3724 57.299 75.3551L58.0426 76.0123L58.8382 76.7214L59.5646 75.9258C60.585 74.8189 61.0001 73.5737 60.7407 72.4322C60.6542 72.069 60.5159 71.7231 60.3083 71.4118C60.9482 71.4118 61.519 71.1697 61.9514 70.72C62.107 70.547 62.2627 70.3568 62.3664 70.132L62.4356 70.1492L64.1133 70.8411L63.923 69.0424C63.923 68.9732 63.9057 68.9213 63.9057 68.8521C64.6494 68.9732 65.5488 69.2499 66.6902 69.6823C66.8459 69.7688 67.0188 69.8379 67.1745 69.8898C67.261 69.9244 67.3302 69.959 67.4166 69.9763C67.0534 70.1838 66.6902 70.3914 66.3616 70.5989C64.7186 71.6539 63.5944 72.7954 63.0064 73.9888C62.6432 74.4039 62.2454 74.8189 61.813 75.2686ZM74.6287 71.5156C73.4354 72.5187 71.775 72.7262 70.2703 72.83C65.7044 73.1759 63.8365 77.2922 63.8365 77.2922C63.456 76.3409 63.5252 75.4416 63.8884 74.6287C64.4419 73.3834 65.6871 72.3111 67.0015 71.481C69.198 70.0974 71.6194 69.3191 71.6194 69.3191C71.187 69.3537 70.7892 69.371 70.4087 69.371C69.4575 69.371 68.6792 69.2499 68.0393 69.0596C67.6761 68.9559 67.3474 68.8175 67.0707 68.6792C65.0472 67.6414 64.978 65.7909 64.978 65.7909C66.5865 66.8805 68.0047 67.261 69.3191 67.261C71.014 67.261 72.5533 66.6556 74.1272 66.2059C74.5941 66.0676 75.0611 66.0157 75.5108 66.0157C76.8079 66.0157 77.9321 66.5 78.572 66.8459C77.7591 67.3474 77.0673 67.9873 76.5312 68.8002C76.3236 69.1288 76.1334 69.4574 75.9777 69.7687C75.4762 70.4779 75.1476 71.1005 74.6287 71.5156ZM82.2213 69.9417C80.6301 70.3049 79.1428 71.2215 78.6412 72.8646C78.3472 73.8158 78.3991 74.8535 78.451 75.8394C78.451 75.8394 75.1995 73.9888 76.929 70.3395C77.0673 70.0455 77.2576 69.7169 77.4651 69.3883C77.8802 68.7483 78.3818 68.2987 78.8487 67.9528C79.0217 67.849 79.1946 67.7625 79.3849 67.6587L79.8692 67.4166C80.6993 68.1257 81.8235 68.2987 82.6537 68.3505L83.9162 68.437L83.8125 67.1745L83.7087 65.86C83.8471 65.739 83.9854 65.6006 84.1238 65.4277C84.1238 65.4104 84.1411 65.4104 84.1411 65.3931C84.193 65.5487 84.2621 65.7044 84.3486 65.8427C84.7291 66.5 85.6285 67.1572 86.6143 67.1572C86.8737 67.1572 87.1158 67.1053 87.358 67.0188L87.9287 67.3647C87.8941 67.3993 87.8422 67.4339 87.8076 67.4685C85.9571 69.2153 84.5907 69.4056 82.2213 69.9417ZM131.288 75.9604C131.288 75.9604 132.222 71.8269 130.233 70.5124C127.05 68.437 125.355 70.2184 121.793 67.5031C121.758 67.4512 121.706 67.4166 121.672 67.3647C119.994 65.6698 118.143 64.5975 116.466 64.0268C115.307 64.217 114.027 64.3554 112.609 64.4245C112.886 64.4418 113.162 64.4591 113.456 64.4937C113.958 64.5456 114.494 64.6321 115.048 64.7532C115.895 64.9434 116.794 65.2374 117.694 65.6698C118.783 66.2059 119.873 67.0707 120.893 68.1084C120.963 68.1776 121.014 68.2295 121.066 68.2987C123.28 70.7027 122.692 73.0548 122.692 73.0548C122.692 73.0548 119.856 69.2845 115.618 69.2845C113.595 69.2845 111.848 69.959 110.949 70.4087L110.291 70.7546L109.634 70.4087C108.735 69.9763 106.988 69.2845 104.964 69.2845C100.727 69.2845 97.8907 73.0548 97.8907 73.0548C97.8907 73.0548 97.2854 70.7027 99.5165 68.2987C99.5684 68.2295 99.6376 68.1776 99.6894 68.1084C100.71 67.0707 101.799 66.1886 102.889 65.6698C103.788 65.2374 104.688 64.9434 105.535 64.7532C106.089 64.6321 106.625 64.5456 107.126 64.4937C107.42 64.4591 107.714 64.4418 107.991 64.4245C106.573 64.3554 105.293 64.217 104.117 64.0268C102.439 64.5975 100.589 65.6525 98.9111 67.3647C98.8593 67.4166 98.8247 67.4512 98.7901 67.5031C95.2273 70.2184 93.5324 68.437 90.35 70.5124C88.3611 71.8096 89.295 75.9604 89.295 75.9604C89.295 75.9604 85.0923 72.7781 88.8972 68.5754C89.6928 67.6933 90.6614 66.9669 91.3705 66.4827C91.9585 66.0849 92.3736 65.86 92.3736 65.86C92.3736 65.86 92.0277 65.8255 91.578 65.739C91.3359 65.7044 91.0418 65.6352 90.7305 65.566C90.6786 65.5487 90.6095 65.5314 90.5403 65.5141C90.6959 64.7704 90.6441 64.044 90.3846 63.4041C90.2809 63.1447 90.1252 62.8853 89.9522 62.6604C91.5953 63.1101 93.6188 63.456 95.9191 63.456C96.8011 63.456 97.7178 63.2658 98.6863 63.162C99.0149 63.1274 99.3781 63.1101 99.7413 63.1101C99.8624 63.1101 99.9835 63.1101 100.105 63.1274C99.2052 62.8507 98.4096 62.5394 97.6832 62.2281C97.0952 62.3145 96.5071 62.401 95.9191 62.401C94.1031 62.401 92.4773 62.1762 91.0764 61.8476C91.3359 61.5881 91.4915 61.2941 91.5953 60.9655L91.7509 61.0001L93.5151 61.3806L93.0135 59.6338C92.0796 56.3477 89.8658 56.0018 88.9491 56.0018C87.479 56.0018 85.8879 56.8493 84.8329 58.181L82.5845 58.942C82.0829 58.0253 82.1175 56.3996 82.2559 55.3792C82.6537 55.0851 83.2244 54.5836 83.7433 53.8399C84.5389 52.7157 85.3344 50.8305 84.6426 48.2017C84.5734 47.8558 84.2102 46.524 82.792 45.348L83.0515 44.5005L83.2763 43.7568C83.6222 43.6184 83.8989 43.4109 84.1065 43.1861C84.4178 43.826 85.0231 44.414 85.7841 44.6043L85.9052 45.2615L86.0954 46.403L87.2196 46.1954C88.7762 45.9014 89.8139 44.9329 90.0041 43.6184C90.0906 43.0304 89.9868 42.4251 89.7274 41.8716C90.3154 41.7333 90.8516 41.4047 91.2494 40.9031L92.7195 41.7333L92.8578 39.9692C92.9789 38.4299 92.4255 37.4614 91.9412 36.9425C91.3186 36.268 90.4192 35.8875 89.4853 35.8875C89.3815 35.8875 89.295 35.8875 89.1913 35.9048C89.2086 35.8183 89.2431 35.7318 89.2604 35.6454C89.3123 35.3513 89.3123 35.0573 89.2604 34.7633L89.762 34.2963L90.8689 33.2586L89.5718 32.4803C88.9145 32.0826 88.2054 31.875 87.4963 31.875C86.3203 31.875 84.9712 32.4803 84.2967 34.1061C84.02 33.7775 83.6568 33.3105 83.259 32.6706C83.1034 32.4112 82.9477 32.1517 82.792 31.8923C82.6191 31.5983 82.4288 31.287 82.2386 30.993V30.9757C82.8093 28.8311 82.792 25.8909 81.9446 23.1582L84.0719 21.1347C84.2794 21.3768 84.5389 21.5671 84.8156 21.7054C85.2134 21.913 85.5766 22.0168 85.9917 22.0168H86.0089L87.1331 21.9995V20.6159C87.1677 20.5813 87.2196 20.5467 87.2542 20.5121C87.5655 20.2181 87.7558 19.8549 87.8249 19.4398L88.8627 19.4571L89.9004 19.4744L89.9522 18.4367C89.9695 18.1253 89.935 17.8313 89.8831 17.5373H90.2636L91.3013 17.5546L91.3532 16.5169C91.3705 16.0499 91.3013 15.6003 91.1456 15.2025H91.1802H92.2871L92.2525 14.0956C92.2352 13.2308 91.7855 12.4006 91.0591 11.8818C90.4192 11.4148 89.6928 11.2419 89.1221 11.19V8.66488H131.392V11.1727C130.821 11.2246 130.06 11.3975 129.403 11.8818C128.676 12.4179 128.226 13.2481 128.209 14.0956L128.175 15.2025H129.281H129.316C129.16 15.6003 129.074 16.0499 129.109 16.5169L129.16 17.5546L130.198 17.5373H130.579C130.509 17.814 130.492 18.1253 130.509 18.4367L130.561 19.4744L131.599 19.4571L132.637 19.4398C132.706 19.8376 132.896 20.2181 133.207 20.5121C133.242 20.5467 133.294 20.5813 133.329 20.6159V21.9995L134.453 22.0168H134.47C134.885 22.0168 135.248 21.913 135.646 21.7054C135.923 21.5498 136.182 21.3595 136.39 21.1347L138.517 23.1582C137.67 25.8909 137.635 28.8311 138.223 30.9757V30.993C138.033 31.287 137.843 31.5983 137.67 31.8923C137.514 32.1517 137.358 32.4112 137.203 32.6706C136.822 33.2932 136.442 33.7948 136.165 34.1234C135.49 32.4976 134.141 31.8923 132.965 31.8923C132.256 31.8923 131.547 32.0998 130.89 32.4976L129.593 33.2759L130.7 34.3136L131.201 34.7806C131.149 35.0573 131.149 35.3513 131.201 35.6627C131.219 35.7491 131.236 35.8356 131.27 35.9221C131.167 35.9221 131.08 35.9048 130.976 35.9048C130.025 35.9048 129.126 36.2853 128.52 36.9598C128.036 37.4959 127.483 38.4472 127.604 39.9865L127.742 41.7506L129.212 40.9204C129.61 41.4047 130.146 41.7333 130.734 41.8889C130.475 42.4424 130.371 43.0304 130.458 43.6357C130.648 44.9675 131.686 45.936 133.242 46.2127L134.366 46.4203L134.557 45.2788L134.678 44.6216C135.456 44.414 136.061 43.8433 136.355 43.2034C136.563 43.4282 136.839 43.6184 137.185 43.7741L137.376 44.3967L137.41 44.5178L137.67 45.3653C136.251 46.5586 135.888 47.8731 135.819 48.219C135.127 50.8478 135.923 52.733 136.718 53.8572C137.237 54.6009 137.808 55.1024 138.206 55.3965C138.344 56.4169 138.379 58.0426 137.877 58.9593L135.629 58.1983C134.557 56.8665 132.983 56.0191 131.513 56.0191C130.596 56.0191 128.382 56.365 127.448 59.6511L126.947 61.3979L128.711 61.0174L128.866 60.9828C128.97 61.2941 129.126 61.6054 129.385 61.8649C127.984 62.1762 126.359 62.4183 124.543 62.4183C123.955 62.4183 123.367 62.3318 122.778 62.2453C122.052 62.5567 121.257 62.868 120.357 63.1447C120.478 63.1447 120.582 63.1447 120.703 63.1447C121.066 63.1447 121.429 63.162 121.758 63.1966C122.727 63.3176 123.643 63.4906 124.525 63.4906C126.826 63.4906 128.849 63.1447 130.492 62.695C130.319 62.9199 130.164 63.162 130.06 63.4387C129.8 64.0786 129.748 64.805 129.904 65.5487C129.835 65.566 129.783 65.5833 129.714 65.6006C129.403 65.6698 129.109 65.739 128.866 65.7736C128.399 65.86 128.123 65.8773 128.123 65.8773C128.123 65.8773 128.538 66.1022 129.126 66.5C129.835 66.9842 130.786 67.7106 131.599 68.5927C135.49 72.7781 131.288 75.9604 131.288 75.9604ZM142.08 75.8394C142.132 74.8535 142.166 73.8158 141.89 72.8646C141.388 71.2215 139.901 70.3222 138.31 69.9417C135.94 69.3883 134.574 69.2153 132.723 67.5031C132.689 67.4685 132.637 67.4339 132.602 67.3993L133.173 67.0534C133.398 67.1399 133.657 67.1918 133.917 67.1918C134.92 67.1918 135.819 66.5346 136.182 65.8773C136.269 65.7217 136.338 65.5833 136.39 65.4277C136.39 65.445 136.407 65.445 136.407 65.4623C136.545 65.6352 136.684 65.7736 136.822 65.8946L136.718 67.2091L136.615 68.4716L137.877 68.3851C138.707 68.3333 139.814 68.1603 140.662 67.4512L141.146 67.6933C141.336 67.7971 141.509 67.8836 141.682 67.9873C142.166 68.3333 142.651 68.7829 143.066 69.4229C143.291 69.7515 143.464 70.0628 143.602 70.3741C145.331 73.9888 142.08 75.8394 142.08 75.8394ZM156.66 77.3094C156.66 77.3094 154.809 73.1932 150.226 72.8473C148.721 72.7262 147.078 72.5187 145.868 71.5329C145.349 71.1005 145.02 70.4779 144.501 69.786C144.346 69.4574 144.155 69.1461 143.948 68.8175C143.412 68.0046 142.737 67.3474 141.907 66.8632C142.547 66.5173 143.654 66.033 144.968 66.033C145.418 66.033 145.868 66.0849 146.352 66.2232C147.943 66.6729 149.465 67.2782 151.16 67.2782C152.474 67.2782 153.893 66.915 155.501 65.8082C155.501 65.8082 155.415 67.6587 153.408 68.6964C153.132 68.8348 152.803 68.9732 152.44 69.0769C151.8 69.2672 151.004 69.3883 150.07 69.3883C149.69 69.3883 149.292 69.371 148.86 69.3364C148.86 69.3364 151.281 70.1147 153.477 71.4983C154.809 72.3457 156.037 73.4007 156.591 74.646C156.971 75.4589 157.058 76.3409 156.66 77.3094ZM165.377 78.0531C162.903 78.0531 160.482 77.1711 158.718 75.2686C158.285 74.8189 157.905 74.3866 157.525 74.0061C156.936 72.7954 155.812 71.6712 154.169 70.6162C153.841 70.4087 153.495 70.2011 153.114 69.9936C153.201 69.959 153.27 69.9244 153.356 69.9071C153.529 69.8379 153.685 69.7688 153.841 69.6996C154.982 69.2499 155.881 68.9905 156.625 68.8694C156.625 68.9386 156.608 68.9905 156.608 69.0596L156.418 70.8583L158.095 70.1665L158.164 70.1492C158.286 70.3741 158.424 70.5643 158.58 70.7373C159.012 71.187 159.583 71.4291 160.223 71.4291C160.015 71.7404 159.877 72.0863 159.79 72.4495C159.531 73.591 159.963 74.8362 160.966 75.9431L161.693 76.7387L162.488 76.0296L163.232 75.3724C163.336 75.3897 163.439 75.3897 163.543 75.3897C164.598 75.3897 165.532 74.5595 165.826 73.7466C165.861 73.6429 165.895 73.5391 165.913 73.4353C166.034 73.5218 166.138 73.6083 166.241 73.6775L166.362 74.8535L166.483 76.1161L167.711 75.8048C168.628 75.5799 169.925 75.113 170.513 73.8677C170.79 73.2797 170.859 72.6225 170.738 71.8788C173.419 71.5674 175.529 70.8583 175.529 70.8583C173.972 75.4589 169.597 78.0531 165.377 78.0531ZM71.2216 4.98101C69.6477 5.41339 67.6588 4.99831 67.6588 4.99831C68.8694 6.19167 69.2672 6.91807 69.2672 6.91807C70.8584 7.00455 71.2216 5.96684 71.2216 4.98101ZM149.309 4.98101C149.309 5.96684 149.673 7.00455 151.264 6.93537C151.264 6.93537 151.679 6.20897 152.872 5.0156C152.872 5.0156 150.883 5.41339 149.309 4.98101ZM150.261 26.2887C150.537 25.8217 150.814 25.3547 151.091 24.8878C151.54 24.1268 151.955 23.3139 152.319 22.4837C152.665 21.6536 152.959 20.8234 153.218 19.9759C153.495 19.1458 153.737 18.2983 153.979 17.4508C153.599 18.2464 153.218 19.0247 152.803 19.803C152.405 20.5813 151.99 21.3423 151.54 22.0686C151.073 22.795 150.572 23.4696 150.018 24.1268C149.534 24.7148 149.015 25.3201 148.514 25.9082C149.084 25.9774 149.673 26.0811 150.261 26.2887ZM68.2122 22.4837C68.5581 23.3139 68.9905 24.1268 69.4402 24.8878C69.7169 25.3547 69.9936 25.8217 70.2703 26.2887C70.8584 26.0811 71.4464 25.9601 72.0171 25.9255C71.5156 25.3374 70.9967 24.7321 70.5125 24.1441C69.959 23.4696 69.4575 22.795 68.9905 22.0859C68.5408 21.3595 68.1257 20.5986 67.7279 19.8203C67.3302 19.042 66.9497 18.2464 66.5519 17.4681C66.794 18.3156 67.0534 19.1458 67.3129 19.9932C67.5723 20.8234 67.8663 21.6536 68.2122 22.4837ZM67.9528 27.4993C66.6211 25.5796 65.3412 23.6252 64.2689 21.5671C63.6809 20.4429 63.162 19.2841 62.7469 18.0908C62.3145 16.8974 61.9686 15.6694 61.6919 14.4242C61.8303 15.704 62.0205 16.9666 62.3145 18.2291C62.6086 19.4917 63.0064 20.7196 63.4733 21.9303C63.9403 23.1409 64.4764 24.317 65.0299 25.4758C65.4796 26.3924 65.9465 27.2918 66.4135 28.1911C66.8632 28.0528 67.382 27.8279 67.9528 27.4993ZM154.083 28.1911C154.567 27.2918 155.034 26.3924 155.466 25.4758C156.037 24.317 156.573 23.1409 157.023 21.9303C157.49 20.7196 157.87 19.4744 158.182 18.2291C158.476 16.9666 158.683 15.704 158.804 14.4242C158.528 15.6694 158.182 16.8974 157.749 18.0908C157.317 19.2841 156.798 20.4429 156.227 21.5671C155.155 23.6252 153.875 25.5796 152.544 27.4993C153.149 27.8279 153.65 28.0528 154.083 28.1911Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M128.469 14.1474H128.244H92.2871H92.1314L91.6298 15.2025H128.745L128.469 14.1474ZM133.38 20.5467V33.0511C133.761 33.1203 134.124 33.2759 134.435 33.5353V20.7542L133.38 20.5467ZM133.761 43.5147L133.484 45.0885C133.45 45.0885 133.415 45.0712 133.38 45.0712V47.2504C133.38 50.1733 132.516 52.8368 130.838 55.137C130.423 55.6905 129.973 56.2266 129.472 56.7455L88.3265 15.5657C88.1362 15.4792 87.9114 15.3927 87.652 15.3408V16.465C88.5167 16.759 88.9318 17.5373 88.8972 18.4021L87.7557 18.3848C87.5136 17.693 86.9083 17.2087 86.0954 17.0184V18.1426C86.4932 18.2983 86.7872 18.6096 86.7872 19.1285C86.7872 19.5781 86.424 19.924 86.0954 19.9932V33.4489C86.5105 33.103 87.012 32.9819 87.5309 32.9819C88.0324 32.9819 88.534 33.1721 89.001 33.4489L87.9287 34.452C88.5686 35.213 87.8941 36.3717 87.2023 36.7522C86.4586 37.15 86.8564 37.8418 87.3925 37.8418C87.5655 37.8418 87.7384 37.7727 87.9114 37.617C88.3611 37.2019 88.9491 36.9944 89.5198 36.9944C90.7305 36.9944 91.9239 37.9283 91.7682 39.8654L90.8343 39.3465C90.523 40.3669 89.7965 40.7993 89.122 40.7993C88.8107 40.7993 88.5167 40.7128 88.2919 40.5399C87.773 40.1594 87.2369 39.7616 86.8737 39.7616C86.7526 39.7616 86.6315 39.8135 86.5624 39.9173C86.2856 40.2978 86.5797 40.6782 87.5655 41.1625C89.2258 41.9927 89.5544 44.3794 87.3752 45.0193L87.012 45.0539L86.7353 43.4801C86.6142 43.5147 86.4932 43.532 86.3721 43.532C86.2683 43.532 86.1646 43.5147 86.0608 43.4974V47.2158C86.0608 50.8997 87.3233 53.9782 89.3815 56.4515C89.3988 56.4687 89.4161 56.486 89.4161 56.5033C89.4852 56.5898 89.5717 56.6763 89.6409 56.7628C89.6582 56.7801 89.6755 56.7974 89.6928 56.8146C89.7793 56.9184 89.8657 57.0049 89.9522 57.1087C89.9522 57.1087 89.9522 57.126 89.9695 57.126C90.056 57.2297 90.1598 57.3162 90.2462 57.42L90.2635 57.4373C90.3846 57.5065 90.4884 57.5929 90.5921 57.6794C90.7997 57.8524 91.0072 58.0599 91.1802 58.302C92.5119 59.4781 94.0685 60.4639 95.7461 61.2941C95.9363 61.3979 96.1266 61.5016 96.3341 61.5881C99.1014 62.9717 103.148 64.4764 110.222 64.4764C117.296 64.4764 121.343 62.9717 124.11 61.5881C124.318 61.4843 124.508 61.3806 124.698 61.2941C126.359 60.4812 127.881 59.4954 129.212 58.3539C129.247 58.302 129.281 58.2501 129.316 58.1983C129.333 58.181 129.351 58.1637 129.368 58.1291C129.385 58.1118 129.403 58.0772 129.437 58.0599C129.454 58.0253 129.489 58.008 129.506 57.9734C129.524 57.9561 129.524 57.9388 129.541 57.9388C129.575 57.9042 129.61 57.8697 129.645 57.8351L129.662 57.8178C129.697 57.7832 129.731 57.7486 129.766 57.714C129.766 57.714 129.766 57.714 129.783 57.6967C129.818 57.6621 129.869 57.6275 129.904 57.5929C129.991 57.5238 130.077 57.4719 130.163 57.42C130.181 57.4027 130.198 57.4027 130.215 57.3854C132.792 54.7565 134.401 51.3494 134.401 47.1812V43.5147C134.297 43.5492 134.193 43.5665 134.072 43.5665C134.003 43.5665 133.882 43.5492 133.761 43.5147Z\",\n fill: \"#CC0000\"\n }), jsx(\"path\", {\n d: \"M11.9378 1H0V99.487H11.9378V1Z\",\n fill: \"#FFCC00\"\n })]\n }), jsx(\"defs\", {\n children: jsx(\"clipPath\", {\n id: \"clip0_908_6292\",\n children: jsx(\"rect\", {\n width: \"192\",\n height: \"100\",\n fill: \"white\"\n })\n })\n })]\n }));\n});\nLogoImage.displayName = 'LogoImage';\nvar css_248z$n = \".utrecht-mark{background-color:var(--utrecht-mark-background-color,revert);color:var(--utrecht-mark-color,revert)}@media print{.utrecht-mark{outline-color:currentColor;outline-style:dotted;outline-width:.1em}}@media screen and (-ms-high-contrast:active){.utrecht-mark{background-color:Highlight;color:HighlightText}}.utrecht-mark--print{outline-color:currentColor;outline-style:dotted;outline-width:.1em}.utrecht-mark--windows-high-contrast{background-color:Highlight;color:HighlightText}\";\nstyleInject(css_248z$n);\nvar _excluded$x = [\"children\", \"className\"];\nfunction ownKeys$x(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$x(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$x(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$x(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Mark = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$x);\n return jsx(\"mark\", _objectSpread$x(_objectSpread$x({\n ref: ref,\n className: clsx('utrecht-mark', className)\n }, restProps), {}, {\n children: children\n }));\n});\nMark.displayName = 'Mark';\nvar css_248z$m = \".utrecht-multiline-data{white-space-collapse:preserve-breaks;white-space:pre-line}.utrecht-multiline-data--html-pre{font-family:inherit;margin-block-end:0;margin-block-start:0}\";\nstyleInject(css_248z$m);\nvar _excluded$w = [\"children\", \"className\"];\nfunction ownKeys$w(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$w(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$w(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$w(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar MultilineData = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$w);\n return jsx(\"pre\", _objectSpread$w(_objectSpread$w({\n ref: ref,\n className: clsx('utrecht-multiline-data', 'utrecht-multiline-data--html-pre', className)\n }, restProps), {}, {\n children: children\n }));\n});\nMultilineData.displayName = 'MultilineData';\nvar css_248z$l = \".utrecht-number-data{font-variant-numeric:lining-nums tabular-nums}.utrecht-number-data--positive{color:var(--utrecht-number-data-positive-color)}.utrecht-number-data--negative{color:var(--utrecht-number-data-negative-color)}\";\nstyleInject(css_248z$l);\nvar _excluded$v = [\"children\", \"className\", \"value\"];\nfunction ownKeys$v(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$v(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$v(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$v(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar NumberData = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n value = _ref.value,\n restProps = _objectWithoutProperties(_ref, _excluded$v);\n return jsx(\"data\", _objectSpread$v(_objectSpread$v({\n value: typeof value === 'string' || typeof value === 'number' ? String(value) : undefined\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-number-data', className),\n children: children\n }));\n});\nNumberData.displayName = 'NumberData';\nvar css_248z$k = \".utrecht-ordered-list,.utrecht-ordered-list--html-content ol{box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit)));line-height:var(--utrecht-ordered-list-font-size,var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit)));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-end, var(--utrecht-unordered-list-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-ordered-list-margin-block-start, var(--utrecht-unordered-list-margin-block-start, 0)));padding-inline-start:var(--utrecht-ordered-list-padding-inline-start,var(--utrecht-unordered-list-padding-inline-start,2ch));text-align:start}.utrecht-ordered-list--center{inline-size:max-content;margin-inline-end:auto;margin-inline-start:auto;max-inline-size:100%}.utrecht-ordered-list--distanced{--utrecht-space-around:1}.utrecht-ordered-list--arabic{list-style:arabic-indic}.utrecht-ordered-list--html-content ol>li,.utrecht-ordered-list--html-content>li,.utrecht-ordered-list__item{margin-block-end:var(--utrecht-ordered-list-item-margin-block-end,var(--utrecht-unordered-list-item-margin-block-end));margin-block-start:var(--utrecht-ordered-list-item-margin-block-start,var(--utrecht-unordered-list-item-margin-block-start));padding-inline-start:var(--utrecht-ordered-list-item-padding-inline-start,var(--utrecht-unordered-list-item-padding-inline-start,1ch))}\";\nstyleInject(css_248z$k);\nvar _excluded$u = [\"children\", \"className\"];\nfunction ownKeys$u(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$u(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$u(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$u(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar OrderedList = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$u);\n return jsx(\"ol\", _objectSpread$u(_objectSpread$u({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-ordered-list', className),\n children: children\n }));\n});\nOrderedList.displayName = 'OrderedList';\nvar _excluded$t = [\"children\", \"className\"];\nfunction ownKeys$t(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$t(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$t(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$t(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar OrderedListItem = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$t);\n return jsx(\"li\", _objectSpread$t(_objectSpread$t({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-ordered-list__item', className),\n children: children\n }));\n});\nOrderedListItem.displayName = 'OrderedListItem';\nvar css_248z$j = \".utrecht-page{margin-inline-end:auto;margin-inline-start:auto;max-inline-size:calc(var(--utrecht-page-max-inline-size) - var(--utrecht-page-margin-inline-start, 0px) - var(--utrecht-page-margin-inline-end, 0px));padding-inline-end:var(--utrecht-page-margin-inline-end);padding-inline-start:var(--utrecht-page-margin-inline-start)}.utrecht-page__content{background-color:var(--utrecht-page-background-color);color:var(--utrecht-page-color);max-inline-size:var(--utrecht-page-max-inline-size)}\";\nstyleInject(css_248z$j);\nvar _excluded$s = [\"children\", \"className\"];\nfunction ownKeys$s(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$s(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$s(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$s(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Page = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$s);\n return jsx(\"div\", _objectSpread$s(_objectSpread$s({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page', className),\n children: children\n }));\n});\nPage.displayName = 'Page';\nvar css_248z$i = \".utrecht-page-content{padding-block-end:var(--utrecht-page-content-padding-block-end);padding-block-start:var(--utrecht-page-content-padding-block-start);padding-inline-end:var(--utrecht-page-padding-inline-end);padding-inline-start:var(--utrecht-page-padding-inline-start)}.utrecht-page-content__main{grid-area:main}.utrecht-page-content__aside{grid-area:aside}\";\nstyleInject(css_248z$i);\nvar _excluded$r = [\"children\", \"className\"],\n _excluded2$1 = [\"children\", \"className\"];\nfunction ownKeys$r(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$r(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$r(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$r(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PageContent = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$r);\n return jsx(\"div\", _objectSpread$r(_objectSpread$r({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page-content', className),\n children: children\n }));\n});\nPageContent.displayName = 'PageContent';\nvar PageContentMain = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var children = _ref2.children,\n className = _ref2.className,\n restProps = _objectWithoutProperties(_ref2, _excluded2$1);\n return jsx(\"main\", _objectSpread$r(_objectSpread$r({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page-content__main', className),\n children: children\n }));\n});\nPageContentMain.displayName = 'PageContentMain';\nvar css_248z$h = \".utrecht-page-footer{--utrecht-document-color:currentColor;--utrecht-heading-color:currentColor;--utrecht-link-color:currentColor;--utrecht-link-focus-color:currentColor;--utrecht-link-hover-color:currentColor;--utrecht-link-active-color:currentColor;--utrecht-link-visited-color:currentColor;background-color:var(--utrecht-page-footer-background-color);background-image:var(--utrecht-page-footer-background-image);color:var(--utrecht-page-footer-color);font-family:var(--utrecht-document-font-family);font-size:var(--utrecht-document-font-size);padding-block-end:var(--utrecht-page-footer-padding-block-end);padding-block-start:var(--utrecht-page-footer-padding-block-start);padding-inline-end:var(--utrecht-page-footer-padding-inline-end);padding-inline-start:var(--utrecht-page-footer-padding-inline-start)}.utrecht-page-footer__address--reset-address{font-style:inherit;margin-block-end:0;margin-block-start:0}\";\nstyleInject(css_248z$h);\nvar _excluded$q = [\"children\", \"className\"];\nfunction ownKeys$q(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$q(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$q(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$q(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PageFooter = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$q);\n return jsx(\"footer\", _objectSpread$q(_objectSpread$q({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page-footer', className),\n children: children\n }));\n});\nPageFooter.displayName = 'PageFooter';\nvar css_248z$g = \".utrecht-page-header{background-color:var(--utrecht-page-header-background-color);color:var(--utrecht-page-header-color);grid-area:\\\"utrecht-header\\\";padding-block-end:var(--utrecht-page-header-padding-block-end);padding-block-start:var(--utrecht-page-header-padding-block-start);padding-inline-end:var(--utrecht-page-padding-inline-end);padding-inline-start:var(--utrecht-page-padding-inline-start)}.utrecht-page-header__content{max-inline-size:var(--utrecht-page-max-inline-size)}\";\nstyleInject(css_248z$g);\nvar _excluded$p = [\"children\", \"className\"];\nfunction ownKeys$p(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$p(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$p(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$p(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PageHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$p);\n return jsx(\"header\", _objectSpread$p(_objectSpread$p({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-page-header', className),\n children: children\n }));\n});\nPageHeader.displayName = 'PageHeader';\nvar css_248z$f = \".utrecht-paragraph{color:var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit));font-family:var(--utrecht-paragraph-font-family,var(--utrecht-document-font-family,inherit));font-size:var(--utrecht-paragraph-font-size,var(--utrecht-document-font-size,inherit));font-weight:var(--utrecht-paragraph-font-weight,inherit);line-height:var(--utrecht-paragraph-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-paragraph-margin-block-start, 0))}.utrecht-paragraph--lead{color:var(--utrecht-paragraph-lead-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-lead-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-lead-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-lead-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-paragraph--small{color:var(--utrecht-paragraph-small-color,var(--utrecht-paragraph-color,var(--utrecht-document-color,inherit)));font-size:var(--utrecht-paragraph-small-font-size,var(--utrecht-paragraph-font-size,inherit));font-weight:var(--utrecht-paragraph-small-font-weight,var(--utrecht-paragraph-font-weight,inherit));line-height:var(--utrecht-paragraph-small-line-height,var(--utrecht-paragraph-line-height,inherit))}.utrecht-paragraph__small{font-size:inherit}.utrecht-paragraph__b{font-weight:inherit}.utrecht-paragraph--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$f);\nvar _excluded$o = [\"children\", \"className\", \"lead\", \"small\"];\nfunction ownKeys$o(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$o(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$o(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$o(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Paragraph = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n lead = _ref.lead,\n small = _ref.small,\n restProps = _objectWithoutProperties(_ref, _excluded$o);\n return jsx(\"p\", _objectSpread$o(_objectSpread$o({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-paragraph', lead && 'utrecht-paragraph--lead', small && 'utrecht-paragraph--small', className),\n children: lead ? jsx(\"b\", {\n className: \"utrecht-paragraph__b\",\n children: children\n }) : small ? jsx(\"small\", {\n className: \"utrecht-paragraph__small\",\n children: children\n }) : children\n }));\n});\nParagraph.displayName = 'Paragraph';\nvar css_248z$e = \".utrecht-data-placeholder{background-color:var(--utrecht-data-placeholder-background-color,currentColor);block-size:1em;display:inline-block;inline-size:min(100%,var(--utrecht-data-placeholder-max-inline-size));max-inline-size:var(--utrecht-data-placeholder-max-inline-size);min-inline-size:var(--utrecht-data-placeholder-min-inline-size,10ch);vertical-align:-.1em}@media print{.utrecht-data-placeholder{outline-color:currentColor;outline-style:dashed;outline-width:.1em}}@media screen and (prefers-contrast:more){.utrecht-data-placeholder{background-color:var(--utrecht-data-placeholder-high-contrast-background-color,var(--utrecht-data-placeholder-background-color,currentColor))}}@media screen and (forced-colors:active){.utrecht-data-placeholder{background-color:GrayText}}.utrecht-data-placeholder--loading{cursor:var(--utrecht-action-busy-cursor,busy)}.utrecht-data-placeholder--print{outline-color:currentColor;outline-style:dashed;outline-width:.1em}.utrecht-data-placeholder--forced-colors{background-color:GrayText}.utrecht-data-placeholder--high-contrast{cursor:var(--utrecht-action-busy-cursor,busy)}\";\nstyleInject(css_248z$e);\nvar _excluded$n = [\"loading\", \"className\"];\nfunction ownKeys$n(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$n(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$n(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$n(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar DataPlaceholder = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var loading = _ref.loading,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$n);\n return jsx(\"span\", _objectSpread$n({\n ref: ref,\n className: clsx('utrecht-data-placeholder', {\n 'utrecht-data-placeholder--loading': loading\n }, className)\n }, restProps));\n});\nDataPlaceholder.displayName = 'DataPlaceholder';\nvar css_248z$d = \".utrecht-pre-heading{color:var(--utrecht-pre-heading-color,var(--utrecht-heading-color,var(--utrecht-document-color,inherit)));font-family:var(--utrecht-pre-heading-font-family,var(--utrecht-heading-font-family,var(--utrecht-document-font-family)));font-size:var(--utrecht-pre-heading-font-size);font-weight:var(--utrecht-pre-heading-font-weight,var(--utrecht-heading-font-weight,bold));line-height:var(--utrecht-pre-heading-line-height);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-pre-heading-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-pre-heading-margin-block-start, 0));order:var(--utrecht-pre-heading-order,0)}.utrecht-pre-heading--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$d);\nvar _excluded$m = [\"children\", \"className\"];\nfunction ownKeys$m(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$m(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$m(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$m(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PreHeading = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$m);\n return jsx(\"p\", _objectSpread$m(_objectSpread$m({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-pre-heading', className),\n children: children\n }));\n});\nPreHeading.displayName = 'PreHeading';\nvar css_248z$c = \".utrecht-preserve-data{white-space-collapse:preserve-spaces;unicode-bidi:isolate}\";\nstyleInject(css_248z$c);\nvar _excluded$l = [\"children\", \"className\", \"dateTime\", \"value\"];\nfunction ownKeys$l(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$l(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$l(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$l(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar PreserveData = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n dateTime = _ref.dateTime,\n value = _ref.value,\n restProps = _objectWithoutProperties(_ref, _excluded$l);\n var props = _objectSpread$l({\n children: jsx(\"bdi\", {\n translate: \"no\",\n children: children\n }),\n className: clsx('utrecht-preserve-data', className)\n }, restProps);\n return typeof dateTime !== 'undefined' ? jsx(\"time\", _objectSpread$l(_objectSpread$l({}, props), {}, {\n dateTime: dateTime,\n ref: ref\n })) : typeof value !== 'undefined' ? jsx(\"data\", _objectSpread$l(_objectSpread$l({}, props), {}, {\n value: value,\n ref: ref\n })) : jsx(\"bdi\", _objectSpread$l(_objectSpread$l({\n translate: \"no\",\n ref: ref\n }, props), {}, {\n children: children\n }));\n});\nPreserveData.displayName = 'PreserveData';\nvar css_248z$b = \".utrecht-radio-button{--_utrecht-radio-button-background-color:var(\\n --_utrecht-radio-button-interactive-background-color,var(--_utrecht-radio-button-state-background-color,var(--utrecht-radio-button-background-color))\\n );--_utrecht-radio-button-border-color:var(\\n --_utrecht-radio-button-interactive-border-color,var(--_utrecht-radio-button-state-border-color,var(--utrecht-radio-button-border-color,currentColor))\\n );--_utrecht-radio-button-border-width:var(\\n --_utrecht-radio-button-interactive-border-width,var(--_utrecht-radio-button-state-border-width,var(--utrecht-radio-button-border-width))\\n );--_utrecht-radio-button-color:var(\\n --_utrecht-radio-button-interactive-color,var(--_utrecht-radio-button-state-color,var(--utrecht-radio-button-color,currentColor))\\n );--_utrecht-radio-button-icon-size:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--_utrecht-radio-button-background-color);background-image:radial-gradient(circle,var(--_utrecht-radio-button-color,transparent) calc(var(--_utrecht-radio-button-icon-size, 50%) - 5%),var(--_utrecht-radio-button-background-color,currentColor) var(--_utrecht-radio-button-icon-size,50%));background-position:50%;background-repeat:no-repeat;background-size:contain;block-size:var(--utrecht-radio-button-size,1em);border-color:var(--_utrecht-radio-button-border-color);border-radius:50%;border-style:solid;border-width:var(--_utrecht-radio-button-border-width);cursor:var(--utrecht-action-activate-cursor,revert);inline-size:var(--utrecht-radio-button-size,1em);margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-end:var(--utrecht-radio-button-margin-inline-end);margin-inline-start:0;min-block-size:24px;min-inline-size:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:top}.utrecht-radio-button--checked{--_utrecht-radio-button-icon-size:var(--utrecht-radio-button-icon-size,50%);--_utrecht-radio-button-state-background-color:var(--utrecht-radio-button-checked-background-color);--_utrecht-radio-button-state-border-color:var(--utrecht-radio-button-checked-border-color);--_utrecht-radio-button-state-border-width:var(--utrecht-radio-button-checked-border-width);--_utrecht-radio-button-state-color:var(--utrecht-radio-button-checked-color);--_utrecht-radio-button-state-active-background-color:var(--utrecht-radio-button-checked-active-background-color);--_utrecht-radio-button-state-active-border-color:var(--utrecht-radio-button-checked-active-border-color);--_utrecht-radio-button-state-active-border-width:var(--utrecht-radio-button-checked-active-border-width);--_utrecht-radio-button-state-active-color:var(--utrecht-radio-button-checked-active-color);--_utrecht-radio-button-state-focus-background-color:var(--utrecht-radio-button-checked-focus-background-color);--_utrecht-radio-button-state-focus-border-color:var(--utrecht-radio-button-checked-focus-border-color);--_utrecht-radio-button-state-focus-border-width:var(--utrecht-radio-button-checked-focus-border-width);--_utrecht-radio-button-state-focus-color:var(--utrecht-radio-button-checked-focus-color);--_utrecht-radio-button-state-hover-background-color:var(--utrecht-radio-button-checked-hover-background-color);--_utrecht-radio-button-state-hover-border-color:var(--utrecht-radio-button-checked-hover-border-color);--_utrecht-radio-button-state-hover-border-width:var(--utrecht-radio-button-checked-hover-border-width);--_utrecht-radio-button-state-hover-color:var(--utrecht-radio-button-checked-hover-color)}.utrecht-radio-button--hover{--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-hover-background-color,var(--utrecht-radio-button-hover-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-hover-border-color,var(--utrecht-radio-button-hover-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-hover-border-width,var(--utrecht-radio-button-hover-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-hover-color,var(--utrecht-radio-button-hover-color)\\n )}.utrecht-radio-button--focus{--_utrecht-radio-button-interactive-background-color:var(\\n --utrecht-radio-button-focus-background-color,var(--utrecht-radio-button-focus-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --utrecht-radio-button-focus-border-color,var(--utrecht-radio-button-focus-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --utrecht-radio-button-focus-border-width,var(--utrecht-radio-button-focus-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --utrecht-radio-button-focus-color,var(--utrecht-radio-button-focus-color)\\n )}.utrecht-radio-button--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-radio-button--active{--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-active-background-color,var(--utrecht-radio-button-active-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-active-border-color,var(--utrecht-radio-button-active-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-active-border-width,var(--utrecht-radio-button-active-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-active-color,var(--utrecht-radio-button-active-color)\\n )}.utrecht-radio-button--disabled{--_utrecht-radio-button-background-color:var(--utrecht-radio-button-disabled-background-color);--_utrecht-radio-button-border-color:var(--utrecht-radio-button-disabled-border-color);--_utrecht-radio-button-border-width:var(--utrecht-radio-button-disabled-border-width);--_utrecht-radio-button-color:var(--utrecht-radio-button-disabled-color);--_utrecht-radio-button-focus-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-focus-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-focus-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-focus-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-active-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-active-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-active-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-active-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-hover-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-hover-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-hover-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-hover-color:var(--_utrecht-radio-button-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-radio-button--invalid{border-color:var(--utrecht-radio-button-invalid-border-color,var(--utrecht-radio-button-border-color));border-width:var(--utrecht-radio-button-invalid-border-width,var(--utrecht-radio-button-border-width));color:var(--utrecht-radio-button-invalid-color,var(--utrecht-radio-button-color))}.utrecht-radio-button--html-input:checked{--_utrecht-radio-button-icon-size:var(--utrecht-radio-button-icon-size,50%);--_utrecht-radio-button-state-background-color:var(--utrecht-radio-button-checked-background-color);--_utrecht-radio-button-state-border-color:var(--utrecht-radio-button-checked-border-color);--_utrecht-radio-button-state-border-width:var(--utrecht-radio-button-checked-border-width);--_utrecht-radio-button-state-color:var(--utrecht-radio-button-checked-color);--_utrecht-radio-button-state-active-background-color:var(--utrecht-radio-button-checked-active-background-color);--_utrecht-radio-button-state-active-border-color:var(--utrecht-radio-button-checked-active-border-color);--_utrecht-radio-button-state-active-border-width:var(--utrecht-radio-button-checked-active-border-width);--_utrecht-radio-button-state-active-color:var(--utrecht-radio-button-checked-active-color);--_utrecht-radio-button-state-focus-background-color:var(--utrecht-radio-button-checked-focus-background-color);--_utrecht-radio-button-state-focus-border-color:var(--utrecht-radio-button-checked-focus-border-color);--_utrecht-radio-button-state-focus-border-width:var(--utrecht-radio-button-checked-focus-border-width);--_utrecht-radio-button-state-focus-color:var(--utrecht-radio-button-checked-focus-color);--_utrecht-radio-button-state-hover-background-color:var(--utrecht-radio-button-checked-hover-background-color);--_utrecht-radio-button-state-hover-border-color:var(--utrecht-radio-button-checked-hover-border-color);--_utrecht-radio-button-state-hover-border-width:var(--utrecht-radio-button-checked-hover-border-width);--_utrecht-radio-button-state-hover-color:var(--utrecht-radio-button-checked-hover-color)}.utrecht-radio-button--html-input:disabled{--_utrecht-radio-button-background-color:var(--utrecht-radio-button-disabled-background-color);--_utrecht-radio-button-border-color:var(--utrecht-radio-button-disabled-border-color);--_utrecht-radio-button-border-width:var(--utrecht-radio-button-disabled-border-width);--_utrecht-radio-button-color:var(--utrecht-radio-button-disabled-color);--_utrecht-radio-button-focus-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-focus-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-focus-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-focus-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-active-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-active-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-active-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-active-color:var(--_utrecht-radio-button-color);--_utrecht-radio-button-hover-background-color:var(--_utrecht-radio-button-background-color);--_utrecht-radio-button-hover-border-color:var(--_utrecht-radio-button-border-color);--_utrecht-radio-button-hover-border-width:var(--_utrecht-radio-button-border-width);--_utrecht-radio-button-hover-color:var(--_utrecht-radio-button-color);cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-radio-button--html-input:invalid,.utrecht-radio-button--html-input[aria-invalid=true]{border-color:var(--utrecht-radio-button-invalid-border-color,var(--utrecht-radio-button-border-color));border-width:var(--utrecht-radio-button-invalid-border-width,var(--utrecht-radio-button-border-width));color:var(--utrecht-radio-button-invalid-color,var(--utrecht-radio-button-color))}.utrecht-radio-button--html-input:focus:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --utrecht-radio-button-focus-background-color,var(--utrecht-radio-button-focus-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --utrecht-radio-button-focus-border-color,var(--utrecht-radio-button-focus-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --utrecht-radio-button-focus-border-width,var(--utrecht-radio-button-focus-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --utrecht-radio-button-focus-color,var(--utrecht-radio-button-focus-color)\\n )}.utrecht-radio-button--html-input:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-radio-button--html-input:hover:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-hover-background-color,var(--utrecht-radio-button-hover-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-hover-border-color,var(--utrecht-radio-button-hover-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-hover-border-width,var(--utrecht-radio-button-hover-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-hover-color,var(--utrecht-radio-button-hover-color)\\n )}.utrecht-radio-button--html-input:active:not([aria-disabled=true],:disabled){--_utrecht-radio-button-interactive-background-color:var(\\n --_utrecht-radio-button-state-active-background-color,var(--utrecht-radio-button-active-background-color)\\n );--_utrecht-radio-button-interactive-border-color:var(\\n --_utrecht-radio-button-state-active-border-color,var(--utrecht-radio-button-active-border-color)\\n );--_utrecht-radio-button-interactive-border-width:var(\\n --_utrecht-radio-button-state-active-border-width,var(--utrecht-radio-button-active-border-width)\\n );--_utrecht-radio-button-interactive-color:var(\\n --_utrecht-radio-button-state-active-color,var(--utrecht-radio-button-active-color)\\n )}\";\nstyleInject(css_248z$b);\nvar _excluded$k = [\"disabled\", \"required\", \"className\", \"invalid\"];\nfunction ownKeys$k(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$k(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$k(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$k(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar RadioButton = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var disabled = _ref.disabled,\n required = _ref.required,\n className = _ref.className,\n invalid = _ref.invalid,\n restProps = _objectWithoutProperties(_ref, _excluded$k);\n return jsx(\"input\", _objectSpread$k({\n type: \"radio\",\n \"aria-invalid\": invalid || undefined,\n disabled: disabled,\n required: required,\n ref: ref,\n className: clsx('utrecht-radio-button', 'utrecht-radio-button--html-input', disabled && 'utrecht-radio-button--disabled', invalid && 'utrecht-radio-button--invalid', className)\n }, restProps));\n});\nRadioButton.displayName = 'RadioButton';\nvar css_248z$a = \".utrecht-select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:var(--utrecht-select-background-color,var(--utrecht-form-control-background-color));background-image:var(--utrecht-select-background-image);background-position:100%;background-repeat:no-repeat;background-size:1.4em;border-block-end-width:var(--utrecht-select-border-block-end-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width)));border-block-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-color:var(--utrecht-select-border-color,var(--utrecht-form-control-border-color));border-inline-end-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-inline-start-width:var(--utrecht-select-border-width,var(--utrecht-form-control-border-width));border-radius:var(--utrecht-select-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;color:var(--utrecht-select-color,var(--utrecht-form-control-color));font-family:var(--utrecht-select-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-select-font-size,var(--utrecht-form-control-font-size));inline-size:100%;max-inline-size:var(--utrecht-select-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-select-padding-block-end,var(--utrecht-form-control-padding-block-end));padding-block-start:var(--utrecht-select-padding-block-start,var(--utrecht-form-control-padding-block-start));padding-inline-end:var(--utrecht-select-padding-inline-end,var(--utrecht-form-control-padding-inline-end));padding-inline-start:var(--utrecht-select-padding-inline-start,var(--utrecht-form-control-padding-inline-start))}.utrecht-select--disabled{background-color:var(--utrecht-select-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-select--focus{background-color:var(--utrecht-select-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-select-color,var(--utrecht-form-control-color))))}.utrecht-select--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-select--busy{cursor:var(--utrecht-action-busy-cursor,busy)}.utrecht-select--invalid{--_utrecht-select-border-width:var(\\n --utrecht-select-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-select-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-select-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-select-border-width);border-block-end-width:var(--utrecht-select-invalid-border-block-end-width,var(--utrecht-form-control-invalid-border-block-end-width,var(--utrecht-select-border-block-end-width,var(--utrecht-form-control-border-block-end-width,var(--_utrecht-select-border-width)))));border-color:var(--utrecht-select-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))))}.utrecht-select--html-select:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-select-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-select-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-select--html-select:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-select--html-select:disabled{background-color:var(--utrecht-select-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-select-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-select-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-select-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-select-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-select-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}\";\nstyleInject(css_248z$a);\nvar _excluded$j = [\"busy\", \"invalid\", \"required\", \"className\", \"noscript\", \"children\"],\n _excluded2 = [\"disabled\", \"invalid\", \"value\", \"children\", \"className\"];\nfunction ownKeys$j(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$j(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$j(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$j(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Select = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var busy = _ref.busy,\n invalid = _ref.invalid,\n required = _ref.required,\n className = _ref.className,\n noscript = _ref.noscript,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded$j);\n return jsx(\"select\", _objectSpread$j(_objectSpread$j({\n \"aria-busy\": busy || undefined,\n \"aria-invalid\": invalid || undefined,\n required: noscript ? required : false,\n \"aria-required\": noscript ? undefined : required,\n className: clsx('utrecht-select', 'utrecht-select--html-select', busy && 'utrecht-select--busy', invalid && 'utrecht-select--invalid', required && 'utrecht-select--required', className),\n ref: ref\n }, restProps), {}, {\n children: children\n }));\n});\nSelect.displayName = 'Select';\nvar SelectOption = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var disabled = _ref2.disabled,\n invalid = _ref2.invalid,\n value = _ref2.value,\n children = _ref2.children,\n className = _ref2.className,\n restProps = _objectWithoutProperties(_ref2, _excluded2);\n return jsx(\"option\", _objectSpread$j(_objectSpread$j({}, restProps), {}, {\n ref: ref,\n disabled: disabled,\n value: value,\n className: clsx('utrecht-select__option', disabled && 'utrecht-select__option--disabled', invalid && 'utrecht-select__option--invalid', className),\n children: children\n }));\n});\nSelectOption.displayName = 'SelectOption';\nvar css_248z$9 = \".utrecht-separator{border-color:var(--utrecht-separator-color);border-style:solid;border-width:0 0 var(--utrecht-separator-block-size) 0;margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-separator-margin-block-start, 0))}.utrecht-separator--distanced{--utrecht-space-around:1}\";\nstyleInject(css_248z$9);\nvar _excluded$i = [\"className\", \"children\"];\nfunction ownKeys$i(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$i(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$i(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$i(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n// Do not pass `children` along with `restProps` and use _children as it's unused\nvar Separator = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className;\n _ref.children;\n var restProps = _objectWithoutProperties(_ref, _excluded$i);\n return jsx(\"hr\", _objectSpread$i(_objectSpread$i({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-separator', className)\n }));\n});\nSeparator.displayName = 'Separator';\nvar css_248z$8 = \".utrecht-skip-link{align-items:center;background-color:var(--utrecht-skip-link-background-color,ButtonFace);box-sizing:border-box;color:var(--utrecht-skip-link-color,ButtonText);display:inline-flex;justify-content:center;min-block-size:var(--utrecht-skip-link-min-block-size,44px);min-inline-size:var(--utrecht-skip-link-min-inline-size,44px);padding-block-end:var(--utrecht-skip-link-padding-block-end);padding-block-start:var(--utrecht-skip-link-padding-block-start);padding-inline-end:var(--utrecht-skip-link-padding-inline-end);padding-inline-start:var(--utrecht-skip-link-padding-inline-start);text-decoration:var(--utrecht-skip-link-text-decoration)}.utrecht-skip-link--hidden,.utrecht-skip-link--visible-on-focus{inset-block-start:-200%;position:fixed}.utrecht-skip-link--visible,.utrecht-skip-link--visible-on-focus:focus{--_utrecht-skip-link-inset:calc(var(--utrecht-focus-outline-width, 0px) + var(--utrecht-focus-outline-offset, 0px));inset-block-start:var(--_utrecht-skip-link-inset,0);inset-inline-start:var(--_utrecht-skip-link-inset,0);position:fixed;z-index:var(--utrecht-skip-link-z-index,var(--utrecht-layer-focus-z-index))}.utrecht-skip-link--focus,.utrecht-skip-link:focus,.utrecht-skip-link:focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert);text-decoration:var(--utrecht-skip-link-focus-text-decoration)}\";\nstyleInject(css_248z$8);\nvar _excluded$h = [\"children\", \"className\"];\nfunction ownKeys$h(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$h(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$h(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$h(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar SkipLink = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$h);\n return jsx(\"p\", {\n children: jsx(\"a\", _objectSpread$h(_objectSpread$h({\n ref: ref\n }, restProps), {}, {\n className: clsx('utrecht-skip-link', 'utrecht-skip-link--visible-on-focus', className),\n children: children\n }))\n });\n});\nSkipLink.displayName = 'SkipLink';\nvar css_248z$7 = \".utrecht-spotlight-section{background-color:var(--_utrecht-spotlight-section-background-color,var(--utrecht-spotlight-section-background-color));border-color:var(--_utrecht-spotlight-section-border-color,var(--utrecht-spotlight-section-border-color));border-style:solid;border-width:var(--_utrecht-spotlight-section-border-width,var(--utrecht-spotlight-section-border-width,0));color:var(--_utrecht-spotlight-section-color,var(--utrecht-spotlight-section-color));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-spotlight-section-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-spotlight-section-margin-block-start, 0));padding-block-end:var(--utrecht-spotlight-section-padding-block-end);padding-block-start:var(--utrecht-spotlight-section-padding-block-start);padding-inline-end:var(--utrecht-spotlight-section-padding-inline-end);padding-inline-start:var(--utrecht-spotlight-section-padding-inline-start)}.utrecht-spotlight-section--info{--_utrecht-spotlight-section-icon-color:var(--utrecht-spotlight-section-icon-info-color);--_utrecht-spotlight-section-background-color:var(--utrecht-spotlight-section-info-background-color);--_utrecht-spotlight-section-border-color:var(--utrecht-spotlight-section-info-border-color);--_utrecht-spotlight-section-border-width:var(--utrecht-spotlight-section-info-border-width);--_utrecht-spotlight-section-color:var(--utrecht-spotlight-section-info-color)}.utrecht-spotlight-section--warning{--_utrecht-spotlight-section-icon-color:var(--utrecht-spotlight-section-icon-warning-color);--_utrecht-spotlight-section-background-color:var(--utrecht-spotlight-section-warning-background-color);--_utrecht-spotlight-section-border-color:var(--utrecht-spotlight-section-warning-border-color);--_utrecht-spotlight-section-border-width:var(--utrecht-spotlight-section-warning-border-width);--_utrecht-spotlight-section-color:var(--utrecht-spotlight-section-warning-color)}\";\nstyleInject(css_248z$7);\nvar _excluded$g = [\"aside\", \"children\", \"className\", \"type\"];\nfunction ownKeys$g(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$g(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar SpotlightSection = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var aside = _ref.aside,\n children = _ref.children,\n className = _ref.className,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded$g);\n var props = _objectSpread$g(_objectSpread$g({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-spotlight-section', {\n 'utrecht-spotlight-section--info': type === 'info',\n 'utrecht-spotlight-section--warning': type === 'warning'\n }, className)\n });\n return aside ? jsx(\"aside\", _objectSpread$g(_objectSpread$g({}, props), {}, {\n children: children\n })) : jsx(\"section\", _objectSpread$g(_objectSpread$g({}, props), {}, {\n children: children\n }));\n});\nSpotlightSection.displayName = 'SpotlightSection';\nvar css_248z$6 = \".utrecht-badge-status{background-color:var(--utrecht-badge-background-color,#000);border-radius:var(--utrecht-badge-border-radius,.5ch);color:var(--utrecht-badge-color,#fff);display:inline-block;font-family:var(--utrecht-document-font-family,sans-serif);font-size:var(--utrecht-badge-font-size,inherit);font-style:var(--utrecht-badge-font-style,normal);font-weight:var(--utrecht-badge-font-weight,bold);letter-spacing:var(--utrecht-badge-status-letter-spacing,inherit);line-height:var(--utrecht-badge-line-height,1em);max-block-size:max-content;max-inline-size:max-content;min-block-size:1em;min-inline-size:1em;padding-block-end:var(--utrecht-badge-padding-block,.5ex);padding-block-start:var(--utrecht-badge-padding-block,.5ex);padding-inline-end:var(--utrecht-badge-padding-inline,.5ch);padding-inline-start:var(--utrecht-badge-padding-inline,.5ch);text-decoration:none;text-transform:var(--utrecht-badge-status-text-transform,inherit)}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.utrecht-badge-status{border:1px solid}}.utrecht-badge-status--danger{background-color:var(--utrecht-feedback-danger-fill-background-color,#c00);color:var(--utrecht-feedback-danger-fill-color,#fff)}.utrecht-badge-status--warning{background-color:var(--utrecht-feedback-warning-fill-background-color,#fc0);color:var(--utrecht-feedback-warning-fill-color,#fff)}.utrecht-badge-status--safe{background-color:var(--utrecht-feedback-safe-fill-background-color,#80a659);color:var(--utrecht-feedback-safe-fill-color,#fff)}.utrecht-badge-status--neutral{background-color:var(--utrecht-feedback-neutral-fill-background-color,#000);color:var(--utrecht-feedback-neutral-fill-color,#fff)}.utrecht-badge-status--valid{background-color:var(--utrecht-feedback-valid-fill-background-color,var(--utrecht-feedback-safe-fill-background-color,#80a659));color:var(--utrecht-feedback-valid-fill-color,var(--utrecht-feedback-safe-fill-color,#fff))}.utrecht-badge-status--invalid{background-color:var(--utrecht-feedback-invalid-fill-background-color,var(--utrecht-feedback-danger-fill-background-color,#ffa600));color:var(--utrecht-feedback-invalid-fill-color,var(--utrecht-feedback-danger-fill-color,#fff))}.utrecht-badge-status--error{background-color:var(--utrecht-feedback-error-fill-background-color,var(--utrecht-feedback-danger-fill-background-color,#900));color:var(--utrecht-feedback-error-fill-color,var(--utrecht-feedback-danger-fill-color,#fff))}.utrecht-badge-status--success{background-color:var(--utrecht-feedback-success-fill-background-color,var(--utrecht-feedback-safe-fill-background-color,#80a659));color:var(--utrecht-feedback-success-fill-color,var(--utrecht-feedback-safe-fill-color,#fff))}.utrecht-badge-status--active{background-color:var(--utrecht-feedback-active-fill-background-color,var(--utrecht-feedback-safe-fill-background-color,#80a659));color:var(--utrecht-feedback-active-fill-color,var(--utrecht-feedback-safe-fill-color,#fff))}.utrecht-badge-status--inactive{background-color:var(--utrecht-feedback-inactive-fill-background-color,var(--utrecht-feedback-danger-fill-background-color,#c00));color:var(--utrecht-feedback-inactive-fill-color,var(--utrecht-feedback-danger-fill-color,#fff))}\";\nstyleInject(css_248z$6);\nvar _excluded$f = [\"className\", \"status\"];\nfunction ownKeys$f(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$f(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar StatusBadge = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var className = _ref.className,\n status = _ref.status,\n restProps = _objectWithoutProperties(_ref, _excluded$f);\n return jsx(\"span\", _objectSpread$f(_objectSpread$f({\n className: clsx('utrecht-badge-status', \"utrecht-badge-status--\".concat(status ? status : 'neutral'), className)\n }, restProps), {}, {\n ref: ref\n }));\n});\nStatusBadge.displayName = 'StatusBadge';\nvar _excluded$e = [\"children\", \"className\"];\nfunction ownKeys$e(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$e(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Strong = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$e);\n return jsx(\"strong\", _objectSpread$e(_objectSpread$e({\n ref: ref,\n className: clsx('utrecht-emphasis', 'utrecht-emphasis--strong', className)\n }, restProps), {}, {\n children: children\n }));\n});\nStrong.displayName = 'Strong';\nvar css_248z$5 = \".utrecht-surface{background-color:var(--utrecht-surface-background-color,inherit);color:var(--utrecht-surface-color,inherit)}.utrecht-surface--html-body{margin-block-end:0;margin-block-start:0;margin-inline-end:0;margin-inline-start:0}\";\nstyleInject(css_248z$5);\nvar _excluded$d = [\"children\", \"className\"];\nfunction ownKeys$d(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$d(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Surface = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$d);\n return jsx(\"div\", _objectSpread$d(_objectSpread$d({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-surface', className),\n children: children\n }));\n});\nSurface.displayName = 'Surface';\nvar css_248z$4 = \".utrecht-table{border-collapse:separate;border-color:var(--utrecht-table-border-color,0);border-spacing:0;border-style:solid;border-width:var(--utrecht-table-border-width,0);font-family:var(--utrecht-table-font-family,var(--utrecht-document-font-family));font-size:var(--utrecht-table-font-size,inherit);inline-size:100%;line-height:var(--utrecht-table-line-height,inherit);margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-end, 0));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-table-margin-block-start, 0))}.utrecht-table--distanced{--utrecht-space-around:1}.utrecht-table--html-table>caption,.utrecht-table__caption{break-inside:avoid;color:var(--utrecht-table-caption-color);font-family:var(--utrecht-table-caption-font-family);font-size:var(--utrecht-table-caption-font-size);font-weight:var(--utrecht-table-caption-font-weight);line-height:var(--utrecht-table-caption-line-height);margin-block-end:var(--utrecht-table-caption-margin-block-end);page-break-after:avoid;text-align:var(--utrecht-table-caption-text-align,center)}.utrecht-table--html-table>thead,.utrecht-table__header{--_utrecht-table-header-cell-vertical-align:bottom;--_utrecht-table-header-cell-z-index:8;background-color:var(--utrecht-table-header-background-color);break-inside:avoid;color:var(--utrecht-table-header-color);font-weight:var(--utrecht-table-header-font-weight);page-break-inside:avoid;text-transform:var(--utrecht-table-header-text-transform)}.utrecht-table__header--sticky th{background-color:var(--utrecht-table-header-sticky-background-color);color:var(--utrecht-table-header-sticky-color);inset-block-start:0;position:sticky}.utrecht-table__header--sticky tr:last-child>th{border-block-end-color:var(--utrecht-table-header-sticky-border-block-end-color,var(--utrecht-table-header-border-block-end-color,transparent));border-block-end-style:solid;border-block-end-width:var(--utrecht-table-header-sticky-border-block-end-width,var(--utrecht-table-header-border-block-end-width,0))}.utrecht-table__footer{--_utrecht-table-header-cell-z-index:5;z-index:3}.utrecht-table__footer--sticky{background-color:var(--utrecht-table-footer-sticky-background-color,var(--utrecht-table-footer-background-color));color:var(--utrecht-table-footer-sticky-color,var(--utrecht-table-footer-color));inset-block-end:0;position:sticky}.utrecht-table__footer--sticky tr:first-child>td,.utrecht-table__footer--sticky tr:first-child>th{border-block-start-color:var(--utrecht-table-header-sticky-border-block-start-color,var(--utrecht-table-header-border-block-start-color,transparent));border-block-start-style:solid;border-block-start-width:var(--utrecht-table-header-sticky-border-block-start-width,var(--utrecht-table-header-border-block-start-width,0))}.utrecht-table--html-table>tbody,.utrecht-table__body{--_utrecht-table-header-cell-z-index:2}.utrecht-table--fixed{inline-size:fit-content;table-layout:fixed}.utrecht-table--fixed th,.utrecht-table--oneline td,.utrecht-table--oneline th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.utrecht-table--html-table>tbody>tr,.utrecht-table--html-table>tfoot>tr,.utrecht-table--html-table>thead>tr,.utrecht-table--html-table>tr,.utrecht-table__row{break-inside:avoid;page-break-inside:avoid}.utrecht-table__row--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table--html-table>tbody>tr>th,.utrecht-table--html-table>tfoot>tr>th,.utrecht-table--html-table>thead>tr>th,.utrecht-table--html-table>tr>th,.utrecht-table__header-cell{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);color:var(--utrecht-table-header-cell-color);font-size:var(--utrecht-table-header-cell-font-size);font-weight:var(--utrecht-table-header-cell-font-weight,bold);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start;text-transform:var(--utrecht-table-header-cell-text-transform);vertical-align:var(--_utrecht-table-header-cell-vertical-align,top);z-index:var(--_utrecht-table-header-cell-z-index)}.utrecht-table__header-cell--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table__header-cell--sticky-block{background-color:#eee;color:#000;inset-block-start:0;position:sticky;z-index:calc(var(--_utrecht-table-header-cell-z-index, 0) + 2)}.utrecht-table__header-cell--sticky-inline{background-color:#eee;color:#000;inset-inline-start:0;position:sticky;z-index:calc(var(--_utrecht-table-header-cell-z-index, 0) + 1)}.utrecht-table--html-table>tbody>tr>td,.utrecht-table--html-table>tfoot>tr>td,.utrecht-table--html-table>thead>tr>td,.utrecht-table--html-table>tr>td,.utrecht-table__cell{--utrecht-icon-size:var(--utrecht-table-cell-icon-size);block-size:var(--utrecht-table-cell-line-height,1em);border-block-end-color:var(--utrecht-table-row-border-block-end-color,transparent);border-block-end-style:solid;border-block-end-width:var(--utrecht-table-row-border-block-end-width,0);line-height:var(--utrecht-table-cell-line-height,inherit);padding-block-end:var(--utrecht-table-cell-padding-block-end,0);padding-block-start:var(--utrecht-table-cell-padding-block-start,0);padding-inline-end:var(--utrecht-table-cell-padding-inline-end,0);padding-inline-start:var(--utrecht-table-cell-padding-inline-start,0);text-align:start;vertical-align:top}.utrecht-table--html-table>tbody>tr>td:first-child,.utrecht-table--html-table>tfoot>tr>td:first-child,.utrecht-table--html-table>thead>tr>td:first-child,.utrecht-table--html-table>tr>td:first-child,.utrecht-table__cell--first{padding-inline-start:var(--utrecht-table-row-padding-inline-start,var(--utrecht-table-cell-padding-inline-start,0))}.utrecht-table--html-table>tbody>tr>td:last-child,.utrecht-table--html-table>tfoot>tr>td:last-child,.utrecht-table--html-table>thead>tr>td:last-child,.utrecht-table--html-table>tr>td:last-child,.utrecht-table__cell--last{padding-inline-end:var(--utrecht-table-row-padding-inline-end,var(--utrecht-table-cell-padding-inline-end,0))}.utrecht-table__cell--selected{background-color:var(--utrecht-table-cell-selected-background-color,highlight);color:var(--utrecht-table-cell-selected-color,highlightText)}.utrecht-table__cell--numeric-column,.utrecht-table__header-cell--numeric-column{--_utrecht-table-cell-text-align:right;text-align:var(--_utrecht-table-cell-text-align)}.utrecht-table__cell--numeric-data{font-variant-numeric:lining-nums tabular-nums}.utrecht-table__row--alternate-odd{background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-table__row--alternate-even{background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-table__header-cell{--utrecht-button-font-size:inherit;--utrecht-button-font-weight:inherit;--utrecht-button-padding-inline-start:var(--utrecht-table-cell-padding-inline-start);--utrecht-button-padding-inline-end:var(--utrecht-table-cell-padding-inline-end);--utrecht-button-padding-block-start:var(--utrecht-table-cell-padding-block-start);--utrecht-button-padding-block-end:var(--utrecht-table-cell-padding-block-end);--utrecht-button-hover-scale:1;--utrecht-button-focus-scale:1;--utrecht-button-min-block-size:100%;--utrecht-button-min-inline-size:100%;--utrecht-button-border-color:transparent;--utrecht-button-border-size:1px}.utrecht-table__header-cell:has(.utrecht-button){padding-block-end:0;padding-block-start:0;padding-inline-end:0;padding-inline-start:0}.utrecht-table__header-cell-button{justify-content:var(--_utrecht-table-cell-text-align,start)}.utrecht-table__data--truncate{display:block;max-inline-size:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.utrecht-table__container{max-inline-size:100%;overflow-inline:scroll}.utrecht-table__header--hidden{clip:rect(1px,1px,1px,1px);block-size:1px;border:0 solid silver;clip-path:inset(50%);inline-size:1px;outline:1px solid red;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.utrecht-table--busy{cursor:var(--utrecht-action-busy-cursor,busy)}.utrecht-table--alternate-row-color .utrecht-table__body .utrecht-table__row:nth-child(odd){background-color:var(--utrecht-table-row-alternate-odd-background-color);color:var(--utrecht-table-row-alternate-odd-color)}.utrecht-table--alternate-row-color .utrecht-table__body .utrecht-table__row:nth-child(2n){background-color:var(--utrecht-table-row-alternate-even-background-color);color:var(--utrecht-table-row-alternate-even-color)}.utrecht-table--row-hover .utrecht-table__body .utrecht-table__row:hover .utrecht-table__cell,.utrecht-table--row-hover .utrecht-table__body .utrecht-table__row:hover .utrecht-table__header-cell{background-color:#ffefd5;color:maroon}.utrecht-table--row-focus-within .utrecht-table__body .utrecht-table__row:focus-within .utrecht-table__cell,.utrecht-table--row-focus-within .utrecht-table__body .utrecht-table__row:focus-within .utrecht-table__header-cell{background-color:#ffefd5;color:maroon}\";\nstyleInject(css_248z$4);\nvar _excluded$c = [\"busy\", \"children\", \"className\"];\nfunction ownKeys$c(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$c(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Table = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var busy = _ref.busy,\n children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$c);\n return jsx(\"table\", _objectSpread$c(_objectSpread$c({\n \"aria-busy\": busy\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table', {\n 'utrecht-table--busy': busy\n }, className),\n children: children\n }));\n});\nTable.displayName = 'Table';\nvar _excluded$b = [\"children\", \"className\"];\nfunction ownKeys$b(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$b(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$b);\n return jsx(\"tbody\", _objectSpread$b(_objectSpread$b({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__body', className),\n children: children\n }));\n});\nTableBody.displayName = 'TableBody';\nvar _excluded$a = [\"children\", \"className\"];\nfunction ownKeys$a(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$a(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableCaption = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$a);\n return jsx(\"caption\", _objectSpread$a(_objectSpread$a({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__caption', className),\n children: children\n }));\n});\nTableCaption.displayName = 'TableCaption';\nvar _excluded$9 = [\"children\", \"className\", \"numericColumn\", \"selected\"];\nfunction ownKeys$9(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$9(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableCell = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n numericColumn = _ref.numericColumn,\n selected = _ref.selected,\n restProps = _objectWithoutProperties(_ref, _excluded$9);\n return jsx(\"td\", _objectSpread$9(_objectSpread$9({\n \"aria-selected\": selected ? true : undefined\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__cell', {\n 'utrecht-table__cell--selected': selected,\n 'utrecht-table__cell--numeric-column': numericColumn\n }, className),\n children: children\n }));\n});\nTableCell.displayName = 'TableCell';\nvar _excluded$8 = [\"children\", \"className\", \"sticky\"];\nfunction ownKeys$8(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$8(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableFooter = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n sticky = _ref.sticky,\n restProps = _objectWithoutProperties(_ref, _excluded$8);\n return jsx(\"tfoot\", _objectSpread$8(_objectSpread$8({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__footer', {\n 'utrecht-table__footer--sticky': sticky\n }, className),\n children: children\n }));\n});\nTableFooter.displayName = 'TableFooter';\nvar _excluded$7 = [\"children\", \"className\", \"sticky\"];\nfunction ownKeys$7(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$7(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n sticky = _ref.sticky,\n restProps = _objectWithoutProperties(_ref, _excluded$7);\n return jsx(\"thead\", _objectSpread$7(_objectSpread$7({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__header', {\n 'utrecht-table__header--sticky': sticky\n }, className),\n children: children\n }));\n});\nTableHeader.displayName = 'TableHeader';\nvar _excluded$6 = [\"children\", \"className\", \"numericColumn\", \"selected\", \"sticky\", \"scope\"];\nfunction ownKeys$6(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$6(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableHeaderCell = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n numericColumn = _ref.numericColumn,\n selected = _ref.selected,\n sticky = _ref.sticky,\n scope = _ref.scope,\n restProps = _objectWithoutProperties(_ref, _excluded$6);\n return jsx(\"th\", _objectSpread$6(_objectSpread$6({\n \"aria-selected\": selected ? true : undefined,\n scope: scope\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__header-cell', {\n 'utrecht-table__header-cell--numeric-column': numericColumn,\n 'utrecht-table__header-cell--selected': selected,\n 'utrecht-table__header-cell--sticky-inline': sticky && scope === 'row',\n 'utrecht-table__header-cell--sticky-block': sticky && scope === 'col'\n }, className),\n children: children\n }));\n});\nTableHeaderCell.displayName = 'TableHeaderCell';\nvar _excluded$5 = [\"children\", \"className\", \"selected\"];\nfunction ownKeys$5(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$5(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar TableRow = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n selected = _ref.selected,\n restProps = _objectWithoutProperties(_ref, _excluded$5);\n return jsx(\"tr\", _objectSpread$5(_objectSpread$5({\n \"aria-selected\": selected ? true : undefined\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-table__row', {\n 'utrecht-table__row--selected': selected\n }, className),\n children: children\n }));\n});\nTableRow.displayName = 'TableRow';\nvar css_248z$3 = \".utrecht-textarea{background-color:var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textarea-border-bottom-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textarea-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textarea-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textarea-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textarea-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textarea-line-height,initial);max-inline-size:var(--utrecht-textarea-max-inline-size,var(--utrecht-form-control-max-inline-size));min-block-size:var(--utrecht-textarea-min-block-size);padding-block-end:var(--utrecht-textarea-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textarea-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textarea-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textarea-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial));resize:vertical;resize:block}.utrecht-textarea--invalid{--_utrecht-textarea-border-width:var(\\n --utrecht-textarea-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textarea-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textarea-border-width);border-block-end-width:var(--utrecht-textarea-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textarea-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textarea-border-width)))));border-color:var(--utrecht-textarea-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea--disabled{background-color:var(--utrecht-textarea-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-textarea--focus{background-color:var(--utrecht-textarea-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-textarea--read-only{background-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textarea-border,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textarea-border,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea__placeholder{color:var(--utrecht-textarea-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-textarea--html-textarea:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textarea-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textarea-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-textarea--html-textarea:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-textarea--html-textarea:invalid,.utrecht-textarea--html-textarea[aria-invalid=true]{--_utrecht-textarea-border-width:var(\\n --utrecht-textarea-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textarea-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textarea-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textarea-border-width);border-block-end-width:var(--utrecht-textarea-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textarea-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textarea-border-width)))));border-color:var(--utrecht-textarea-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea--html-textarea:read-only{background-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textarea-border,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-read-only-border,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textarea-border,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textarea--html-textarea:disabled{background-color:var(--utrecht-textarea-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textarea-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textarea-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-textarea--html-textarea::placeholder{color:var(--utrecht-textarea-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}\";\nstyleInject(css_248z$3);\nvar _excluded$4 = [\"dir\", \"disabled\", \"invalid\", \"readOnly\", \"required\", \"className\"];\nfunction ownKeys$4(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$4(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Textarea = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var dir = _ref.dir,\n disabled = _ref.disabled,\n invalid = _ref.invalid,\n readOnly = _ref.readOnly,\n required = _ref.required,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$4);\n return jsx(\"textarea\", _objectSpread$4(_objectSpread$4({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-textarea', 'utrecht-textarea--html-textarea', disabled && 'utrecht-textarea--disabled', invalid && 'utrecht-textarea--invalid', readOnly && 'utrecht-textarea--readonly', required && 'utrecht-textarea--required', className),\n dir: dir !== null && dir !== void 0 ? dir : 'auto',\n disabled: disabled,\n readOnly: readOnly,\n required: required,\n \"aria-invalid\": invalid || undefined\n }));\n});\nTextarea.displayName = 'Textarea';\nvar css_248z$2 = \".utrecht-textbox{background-color:var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color));block-size:auto;border-width:var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width));border-block-end-width:var(--utrecht-textbox-border-bottom-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width)));border-color:var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color));border-radius:var(--utrecht-textbox-border-radius,var(--utrecht-form-control-border-radius,0));border-style:solid;box-sizing:border-box;color:var(--utrecht-textbox-color,var(--utrecht-form-control-color));font-family:var(--utrecht-textbox-font-family,var(--utrecht-form-control-font-family));font-size:var(--utrecht-textbox-font-size,var(--utrecht-form-control-font-size,inherit));font-weight:400;inline-size:100%;line-height:var(--utrecht-textbox-line-height,var(--utrecht-form-control-line-height,initial));max-inline-size:var(--utrecht-textbox-max-inline-size,var(--utrecht-form-control-max-inline-size));padding-block-end:var(--utrecht-textbox-padding-block-end,var(--utrecht-form-control-padding-block-end,0));padding-block-start:var(--utrecht-textbox-padding-block-start,var(--utrecht-form-control-padding-block-start,0));padding-inline-end:var(--utrecht-textbox-padding-inline-end,var(--utrecht-form-control-padding-inline-end,initial));padding-inline-start:var(--utrecht-textbox-padding-inline-start,var(--utrecht-form-control-padding-inline-start,initial))}.utrecht-textbox--invalid{--_utrecht-textbox-border-width:var(\\n --utrecht-textbox-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textbox-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textbox-border-width);border-block-end-width:var(--utrecht-textbox-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textbox-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textbox-border-width)))));border-color:var(--utrecht-textbox-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-textbox--disabled{background-color:var(--utrecht-textbox-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-textbox--focus{background-color:var(--utrecht-textbox-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))))}.utrecht-textbox--focus-visible{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);box-shadow:var(--_utrecht-focus-ring-box-shadow);outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-textbox--read-only{background-color:var(--utrecht-textbox-read-only-background-color,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-read-only-border-color,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-textbox__placeholder{color:var(--utrecht-textbox-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-textbox--numeric{-moz-appearance:textfield;font-variant-numeric:lining-nums tabular-nums}.utrecht-textbox--password{font-variant-ligatures:none;font-variant-numeric:slashed-zero}.utrecht-textbox--placeholder-ltr::placeholder,.utrecht-textbox--placeholder-ltr:placeholder-shown{direction:ltr}.utrecht-textbox--placeholder-rtl::placeholder,.utrecht-textbox--placeholder-rtl:placeholder-shown{direction:rtl}.utrecht-textbox--url{font-variant-ligatures:none}.utrecht-textbox--html-input:focus{--_utrecht-focus-ring-box-shadow:0 0 0 var(--utrecht-focus-outline-width,0) var(--utrecht-focus-inverse-outline-color,transparent);background-color:var(--utrecht-textbox-focus-background-color,var(--utrecht-form-control-focus-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-focus-border-color,var(--utrecht-form-control-focus-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));box-shadow:var(--_utrecht-focus-ring-box-shadow);color:var(--utrecht-textbox-focus-color,var(--utrecht-form-control-focus-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));outline-color:var(--utrecht-focus-outline-color,revert);outline-offset:var(--utrecht-focus-outline-offset,revert);outline-style:var(--utrecht-focus-outline-style,revert);outline-width:var(--utrecht-focus-outline-width,revert)}.utrecht-textbox--html-input:focus:not(:focus-visible){box-shadow:none;outline-style:revert}.utrecht-textbox--html-input:invalid,.utrecht-textbox--html-input[aria-invalid=true]{--_utrecht-textbox-border-width:var(\\n --utrecht-textbox-invalid-border-width,var(\\n --utrecht-form-control-invalid-border-width,var(--utrecht-textbox-border-width,var(--utrecht-form-control-border-width))\\n )\\n );background-color:var(--utrecht-textbox-invalid-background-color,var(--utrecht-form-control-invalid-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-width:var(--_utrecht-textbox-border-width);border-block-end-width:var(--utrecht-textbox-invalid-border-bottom-width,var(--utrecht-form-control-invalid-border-bottom-width,var(--utrecht-textbox-border-bottom-width,var(--utrecht-form-control-border-bottom-width,var(--_utrecht-textbox-border-width)))));border-color:var(--utrecht-textbox-invalid-border-color,var(--utrecht-form-control-invalid-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-invalid-color,var(--utrecht-form-control-invalid-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-textbox--html-input:read-only{background-color:var(--utrecht-textbox-read-only-background-color,var(--utrecht-form-control-read-only-background-color,var(--utrecht-textbox-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-read-only-border-color,var(--utrecht-form-control-read-only-border-color,var(--utrecht-textbox-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-read-only-color,var(--utrecht-form-control-read-only-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))))}.utrecht-textbox--html-input:disabled{background-color:var(--utrecht-textbox-disabled-background-color,var(--utrecht-form-control-disabled-background-color,var(--utrecht-textarea-background-color,var(--utrecht-form-control-background-color))));border-color:var(--utrecht-textbox-disabled-border-color,var(--utrecht-form-control-disabled-border-color,var(--utrecht-textarea-border-color,var(--utrecht-form-control-border-color))));color:var(--utrecht-textbox-disabled-color,var(--utrecht-form-control-disabled-color,var(--utrecht-textarea-color,var(--utrecht-form-control-color))));cursor:var(--utrecht-action-disabled-cursor,not-allowed)}.utrecht-textbox--html-input::placeholder{color:var(--utrecht-textbox-placeholder-color,var(--utrecht-form-control-placeholder-color,var(--utrecht-textbox-color,var(--utrecht-form-control-color))));font-style:var(--utrecht-form-control-placeholder-font-style);opacity:100%}.utrecht-textbox--html-input[type=password i]{font-variant-ligatures:none;font-variant-numeric:slashed-zero}.utrecht-textbox--html-input[inputMode=email i],.utrecht-textbox--html-input[inputMode=url i],.utrecht-textbox--html-input[type=email i],.utrecht-textbox--html-input[type=url i]{font-variant-ligatures:none}.utrecht-textbox--html-input[inputMode=decimal i],.utrecht-textbox--html-input[inputMode=numeric i],.utrecht-textbox--html-input[inputMode=tel i],.utrecht-textbox--html-input[pattern=\\\"[0-9]*\\\"],.utrecht-textbox--html-input[pattern=\\\"\\\\\\\\d*\\\"],.utrecht-textbox--html-input[type=number i],.utrecht-textbox--html-input[type=tel i]{-moz-appearance:textfield;font-variant-numeric:lining-nums tabular-nums}\";\nstyleInject(css_248z$2);\nvar _excluded$3 = [\"dir\", \"disabled\", \"invalid\", \"readOnly\", \"required\", \"className\", \"type\", \"maxLength\", \"inputMode\"];\nfunction ownKeys$3(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$3(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar Textbox = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var dir = _ref.dir,\n disabled = _ref.disabled,\n invalid = _ref.invalid,\n readOnly = _ref.readOnly,\n required = _ref.required,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'text' : _ref$type,\n maxLength = _ref.maxLength,\n inputMode = _ref.inputMode,\n restProps = _objectWithoutProperties(_ref, _excluded$3);\n return jsx(\"input\", _objectSpread$3(_objectSpread$3({}, restProps), {}, {\n ref: ref,\n type: type,\n className: clsx('utrecht-textbox', 'utrecht-textbox--html-input', disabled && 'utrecht-textbox--disabled', invalid && 'utrecht-textbox--invalid', readOnly && 'utrecht-textbox--readonly', required && 'utrecht-textbox--required', className),\n maxLength: maxLength,\n dir: dir !== null && dir !== void 0 ? dir : 'auto',\n disabled: disabled,\n readOnly: readOnly,\n required: required,\n \"aria-invalid\": invalid || undefined,\n inputMode: inputMode || (type === 'number' ? 'numeric' : undefined)\n }));\n});\nTextbox.displayName = 'Textbox';\nvar css_248z$1 = \".utrecht-url-data{break-inside:avoid;font-variant-ligatures:none;hyphens:none;page-break-inside:avoid}\";\nstyleInject(css_248z$1);\nvar _excluded$2 = [\"children\", \"className\"];\nfunction ownKeys$2(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar URLData = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$2);\n return jsx(\"bdi\", _objectSpread$2(_objectSpread$2({\n translate: \"no\"\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-url-data', className),\n children: children\n }));\n});\nURLData.displayName = 'URLData';\nvar css_248z = \"@charset \\\"UTF-8\\\";.utrecht-unordered-list,.utrecht-unordered-list--html-content ul{box-sizing:border-box;font-family:var(--utrecht-document-font-family,inherit);font-size:var(--utrecht-unordered-list-font-size,var(--utrecht-document-font-size,inherit));line-height:var(--utrecht-unordered-list-line-height,var(--utrecht-document-line-height,inherit));margin-block-end:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-end, var(--utrecht-paragraph-margin-block-end, 0)));margin-block-start:calc(var(--utrecht-space-around, 0)*var(--utrecht-unordered-list-margin-block-start, var(--utrecht-paragraph-margin-block-start, 0)));padding-inline-start:var(--utrecht-unordered-list-padding-inline-start,2ch);text-align:start}.utrecht-unordered-list--center{inline-size:max-content;margin-inline-end:auto;margin-inline-start:auto;max-inline-size:100%}.utrecht-unordered-list--distanced{--utrecht-space-around:1}.utrecht-unordered-list--html-content ul,.utrecht-unordered-list--nested{margin-block-end:0;margin-inline-start:2ch}.utrecht-unordered-list--html-content ul>li,.utrecht-unordered-list--html-content>li,.utrecht-unordered-list__item{margin-block-end:var(--utrecht-unordered-list-item-margin-block-end);margin-block-start:var(--utrecht-unordered-list-item-margin-block-start);padding-inline-start:var(--utrecht-unordered-list-item-padding-inline-start,1ch)}.utrecht-unordered-list--html-content ul>li::marker,.utrecht-unordered-list--html-content>li::marker,.utrecht-unordered-list__item::marker,.utrecht-unordered-list__marker{color:var(--utrecht-unordered-list-marker-color);content:\\\"ā—\\\"}\";\nstyleInject(css_248z);\nvar _excluded$1 = [\"children\", \"className\"];\nfunction ownKeys$1(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread$1(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar UnorderedList = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded$1);\n return jsx(\"ul\", _objectSpread$1(_objectSpread$1({\n role: \"list\"\n }, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-unordered-list', className),\n children: children\n }));\n});\nUnorderedList.displayName = 'UnorderedList';\nvar _excluded = [\"children\", \"className\"];\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nvar UnorderedListItem = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n className = _ref.className,\n restProps = _objectWithoutProperties(_ref, _excluded);\n return jsx(\"li\", _objectSpread(_objectSpread({}, restProps), {}, {\n ref: ref,\n className: clsx('utrecht-unordered-list__item', className),\n children: children\n }));\n});\nUnorderedListItem.displayName = 'UnorderedListItem';\nexport { Accordion, AccordionProvider, AccordionSection, Alert, AlertDialog, Article, Backdrop, BadgeCounter, BadgeList, BreadcrumbNav, BreadcrumbNavLink, BreadcrumbNavSeparator, Button, ButtonGroup, ButtonLink, Checkbox, Code, CodeBlock, ColorSample, ColumnLayout, CurrencyData, DataBadge, DataList, DataListActions, DataListItem, DataListKey, DataListValue, DataPlaceholder, Document, Emphasis, Fieldset, FieldsetLegend, Figure, FigureCaption, FormField, FormFieldDescription, FormLabel, FormToggle, HTMLContent, Heading, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, HeadingGroup, IBANData, Icon, Image, IndexCharNav, Link, LinkButton, LinkSocial, ListSocial, ListSocialItem, Logo, LogoImage, Mark, MultilineData, NumberData, OrderedList, OrderedListItem, Page, PageContent, PageFooter, PageHeader, Paragraph, PreHeading, PreserveData, PrimaryActionButton, RadioButton, SecondaryActionButton, Select, SelectOption, Separator, SkipLink, SpotlightSection, StatusBadge, Strong, SubtleButton, Surface, Table, TableBody, TableCaption, TableCell, TableFooter, TableHeader, TableHeaderCell, TableRow, Textarea, Textbox, URLData, UnorderedList, UnorderedListItem };"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","_excluded$1e","ownKeys$1f","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread$1f","arguments","length","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","Button","forwardRef","_ref","appearance","busy","disabled","children","className","hint","pressed","restProps","jsx","undefined","displayName","_excluded$1d","ownKeys$1e","_objectSpread$1e","Heading","level","appearances","HeadingX","headingClassName","indexOf","_excluded$1c","ownKeys$1d","_objectSpread$1d","AccordionSection","id","label","_ref$headingLevel","headingLevel","_ref$expanded","expanded","section","buttonRef","onActivate","onButtonBlur","onButtonFocus","panelAttributes","hidden","idPrefix","idSuffix","useId","buttonId","concat","panelId","jsxs","onClick","onFocus","onBlur","Accordion","_ref2","group","heading","props","headingId","Fragment","role","_ref4","sections","useRef","_useAccordion","console","log","refs","map","_","buttonRefs","activeElement","focusNextSection","_nextSection$current","items","item","currentIndex","index","nextSection","current","focus","focusFirstSection","_firstSection$current","firstSection","focusPreviousSection","_previousSection$curr","previousSection","focusLastSection","_firstSection$current2","useAccordion","_useState","useState","_useState2","setActiveElement","_useState3","_useState4","sectionsState","setSectionsState","handleButtonFocus","handleButtonBlur","onKeyDown","evt","code","preventDefault","key","activatedIndex","body","_excluded$1b","ownKeys$1c","_objectSpread$1c","Alert","icon","_excluded$1a","ownKeys$1b","_objectSpread$1b","_excluded$19","ownKeys$1a","_objectSpread$1a","_excluded$18","ownKeys$19","_objectSpread$19","_excluded$17","ownKeys$18","_objectSpread$18","value","_excluded$16","ownKeys$17","_objectSpread$17","_excluded$15","ownKeys$16","_objectSpread$16","Link","boxContent","external","href","placeholder","rel","_excluded$14","_excluded2$4","_excluded3$1","_excluded4$1","ownKeys$15","_objectSpread$15","useMicrodataItem","prop","itemScope","itemType","itemProp","useMicrodataProp","_ref2$headingLevel","BreadcrumbNavItem","_ref3","display","_ref5","_ref5$Link","Link$1","LinkComponent","content","String","_excluded$13","ownKeys$14","_objectSpread$14","_excluded$12","ownKeys$13","_objectSpread$13","_evt$target","target","click","ButtonLink","_excluded$11","ownKeys$12","_objectSpread$12","_ref$appearance","invalid","required","_excluded$10","ownKeys$11","_objectSpread$11","Code","_excluded$$","ownKeys$10","_objectSpread$10","CodeBlock","_excluded$_","ownKeys$$","_objectSpread$$","color","rule","_excluded$Z","ownKeys$_","_objectSpread$_","_ref$currency","currency","amount","_ref$locale","locale","number","parseFloat","labelFormatted","Intl","NumberFormat","minimumFractionDigits","Number","isInteger","useGrouping","format","replace","formatLabel","visuallyFormatted","formatted","test","formatVisually","_excluded$Y","ownKeys$Z","_objectSpread$Z","dateTime","_excluded$X","ownKeys$Y","_objectSpread$Y","Document","_excluded$W","_excluded2$3","_excluded3","_excluded4","ownKeys$X","_objectSpread$X","emptyDescription","multiline","notranslate","empty","translate","_excluded$V","ownKeys$W","_objectSpread$W","_excluded$U","_excluded2$2","ownKeys$V","_objectSpread$V","ariaDescribedby","ariaLabel","ariaLabelledby","form","name","_excluded$T","ownKeys$U","_objectSpread$U","_excluded$S","ownKeys$T","_objectSpread$T","_excluded$R","ownKeys$S","_objectSpread$S","_excluded$Q","ownKeys$R","_objectSpread$R","_excluded$P","ownKeys$Q","_objectSpread$Q","valid","warning","_excluded$O","ownKeys$P","_objectSpread$P","checked","_excluded$N","ownKeys$O","_objectSpread$O","tabIndex","defaultChecked","htmlFor","_excluded$M","ownKeys$N","_objectSpread$N","_excluded$L","ownKeys$M","_objectSpread$M","Heading1","_excluded$K","ownKeys$L","_objectSpread$L","Heading2","_excluded$J","ownKeys$K","_objectSpread$K","Heading3","_excluded$I","ownKeys$J","_objectSpread$J","Heading4","_excluded$H","ownKeys$I","_objectSpread$I","_excluded$G","ownKeys$H","_objectSpread$H","_excluded$F","ownKeys$G","_objectSpread$G","_excluded$E","ownKeys$F","_objectSpread$F","normalized","toUpperCase","_excluded$D","ownKeys$E","_objectSpread$E","_excluded$C","ownKeys$D","_objectSpread$D","IndexCharNav","component","currentChar","characters","onLinkClick","links","_char","_char2","customLinkComponentStyle","_excluded$B","ownKeys$C","_objectSpread$C","Image","photo","_excluded$A","ownKeys$B","_objectSpread$B","inline","_excluded$z","ownKeys$A","_objectSpread$A","_excluded$y","ownKeys$z","_objectSpread$z","ownKeys$y","_objectSpread$y","width","height","viewBox","fill","xmlns","clipPath","d","_excluded$x","ownKeys$x","_objectSpread$x","_excluded$w","ownKeys$w","_objectSpread$w","_excluded$v","ownKeys$v","_objectSpread$v","_excluded$u","ownKeys$u","_objectSpread$u","OrderedList","_excluded$t","ownKeys$t","_objectSpread$t","OrderedListItem","_excluded$s","ownKeys$s","_objectSpread$s","Page","_excluded$r","_excluded2$1","ownKeys$r","_objectSpread$r","PageContent","_excluded$q","ownKeys$q","_objectSpread$q","PageFooter","_excluded$p","ownKeys$p","_objectSpread$p","PageHeader","_excluded$o","ownKeys$o","_objectSpread$o","Paragraph","lead","small","_excluded$n","ownKeys$n","DataPlaceholder","loading","_objectSpread$n","_excluded$m","ownKeys$m","_objectSpread$m","_excluded$l","ownKeys$l","_objectSpread$l","_excluded$k","ownKeys$k","RadioButton","_objectSpread$k","_excluded$j","_excluded2","ownKeys$j","_objectSpread$j","noscript","_excluded$i","ownKeys$i","_objectSpread$i","_excluded$h","ownKeys$h","_objectSpread$h","_excluded$g","ownKeys$g","_objectSpread$g","aside","_excluded$f","ownKeys$f","_objectSpread$f","status","_excluded$e","ownKeys$e","_objectSpread$e","_excluded$d","ownKeys$d","_objectSpread$d","_excluded$c","ownKeys$c","_objectSpread$c","Table","_excluded$b","ownKeys$b","_objectSpread$b","TableBody","_excluded$a","ownKeys$a","_objectSpread$a","_excluded$9","ownKeys$9","_objectSpread$9","TableCell","numericColumn","selected","_excluded$8","ownKeys$8","_objectSpread$8","sticky","_excluded$7","ownKeys$7","_objectSpread$7","TableHeader","_excluded$6","ownKeys$6","_objectSpread$6","TableHeaderCell","scope","_excluded$5","ownKeys$5","_objectSpread$5","TableRow","_excluded$4","ownKeys$4","_objectSpread$4","dir","readOnly","_excluded$3","ownKeys$3","_objectSpread$3","_ref$type","maxLength","inputMode","_excluded$2","ownKeys$2","_objectSpread$2","_excluded$1","ownKeys$1","_objectSpread$1","UnorderedList","_excluded","ownKeys","_objectSpread","UnorderedListItem"],"sourceRoot":""} \ No newline at end of file diff --git a/app-6639f1b7135524d62c20.js b/app-6639f1b7135524d62c20.js deleted file mode 100644 index b6554e12..00000000 --- a/app-6639f1b7135524d62c20.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkproduct_website_template=self.webpackChunkproduct_website_template||[]).push([[143],{7544:function(t,e,n){"use strict";function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function o(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n0;)e+=ht[62*Math.random()|0];return e}function gt(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function vt(t){return t.classList?gt(t.classList):(t.getAttribute("class")||"").split(" ").filter((function(t){return t}))}function yt(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function bt(t){return Object.keys(t||{}).reduce((function(e,n){return e+"".concat(n,": ").concat(t[n].trim(),";")}),"")}function wt(t){return t.size!==dt.size||t.x!==dt.x||t.y!==dt.y||t.rotate!==dt.rotate||t.flipX||t.flipY}var xt=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\n transform: scale(var(--fa-counter-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n -webkit-animation-name: fa-beat;\n animation-name: fa-beat;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n -webkit-animation-name: fa-bounce;\n animation-name: fa-bounce;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n -webkit-animation-name: fa-fade;\n animation-name: fa-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n -webkit-animation-name: fa-beat-fade;\n animation-name: fa-beat-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n -webkit-animation-name: fa-flip;\n animation-name: fa-flip;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n -webkit-animation-name: fa-shake;\n animation-name: fa-shake;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\n animation-duration: var(--fa-animation-duration, 2s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n -webkit-animation-delay: -1ms;\n animation-delay: -1ms;\n -webkit-animation-duration: 1ms;\n animation-duration: 1ms;\n -webkit-animation-iteration-count: 1;\n animation-iteration-count: 1;\n -webkit-transition-delay: 0s;\n transition-delay: 0s;\n -webkit-transition-duration: 0s;\n transition-duration: 0s;\n }\n}\n@-webkit-keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@-webkit-keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@-webkit-keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@-webkit-keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@-webkit-keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@-webkit-keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\n transform: rotate(var(--fa-rotate-angle, none));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse,\n.fa-duotone.fa-inverse {\n color: var(--fa-inverse, #fff);\n}';function Ot(){var t=N,e=T,n=lt.cssPrefix,r=lt.replacementClass,o=xt;if(n!==t||r!==e){var i=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");o=o.replace(i,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(s,".".concat(r))}return o}var kt=!1;function St(){lt.autoAddCss&&!kt&&(!function(t){if(t&&E){var e=P.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=P.head.childNodes,r=null,o=n.length-1;o>-1;o--){var i=n[o],a=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=i)}P.head.insertBefore(e,r)}}(Ot()),kt=!0)}var Pt={mixout:function(){return{dom:{css:Ot,insertCss:St}}},hooks:function(){return{beforeDOMElementCreation:function(){St()},beforeI2svg:function(){St()}}}},Ct=S||{};Ct[A]||(Ct[A]={}),Ct[A].styles||(Ct[A].styles={}),Ct[A].hooks||(Ct[A].hooks={}),Ct[A].shims||(Ct[A].shims=[]);var jt=Ct[A],Et=[],Rt=!1;function At(t){var e=t.tag,n=t.attributes,r=void 0===n?{}:n,o=t.children,i=void 0===o?[]:o;return"string"==typeof t?yt(t):"<".concat(e," ").concat(function(t){return Object.keys(t||{}).reduce((function(e,n){return e+"".concat(n,'="').concat(yt(t[n]),'" ')}),"").trim()}(r),">").concat(i.map(At).join(""),"")}function Lt(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}E&&((Rt=(P.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(P.readyState))||P.addEventListener("DOMContentLoaded",(function t(){P.removeEventListener("DOMContentLoaded",t),Rt=1,Et.map((function(t){return t()}))})));var Nt=function(t,e,n,r){var o,i,a,s=Object.keys(t),u=s.length,c=void 0!==r?function(t,e){return function(n,r,o,i){return t.call(e,n,r,o,i)}}(e,r):e;for(void 0===n?(o=1,a=t[s[0]]):(o=0,a=n);o=55296&&o<=56319&&n2&&void 0!==arguments[2]?arguments[2]:{}).skipHooks,r=void 0!==n&&n,i=Mt(e);"function"!=typeof jt.hooks.addPack||r?jt.styles[t]=o(o({},jt.styles[t]||{}),i):jt.hooks.addPack(t,Mt(e)),"fas"===t&&Dt("fa",e)}var It,Ft,_t,Ut=jt.styles,qt=jt.shims,Ht=(s(It={},Q,Object.values(Y[Q])),s(It,z,Object.values(Y[z])),It),Zt=null,Qt={},zt={},Bt={},Vt={},Wt={},Kt=(s(Ft={},Q,Object.keys(W[Q])),s(Ft,z,Object.keys(W[z])),Ft);function Yt(t,e){var n,r=e.split("-"),o=r[0],i=r.slice(1).join("-");return o!==t||""===i||(n=i,~at.indexOf(n))?null:i}var Jt,Gt=function(){var t=function(t){return Nt(Ut,(function(e,n,r){return e[r]=Nt(n,t,{}),e}),{})};Qt=t((function(t,e,n){(e[3]&&(t[e[3]]=n),e[2])&&e[2].filter((function(t){return"number"==typeof t})).forEach((function(e){t[e.toString(16)]=n}));return t})),zt=t((function(t,e,n){(t[n]=n,e[2])&&e[2].filter((function(t){return"string"==typeof t})).forEach((function(e){t[e]=n}));return t})),Wt=t((function(t,e,n){var r=e[2];return t[n]=n,r.forEach((function(e){t[e]=n})),t}));var e="far"in Ut||lt.autoFetchSvg,n=Nt(qt,(function(t,n){var r=n[0],o=n[1],i=n[2];return"far"!==o||e||(o="fas"),"string"==typeof r&&(t.names[r]={prefix:o,iconName:i}),"number"==typeof r&&(t.unicodes[r.toString(16)]={prefix:o,iconName:i}),t}),{names:{},unicodes:{}});Bt=n.names,Vt=n.unicodes,Zt=re(lt.styleDefault,{family:lt.familyDefault})};function $t(t,e){return(Qt[t]||{})[e]}function Xt(t,e){return(Wt[t]||{})[e]}function te(t){return Bt[t]||{prefix:null,iconName:null}}function ee(){return Zt}Jt=function(t){Zt=re(t.styleDefault,{family:lt.familyDefault})},ft.push(Jt),Gt();var ne=function(){return{prefix:null,iconName:null,rest:[]}};function re(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).family,n=void 0===e?Q:e,r=W[n][t],o=K[n][t]||K[n][r],i=t in jt.styles?t:null;return o||i||null}var oe=(s(_t={},Q,Object.keys(Y[Q])),s(_t,z,Object.keys(Y[z])),_t);function ie(t){var e,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).skipLookups,r=void 0!==n&&n,o=(s(e={},Q,"".concat(lt.cssPrefix,"-").concat(Q)),s(e,z,"".concat(lt.cssPrefix,"-").concat(z)),e),i=null,a=Q;(t.includes(o[Q])||t.some((function(t){return oe[Q].includes(t)})))&&(a=Q),(t.includes(o[z])||t.some((function(t){return oe[z].includes(t)})))&&(a=z);var u=t.reduce((function(t,e){var n=Yt(lt.cssPrefix,e);if(Ut[e]?(e=Ht[a].includes(e)?J[a][e]:e,i=e,t.prefix=e):Kt[a].indexOf(e)>-1?(i=e,t.prefix=re(e,{family:a})):n?t.iconName=n:e!==lt.replacementClass&&e!==o[Q]&&e!==o[z]&&t.rest.push(e),!r&&t.prefix&&t.iconName){var s="fa"===i?te(t.iconName):{},u=Xt(t.prefix,t.iconName);s.prefix&&(i=null),t.iconName=s.iconName||u||t.iconName,t.prefix=s.prefix||t.prefix,"far"!==t.prefix||Ut.far||!Ut.fas||lt.autoFetchSvg||(t.prefix="fas")}return t}),ne());return(t.includes("fa-brands")||t.includes("fab"))&&(u.prefix="fab"),(t.includes("fa-duotone")||t.includes("fad"))&&(u.prefix="fad"),u.prefix||a!==z||!Ut.fass&&!lt.autoFetchSvg||(u.prefix="fass",u.iconName=Xt(u.prefix,u.iconName)||u.iconName),"fa"!==u.prefix&&"fa"!==i||(u.prefix=ee()||"fas"),u}var ae=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}var e,n,r;return e=t,n=[{key:"add",value:function(){for(var t=this,e=arguments.length,n=new Array(e),r=0;r0&&s.forEach((function(e){"string"==typeof e&&(t[o][e]=a)})),t[o][i]=a})),t}}],n&&a(e.prototype,n),r&&a(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}(),se=[],ue={},ce={},le=Object.keys(ce);function fe(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1?e-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:{};return E?(pe("beforeI2svg",t),de("pseudoElements2svg",t),de("i2svg",t)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.autoReplaceSvgRoot;!1===lt.autoReplaceSvg&&(lt.autoReplaceSvg=!0),lt.observeMutations=!0,t=function(){ye({autoReplaceSvgRoot:n}),pe("watch",e)},E&&(Rt?setTimeout(t,0):Et.push(t))}},ve={noAuto:function(){lt.autoReplaceSvg=!1,lt.observeMutations=!1,pe("noAuto")},config:lt,dom:ge,parse:{icon:function(t){if(null===t)return null;if("object"===i(t)&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:Xt(t.prefix,t.iconName)||t.iconName};if(Array.isArray(t)&&2===t.length){var e=0===t[1].indexOf("fa-")?t[1].slice(3):t[1],n=re(t[0]);return{prefix:n,iconName:Xt(n,e)||e}}if("string"==typeof t&&(t.indexOf("".concat(lt.cssPrefix,"-"))>-1||t.match(G))){var r=ie(t.split(" "),{skipLookups:!0});return{prefix:r.prefix||ee(),iconName:Xt(r.prefix,r.iconName)||r.iconName}}if("string"==typeof t){var o=ee();return{prefix:o,iconName:Xt(o,t)||t}}}},library:me,findIconDefinition:he,toHtml:At},ye=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).autoReplaceSvgRoot,e=void 0===t?P:t;(Object.keys(jt.styles).length>0||lt.autoFetchSvg)&&E&<.autoReplaceSvg&&ve.dom.i2svg({node:e})};function be(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map((function(t){return At(t)}))}}),Object.defineProperty(t,"node",{get:function(){if(E){var e=P.createElement("div");return e.innerHTML=t.html,e.children}}}),t}function we(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,a=t.iconName,s=t.transform,u=t.symbol,c=t.title,l=t.maskId,f=t.titleId,p=t.extra,d=t.watchable,h=void 0!==d&&d,m=r.found?r:n,g=m.width,v=m.height,y="fak"===i,b=[lt.replacementClass,a?"".concat(lt.cssPrefix,"-").concat(a):""].filter((function(t){return-1===p.classes.indexOf(t)})).filter((function(t){return""!==t||!!t})).concat(p.classes).join(" "),w={children:[],attributes:o(o({},p.attributes),{},{"data-prefix":i,"data-icon":a,class:b,role:p.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(v)})},x=y&&!~p.classes.indexOf("fa-fw")?{width:"".concat(g/v*16*.0625,"em")}:{};h&&(w.attributes[M]=""),c&&(w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(f||mt())},children:[c]}),delete w.attributes.title);var O=o(o({},w),{},{prefix:i,iconName:a,main:n,mask:r,maskId:l,transform:s,symbol:u,styles:o(o({},x),p.styles)}),k=r.found&&n.found?de("generateAbstractMask",O)||{children:[],attributes:{}}:de("generateAbstractIcon",O)||{children:[],attributes:{}},S=k.children,P=k.attributes;return O.children=S,O.attributes=P,u?function(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,a=t.symbol,s=!0===a?"".concat(e,"-").concat(lt.cssPrefix,"-").concat(n):a;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:o(o({},i),{},{id:s}),children:r}]}]}(O):function(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,a=t.styles,s=t.transform;if(wt(s)&&n.found&&!r.found){var u={x:n.width/n.height/2,y:.5};i.style=bt(o(o({},a),{},{"transform-origin":"".concat(u.x+s.x/16,"em ").concat(u.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}(O)}function xe(t){var e=t.content,n=t.width,r=t.height,i=t.transform,a=t.title,s=t.extra,u=t.watchable,c=void 0!==u&&u,l=o(o(o({},s.attributes),a?{title:a}:{}),{},{class:s.classes.join(" ")});c&&(l[M]="");var f=o({},s.styles);wt(i)&&(f.transform=function(t){var e=t.transform,n=t.width,r=void 0===n?L:n,o=t.height,i=void 0===o?L:o,a=t.startCentered,s=void 0!==a&&a,u="";return u+=s&&R?"translate(".concat(e.x/pt-r/2,"em, ").concat(e.y/pt-i/2,"em) "):s?"translate(calc(-50% + ".concat(e.x/pt,"em), calc(-50% + ").concat(e.y/pt,"em)) "):"translate(".concat(e.x/pt,"em, ").concat(e.y/pt,"em) "),u+="scale(".concat(e.size/pt*(e.flipX?-1:1),", ").concat(e.size/pt*(e.flipY?-1:1),") "),u+"rotate(".concat(e.rotate,"deg) ")}({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var p=bt(f);p.length>0&&(l.style=p);var d=[];return d.push({tag:"span",attributes:l,children:[e]}),a&&d.push({tag:"span",attributes:{class:"sr-only"},children:[a]}),d}var Oe=jt.styles;function ke(t){var e=t[0],n=t[1],r=u(t.slice(4),1)[0];return{found:!0,width:e,height:n,icon:Array.isArray(r)?{tag:"g",attributes:{class:"".concat(lt.cssPrefix,"-").concat(ot.GROUP)},children:[{tag:"path",attributes:{class:"".concat(lt.cssPrefix,"-").concat(ot.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(lt.cssPrefix,"-").concat(ot.PRIMARY),fill:"currentColor",d:r[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:r}}}}var Se={found:!1,width:512,height:512};function Pe(t,e){var n=e;return"fa"===e&&null!==lt.styleDefault&&(e=ee()),new Promise((function(r,i){de("missingIconAbstract");if("fa"===n){var a=te(t)||{};t=a.iconName||t,e=a.prefix||e}if(t&&e&&Oe[e]&&Oe[e][t])return r(ke(Oe[e][t]));!function(t,e){Z||lt.showMissingIcons||!t||console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}(t,e),r(o(o({},Se),{},{icon:lt.showMissingIcons&&t&&de("missingIconAbstract")||{}}))}))}var Ce=function(){},je=lt.measurePerformance&&j&&j.mark&&j.measure?j:{mark:Ce,measure:Ce},Ee='FA "6.4.2"',Re=function(t){je.mark("".concat(Ee," ").concat(t," ends")),je.measure("".concat(Ee," ").concat(t),"".concat(Ee," ").concat(t," begins"),"".concat(Ee," ").concat(t," ends"))},Ae={begin:function(t){return je.mark("".concat(Ee," ").concat(t," begins")),function(){return Re(t)}},end:Re},Le=function(){};function Ne(t){return"string"==typeof(t.getAttribute?t.getAttribute(M):null)}function Te(t){return P.createElementNS("http://www.w3.org/2000/svg",t)}function Me(t){return P.createElement(t)}function De(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).ceFn,n=void 0===e?"svg"===t.tag?Te:Me:e;if("string"==typeof t)return P.createTextNode(t);var r=n(t.tag);return Object.keys(t.attributes||[]).forEach((function(e){r.setAttribute(e,t.attributes[e])})),(t.children||[]).forEach((function(t){r.appendChild(De(t,{ceFn:n}))})),r}var Ie={replace:function(t){var e=t[0];if(e.parentNode)if(t[1].forEach((function(t){e.parentNode.insertBefore(De(t),e)})),null===e.getAttribute(M)&<.keepOriginalSource){var n=P.createComment(function(t){var e=" ".concat(t.outerHTML," ");return"".concat(e,"Font Awesome fontawesome.com ")}(e));e.parentNode.replaceChild(n,e)}else e.remove()},nest:function(t){var e=t[0],n=t[1];if(~vt(e).indexOf(lt.replacementClass))return Ie.replace(t);var r=new RegExp("".concat(lt.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){var o=n[0].attributes.class.split(" ").reduce((function(t,e){return e===lt.replacementClass||e.match(r)?t.toSvg.push(e):t.toNode.push(e),t}),{toNode:[],toSvg:[]});n[0].attributes.class=o.toSvg.join(" "),0===o.toNode.length?e.removeAttribute("class"):e.setAttribute("class",o.toNode.join(" "))}var i=n.map((function(t){return At(t)})).join("\n");e.setAttribute(M,""),e.innerHTML=i}};function Fe(t){t()}function _e(t,e){var n="function"==typeof e?e:Le;if(0===t.length)n();else{var r=Fe;lt.mutateApproach===q&&(r=S.requestAnimationFrame||Fe),r((function(){var e=!0===lt.autoReplaceSvg?Ie.replace:Ie[lt.autoReplaceSvg]||Ie.replace,r=Ae.begin("mutate");t.map(e),r(),n()}))}}var Ue=!1;function qe(){Ue=!0}function He(){Ue=!1}var Ze=null;function Qe(t){if(C&<.observeMutations){var e=t.treeCallback,n=void 0===e?Le:e,r=t.nodeCallback,o=void 0===r?Le:r,i=t.pseudoElementsCallback,a=void 0===i?Le:i,s=t.observeMutationsRoot,u=void 0===s?P:s;Ze=new C((function(t){if(!Ue){var e=ee();gt(t).forEach((function(t){if("childList"===t.type&&t.addedNodes.length>0&&!Ne(t.addedNodes[0])&&(lt.searchPseudoElements&&a(t.target),n(t.target)),"attributes"===t.type&&t.target.parentNode&<.searchPseudoElements&&a(t.target.parentNode),"attributes"===t.type&&Ne(t.target)&&~rt.indexOf(t.attributeName))if("class"===t.attributeName&&function(t){var e=t.getAttribute?t.getAttribute(F):null,n=t.getAttribute?t.getAttribute(_):null;return e&&n}(t.target)){var r=ie(vt(t.target)),i=r.prefix,s=r.iconName;t.target.setAttribute(F,i||e),s&&t.target.setAttribute(_,s)}else(u=t.target)&&u.classList&&u.classList.contains&&u.classList.contains(lt.replacementClass)&&o(t.target);var u}))}})),E&&Ze.observe(u,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function ze(t){var e,n,r=t.getAttribute("data-prefix"),o=t.getAttribute("data-icon"),i=void 0!==t.innerText?t.innerText.trim():"",a=ie(vt(t));return a.prefix||(a.prefix=ee()),r&&o&&(a.prefix=r,a.iconName=o),a.iconName&&a.prefix||(a.prefix&&i.length>0&&(a.iconName=(e=a.prefix,n=t.innerText,(zt[e]||{})[n]||$t(a.prefix,Tt(t.innerText)))),!a.iconName&<.autoFetchSvg&&t.firstChild&&t.firstChild.nodeType===Node.TEXT_NODE&&(a.iconName=t.firstChild.data)),a}function Be(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},n=ze(t),r=n.iconName,i=n.prefix,a=n.rest,s=function(t){var e=gt(t.attributes).reduce((function(t,e){return"class"!==t.name&&"style"!==t.name&&(t[e.name]=e.value),t}),{}),n=t.getAttribute("title"),r=t.getAttribute("data-fa-title-id");return lt.autoA11y&&(n?e["aria-labelledby"]="".concat(lt.replacementClass,"-title-").concat(r||mt()):(e["aria-hidden"]="true",e.focusable="false")),e}(t),u=fe("parseNodeAttributes",{},t),c=e.styleParser?function(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce((function(t,e){var n=e.split(":"),r=n[0],o=n.slice(1);return r&&o.length>0&&(t[r]=o.join(":").trim()),t}),{})),n}(t):[];return o({iconName:r,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:i,transform:dt,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:a,styles:c,attributes:s}},u)}var Ve=jt.styles;function We(t){var e="nest"===lt.autoReplaceSvg?Be(t,{styleParser:!1}):Be(t);return~e.extra.classes.indexOf($)?de("generateLayersText",t,e):de("generateSvgReplacementMutation",t,e)}var Ke=new Set;function Ye(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!E)return Promise.resolve();var n=P.documentElement.classList,r=function(t){return n.add("".concat(U,"-").concat(t))},o=function(t){return n.remove("".concat(U,"-").concat(t))},i=lt.autoFetchSvg?Ke:B.map((function(t){return"fa-".concat(t)})).concat(Object.keys(Ve));i.includes("fa")||i.push("fa");var a=[".".concat($,":not([").concat(M,"])")].concat(i.map((function(t){return".".concat(t,":not([").concat(M,"])")}))).join(", ");if(0===a.length)return Promise.resolve();var s=[];try{s=gt(t.querySelectorAll(a))}catch(In){}if(!(s.length>0))return Promise.resolve();r("pending"),o("complete");var u=Ae.begin("onTree"),c=s.reduce((function(t,e){try{var n=We(e);n&&t.push(n)}catch(In){Z||"MissingIcon"===In.name&&console.error(In)}return t}),[]);return new Promise((function(t,n){Promise.all(c).then((function(n){_e(n,(function(){r("active"),r("complete"),o("pending"),"function"==typeof e&&e(),u(),t()}))})).catch((function(t){u(),n(t)}))}))}function Je(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;We(t).then((function(t){t&&_e([t],e)}))}B.map((function(t){Ke.add("fa-".concat(t))})),Object.keys(W[Q]).map(Ke.add.bind(Ke)),Object.keys(W[z]).map(Ke.add.bind(Ke)),Ke=c(Ke);var Ge=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,r=void 0===n?dt:n,i=e.symbol,a=void 0!==i&&i,s=e.mask,u=void 0===s?null:s,c=e.maskId,l=void 0===c?null:c,f=e.title,p=void 0===f?null:f,d=e.titleId,h=void 0===d?null:d,m=e.classes,g=void 0===m?[]:m,v=e.attributes,y=void 0===v?{}:v,b=e.styles,w=void 0===b?{}:b;if(t){var x=t.prefix,O=t.iconName,k=t.icon;return be(o({type:"icon"},t),(function(){return pe("beforeDOMElementCreation",{iconDefinition:t,params:e}),lt.autoA11y&&(p?y["aria-labelledby"]="".concat(lt.replacementClass,"-title-").concat(h||mt()):(y["aria-hidden"]="true",y.focusable="false")),we({icons:{main:ke(k),mask:u?ke(u.icon):{found:!1,width:null,height:null,icon:{}}},prefix:x,iconName:O,transform:o(o({},dt),r),symbol:a,title:p,maskId:l,titleId:h,extra:{attributes:y,styles:w,classes:g}})}))}},$e={mixout:function(){return{icon:(t=Ge,function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(e||{}).icon?e:he(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:he(i||{})),t(r,o(o({},n),{},{mask:i}))})};var t},hooks:function(){return{mutationObserverCallbacks:function(t){return t.treeCallback=Ye,t.nodeCallback=Je,t}}},provides:function(t){t.i2svg=function(t){var e=t.node,n=void 0===e?P:e,r=t.callback;return Ye(n,void 0===r?function(){}:r)},t.generateSvgReplacementMutation=function(t,e){var n=e.iconName,r=e.title,o=e.titleId,i=e.prefix,a=e.transform,s=e.symbol,c=e.mask,l=e.maskId,f=e.extra;return new Promise((function(e,p){Promise.all([Pe(n,i),c.iconName?Pe(c.iconName,c.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(c){var p=u(c,2),d=p[0],h=p[1];e([t,we({icons:{main:d,mask:h},prefix:i,iconName:n,transform:a,symbol:s,maskId:l,title:r,titleId:o,extra:f,watchable:!0})])})).catch(p)}))},t.generateAbstractIcon=function(t){var e,n=t.children,r=t.attributes,o=t.main,i=t.transform,a=bt(t.styles);return a.length>0&&(r.style=a),wt(i)&&(e=de("generateAbstractTransformGrouping",{main:o,transform:i,containerWidth:o.width,iconWidth:o.width})),n.push(e||o.icon),{children:n,attributes:r}}}},Xe={mixout:function(){return{layer:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.classes,r=void 0===n?[]:n;return be({type:"layer"},(function(){pe("beforeDOMElementCreation",{assembler:t,params:e});var n=[];return t((function(t){Array.isArray(t)?t.map((function(t){n=n.concat(t.abstract)})):n=n.concat(t.abstract)})),[{tag:"span",attributes:{class:["".concat(lt.cssPrefix,"-layers")].concat(c(r)).join(" ")},children:n}]}))}}}},tn={mixout:function(){return{counter:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.title,r=void 0===n?null:n,i=e.classes,a=void 0===i?[]:i,s=e.attributes,u=void 0===s?{}:s,l=e.styles,f=void 0===l?{}:l;return be({type:"counter",content:t},(function(){return pe("beforeDOMElementCreation",{content:t,params:e}),function(t){var e=t.content,n=t.title,r=t.extra,i=o(o(o({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),a=bt(r.styles);a.length>0&&(i.style=a);var s=[];return s.push({tag:"span",attributes:i,children:[e]}),n&&s.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),s}({content:t.toString(),title:r,extra:{attributes:u,styles:f,classes:["".concat(lt.cssPrefix,"-layers-counter")].concat(c(a))}})}))}}}},en={mixout:function(){return{text:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,r=void 0===n?dt:n,i=e.title,a=void 0===i?null:i,s=e.classes,u=void 0===s?[]:s,l=e.attributes,f=void 0===l?{}:l,p=e.styles,d=void 0===p?{}:p;return be({type:"text",content:t},(function(){return pe("beforeDOMElementCreation",{content:t,params:e}),xe({content:t,transform:o(o({},dt),r),title:a,extra:{attributes:f,styles:d,classes:["".concat(lt.cssPrefix,"-layers-text")].concat(c(u))}})}))}}},provides:function(t){t.generateLayersText=function(t,e){var n=e.title,r=e.transform,o=e.extra,i=null,a=null;if(R){var s=parseInt(getComputedStyle(t).fontSize,10),u=t.getBoundingClientRect();i=u.width/s,a=u.height/s}return lt.autoA11y&&!n&&(o.attributes["aria-hidden"]="true"),Promise.resolve([t,xe({content:t.innerHTML,width:i,height:a,transform:r,title:n,extra:o,watchable:!0})])}}},nn=new RegExp('"',"ug"),rn=[1105920,1112319];function on(t,e){var n="".concat(I).concat(e.replace(":","-"));return new Promise((function(r,i){if(null!==t.getAttribute(n))return r();var a,s,u,c=gt(t.children).filter((function(t){return t.getAttribute(D)===e}))[0],l=S.getComputedStyle(t,e),f=l.getPropertyValue("font-family").match(X),p=l.getPropertyValue("font-weight"),d=l.getPropertyValue("content");if(c&&!f)return t.removeChild(c),r();if(f&&"none"!==d&&""!==d){var h=l.getPropertyValue("content"),m=~["Sharp"].indexOf(f[2])?z:Q,g=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(f[2])?K[m][f[2].toLowerCase()]:tt[m][p],v=function(t){var e,n,r,o,i,a=t.replace(nn,""),s=(n=0,o=(e=a).length,(i=e.charCodeAt(n))>=55296&&i<=56319&&o>n+1&&(r=e.charCodeAt(n+1))>=56320&&r<=57343?1024*(i-55296)+r-56320+65536:i),u=s>=rn[0]&&s<=rn[1],c=2===a.length&&a[0]===a[1];return{value:Tt(c?a[0]:a),isSecondary:u||c}}(h),y=v.value,b=v.isSecondary,w=f[0].startsWith("FontAwesome"),x=$t(g,y),O=x;if(w){var k=(s=Vt[a=y],u=$t("fas",a),s||(u?{prefix:"fas",iconName:u}:null)||{prefix:null,iconName:null});k.iconName&&k.prefix&&(x=k.iconName,g=k.prefix)}if(!x||b||c&&c.getAttribute(F)===g&&c.getAttribute(_)===O)r();else{t.setAttribute(n,O),c&&t.removeChild(c);var C={iconName:null,title:null,titleId:null,prefix:null,transform:dt,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},j=C.extra;j.attributes[D]=e,Pe(x,g).then((function(i){var a=we(o(o({},C),{},{icons:{main:i,mask:ne()},prefix:g,iconName:O,extra:j,watchable:!0})),s=P.createElementNS("http://www.w3.org/2000/svg","svg");"::before"===e?t.insertBefore(s,t.firstChild):t.appendChild(s),s.outerHTML=a.map((function(t){return At(t)})).join("\n"),t.removeAttribute(n),r()})).catch(i)}}else r()}))}function an(t){return Promise.all([on(t,"::before"),on(t,"::after")])}function sn(t){return!(t.parentNode===document.head||~H.indexOf(t.tagName.toUpperCase())||t.getAttribute(D)||t.parentNode&&"svg"===t.parentNode.tagName)}function un(t){if(E)return new Promise((function(e,n){var r=gt(t.querySelectorAll("*")).filter(sn).map(an),o=Ae.begin("searchPseudoElements");qe(),Promise.all(r).then((function(){o(),He(),e()})).catch((function(){o(),He(),n()}))}))}var cn=!1,ln=function(t){return t.toLowerCase().split(" ").reduce((function(t,e){var n=e.toLowerCase().split("-"),r=n[0],o=n.slice(1).join("-");if(r&&"h"===o)return t.flipX=!0,t;if(r&&"v"===o)return t.flipY=!0,t;if(o=parseFloat(o),isNaN(o))return t;switch(r){case"grow":t.size=t.size+o;break;case"shrink":t.size=t.size-o;break;case"left":t.x=t.x-o;break;case"right":t.x=t.x+o;break;case"up":t.y=t.y-o;break;case"down":t.y=t.y+o;break;case"rotate":t.rotate=t.rotate+o}return t}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})},fn={mixout:function(){return{parse:{transform:function(t){return ln(t)}}}},hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-transform");return n&&(t.transform=ln(n)),t}}},provides:function(t){t.generateAbstractTransformGrouping=function(t){var e=t.main,n=t.transform,r=t.containerWidth,i=t.iconWidth,a={transform:"translate(".concat(r/2," 256)")},s="translate(".concat(32*n.x,", ").concat(32*n.y,") "),u="scale(".concat(n.size/16*(n.flipX?-1:1),", ").concat(n.size/16*(n.flipY?-1:1),") "),c="rotate(".concat(n.rotate," 0 0)"),l={outer:a,inner:{transform:"".concat(s," ").concat(u," ").concat(c)},path:{transform:"translate(".concat(i/2*-1," -256)")}};return{tag:"g",attributes:o({},l.outer),children:[{tag:"g",attributes:o({},l.inner),children:[{tag:e.icon.tag,children:e.icon.children,attributes:o(o({},e.icon.attributes),l.path)}]}]}}}},pn={x:0,y:0,width:"100%",height:"100%"};function dn(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}var hn={hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-mask"),r=n?ie(n.split(" ").map((function(t){return t.trim()}))):ne();return r.prefix||(r.prefix=ee()),t.mask=r,t.maskId=e.getAttribute("data-fa-mask-id"),t}}},provides:function(t){t.generateAbstractMask=function(t){var e,n=t.children,r=t.attributes,i=t.main,a=t.mask,s=t.maskId,u=t.transform,c=i.width,l=i.icon,f=a.width,p=a.icon,d=function(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth,o={transform:"translate(".concat(n/2," 256)")},i="translate(".concat(32*e.x,", ").concat(32*e.y,") "),a="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),s="rotate(".concat(e.rotate," 0 0)");return{outer:o,inner:{transform:"".concat(i," ").concat(a," ").concat(s)},path:{transform:"translate(".concat(r/2*-1," -256)")}}}({transform:u,containerWidth:f,iconWidth:c}),h={tag:"rect",attributes:o(o({},pn),{},{fill:"white"})},m=l.children?{children:l.children.map(dn)}:{},g={tag:"g",attributes:o({},d.inner),children:[dn(o({tag:l.tag,attributes:o(o({},l.attributes),d.path)},m))]},v={tag:"g",attributes:o({},d.outer),children:[g]},y="mask-".concat(s||mt()),b="clip-".concat(s||mt()),w={tag:"mask",attributes:o(o({},pn),{},{id:y,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,v]},x={tag:"defs",children:[{tag:"clipPath",attributes:{id:b},children:(e=p,"g"===e.tag?e.children:[e])},w]};return n.push(x,{tag:"rect",attributes:o({fill:"currentColor","clip-path":"url(#".concat(b,")"),mask:"url(#".concat(y,")")},pn)}),{children:n,attributes:r}}}},mn={provides:function(t){var e=!1;S.matchMedia&&(e=S.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var t=[],n={fill:"currentColor"},r={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};t.push({tag:"path",attributes:o(o({},n),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=o(o({},r),{},{attributeName:"opacity"}),a={tag:"circle",attributes:o(o({},n),{},{cx:"256",cy:"364",r:"28"}),children:[]};return e||a.children.push({tag:"animate",attributes:o(o({},r),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:o(o({},i),{},{values:"1;0;1;1;0;1;"})}),t.push(a),t.push({tag:"path",attributes:o(o({},n),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:e?[]:[{tag:"animate",attributes:o(o({},i),{},{values:"1;0;0;0;0;1;"})}]}),e||t.push({tag:"path",attributes:o(o({},n),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:o(o({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:t}}}};!function(t,e){var n=e.mixoutsTo;se=t,ue={},Object.keys(ce).forEach((function(t){-1===le.indexOf(t)&&delete ce[t]})),se.forEach((function(t){var e=t.mixout?t.mixout():{};if(Object.keys(e).forEach((function(t){"function"==typeof e[t]&&(n[t]=e[t]),"object"===i(e[t])&&Object.keys(e[t]).forEach((function(r){n[t]||(n[t]={}),n[t][r]=e[t][r]}))})),t.hooks){var r=t.hooks();Object.keys(r).forEach((function(t){ue[t]||(ue[t]=[]),ue[t].push(r[t])}))}t.provides&&t.provides(ce)}))}([Pt,$e,Xe,tn,en,{hooks:function(){return{mutationObserverCallbacks:function(t){return t.pseudoElementsCallback=un,t}}},provides:function(t){t.pseudoElements2svg=function(t){var e=t.node,n=void 0===e?P:e;lt.searchPseudoElements&&un(n)}}},{mixout:function(){return{dom:{unwatch:function(){qe(),cn=!0}}}},hooks:function(){return{bootstrap:function(){Qe(fe("mutationObserverCallbacks",{}))},noAuto:function(){Ze&&Ze.disconnect()},watch:function(t){var e=t.observeMutationsRoot;cn?He():Qe(fe("mutationObserverCallbacks",{observeMutationsRoot:e}))}}}},fn,hn,mn,{hooks:function(){return{parseNodeAttributes:function(t,e){var n=e.getAttribute("data-fa-symbol"),r=null!==n&&(""===n||n);return t.symbol=r,t}}}}],{mixoutsTo:ve});var gn=ve.parse,vn=ve.icon,yn=n(5697),bn=n.n(yn),wn=n(7294);function xn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function On(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function Cn(t){return function(t){if(Array.isArray(t))return jn(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return jn(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jn(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function jn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0||!Array.isArray(e)&&e?Sn({},t,e):{}}var Tn=["forwardedRef"];function Mn(t){var e=t.forwardedRef,n=Pn(t,Tn),r=n.icon,o=n.mask,i=n.symbol,a=n.className,s=n.title,u=n.titleId,c=n.maskId,l=Ln(r),f=Nn("classes",[].concat(Cn(function(t){var e,n=t.beat,r=t.fade,o=t.beatFade,i=t.bounce,a=t.shake,s=t.flash,u=t.spin,c=t.spinPulse,l=t.spinReverse,f=t.pulse,p=t.fixedWidth,d=t.inverse,h=t.border,m=t.listItem,g=t.flip,v=t.size,y=t.rotation,b=t.pull,w=(Sn(e={"fa-beat":n,"fa-fade":r,"fa-beat-fade":o,"fa-bounce":i,"fa-shake":a,"fa-flash":s,"fa-spin":u,"fa-spin-reverse":l,"fa-spin-pulse":c,"fa-pulse":f,"fa-fw":p,"fa-inverse":d,"fa-border":h,"fa-li":m,"fa-flip":!0===g,"fa-flip-horizontal":"horizontal"===g||"both"===g,"fa-flip-vertical":"vertical"===g||"both"===g},"fa-".concat(v),null!=v),Sn(e,"fa-rotate-".concat(y),null!=y&&0!==y),Sn(e,"fa-pull-".concat(b),null!=b),Sn(e,"fa-swap-opacity",t.swapOpacity),e);return Object.keys(w).map((function(t){return w[t]?t:null})).filter((function(t){return t}))}(n)),Cn(a.split(" ")))),p=Nn("transform","string"==typeof n.transform?gn.transform(n.transform):n.transform),d=Nn("mask",Ln(o)),h=vn(l,On(On(On(On({},f),p),d),{},{symbol:i,title:s,titleId:u,maskId:c}));if(!h)return function(){var t;!An&&console&&"function"==typeof console.error&&(t=console).error.apply(t,arguments)}("Could not find icon",l),null;var m=h.abstract,g={ref:e};return Object.keys(n).forEach((function(t){Mn.defaultProps.hasOwnProperty(t)||(g[t]=n[t])})),Dn(m[0],g)}Mn.displayName="FontAwesomeIcon",Mn.propTypes={beat:bn().bool,border:bn().bool,beatFade:bn().bool,bounce:bn().bool,className:bn().string,fade:bn().bool,flash:bn().bool,mask:bn().oneOfType([bn().object,bn().array,bn().string]),maskId:bn().string,fixedWidth:bn().bool,inverse:bn().bool,flip:bn().oneOf([!0,!1,"horizontal","vertical","both"]),icon:bn().oneOfType([bn().object,bn().array,bn().string]),listItem:bn().bool,pull:bn().oneOf(["right","left"]),pulse:bn().bool,rotation:bn().oneOf([0,90,180,270]),shake:bn().bool,size:bn().oneOf(["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:bn().bool,spinPulse:bn().bool,spinReverse:bn().bool,symbol:bn().oneOfType([bn().bool,bn().string]),title:bn().string,titleId:bn().string,transform:bn().oneOfType([bn().string,bn().object]),swapOpacity:bn().bool},Mn.defaultProps={border:!1,className:"",mask:null,maskId:null,fixedWidth:!1,inverse:!1,flip:!1,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,size:null,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:null,transform:null,swapOpacity:!1};var Dn=function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof n)return n;var o=(n.children||[]).map((function(n){return t(e,n)})),i=Object.keys(n.attributes||{}).reduce((function(t,e){var r=n.attributes[e];switch(e){case"class":t.attrs.className=r,delete n.attributes.class;break;case"style":t.attrs.style=r.split(";").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,e){var n,r=e.indexOf(":"),o=En(e.slice(0,r)),i=e.slice(r+1).trim();return o.startsWith("webkit")?t[(n=o,n.charAt(0).toUpperCase()+n.slice(1))]=i:t[o]=i,t}),{});break;default:0===e.indexOf("aria-")||0===e.indexOf("data-")?t.attrs[e.toLowerCase()]=r:t.attrs[En(e)]=r}return t}),{attrs:{}}),a=r.style,s=void 0===a?{}:a,u=Pn(r,Rn);return i.attrs.style=On(On({},i.attrs.style),s),e.apply(void 0,[n.tag,On(On({},i.attrs),u)].concat(Cn(o)))}.bind(null,wn.createElement)},2393:function(t,e){"use strict";var n=Object.assign||function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},c=u.state,l=u.replace,f=void 0!==l&&l;if("number"==typeof e)t.history.go(e);else{c=n({},c,{key:Date.now()+""});try{a||f?t.history.replaceState(c,null,e):t.history.pushState(c,null,e)}catch(d){t.location[f?"replace":"assign"](e)}}i=r(t),a=!0;var p=new Promise((function(t){return s=t}));return o.forEach((function(t){return t({location:i,action:"PUSH"})})),p}}},i=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",e=t.indexOf("?"),n={pathname:e>-1?t.substr(0,e):t,search:e>-1?t.substr(e):""},r=0,o=[n],i=[null];return{get location(){return o[r]},addEventListener:function(t,e){},removeEventListener:function(t,e){},history:{get entries(){return o},get index(){return r},get state(){return i[r]},pushState:function(t,e,n){var a=n.split("?"),s=a[0],u=a[1],c=void 0===u?"":u;r++,o.push({pathname:s,search:c.length?"?"+c:c}),i.push(t)},replaceState:function(t,e,n){var a=n.split("?"),s=a[0],u=a[1],c=void 0===u?"":u;o[r]={pathname:s,search:c},i[r]=t},go:function(t){var e=r+t;e<0||e>i.length-1||(r=e)}}}},a=!("undefined"==typeof window||!window.document||!window.document.createElement),s=o(a?window:i()),u=s.navigate;e.V5=s},2098:function(t,e,n){"use strict";e.ei=void 0;var r,o=n(1143),i=(r=o)&&r.__esModule?r:{default:r};var a=function(t,e){return t.substr(0,e.length)===e},s=function(t,e){for(var n=void 0,r=void 0,o=e.split("?")[0],a=d(o),s=""===a[0],c=p(t),f=0,h=c.length;fe.score?-1:t.index-e.index}))},d=function(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")},h=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r0})))&&n.length>0?"?"+n.join("&"):"")},m=["uri","path"];e.ei=s},6633:function(t,e,n){t.exports=n(2465)},3344:function(t,e,n){"use strict";var r=n(1599),o=n(7202),i=n(116),a=n(8710),s=n(3656),u=n(2306),c=n(778),l=n(1191),f=n(8943),p=n(6114);t.exports=function(t){return new Promise((function(e,n){var d,h=t.data,m=t.headers,g=t.responseType;function v(){t.cancelToken&&t.cancelToken.unsubscribe(d),t.signal&&t.signal.removeEventListener("abort",d)}r.isFormData(h)&&delete m["Content-Type"];var y=new XMLHttpRequest;if(t.auth){var b=t.auth.username||"",w=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";m.Authorization="Basic "+btoa(b+":"+w)}var x=s(t.baseURL,t.url);function O(){if(y){var r="getAllResponseHeaders"in y?u(y.getAllResponseHeaders()):null,i={data:g&&"text"!==g&&"json"!==g?y.response:y.responseText,status:y.status,statusText:y.statusText,headers:r,config:t,request:y};o((function(t){e(t),v()}),(function(t){n(t),v()}),i),y=null}}if(y.open(t.method.toUpperCase(),a(x,t.params,t.paramsSerializer),!0),y.timeout=t.timeout,"onloadend"in y?y.onloadend=O:y.onreadystatechange=function(){y&&4===y.readyState&&(0!==y.status||y.responseURL&&0===y.responseURL.indexOf("file:"))&&setTimeout(O)},y.onabort=function(){y&&(n(l("Request aborted",t,"ECONNABORTED",y)),y=null)},y.onerror=function(){n(l("Network Error",t,null,y)),y=null},y.ontimeout=function(){var e=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",r=t.transitional||f.transitional;t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(l(e,t,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",y)),y=null},r.isStandardBrowserEnv()){var k=(t.withCredentials||c(x))&&t.xsrfCookieName?i.read(t.xsrfCookieName):void 0;k&&(m[t.xsrfHeaderName]=k)}"setRequestHeader"in y&&r.forEach(m,(function(t,e){void 0===h&&"content-type"===e.toLowerCase()?delete m[e]:y.setRequestHeader(e,t)})),r.isUndefined(t.withCredentials)||(y.withCredentials=!!t.withCredentials),g&&"json"!==g&&(y.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&y.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&y.upload&&y.upload.addEventListener("progress",t.onUploadProgress),(t.cancelToken||t.signal)&&(d=function(t){y&&(n(!t||t&&t.type?new p("canceled"):t),y.abort(),y=null)},t.cancelToken&&t.cancelToken.subscribe(d),t.signal&&(t.signal.aborted?d():t.signal.addEventListener("abort",d))),h||(h=null),y.send(h)}))}},2465:function(t,e,n){"use strict";var r=n(1599),o=n(6013),i=n(2234),a=n(5469);var s=function t(e){var n=new i(e),s=o(i.prototype.request,n);return r.extend(s,i.prototype,n),r.extend(s,n),s.create=function(n){return t(a(e,n))},s}(n(8943));s.Axios=i,s.Cancel=n(6114),s.CancelToken=n(4396),s.isCancel=n(7458),s.VERSION=n(9022).version,s.all=function(t){return Promise.all(t)},s.spread=n(2744),s.isAxiosError=n(6683),t.exports=s,t.exports.default=s},6114:function(t){"use strict";function e(t){this.message=t}e.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},e.prototype.__CANCEL__=!0,t.exports=e},4396:function(t,e,n){"use strict";var r=n(6114);function o(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;this.promise.then((function(t){if(n._listeners){var e,r=n._listeners.length;for(e=0;e=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){c.headers[t]=r.merge(a)})),t.exports=c},9022:function(t){t.exports={version:"0.25.0"}},6013:function(t){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},2744:function(t){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},8260:function(t,e,n){"use strict";var r=n(9022).version,o={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){o[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}}));var i={};o.transitional=function(t,e,n){function o(t,e){return"[Axios v"+r+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,r,a){if(!1===t)throw new Error(o(r," has been removed"+(e?" in "+e:"")));return e&&!i[r]&&(i[r]=!0,console.warn(o(r," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,r,a)}},t.exports={assertOptions:function(t,e,n){if("object"!=typeof t)throw new TypeError("options must be an object");for(var r=Object.keys(t),o=r.length;o-- >0;){var i=r[o],a=e[i];if(a){var s=t[i],u=void 0===s||a(s,i,t);if(!0!==u)throw new TypeError("option "+i+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+i)}},validators:o}},1599:function(t,e,n){"use strict";var r=n(6013),o=Object.prototype.toString;function i(t){return Array.isArray(t)}function a(t){return void 0===t}function s(t){return"[object ArrayBuffer]"===o.call(t)}function u(t){return null!==t&&"object"==typeof t}function c(t){if("[object Object]"!==o.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function l(t){return"[object Function]"===o.call(t)}function f(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),i(t))for(var n=0,r=t.length;n1&&void 0!==arguments[1]?arguments[1]:"legacy";const n=t.endsWith(".html"),r=t.endsWith(".xml"),o=t.endsWith(".pdf");return"/"===t?t:((n||r||o)&&(e="never"),"always"===e?t.endsWith("/")?t:"".concat(t,"/"):"never"===e&&t.endsWith("/")?t.slice(0,-1):t)}},6494:function(t){"use strict";t.exports=Object.assign},540:function(t,e,n){"use strict";e.__esModule=!0,e.onInitialClientRender=void 0;n(3521),n(2163);e.onInitialClientRender=()=>{}},1897:function(t,e,n){"use strict";n(9244),e.__esModule=!0,e.getForwards=function(t){return null==t?void 0:t.flatMap((t=>(null==t?void 0:t.forward)||[]))}},2163:function(t,e,n){"use strict";e.__esModule=!0,e.injectPartytownSnippet=function(t){if(!t.length)return;const e=document.querySelector("script[data-partytown]"),n=document.querySelector('iframe[src*="~partytown/partytown-sandbox-sw"]');e&&e.remove();n&&n.remove();const i=(0,o.getForwards)(t),a=document.createElement("script");a.dataset.partytown="",a.innerHTML=(0,r.partytownSnippet)({forward:i}),document.head.appendChild(a)};var r=n(2911),o=n(1897)},3498:function(t){var e=1/0,n=9007199254740991,r=17976931348623157e292,o=NaN,i="[object Function]",a="[object GeneratorFunction]",s="[object Symbol]",u=/^\s+|\s+$/g,c=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,f=/^0o[0-7]+$/i,p=/^(?:0|[1-9]\d*)$/,d=parseInt,h=Object.prototype.toString,m=Math.ceil,g=Math.max;function v(t,e,n){var r=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(o);++r-1&&t%1==0&&t<=n}(t.length)&&!function(t){var e=b(t)?h.call(t):"";return e==i||e==a}(t)}(r)&&function(t,e){return!!(e=null==e?n:e)&&("number"==typeof t||p.test(t))&&t>-1&&t%1==0&&t"object"==typeof window?((t?t.querySelector("#_goober"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:t||i,s=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,u=/\/\*[^]*?\*\/| +/g,c=/\n+/g,l=(t,e)=>{let n="",r="",o="";for(let i in t){let a=t[i];"@"==i[0]?"i"==i[1]?n=i+" "+a+";":r+="f"==i[1]?l(a,i):i+"{"+l(a,"k"==i[1]?"":e)+"}":"object"==typeof a?r+=l(a,e?e.replace(/([^,])+/g,(t=>i.replace(/(^:.*)|([^,])+/g,(e=>/&/.test(e)?e.replace(/&/g,t):t?t+" "+e:e)))):i):null!=a&&(i=/^--/.test(i)?i:i.replace(/[A-Z]/g,"-$&").toLowerCase(),o+=l.p?l.p(i,a):i+":"+a+";")}return n+(e&&o?e+"{"+o+"}":o)+r},f={},p=t=>{if("object"==typeof t){let e="";for(let n in t)e+=n+p(t[n]);return e}return t},d=(t,e,n,r,o)=>{let i=p(t),a=f[i]||(f[i]=(t=>{let e=0,n=11;for(;e>>0;return"go"+n})(i));if(!f[a]){let e=i!==t?t:(t=>{let e,n,r=[{}];for(;e=s.exec(t.replace(u,""));)e[4]?r.shift():e[3]?(n=e[3].replace(c," ").trim(),r.unshift(r[0][n]=r[0][n]||{})):r[0][e[1]]=e[2].replace(c," ").trim();return r[0]})(t);f[a]=l(o?{["@keyframes "+a]:e}:e,n?"":"."+a)}let d=n&&f.g?f.g:null;return n&&(f.g=f[a]),((t,e,n,r)=>{r?e.data=e.data.replace(r,t):-1===e.data.indexOf(t)&&(e.data=n?t+e.data:e.data+t)})(f[a],e,r,d),a},h=(t,e,n)=>t.reduce(((t,r,o)=>{let i=e[o];if(i&&i.call){let t=i(n),e=t&&t.props&&t.props.className||/^go/.test(t)&&t;i=e?"."+e:t&&"object"==typeof t?t.props?"":l(t,""):!1===t?"":t}return t+r+(null==i?"":i)}),"");function m(t){let e=this||{},n=t.call?t(e.p):t;return d(n.unshift?n.raw?h(n,[].slice.call(arguments,1),e.p):n.reduce(((t,n)=>Object.assign(t,n&&n.call?n(e.p):n)),{}):n,a(e.target),e.g,e.o,e.k)}m.bind({g:1});let g,v,y,b=m.bind({k:1});function w(t,e){let n=this||{};return function(){let r=arguments;function o(i,a){let s=Object.assign({},i),u=s.className||o.className;n.p=Object.assign({theme:v&&v()},s),n.o=/ *go\d+/.test(u),s.className=m.apply(n,r)+(u?" "+u:""),e&&(s.ref=a);let c=t;return t[0]&&(c=s.as||t,delete s.as),y&&c[0]&&y(s),g(c,s)}return e?e(o):o}}var x,O,k,S,P,C,j,E,R,A,L,N,T,M,D,I,F=(t,e)=>(t=>"function"==typeof t)(t)?t(e):t,_=(()=>{let t=0;return()=>(++t).toString()})(),U=(()=>{let t;return()=>{if(void 0===t&&typeof window<"u"){let e=matchMedia("(prefers-reduced-motion: reduce)");t=!e||e.matches}return t}})(),q=new Map,H=t=>{if(q.has(t))return;let e=setTimeout((()=>{q.delete(t),B({type:4,toastId:t})}),1e3);q.set(t,e)},Z=(t,e)=>{switch(e.type){case 0:return{...t,toasts:[e.toast,...t.toasts].slice(0,20)};case 1:return e.toast.id&&(t=>{let e=q.get(t);e&&clearTimeout(e)})(e.toast.id),{...t,toasts:t.toasts.map((t=>t.id===e.toast.id?{...t,...e.toast}:t))};case 2:let{toast:n}=e;return t.toasts.find((t=>t.id===n.id))?Z(t,{type:1,toast:n}):Z(t,{type:0,toast:n});case 3:let{toastId:r}=e;return r?H(r):t.toasts.forEach((t=>{H(t.id)})),{...t,toasts:t.toasts.map((t=>t.id===r||void 0===r?{...t,visible:!1}:t))};case 4:return void 0===e.toastId?{...t,toasts:[]}:{...t,toasts:t.toasts.filter((t=>t.id!==e.toastId))};case 5:return{...t,pausedAt:e.time};case 6:let o=e.time-(t.pausedAt||0);return{...t,pausedAt:void 0,toasts:t.toasts.map((t=>({...t,pauseDuration:t.pauseDuration+o})))}}},Q=[],z={toasts:[],pausedAt:void 0},B=t=>{z=Z(z,t),Q.forEach((t=>{t(z)}))},V={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},W=t=>(e,n)=>{let r=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"blank",n=arguments.length>2?arguments[2]:void 0;return{createdAt:Date.now(),visible:!0,type:e,ariaProps:{role:"status","aria-live":"polite"},message:t,pauseDuration:0,...n,id:(null==n?void 0:n.id)||_()}}(e,t,n);return B({type:2,toast:r}),r.id},K=(t,e)=>W("blank")(t,e);K.error=W("error"),K.success=W("success"),K.loading=W("loading"),K.custom=W("custom"),K.dismiss=t=>{B({type:3,toastId:t})},K.remove=t=>B({type:4,toastId:t}),K.promise=(t,e,n)=>{let r=K.loading(e.loading,{...n,...null==n?void 0:n.loading});return t.then((t=>(K.success(F(e.success,t),{id:r,...n,...null==n?void 0:n.success}),t))).catch((t=>{K.error(F(e.error,t),{id:r,...n,...null==n?void 0:n.error})})),t};var Y=(t,e)=>{B({type:1,toast:{id:t,height:e}})},J=()=>{B({type:5,time:Date.now()})},G=t=>{let{toasts:e,pausedAt:n}=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[e,n]=(0,o.useState)(z);(0,o.useEffect)((()=>(Q.push(n),()=>{let t=Q.indexOf(n);t>-1&&Q.splice(t,1)})),[e]);let r=e.toasts.map((e=>{var n,r;return{...t,...t[e.type],...e,duration:e.duration||(null==(n=t[e.type])?void 0:n.duration)||(null==t?void 0:t.duration)||V[e.type],style:{...t.style,...null==(r=t[e.type])?void 0:r.style,...e.style}}}));return{...e,toasts:r}}(t);(0,o.useEffect)((()=>{if(n)return;let t=Date.now(),r=e.map((e=>{if(e.duration===1/0)return;let n=(e.duration||0)+e.pauseDuration-(t-e.createdAt);if(!(n<0))return setTimeout((()=>K.dismiss(e.id)),n);e.visible&&K.dismiss(e.id)}));return()=>{r.forEach((t=>t&&clearTimeout(t)))}}),[e,n]);let r=(0,o.useCallback)((()=>{n&&B({type:6,time:Date.now()})}),[n]),i=(0,o.useCallback)(((t,n)=>{let{reverseOrder:r=!1,gutter:o=8,defaultPosition:i}=n||{},a=e.filter((e=>(e.position||i)===(t.position||i)&&e.height)),s=a.findIndex((e=>e.id===t.id)),u=a.filter(((t,e)=>et.visible)).slice(...r?[u+1]:[0,u]).reduce(((t,e)=>t+(e.height||0)+o),0)}),[e]);return{toasts:e,handlers:{updateHeight:Y,startPause:J,endPause:r,calculateOffset:i}}},$=b(x||(x=(0,r.Z)(["\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n opacity: 1;\n}"]))),X=b(O||(O=(0,r.Z)(["\nfrom {\n transform: scale(0);\n opacity: 0;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}"]))),tt=b(k||(k=(0,r.Z)(["\nfrom {\n transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(90deg);\n\topacity: 1;\n}"]))),et=w("div")(S||(S=(0,r.Z)(["\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ",";\n position: relative;\n transform: rotate(45deg);\n\n animation: "," 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n\n &:after,\n &:before {\n content: '';\n animation: "," 0.15s ease-out forwards;\n animation-delay: 150ms;\n position: absolute;\n border-radius: 3px;\n opacity: 0;\n background: ",";\n bottom: 9px;\n left: 4px;\n height: 2px;\n width: 12px;\n }\n\n &:before {\n animation: "," 0.15s ease-out forwards;\n animation-delay: 180ms;\n transform: rotate(90deg);\n }\n"])),(t=>t.primary||"#ff4b4b"),$,X,(t=>t.secondary||"#fff"),tt),nt=b(P||(P=(0,r.Z)(["\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n"]))),rt=w("div")(C||(C=(0,r.Z)(["\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: ",";\n border-right-color: ",";\n animation: "," 1s linear infinite;\n"])),(t=>t.secondary||"#e0e0e0"),(t=>t.primary||"#616161"),nt),ot=b(j||(j=(0,r.Z)(["\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n\topacity: 1;\n}"]))),it=b(E||(E=(0,r.Z)(["\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n opacity: 1;\n height: 10px;\n}"]))),at=w("div")(R||(R=(0,r.Z)(["\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ",";\n position: relative;\n transform: rotate(45deg);\n\n animation: "," 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n &:after {\n content: '';\n box-sizing: border-box;\n animation: "," 0.2s ease-out forwards;\n opacity: 0;\n animation-delay: 200ms;\n position: absolute;\n border-right: 2px solid;\n border-bottom: 2px solid;\n border-color: ",";\n bottom: 6px;\n left: 6px;\n height: 10px;\n width: 6px;\n }\n"])),(t=>t.primary||"#61d345"),ot,it,(t=>t.secondary||"#fff")),st=w("div")(A||(A=(0,r.Z)(["\n position: absolute;\n"]))),ut=w("div")(L||(L=(0,r.Z)(["\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 20px;\n min-height: 20px;\n"]))),ct=b(N||(N=(0,r.Z)(["\nfrom {\n transform: scale(0.6);\n opacity: 0.4;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}"]))),lt=w("div")(T||(T=(0,r.Z)(["\n position: relative;\n transform: scale(0.6);\n opacity: 0.4;\n min-width: 20px;\n animation: "," 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n"])),ct),ft=t=>{let{toast:e}=t,{icon:n,type:r,iconTheme:i}=e;return void 0!==n?"string"==typeof n?o.createElement(lt,null,n):n:"blank"===r?null:o.createElement(ut,null,o.createElement(rt,{...i}),"loading"!==r&&o.createElement(st,null,"error"===r?o.createElement(et,{...i}):o.createElement(at,{...i})))},pt=t=>"\n0% {transform: translate3d(0,".concat(-200*t,"%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n"),dt=t=>"\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,".concat(-150*t,"%,-1px) scale(.6); opacity:0;}\n"),ht=w("div")(M||(M=(0,r.Z)(["\n display: flex;\n align-items: center;\n background: #fff;\n color: #363636;\n line-height: 1.3;\n will-change: transform;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n max-width: 350px;\n pointer-events: auto;\n padding: 8px 10px;\n border-radius: 8px;\n"]))),mt=w("div")(D||(D=(0,r.Z)(["\n display: flex;\n justify-content: center;\n margin: 4px 10px;\n color: inherit;\n flex: 1 1 auto;\n white-space: pre-line;\n"]))),gt=o.memo((t=>{let{toast:e,position:n,style:r,children:i}=t,a=e.height?((t,e)=>{let n=t.includes("top")?1:-1,[r,o]=U()?["0%{opacity:0;} 100%{opacity:1;}","0%{opacity:1;} 100%{opacity:0;}"]:[pt(n),dt(n)];return{animation:e?"".concat(b(r)," 0.35s cubic-bezier(.21,1.02,.73,1) forwards"):"".concat(b(o)," 0.4s forwards cubic-bezier(.06,.71,.55,1)")}})(e.position||n||"top-center",e.visible):{opacity:0},s=o.createElement(ft,{toast:e}),u=o.createElement(mt,{...e.ariaProps},F(e.message,e));return o.createElement(ht,{className:e.className,style:{...a,...r,...e.style}},"function"==typeof i?i({icon:s,message:u}):o.createElement(o.Fragment,null,s,u))}));!function(t,e,n,r){l.p=e,g=t,v=n,y=r}(o.createElement);var vt=t=>{let{id:e,className:n,style:r,onHeightUpdate:i,children:a}=t,s=o.useCallback((t=>{if(t){let n=()=>{let n=t.getBoundingClientRect().height;i(e,n)};n(),new MutationObserver(n).observe(t,{subtree:!0,childList:!0,characterData:!0})}}),[e,i]);return o.createElement("div",{ref:s,className:n,style:r},a)},yt=m(I||(I=(0,r.Z)(["\n z-index: 9999;\n > * {\n pointer-events: auto;\n }\n"]))),bt=t=>{let{reverseOrder:e,position:n="top-center",toastOptions:r,gutter:i,children:a,containerStyle:s,containerClassName:u}=t,{toasts:c,handlers:l}=G(r);return o.createElement("div",{style:{position:"fixed",zIndex:9999,top:16,left:16,right:16,bottom:16,pointerEvents:"none",...s},className:u,onMouseEnter:l.startPause,onMouseLeave:l.endPause},c.map((t=>{let r=t.position||n,s=((t,e)=>{let n=t.includes("top"),r=n?{top:0}:{bottom:0},o=t.includes("center")?{justifyContent:"center"}:t.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:U()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:"translateY(".concat(e*(n?1:-1),"px)"),...r,...o}})(r,l.calculateOffset(t,{reverseOrder:e,gutter:i,defaultPosition:n}));return o.createElement(vt,{id:t.id,key:t.id,onHeightUpdate:l.updateHeight,className:t.visible?yt:"",style:s},"custom"===t.type?F(t.message,t):a?a(t):o.createElement(gt,{toast:t,position:r}))})))},wt=K},4807:function(t){t.exports={ReactQueryDevtools:function(){return null},ReactQueryDevtoolsPanel:function(){return null}}},1176:function(t,e,n){"use strict";n.d(e,{j:function(){return a}});var r=n(4578),o=n(787),i=n(6365),a=new(function(t){function e(){var e;return(e=t.call(this)||this).setup=function(t){var e;if(!i.sk&&(null==(e=window)?void 0:e.addEventListener)){var n=function(){return t()};return window.addEventListener("visibilitychange",n,!1),window.addEventListener("focus",n,!1),function(){window.removeEventListener("visibilitychange",n),window.removeEventListener("focus",n)}}},e}(0,r.Z)(e,t);var n=e.prototype;return n.onSubscribe=function(){this.cleanup||this.setEventListener(this.setup)},n.onUnsubscribe=function(){var t;this.hasListeners()||(null==(t=this.cleanup)||t.call(this),this.cleanup=void 0)},n.setEventListener=function(t){var e,n=this;this.setup=t,null==(e=this.cleanup)||e.call(this),this.cleanup=t((function(t){"boolean"==typeof t?n.setFocused(t):n.onFocus()}))},n.setFocused=function(t){this.focused=t,t&&this.onFocus()},n.onFocus=function(){this.listeners.forEach((function(t){t()}))},n.isFocused=function(){return"boolean"==typeof this.focused?this.focused:"undefined"==typeof document||[void 0,"visible","prerender"].includes(document.visibilityState)},e}(o.l))},6583:function(t,e,n){"use strict";n.d(e,{QueryClient:function(){return r.S}});var r=n(2188),o=n(9163);n.o(o,"QueryClientProvider")&&n.d(e,{QueryClientProvider:function(){return o.QueryClientProvider}}),n.o(o,"useQuery")&&n.d(e,{useQuery:function(){return o.useQuery}})},4673:function(t,e,n){"use strict";n.d(e,{E:function(){return i},j:function(){return o}});var r=console;function o(){return r}function i(t){r=t}},1819:function(t,e,n){"use strict";n.d(e,{V:function(){return i}});var r=n(6365),o=function(){function t(){this.queue=[],this.transactions=0,this.notifyFn=function(t){t()},this.batchNotifyFn=function(t){t()}}var e=t.prototype;return e.batch=function(t){var e;this.transactions++;try{e=t()}finally{this.transactions--,this.transactions||this.flush()}return e},e.schedule=function(t){var e=this;this.transactions?this.queue.push(t):(0,r.A4)((function(){e.notifyFn(t)}))},e.batchCalls=function(t){var e=this;return function(){for(var n=arguments.length,r=new Array(n),o=0;o0?this.queries.filter((function(t){return(0,o._x)(n,t)})):this.queries},n.notify=function(t){var e=this;a.V.batch((function(){e.listeners.forEach((function(e){e(t)}))}))},n.onFocus=function(){var t=this;a.V.batch((function(){t.queries.forEach((function(t){t.onFocus()}))}))},n.onOnline=function(){var t=this;a.V.batch((function(){t.queries.forEach((function(t){t.onOnline()}))}))},e}(l.l),p=function(){function t(t){this.options=(0,r.Z)({},t.defaultOptions,t.options),this.mutationId=t.mutationId,this.mutationCache=t.mutationCache,this.observers=[],this.state=t.state||{context:void 0,data:void 0,error:null,failureCount:0,isPaused:!1,status:"idle",variables:void 0},this.meta=t.meta}var e=t.prototype;return e.setState=function(t){this.dispatch({type:"setState",state:t})},e.addObserver=function(t){-1===this.observers.indexOf(t)&&this.observers.push(t)},e.removeObserver=function(t){this.observers=this.observers.filter((function(e){return e!==t}))},e.cancel=function(){return this.retryer?(this.retryer.cancel(),this.retryer.promise.then(o.ZT).catch(o.ZT)):Promise.resolve()},e.continue=function(){return this.retryer?(this.retryer.continue(),this.retryer.promise):this.execute()},e.execute=function(){var t,e=this,n="loading"===this.state.status,r=Promise.resolve();return n||(this.dispatch({type:"loading",variables:this.options.variables}),r=r.then((function(){null==e.mutationCache.config.onMutate||e.mutationCache.config.onMutate(e.state.variables,e)})).then((function(){return null==e.options.onMutate?void 0:e.options.onMutate(e.state.variables)})).then((function(t){t!==e.state.context&&e.dispatch({type:"loading",context:t,variables:e.state.variables})}))),r.then((function(){return e.executeMutation()})).then((function(n){t=n,null==e.mutationCache.config.onSuccess||e.mutationCache.config.onSuccess(t,e.state.variables,e.state.context,e)})).then((function(){return null==e.options.onSuccess?void 0:e.options.onSuccess(t,e.state.variables,e.state.context)})).then((function(){return null==e.options.onSettled?void 0:e.options.onSettled(t,null,e.state.variables,e.state.context)})).then((function(){return e.dispatch({type:"success",data:t}),t})).catch((function(t){return null==e.mutationCache.config.onError||e.mutationCache.config.onError(t,e.state.variables,e.state.context,e),(0,s.j)().error(t),Promise.resolve().then((function(){return null==e.options.onError?void 0:e.options.onError(t,e.state.variables,e.state.context)})).then((function(){return null==e.options.onSettled?void 0:e.options.onSettled(void 0,t,e.state.variables,e.state.context)})).then((function(){throw e.dispatch({type:"error",error:t}),t}))}))},e.executeMutation=function(){var t,e=this;return this.retryer=new u.m4({fn:function(){return e.options.mutationFn?e.options.mutationFn(e.state.variables):Promise.reject("No mutationFn found")},onFail:function(){e.dispatch({type:"failed"})},onPause:function(){e.dispatch({type:"pause"})},onContinue:function(){e.dispatch({type:"continue"})},retry:null!=(t=this.options.retry)?t:0,retryDelay:this.options.retryDelay}),this.retryer.promise},e.dispatch=function(t){var e=this;this.state=function(t,e){switch(e.type){case"failed":return(0,r.Z)({},t,{failureCount:t.failureCount+1});case"pause":return(0,r.Z)({},t,{isPaused:!0});case"continue":return(0,r.Z)({},t,{isPaused:!1});case"loading":return(0,r.Z)({},t,{context:e.context,data:void 0,error:null,isPaused:!1,status:"loading",variables:e.variables});case"success":return(0,r.Z)({},t,{data:e.data,error:null,status:"success",isPaused:!1});case"error":return(0,r.Z)({},t,{data:void 0,error:e.error,failureCount:t.failureCount+1,isPaused:!1,status:"error"});case"setState":return(0,r.Z)({},t,e.state);default:return t}}(this.state,t),a.V.batch((function(){e.observers.forEach((function(e){e.onMutationUpdate(t)})),e.mutationCache.notify(e)}))},t}();var d=function(t){function e(e){var n;return(n=t.call(this)||this).config=e||{},n.mutations=[],n.mutationId=0,n}(0,i.Z)(e,t);var n=e.prototype;return n.build=function(t,e,n){var r=new p({mutationCache:this,mutationId:++this.mutationId,options:t.defaultMutationOptions(e),state:n,defaultOptions:e.mutationKey?t.getMutationDefaults(e.mutationKey):void 0,meta:e.meta});return this.add(r),r},n.add=function(t){this.mutations.push(t),this.notify(t)},n.remove=function(t){this.mutations=this.mutations.filter((function(e){return e!==t})),t.cancel(),this.notify(t)},n.clear=function(){var t=this;a.V.batch((function(){t.mutations.forEach((function(e){t.remove(e)}))}))},n.getAll=function(){return this.mutations},n.find=function(t){return void 0===t.exact&&(t.exact=!0),this.mutations.find((function(e){return(0,o.X7)(t,e)}))},n.findAll=function(t){return this.mutations.filter((function(e){return(0,o.X7)(t,e)}))},n.notify=function(t){var e=this;a.V.batch((function(){e.listeners.forEach((function(e){e(t)}))}))},n.onFocus=function(){this.resumePausedMutations()},n.onOnline=function(){this.resumePausedMutations()},n.resumePausedMutations=function(){var t=this.mutations.filter((function(t){return t.state.isPaused}));return a.V.batch((function(){return t.reduce((function(t,e){return t.then((function(){return e.continue().catch(o.ZT)}))}),Promise.resolve())}))},e}(l.l),h=n(1176),m=n(7869);function g(t,e){return null==t.getNextPageParam?void 0:t.getNextPageParam(e[e.length-1],e)}function v(t,e){return null==t.getPreviousPageParam?void 0:t.getPreviousPageParam(e[0],e)}var y=function(){function t(t){void 0===t&&(t={}),this.queryCache=t.queryCache||new f,this.mutationCache=t.mutationCache||new d,this.defaultOptions=t.defaultOptions||{},this.queryDefaults=[],this.mutationDefaults=[]}var e=t.prototype;return e.mount=function(){var t=this;this.unsubscribeFocus=h.j.subscribe((function(){h.j.isFocused()&&m.N.isOnline()&&(t.mutationCache.onFocus(),t.queryCache.onFocus())})),this.unsubscribeOnline=m.N.subscribe((function(){h.j.isFocused()&&m.N.isOnline()&&(t.mutationCache.onOnline(),t.queryCache.onOnline())}))},e.unmount=function(){var t,e;null==(t=this.unsubscribeFocus)||t.call(this),null==(e=this.unsubscribeOnline)||e.call(this)},e.isFetching=function(t,e){var n=(0,o.I6)(t,e)[0];return n.fetching=!0,this.queryCache.findAll(n).length},e.isMutating=function(t){return this.mutationCache.findAll((0,r.Z)({},t,{fetching:!0})).length},e.getQueryData=function(t,e){var n;return null==(n=this.queryCache.find(t,e))?void 0:n.state.data},e.getQueriesData=function(t){return this.getQueryCache().findAll(t).map((function(t){return[t.queryKey,t.state.data]}))},e.setQueryData=function(t,e,n){var r=(0,o._v)(t),i=this.defaultQueryOptions(r);return this.queryCache.build(this,i).setData(e,n)},e.setQueriesData=function(t,e,n){var r=this;return a.V.batch((function(){return r.getQueryCache().findAll(t).map((function(t){var o=t.queryKey;return[o,r.setQueryData(o,e,n)]}))}))},e.getQueryState=function(t,e){var n;return null==(n=this.queryCache.find(t,e))?void 0:n.state},e.removeQueries=function(t,e){var n=(0,o.I6)(t,e)[0],r=this.queryCache;a.V.batch((function(){r.findAll(n).forEach((function(t){r.remove(t)}))}))},e.resetQueries=function(t,e,n){var i=this,s=(0,o.I6)(t,e,n),u=s[0],c=s[1],l=this.queryCache,f=(0,r.Z)({},u,{active:!0});return a.V.batch((function(){return l.findAll(u).forEach((function(t){t.reset()})),i.refetchQueries(f,c)}))},e.cancelQueries=function(t,e,n){var r=this,i=(0,o.I6)(t,e,n),s=i[0],u=i[1],c=void 0===u?{}:u;void 0===c.revert&&(c.revert=!0);var l=a.V.batch((function(){return r.queryCache.findAll(s).map((function(t){return t.cancel(c)}))}));return Promise.all(l).then(o.ZT).catch(o.ZT)},e.invalidateQueries=function(t,e,n){var i,s,u,c=this,l=(0,o.I6)(t,e,n),f=l[0],p=l[1],d=(0,r.Z)({},f,{active:null==(i=null!=(s=f.refetchActive)?s:f.active)||i,inactive:null!=(u=f.refetchInactive)&&u});return a.V.batch((function(){return c.queryCache.findAll(f).forEach((function(t){t.invalidate()})),c.refetchQueries(d,p)}))},e.refetchQueries=function(t,e,n){var i=this,s=(0,o.I6)(t,e,n),u=s[0],c=s[1],l=a.V.batch((function(){return i.queryCache.findAll(u).map((function(t){return t.fetch(void 0,(0,r.Z)({},c,{meta:{refetchPage:null==u?void 0:u.refetchPage}}))}))})),f=Promise.all(l).then(o.ZT);return(null==c?void 0:c.throwOnError)||(f=f.catch(o.ZT)),f},e.fetchQuery=function(t,e,n){var r=(0,o._v)(t,e,n),i=this.defaultQueryOptions(r);void 0===i.retry&&(i.retry=!1);var a=this.queryCache.build(this,i);return a.isStaleByTime(i.staleTime)?a.fetch(i):Promise.resolve(a.state.data)},e.prefetchQuery=function(t,e,n){return this.fetchQuery(t,e,n).then(o.ZT).catch(o.ZT)},e.fetchInfiniteQuery=function(t,e,n){var r=(0,o._v)(t,e,n);return r.behavior={onFetch:function(t){t.fetchFn=function(){var e,n,r,i,a,s,c,l=null==(e=t.fetchOptions)||null==(n=e.meta)?void 0:n.refetchPage,f=null==(r=t.fetchOptions)||null==(i=r.meta)?void 0:i.fetchMore,p=null==f?void 0:f.pageParam,d="forward"===(null==f?void 0:f.direction),h="backward"===(null==f?void 0:f.direction),m=(null==(a=t.state.data)?void 0:a.pages)||[],y=(null==(s=t.state.data)?void 0:s.pageParams)||[],b=(0,o.G9)(),w=null==b?void 0:b.signal,x=y,O=!1,k=t.options.queryFn||function(){return Promise.reject("Missing queryFn")},S=function(t,e,n,r){return x=r?[e].concat(x):[].concat(x,[e]),r?[n].concat(t):[].concat(t,[n])},P=function(e,n,r,o){if(O)return Promise.reject("Cancelled");if(void 0===r&&!n&&e.length)return Promise.resolve(e);var i={queryKey:t.queryKey,signal:w,pageParam:r,meta:t.meta},a=k(i),s=Promise.resolve(a).then((function(t){return S(e,r,t,o)}));return(0,u.LE)(a)&&(s.cancel=a.cancel),s};if(m.length)if(d){var C=void 0!==p,j=C?p:g(t.options,m);c=P(m,C,j)}else if(h){var E=void 0!==p,R=E?p:v(t.options,m);c=P(m,E,R,!0)}else!function(){x=[];var e=void 0===t.options.getNextPageParam,n=!l||!m[0]||l(m[0],0,m);c=n?P([],e,y[0]):Promise.resolve(S([],y[0],m[0]));for(var r=function(n){c=c.then((function(r){if(!l||!m[n]||l(m[n],n,m)){var o=e?y[n]:g(t.options,r);return P(r,e,o)}return Promise.resolve(S(r,y[n],m[n]))}))},o=1;o0},e.onSubscribe=function(){},e.onUnsubscribe=function(){},t}()},9163:function(){},6365:function(t,e,n){"use strict";n.d(e,{A4:function(){return S},G9:function(){return P},Gh:function(){return k},I6:function(){return f},Kp:function(){return c},PN:function(){return s},Q$:function(){return y},Rm:function(){return h},SE:function(){return a},VS:function(){return b},X7:function(){return d},ZT:function(){return i},_v:function(){return l},_x:function(){return p},mc:function(){return u},sk:function(){return o},to:function(){return g},yF:function(){return m}});var r=n(7462),o="undefined"==typeof window;function i(){}function a(t,e){return"function"==typeof t?t(e):t}function s(t){return"number"==typeof t&&t>=0&&t!==1/0}function u(t){return Array.isArray(t)?t:[t]}function c(t,e){return Math.max(t+(e||0)-Date.now(),0)}function l(t,e,n){return O(t)?"function"==typeof e?(0,r.Z)({},n,{queryKey:t,queryFn:e}):(0,r.Z)({},e,{queryKey:t}):t}function f(t,e,n){return O(t)?[(0,r.Z)({},e,{queryKey:t}),n]:[t||{},e]}function p(t,e){var n=t.active,r=t.exact,o=t.fetching,i=t.inactive,a=t.predicate,s=t.queryKey,u=t.stale;if(O(s))if(r){if(e.queryHash!==h(s,e.options))return!1}else if(!g(e.queryKey,s))return!1;var c=function(t,e){return!0===t&&!0===e||null==t&&null==e?"all":!1===t&&!1===e?"none":(null!=t?t:!e)?"active":"inactive"}(n,i);if("none"===c)return!1;if("all"!==c){var l=e.isActive();if("active"===c&&!l)return!1;if("inactive"===c&&l)return!1}return("boolean"!=typeof u||e.isStale()===u)&&(("boolean"!=typeof o||e.isFetching()===o)&&!(a&&!a(e)))}function d(t,e){var n=t.exact,r=t.fetching,o=t.predicate,i=t.mutationKey;if(O(i)){if(!e.options.mutationKey)return!1;if(n){if(m(e.options.mutationKey)!==m(i))return!1}else if(!g(e.options.mutationKey,i))return!1}return("boolean"!=typeof r||"loading"===e.state.status===r)&&!(o&&!o(e))}function h(t,e){return((null==e?void 0:e.queryKeyHashFn)||m)(t)}function m(t){var e,n=u(t);return e=n,JSON.stringify(e,(function(t,e){return w(e)?Object.keys(e).sort().reduce((function(t,n){return t[n]=e[n],t}),{}):e}))}function g(t,e){return v(u(t),u(e))}function v(t,e){return t===e||typeof t==typeof e&&(!(!t||!e||"object"!=typeof t||"object"!=typeof e)&&!Object.keys(e).some((function(n){return!v(t[n],e[n])})))}function y(t,e){if(t===e)return t;var n=Array.isArray(t)&&Array.isArray(e);if(n||w(t)&&w(e)){for(var r=n?t.length:Object.keys(t).length,o=n?e:Object.keys(e),i=o.length,a=n?[]:{},s=0,u=0;u0||p.errorUpdateCount>0,isFetchedAfterMount:p.dataUpdateCount>l.dataUpdateCount||p.errorUpdateCount>l.errorUpdateCount,isFetching:v,isRefetching:v&&"loading"!==y,isLoadingError:"error"===y&&0===p.dataUpdatedAt,isPlaceholderData:x,isPreviousData:b,isRefetchError:"error"===y&&0!==p.dataUpdatedAt,isStale:k(t,e),refetch:this.refetch,remove:this.remove}},n.shouldNotifyListeners=function(t,e){if(!e)return!0;var n=this.options,r=n.notifyOnChangeProps,o=n.notifyOnChangePropsExclusions;if(!r&&!o)return!0;if("tracked"===r&&!this.trackedProps.length)return!0;var i="tracked"===r?this.trackedProps:r;return Object.keys(t).some((function(n){var r=n,a=t[r]!==e[r],s=null==i?void 0:i.some((function(t){return t===n})),u=null==o?void 0:o.some((function(t){return t===n}));return a&&!u&&(!i||s)}))},n.updateResult=function(t){var e=this.currentResult;if(this.currentResult=this.createResult(this.currentQuery,this.options),this.currentResultState=this.currentQuery.state,this.currentResultOptions=this.options,!(0,m.VS)(this.currentResult,e)){var n={cache:!0};!1!==(null==t?void 0:t.listeners)&&this.shouldNotifyListeners(this.currentResult,e)&&(n.listeners=!0),this.notify((0,d.Z)({},n,t))}},n.updateQuery=function(){var t=this.client.getQueryCache().build(this.client,this.options);if(t!==this.currentQuery){var e=this.currentQuery;this.currentQuery=t,this.currentQueryInitialState=t.state,this.previousQueryResult=this.currentResult,this.hasListeners()&&(null==e||e.removeObserver(this),t.addObserver(this))}},n.onQueryUpdate=function(t){var e={};"success"===t.type?e.onSuccess=!0:"error"!==t.type||(0,y.DV)(t.error)||(e.onError=!0),this.updateResult(e),this.hasListeners()&&this.updateTimers()},n.notify=function(t){var e=this;r.V.batch((function(){t.onSuccess?(null==e.options.onSuccess||e.options.onSuccess(e.currentResult.data),null==e.options.onSettled||e.options.onSettled(e.currentResult.data,null)):t.onError&&(null==e.options.onError||e.options.onError(e.currentResult.error),null==e.options.onSettled||e.options.onSettled(void 0,e.currentResult.error)),t.listeners&&e.listeners.forEach((function(t){t(e.currentResult)})),t.cache&&e.client.getQueryCache().notify({query:e.currentQuery,type:"observerResultsUpdated"})}))},e}(v.l);function w(t,e){return function(t,e){return!(!1===e.enabled||t.state.dataUpdatedAt||"error"===t.state.status&&!1===e.retryOnMount)}(t,e)||t.state.dataUpdatedAt>0&&x(t,e,e.refetchOnMount)}function x(t,e,n){if(!1!==e.enabled){var r="function"==typeof n?n(t):n;return"always"===r||!1!==r&&k(t,e)}return!1}function O(t,e,n,r){return!1!==n.enabled&&(t!==e||!1===r.enabled)&&(!n.suspense||"error"!==t.state.status)&&k(t,n)}function k(t,e){return t.isStaleByTime(e.staleTime)}function S(){var t=!1;return{clearReset:function(){t=!1},reset:function(){t=!0},isReset:function(){return t}}}var P=s.createContext(S()),C=function(){return s.useContext(P)};function j(t,e,n){return function(t,e){var n=s.useRef(!1),o=s.useState(0)[1],i=f(),a=C(),u=i.defaultQueryObserverOptions(t);u.optimisticResults=!0,u.onError&&(u.onError=r.V.batchCalls(u.onError)),u.onSuccess&&(u.onSuccess=r.V.batchCalls(u.onSuccess)),u.onSettled&&(u.onSettled=r.V.batchCalls(u.onSettled)),u.suspense&&("number"!=typeof u.staleTime&&(u.staleTime=1e3),0===u.cacheTime&&(u.cacheTime=1)),(u.suspense||u.useErrorBoundary)&&(a.isReset()||(u.retryOnMount=!1));var c,l,p,d=s.useState((function(){return new e(i,u)}))[0],h=d.getOptimisticResult(u);if(s.useEffect((function(){n.current=!0,a.clearReset();var t=d.subscribe(r.V.batchCalls((function(){n.current&&o((function(t){return t+1}))})));return d.updateResult(),function(){n.current=!1,t()}}),[a,d]),s.useEffect((function(){d.setOptions(u,{listeners:!1})}),[u,d]),u.suspense&&h.isLoading)throw d.fetchOptimistic(u).then((function(t){var e=t.data;null==u.onSuccess||u.onSuccess(e),null==u.onSettled||u.onSettled(e,null)})).catch((function(t){a.clearReset(),null==u.onError||u.onError(t),null==u.onSettled||u.onSettled(void 0,t)}));if(h.isError&&!a.isReset()&&!h.isFetching&&(c=u.suspense,l=u.useErrorBoundary,p=[h.error,d.getCurrentQuery()],"function"==typeof l?l.apply(void 0,p):"boolean"==typeof l?l:c))throw h.error;return"tracked"===u.notifyOnChangeProps&&(h=d.trackResult(h,u)),h}((0,m._v)(t,e,n),b)}},4839:function(t,e,n){"use strict";var r,o=n(7294),i=(r=o)&&"object"==typeof r&&"default"in r?r.default:r;function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var s=!("undefined"==typeof window||!window.document||!window.document.createElement);t.exports=function(t,e,n){if("function"!=typeof t)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof e)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==n&&"function"!=typeof n)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var u,c=[];function l(){u=t(c.map((function(t){return t.props}))),f.canUseDOM?e(u):n&&(u=n(u))}var f=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o.peek=function(){return u},o.rewind=function(){if(o.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var t=u;return u=void 0,c=[],t};var a=o.prototype;return a.UNSAFE_componentWillMount=function(){c.push(this),l()},a.componentDidUpdate=function(){l()},a.componentWillUnmount=function(){var t=c.indexOf(this);c.splice(t,1),l()},a.render=function(){return i.createElement(r,this.props)},o}(o.PureComponent);return a(f,"displayName","SideEffect("+function(t){return t.displayName||t.name||"Component"}(r)+")"),a(f,"canUseDOM",s),f}}},1223:function(t,e,n){"use strict";var r=n(5112),o=n(30),i=n(3070).f,a=r("unscopables"),s=Array.prototype;void 0===s[a]&&i(s,a,{configurable:!0,value:o(null)}),t.exports=function(t){s[a][t]=!0}},647:function(t,e,n){"use strict";var r=n(1702),o=n(7908),i=Math.floor,a=r("".charAt),s=r("".replace),u=r("".slice),c=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,l=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,r,f,p){var d=n+t.length,h=r.length,m=l;return void 0!==f&&(f=o(f),m=c),s(p,m,(function(o,s){var c;switch(a(s,0)){case"$":return"$";case"&":return t;case"`":return u(e,0,n);case"'":return u(e,d);case"<":c=f[u(s,1,-1)];break;default:var l=+s;if(0===l)return o;if(l>h){var p=i(l/10);return 0===p?o:p<=h?void 0===r[p-1]?a(s,1):r[p-1]+a(s,1):o}c=r[l-1]}return void 0===c?"":c}))}},490:function(t,e,n){"use strict";var r=n(5005);t.exports=r("document","documentElement")},7850:function(t,e,n){"use strict";var r=n(111),o=n(4326),i=n(5112)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"===o(t))}},30:function(t,e,n){"use strict";var r,o=n(9670),i=n(6048),a=n(748),s=n(3501),u=n(490),c=n(317),l=n(6200),f="prototype",p="script",d=l("IE_PROTO"),h=function(){},m=function(t){return"<"+p+">"+t+""},g=function(t){t.write(m("")),t.close();var e=t.parentWindow.Object;return t=null,e},v=function(){try{r=new ActiveXObject("htmlfile")}catch(i){}var t,e,n;v="undefined"!=typeof document?document.domain&&r?g(r):(e=c("iframe"),n="java"+p+":",e.style.display="none",u.appendChild(e),e.src=String(n),(t=e.contentWindow.document).open(),t.write(m("document.F=Object")),t.close(),t.F):g(r);for(var o=a.length;o--;)delete v[f][a[o]];return v()};s[d]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(h[f]=o(t),n=new h,h[f]=null,n[d]=t):n=v(),void 0===e?n:i.f(n,e)}},6048:function(t,e,n){"use strict";var r=n(9781),o=n(3353),i=n(3070),a=n(9670),s=n(5656),u=n(1956);e.f=r&&!o?Object.defineProperties:function(t,e){a(t);for(var n,r=s(e),o=u(e),c=o.length,l=0;c>l;)i.f(t,n=o[l++],r[n]);return t}},1956:function(t,e,n){"use strict";var r=n(6324),o=n(748);t.exports=Object.keys||function(t){return r(t,o)}},7066:function(t,e,n){"use strict";var r=n(9670);t.exports=function(){var t=r(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e}},4706:function(t,e,n){"use strict";var r=n(6916),o=n(2597),i=n(7976),a=n(7066),s=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in s||o(t,"flags")||!i(s,t)?e:r(a,t)}},1340:function(t,e,n){"use strict";var r=n(648),o=String;t.exports=function(t){if("Symbol"===r(t))throw TypeError("Cannot convert a Symbol value to a string");return o(t)}},9244:function(t,e,n){"use strict";n(1223)("flatMap")},3792:function(t,e,n){"use strict";n(1223)("flat")},8757:function(t,e,n){"use strict";var r=n(2109),o=n(6916),i=n(1702),a=n(4488),s=n(614),u=n(8554),c=n(7850),l=n(1340),f=n(8173),p=n(4706),d=n(647),h=n(5112),m=n(1913),g=h("replace"),v=TypeError,y=i("".indexOf),b=i("".replace),w=i("".slice),x=Math.max,O=function(t,e,n){return n>t.length?-1:""===e?n:y(t,e,n)};r({target:"String",proto:!0},{replaceAll:function(t,e){var n,r,i,h,k,S,P,C,j,E=a(this),R=0,A=0,L="";if(!u(t)){if((n=c(t))&&(r=l(a(p(t))),!~y(r,"g")))throw v("`.replaceAll` does not allow non-global regexes");if(i=f(t,g))return o(i,t,E,e);if(m&&n)return b(l(E),t,e)}for(h=l(E),k=l(t),(S=s(e))||(e=l(e)),P=k.length,C=x(1,P),R=O(h,k,0);-1!==R;)j=S?l(e(k,R,h)):d(k,h,R,[],void 0,e),L+=w(h,A,R)+j,A=R+P,R=O(h,k,R+C);return An.e(218).then(n.bind(n,2513)),"component---src-pages-index-tsx":()=>Promise.all([n.e(532),n.e(976),n.e(397),n.e(691)]).then(n.bind(n,2050)),"component---src-pages-pages-page-slug-detail-page-slug-detail-page-page-tsx":()=>Promise.all([n.e(532),n.e(976),n.e(397),n.e(476)]).then(n.bind(n,8332)),"component---src-pages-pages-page-slug-detail-page-slug-index-tsx":()=>Promise.all([n.e(532),n.e(976),n.e(397),n.e(638)]).then(n.bind(n,3973)),"component---src-pages-pages-page-slug-index-tsx":()=>Promise.all([n.e(532),n.e(976),n.e(397),n.e(802)]).then(n.bind(n,3298)),"component---src-pages-pages-page-slug-page-page-tsx":()=>Promise.all([n.e(532),n.e(976),n.e(397),n.e(614)]).then(n.bind(n,4983))}},4741:function(t,e,n){t.exports=[{plugin:n(5688),options:{plugins:[],component:"/home/runner/work/woo-website-template/woo-website-template/pwa/src/layout/Layout.tsx"}},{plugin:n(463),options:{plugins:[],useAutoGen:!0,exclude:["**/dev-404-page/**","**/404/**","**/404.html","**/offline-plugin-app-shell-fallback/**"],excludeOptions:{separator:"."},autoGenHomeLabel:"Home"}},{plugin:n(7420),options:{plugins:[]}},{plugin:n(540),options:{plugins:[]}}]},3092:function(t,e,n){const r=n(4741),{getResourceURLsForPathname:o,loadPage:i,loadPageSync:a}=n(1115).jN;e.h=function(t,e,n,s){void 0===e&&(e={});let u=r.map((n=>{if(!n.plugin[t])return;e.getResourceURLsForPathname=o,e.loadPage=i,e.loadPageSync=a;const r=n.plugin[t](e,n.options);return r&&s&&(e=s({args:e,result:r,plugin:n})),r}));return u=u.filter((t=>void 0!==t)),u.length>0?u:n?[n]:[]},e.I=(t,e,n)=>r.reduce(((n,r)=>r.plugin[t]?n.then((()=>r.plugin[t](e,r.options))):n),Promise.resolve())},8299:function(t,e,n){"use strict";n.d(e,{Z:function(){return r}});var r=function(t){return t=t||Object.create(null),{on:function(e,n){(t[e]||(t[e]=[])).push(n)},off:function(e,n){t[e]&&t[e].splice(t[e].indexOf(n)>>>0,1)},emit:function(e,n){(t[e]||[]).slice().map((function(t){t(n)})),(t["*"]||[]).slice().map((function(t){t(e,n)}))}}}()},7802:function(t,e,n){"use strict";n.d(e,{UD:function(){return p},Cj:function(){return h},GA:function(){return d},DS:function(){return f}});var r=n(2098),o=n(3028),i=t=>{if(void 0===t)return t;let[e,n=""]=t.split("?");return n&&(n="?"+n),"/"===e?"/"+n:"/"===e.charAt(e.length-1)?e.slice(0,-1)+n:e+n},a=n(6073);const s=new Map;let u=[];const c=t=>{let e=t;if(-1!==t.indexOf("?")){const[n,r]=t.split("?");e=n+"?"+encodeURIComponent(r)}const n=decodeURIComponent(e);return(0,o.Z)(n,decodeURIComponent("")).split("#")[0]};function l(t){return t.startsWith("/")||t.startsWith("https://")||t.startsWith("http://")?t:new URL(t,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}const f=t=>{u=t},p=t=>{const e=m(t),n=u.map((t=>{let{path:e,matchPath:n}=t;return{path:n,originalPath:e}})),o=(0,r.ei)(n,e);return o?i(o.route.originalPath):null},d=t=>{const e=m(t),n=u.map((t=>{let{path:e,matchPath:n}=t;return{path:n,originalPath:e}})),o=(0,r.ei)(n,e);return o?o.params:{}},h=t=>{const e=c(l(t));if(s.has(e))return s.get(e);const n=(0,a.J)(t);if(n)return h(n.toPath);let r=p(e);return r||(r=m(t)),s.set(e,r),r},m=t=>{let e=c(l(t));return"/index.html"===e&&(e="/"),e=i(e),e}},1082:function(t,e,n){"use strict";n.d(e,{B9:function(){return a},c4:function(){return o.c4}});var r=n(1115),o=(n(2743),n(9679),n(1562)),i=n(7294);n(5893);const a=i.createContext({});let s=null;i.createServerContext&&(s=i.createServerContext("StaticQuery",{}));r.ZP.enqueue},1115:function(t,e,n){"use strict";n.d(e,{uQ:function(){return d},kL:function(){return x},ZP:function(){return S},hs:function(){return P},jN:function(){return k},N1:function(){return O}});var r=n(4578),o=n(907);var i=n(9199),a=n(181);function s(t){return function(t){if(Array.isArray(t))return(0,o.Z)(t)}(t)||(0,i.Z)(t)||(0,a.Z)(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const u=function(t){if("undefined"==typeof document)return!1;const e=document.createElement("link");try{if(e.relList&&"function"==typeof e.relList.supports)return e.relList.supports(t)}catch(n){return!1}return!1}("prefetch")?function(t,e){return new Promise(((n,r)=>{if("undefined"==typeof document)return void r();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",t),Object.keys(e).forEach((t=>{o.setAttribute(t,e[t])})),o.onload=n,o.onerror=r;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)}))}:function(t){return new Promise(((e,n)=>{const r=new XMLHttpRequest;r.open("GET",t,!0),r.onload=()=>{200===r.status?e():n()},r.send(null)}))},c={};var l=function(t,e){return new Promise((n=>{c[t]?n():u(t,e).then((()=>{n(),c[t]=!0})).catch((()=>{}))}))},f=n(8299),p=n(7802);const d={Error:"error",Success:"success"},h=t=>{const[e,n]=t.split("?");var r;return"/page-data/"+("/"===e?"index":(r="/"===(r=e)[0]?r.slice(1):r).endsWith("/")?r.slice(0,-1):r)+"/page-data.json"+(n?"?"+n:"")};function m(t,e){return void 0===e&&(e="GET"),new Promise((n=>{const r=new XMLHttpRequest;r.open(e,t,!0),r.onreadystatechange=()=>{4==r.readyState&&n(r)},r.send(null)}))}const g=/bot|crawler|spider|crawling/i,v=function(t,e,n){void 0===e&&(e=null);const r={componentChunkName:t.componentChunkName,path:t.path,webpackCompilationHash:t.webpackCompilationHash,matchPath:t.matchPath,staticQueryHashes:t.staticQueryHashes,getServerDataError:t.getServerDataError};return{component:e,head:n,json:t.result,page:r}};let y=function(){function t(t,e){this.inFlightNetworkRequests=new Map,this.pageDb=new Map,this.inFlightDb=new Map,this.staticQueryDb={},this.pageDataDb=new Map,this.partialHydrationDb=new Map,this.isPrefetchQueueRunning=!1,this.prefetchQueued=[],this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=t,(0,p.DS)(e)}var e=t.prototype;return e.memoizedGet=function(t){let e=this.inFlightNetworkRequests.get(t);return e||(e=m(t,"GET"),this.inFlightNetworkRequests.set(t,e)),e.then((e=>(this.inFlightNetworkRequests.delete(t),e))).catch((e=>{throw this.inFlightNetworkRequests.delete(t),e}))},e.setApiRunner=function(t){this.apiRunner=t,this.prefetchDisabled=t("disableCorePrefetching").some((t=>t))},e.fetchPageDataJson=function(t){const{pagePath:e,retries:n=0}=t,r=h(e);return this.memoizedGet(r).then((r=>{const{status:o,responseText:i}=r;if(200===o)try{const n=JSON.parse(i);if(void 0===n.path)throw new Error("not a valid pageData response");const r=e.split("?")[1];return r&&!n.path.includes(r)&&(n.path+="?"+r),Object.assign(t,{status:d.Success,payload:n})}catch(a){}return 404===o||200===o?"/404.html"===e||"/500.html"===e?Object.assign(t,{status:d.Error}):this.fetchPageDataJson(Object.assign(t,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPageDataJson(Object.assign(t,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPageDataJson(Object.assign(t,{retries:n+1})):Object.assign(t,{status:d.Error})}))},e.fetchPartialHydrationJson=function(t){const{pagePath:e,retries:n=0}=t,r=h(e).replace(".json","-rsc.json");return this.memoizedGet(r).then((r=>{const{status:o,responseText:i}=r;if(200===o)try{return Object.assign(t,{status:d.Success,payload:i})}catch(a){}return 404===o||200===o?"/404.html"===e||"/500.html"===e?Object.assign(t,{status:d.Error}):this.fetchPartialHydrationJson(Object.assign(t,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPartialHydrationJson(Object.assign(t,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPartialHydrationJson(Object.assign(t,{retries:n+1})):Object.assign(t,{status:d.Error})}))},e.loadPageDataJson=function(t){const e=(0,p.Cj)(t);if(this.pageDataDb.has(e)){const t=this.pageDataDb.get(e);return Promise.resolve(t)}return this.fetchPageDataJson({pagePath:e}).then((t=>(this.pageDataDb.set(e,t),t)))},e.loadPartialHydrationJson=function(t){const e=(0,p.Cj)(t);if(this.partialHydrationDb.has(e)){const t=this.partialHydrationDb.get(e);return Promise.resolve(t)}return this.fetchPartialHydrationJson({pagePath:e}).then((t=>(this.partialHydrationDb.set(e,t),t)))},e.findMatchPath=function(t){return(0,p.UD)(t)},e.loadPage=function(t){const e=(0,p.Cj)(t);if(this.pageDb.has(e)){const t=this.pageDb.get(e);return t.error?{error:t.error,status:t.status}:Promise.resolve(t.payload)}if(this.inFlightDb.has(e))return this.inFlightDb.get(e);let n;return n=Promise.all([this.loadAppData(),this.loadPageDataJson(e)]).then((t=>{const n=t[1];if(n.status===d.Error)return{status:d.Error};let r=n.payload;const{componentChunkName:o,staticQueryHashes:i=[]}=r,a={},s=Promise.all([this.loadComponent(o),this.loadComponent(o,"head")]).then((e=>{let o,[i,s]=e;return a.createdAt=new Date,!i||i instanceof Error?(a.status=d.Error,a.error=i):(a.status=d.Success,!0===n.notFound&&(a.notFound=!0),r=Object.assign(r,{webpackCompilationHash:t[0]?t[0].webpackCompilationHash:""}),o=v(r,i,s)),o})),u=Promise.all(i.map((t=>{if(this.staticQueryDb[t]){const e=this.staticQueryDb[t];return{staticQueryHash:t,jsonPayload:e}}return this.memoizedGet("/page-data/sq/d/"+t+".json").then((e=>{const n=JSON.parse(e.responseText);return{staticQueryHash:t,jsonPayload:n}})).catch((()=>{throw new Error("We couldn't load \"/page-data/sq/d/"+t+'.json"')}))}))).then((t=>{const e={};return t.forEach((t=>{let{staticQueryHash:n,jsonPayload:r}=t;e[n]=r,this.staticQueryDb[n]=r})),e}));return Promise.all([s,u]).then((t=>{let n,[r,o]=t;return r&&(n={...r,staticQueryResults:o},a.payload=n,f.Z.emit("onPostLoadPageResources",{page:n,pageResources:n})),this.pageDb.set(e,a),a.error?{error:a.error,status:a.status}:n})).catch((t=>({error:t,status:d.Error})))})),n.then((()=>{this.inFlightDb.delete(e)})).catch((t=>{throw this.inFlightDb.delete(e),t})),this.inFlightDb.set(e,n),n},e.loadPageSync=function(t,e){void 0===e&&(e={});const n=(0,p.Cj)(t);if(this.pageDb.has(n)){var r;const t=this.pageDb.get(n);if(t.payload)return t.payload;if(null!==(r=e)&&void 0!==r&&r.withErrorDetails)return{error:t.error,status:t.status}}},e.shouldPrefetch=function(t){return!!(()=>{if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0})()&&((!navigator.userAgent||!g.test(navigator.userAgent))&&!this.pageDb.has(t))},e.prefetch=function(t){if(!this.shouldPrefetch(t))return{then:t=>t(!1),abort:()=>{}};if(this.prefetchTriggered.has(t))return{then:t=>t(!0),abort:()=>{}};const e={resolve:null,reject:null,promise:null};e.promise=new Promise(((t,n)=>{e.resolve=t,e.reject=n})),this.prefetchQueued.push([t,e]);const n=new AbortController;return n.signal.addEventListener("abort",(()=>{const e=this.prefetchQueued.findIndex((e=>{let[n]=e;return n===t}));-1!==e&&this.prefetchQueued.splice(e,1)})),this.isPrefetchQueueRunning||(this.isPrefetchQueueRunning=!0,setTimeout((()=>{this._processNextPrefetchBatch()}),3e3)),{then:(t,n)=>e.promise.then(t,n),abort:n.abort.bind(n)}},e._processNextPrefetchBatch=function(){(window.requestIdleCallback||(t=>setTimeout(t,0)))((()=>{const t=this.prefetchQueued.splice(0,4),e=Promise.all(t.map((t=>{let[e,n]=t;return this.prefetchTriggered.has(e)||(this.apiRunner("onPrefetchPathname",{pathname:e}),this.prefetchTriggered.add(e)),this.prefetchDisabled?n.resolve(!1):this.doPrefetch((0,p.Cj)(e)).then((()=>{this.prefetchCompleted.has(e)||(this.apiRunner("onPostPrefetchPathname",{pathname:e}),this.prefetchCompleted.add(e)),n.resolve(!0)}))})));this.prefetchQueued.length?e.then((()=>{setTimeout((()=>{this._processNextPrefetchBatch()}),3e3)})):this.isPrefetchQueueRunning=!1}))},e.doPrefetch=function(t){const e=h(t);return l(e,{crossOrigin:"anonymous",as:"fetch"}).then((()=>this.loadPageDataJson(t)))},e.hovering=function(t){this.loadPage(t)},e.getResourceURLsForPathname=function(t){const e=(0,p.Cj)(t),n=this.pageDataDb.get(e);if(n){const t=v(n.payload);return[].concat(s(b(t.page.componentChunkName)),[h(e)])}return null},e.isPageNotFound=function(t){const e=(0,p.Cj)(t),n=this.pageDb.get(e);return!n||n.notFound},e.loadAppData=function(t){return void 0===t&&(t=0),this.memoizedGet("/page-data/app-data.json").then((e=>{const{status:n,responseText:r}=e;let o;if(200!==n&&t<3)return this.loadAppData(t+1);if(200===n)try{const t=JSON.parse(r);if(void 0===t.webpackCompilationHash)throw new Error("not a valid app-data response");o=t}catch(i){}return o}))},t}();const b=t=>(window.___chunkMapping[t]||[]).map((t=>""+t));let w,x=function(t){function e(e,n,r){var o;return o=t.call(this,(function(t,n){if(void 0===n&&(n="components"),!e[n="components"][t])throw new Error("We couldn't find the correct component chunk with the name \""+t+'"');return e[n][t]().catch((t=>t))}),n)||this,r&&o.pageDataDb.set((0,p.Cj)(r.path),{pagePath:r.path,payload:r,status:"success"}),o}(0,r.Z)(e,t);var n=e.prototype;return n.doPrefetch=function(e){return t.prototype.doPrefetch.call(this,e).then((t=>{if(t.status!==d.Success)return Promise.resolve();const e=t.payload,n=e.componentChunkName,r=b(n);return Promise.all(r.map(l)).then((()=>e))}))},n.loadPageDataJson=function(e){return t.prototype.loadPageDataJson.call(this,e).then((t=>t.notFound?m(e,"HEAD").then((e=>200===e.status?{status:d.Error}:t)):t))},n.loadPartialHydrationJson=function(e){return t.prototype.loadPartialHydrationJson.call(this,e).then((t=>t.notFound?m(e,"HEAD").then((e=>200===e.status?{status:d.Error}:t)):t))},e}(y);const O=t=>{w=t},k={enqueue:t=>w.prefetch(t),getResourceURLsForPathname:t=>w.getResourceURLsForPathname(t),loadPage:t=>w.loadPage(t),loadPageSync:function(t,e){return void 0===e&&(e={}),w.loadPageSync(t,e)},prefetch:t=>w.prefetch(t),isPageNotFound:t=>w.isPageNotFound(t),hovering:t=>w.hovering(t),loadAppData:()=>w.loadAppData()};var S=k;function P(){return w?w.staticQueryDb:{}}},4779:function(t,e,n){"use strict";n.d(e,{Z:function(){return w}});var r=n(7294),o=n(5697),i=n.n(o),a=n(3092),s=n(7802),u=n(1082),c=n(9499),l=n(4941);function f(t){let{children:e,callback:n}=t;return(0,r.useEffect)((()=>{n()})),e}const p=["link","meta","style","title","base","noscript","script"];function d(t,e){if(t instanceof HTMLElement&&e instanceof HTMLElement){const n=e.getAttribute("nonce");if(n&&!t.getAttribute("nonce")){const r=e.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=n,n===t.nonce&&t.isEqualNode(r)}}return t.isEqualNode(e)}var h=n(5893);const m=document.createElement("div"),g=()=>{const t=document.querySelectorAll("[data-gatsby-head]");for(const e of t)e.parentNode.removeChild(e)},v=()=>{var t;const e=[],n=new Map;for(const c of m.childNodes){var r,o;const t=c.nodeName.toLowerCase(),a=null===(r=c.attributes)||void 0===r||null===(o=r.id)||void 0===o?void 0:o.value;if(p.includes(t)){let t=c.cloneNode(!0);if(t.setAttribute("data-gatsby-head",!0),"script"===t.nodeName.toLowerCase()){const e=document.createElement("script");for(const n of t.attributes)e.setAttribute(n.name,n.value);e.innerHTML=t.innerHTML,t=e}if(a)if(n.has(a)){var i;const r=n.get(a);null===(i=e[r].parentNode)||void 0===i||i.removeChild(e[r]),e[r]=t}else e.push(t),n.set(a,e.length-1);else e.push(t)}else;}const a=document.querySelectorAll("[data-gatsby-head]");var s;if(0===a.length)return void(s=document.head).append.apply(s,e);const u=[];!function(t){let{oldNodes:e,newNodes:n,onStale:r,onNew:o}=t;for(const i of e){const t=n.findIndex((t=>d(t,i)));-1===t?r(i):n.splice(t,1)}for(const i of n)o(i)}({oldNodes:a,newNodes:e,onStale:t=>t.parentNode.removeChild(t),onNew:t=>u.push(t)}),(t=document.head).append.apply(t,u)};function y(t){let{pageComponent:e,staticQueryResults:n,pageComponentProps:o}=t;(0,r.useEffect)((()=>{if(null!=e&&e.Head){!function(t){if("function"!=typeof t)throw new Error('Expected "Head" export to be a function got "'+typeof t+'".')}(e.Head);const{render:r}=(0,l.U)(),i=e.Head;r((0,h.jsx)(f,{callback:v,children:(0,h.jsx)(u.B9.Provider,{value:n,children:(0,h.jsx)(c.LocationProvider,{children:(0,h.jsx)(i,{...(t=o,{location:{pathname:t.location.pathname},params:t.params,data:t.data||{},pageContext:t.pageContext})})})})}),m)}var t;return()=>{g()}}))}function b(t){const e={...t,params:{...(0,s.GA)(t.location.pathname),...t.pageResources.json.pageContext.__params}};let n;var o;n=t.pageResources.partialHydration?t.pageResources.partialHydration:(0,r.createElement)((o=t.pageResources.component)&&o.default||o,{...e,key:t.path||t.pageResources.page.path});y({pageComponent:t.pageResources.head,staticQueryResults:t.pageResources.staticQueryResults,pageComponentProps:e});return(0,a.h)("wrapPageElement",{element:n,props:e},n,(t=>{let{result:n}=t;return{element:n,props:e}})).pop()}b.propTypes={location:i().object.isRequired,pageResources:i().object.isRequired,data:i().object,pageContext:i().object.isRequired};var w=b},5824:function(t,e,n){"use strict";var r=n(4578),o=n(3092),i=n(7294),a=n(9499),s=n(9679),u=n(1082),c=n(1115),l=n(6073),f=n(8299);const p={id:"gatsby-announcer",style:{position:"absolute",top:0,width:1,height:1,padding:0,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},"aria-live":"assertive","aria-atomic":"true"};var d=n(2393),h=n(1562),m=n(5893);function g(t){const e=(0,l.J)(t),{hash:n,search:r}=window.location;return null!=e&&(window.___replace(e.toPath+r+n),!0)}let v="";window.addEventListener("unhandledrejection",(t=>{/loading chunk \d* failed./i.test(t.reason)&&v&&(window.location.pathname=v)}));const y=(t,e)=>{g(t.pathname)||(v=t.pathname,(0,o.h)("onPreRouteUpdate",{location:t,prevLocation:e}))},b=(t,e)=>{g(t.pathname)||(0,o.h)("onRouteUpdate",{location:t,prevLocation:e})},w=function(t,e){if(void 0===e&&(e={}),"number"==typeof t)return void d.V5.navigate(t);const{pathname:n,search:r,hash:i}=(0,h.cP)(t),s=(0,l.J)(n);if(s&&(t=s.toPath+r+i),window.___swUpdated)return void(window.location=n+r+i);const u=setTimeout((()=>{f.Z.emit("onDelayedLoadPageResources",{pathname:n}),(0,o.h)("onRouteUpdateDelayed",{location:window.location})}),1e3);c.ZP.loadPage(n+r).then((o=>{if(!o||o.status===c.uQ.Error)return window.history.replaceState({},"",location.href),window.location=n,void clearTimeout(u);o&&o.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),window.location=n+r+i),(0,a.navigate)(t,e),clearTimeout(u)}))};function x(t,e){let{location:n}=e;const{pathname:r,hash:i}=n,a=(0,o.h)("shouldUpdateScroll",{prevRouterProps:t,pathname:r,routerProps:{location:n},getSavedScrollPosition:t=>[0,this._stateStorage.read(t,t.key)]});if(a.length>0)return a[a.length-1];if(t){const{location:{pathname:e}}=t;if(e===r)return i?decodeURI(i.slice(1)):[0,0]}return!0}let O=function(t){function e(e){var n;return(n=t.call(this,e)||this).announcementRef=i.createRef(),n}(0,r.Z)(e,t);var n=e.prototype;return n.componentDidUpdate=function(t,e){requestAnimationFrame((()=>{let t="new page at "+this.props.location.pathname;document.title&&(t=document.title);const e=document.querySelectorAll("#gatsby-focus-wrapper h1");e&&e.length&&(t=e[0].textContent);const n="Navigated to "+t;if(this.announcementRef.current){this.announcementRef.current.innerText!==n&&(this.announcementRef.current.innerText=n)}}))},n.render=function(){return(0,m.jsx)("div",{...p,ref:this.announcementRef})},e}(i.Component);const k=(t,e)=>{var n,r;return t.href!==e.href||(null==t||null===(n=t.state)||void 0===n?void 0:n.key)!==(null==e||null===(r=e.state)||void 0===r?void 0:r.key)};let S=function(t){function e(e){var n;return n=t.call(this,e)||this,y(e.location,null),n}(0,r.Z)(e,t);var n=e.prototype;return n.componentDidMount=function(){b(this.props.location,null)},n.shouldComponentUpdate=function(t){return!!k(t.location,this.props.location)&&(y(this.props.location,t.location),!0)},n.componentDidUpdate=function(t){k(t.location,this.props.location)&&b(this.props.location,t.location)},n.render=function(){return(0,m.jsxs)(i.Fragment,{children:[this.props.children,(0,m.jsx)(O,{location:location})]})},e}(i.Component);var P=n(4779),C=n(5418);function j(t,e){for(var n in t)if(!(n in e))return!0;for(var r in e)if(t[r]!==e[r])return!0;return!1}var E=function(t){function e(e){var n;n=t.call(this)||this;const{location:r,pageResources:o}=e;return n.state={location:{...r},pageResources:o||c.ZP.loadPageSync(r.pathname+r.search,{withErrorDetails:!0})},n}(0,r.Z)(e,t),e.getDerivedStateFromProps=function(t,e){let{location:n}=t;if(e.location.href!==n.href){return{pageResources:c.ZP.loadPageSync(n.pathname+n.search,{withErrorDetails:!0}),location:{...n}}}return{location:{...n}}};var n=e.prototype;return n.loadResources=function(t){c.ZP.loadPage(t).then((e=>{e&&e.status!==c.uQ.Error?this.setState({location:{...window.location},pageResources:e}):(window.history.replaceState({},"",location.href),window.location=t)}))},n.shouldComponentUpdate=function(t,e){return e.pageResources?this.state.pageResources!==e.pageResources||(this.state.pageResources.component!==e.pageResources.component||(this.state.pageResources.json!==e.pageResources.json||(!(this.state.location.key===e.location.key||!e.pageResources.page||!e.pageResources.page.matchPath&&!e.pageResources.page.path)||function(t,e,n){return j(t.props,e)||j(t.state,n)}(this,t,e)))):(this.loadResources(t.location.pathname+t.location.search),!1)},n.render=function(){return this.props.children(this.state)},e}(i.Component),R=n(3028),A=JSON.parse('[{"path":"/pages/[pageSlug]/[detailPageSlug]/DetailPagePage/","matchPath":"/pages/:pageSlug/:detailPageSlug/DetailPagePage"},{"path":"/pages/[pageSlug]/PagePage/","matchPath":"/pages/:pageSlug/PagePage"},{"path":"/pages/[pageSlug]/[detailPageSlug]/","matchPath":"/pages/:pageSlug/:detailPageSlug"},{"path":"/pages/[pageSlug]/","matchPath":"/pages/:pageSlug"}]'),L=n(4941);const N=new c.kL(C,A,window.pageData);(0,c.N1)(N),N.setApiRunner(o.h);const{render:T,hydrate:M}=(0,L.U)();window.asyncRequires=C,window.___emitter=f.Z,window.___loader=c.jN,d.V5.listen((t=>{t.location.action=t.action})),window.___push=t=>w(t,{replace:!1}),window.___replace=t=>w(t,{replace:!0}),window.___navigate=(t,e)=>w(t,e);const D="gatsby-reload-compilation-hash-match";(0,o.I)("onClientEntry").then((()=>{(0,o.h)("registerServiceWorker").filter(Boolean).length>0&&n(9939);const t=t=>(0,m.jsx)(a.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"},children:(0,m.jsx)(P.Z,{...t})}),e=i.createContext({});let l=function(t){function n(){return t.apply(this,arguments)||this}return(0,r.Z)(n,t),n.prototype.render=function(){const{children:t}=this.props;return(0,m.jsx)(a.Location,{children:n=>{let{location:r}=n;return(0,m.jsx)(E,{location:r,children:n=>{let{pageResources:r,location:o}=n;if(r.partialHydration)return(0,m.jsx)(e.Provider,{value:{pageResources:r,location:o},children:t});{const n=(0,c.hs)();return(0,m.jsx)(u.B9.Provider,{value:n,children:(0,m.jsx)(e.Provider,{value:{pageResources:r,location:o},children:t})})}}})}})},n}(i.Component),f=function(n){function o(){return n.apply(this,arguments)||this}return(0,r.Z)(o,n),o.prototype.render=function(){return(0,m.jsx)(e.Consumer,{children:e=>{let{pageResources:n,location:r}=e;return(0,m.jsx)(S,{location:r,children:(0,m.jsx)(s.$C,{location:r,shouldUpdateScroll:x,children:(0,m.jsx)(a.Router,{basepath:"",location:r,id:"gatsby-focus-wrapper",children:(0,m.jsx)(t,{path:"/404.html"===n.page.path||"/500.html"===n.page.path?(0,R.Z)(r.pathname,""):encodeURI((n.page.matchPath||n.page.path).split("?")[0]),...this.props,location:r,pageResources:n,...n.json})})})})}})},o}(i.Component);const{pagePath:p,location:d}=window;p&&""+p!==d.pathname+(p.includes("?")?d.search:"")&&!(N.findMatchPath((0,R.Z)(d.pathname,""))||p.match(/^\/(404|500)(\/?|.html)$/)||p.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&(0,a.navigate)(""+p+(p.includes("?")?"":d.search)+d.hash,{replace:!0});const h=()=>{try{return sessionStorage}catch{return null}};c.jN.loadPage(d.pathname+d.search).then((t=>{var e;const n=h();if(null!=t&&null!==(e=t.page)&&void 0!==e&&e.webpackCompilationHash&&t.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),n)){if(!("1"===n.getItem(D)))return n.setItem(D,"1"),void window.location.reload(!0)}if(n&&n.removeItem(D),!t||t.status===c.uQ.Error){const e="page resources for "+d.pathname+" not found. Not rendering React";if(t&&t.error)throw console.error(e),t.error;throw new Error(e)}const r=(0,o.h)("wrapRootElement",{element:(0,m.jsx)(f,{})},(0,m.jsx)(f,{}),(t=>{let{result:e}=t;return{element:e}})).pop(),a=function(){const t=i.useRef(!1);return i.useEffect((()=>{t.current||(t.current=!0,performance.mark&&performance.mark("onInitialClientRender"),(0,o.h)("onInitialClientRender"))}),[]),(0,m.jsx)(l,{children:r})},s=document.getElementById("gatsby-focus-wrapper");let u=T;s&&s.children.length&&(u=M);const p=(0,o.h)("replaceHydrateFunction",void 0,u)[0];function g(){const t="undefined"!=typeof window?document.getElementById("___gatsby"):null;p((0,m.jsx)(a,{}),t)}const v=document;if("complete"===v.readyState||"loading"!==v.readyState&&!v.documentElement.doScroll)setTimeout((function(){g()}),0);else{const t=function(){v.removeEventListener("DOMContentLoaded",t,!1),window.removeEventListener("load",t,!1),g()};v.addEventListener("DOMContentLoaded",t,!1),window.addEventListener("load",t,!1)}}))}))},224:function(t,e,n){"use strict";n.r(e);var r=n(7294),o=n(1115),i=n(4779);e.default=t=>{let{location:e}=t;const n=o.ZP.loadPageSync(e.pathname);return n?r.createElement(i.Z,{location:e,pageResources:n,...n.json}):null}},2743:function(t,e,n){var r;t.exports=(r=n(224))&&r.default||r},4941:function(t,e,n){"use strict";n.d(e,{U:function(){return o}});const r=new WeakMap;function o(){let t,e;{const o=n(745);t=(t,e)=>{let n=r.get(e);n||r.set(e,n=o.createRoot(e)),n.render(t)},e=(t,e)=>o.hydrateRoot(e,t)}return{render:t,hydrate:e}}},9712:function(t,e){e.O=t=>t},6073:function(t,e,n){"use strict";n.d(e,{J:function(){return i}});const r=new Map,o=new Map;function i(t){let e=r.get(t);return e||(e=o.get(t.toLowerCase())),e}[].forEach((t=>{t.ignoreCase?o.set(t.fromPath,t):r.set(t.fromPath,t)}))},9939:function(t,e,n){"use strict";n.r(e);var r=n(3092);"https:"!==window.location.protocol&&"localhost"!==window.location.hostname?console.error("Service workers can only be used over HTTPS, or on localhost for development"):"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js").then((function(t){t.addEventListener("updatefound",(()=>{(0,r.h)("onServiceWorkerUpdateFound",{serviceWorker:t});const e=t.installing;console.log("installingWorker",e),e.addEventListener("statechange",(()=>{switch(e.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,(0,r.h)("onServiceWorkerUpdateReady",{serviceWorker:t}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),(0,r.h)("onServiceWorkerInstalled",{serviceWorker:t}));break;case"redundant":console.error("The installing service worker became redundant."),(0,r.h)("onServiceWorkerRedundant",{serviceWorker:t});break;case"activated":(0,r.h)("onServiceWorkerActive",{serviceWorker:t})}}))}))})).catch((function(t){console.error("Error during service worker registration:",t)}))},3028:function(t,e,n){"use strict";function r(t,e){return void 0===e&&(e=""),e?t===e?"/":t.startsWith(e+"/")?t.slice(e.length):t:t}n.d(e,{Z:function(){return r}})},7420:function(t,e,n){"use strict";n.r(e),n.d(e,{wrapRootElement:function(){return a}});n(7294);var r=n(686),o=n(4807),i=n(5893);const a=t=>{let{element:e}=t;const n=new r.QueryClient({defaultOptions:{queries:{refetchOnWindowFocus:!1,refetchOnmount:!1,refetchOnReconnect:!1,retry:1,retryDelay:2e3,staleTime:36e5}}});return(0,i.jsxs)(r.QueryClientProvider,{client:n,children:[e,(0,i.jsx)(o.ReactQueryDevtools,{})]})}},4272:function(t,e,n){"use strict";var r=n(4836);e.__esModule=!0,e.AppProviders=void 0;var o=r(n(7294)),i=n(2623),a=n(970);e.AppProviders=function(t){var e=t.element,n=t.pluginOptions,r=n.defaultCrumb,s=n.useClassNames,u=n.useAutoGen,c=n.usePathPrefix;return o.default.createElement(a.OptionsProvider,{useAutoGen:u||!1,useClassNames:s||!1,usePathPrefix:c||null},o.default.createElement(i.BreadcrumbProvider,{defaultCrumb:r||null},e))}},2623:function(t,e,n){"use strict";var r=n(4836);e.__esModule=!0,e.BreadcrumbConsumer=e.BreadcrumbProvider=e.BreadcrumbContext=void 0;var o=r(n(434)),i=r(n(7294)),a=r(n(5697)),s=i.default.createContext("Breadcrumb");e.BreadcrumbContext=s;var u=function(t){var e=t.children,n=t.defaultCrumb,r=i.default.useState(n?[(0,o.default)({pathname:n.location.pathname},n)]:[]),a=r[0],u=r[1],c={crumbs:a,updateCrumbs:function(t){var e=t.location,n=t.crumbLabel,r=t.crumbSeparator,i=t.crumbStyle,s=t.crumbActiveStyle,c=a.findIndex((function(t){return t.pathname===e.pathname}));c>-1&&c{const{data:e}=await this._send(this._instance,"GET",t);return e},this.getDirectoryItems=async t=>{const{data:e}=await this._send(this._instance,"GET",t);if(!e)return[];const n=e.filter((t=>t.name.includes(".md")));return null==n?void 0:n.map((t=>({href:t.name.replace(".md",""),name:t.name.replace("_"," ").replace(".md","")})))},this._instance=t,this._send=e},u=function(){function t(){this.Send=(t,e,n,r,o)=>{var i,s,u,c,l,f;const p=JSON.stringify(r);switch(e){case"GET":const e=t.get(n);return e.catch((t=>a.ZP.error(t.message))),e;case"POST":return a.ZP.promise(t.post(n,p),{loading:null!==(i=null==o?void 0:o.loading)&&void 0!==i?i:"Creating item...",success:null!==(s=null==o?void 0:o.success)&&void 0!==s?s:"Succesfully created item",error:t=>t.message});case"PUT":return a.ZP.promise(t.put(n,p),{loading:null!==(u=null==o?void 0:o.loading)&&void 0!==u?u:"Updating item...",success:null!==(c=null==o?void 0:o.success)&&void 0!==c?c:"Succesfully updated item",error:t=>t.message});case"DELETE":return a.ZP.promise(t.delete(n),{loading:null!==(l=null==o?void 0:o.loading)&&void 0!==l?l:"Deleting item...",success:null!==(f=null==o?void 0:o.success)&&void 0!==f?f:"Succesfully deleted item",error:t=>t.message})}}}return(0,r.Z)(t,[{key:"gitHubClient",get:function(){return i().create({baseURL:"https://api.github.com/repos/ConductionNL/woo-website-template/contents",headers:{Accept:"application/vnd.github.html"}})}},{key:"GitHub",get:function(){return new s(this.gitHubClient,this.Send)}}]),t}()},1529:function(t,e,n){"use strict";n.d(e,{H:function(){return a}});var r=n(7294),o=n(686),i=n(7177);const a=()=>{const t=r.useContext(i.Z);return{getContent:e=>(0,o.useQuery)(["contents",e],(()=>null==t?void 0:t.GitHub.getContent(e)),{onError:t=>{console.warn(t.message)}}),getDirectoryItems:e=>(0,o.useQuery)(["directory-items",e],(()=>null==t?void 0:t.GitHub.getDirectoryItems(e)),{onError:t=>{console.warn(t.message)}})}}},2856:function(t,e,n){"use strict";n.d(e,{O:function(){return o}});var r=n(7294);const o=()=>{const[t,e]=r.useState([]);r.useEffect((()=>{const t='[{"name": "Documentatie", "location": "/docs"}]';try{const n=JSON.parse(t);e(n)}catch{console.warn("Something went wrong parsing the GitHub directories.")}}),[]);const n=t=>t.replace("-"," ");return{directories:t,getSlugFromName:t=>t.replace(" ","-"),getDirectoryReadMeLocation:e=>{const r=t.find((t=>t.name===n(e)));return r?r.location+"/README.md":""},getDetailMdLocation:(e,r)=>{const o=t.find((t=>t.name===n(e)));return o?o.location+"/"+n(r)+".md":""}}}},8890:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return dn}});var r=n(7294),o=n(1002);function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=n(3144);function s(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}var u=n(9611);function c(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&&(0,u.Z)(t,e)}function l(t,e){if(e&&("object"===(0,o.Z)(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return s(t)}function f(t){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},f(t)}var p=n(9142);function d(t,e,n){return(e=(0,p.Z)(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var h=n(9199),m=n(181);function g(t){return function(t){if(Array.isArray(t))return t}(t)||(0,h.Z)(t)||(0,m.Z)(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function y(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};i(this,t),this.init(e,n)}return(0,a.Z)(t,[{key:"init",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=e.prefix||"i18next:",this.logger=t||b,this.options=e,this.debug=e.debug}},{key:"setDebug",value:function(t){this.debug=t}},{key:"log",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),r=1;r-1?t.replace(/###/g,"."):t}function o(){return!t||"string"==typeof t}for(var i="string"!=typeof e?[].concat(e):e.split(".");i.length>1;){if(o())return{};var a=r(i.shift());!t[a]&&n&&(t[a]=new n),t=Object.prototype.hasOwnProperty.call(t,a)?t[a]:{}}return o()?{}:{obj:t,k:r(i.shift())}}function C(t,e,n){var r=P(t,e,Object);r.obj[r.k]=n}function j(t,e){var n=P(t,e),r=n.obj,o=n.k;if(r)return r[o]}function E(t,e,n){var r=j(t,n);return void 0!==r?r:j(e,n)}function R(t,e,n){for(var r in e)"__proto__"!==r&&"constructor"!==r&&(r in t?"string"==typeof t[r]||t[r]instanceof String||"string"==typeof e[r]||e[r]instanceof String?n&&(t[r]=e[r]):R(t[r],e[r],n):t[r]=e[r]);return t}function A(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var L={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function N(t){return"string"==typeof t?t.replace(/[&<>"'\/]/g,(function(t){return L[t]})):t}var T="undefined"!=typeof window&&window.navigator&&void 0===window.navigator.userAgentData&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,M=[" ",",","?","!",";"];function D(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function I(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:".";if(t){if(t[e])return t[e];for(var r=e.split(n),o=t,i=0;ii+a;)a++,u=o[s=r.slice(i,i+a).join(n)];if(void 0===u)return;if(null===u)return null;if(e.endsWith(s)){if("string"==typeof u)return u;if(s&&"string"==typeof u[s])return u[s]}var c=r.slice(i+a).join(n);return c?_(u,c,n):void 0}o=o[r[i]]}return o}}var U=function(t){c(n,t);var e=F(n);function n(t){var r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return i(this,n),r=e.call(this),T&&O.call(s(r)),r.data=t||{},r.options=o,void 0===r.options.keySeparator&&(r.options.keySeparator="."),void 0===r.options.ignoreJSONStructure&&(r.options.ignoreJSONStructure=!0),r}return(0,a.Z)(n,[{key:"addNamespaces",value:function(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}},{key:"removeNamespaces",value:function(t){var e=this.options.ns.indexOf(t);e>-1&&this.options.ns.splice(e,1)}},{key:"getResource",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=void 0!==r.keySeparator?r.keySeparator:this.options.keySeparator,i=void 0!==r.ignoreJSONStructure?r.ignoreJSONStructure:this.options.ignoreJSONStructure,a=[t,e];n&&"string"!=typeof n&&(a=a.concat(n)),n&&"string"==typeof n&&(a=a.concat(o?n.split(o):n)),t.indexOf(".")>-1&&(a=t.split("."));var s=j(this.data,a);return s||!i||"string"!=typeof n?s:_(this.data&&this.data[t]&&this.data[t][e],n,o)}},{key:"addResource",value:function(t,e,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},i=this.options.keySeparator;void 0===i&&(i=".");var a=[t,e];n&&(a=a.concat(i?n.split(i):n)),t.indexOf(".")>-1&&(r=e,e=(a=t.split("."))[1]),this.addNamespaces(e),C(this.data,a,r),o.silent||this.emit("added",t,e,n,r)}},{key:"addResources",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var o in n)"string"!=typeof n[o]&&"[object Array]"!==Object.prototype.toString.apply(n[o])||this.addResource(t,e,o,n[o],{silent:!0});r.silent||this.emit("added",t,e,n)}},{key:"addResourceBundle",value:function(t,e,n,r,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},a=[t,e];t.indexOf(".")>-1&&(r=n,n=e,e=(a=t.split("."))[1]),this.addNamespaces(e);var s=j(this.data,a)||{};r?R(s,n,o):s=I(I({},s),n),C(this.data,a,s),i.silent||this.emit("added",t,e,n)}},{key:"removeResourceBundle",value:function(t,e){this.hasResourceBundle(t,e)&&delete this.data[t][e],this.removeNamespaces(e),this.emit("removed",t,e)}},{key:"hasResourceBundle",value:function(t,e){return void 0!==this.getResource(t,e)}},{key:"getResourceBundle",value:function(t,e){return e||(e=this.options.defaultNS),"v1"===this.options.compatibilityAPI?I(I({},{}),this.getResource(t,e)):this.getResource(t,e)}},{key:"getDataByLanguage",value:function(t){return this.data[t]}},{key:"hasLanguageSomeTranslations",value:function(t){var e=this.getDataByLanguage(t);return!!(e&&Object.keys(e)||[]).find((function(t){return e[t]&&Object.keys(e[t]).length>0}))}},{key:"toJSON",value:function(){return this.data}}]),n}(O),q={processors:{},addPostProcessor:function(t){this.processors[t.name]=t},handle:function(t,e,n,r,o){var i=this;return t.forEach((function(t){i.processors[t]&&(e=i.processors[t].process(e,n,r,o))})),e}};function H(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Z(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};return i(this,n),r=e.call(this),T&&O.call(s(r)),function(t,e,n){t.forEach((function(t){e[t]&&(n[t]=e[t])}))}(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,s(r)),r.options=o,void 0===r.options.keySeparator&&(r.options.keySeparator="."),r.logger=x.create("translator"),r}return(0,a.Z)(n,[{key:"changeLanguage",value:function(t){t&&(this.language=t)}},{key:"exists",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};if(null==t)return!1;var n=this.resolve(t,e);return n&&void 0!==n.res}},{key:"extractFromKey",value:function(t,e){var n=void 0!==e.nsSeparator?e.nsSeparator:this.options.nsSeparator;void 0===n&&(n=":");var r=void 0!==e.keySeparator?e.keySeparator:this.options.keySeparator,o=e.ns||this.options.defaultNS||[],i=n&&t.indexOf(n)>-1,a=!(this.options.userDefinedKeySeparator||e.keySeparator||this.options.userDefinedNsSeparator||e.nsSeparator||function(t,e,n){e=e||"",n=n||"";var r=M.filter((function(t){return e.indexOf(t)<0&&n.indexOf(t)<0}));if(0===r.length)return!0;var o=new RegExp("(".concat(r.map((function(t){return"?"===t?"\\?":t})).join("|"),")")),i=!o.test(t);if(!i){var a=t.indexOf(n);a>0&&!o.test(t.substring(0,a))&&(i=!0)}return i}(t,n,r));if(i&&!a){var s=t.match(this.interpolator.nestingRegexp);if(s&&s.length>0)return{key:t,namespaces:o};var u=t.split(n);(n!==r||n===r&&this.options.ns.indexOf(u[0])>-1)&&(o=u.shift()),t=u.join(r)}return"string"==typeof o&&(o=[o]),{key:t,namespaces:o}}},{key:"translate",value:function(t,e,r){var i=this;if("object"!==(0,o.Z)(e)&&this.options.overloadTranslationOptionHandler&&(e=this.options.overloadTranslationOptionHandler(arguments)),e||(e={}),null==t)return"";Array.isArray(t)||(t=[String(t)]);var a=void 0!==e.returnDetails?e.returnDetails:this.options.returnDetails,s=void 0!==e.keySeparator?e.keySeparator:this.options.keySeparator,u=this.extractFromKey(t[t.length-1],e),c=u.key,l=u.namespaces,f=l[l.length-1],p=e.lng||this.language,d=e.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(p&&"cimode"===p.toLowerCase()){if(d){var h=e.nsSeparator||this.options.nsSeparator;return a?(m.res="".concat(f).concat(h).concat(c),m):"".concat(f).concat(h).concat(c)}return a?(m.res=c,m):c}var m=this.resolve(t,e),g=m&&m.res,v=m&&m.usedKey||c,y=m&&m.exactUsedKey||c,b=Object.prototype.toString.apply(g),w=void 0!==e.joinArrays?e.joinArrays:this.options.joinArrays,x=!this.i18nFormat||this.i18nFormat.handleAsObject;if(x&&g&&("string"!=typeof g&&"boolean"!=typeof g&&"number"!=typeof g)&&["[object Number]","[object Function]","[object RegExp]"].indexOf(b)<0&&("string"!=typeof w||"[object Array]"!==b)){if(!e.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var O=this.options.returnedObjectHandler?this.options.returnedObjectHandler(v,g,Z(Z({},e),{},{ns:l})):"key '".concat(c," (").concat(this.language,")' returned an object instead of string.");return a?(m.res=O,m):O}if(s){var k="[object Array]"===b,S=k?[]:{},P=k?y:v;for(var C in g)if(Object.prototype.hasOwnProperty.call(g,C)){var j="".concat(P).concat(s).concat(C);S[C]=this.translate(j,Z(Z({},e),{joinArrays:!1,ns:l})),S[C]===j&&(S[C]=g[C])}g=S}}else if(x&&"string"==typeof w&&"[object Array]"===b)(g=g.join(w))&&(g=this.extendTranslation(g,t,e,r));else{var E=!1,R=!1,A=void 0!==e.count&&"string"!=typeof e.count,L=n.hasDefaultValue(e),N=A?this.pluralResolver.getSuffix(p,e.count,e):"",T=e["defaultValue".concat(N)]||e.defaultValue;!this.isValidLookup(g)&&L&&(E=!0,g=T),this.isValidLookup(g)||(R=!0,g=c);var M=(e.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&R?void 0:g,D=L&&T!==g&&this.options.updateMissing;if(R||E||D){if(this.logger.log(D?"updateKey":"missingKey",p,f,c,D?T:g),s){var I=this.resolve(c,Z(Z({},e),{},{keySeparator:!1}));I&&I.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var F=[],_=this.languageUtils.getFallbackCodes(this.options.fallbackLng,e.lng||this.language);if("fallback"===this.options.saveMissingTo&&_&&_[0])for(var U=0;U<_.length;U++)F.push(_[U]);else"all"===this.options.saveMissingTo?F=this.languageUtils.toResolveHierarchy(e.lng||this.language):F.push(e.lng||this.language);var q=function(t,n,r){var o=L&&r!==g?r:M;i.options.missingKeyHandler?i.options.missingKeyHandler(t,f,n,o,D,e):i.backendConnector&&i.backendConnector.saveMissing&&i.backendConnector.saveMissing(t,f,n,o,D,e),i.emit("missingKey",t,f,n,g)};this.options.saveMissing&&(this.options.saveMissingPlurals&&A?F.forEach((function(t){i.pluralResolver.getSuffixes(t,e).forEach((function(n){q([t],c+n,e["defaultValue".concat(n)]||T)}))})):q(F,c,T))}g=this.extendTranslation(g,t,e,m,r),R&&g===c&&this.options.appendNamespaceToMissingKey&&(g="".concat(f,":").concat(c)),(R||E)&&this.options.parseMissingKeyHandler&&(g="v1"!==this.options.compatibilityAPI?this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?"".concat(f,":").concat(c):c,E?g:void 0):this.options.parseMissingKeyHandler(g))}return a?(m.res=g,m):g}},{key:"extendTranslation",value:function(t,e,n,r,o){var i=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,Z(Z({},this.options.interpolation.defaultVariables),n),r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init(Z(Z({},n),{interpolation:Z(Z({},this.options.interpolation),n.interpolation)}));var a,s="string"==typeof t&&(n&&n.interpolation&&void 0!==n.interpolation.skipOnVariables?n.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);if(s){var u=t.match(this.interpolator.nestingRegexp);a=u&&u.length}var c=n.replace&&"string"!=typeof n.replace?n.replace:n;if(this.options.interpolation.defaultVariables&&(c=Z(Z({},this.options.interpolation.defaultVariables),c)),t=this.interpolator.interpolate(t,c,n.lng||this.language,n),s){var l=t.match(this.interpolator.nestingRegexp);a<(l&&l.length)&&(n.nest=!1)}!1!==n.nest&&(t=this.interpolator.nest(t,(function(){for(var t=arguments.length,r=new Array(t),a=0;a1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof t&&(t=[t]),t.forEach((function(t){if(!a.isValidLookup(e)){var u=a.extractFromKey(t,s),c=u.key;n=c;var l=u.namespaces;a.options.fallbackNS&&(l=l.concat(a.options.fallbackNS));var f=void 0!==s.count&&"string"!=typeof s.count,p=f&&!s.ordinal&&0===s.count&&a.pluralResolver.shouldUseIntlApi(),d=void 0!==s.context&&("string"==typeof s.context||"number"==typeof s.context)&&""!==s.context,h=s.lngs?s.lngs:a.languageUtils.toResolveHierarchy(s.lng||a.language,s.fallbackLng);l.forEach((function(t){a.isValidLookup(e)||(i=t,!z["".concat(h[0],"-").concat(t)]&&a.utils&&a.utils.hasLoadedNamespace&&!a.utils.hasLoadedNamespace(i)&&(z["".concat(h[0],"-").concat(t)]=!0,a.logger.warn('key "'.concat(n,'" for languages "').concat(h.join(", "),'" won\'t get resolved as namespace "').concat(i,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),h.forEach((function(n){if(!a.isValidLookup(e)){o=n;var i,u=[c];if(a.i18nFormat&&a.i18nFormat.addLookupKeys)a.i18nFormat.addLookupKeys(u,c,n,t,s);else{var l;f&&(l=a.pluralResolver.getSuffix(n,s.count,s));var h="".concat(a.options.pluralSeparator,"zero");if(f&&(u.push(c+l),p&&u.push(c+h)),d){var m="".concat(c).concat(a.options.contextSeparator).concat(s.context);u.push(m),f&&(u.push(m+l),p&&u.push(m+h))}}for(;i=u.pop();)a.isValidLookup(e)||(r=i,e=a.getResource(n,t,i,s))}})))}))}})),{res:e,usedKey:n,exactUsedKey:r,usedLng:o,usedNS:i}}},{key:"isValidLookup",value:function(t){return!(void 0===t||!this.options.returnNull&&null===t||!this.options.returnEmptyString&&""===t)}},{key:"getResource",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,e,n,r):this.resourceStore.getResource(t,e,n,r)}}],[{key:"hasDefaultValue",value:function(t){var e="defaultValue";for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e===n.substring(0,12)&&void 0!==t[n])return!0;return!1}}]),n}(O);function V(t){return t.charAt(0).toUpperCase()+t.slice(1)}var W=function(){function t(e){i(this,t),this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=x.create("languageUtils")}return(0,a.Z)(t,[{key:"getScriptPartFromCode",value:function(t){if(!t||t.indexOf("-")<0)return null;var e=t.split("-");return 2===e.length?null:(e.pop(),"x"===e[e.length-1].toLowerCase()?null:this.formatLanguageCode(e.join("-")))}},{key:"getLanguagePartFromCode",value:function(t){if(!t||t.indexOf("-")<0)return t;var e=t.split("-");return this.formatLanguageCode(e[0])}},{key:"formatLanguageCode",value:function(t){if("string"==typeof t&&t.indexOf("-")>-1){var e=["hans","hant","latn","cyrl","cans","mong","arab"],n=t.split("-");return this.options.lowerCaseLng?n=n.map((function(t){return t.toLowerCase()})):2===n.length?(n[0]=n[0].toLowerCase(),n[1]=n[1].toUpperCase(),e.indexOf(n[1].toLowerCase())>-1&&(n[1]=V(n[1].toLowerCase()))):3===n.length&&(n[0]=n[0].toLowerCase(),2===n[1].length&&(n[1]=n[1].toUpperCase()),"sgn"!==n[0]&&2===n[2].length&&(n[2]=n[2].toUpperCase()),e.indexOf(n[1].toLowerCase())>-1&&(n[1]=V(n[1].toLowerCase())),e.indexOf(n[2].toLowerCase())>-1&&(n[2]=V(n[2].toLowerCase()))),n.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}},{key:"isSupportedCode",value:function(t){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}},{key:"getBestMatchFromCodes",value:function(t){var e,n=this;return t?(t.forEach((function(t){if(!e){var r=n.formatLanguageCode(t);n.options.supportedLngs&&!n.isSupportedCode(r)||(e=r)}})),!e&&this.options.supportedLngs&&t.forEach((function(t){if(!e){var r=n.getLanguagePartFromCode(t);if(n.isSupportedCode(r))return e=r;e=n.options.supportedLngs.find((function(t){if(0===t.indexOf(r))return t}))}})),e||(e=this.getFallbackCodes(this.options.fallbackLng)[0]),e):null}},{key:"getFallbackCodes",value:function(t,e){if(!t)return[];if("function"==typeof t&&(t=t(e)),"string"==typeof t&&(t=[t]),"[object Array]"===Object.prototype.toString.apply(t))return t;if(!e)return t.default||[];var n=t[e];return n||(n=t[this.getScriptPartFromCode(e)]),n||(n=t[this.formatLanguageCode(e)]),n||(n=t[this.getLanguagePartFromCode(e)]),n||(n=t.default),n||[]}},{key:"toResolveHierarchy",value:function(t,e){var n=this,r=this.getFallbackCodes(e||this.options.fallbackLng||[],t),o=[],i=function(t){t&&(n.isSupportedCode(t)?o.push(t):n.logger.warn("rejecting language code not found in supportedLngs: ".concat(t)))};return"string"==typeof t&&t.indexOf("-")>-1?("languageOnly"!==this.options.load&&i(this.formatLanguageCode(t)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&i(this.getScriptPartFromCode(t)),"currentOnly"!==this.options.load&&i(this.getLanguagePartFromCode(t))):"string"==typeof t&&i(this.formatLanguageCode(t)),r.forEach((function(t){o.indexOf(t)<0&&i(n.formatLanguageCode(t))})),o}}]),t}(),K=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],Y={1:function(t){return Number(t>1)},2:function(t){return Number(1!=t)},3:function(t){return 0},4:function(t){return Number(t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2)},5:function(t){return Number(0==t?0:1==t?1:2==t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5)},6:function(t){return Number(1==t?0:t>=2&&t<=4?1:2)},7:function(t){return Number(1==t?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2)},8:function(t){return Number(1==t?0:2==t?1:8!=t&&11!=t?2:3)},9:function(t){return Number(t>=2)},10:function(t){return Number(1==t?0:2==t?1:t<7?2:t<11?3:4)},11:function(t){return Number(1==t||11==t?0:2==t||12==t?1:t>2&&t<20?2:3)},12:function(t){return Number(t%10!=1||t%100==11)},13:function(t){return Number(0!==t)},14:function(t){return Number(1==t?0:2==t?1:3==t?2:3)},15:function(t){return Number(t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2)},16:function(t){return Number(t%10==1&&t%100!=11?0:0!==t?1:2)},17:function(t){return Number(1==t||t%10==1&&t%100!=11?0:1)},18:function(t){return Number(0==t?0:1==t?1:2)},19:function(t){return Number(1==t?0:0==t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3)},20:function(t){return Number(1==t?0:0==t||t%100>0&&t%100<20?1:2)},21:function(t){return Number(t%100==1?1:t%100==2?2:t%100==3||t%100==4?3:0)},22:function(t){return Number(1==t?0:2==t?1:(t<0||t>10)&&t%10==0?2:3)}},J=["v1","v2","v3"],G={zero:0,one:1,two:2,few:3,many:4,other:5};var $=function(){function t(e){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i(this,t),this.languageUtils=e,this.options=r,this.logger=x.create("pluralResolver"),this.options.compatibilityJSON&&"v4"!==this.options.compatibilityJSON||"undefined"!=typeof Intl&&Intl.PluralRules||(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=(n={},K.forEach((function(t){t.lngs.forEach((function(e){n[e]={numbers:t.nr,plurals:Y[t.fc]}}))})),n)}return(0,a.Z)(t,[{key:"addRule",value:function(t,e){this.rules[t]=e}},{key:"getRule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(t,{type:e.ordinal?"ordinal":"cardinal"})}catch(n){return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}},{key:"needsPlural",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.getRule(t,e);return this.shouldUseIntlApi()?n&&n.resolvedOptions().pluralCategories.length>1:n&&n.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(t,n).map((function(t){return"".concat(e).concat(t)}))}},{key:"getSuffixes",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((function(t,e){return G[t]-G[e]})).map((function(t){return"".concat(e.options.prepend).concat(t)})):r.numbers.map((function(r){return e.getSuffix(t,r,n)})):[]}},{key:"getSuffix",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.getRule(t,n);return r?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(r.select(e)):this.getSuffixRetroCompatible(r,e):(this.logger.warn("no plural rule found for: ".concat(t)),"")}},{key:"getSuffixRetroCompatible",value:function(t,e){var n=this,r=t.noAbs?t.plurals(e):t.plurals(Math.abs(e)),o=t.numbers[r];this.options.simplifyPluralSuffix&&2===t.numbers.length&&1===t.numbers[0]&&(2===o?o="plural":1===o&&(o=""));var i=function(){return n.options.prepend&&o.toString()?n.options.prepend+o.toString():o.toString()};return"v1"===this.options.compatibilityJSON?1===o?"":"number"==typeof o?"_plural_".concat(o.toString()):i():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===t.numbers.length&&1===t.numbers[0]?i():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}},{key:"shouldUseIntlApi",value:function(){return!J.includes(this.options.compatibilityJSON)}}]),t}();function X(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function tt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};i(this,t),this.logger=x.create("interpolator"),this.options=e,this.format=e.interpolation&&e.interpolation.format||function(t){return t},this.init(e)}return(0,a.Z)(t,[{key:"init",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});var e=t.interpolation;this.escape=void 0!==e.escape?e.escape:N,this.escapeValue=void 0===e.escapeValue||e.escapeValue,this.useRawValueToEscape=void 0!==e.useRawValueToEscape&&e.useRawValueToEscape,this.prefix=e.prefix?A(e.prefix):e.prefixEscaped||"{{",this.suffix=e.suffix?A(e.suffix):e.suffixEscaped||"}}",this.formatSeparator=e.formatSeparator?e.formatSeparator:e.formatSeparator||",",this.unescapePrefix=e.unescapeSuffix?"":e.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":e.unescapeSuffix||"",this.nestingPrefix=e.nestingPrefix?A(e.nestingPrefix):e.nestingPrefixEscaped||A("$t("),this.nestingSuffix=e.nestingSuffix?A(e.nestingSuffix):e.nestingSuffixEscaped||A(")"),this.nestingOptionsSeparator=e.nestingOptionsSeparator?e.nestingOptionsSeparator:e.nestingOptionsSeparator||",",this.maxReplaces=e.maxReplaces?e.maxReplaces:1e3,this.alwaysFormat=void 0!==e.alwaysFormat&&e.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var t="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(t,"g");var e="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(e,"g");var n="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(n,"g")}},{key:"interpolate",value:function(t,e,n,r){var o,i,a,s=this,u=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function c(t){return t.replace(/\$/g,"$$$$")}var l=function(t){if(t.indexOf(s.formatSeparator)<0){var o=E(e,u,t);return s.alwaysFormat?s.format(o,void 0,n,tt(tt(tt({},r),e),{},{interpolationkey:t})):o}var i=t.split(s.formatSeparator),a=i.shift().trim(),c=i.join(s.formatSeparator).trim();return s.format(E(e,u,a),c,n,tt(tt(tt({},r),e),{},{interpolationkey:a}))};this.resetRegExp();var f=r&&r.missingInterpolationHandler||this.options.missingInterpolationHandler,p=r&&r.interpolation&&void 0!==r.interpolation.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(t){return c(t)}},{regex:this.regexp,safeValue:function(t){return s.escapeValue?c(s.escape(t)):c(t)}}].forEach((function(e){for(a=0;o=e.regex.exec(t);){var n=o[1].trim();if(void 0===(i=l(n)))if("function"==typeof f){var u=f(t,o,r);i="string"==typeof u?u:""}else if(r&&r.hasOwnProperty(n))i="";else{if(p){i=o[0];continue}s.logger.warn("missed to pass in variable ".concat(n," for interpolating ").concat(t)),i=""}else"string"==typeof i||s.useRawValueToEscape||(i=S(i));var c=e.safeValue(i);if(t=t.replace(o[0],c),p?(e.regex.lastIndex+=i.length,e.regex.lastIndex-=o[0].length):e.regex.lastIndex=0,++a>=s.maxReplaces)break}})),t}},{key:"nest",value:function(t,e){var n,r,o=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=tt({},i);function s(t,e){var n=this.nestingOptionsSeparator;if(t.indexOf(n)<0)return t;var r=t.split(new RegExp("".concat(n,"[ ]*{"))),o="{".concat(r[1]);t=r[0];var i=(o=this.interpolate(o,a)).match(/'/g),s=o.match(/"/g);(i&&i.length%2==0&&!s||s.length%2!=0)&&(o=o.replace(/'/g,'"'));try{a=JSON.parse(o),e&&(a=tt(tt({},e),a))}catch(u){return this.logger.warn("failed parsing options string in nesting for key ".concat(t),u),"".concat(t).concat(n).concat(o)}return delete a.defaultValue,t}for(a.applyPostProcessor=!1,delete a.defaultValue;n=this.nestingRegexp.exec(t);){var u=[],c=!1;if(-1!==n[0].indexOf(this.formatSeparator)&&!/{.*}/.test(n[1])){var l=n[1].split(this.formatSeparator).map((function(t){return t.trim()}));n[1]=l.shift(),u=l,c=!0}if((r=e(s.call(this,n[1].trim(),a),a))&&n[0]===t&&"string"!=typeof r)return r;"string"!=typeof r&&(r=S(r)),r||(this.logger.warn("missed to resolve ".concat(n[1]," for nesting ").concat(t)),r=""),c&&(r=u.reduce((function(t,e){return o.format(t,e,i.lng,tt(tt({},i),{},{interpolationkey:n[1].trim()}))}),r.trim())),t=t.replace(n[0],r),this.regexp.lastIndex=0}return t}}]),t}();function nt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function rt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};i(this,t),this.logger=x.create("formatter"),this.options=e,this.formats={number:ot((function(t,e){var n=new Intl.NumberFormat(t,e);return function(t){return n.format(t)}})),currency:ot((function(t,e){var n=new Intl.NumberFormat(t,rt(rt({},e),{},{style:"currency"}));return function(t){return n.format(t)}})),datetime:ot((function(t,e){var n=new Intl.DateTimeFormat(t,rt({},e));return function(t){return n.format(t)}})),relativetime:ot((function(t,e){var n=new Intl.RelativeTimeFormat(t,rt({},e));return function(t){return n.format(t,e.range||"day")}})),list:ot((function(t,e){var n=new Intl.ListFormat(t,rt({},e));return function(t){return n.format(t)}}))},this.init(e)}return(0,a.Z)(t,[{key:"init",value:function(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=e.formatSeparator?e.formatSeparator:e.formatSeparator||","}},{key:"add",value:function(t,e){this.formats[t.toLowerCase().trim()]=e}},{key:"addCached",value:function(t,e){this.formats[t.toLowerCase().trim()]=ot(e)}},{key:"format",value:function(t,e,n,r){var o=this;return e.split(this.formatSeparator).reduce((function(t,e){var i=function(t){var e=t.toLowerCase().trim(),n={};if(t.indexOf("(")>-1){var r=t.split("(");e=r[0].toLowerCase().trim();var o=r[1].substring(0,r[1].length-1);"currency"===e&&o.indexOf(":")<0?n.currency||(n.currency=o.trim()):"relativetime"===e&&o.indexOf(":")<0?n.range||(n.range=o.trim()):o.split(";").forEach((function(t){if(t){var e=g(t.split(":")),r=e[0],o=e.slice(1).join(":").trim().replace(/^'+|'+$/g,"");n[r.trim()]||(n[r.trim()]=o),"false"===o&&(n[r.trim()]=!1),"true"===o&&(n[r.trim()]=!0),isNaN(o)||(n[r.trim()]=parseInt(o,10))}}))}return{formatName:e,formatOptions:n}}(e),a=i.formatName,s=i.formatOptions;if(o.formats[a]){var u=t;try{var c=r&&r.formatParams&&r.formatParams[r.interpolationkey]||{},l=c.locale||c.lng||r.locale||r.lng||n;u=o.formats[a](t,l,rt(rt(rt({},s),r),c))}catch(f){o.logger.warn(f)}return u}return o.logger.warn("there was no format function for ".concat(a)),t}),t)}}]),t}();function at(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function st(t){for(var e=1;e3&&void 0!==arguments[3]?arguments[3]:{};return i(this,n),a=e.call(this),T&&O.call(s(a)),a.backend=t,a.store=r,a.services=o,a.languageUtils=o.languageUtils,a.options=u,a.logger=x.create("backendConnector"),a.waitingReads=[],a.maxParallelReads=u.maxParallelReads||10,a.readingCalls=0,a.maxRetries=u.maxRetries>=0?u.maxRetries:5,a.retryTimeout=u.retryTimeout>=1?u.retryTimeout:350,a.state={},a.queue=[],a.backend&&a.backend.init&&a.backend.init(o,u.backend,u),a}return(0,a.Z)(n,[{key:"queueLoad",value:function(t,e,n,r){var o=this,i={},a={},s={},u={};return t.forEach((function(t){var r=!0;e.forEach((function(e){var s="".concat(t,"|").concat(e);!n.reload&&o.store.hasResourceBundle(t,e)?o.state[s]=2:o.state[s]<0||(1===o.state[s]?void 0===a[s]&&(a[s]=!0):(o.state[s]=1,r=!1,void 0===a[s]&&(a[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===u[e]&&(u[e]=!0)))})),r||(s[t]=!0)})),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(u)}}},{key:"loaded",value:function(t,e,n){var r=t.split("|"),o=r[0],i=r[1];e&&this.emit("failedLoading",o,i,e),n&&this.store.addResourceBundle(o,i,n),this.state[t]=e?-1:2;var a={};this.queue.forEach((function(n){var r,s,u,c,l,f;r=n.loaded,s=i,c=P(r,[o],Object),l=c.obj,f=c.k,l[f]=l[f]||[],u&&(l[f]=l[f].concat(s)),u||l[f].push(s),function(t,e){void 0!==t.pending[e]&&(delete t.pending[e],t.pendingCount--)}(n,t),e&&n.errors.push(e),0!==n.pendingCount||n.done||(Object.keys(n.loaded).forEach((function(t){a[t]||(a[t]={});var e=n.loaded[t];e.length&&e.forEach((function(e){void 0===a[t][e]&&(a[t][e]=!0)}))})),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())})),this.emit("loaded",a),this.queue=this.queue.filter((function(t){return!t.done}))}},{key:"read",value:function(t,e,n){var r=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.retryTimeout,a=arguments.length>5?arguments[5]:void 0;return t.length?this.readingCalls>=this.maxParallelReads?void this.waitingReads.push({lng:t,ns:e,fcName:n,tried:o,wait:i,callback:a}):(this.readingCalls++,this.backend[n](t,e,(function(s,u){if(r.readingCalls--,r.waitingReads.length>0){var c=r.waitingReads.shift();r.read(c.lng,c.ns,c.fcName,c.tried,c.wait,c.callback)}s&&u&&o2&&void 0!==arguments[2]?arguments[2]:{},o=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),o&&o();"string"==typeof t&&(t=this.languageUtils.toResolveHierarchy(t)),"string"==typeof e&&(e=[e]);var i=this.queueLoad(t,e,r,o);if(!i.toLoad.length)return i.pending.length||o(),null;i.toLoad.forEach((function(t){n.loadOne(t)}))}},{key:"load",value:function(t,e,n){this.prepareLoading(t,e,{},n)}},{key:"reload",value:function(t,e,n){this.prepareLoading(t,e,{reload:!0},n)}},{key:"loadOne",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=t.split("|"),o=r[0],i=r[1];this.read(o,i,"read",void 0,void 0,(function(r,a){r&&e.logger.warn("".concat(n,"loading namespace ").concat(i," for language ").concat(o," failed"),r),!r&&a&&e.logger.log("".concat(n,"loaded namespace ").concat(i," for language ").concat(o),a),e.loaded(t,r,a)}))}},{key:"saveMissing",value:function(t,e,n,r,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(e)?this.logger.warn('did not save key "'.concat(n,'" as the namespace "').concat(e,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"):null!=n&&""!==n&&(this.backend&&this.backend.create&&this.backend.create(t,e,n,r,null,st(st({},i),{},{isUpdate:o})),t&&t[0]&&this.store.addResource(t[0],e,n,r))}}]),n}(O);function lt(t){return"string"==typeof t.ns&&(t.ns=[t.ns]),"string"==typeof t.fallbackLng&&(t.fallbackLng=[t.fallbackLng]),"string"==typeof t.fallbackNS&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs&&t.supportedLngs.indexOf("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),t}function ft(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function pt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},a=arguments.length>1?arguments[1]:void 0;if(i(this,n),t=e.call(this),T&&O.call(s(t)),t.options=lt(o),t.services={},t.logger=x,t.modules={external:[]},r=s(t),Object.getOwnPropertyNames(Object.getPrototypeOf(r)).forEach((function(t){"function"==typeof r[t]&&(r[t]=r[t].bind(r))})),a&&!t.isInitialized&&!o.isClone){if(!t.options.initImmediate)return t.init(o,a),l(t,s(t));setTimeout((function(){t.init(o,a)}),0)}return t}return(0,a.Z)(n,[{key:"init",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;"function"==typeof e&&(n=e,e={}),!e.defaultNS&&!1!==e.defaultNS&&e.ns&&("string"==typeof e.ns?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));var r={debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){var e={};if("object"===(0,o.Z)(t[1])&&(e=t[1]),"string"==typeof t[1]&&(e.defaultValue=t[1]),"string"==typeof t[2]&&(e.tDescription=t[2]),"object"===(0,o.Z)(t[2])||"object"===(0,o.Z)(t[3])){var n=t[3]||t[2];Object.keys(n).forEach((function(t){e[t]=n[t]}))}return e},interpolation:{escapeValue:!0,format:function(t,e,n,r){return t},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}};function i(t){return t?"function"==typeof t?new t:t:null}if(this.options=pt(pt(pt({},r),this.options),lt(e)),"v1"!==this.options.compatibilityAPI&&(this.options.interpolation=pt(pt({},r.interpolation),this.options.interpolation)),void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator),!this.options.isClone){var a;this.modules.logger?x.init(i(this.modules.logger),this.options):x.init(null,this.options),this.modules.formatter?a=this.modules.formatter:"undefined"!=typeof Intl&&(a=it);var s=new W(this.options);this.store=new U(this.options.resources,this.options);var u=this.services;u.logger=x,u.resourceStore=this.store,u.languageUtils=s,u.pluralResolver=new $(s,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),!a||this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format||(u.formatter=i(a),u.formatter.init(u,this.options),this.options.interpolation.format=u.formatter.format.bind(u.formatter)),u.interpolator=new et(this.options),u.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},u.backendConnector=new ct(i(this.modules.backend),u.resourceStore,u,this.options),u.backendConnector.on("*",(function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o1?n-1:0),o=1;o0&&"dev"!==c[0]&&(this.options.lng=c[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach((function(e){t[e]=function(){var n;return(n=t.store)[e].apply(n,arguments)}}));["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach((function(e){t[e]=function(){var n;return(n=t.store)[e].apply(n,arguments),t}}));var l=k(),f=function(){var e=function(e,r){t.isInitialized&&!t.initializedStoreOnce&&t.logger.warn("init: i18next is already initialized. You should call init just once!"),t.isInitialized=!0,t.options.isClone||t.logger.log("initialized",t.options),t.emit("initialized",t.options),l.resolve(r),n(e,r)};if(t.languages&&"v1"!==t.options.compatibilityAPI&&!t.isInitialized)return e(null,t.t.bind(t));t.changeLanguage(t.options.lng,e)};return this.options.resources||!this.options.initImmediate?f():setTimeout(f,0),l}},{key:"loadResources",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ht,r="string"==typeof t?t:this.language;if("function"==typeof t&&(n=t),!this.options.resources||this.options.partialBundledLanguages){if(r&&"cimode"===r.toLowerCase())return n();var o=[],i=function(t){t&&e.services.languageUtils.toResolveHierarchy(t).forEach((function(t){o.indexOf(t)<0&&o.push(t)}))};if(r)i(r);else this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((function(t){return i(t)}));this.options.preload&&this.options.preload.forEach((function(t){return i(t)})),this.services.backendConnector.load(o,this.options.ns,(function(t){t||e.resolvedLanguage||!e.language||e.setResolvedLanguage(e.language),n(t)}))}else n(null)}},{key:"reloadResources",value:function(t,e,n){var r=k();return t||(t=this.languages),e||(e=this.options.ns),n||(n=ht),this.services.backendConnector.reload(t,e,(function(t){r.resolve(),n(t)})),r}},{key:"use",value:function(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===t.type&&(this.modules.backend=t),("logger"===t.type||t.log&&t.warn&&t.error)&&(this.modules.logger=t),"languageDetector"===t.type&&(this.modules.languageDetector=t),"i18nFormat"===t.type&&(this.modules.i18nFormat=t),"postProcessor"===t.type&&q.addPostProcessor(t),"formatter"===t.type&&(this.modules.formatter=t),"3rdParty"===t.type&&this.modules.external.push(t),this}},{key:"setResolvedLanguage",value:function(t){if(t&&this.languages&&!(["cimode","dev"].indexOf(t)>-1))for(var e=0;e-1)&&this.store.hasLanguageSomeTranslations(n)){this.resolvedLanguage=n;break}}}},{key:"changeLanguage",value:function(t,e){var n=this;this.isLanguageChangingTo=t;var r=k();this.emit("languageChanging",t);var o=function(t){n.language=t,n.languages=n.services.languageUtils.toResolveHierarchy(t),n.resolvedLanguage=void 0,n.setResolvedLanguage(t)},i=function(i){t||i||!n.services.languageDetector||(i=[]);var a="string"==typeof i?i:n.services.languageUtils.getBestMatchFromCodes(i);a&&(n.language||o(a),n.translator.language||n.translator.changeLanguage(a),n.services.languageDetector&&n.services.languageDetector.cacheUserLanguage(a)),n.loadResources(a,(function(t){!function(t,i){i?(o(i),n.translator.changeLanguage(i),n.isLanguageChangingTo=void 0,n.emit("languageChanged",i),n.logger.log("languageChanged",i)):n.isLanguageChangingTo=void 0,r.resolve((function(){return n.t.apply(n,arguments)})),e&&e(t,(function(){return n.t.apply(n,arguments)}))}(t,a)}))};return t||!this.services.languageDetector||this.services.languageDetector.async?!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(i):i(t):i(this.services.languageDetector.detect()),r}},{key:"getFixedT",value:function(t,e,n){var r=this,i=function t(e,i){var a;if("object"!==(0,o.Z)(i)){for(var s=arguments.length,u=new Array(s>2?s-2:0),c=2;c1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var r=this.resolvedLanguage||this.languages[0],o=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;var a=function(t,n){var r=e.services.backendConnector.state["".concat(t,"|").concat(n)];return-1===r||2===r};if(n.precheck){var s=n.precheck(this,a);if(void 0!==s)return s}return!!this.hasResourceBundle(r,t)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!a(r,t)||o&&!a(i,t)))}},{key:"loadNamespaces",value:function(t,e){var n=this,r=k();return this.options.ns?("string"==typeof t&&(t=[t]),t.forEach((function(t){n.options.ns.indexOf(t)<0&&n.options.ns.push(t)})),this.loadResources((function(t){r.resolve(),e&&e(t)})),r):(e&&e(),Promise.resolve())}},{key:"loadLanguages",value:function(t,e){var n=k();"string"==typeof t&&(t=[t]);var r=this.options.preload||[],o=t.filter((function(t){return r.indexOf(t)<0}));return o.length?(this.options.preload=r.concat(o),this.loadResources((function(t){n.resolve(),e&&e(t)})),n):(e&&e(),Promise.resolve())}},{key:"dir",value:function(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(this.services.languageUtils.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ht,o=pt(pt(pt({},this.options),e),{isClone:!0}),i=new n(o);void 0===e.debug&&void 0===e.prefix||(i.logger=i.logger.clone(e));return["store","services","language"].forEach((function(e){i[e]=t[e]})),i.services=pt({},this.services),i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i.translator=new B(i.services,i.options),i.translator.on("*",(function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}));var gt=mt.createInstance();gt.createInstance=mt.createInstance;gt.createInstance,gt.init,gt.loadResources,gt.reloadResources,gt.use,gt.changeLanguage,gt.getFixedT,gt.t,gt.exists,gt.setDefaultNamespace,gt.hasLoadedNamespace,gt.loadNamespaces,gt.loadLanguages;var vt=gt,yt=n(6690),bt=n.n(yt),wt=n(9728),xt=n.n(wt),Ot=n(8416),kt=n.n(Ot),St=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Pt={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"Ā©","©":"Ā©","®":"Ā®","®":"Ā®","…":"ā€¦","…":"ā€¦","/":"/","/":"/"},Ct=function(t){return Pt[t]};function jt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Et(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};Rt=Et(Et({},Rt),t)}(t.options.react),function(t){t}(t)}};const Lt={en:{translation:{Login:"Login",Logout:"Log out",Translation:"Nederlands",Home:"Home","Footer content":"Footer content",Link:"Link",Welcome:"Welcome","Login with DigiD":"Login with DigiD","Login with your account":"Login with your account","Oops, something went wrong":"Oops, something went wrong",Username:"Username",Password:"Password",Send:"Send"}},nl:{translation:{Login:"Inloggen",Logout:"Uitloggen",Translation:"English",Home:"Home","Footer content":"Footer content",Link:"Link",Welcome:"Welkom","Login with DigiD":"Inloggen met DigiD","Login with your account":"Inloggen met account","Oops, something went wrong":"Oops, er is iets fout gegaan",Username:"Gebruikersnaam",Password:"Wachtwoord",Send:"Verzenden"}}};vt.use(At).init({resources:Lt,lng:"nl",interpolation:{escapeValue:!1}});var Nt=n(7177),Tt=n(1505);const Mt={initiated:!1,gatsby:{pageContext:null,location:null}},Dt=r.createContext([Mt,()=>null]),It=Dt.Provider;var Ft,_t,Ut,qt,Ht=n(5697),Zt=n.n(Ht),Qt=n(4839),zt=n.n(Qt),Bt=n(2993),Vt=n.n(Bt),Wt=n(6494),Kt=n.n(Wt),Yt="bodyAttributes",Jt="htmlAttributes",Gt="titleAttributes",$t={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},Xt=(Object.keys($t).map((function(t){return $t[t]})),"charset"),te="cssText",ee="href",ne="http-equiv",re="innerHTML",oe="itemprop",ie="name",ae="property",se="rel",ue="src",ce="target",le={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},fe="defaultTitle",pe="defer",de="encodeSpecialCharacters",he="onChangeClientState",me="titleTemplate",ge=Object.keys(le).reduce((function(t,e){return t[le[e]]=e,t}),{}),ve=[$t.NOSCRIPT,$t.SCRIPT,$t.STYLE],ye="data-react-helmet",be="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},we=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n},ke=function(t){return!1===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])?String(t):String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},Se=function(t){var e=Re(t,$t.TITLE),n=Re(t,me);if(n&&e)return n.replace(/%s/g,(function(){return Array.isArray(e)?e.join(""):e}));var r=Re(t,fe);return e||r||void 0},Pe=function(t){return Re(t,he)||function(){}},Ce=function(t,e){return e.filter((function(e){return void 0!==e[t]})).map((function(e){return e[t]})).reduce((function(t,e){return xe({},t,e)}),{})},je=function(t,e){return e.filter((function(t){return void 0!==t[$t.BASE]})).map((function(t){return t[$t.BASE]})).reverse().reduce((function(e,n){if(!e.length)for(var r=Object.keys(n),o=0;o=0;n--){var r=t[n];if(r.hasOwnProperty(e))return r[e]}return null},Ae=(Ft=Date.now(),function(t){var e=Date.now();e-Ft>16?(Ft=e,t(e)):setTimeout((function(){Ae(t)}),0)}),Le=function(t){return clearTimeout(t)},Ne="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Ae:n.g.requestAnimationFrame||Ae,Te="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Le:n.g.cancelAnimationFrame||Le,Me=function(t){return console&&"function"==typeof console.warn&&console.warn(t)},De=null,Ie=function(t,e){var n=t.baseTag,r=t.bodyAttributes,o=t.htmlAttributes,i=t.linkTags,a=t.metaTags,s=t.noscriptTags,u=t.onChangeClientState,c=t.scriptTags,l=t.styleTags,f=t.title,p=t.titleAttributes;Ue($t.BODY,r),Ue($t.HTML,o),_e(f,p);var d={baseTag:qe($t.BASE,n),linkTags:qe($t.LINK,i),metaTags:qe($t.META,a),noscriptTags:qe($t.NOSCRIPT,s),scriptTags:qe($t.SCRIPT,c),styleTags:qe($t.STYLE,l)},h={},m={};Object.keys(d).forEach((function(t){var e=d[t],n=e.newTags,r=e.oldTags;n.length&&(h[t]=n),r.length&&(m[t]=d[t].oldTags)})),e&&e(),u(t,h,m)},Fe=function(t){return Array.isArray(t)?t.join(""):t},_e=function(t,e){void 0!==t&&document.title!==t&&(document.title=Fe(t)),Ue($t.TITLE,e)},Ue=function(t,e){var n=document.getElementsByTagName(t)[0];if(n){for(var r=n.getAttribute(ye),o=r?r.split(","):[],i=[].concat(o),a=Object.keys(e),s=0;s=0;f--)n.removeAttribute(i[f]);o.length===i.length?n.removeAttribute(ye):n.getAttribute(ye)!==a.join(",")&&n.setAttribute(ye,a.join(","))}},qe=function(t,e){var n=document.head||document.querySelector($t.HEAD),r=n.querySelectorAll(t+"["+ye+"]"),o=Array.prototype.slice.call(r),i=[],a=void 0;return e&&e.length&&e.forEach((function(e){var n=document.createElement(t);for(var r in e)if(e.hasOwnProperty(r))if(r===re)n.innerHTML=e.innerHTML;else if(r===te)n.styleSheet?n.styleSheet.cssText=e.cssText:n.appendChild(document.createTextNode(e.cssText));else{var s=void 0===e[r]?"":e[r];n.setAttribute(r,s)}n.setAttribute(ye,"true"),o.some((function(t,e){return a=e,n.isEqualNode(t)}))?o.splice(a,1):i.push(n)})),o.forEach((function(t){return t.parentNode.removeChild(t)})),i.forEach((function(t){return n.appendChild(t)})),{oldTags:o,newTags:i}},He=function(t){return Object.keys(t).reduce((function(e,n){var r=void 0!==t[n]?n+'="'+t[n]+'"':""+n;return e?e+" "+r:r}),"")},Ze=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce((function(e,n){return e[le[n]||n]=t[n],e}),e)},Qe=function(t,e,n){switch(t){case $t.TITLE:return{toComponent:function(){return t=e.title,n=e.titleAttributes,(o={key:t})[ye]=!0,i=Ze(n,o),[r.createElement($t.TITLE,i,t)];var t,n,o,i},toString:function(){return function(t,e,n,r){var o=He(n),i=Fe(e);return o?"<"+t+" "+ye+'="true" '+o+">"+ke(i,r)+"":"<"+t+" "+ye+'="true">'+ke(i,r)+""}(t,e.title,e.titleAttributes,n)}};case Yt:case Jt:return{toComponent:function(){return Ze(e)},toString:function(){return He(e)}};default:return{toComponent:function(){return function(t,e){return e.map((function(e,n){var o,i=((o={key:n})[ye]=!0,o);return Object.keys(e).forEach((function(t){var n=le[t]||t;if(n===re||n===te){var r=e.innerHTML||e.cssText;i.dangerouslySetInnerHTML={__html:r}}else i[n]=e[t]})),r.createElement(t,i)}))}(t,e)},toString:function(){return function(t,e,n){return e.reduce((function(e,r){var o=Object.keys(r).filter((function(t){return!(t===re||t===te)})).reduce((function(t,e){var o=void 0===r[e]?e:e+'="'+ke(r[e],n)+'"';return t?t+" "+o:o}),""),i=r.innerHTML||r.cssText||"",a=-1===ve.indexOf(t);return e+"<"+t+" "+ye+'="true" '+o+(a?"/>":">"+i+"")}),"")}(t,e,n)}}}},ze=function(t){var e=t.baseTag,n=t.bodyAttributes,r=t.encode,o=t.htmlAttributes,i=t.linkTags,a=t.metaTags,s=t.noscriptTags,u=t.scriptTags,c=t.styleTags,l=t.title,f=void 0===l?"":l,p=t.titleAttributes;return{base:Qe($t.BASE,e,r),bodyAttributes:Qe(Yt,n,r),htmlAttributes:Qe(Jt,o,r),link:Qe($t.LINK,i,r),meta:Qe($t.META,a,r),noscript:Qe($t.NOSCRIPT,s,r),script:Qe($t.SCRIPT,u,r),style:Qe($t.STYLE,c,r),title:Qe($t.TITLE,{title:f,titleAttributes:p},r)}},Be=zt()((function(t){return{baseTag:je([ee,ce],t),bodyAttributes:Ce(Yt,t),defer:Re(t,pe),encode:Re(t,de),htmlAttributes:Ce(Jt,t),linkTags:Ee($t.LINK,[se,ee],t),metaTags:Ee($t.META,[ie,Xt,ne,ae,oe],t),noscriptTags:Ee($t.NOSCRIPT,[re],t),onChangeClientState:Pe(t),scriptTags:Ee($t.SCRIPT,[ue,re],t),styleTags:Ee($t.STYLE,[te],t),title:Se(t),titleAttributes:Ce(Gt,t)}}),(function(t){De&&Te(De),t.defer?De=Ne((function(){Ie(t,(function(){De=null}))})):(Ie(t),De=null)}),ze)((function(){return null})),Ve=(_t=Be,qt=Ut=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,t.apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.shouldComponentUpdate=function(t){return!Vt()(this.props,t)},e.prototype.mapNestedChildrenToProps=function(t,e){if(!e)return null;switch(t.type){case $t.SCRIPT:case $t.NOSCRIPT:return{innerHTML:e};case $t.STYLE:return{cssText:e}}throw new Error("<"+t.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},e.prototype.flattenArrayTypeChildren=function(t){var e,n=t.child,r=t.arrayTypeChildren,o=t.newChildProps,i=t.nestedChildren;return xe({},r,((e={})[n.type]=[].concat(r[n.type]||[],[xe({},o,this.mapNestedChildrenToProps(n,i))]),e))},e.prototype.mapObjectTypeChildren=function(t){var e,n,r=t.child,o=t.newProps,i=t.newChildProps,a=t.nestedChildren;switch(r.type){case $t.TITLE:return xe({},o,((e={})[r.type]=a,e.titleAttributes=xe({},i),e));case $t.BODY:return xe({},o,{bodyAttributes:xe({},i)});case $t.HTML:return xe({},o,{htmlAttributes:xe({},i)})}return xe({},o,((n={})[r.type]=xe({},i),n))},e.prototype.mapArrayTypeChildrenToProps=function(t,e){var n=xe({},e);return Object.keys(t).forEach((function(e){var r;n=xe({},n,((r={})[e]=t[e],r))})),n},e.prototype.warnOnInvalidChildren=function(t,e){return!0},e.prototype.mapChildrenToProps=function(t,e){var n=this,o={};return r.Children.forEach(t,(function(t){if(t&&t.props){var r=t.props,i=r.children,a=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce((function(e,n){return e[ge[n]||n]=t[n],e}),e)}(Oe(r,["children"]));switch(n.warnOnInvalidChildren(t,i),t.type){case $t.LINK:case $t.META:case $t.NOSCRIPT:case $t.SCRIPT:case $t.STYLE:o=n.flattenArrayTypeChildren({child:t,arrayTypeChildren:o,newChildProps:a,nestedChildren:i});break;default:e=n.mapObjectTypeChildren({child:t,newProps:e,newChildProps:a,nestedChildren:i})}}})),e=this.mapArrayTypeChildrenToProps(o,e)},e.prototype.render=function(){var t=this.props,e=t.children,n=Oe(t,["children"]),o=xe({},n);return e&&(o=this.mapChildrenToProps(e,o)),r.createElement(_t,o)},we(e,null,[{key:"canUseDOM",set:function(t){_t.canUseDOM=t}}]),e}(r.Component),Ut.propTypes={base:Zt().object,bodyAttributes:Zt().object,children:Zt().oneOfType([Zt().arrayOf(Zt().node),Zt().node]),defaultTitle:Zt().string,defer:Zt().bool,encodeSpecialCharacters:Zt().bool,htmlAttributes:Zt().object,link:Zt().arrayOf(Zt().object),meta:Zt().arrayOf(Zt().object),noscript:Zt().arrayOf(Zt().object),onChangeClientState:Zt().func,script:Zt().arrayOf(Zt().object),style:Zt().arrayOf(Zt().object),title:Zt().string,titleAttributes:Zt().object,titleTemplate:Zt().string},Ut.defaultProps={defer:!0,encodeSpecialCharacters:!0},Ut.peek=_t.peek,Ut.rewind=function(){var t=_t.rewind();return t||(t=ze({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),t},qt);Ve.renderStatic=Ve.rewind;var We=n(8403),Ke=n.n(We),Ye=n(928),Je=n.n(Ye);const Ge=(t,e)=>{const n=e.pathname.replace(/\/$/,""),r=n.lastIndexOf("/"),o=n.substring(r+1).replace("_"," ").replace("-"," ");return Je()(t).crumbLabel.includes("[")?o:Ke()(Je()(t).crumbLabel)};var $e=n(5893);const Xe=()=>{var t,e;const{gatsbyContext:n}=(()=>{const[t]=r.useContext(Dt);return{gatsbyContext:t.gatsby}})();return(0,$e.jsxs)(Ve,{children:[(0,$e.jsx)("title",{children:"OpenWoo | "+(null!==(t=Ge(null===(e=n.pageContext)||void 0===e?void 0:e.breadcrumb.crumbs,n.location))&&void 0!==t?t:"Error")}),(0,$e.jsx)("link",{rel:"icon",type:"svg",href:"https://xxllnc.nl/wp-content/uploads/2021/07/cropped-fav-xxllnc-32x32.png"})]})};var tn=n(1800),en=n(1082);n(7544);const nn=()=>(0,$e.jsx)("svg",{width:"20px",height:"20px",viewBox:"0 0 24 24",version:"1.1",style:{verticalAlign:"middle"},children:(0,$e.jsx)("g",{id:"Page-1",stroke:"none",strokeWidth:"1",fill:"contain",fillRule:"evenodd",children:(0,$e.jsx)("g",{id:"Group",fill:"currentColor",fillRule:"nonzero",children:(0,$e.jsx)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",id:"path"})})})});var rn=n(2856);const on=()=>{const{directories:t,getSlugFromName:e}=(0,rn.O)();return(0,$e.jsx)(tn.WA,{className:"FooterTemplate-module--footer--6414a",children:(0,$e.jsx)(tn.JH,{children:(0,$e.jsxs)(tn.QI,{className:"FooterTemplate-module--list--0df1a",children:[(0,$e.jsxs)("section",{className:"FooterTemplate-module--linksContainer--944dc",children:[(0,$e.jsx)(tn.AS,{onClick:()=>(0,en.c4)("/"),children:"Home"}),null==t?void 0:t.map(((t,n)=>(0,$e.jsx)(tn.AS,{onClick:()=>(0,en.c4)("/pages/"+e(t.name)),children:t.name},n))),!1,!1,(0,$e.jsxs)(tn.AS,{onClick:()=>open("https://github.com/ConductionNL/woo-website-template"),children:[(0,$e.jsx)(nn,{})," GitHub"]})]}),(0,$e.jsx)("section",{children:(0,$e.jsx)("img",{onClick:()=>open("https://xxllnc.nl/"),src:"https://xxllnc.nl/wp-content/uploads/2021/04/xxllnc-kleur.svg",alt:"Footer-logo"})})]})})})};var an=n(1529);const sn=()=>{const{directories:t,getSlugFromName:e}=(0,rn.O)();return(0,$e.jsx)("div",{className:"TopNav-module--container--edbf7",children:(0,$e.jsxs)(tn.QI,{className:"TopNav-module--list--7884c",children:[(0,$e.jsxs)("section",{children:[(0,$e.jsx)(tn.AS,{children:(0,$e.jsx)("div",{className:"TopNav-module--imageContainer--aaa02",children:(0,$e.jsx)("img",{className:"TopNav-module--image--b8c92",onClick:()=>(0,en.c4)("/"),src:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxNzUuNCA0Mi4yIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxNzUuNCA0Mi4yOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGQ9Ik03OC4zLDQwLjdoNy4yVjAuNGgtNy4yVjQwLjd6IE05NC44LDQwLjdoNy4yVjAuNGgtNy4yVjQwLjd6IE02NC41LDkuNEw1My40LDIwLjhsLTExLTExLjRsLTQuOCw0LjlsMTEuMSwxMS40TDM3LjYsMzcuMQoJbDQuOCw0LjlsMTEuMS0xMS40bDExLDExLjRsNC44LTQuOUw1OC4yLDI1LjdsMTEuMS0xMS40TDY0LjUsOS40eiBNMjcuMiw5LjRMMTYuMSwyMC44TDUuMSw5LjRsLTQuOCw0LjlsMTEuMSwxMS40TDAuMywzNy4xTDUuMSw0MgoJbDExLjEtMTEuNGwxMSwxMS40bDQuOC00LjlMMjAuOSwyNS43TDMyLDE0LjNMMjcuMiw5LjR6IE0xMjQuOCwxMC43Yy04LjIsMC0xNC4zLDUuMi0xNC4zLDE0LjF2MTUuOWg3LjJWMjVjMC00LjgsMy03LjMsNy4xLTcuMwoJczcuMSwyLjYsNy4xLDcuM3YxNS44aDcuMnYtMTZDMTM5LjEsMTUuOCwxMzMsMTAuNywxMjQuOCwxMC43eiBNMTYwLjQsMzQuOGMtNC41LDAtOC4yLTMuOS04LjItOC44YzAtNC44LDMuNy04LjgsOC4yLTguOAoJYzMuNCwwLDYuMywyLjIsNy41LDUuM2g3LjJjLTEuMy03LTcuMS0xMS44LTE0LjYtMTEuOGMtOC44LDAtMTUuMiw2LjUtMTUuMiwxNS40YzAsOC44LDYuNCwxNS4zLDE1LjIsMTUuMwoJYzcuNSwwLDEzLjMtNC44LDE0LjYtMTEuN2gtNy4yQzE2Ni42LDMyLjYsMTYzLjcsMzQuOCwxNjAuNCwzNC44eiIvPgo8L3N2Zz4K",alt:"Navbar-logo"})})}),(0,$e.jsx)(tn.AS,{onClick:()=>(0,en.c4)("/"),children:"Home"}),null==t?void 0:t.map(((t,n)=>(0,$e.jsxs)(tn.AS,{onClick:()=>(0,en.c4)("/pages/"+e(t.name)),children:[t.name,(0,$e.jsx)(un,{directory:t})]},n)))]}),(0,$e.jsxs)("section",{children:[!1,!1,(0,$e.jsxs)(tn.AS,{onClick:()=>open("https://github.com/ConductionNL/woo-website-template"),children:[(0,$e.jsx)(nn,{})," GitHub"]})]})]})})},un=t=>{let{directory:e}=t;const{getSlugFromName:n}=(0,rn.O)(),[o,i]=r.useState([]),a=(0,an.H)().getDirectoryItems(e.location);r.useEffect((()=>{a.data&&i(a.data.filter((t=>"README"!==t.name)))}),[a.data]);return o.length?(0,$e.jsx)(tn.QI,{className:"TopNav-module--dropDownList--8b08d",children:o.map(((t,r)=>(0,$e.jsx)(tn.AS,{onClick:r=>((t,r)=>{t.stopPropagation(),(0,en.c4)("/pages/"+n(e.name)+"/"+r)})(r,t.href),children:t.name},r)))}):(0,$e.jsx)($e.Fragment,{})};var cn=n(5505);const ln=t=>{let{layoutClassName:e}=t;return(0,$e.jsx)(tn.mr,{className:(0,cn.Z)("HeaderTemplate-module--container--6ef3b",[e&&e]),children:(0,$e.jsx)(sn,{})})},fn=t=>{let{children:e}=t;return(0,$e.jsxs)("div",{className:"Content-module--container--381a1",children:[(0,$e.jsx)(ln,{layoutClassName:"Content-module--header--e181d"}),(0,$e.jsx)("div",{className:"Content-module--pageContent--d314d",children:e}),(0,$e.jsx)(on,{})]})};var pn=n(5804);var dn=t=>{let{children:e,pageContext:n,location:o}=t;const[i,a]=r.useState(r.useContext(Nt.Z)),[s,u]=r.useState(Mt);return r.useEffect((()=>{a(new Tt.Z)}),[n]),r.useEffect((()=>{u((t=>({...t,initiated:!0,gatsby:{pageContext:n,location:o,previousPath:o.pathname}})))}),[n,o]),s.initiated?(0,$e.jsx)($e.Fragment,{children:(0,$e.jsxs)(It,{value:[s,u],children:[(0,$e.jsx)(Xe,{}),(0,$e.jsx)(Nt.u,{value:i,children:(0,$e.jsxs)(tn.BB,{className:(0,cn.Z)("xxllnc-theme","Layout-module--document--940c1"),children:[(0,$e.jsx)(pn.x7,{position:"bottom-right"}),(0,$e.jsx)("div",{className:"Layout-module--container--e5e32",children:(0,$e.jsx)(fn,{children:e})})]})})]})}):(0,$e.jsx)($e.Fragment,{})}},9499:function(t,e,n){"use strict";n.r(e),n.d(e,{BaseContext:function(){return F},Link:function(){return W},Location:function(){return M},LocationProvider:function(){return D},Match:function(){return X},Redirect:function(){return $},Router:function(){return _},ServerLocation:function(){return I},createHistory:function(){return O},createMemorySource:function(){return k},globalHistory:function(){return P},isRedirect:function(){return Y},matchPath:function(){return c},navigate:function(){return C},redirectTo:function(){return J},resolve:function(){return l},useLocation:function(){return tt},useMatch:function(){return rt},useNavigate:function(){return et},useParams:function(){return nt}});var r=n(7294),o=n(1143),i=n.n(o),a=n(9712),s=function(t,e){return t.substr(0,e.length)===e},u=function(t,e){for(var n=void 0,r=void 0,o=e.split("?")[0],a=v(o),s=""===a[0],u=g(t),c=0,l=u.length;ce.score?-1:t.index-e.index}))},v=function(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")},y=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r0})))&&n.length>0?"?"+n.join("&"):"")},b=["uri","path"],w=Object.assign||function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},s=a.state,u=a.replace,c=void 0!==u&&u;if("number"==typeof e)t.history.go(e);else{s=w({},s,{key:Date.now()+""});try{o||c?t.history.replaceState(s,null,e):t.history.pushState(s,null,e)}catch(f){t.location[c?"replace":"assign"](e)}}r=x(t),o=!0;var l=new Promise((function(t){return i=t}));return n.forEach((function(t){return t({location:r,action:"PUSH"})})),l}}},k=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",e=t.indexOf("?"),n={pathname:e>-1?t.substr(0,e):t,search:e>-1?t.substr(e):""},r=0,o=[n],i=[null];return{get location(){return o[r]},addEventListener:function(t,e){},removeEventListener:function(t,e){},history:{get entries(){return o},get index(){return r},get state(){return i[r]},pushState:function(t,e,n){var a=n.split("?"),s=a[0],u=a[1],c=void 0===u?"":u;r++,o.push({pathname:s,search:c.length?"?"+c:c}),i.push(t)},replaceState:function(t,e,n){var a=n.split("?"),s=a[0],u=a[1],c=void 0===u?"":u;o[r]={pathname:s,search:c},i[r]=t},go:function(t){var e=r+t;e<0||e>i.length-1||(r=e)}}}},S=!("undefined"==typeof window||!window.document||!window.document.createElement),P=O(S?window:k()),C=P.navigate,j=Object.assign||function(t){for(var e=1;e=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}function R(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function A(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function L(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var N=function(t,e){var n=(0,r.createContext)(e);return n.displayName=t,n},T=N("Location"),M=function(t){var e=t.children;return r.createElement(T.Consumer,null,(function(t){return t?e(t):r.createElement(D,null,e)}))},D=function(t){function e(){var n,r;R(this,e);for(var o=arguments.length,i=Array(o),a=0;a-1?(i=e.substring(0,o),a=e.substring(o)):i=e,r.createElement(T.Provider,{value:{location:{pathname:i,search:a,hash:""},navigate:function(){throw new Error("You can't call navigate on the server.")}}},n)},F=N("Base",{baseuri:"/",basepath:"/",navigate:P.navigate}),_=function(t){return r.createElement(F.Consumer,null,(function(e){return r.createElement(M,null,(function(n){return r.createElement(U,j({},e,n,t))}))}))},U=function(t){function e(){return R(this,e),A(this,t.apply(this,arguments))}return L(e,t),e.prototype.render=function(){var t=this.props,e=t.location,n=t.navigate,o=t.basepath,i=t.primary,a=t.children,s=(t.baseuri,t.component),c=void 0===s?"div":s,f=E(t,["location","navigate","basepath","primary","children","baseuri","component"]),p=r.Children.toArray(a).reduce((function(t,e){var n=it(o)(e);return t.concat(n)}),[]),d=e.pathname,h=u(p,d);if(h){var m=h.params,g=h.uri,v=h.route,y=h.route.value;o=v.default?o:v.path.replace(/\*$/,"");var b=j({},m,{uri:g,location:e,navigate:function(t,e){return n(l(t,g),e)}}),w=r.cloneElement(y,b,y.props.children?r.createElement(_,{location:e,primary:i},y.props.children):void 0),x=i?H:c,O=i?j({uri:g,location:e,component:c},f):f;return r.createElement(F.Provider,{value:{baseuri:g,basepath:o,navigate:b.navigate}},r.createElement(x,O,w))}return null},e}(r.PureComponent);U.defaultProps={primary:!0};var q=N("Focus"),H=function(t){var e=t.uri,n=t.location,o=t.component,i=E(t,["uri","location","component"]);return r.createElement(q.Consumer,null,(function(t){return r.createElement(z,j({},i,{component:o,requestFocus:t,uri:e,location:n}))}))},Z=!0,Q=0,z=function(t){function e(){var n,r;R(this,e);for(var o=arguments.length,i=Array(o),a=0;ao?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(o);++r=o?t:r(t,e,n)}},8805:function(t,e,n){var r=n(180),o=n(2689),i=n(3140),a=n(9833);t.exports=function(t){return function(e){e=a(e);var n=o(e)?i(e):void 0,s=n?n[0]:e.charAt(0),u=n?r(n,1).join(""):e.slice(1);return s[t]()+u}}},1957:function(t,e,n){var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;t.exports=r},9607:function(t,e,n){var r=n(2705),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(u){}var o=a.call(t);return r&&(e?t[s]=n:delete t[s]),o}},2689:function(t){var e=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");t.exports=function(t){return e.test(t)}},2333:function(t){var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},5639:function(t,e,n){var r=n(1957),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},3140:function(t,e,n){var r=n(4286),o=n(2689),i=n(676);t.exports=function(t){return o(t)?i(t):r(t)}},676:function(t){var e="\\ud800-\\udfff",n="["+e+"]",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",o="\\ud83c[\\udffb-\\udfff]",i="[^"+e+"]",a="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",u="(?:"+r+"|"+o+")"+"?",c="[\\ufe0e\\ufe0f]?",l=c+u+("(?:\\u200d(?:"+[i,a,s].join("|")+")"+c+u+")*"),f="(?:"+[i+r+"?",r,a,s,n].join("|")+")",p=RegExp(o+"(?="+o+")|"+f+l,"g");t.exports=function(t){return t.match(p)||[]}},8403:function(t,e,n){var r=n(9833),o=n(1700);t.exports=function(t){return o(r(t).toLowerCase())}},1469:function(t){var e=Array.isArray;t.exports=e},7005:function(t){t.exports=function(t){return null!=t&&"object"==typeof t}},3448:function(t,e,n){var r=n(4239),o=n(7005);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},928:function(t){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},9833:function(t,e,n){var r=n(531);t.exports=function(t){return null==t?"":r(t)}},1700:function(t,e,n){var r=n(8805)("toUpperCase");t.exports=r},3897:function(t){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i},t.exports.__esModule=!0,t.exports.default=t.exports},7071:function(t){t.exports=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o},t.exports.__esModule=!0,t.exports.default=t.exports},6015:function(t){function e(n,r){return t.exports=e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},t.exports.__esModule=!0,t.exports.default=t.exports,e(n,r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},7424:function(t,e,n){var r=n(5372),o=n(8872),i=n(6116),a=n(2218);t.exports=function(t,e){return r(t)||o(t,e)||i(t,e)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},5036:function(t,e,n){var r=n(8698).default;t.exports=function(t,e){if("object"!==r(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!==r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},4062:function(t,e,n){var r=n(8698).default,o=n(5036);t.exports=function(t){var e=o(t,"string");return"symbol"===r(e)?e:String(e)},t.exports.__esModule=!0,t.exports.default=t.exports},8698:function(t){function e(n){return t.exports=e="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.exports.__esModule=!0,t.exports.default=t.exports,e(n)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},6116:function(t,e,n){var r=n(3897);t.exports=function(t,e){if(t){if("string"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}},t.exports.__esModule=!0,t.exports.default=t.exports},2911:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SCRIPT_TYPE="text/partytown",e.partytownSnippet=t=>((t,e)=>{const{forward:n=[],...r}=t||{},o=JSON.stringify(r,((t,e)=>("function"==typeof e&&(e=String(e)).startsWith(t+"(")&&(e="function "+e),e)));return["!(function(w,p,f,c){",Object.keys(r).length>0?`c=w[p]=Object.assign(w[p]||{},${o});`:"c=w[p]=w[p]||{};","c[f]=(c[f]||[])",n.length>0?`.concat(${JSON.stringify(n)})`:"","})(window,'partytown','forward');",e].join("")})(t,'/* Partytown 0.5.4 - MIT builder.io */\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,"/"==(a=(o.lib||"/~partytown/")+(o.debug?"debug/":""))[0]&&(s=e.querySelectorAll(\'script[type="text/partytown"]\'),i!=t?i.dispatchEvent(new CustomEvent("pt1",{detail:t})):(d=setTimeout(w,1e4),e.addEventListener("pt0",f),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||"partytown-sw.js"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener("statechange",(function(t){"activated"==t.target.state&&h()}))}),console.error):w())))}function h(t){c=e.createElement(t?"script":"iframe"),t||(c.setAttribute("style","display:block;width:0;height:0;border:0;visibility:hidden"),c.setAttribute("aria-hidden",!0)),c.src=a+"partytown-"+(t?"atomics.js?v=0.5.4":"sandbox-sw.html?"+Date.now()),e.body.appendChild(c)}function w(t,n){for(f(),t=0;tt.length)&&(e=t.length);for(var n=0,r=new Array(e);n{if("string"==typeof t)return!(t=>u.test(t))(t)},l=()=>"";function f(t,e=""){var n;if(!c(t))return t;if(t.startsWith("./")||t.startsWith("../"))return t;const r=null!=(n=null!=e?e:l())?n:"/";return`${null!=r&&r.endsWith("/")?r.slice(0,-1):r}${t.startsWith("/")?t:`/${t}`}`}const p=t=>null==t?void 0:t.startsWith("/"),d=(t,e)=>"number"==typeof t?t:c(t)?p(t)?function(t){const e=f(t);return e}(t):function(t,e){if(p(t))return t;const n=(0,i.resolve)(t,e);return n}(t,e):t,h=["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace","_location"];const m={activeClassName:r.string,activeStyle:r.object,partiallyActive:r.bool};function g(t){return o.createElement(i.Location,null,(({location:e})=>o.createElement(v,a({},t,{_location:e}))))}class v extends o.Component{constructor(t){super(t),this.defaultGetProps=({isPartiallyCurrent:t,isCurrent:e})=>(this.props.partiallyActive?t:e)?{className:[this.props.className,this.props.activeClassName].filter(Boolean).join(" "),style:a({},this.props.style,this.props.activeStyle)}:null;let e=!1;"undefined"!=typeof window&&window.IntersectionObserver&&(e=!0),this.state={IOSupported:e},this.abortPrefetch=null,this.handleRef=this.handleRef.bind(this)}_prefetch(){let t=window.location.pathname+window.location.search;this.props._location&&this.props._location.pathname&&(t=this.props._location.pathname+this.props._location.search);const e=s(d(this.props.to,t)),n=e.pathname+e.search;if(t!==n)return ___loader.enqueue(n)}componentWillUnmount(){if(!this.io)return;const{instance:t,el:e}=this.io;this.abortPrefetch&&this.abortPrefetch.abort(),t.unobserve(e),t.disconnect()}handleRef(t){this.props.innerRef&&Object.prototype.hasOwnProperty.call(this.props.innerRef,"current")?this.props.innerRef.current=t:this.props.innerRef&&this.props.innerRef(t),this.state.IOSupported&&t&&(this.io=((t,e)=>{const n=new window.IntersectionObserver((n=>{n.forEach((n=>{t===n.target&&e(n.isIntersecting||n.intersectionRatio>0)}))}));return n.observe(t),{instance:n,el:t}})(t,(t=>{t?this.abortPrefetch=this._prefetch():this.abortPrefetch&&this.abortPrefetch.abort()})))}render(){const t=this.props,{to:e,getProps:n=this.defaultGetProps,onClick:r,onMouseEnter:u,state:l,replace:f,_location:p}=t,m=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,h),g=d(e,p.pathname);return c(g)?o.createElement(i.Link,a({to:g,state:l,getProps:n,innerRef:this.handleRef,onMouseEnter:t=>{u&&u(t);const e=s(g);___loader.hovering(e.pathname+e.search)},onClick:t=>{if(r&&r(t),!(0!==t.button||this.props.target||t.defaultPrevented||t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)){t.preventDefault();let e=f;const n=encodeURI(g)===p.pathname;"boolean"!=typeof f&&n&&(e=!0),window.___navigate(g,{state:l,replace:e})}return!0}},m)):o.createElement("a",a({href:g},m))}}v.propTypes=a({},m,{onClick:r.func,to:r.string.isRequired,replace:r.bool,state:r.object});o.forwardRef(((t,e)=>o.createElement(g,a({innerRef:e},t))));const y=(t,e)=>{window.___navigate(d(t,window.location.pathname),e)}},3521:function(t,e,n){"use strict";n.r(e),n.d(e,{Script:function(){return h},ScriptStrategy:function(){return c},collectedScriptsByPage:function(){return s},scriptCache:function(){return p},scriptCallbackCache:function(){return d}});var r=n(7294),o=n(9499);function i(){return i=Object.assign?Object.assign.bind():function(t){for(var e=1;ea.get(t)||[],set(t,e){const n=a.get(t)||[];n.push(e),a.set(t,n)},delete(t){a.delete(t)}},u="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(t){const e=Date.now();return setTimeout((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),1)};var c,l;(l=c||(c={})).postHydrate="post-hydrate",l.idle="idle",l.offMainThread="off-main-thread";const f=new Set(["src","strategy","dangerouslySetInnerHTML","children","onLoad","onError"]),p=new Set,d=new Map;function h(t){return r.createElement(o.Location,null,(()=>r.createElement(m,t)))}function m(t){const{src:e,strategy:n=c.postHydrate}=t||{},{pathname:a}=(0,o.useLocation)();if((0,r.useEffect)((()=>{let e;switch(n){case c.postHydrate:e=g(t);break;case c.idle:u((()=>{e=g(t)}));break;case c.offMainThread:{const e=y(t);s.set(a,e)}}return()=>{const{script:t,loadCallback:n,errorCallback:r}=e||{};n&&(null==t||t.removeEventListener("load",n)),r&&(null==t||t.removeEventListener("error",r)),null==t||t.remove()}}),[]),n===c.offMainThread){const o=v(t),u=y(t);return"undefined"==typeof window&&s.set(a,u),r.createElement("script",o?i({type:"text/partytown","data-strategy":n,crossOrigin:"anonymous"},u,{dangerouslySetInnerHTML:{__html:v(t)}}):i({type:"text/partytown",src:b(e),"data-strategy":n,crossOrigin:"anonymous"},u))}return null}function g(t){const{id:e,src:n,strategy:r=c.postHydrate,onLoad:o,onError:a}=t||{},s=e||n,u=["load","error"],l={load:o,error:a};if(s){for(const t of u)if(null!=l&&l[t]){var f;const e=d.get(s)||{},{callbacks:n=[]}=(null==e?void 0:e[t])||{};var h,m;n.push(null==l?void 0:l[t]),null!=e&&null!=(f=e[t])&&f.event?null==l||null==(h=l[t])||h.call(l,null==e||null==(m=e[t])?void 0:m.event):d.set(s,i({},e,{[t]:{callbacks:n}}))}if(p.has(s))return null}const g=v(t),b=y(t),x=document.createElement("script");e&&(x.id=e),x.dataset.strategy=r;for(const[i,c]of Object.entries(b))x.setAttribute(i,c);g&&(x.textContent=g),n&&(x.src=n);const O={};if(s){for(const t of u){const e=e=>w(e,s,t);x.addEventListener(t,e),O[`${t}Callback`]=e}p.add(s)}return document.body.appendChild(x),{script:x,loadCallback:O.loadCallback,errorCallback:O.errorCallback}}function v(t){const{dangerouslySetInnerHTML:e,children:n=""}=t||{},{__html:r=""}=e||{};return r||n}function y(t){const e={};for(const[n,r]of Object.entries(t))f.has(n)||(e[n]=r);return e}function b(t){if(t)return`/__third-party-proxy?url=${encodeURIComponent(t)}`}function w(t,e,n){const r=d.get(e)||{};for(const i of(null==r||null==(o=r[n])?void 0:o.callbacks)||[]){var o;i(t)}d.set(e,{[n]:{event:t}})}}},function(t){t.O(0,[532,774,369,349],(function(){return e=5824,t(t.s=e);var e}));t.O()}]); -//# sourceMappingURL=app-6639f1b7135524d62c20.js.map \ No newline at end of file diff --git a/app-6639f1b7135524d62c20.js.map b/app-6639f1b7135524d62c20.js.map deleted file mode 100644 index dc7dd474..00000000 --- a/app-6639f1b7135524d62c20.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"app-6639f1b7135524d62c20.js","mappings":"yIAAA,SAASA,EAAQC,EAAQC,GACvB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAC3CC,IAAmBI,EAAUA,EAAQC,QAAO,SAAUC,GACpD,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAAKP,EAAKQ,KAAKC,MAAMT,EAAMG,EAC7B,CACA,OAAOH,CACT,CACA,SAASU,EAAeC,GACtB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,CAAC,EACpDA,EAAI,EAAIf,EAAQI,OAAOc,IAAS,GAAIC,SAAQ,SAAUC,GACpDC,EAAgBP,EAAQM,EAAKF,EAAOE,GACtC,IAAKhB,OAAOkB,0BAA4BlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAAWlB,EAAQI,OAAOc,IAASC,SAAQ,SAAUC,GAC5JhB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GACF,CACA,OAAON,CACT,CACA,SAASW,EAAQC,GAGf,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAC1H,EAAGD,EAAQC,EACb,CA0CA,SAASK,EAAkBjB,EAAQkB,GACjC,IAAK,IAAIjB,EAAI,EAAGA,EAAIiB,EAAMf,OAAQF,IAAK,CACrC,IAAIkB,EAAaD,EAAMjB,GACvBkB,EAAWvB,WAAauB,EAAWvB,aAAc,EACjDuB,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD/B,OAAOoB,eAAeV,EAAQmB,EAAWb,IAAKa,EAChD,CACF,CASA,SAASZ,EAAgBK,EAAKN,EAAKgB,GAWjC,OAVIhB,KAAOM,EACTtB,OAAOoB,eAAeE,EAAKN,EAAK,CAC9BgB,MAAOA,EACP1B,YAAY,EACZwB,cAAc,EACdC,UAAU,IAGZT,EAAIN,GAAOgB,EAENV,CACT,CAwBA,SAASW,EAAeC,EAAKvB,GAC3B,OAQF,SAAyBuB,GACvB,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CACjC,CAVSG,CAAgBH,IAczB,SAA+BA,EAAKvB,GAClC,IAAI2B,EAAY,MAAPJ,EAAc,KAAyB,oBAAXX,QAA0BW,EAAIX,OAAOC,WAAaU,EAAI,cAC3F,GAAU,MAANI,EAAY,OAChB,IAGIC,EAAIC,EAHJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAET,IACE,IAAKL,EAAKA,EAAGM,KAAKV,KAAQQ,GAAMH,EAAKD,EAAGO,QAAQC,QAC9CL,EAAKlC,KAAKgC,EAAGP,QACTrB,GAAK8B,EAAK5B,SAAWF,GAF4B+B,GAAK,GAI9D,CAAE,MAAOK,GACPJ,GAAK,EACLH,EAAKO,CACP,CAAE,QACA,IACOL,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,QAC9C,CAAE,QACA,GAAIK,EAAI,MAAMH,CAChB,CACF,CACA,OAAOC,CACT,CArCiCO,CAAsBd,EAAKvB,IAAMsC,EAA4Bf,EAAKvB,IAsDnG,WACE,MAAM,IAAIuC,UAAU,4IACtB,CAxDyGC,EACzG,CACA,SAASC,EAAmBlB,GAC1B,OAEF,SAA4BA,GAC1B,GAAIC,MAAMC,QAAQF,GAAM,OAAOmB,EAAkBnB,EACnD,CAJSoB,CAAmBpB,IAQ5B,SAA0BqB,GACxB,GAAsB,oBAAXhC,QAAmD,MAAzBgC,EAAKhC,OAAOC,WAA2C,MAAtB+B,EAAK,cAAuB,OAAOpB,MAAMqB,KAAKD,EACtH,CAVoCE,CAAiBvB,IAAQe,EAA4Bf,IAgDzF,WACE,MAAM,IAAIgB,UAAU,uIACtB,CAlDiGQ,EACjG,CAkCA,SAAST,EAA4BU,EAAGC,GACtC,GAAKD,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAON,EAAkBM,EAAGC,GACvD,IAAIC,EAAI7D,OAAO0B,UAAUoC,SAASlB,KAAKe,GAAGI,MAAM,GAAI,GAEpD,MADU,WAANF,GAAkBF,EAAElC,cAAaoC,EAAIF,EAAElC,YAAYuC,MAC7C,QAANH,GAAqB,QAANA,EAAoB1B,MAAMqB,KAAKG,GACxC,cAANE,GAAqB,2CAA2CI,KAAKJ,GAAWR,EAAkBM,EAAGC,QAAzG,CALc,CAMhB,CACA,SAASP,EAAkBnB,EAAKgC,IACnB,MAAPA,GAAeA,EAAMhC,EAAIrB,UAAQqD,EAAMhC,EAAIrB,QAC/C,IAAK,IAAIF,EAAI,EAAGwD,EAAO,IAAIhC,MAAM+B,GAAMvD,EAAIuD,EAAKvD,IAAKwD,EAAKxD,GAAKuB,EAAIvB,GACnE,OAAOwD,CACT,C,iCAOA,IAAIC,EAAO,WAAiB,EACxBC,EAAU,CAAC,EACXC,EAAY,CAAC,EACbC,EAAqB,KACrBC,EAAe,CACjBC,KAAML,EACNM,QAASN,GAEX,IACwB,oBAAXO,SAAwBN,EAAUM,QACrB,oBAAbC,WAA0BN,EAAYM,UACjB,oBAArBC,mBAAkCN,EAAqBM,kBACvC,oBAAhBC,cAA6BN,EAAeM,YACzD,CAAE,MAAOC,IAAI,CACb,IAUIC,EAAcC,EAAeC,EAAeC,EAAeC,EAT7DC,GADShB,EAAQiB,WAAa,CAAC,GACTC,UACtBA,OAA+B,IAAnBF,EAA4B,GAAKA,EAC3CG,EAASnB,EACToB,EAAWnB,EACXoB,EAAoBnB,EACpBoB,EAAcnB,EAEdoB,GADeJ,EAAOZ,WACXa,EAASI,mBAAqBJ,EAASK,MAA6C,mBAA9BL,EAASM,kBAAqE,mBAA3BN,EAASO,eAC7HC,GAASV,EAAUW,QAAQ,UAAYX,EAAUW,QAAQ,YAEzDC,EAAuB,qBACvBC,EAAgB,GAChBC,EAAqB,KACrBC,EAA4B,iBAC5BC,EAAgB,gBAChBC,EAAyB,yBACzBC,EAAiC,iCACjCC,EAAc,cACdC,EAAY,YACZC,EAA8B,oBAC9BC,EAA0B,QAC1BC,EAAsC,CAAC,OAAQ,OAAQ,QAAS,UAChEC,EAAa,WACf,IACE,OAAO,CACT,CAAE,MAAOhC,IACP,OAAO,CACT,CACF,CANiB,GAObiC,EAAiB,UACjBC,EAAe,QACfC,EAAW,CAACF,EAAgBC,GAChC,SAASE,EAAY7F,GAEnB,OAAO,IAAI8F,MAAM9F,EAAK,CACpB+F,IAAK,SAAa3G,EAAQ4G,GACxB,OAAOA,KAAQ5G,EAASA,EAAO4G,GAAQ5G,EAAOsG,EAChD,GAEJ,CACA,IAAIO,EAAkBJ,GAAgClG,EAAnB+D,EAAe,CAAC,EAAiCgC,EAAgB,CAClG,GAAM,QACN,IAAO,QACP,WAAY,QACZ,IAAO,UACP,aAAc,UACd,IAAO,QACP,WAAY,QACZ,IAAO,OACP,UAAW,OACX,IAAO,UACP,aAAc,UACd,IAAO,SACP,YAAa,SACb,IAAO,MACP,SAAU,QACR/F,EAAgB+D,EAAciC,EAAc,CAC9C,GAAM,QACN,KAAQ,QACR,WAAY,QACZ,KAAQ,UACR,aAAc,UACd,KAAQ,QACR,WAAY,UACVjC,IACAwC,EAAkBL,GAAiClG,EAApBgE,EAAgB,CAAC,EAAkC+B,EAAgB,CACpG,MAAS,MACT,QAAW,MACX,MAAS,MACT,KAAQ,MACR,QAAW,MACX,OAAU,MACV,IAAO,QACL/F,EAAgBgE,EAAegC,EAAc,CAC/C,MAAS,OACT,QAAW,OACX,MAAS,SACPhC,IACAwC,EAAuBN,GAAiClG,EAApBiE,EAAgB,CAAC,EAAkC8B,EAAgB,CACzG,IAAO,YACP,IAAO,aACP,IAAO,SACP,IAAO,WACP,IAAO,aACP,IAAO,WACP,IAAO,YACL/F,EAAgBiE,EAAe+B,EAAc,CAC/C,KAAQ,WACR,KAAQ,aACR,KAAQ,aACN/B,IACAwC,EAAuBP,GAAiClG,EAApBkE,EAAgB,CAAC,EAAkC6B,EAAgB,CACzG,YAAa,MACb,aAAc,MACd,SAAU,MACV,WAAY,MACZ,aAAc,MACd,WAAY,MACZ,UAAW,QACT/F,EAAgBkE,EAAe8B,EAAc,CAC/C,WAAY,OACZ,aAAc,OACd,WAAY,SACV9B,IACAwC,EAAgC,oCAEhCC,EAAwB,iBACxBC,EAAsB,0FACtBC,GAAwBX,GAAiClG,EAApBmE,EAAgB,CAAC,EAAkC4B,EAAgB,CAC1G,IAAO,MACP,IAAO,MACP,OAAU,MACV,IAAO,MACP,IAAO,QACL/F,EAAgBmE,EAAe6B,EAAc,CAC/C,IAAO,OACP,IAAO,OACP,IAAO,SACL7B,IACA2C,GAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACvCC,GAAcD,GAASE,OAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KACnEC,GAAkC,CAAC,QAAS,cAAe,YAAa,oBAAqB,gBAC7FC,GAAkB,CACpBC,MAAO,gBACPC,aAAc,eACdC,QAAS,UACTC,UAAW,aAETC,GAAW,IAAIC,IACnBzI,OAAOD,KAAKyH,EAAgBR,IAAiB0B,IAAIF,GAASG,IAAIC,KAAKJ,KACnExI,OAAOD,KAAKyH,EAAgBP,IAAeyB,IAAIF,GAASG,IAAIC,KAAKJ,KACjE,IAAIK,GAAmB,GAAGZ,OAAOf,EAAU9D,EAAmBoF,IAAW,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,OAAQ,SAAU,OAAQ,YAAa,SAAU,YAAa,kBAAmB,gBAAiB,OAAQ,KAAM,UAAW,iBAAkB,cAAe,SAAU,KAAM,YAAa,aAAc,QAAS,aAAc,aAAc,YAAa,YAAa,QAAS,aAAc,eAAgB,OAAQ,WAAY,WAAY,QAAS,KAAML,GAAgBC,MAAOD,GAAgBE,aAAcF,GAAgBG,QAASH,GAAgBI,YAAYN,OAAOF,GAASW,KAAI,SAAU7E,GACllB,MAAO,GAAGoE,OAAOpE,EAAG,IACtB,KAAIoE,OAAOD,GAAYU,KAAI,SAAU7E,GACnC,MAAO,KAAKoE,OAAOpE,EACrB,KACIiF,GAAUtD,EAAOuD,mBAAqB,CAAC,EAe3C,GAAItD,GAA8C,mBAA3BA,EAASuD,cAA8B,CAChD,CAAC,CAAC,qBAAsB,gBAAiB,CAAC,kBAAmB,aAAc,CAAC,sBAAuB,iBAAkB,CAAC,qBAAsB,gBAAiB,CAAC,yBAA0B,oBAAqB,CAAC,wBAAyB,kBAAmB,CAAC,oBAAqB,cAAe,CAAC,iBAAkB,YAAa,CAAC,8BAA+B,wBAAyB,CAAC,yBAA0B,oBAAqB,CAAC,uBAAwB,kBAAmB,CAAC,4BAA6B,sBAAuB,CAAC,2BAA4B,sBAAuB,CAAC,0BAA2B,qBAC/lBjI,SAAQ,SAAUkI,GACtB,IAAIC,EAAQjH,EAAegH,EAAM,GAC/BE,EAAOD,EAAM,GACblI,EAAMkI,EAAM,GACVE,EAdR,SAAgBA,GAGd,MAAY,KAARA,GACQ,UAARA,IACQ,SAARA,GACGA,EACT,CAOcC,CApBd,SAAuBF,GACrB,IAAIG,EAAU7D,EAASuD,cAAc,UAAYG,EAAO,KACxD,GAAIG,EACF,OAAOA,EAAQC,aAAaJ,EAEhC,CAeqBK,CAAcL,IAC3BC,UACFN,GAAQ9H,GAAOoI,EAEnB,GACF,CACA,IAAIK,GAAW,CACbC,aAAc,QACdC,cAAe,UACfC,UAAWvD,EACXwD,iBAAkBvD,EAClBwD,gBAAgB,EAChBC,YAAY,EACZC,UAAU,EACVC,sBAAsB,EACtBC,kBAAkB,EAClBC,eAAgB,QAChBC,oBAAoB,EACpBC,oBAAoB,EACpBC,kBAAkB,GAGhBxB,GAAQyB,eACVzB,GAAQc,UAAYd,GAAQyB,cAE9B,IAAIC,GAAU/J,EAAeA,EAAe,CAAC,EAAGgJ,IAAWX,IACtD0B,GAAQV,iBAAgBU,GAAQN,kBAAmB,GACxD,IAAIO,GAAS,CAAC,EACdzK,OAAOD,KAAK0J,IAAU1I,SAAQ,SAAUC,GACtChB,OAAOoB,eAAeqJ,GAAQzJ,EAAK,CACjCV,YAAY,EACZoK,IAAK,SAAatB,GAChBoB,GAAQxJ,GAAOoI,EACfuB,GAAY5J,SAAQ,SAAU6J,GAC5B,OAAOA,EAAGH,GACZ,GACF,EACApD,IAAK,WACH,OAAOmD,GAAQxJ,EACjB,GAEJ,IAEAhB,OAAOoB,eAAeqJ,GAAQ,eAAgB,CAC5CnK,YAAY,EACZoK,IAAK,SAAatB,GAChBoB,GAAQZ,UAAYR,EACpBuB,GAAY5J,SAAQ,SAAU6J,GAC5B,OAAOA,EAAGH,GACZ,GACF,EACApD,IAAK,WACH,OAAOmD,GAAQZ,SACjB,IAEFpE,EAAOuD,kBAAoB0B,GAC3B,IAAIE,GAAc,GAOlB,IAAIE,GAAIzE,EACJ0E,GAAuB,CACzBC,KAAM,GACNC,EAAG,EACHC,EAAG,EACHC,OAAQ,EACRC,OAAO,EACPC,OAAO,GAqBT,IAAIC,GAAS,iEACb,SAASC,KAGP,IAFA,IAAIP,EAAO,GACPQ,EAAK,GACFR,KAAS,GACdQ,GAAMF,GAAuB,GAAhBG,KAAKC,SAAgB,GAEpC,OAAOF,CACT,CACA,SAASG,GAAQpK,GAEf,IADA,IAAIqK,EAAQ,GACHhL,GAAKW,GAAO,IAAIT,SAAW,EAAGF,KACrCgL,EAAMhL,GAAKW,EAAIX,GAEjB,OAAOgL,CACT,CACA,SAASC,GAAWC,GAClB,OAAIA,EAAKC,UACAJ,GAAQG,EAAKC,YAEZD,EAAKtC,aAAa,UAAY,IAAIwC,MAAM,KAAK5L,QAAO,SAAUQ,GACpE,OAAOA,CACT,GAEJ,CACA,SAASqL,GAAWC,GAClB,MAAO,GAAGhE,OAAOgE,GAAKC,QAAQ,KAAM,SAASA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,OAClI,CAMA,SAASC,GAAWC,GAClB,OAAOpM,OAAOD,KAAKqM,GAAU,CAAC,GAAGC,QAAO,SAAUC,EAAKC,GACrD,OAAOD,EAAM,GAAGrE,OAAOsE,EAAW,MAAMtE,OAAOmE,EAAOG,GAAWC,OAAQ,IAC3E,GAAG,GACL,CACA,SAASC,GAAsBC,GAC7B,OAAOA,EAAU3B,OAASD,GAAqBC,MAAQ2B,EAAU1B,IAAMF,GAAqBE,GAAK0B,EAAUzB,IAAMH,GAAqBG,GAAKyB,EAAUxB,SAAWJ,GAAqBI,QAAUwB,EAAUvB,OAASuB,EAAUtB,KAC9N,CA2CA,IAAIuB,GAAa,qsrBACjB,SAASC,KACP,IAAIC,EAAMxG,EACNyG,EAAMxG,EACNyG,EAAKtC,GAAOb,UACZoD,EAAKvC,GAAOZ,iBACZoD,EAAIN,GACR,GAAII,IAAOF,GAAOG,IAAOF,EAAK,CAC5B,IAAII,EAAQ,IAAIC,OAAO,MAAMlF,OAAO4E,EAAK,OAAQ,KAC7CO,EAAiB,IAAID,OAAO,OAAOlF,OAAO4E,EAAK,OAAQ,KACvDQ,EAAQ,IAAIF,OAAO,MAAMlF,OAAO6E,GAAM,KAC1CG,EAAIA,EAAEf,QAAQgB,EAAO,IAAIjF,OAAO8E,EAAI,MAAMb,QAAQkB,EAAgB,KAAKnF,OAAO8E,EAAI,MAAMb,QAAQmB,EAAO,IAAIpF,OAAO+E,GACpH,CACA,OAAOC,CACT,CACA,IAAIK,IAAe,EACnB,SAASC,KACH9C,GAAOV,aAAeuD,MAvH5B,SAAmBV,GACjB,GAAKA,GAAQhH,EAAb,CAGA,IAAI4H,EAAQ/H,EAASO,cAAc,SACnCwH,EAAMC,aAAa,OAAQ,YAC3BD,EAAME,UAAYd,EAGlB,IAFA,IAAIe,EAAelI,EAASK,KAAK8H,WAC7BC,EAAc,KACTlN,EAAIgN,EAAa9M,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACjD,IAAImN,EAAQH,EAAahN,GACrBoN,GAAWD,EAAMC,SAAW,IAAIC,cAChC,CAAC,QAAS,QAAQ9H,QAAQ6H,IAAY,IACxCF,EAAcC,EAElB,CACArI,EAASK,KAAKmI,aAAaT,EAAOK,EAblC,CAeF,CAsGIK,CAAUtB,MACVU,IAAe,EAEnB,CACA,IAAIa,GAAY,CACdC,OAAQ,WACN,MAAO,CACLC,IAAK,CACHzB,IAAKA,GACLsB,UAAWX,IAGjB,EACAe,MAAO,WACL,MAAO,CACLC,yBAA0B,WACxBhB,IACF,EACAiB,YAAa,WACXjB,IACF,EAEJ,GAEEkB,GAAIjJ,GAAU,CAAC,EACdiJ,GAAEtI,KAAuBsI,GAAEtI,GAAwB,CAAC,GACpDsI,GAAEtI,GAAsBiG,SAAQqC,GAAEtI,GAAsBiG,OAAS,CAAC,GAClEqC,GAAEtI,GAAsBmI,QAAOG,GAAEtI,GAAsBmI,MAAQ,CAAC,GAChEG,GAAEtI,GAAsBuI,QAAOD,GAAEtI,GAAsBuI,MAAQ,IACpE,IAAIC,GAAYF,GAAEtI,GACdyI,GAAY,GAQZC,IAAS,EASb,SAASC,GAAOC,GACd,IAAIC,EAAMD,EAAcC,IACtBC,EAAwBF,EAAcG,WACtCA,OAAuC,IAA1BD,EAAmC,CAAC,EAAIA,EACrDE,EAAwBJ,EAAcK,SACtCA,OAAqC,IAA1BD,EAAmC,GAAKA,EACrD,MAA6B,iBAAlBJ,EACF/C,GAAW+C,GAEX,IAAI9G,OAAO+G,EAAK,KAAK/G,OAjIhC,SAAwBiH,GACtB,OAAOlP,OAAOD,KAAKmP,GAAc,CAAC,GAAG7C,QAAO,SAAUC,EAAK+C,GACzD,OAAO/C,EAAM,GAAGrE,OAAOoH,EAAe,MAAOpH,OAAO+D,GAAWkD,EAAWG,IAAiB,KAC7F,GAAG,IAAI7C,MACT,CA6HuC8C,CAAeJ,GAAa,KAAKjH,OAAOmH,EAAS1G,IAAIoG,IAAQS,KAAK,IAAK,MAAMtH,OAAO+G,EAAK,IAEhI,CACA,SAASQ,GAAgBC,EAASC,EAAQC,GACxC,GAAIF,GAAWA,EAAQC,IAAWD,EAAQC,GAAQC,GAChD,MAAO,CACLD,OAAQA,EACRC,SAAUA,EACVC,KAAMH,EAAQC,GAAQC,GAG5B,CA5BI/J,KACFiJ,IAAUpJ,EAASI,gBAAgBgK,SAAW,aAAe,iBAAiB5L,KAAKwB,EAASqK,cAC/ErK,EAASM,iBAAiB,oBAV1B,SAASgK,IACtBtK,EAASuK,oBAAoB,mBAAoBD,GACjDlB,GAAS,EACTD,GAAUlG,KAAI,SAAUuH,GACtB,OAAOA,GACT,GACF,KAqCA,IAkBI5D,GAAS,SAA0B6D,EAASD,EAAIE,EAAcC,GAChE,IAGEzP,EACAK,EACAqP,EALEtQ,EAAOC,OAAOD,KAAKmQ,GACrBrP,EAASd,EAAKc,OACdW,OAA2B8O,IAAhBF,EArBK,SAAuBG,EAAMH,GAC/C,OAAO,SAAUI,EAAGC,EAAGC,EAAG7F,GACxB,OAAO0F,EAAK3N,KAAKwN,EAAaI,EAAGC,EAAGC,EAAG7F,EACzC,CACF,CAiB2C8F,CAAcV,EAAIG,GAAeH,EAW1E,SAPqBK,IAAjBH,GACFxP,EAAI,EACJ0P,EAASH,EAAQnQ,EAAK,MAEtBY,EAAI,EACJ0P,EAASF,GAEJxP,EAAIE,EAAQF,IAEjB0P,EAAS7O,EAAS6O,EAAQH,EAD1BlP,EAAMjB,EAAKY,IAC6BK,EAAKkP,GAE/C,OAAOG,CACT,EA+CA,SAASO,GAAMC,GACb,IAAIC,EAtBN,SAAoBC,GAIlB,IAHA,IAAIC,EAAS,GACTC,EAAU,EACVpQ,EAASkQ,EAAOlQ,OACboQ,EAAUpQ,GAAQ,CACvB,IAAImB,EAAQ+O,EAAOG,WAAWD,KAC9B,GAAIjP,GAAS,OAAUA,GAAS,OAAUiP,EAAUpQ,EAAQ,CAC1D,IAAIsQ,EAAQJ,EAAOG,WAAWD,KACN,QAAX,MAARE,GAEHH,EAAOzQ,OAAe,KAARyB,IAAkB,KAAe,KAARmP,GAAiB,QAExDH,EAAOzQ,KAAKyB,GACZiP,IAEJ,MACED,EAAOzQ,KAAKyB,EAEhB,CACA,OAAOgP,CACT,CAEgBI,CAAWP,GACzB,OAA0B,IAAnBC,EAAQjQ,OAAeiQ,EAAQ,GAAGhN,SAAS,IAAM,IAC1D,CAaA,SAASuN,GAAeC,GACtB,OAAOtR,OAAOD,KAAKuR,GAAOjF,QAAO,SAAUC,EAAKqD,GAC9C,IAAIC,EAAO0B,EAAM3B,GAOjB,QANiBC,EAAKA,KAEpBtD,EAAIsD,EAAKD,UAAYC,EAAKA,KAE1BtD,EAAIqD,GAAYC,EAEXtD,CACT,GAAG,CAAC,EACN,CACA,SAASiF,GAAY7B,EAAQ4B,GAC3B,IACIE,GADS5Q,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnD6Q,UAC7BA,OAAkC,IAAtBD,GAAuCA,EACjDE,EAAaL,GAAeC,GACO,mBAA5B3C,GAAUL,MAAMqD,SAA2BF,EAGpD9C,GAAUvC,OAAOsD,GAAUjP,EAAeA,EAAe,CAAC,EAAGkO,GAAUvC,OAAOsD,IAAW,CAAC,GAAIgC,GAF9F/C,GAAUL,MAAMqD,QAAQjC,EAAQ2B,GAAeC,IAWlC,QAAX5B,GACF6B,GAAY,KAAMD,EAEtB,CACA,IAYIM,GAAaC,GAAWC,GACxB1F,GAASuC,GAAUvC,OACrBsC,GAAQC,GAAUD,MAChBqD,IAAgC9Q,EAAlB2Q,GAAc,CAAC,EAAgC5K,EAAgBhH,OAAOgS,OAAOvK,EAAqBT,KAAmB/F,EAAgB2Q,GAAa3K,EAAcjH,OAAOgS,OAAOvK,EAAqBR,KAAiB2K,IAClOK,GAAuB,KACvBC,GAAa,CAAC,EACdC,GAAc,CAAC,EACfC,GAAa,CAAC,EACdC,GAAgB,CAAC,EACjBC,GAAW,CAAC,EACZC,IAA4BtR,EAAhB4Q,GAAY,CAAC,EAA8B7K,EAAgBhH,OAAOD,KAAKwH,EAAgBP,KAAmB/F,EAAgB4Q,GAAW5K,EAAcjH,OAAOD,KAAKwH,EAAgBN,KAAiB4K,IAIhN,SAASW,GAAY5I,EAAW6I,GAC9B,IAJkBzO,EAId0O,EAAQD,EAAI1G,MAAM,KAClB2D,EAASgD,EAAM,GACf/C,EAAW+C,EAAM3O,MAAM,GAAGwL,KAAK,KACnC,OAAIG,IAAW9F,GAA0B,KAAb+F,IAPV3L,EAOyC2L,GANnD9G,GAAiB3C,QAAQlC,IASxB,KAFA2L,CAIX,CACA,IA1XkB/E,GA0Xd+H,GAAQ,WACV,IAAIC,EAAS,SAAgBC,GAC3B,OAAOxG,GAAOD,IAAQ,SAAUzI,EAAG6J,EAAOkC,GAExC,OADA/L,EAAE+L,GAAUrD,GAAOmB,EAAOqF,EAAS,CAAC,GAC7BlP,CACT,GAAG,CAAC,EACN,EACAuO,GAAaU,GAAO,SAAUtG,EAAKsD,EAAMD,IACnCC,EAAK,KACPtD,EAAIsD,EAAK,IAAMD,GAEbC,EAAK,KACOA,EAAK,GAAGzP,QAAO,SAAUqQ,GACrC,MAAoB,iBAANA,CAChB,IACQzP,SAAQ,SAAU+R,GACxBxG,EAAIwG,EAAMhP,SAAS,KAAO6L,CAC5B,IAEF,OAAOrD,CACT,IACA6F,GAAcS,GAAO,SAAUtG,EAAKsD,EAAMD,IACxCrD,EAAIqD,GAAYA,EACZC,EAAK,KACOA,EAAK,GAAGzP,QAAO,SAAUqQ,GACrC,MAAoB,iBAANA,CAChB,IACQzP,SAAQ,SAAU+R,GACxBxG,EAAIwG,GAASnD,CACf,IAEF,OAAOrD,CACT,IACAgG,GAAWM,GAAO,SAAUtG,EAAKsD,EAAMD,GACrC,IAAIoD,EAAUnD,EAAK,GAKnB,OAJAtD,EAAIqD,GAAYA,EAChBoD,EAAQhS,SAAQ,SAAU+R,GACxBxG,EAAIwG,GAASnD,CACf,IACOrD,CACT,IAGA,IAAI0G,EAAa,QAAS5G,IAAU3B,GAAOwI,aACvCC,EAAc7G,GAAOqC,IAAO,SAAUpC,EAAK6G,GAC7C,IAAIC,EAAwBD,EAAK,GAC7BzD,EAASyD,EAAK,GACdxD,EAAWwD,EAAK,GAgBpB,MAfe,QAAXzD,GAAqBsD,IACvBtD,EAAS,OAE0B,iBAA1B0D,IACT9G,EAAI+G,MAAMD,GAAyB,CACjC1D,OAAQA,EACRC,SAAUA,IAGuB,iBAA1ByD,IACT9G,EAAIgH,SAASF,EAAsBtP,SAAS,KAAO,CACjD4L,OAAQA,EACRC,SAAUA,IAGPrD,CACT,GAAG,CACD+G,MAAO,CAAC,EACRC,SAAU,CAAC,IAEblB,GAAac,EAAYG,MACzBhB,GAAgBa,EAAYI,SAC5BrB,GAAuBsB,GAAmB9I,GAAOf,aAAc,CAC7D8J,OAAQ/I,GAAOd,eAEnB,EAOA,SAAS8J,GAAU/D,EAAQmB,GACzB,OAAQqB,GAAWxC,IAAW,CAAC,GAAGmB,EACpC,CAIA,SAAS6C,GAAQhE,EAAQoD,GACvB,OAAQR,GAAS5C,IAAW,CAAC,GAAGoD,EAClC,CACA,SAASa,GAAU3P,GACjB,OAAOoO,GAAWpO,IAAS,CACzB0L,OAAQ,KACRC,SAAU,KAEd,CAYA,SAASiE,KACP,OAAO3B,EACT,CAtekBrH,GAocT,SAAU8F,GACjBuB,GAAuBsB,GAAmB7C,EAAEhH,aAAc,CACxD8J,OAAQ/I,GAAOd,eAEnB,EAvcEgB,GAAYpK,KAAKqK,IAwcnB+H,KA8BA,IAAIkB,GAAqB,WACvB,MAAO,CACLnE,OAAQ,KACRC,SAAU,KACVmE,KAAM,GAEV,EACA,SAASP,GAAmBQ,GAC1B,IACIC,GADSpT,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACtD4S,OAC1BA,OAA4B,IAAnBQ,EAA4BhN,EAAiBgN,EACpDxG,EAAQjG,EAAgBiM,GAAQO,GAChCrE,EAASlI,EAAgBgM,GAAQO,IAAkBvM,EAAgBgM,GAAQhG,GAC3EyG,EAAUF,KAAiBpF,GAAUvC,OAAS2H,EAAgB,KAClE,OAAOrE,GAAUuE,GAAW,IAC9B,CACA,IAAIC,IAAkDjT,EAA3B6Q,GAAuB,CAAC,EAAyC9K,EAAgBhH,OAAOD,KAAK0H,EAAqBT,KAAmB/F,EAAgB6Q,GAAsB7K,EAAcjH,OAAOD,KAAK0H,EAAqBR,KAAiB6K,IACtQ,SAASqC,GAAiBnC,GACxB,IAAIoC,EAEAC,GADSzT,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACjD0T,YAC/BA,OAAsC,IAAxBD,GAAyCA,EACrDE,GAA4BtT,EAAhBmT,EAAY,CAAC,EAA8BpN,EAAgB,GAAGiB,OAAOwC,GAAOb,UAAW,KAAK3B,OAAOjB,IAAkB/F,EAAgBmT,EAAWnN,EAAc,GAAGgB,OAAOwC,GAAOb,UAAW,KAAK3B,OAAOhB,IAAgBmN,GAClOI,EAAc,KACdhB,EAASxM,GACTgL,EAAOyC,SAASF,EAASvN,KAAoBgL,EAAO0C,MAAK,SAAUC,GACrE,OAAOT,GAAoBlN,GAAgByN,SAASE,EACtD,OACEnB,EAASxM,IAEPgL,EAAOyC,SAASF,EAAStN,KAAkB+K,EAAO0C,MAAK,SAAUC,GACnE,OAAOT,GAAoBjN,GAAcwN,SAASE,EACpD,OACEnB,EAASvM,GAEX,IAAI2N,EAAY5C,EAAO3F,QAAO,SAAUC,EAAKmG,GAC3C,IAAI9C,EAAW6C,GAAY/H,GAAOb,UAAW6I,GAe7C,GAdIrG,GAAOqG,IACTA,EAAMV,GAAWyB,GAAQiB,SAAShC,GAAO/K,EAAqB8L,GAAQf,GAAOA,EAC7E+B,EAAc/B,EACdnG,EAAIoD,OAAS+C,GACJF,GAASiB,GAAQtN,QAAQuM,IAAQ,GAC1C+B,EAAc/B,EACdnG,EAAIoD,OAAS6D,GAAmBd,EAAK,CACnCe,OAAQA,KAED7D,EACTrD,EAAIqD,SAAWA,EACN8C,IAAQhI,GAAOZ,kBAAoB4I,IAAQ8B,EAASvN,IAAmByL,IAAQ8B,EAAStN,IACjGqF,EAAIwH,KAAKvT,KAAKkS,IAEX6B,GAAehI,EAAIoD,QAAUpD,EAAIqD,SAAU,CAC9C,IAAIwD,EAAuB,OAAhBqB,EAAuBb,GAAUrH,EAAIqD,UAAY,CAAC,EACzDkF,EAAgBnB,GAAQpH,EAAIoD,OAAQpD,EAAIqD,UACxCwD,EAAKzD,SACP8E,EAAc,MAEhBlI,EAAIqD,SAAWwD,EAAKxD,UAAYkF,GAAiBvI,EAAIqD,SACrDrD,EAAIoD,OAASyD,EAAKzD,QAAUpD,EAAIoD,OACb,QAAfpD,EAAIoD,QAAqBtD,GAAY,MAAKA,GAAY,KAAM3B,GAAOwI,eAGrE3G,EAAIoD,OAAS,MAEjB,CACA,OAAOpD,CACT,GAAGuH,MAgBH,OAfI7B,EAAOyC,SAAS,cAAgBzC,EAAOyC,SAAS,UAClDG,EAAUlF,OAAS,QAEjBsC,EAAOyC,SAAS,eAAiBzC,EAAOyC,SAAS,UACnDG,EAAUlF,OAAS,OAEhBkF,EAAUlF,QAAU8D,IAAWvM,IAAiBmF,GAAa,OAAK3B,GAAOwI,eAC5E2B,EAAUlF,OAAS,OACnBkF,EAAUjF,SAAW+D,GAAQkB,EAAUlF,OAAQkF,EAAUjF,WAAaiF,EAAUjF,UAEzD,OAArBiF,EAAUlF,QAAmC,OAAhB8E,IAG/BI,EAAUlF,OAASkE,MAA4B,OAE1CgB,CACT,CACA,IAAIE,GAAuB,WACzB,SAASA,KAr5BX,SAAyBC,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI9R,UAAU,oCAExB,CAk5BI+R,CAAgBC,KAAMJ,GACtBI,KAAKC,YAAc,CAAC,CACtB,CA14BF,IAAsBH,EAAaI,EAAYC,EA07B7C,OA17BoBL,EA24BPF,EA34BoBM,EA24BX,CAAC,CACrBpU,IAAK,MACLgB,MAAO,WAEL,IADA,IAAIsT,EAAQJ,KACHK,EAAO3U,UAAUC,OAAQsU,EAAc,IAAIhT,MAAMoT,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACtFL,EAAYK,GAAQ5U,UAAU4U,GAEhC,IAAIC,EAAYN,EAAY9I,OAAO6I,KAAKQ,iBAAkB,CAAC,GAC3D1V,OAAOD,KAAK0V,GAAW1U,SAAQ,SAAUC,GACvCsU,EAAMH,YAAYnU,GAAOP,EAAeA,EAAe,CAAC,EAAG6U,EAAMH,YAAYnU,IAAQ,CAAC,GAAIyU,EAAUzU,IACpGuQ,GAAYvQ,EAAKyU,EAAUzU,IAE3B,IAAI2U,EAAalO,EAAqBT,GAAgBhG,GAClD2U,GAAYpE,GAAYoE,EAAYF,EAAUzU,IAClD2R,IACF,GACF,GACC,CACD3R,IAAK,QACLgB,MAAO,WACLkT,KAAKC,YAAc,CAAC,CACtB,GACC,CACDnU,IAAK,mBACLgB,MAAO,SAA0ByT,EAAWG,GAC1C,IAAIlE,EAAakE,EAAWlG,QAAUkG,EAAWjG,UAAYiG,EAAWhG,KAAO,CAC7E,EAAGgG,GACDA,EAiBJ,OAhBA5V,OAAOD,KAAK2R,GAAYhJ,KAAI,SAAU1H,GACpC,IAAI6U,EAAkBnE,EAAW1Q,GAC/B0O,EAASmG,EAAgBnG,OACzBC,EAAWkG,EAAgBlG,SAC3BC,EAAOiG,EAAgBjG,KACrBmD,EAAUnD,EAAK,GACd6F,EAAU/F,KAAS+F,EAAU/F,GAAU,CAAC,GACzCqD,EAAQlS,OAAS,GACnBkS,EAAQhS,SAAQ,SAAU+R,GACH,iBAAVA,IACT2C,EAAU/F,GAAQoD,GAASlD,EAE/B,IAEF6F,EAAU/F,GAAQC,GAAYC,CAChC,IACO6F,CACT,IAv7BEL,GAAYzT,EAAkBqT,EAAYtT,UAAW0T,GACrDC,GAAa1T,EAAkBqT,EAAaK,GAChDrV,OAAOoB,eAAe4T,EAAa,YAAa,CAC9CjT,UAAU,IAs7BL+S,CACT,CArD2B,GAsDvBgB,GAAW,GACXC,GAAS,CAAC,EACVC,GAAY,CAAC,EACbC,GAAsBjW,OAAOD,KAAKiW,IAwCtC,SAASE,GAAWC,EAAMC,GACxB,IAAK,IAAIb,EAAO3U,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMoT,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGa,EAAKb,EAAO,GAAK5U,UAAU4U,GAO7B,OALcO,GAAOI,IAAS,IACtBpV,SAAQ,SAAUuV,GACxBF,EAAcE,EAAO9V,MAAM,KAAM,CAAC4V,GAAanO,OAAOoO,GACxD,IAEOD,CACT,CACA,SAASG,GAAUJ,GACjB,IAAK,IAAIK,EAAQ5V,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMqU,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGJ,EAAKI,EAAQ,GAAK7V,UAAU6V,IAEhBV,GAAOI,IAAS,IACtBpV,SAAQ,SAAUuV,GACxBA,EAAO9V,MAAM,KAAM6V,EACrB,GAEF,CACA,SAASK,KACP,IAAIP,EAAOvV,UAAU,GACjByV,EAAOlU,MAAMT,UAAUqC,MAAMnB,KAAKhC,UAAW,GACjD,OAAOoV,GAAUG,GAAQH,GAAUG,GAAM3V,MAAM,KAAM6V,QAAQ/F,CAC/D,CACA,SAASqG,GAAmBC,GACA,OAAtBA,EAAWlH,SACbkH,EAAWlH,OAAS,OAEtB,IAAIC,EAAWiH,EAAWjH,SACtBD,EAASkH,EAAWlH,QAAUkE,KAClC,GAAKjE,EAEL,OADAA,EAAW+D,GAAQhE,EAAQC,IAAaA,EACjCH,GAAgBqH,GAAQ1B,YAAazF,EAAQC,IAAaH,GAAgBb,GAAUvC,OAAQsD,EAAQC,EAC7G,CACA,IAAIkH,GAAU,IAAI/B,GAMdzG,GAAM,CACRyI,MAAO,WACL,IAAIC,EAASnW,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClF,OAAIgF,GACF2Q,GAAU,cAAeQ,GACzBL,GAAa,qBAAsBK,GAC5BL,GAAa,QAASK,IAEtBC,QAAQC,OAAO,yCAE1B,EACAC,MAAO,WACL,IAhiBcjH,EAgiBV8G,EAASnW,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EuW,EAAqBJ,EAAOI,oBACF,IAA1B1M,GAAOX,iBACTW,GAAOX,gBAAiB,GAE1BW,GAAOP,kBAAmB,EAriBZ+F,EAsiBL,WACPmH,GAAY,CACVD,mBAAoBA,IAEtBZ,GAAU,QAASQ,EACrB,EA1iBGnR,IACLiJ,GAASwI,WAAWpH,EAAI,GAAKrB,GAAUrO,KAAK0P,GA0iB5C,GAuCEqH,GAAM,CACRC,OArEW,WACX9M,GAAOX,gBAAiB,EACxBW,GAAOP,kBAAmB,EAC1BqM,GAAU,SACZ,EAkEE9L,OAAQA,GACR4D,IAAKA,GACLmJ,MAzCU,CACV5H,KAAM,SAAc6H,GAClB,GAAc,OAAVA,EACF,OAAO,KAET,GAAuB,WAAnBpW,EAAQoW,IAAuBA,EAAM/H,QAAU+H,EAAM9H,SACvD,MAAO,CACLD,OAAQ+H,EAAM/H,OACdC,SAAU+D,GAAQ+D,EAAM/H,OAAQ+H,EAAM9H,WAAa8H,EAAM9H,UAG7D,GAAIxN,MAAMC,QAAQqV,IAA2B,IAAjBA,EAAM5W,OAAc,CAC9C,IAAI8O,EAAuC,IAA5B8H,EAAM,GAAGvR,QAAQ,OAAeuR,EAAM,GAAG1T,MAAM,GAAK0T,EAAM,GACrE/H,EAAS6D,GAAmBkE,EAAM,IACtC,MAAO,CACL/H,OAAQA,EACRC,SAAU+D,GAAQhE,EAAQC,IAAaA,EAE3C,CACA,GAAqB,iBAAV8H,IAAuBA,EAAMvR,QAAQ,GAAG+B,OAAOwC,GAAOb,UAAW,OAAS,GAAK6N,EAAMC,MAAM/P,IAAiC,CACrI,IAAIgQ,EAAgBxD,GAAiBsD,EAAM1L,MAAM,KAAM,CACrDuI,aAAa,IAEf,MAAO,CACL5E,OAAQiI,EAAcjI,QAAUkE,KAChCjE,SAAU+D,GAAQiE,EAAcjI,OAAQiI,EAAchI,WAAagI,EAAchI,SAErF,CACA,GAAqB,iBAAV8H,EAAoB,CAC7B,IAAIG,EAAUhE,KACd,MAAO,CACLlE,OAAQkI,EACRjI,SAAU+D,GAAQkE,EAASH,IAAUA,EAEzC,CACF,GAOAZ,QAASA,GACTF,mBAAoBA,GACpB7H,OAAQA,IAENsI,GAAc,WAChB,IACIS,GADSjX,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC/CuW,mBACjCA,OAA+C,IAA1BU,EAAmCpS,EAAWoS,GAChE7X,OAAOD,KAAK4O,GAAUvC,QAAQvL,OAAS,GAAK4J,GAAOwI,eAAiBrN,GAAU6E,GAAOX,gBAAgBwN,GAAIjJ,IAAIyI,MAAM,CACtHjL,KAAMsL,GAEV,EACA,SAASW,GAAY1O,EAAK2O,GAmBxB,OAlBA/X,OAAOoB,eAAegI,EAAK,WAAY,CACrC/B,IAAK0Q,IAEP/X,OAAOoB,eAAegI,EAAK,OAAQ,CACjC/B,IAAK,WACH,OAAO+B,EAAI4O,SAAStP,KAAI,SAAU8H,GAChC,OAAO1B,GAAO0B,EAChB,GACF,IAEFxQ,OAAOoB,eAAegI,EAAK,OAAQ,CACjC/B,IAAK,WACH,GAAKzB,EAAL,CACA,IAAIqS,EAAYxS,EAASO,cAAc,OAEvC,OADAiS,EAAUvK,UAAYtE,EAAI8O,KACnBD,EAAU7I,QAHE,CAIrB,IAEKhG,CACT,CA8CA,SAAS+O,GAAsBpB,GAC7B,IAAIqB,EAAgBrB,EAAOzF,MACzB+G,EAAOD,EAAcC,KACrBC,EAAOF,EAAcE,KACrB5I,EAASqH,EAAOrH,OAChBC,EAAWoH,EAAOpH,SAClBjD,EAAYqK,EAAOrK,UACnB6L,EAASxB,EAAOwB,OAChBC,EAAQzB,EAAOyB,MACfC,EAAS1B,EAAO0B,OAChBC,EAAU3B,EAAO2B,QACjBvH,EAAQ4F,EAAO5F,MACfwH,EAAoB5B,EAAO6B,UAC3BA,OAAkC,IAAtBD,GAAuCA,EACjD1P,EAAOqP,EAAKO,MAAQP,EAAOD,EAC7BS,EAAQ7P,EAAK6P,MACbC,EAAS9P,EAAK8P,OACZC,EAA4B,QAAXtJ,EACjBuJ,EAAY,CAACxO,GAAOZ,iBAAkB8F,EAAW,GAAG1H,OAAOwC,GAAOb,UAAW,KAAK3B,OAAO0H,GAAY,IAAIxP,QAAO,SAAUuQ,GAC5H,OAAqC,IAA9BS,EAAM+H,QAAQhT,QAAQwK,EAC/B,IAAGvQ,QAAO,SAAUuQ,GAClB,MAAa,KAANA,KAAcA,CACvB,IAAGzI,OAAOkJ,EAAM+H,SAAS3J,KAAK,KAC1B4J,EAAU,CACZ/J,SAAU,GACVF,WAAYzO,EAAeA,EAAe,CAAC,EAAG0Q,EAAMjC,YAAa,CAAC,EAAG,CACnE,cAAeQ,EACf,YAAaC,EACb,MAASsJ,EACT,KAAQ9H,EAAMjC,WAAWkK,MAAQ,MACjC,MAAS,6BACT,QAAW,OAAOnR,OAAO6Q,EAAO,KAAK7Q,OAAO8Q,MAG5CM,EAAyBL,KAAoB7H,EAAM+H,QAAQhT,QAAQ,SAAW,CAChF4S,MAAO,GAAG7Q,OAAO6Q,EAAQC,EAAS,GAAK,MAAQ,OAC7C,CAAC,EACDH,IACFO,EAAQjK,WAAW3I,GAAiB,IAElCiS,IACFW,EAAQ/J,SAAS7O,KAAK,CACpByO,IAAK,QACLE,WAAY,CACV3D,GAAI4N,EAAQjK,WAAW,oBAAsB,SAASjH,OAAOyQ,GAAWpN,OAE1E8D,SAAU,CAACoJ,YAENW,EAAQjK,WAAWsJ,OAE5B,IAAInC,EAAO5V,EAAeA,EAAe,CAAC,EAAG0Y,GAAU,CAAC,EAAG,CACzDzJ,OAAQA,EACRC,SAAUA,EACV0I,KAAMA,EACNC,KAAMA,EACNG,OAAQA,EACR/L,UAAWA,EACX6L,OAAQA,EACRnM,OAAQ3L,EAAeA,EAAe,CAAC,EAAG4Y,GAAyBlI,EAAM/E,UAEvElD,EAAQoP,EAAKO,OAASR,EAAKQ,MAAQnC,GAAa,uBAAwBL,IAAS,CACjFjH,SAAU,GACVF,WAAY,CAAC,GACXwH,GAAa,uBAAwBL,IAAS,CAChDjH,SAAU,GACVF,WAAY,CAAC,GAEfE,EAAWlG,EAAMkG,SACjBF,EAAahG,EAAMgG,WAGrB,OAFAmH,EAAKjH,SAAWA,EAChBiH,EAAKnH,WAAaA,EACdqJ,EA5FN,SAAkBtP,GAChB,IAAIyG,EAASzG,EAAKyG,OAChBC,EAAW1G,EAAK0G,SAChBP,EAAWnG,EAAKmG,SAChBF,EAAajG,EAAKiG,WAClBqJ,EAAStP,EAAKsP,OACZhN,GAAgB,IAAXgN,EAAkB,GAAGtQ,OAAOyH,EAAQ,KAAKzH,OAAOwC,GAAOb,UAAW,KAAK3B,OAAO0H,GAAY4I,EACnG,MAAO,CAAC,CACNvJ,IAAK,MACLE,WAAY,CACV1B,MAAO,kBAET4B,SAAU,CAAC,CACTJ,IAAK,SACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAGyO,GAAa,CAAC,EAAG,CAC7D3D,GAAIA,IAEN6D,SAAUA,KAGhB,CAyEWkK,CAASjD,GArHpB,SAAgBpN,GACd,IAAImG,EAAWnG,EAAKmG,SAClBiJ,EAAOpP,EAAKoP,KACZC,EAAOrP,EAAKqP,KACZpJ,EAAajG,EAAKiG,WAClB9C,EAASnD,EAAKmD,OACdM,EAAYzD,EAAKyD,UACnB,GAAID,GAAsBC,IAAc2L,EAAKQ,QAAUP,EAAKO,MAAO,CACjE,IAEIU,EAAS,CACXvO,EAHUqN,EAAKS,MACNT,EAAKU,OAEM,EACpB9N,EAAG,IAELiE,EAAkB,MAAI/C,GAAW1L,EAAeA,EAAe,CAAC,EAAG2L,GAAS,CAAC,EAAG,CAC9E,mBAAoB,GAAGnE,OAAOsR,EAAOvO,EAAI0B,EAAU1B,EAAI,GAAI,OAAO/C,OAAOsR,EAAOtO,EAAIyB,EAAUzB,EAAI,GAAI,QAE1G,CACA,MAAO,CAAC,CACN+D,IAAK,MACLE,WAAYA,EACZE,SAAUA,GAEd,CAgGWoK,CAAOnD,EAElB,CACA,SAASoD,GAAuB1C,GAC9B,IAAIoC,EAAUpC,EAAOoC,QACnBL,EAAQ/B,EAAO+B,MACfC,EAAShC,EAAOgC,OAChBrM,EAAYqK,EAAOrK,UACnB8L,EAAQzB,EAAOyB,MACfrH,EAAQ4F,EAAO5F,MACfuI,EAAqB3C,EAAO6B,UAC5BA,OAAmC,IAAvBc,GAAwCA,EAClDxK,EAAazO,EAAeA,EAAeA,EAAe,CAAC,EAAG0Q,EAAMjC,YAAasJ,EAAQ,CAC3F,MAASA,GACP,CAAC,GAAI,CAAC,EAAG,CACX,MAASrH,EAAM+H,QAAQ3J,KAAK,OAE1BqJ,IACF1J,EAAW3I,GAAiB,IAE9B,IAAI6F,EAAS3L,EAAe,CAAC,EAAG0Q,EAAM/E,QAClCK,GAAsBC,KACxBN,EAAkB,UAv1BtB,SAAyBlD,GACvB,IAAIwD,EAAYxD,EAAMwD,UACpBiN,EAAczQ,EAAM4P,MACpBA,OAAwB,IAAhBa,EAAyBvT,EAAgBuT,EACjDC,EAAe1Q,EAAM6P,OACrBA,OAA0B,IAAjBa,EAA0BxT,EAAgBwT,EACnDC,EAAsB3Q,EAAM4Q,cAC5BA,OAAwC,IAAxBD,GAAyCA,EACvDzQ,EAAM,GAUV,OAREA,GADE0Q,GAAiB7T,EACZ,aAAagC,OAAOyE,EAAU1B,EAAIH,GAAIiO,EAAQ,EAAG,QAAQ7Q,OAAOyE,EAAUzB,EAAIJ,GAAIkO,EAAS,EAAG,QAC5Fe,EACF,yBAAyB7R,OAAOyE,EAAU1B,EAAIH,GAAG,qBAAqB5C,OAAOyE,EAAUzB,EAAIJ,GAAG,SAE9F,aAAa5C,OAAOyE,EAAU1B,EAAIH,GAAG,QAAQ5C,OAAOyE,EAAUzB,EAAIJ,GAAG,QAE9EzB,GAAO,SAASnB,OAAOyE,EAAU3B,KAAOF,IAAK6B,EAAUvB,OAAS,EAAI,GAAI,MAAMlD,OAAOyE,EAAU3B,KAAOF,IAAK6B,EAAUtB,OAAS,EAAI,GAAI,MACtIhC,EAAO,UAAUnB,OAAOyE,EAAUxB,OAAQ,QAE5C,CAo0B0B6O,CAAgB,CACpCrN,UAAWA,EACXoN,eAAe,EACfhB,MAAOA,EACPC,OAAQA,IAEV3M,EAAO,qBAAuBA,EAAkB,WAElD,IAAI4N,EAAc7N,GAAWC,GACzB4N,EAAYnZ,OAAS,IACvBqO,EAAkB,MAAI8K,GAExB,IAAI5Q,EAAM,GAeV,OAdAA,EAAI7I,KAAK,CACPyO,IAAK,OACLE,WAAYA,EACZE,SAAU,CAAC+J,KAETX,GACFpP,EAAI7I,KAAK,CACPyO,IAAK,OACLE,WAAY,CACV+K,MAAO,WAET7K,SAAU,CAACoJ,KAGRpP,CACT,CA+BA,IAAI8Q,GAAWvL,GAAUvC,OACzB,SAAS+N,GAAYvK,GACnB,IAAIkJ,EAAQlJ,EAAK,GACbmJ,EAASnJ,EAAK,GAGhBwK,EADenY,EADC2N,EAAK7L,MAAM,GACgB,GACjB,GAiC5B,MAAO,CACL8U,OAAO,EACPC,MAAOA,EACPC,OAAQA,EACRnJ,KAnCEzN,MAAMC,QAAQgY,GACN,CACRpL,IAAK,IACLE,WAAY,CACV+K,MAAO,GAAGhS,OAAOwC,GAAOb,UAAW,KAAK3B,OAAOE,GAAgBC,QAEjEgH,SAAU,CAAC,CACTJ,IAAK,OACLE,WAAY,CACV+K,MAAO,GAAGhS,OAAOwC,GAAOb,UAAW,KAAK3B,OAAOE,GAAgBI,WAC/D8R,KAAM,eACNxP,EAAGuP,EAAW,KAEf,CACDpL,IAAK,OACLE,WAAY,CACV+K,MAAO,GAAGhS,OAAOwC,GAAOb,UAAW,KAAK3B,OAAOE,GAAgBG,SAC/D+R,KAAM,eACNxP,EAAGuP,EAAW,OAKV,CACRpL,IAAK,OACLE,WAAY,CACVmL,KAAM,eACNxP,EAAGuP,IAUX,CACA,IAAIE,GAA6B,CAC/BzB,OAAO,EACPC,MAAO,IACPC,OAAQ,KAOV,SAASwB,GAAS5K,EAAUD,GAC1B,IAAI8E,EAAc9E,EAIlB,MAHe,OAAXA,GAA2C,OAAxBjF,GAAOf,eAC5BgG,EAASkE,MAEJ,IAAIoD,SAAQ,SAAUwD,EAASvD,GAK5BP,GAAa,uBAErB,GAAoB,OAAhBlC,EAAsB,CACxB,IAAIrB,EAAOQ,GAAUhE,IAAa,CAAC,EACnCA,EAAWwD,EAAKxD,UAAYA,EAC5BD,EAASyD,EAAKzD,QAAUA,CAC1B,CACA,GAAIC,GAAYD,GAAUwK,GAASxK,IAAWwK,GAASxK,GAAQC,GAE7D,OAAO6K,EAAQL,GADJD,GAASxK,GAAQC,MAvBlC,SAA4BA,EAAUD,GAC/B3I,GAAe0D,GAAOH,mBAAoBqF,GAC7C8K,QAAQC,MAAM,mBAAoBzS,OAAO0H,EAAU,kBAAoB1H,OAAOyH,EAAQ,iBAE1F,CAsBIiL,CAAmBhL,EAAUD,GAC7B8K,EAAQ/Z,EAAeA,EAAe,CAAC,EAAG6Z,IAA6B,CAAC,EAAG,CACzE1K,KAAMnF,GAAOH,kBAAoBqF,GAAW+G,GAAa,wBAA+B,CAAC,IAE7F,GACF,CACA,IAAIkE,GAAS,WAAiB,EAC1BC,GAAIpQ,GAAOJ,oBAAsB1E,GAAeA,EAAYlB,MAAQkB,EAAYjB,QAAUiB,EAAc,CAC1GlB,KAAMmW,GACNlW,QAASkW,IAEPE,GAAW,aAOXC,GAAM,SAAa/W,GACrB6W,GAAEpW,KAAK,GAAGwD,OAAO6S,GAAU,KAAK7S,OAAOjE,EAAM,UAC7C6W,GAAEnW,QAAQ,GAAGuD,OAAO6S,GAAU,KAAK7S,OAAOjE,GAAO,GAAGiE,OAAO6S,GAAU,KAAK7S,OAAOjE,EAAM,WAAY,GAAGiE,OAAO6S,GAAU,KAAK7S,OAAOjE,EAAM,SAC3I,EACIgX,GAAO,CACTC,MAXU,SAAejX,GAEzB,OADA6W,GAAEpW,KAAK,GAAGwD,OAAO6S,GAAU,KAAK7S,OAAOjE,EAAM,YACtC,WACL,OAAO+W,GAAI/W,EACb,CACF,EAOE+W,IAAKA,IAEHG,GAAS,WAAiB,EAC9B,SAASC,GAAUtP,GAEjB,MAAwB,iBADZA,EAAKtC,aAAesC,EAAKtC,aAAahD,GAAiB,KAErE,CAgBA,SAAS6U,GAAgBpM,GACvB,OAAOvJ,EAAS2V,gBAAgB,6BAA8BpM,EAChE,CACA,SAAShJ,GAAcgJ,GACrB,OAAOvJ,EAASO,cAAcgJ,EAChC,CACA,SAASqM,GAAWC,GAClB,IACIC,GADS3a,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACxD4a,KACxBA,OAAwB,IAAjBD,EAA8C,QAApBD,EAAYtM,IAAgBoM,GAAkBpV,GAAgBuV,EACjG,GAA2B,iBAAhBD,EACT,OAAO7V,EAASgW,eAAeH,GAEjC,IAAItM,EAAMwM,EAAKF,EAAYtM,KAU3B,OATAhP,OAAOD,KAAKub,EAAYpM,YAAc,IAAInO,SAAQ,SAAUC,GAC1DgO,EAAIvB,aAAazM,EAAKsa,EAAYpM,WAAWlO,GAC/C,KACesa,EAAYlM,UAAY,IAC9BrO,SAAQ,SAAU+M,GACzBkB,EAAI0M,YAAYL,GAAWvN,EAAO,CAChC0N,KAAMA,IAEV,IACOxM,CACT,CAUA,IAAI2M,GAAW,CACbzP,QAAS,SAAiB0P,GACxB,IAAI/P,EAAO+P,EAAS,GACpB,GAAI/P,EAAKgQ,WAIP,GAHAD,EAAS,GAAG7a,SAAQ,SAAU+a,GAC5BjQ,EAAKgQ,WAAW5N,aAAaoN,GAAWS,GAAYjQ,EACtD,IACyC,OAArCA,EAAKtC,aAAahD,IAA2BkE,GAAOL,mBAAoB,CAC1E,IAAI2R,EAAUtW,EAASuW,cAjB/B,SAAuBnQ,GACrB,IAAIkQ,EAAU,IAAI9T,OAAO4D,EAAKoQ,UAAW,KAMzC,MAHU,GAAGhU,OAAO8T,EAAS,gCAI/B,CAS6CG,CAAcrQ,IACnDA,EAAKgQ,WAAWM,aAAaJ,EAASlQ,EACxC,MACEA,EAAKuQ,QAGX,EACAC,KAAM,SAAcT,GAClB,IAAI/P,EAAO+P,EAAS,GAChBU,EAAaV,EAAS,GAG1B,IAAKhQ,GAAWC,GAAM3F,QAAQuE,GAAOZ,kBACnC,OAAO8R,GAASzP,QAAQ0P,GAE1B,IAAIW,EAAS,IAAIpP,OAAO,GAAGlF,OAAOwC,GAAOb,UAAW,QAEpD,UADO0S,EAAW,GAAGpN,WAAW3D,GAC5B+Q,EAAW,GAAGpN,WAAW+K,MAAO,CAClC,IAAIuC,EAAeF,EAAW,GAAGpN,WAAW+K,MAAMlO,MAAM,KAAKM,QAAO,SAAUC,EAAKmG,GAMjF,OALIA,IAAQhI,GAAOZ,kBAAoB4I,EAAIiF,MAAM6E,GAC/CjQ,EAAImQ,MAAMlc,KAAKkS,GAEfnG,EAAIoQ,OAAOnc,KAAKkS,GAEXnG,CACT,GAAG,CACDoQ,OAAQ,GACRD,MAAO,KAETH,EAAW,GAAGpN,WAAW+K,MAAQuC,EAAaC,MAAMlN,KAAK,KACtB,IAA/BiN,EAAaE,OAAO7b,OACtBgL,EAAK8Q,gBAAgB,SAErB9Q,EAAK4B,aAAa,QAAS+O,EAAaE,OAAOnN,KAAK,KAExD,CACA,IAAIqN,EAAeN,EAAW5T,KAAI,SAAU8H,GAC1C,OAAO1B,GAAO0B,EAChB,IAAGjB,KAAK,MACR1D,EAAK4B,aAAalH,EAAe,IACjCsF,EAAK6B,UAAYkP,CACnB,GAEF,SAASC,GAAqBC,GAC5BA,GACF,CACA,SAASC,GAAQC,EAAWC,GAC1B,IAAIC,EAAuC,mBAAbD,EAA0BA,EAAW/B,GACnE,GAAyB,IAArB8B,EAAUnc,OACZqc,QACK,CACL,IAAIC,EAAQN,GACRpS,GAAON,iBAAmBtD,IAC5BsW,EAAQ3X,EAAO4X,uBAAyBP,IAE1CM,GAAM,WACJ,IAAIE,GAxGsB,IAA1B5S,GAAOX,eACF6R,GAASzP,QAEJyP,GAASlR,GAAOX,iBACZ6R,GAASzP,QAqGnBzH,EAAOuW,GAAKC,MAAM,UACtB+B,EAAUtU,IAAI2U,GACd5Y,IACAyY,GACF,GACF,CACF,CACA,IAAII,IAAW,EACf,SAASC,KACPD,IAAW,CACb,CACA,SAASE,KACPF,IAAW,CACb,CACA,IAAIG,GAAK,KACT,SAASC,GAAQC,GACf,GAAKjY,GAGA+E,GAAOP,iBAAZ,CAGA,IAAI0T,EAAwBD,EAAQE,aAClCA,OAAyC,IAA1BD,EAAmC1C,GAAS0C,EAC3DE,EAAwBH,EAAQI,aAChCA,OAAyC,IAA1BD,EAAmC5C,GAAS4C,EAC3DE,EAAwBL,EAAQM,uBAChCA,OAAmD,IAA1BD,EAAmC9C,GAAS8C,EACrEE,EAAwBP,EAAQQ,qBAChCA,OAAiD,IAA1BD,EAAmCzY,EAAWyY,EACvET,GAAK,IAAI/X,GAAkB,SAAU0Y,GACnC,IAAId,GAAJ,CACA,IAAIe,EAAgBzK,KACpBlI,GAAQ0S,GAASrd,SAAQ,SAAUud,GAUjC,GAT4B,cAAxBA,EAAeC,MAAwBD,EAAeE,WAAW3d,OAAS,IAAMsa,GAAUmD,EAAeE,WAAW,MAClH/T,GAAOR,sBACTgU,EAAuBK,EAAe5d,QAExCmd,EAAaS,EAAe5d,SAEF,eAAxB4d,EAAeC,MAAyBD,EAAe5d,OAAOmb,YAAcpR,GAAOR,sBACrFgU,EAAuBK,EAAe5d,OAAOmb,YAEnB,eAAxByC,EAAeC,MAAyBpD,GAAUmD,EAAe5d,UAAYwH,GAAgChC,QAAQoY,EAAejP,eACtI,GAAqC,UAAjCiP,EAAejP,eA9J3B,SAA0BxD,GACxB,IAAI6D,EAAS7D,EAAKtC,aAAesC,EAAKtC,aAAa7C,GAAe,KAC9DkJ,EAAO/D,EAAKtC,aAAesC,EAAKtC,aAAa5C,GAAa,KAC9D,OAAO+I,GAAUE,CACnB,CA0JwD6O,CAAiBH,EAAe5d,QAAS,CACvF,IAAIge,EAAoBvK,GAAiBvI,GAAW0S,EAAe5d,SACjEgP,EAASgP,EAAkBhP,OAC3BC,EAAW+O,EAAkB/O,SAC/B2O,EAAe5d,OAAO+M,aAAa/G,EAAagJ,GAAU2O,GACtD1O,GAAU2O,EAAe5d,OAAO+M,aAAa9G,EAAWgJ,EAC9D,MA/JiB9D,EA+JUyS,EAAe5d,SA9JjCmL,EAAKC,WAAaD,EAAKC,UAAU6S,UAAY9S,EAAKC,UAAU6S,SAASlU,GAAOZ,mBA+JnFkU,EAAaO,EAAe5d,QAhKtC,IAAyBmL,CAmKrB,GAvBoB,CAwBtB,IACKjG,GACL6X,GAAGC,QAAQS,EAAsB,CAC/BS,WAAW,EACX1P,YAAY,EACZ2P,eAAe,EACfC,SAAS,GAxCX,CA0CF,CAqBA,SAASC,GAAYlT,GACnB,IAz1BkB6D,EAAQsP,EAy1BtBC,EAAiBpT,EAAKtC,aAAa,eACnC2V,EAAmBrT,EAAKtC,aAAa,aACrC4V,OAA+B7O,IAAnBzE,EAAKsT,UAA0BtT,EAAKsT,UAAU3S,OAAS,GACnEpD,EAAM+K,GAAiBvI,GAAWC,IAQtC,OAPKzC,EAAIsG,SACPtG,EAAIsG,OAASkE,MAEXqL,GAAkBC,IACpB9V,EAAIsG,OAASuP,EACb7V,EAAIuG,SAAWuP,GAEb9V,EAAIuG,UAAYvG,EAAIsG,SAGpBtG,EAAIsG,QAAUyP,EAAUte,OAAS,IACnCuI,EAAIuG,UAx2BYD,EAw2BUtG,EAAIsG,OAx2BNsP,EAw2BcnT,EAAKsT,WAv2BrChN,GAAYzC,IAAW,CAAC,GAAGsP,IAu2BwBvL,GAAUrK,EAAIsG,OAAQkB,GAAM/E,EAAKsT,eAEvF/V,EAAIuG,UAAYlF,GAAOwI,cAAgBpH,EAAKuT,YAAcvT,EAAKuT,WAAWC,WAAaC,KAAKC,YAC/FnW,EAAIuG,SAAW9D,EAAKuT,WAAWI,OANxBpW,CASX,CAyCA,SAASqW,GAAU5T,GACjB,IAAI6T,EAAS9e,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAC/E+e,aAAa,GAEXC,EAAeb,GAAYlT,GAC7B8D,EAAWiQ,EAAajQ,SACxBD,EAASkQ,EAAalQ,OACtBmQ,EAAeD,EAAa9L,KAC1BgM,EAhDN,SAA0BjU,GACxB,IAAIiU,EAAkBpU,GAAQG,EAAKqD,YAAY7C,QAAO,SAAUC,EAAKnD,GAInE,MAHiB,UAAbmD,EAAItI,MAAiC,UAAbsI,EAAItI,OAC9BsI,EAAInD,EAAKnF,MAAQmF,EAAKnH,OAEjBsK,CACT,GAAG,CAAC,GACAkM,EAAQ3M,EAAKtC,aAAa,SAC1BmP,EAAU7M,EAAKtC,aAAa,oBAShC,OARIkB,GAAOT,WACLwO,EACFsH,EAAgB,mBAAqB,GAAG7X,OAAOwC,GAAOZ,iBAAkB,WAAW5B,OAAOyQ,GAAWpN,OAErGwU,EAAgB,eAAiB,OACjCA,EAA2B,UAAI,UAG5BA,CACT,CA8BwBC,CAAiBlU,GACnCmU,EAAa9J,GAAW,sBAAuB,CAAC,EAAGrK,GACnDoU,EAAcP,EAAOC,YAzF3B,SAAqB9T,GACnB,IAAI2B,EAAQ3B,EAAKtC,aAAa,SAC1BH,EAAM,GAYV,OAXIoE,IACFpE,EAAMoE,EAAMzB,MAAM,KAAKM,QAAO,SAAUC,EAAKkB,GAC3C,IAAIpB,EAASoB,EAAMzB,MAAM,KACrBzE,EAAO8E,EAAO,GACdpK,EAAQoK,EAAOrI,MAAM,GAIzB,OAHIuD,GAAQtF,EAAMnB,OAAS,IACzByL,EAAIhF,GAAQtF,EAAMuN,KAAK,KAAK/C,QAEvBF,CACT,GAAG,CAAC,IAEClD,CACT,CA0EyCuW,CAAY9T,GAAQ,GAC3D,OAAOpL,EAAe,CACpBkP,SAAUA,EACV6I,MAAO3M,EAAKtC,aAAa,SACzBmP,QAAS7M,EAAKtC,aAAa,oBAC3BmG,OAAQA,EACRhD,UAAW5B,GACXwN,KAAM,CACJ3I,SAAU,KACVD,OAAQ,KACRoE,KAAM,IAER2E,OAAQ,KACRF,QAAQ,EACRpH,MAAO,CACL+H,QAAS2G,EACTzT,OAAQ6T,EACR/Q,WAAY4Q,IAEbE,EACL,CACA,IAAIE,GAAWvR,GAAUvC,OACzB,SAAS+T,GAAiBtU,GACxB,IAAIuU,EAAqC,SAA1B3V,GAAOX,eAA4B2V,GAAU5T,EAAM,CAChE8T,aAAa,IACVF,GAAU5T,GACf,OAAKuU,EAASjP,MAAM+H,QAAQhT,QAAQ0B,GAC3B8O,GAAa,qBAAsB7K,EAAMuU,GAEzC1J,GAAa,iCAAkC7K,EAAMuU,EAEhE,CACA,IAAIC,GAAgB,IAAI5X,IAOxB,SAAS6X,GAAOC,GACd,IAAItD,EAAWrc,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,KACnF,IAAKgF,EAAQ,OAAOoR,QAAQwD,UAC5B,IAAIgG,EAAgB/a,EAASI,gBAAgBiG,UACzC2U,EAAS,SAAgBC,GAC3B,OAAOF,EAAc7X,IAAI,GAAGV,OAAOrB,EAA6B,KAAKqB,OAAOyY,GAC9E,EACIC,EAAY,SAAmBD,GACjC,OAAOF,EAAcpE,OAAO,GAAGnU,OAAOrB,EAA6B,KAAKqB,OAAOyY,GACjF,EACIlY,EAAWiC,GAAOwI,aAAeoN,GAAgBnZ,EAASwB,KAAI,SAAUkY,GAC1E,MAAO,MAAM3Y,OAAO2Y,EACtB,IAAG3Y,OAAOjI,OAAOD,KAAKmgB,KACjB1X,EAASiM,SAAS,OACrBjM,EAASjI,KAAK,MAEhB,IAAIsgB,EAAmB,CAAC,IAAI5Y,OAAOL,EAAuB,UAAUK,OAAO1B,EAAe,OAAO0B,OAAOO,EAASE,KAAI,SAAUmS,GAC7H,MAAO,IAAI5S,OAAO4S,EAAG,UAAU5S,OAAO1B,EAAe,KACvD,KAAIgJ,KAAK,MACT,GAAgC,IAA5BsR,EAAiBhgB,OACnB,OAAOmW,QAAQwD,UAEjB,IAAIsG,EAAa,GACjB,IACEA,EAAapV,GAAQ6U,EAAKQ,iBAAiBF,GAC7C,CAAE,MAAO9b,IACT,CACA,KAAI+b,EAAWjgB,OAAS,GAItB,OAAOmW,QAAQwD,UAHfiG,EAAO,WACPE,EAAU,YAIZ,IAAIlc,EAAOuW,GAAKC,MAAM,UAClB+B,EAAY8D,EAAWzU,QAAO,SAAUC,EAAKT,GAC/C,IACE,IAAI+P,EAAWuE,GAAiBtU,GAC5B+P,GACFtP,EAAI/L,KAAKqb,EAEb,CAAE,MAAO7W,IACFgC,GACY,gBAAXhC,GAAEf,MACJyW,QAAQC,MAAM3V,GAGpB,CACA,OAAOuH,CACT,GAAG,IACH,OAAO,IAAI0K,SAAQ,SAAUwD,EAASvD,GACpCD,QAAQgK,IAAIhE,GAAWiE,MAAK,SAAUC,GACpCnE,GAAQmE,GAAmB,WACzBT,EAAO,UACPA,EAAO,YACPE,EAAU,WACc,mBAAb1D,GAAyBA,IACpCxY,IACA+V,GACF,GACF,IAAG2G,OAAM,SAAUpc,GACjBN,IACAwS,EAAOlS,EACT,GACF,GACF,CACA,SAASqc,GAAOvV,GACd,IAAIoR,EAAWrc,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,KACnFuf,GAAiBtU,GAAMoV,MAAK,SAAUrF,GAChCA,GACFmB,GAAQ,CAACnB,GAAWqB,EAExB,GACF,CA9EA/V,EAASwB,KAAI,SAAU8K,GACrB6M,GAAc1X,IAAI,MAAMV,OAAOuL,GACjC,IACAxT,OAAOD,KAAKwH,EAAgBP,IAAiB0B,IAAI2X,GAAc1X,IAAIC,KAAKyX,KACxErgB,OAAOD,KAAKwH,EAAgBN,IAAeyB,IAAI2X,GAAc1X,IAAIC,KAAKyX,KACtEA,GAAgBjd,EAAmBid,IAuFnC,IAAIgB,GAAS,SAAgBC,GAC3B,IAAIvK,EAASnW,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E2gB,EAAoBxK,EAAOrK,UAC7BA,OAAkC,IAAtB6U,EAA+BzW,GAAuByW,EAClEC,EAAiBzK,EAAOwB,OACxBA,OAA4B,IAAnBiJ,GAAoCA,EAC7CC,EAAe1K,EAAOuB,KACtBA,OAAwB,IAAjBmJ,EAA0B,KAAOA,EACxCC,EAAiB3K,EAAO0B,OACxBA,OAA4B,IAAnBiJ,EAA4B,KAAOA,EAC5CC,EAAgB5K,EAAOyB,MACvBA,OAA0B,IAAlBmJ,EAA2B,KAAOA,EAC1CC,EAAkB7K,EAAO2B,QACzBA,OAA8B,IAApBkJ,EAA6B,KAAOA,EAC9CC,EAAkB9K,EAAOmC,QACzBA,OAA8B,IAApB2I,EAA6B,GAAKA,EAC5CC,EAAqB/K,EAAO7H,WAC5BA,OAAoC,IAAvB4S,EAAgC,CAAC,EAAIA,EAClDC,EAAiBhL,EAAO3K,OACxBA,OAA4B,IAAnB2V,EAA4B,CAAC,EAAIA,EAC5C,GAAKT,EAAL,CACA,IAAI5R,EAAS4R,EAAe5R,OAC1BC,EAAW2R,EAAe3R,SAC1BC,EAAO0R,EAAe1R,KACxB,OAAOkI,GAAYrX,EAAe,CAChC8d,KAAM,QACL+C,IAAiB,WAalB,OAZA/K,GAAU,2BAA4B,CACpC+K,eAAgBA,EAChBvK,OAAQA,IAENtM,GAAOT,WACLwO,EACFtJ,EAAW,mBAAqB,GAAGjH,OAAOwC,GAAOZ,iBAAkB,WAAW5B,OAAOyQ,GAAWpN,OAEhG4D,EAAW,eAAiB,OAC5BA,EAAsB,UAAI,UAGvBiJ,GAAsB,CAC3B7G,MAAO,CACL+G,KAAM8B,GAAYvK,GAClB0I,KAAMA,EAAO6B,GAAY7B,EAAK1I,MAAQ,CACpCiJ,OAAO,EACPC,MAAO,KACPC,OAAQ,KACRnJ,KAAM,CAAC,IAGXF,OAAQA,EACRC,SAAUA,EACVjD,UAAWjM,EAAeA,EAAe,CAAC,EAAGqK,IAAuB4B,GACpE6L,OAAQA,EACRC,MAAOA,EACPC,OAAQA,EACRC,QAASA,EACTvH,MAAO,CACLjC,WAAYA,EACZ9C,OAAQA,EACR8M,QAASA,IAGf,GA1C2B,CA2C7B,EACI8I,GAAkB,CACpB5T,OAAQ,WACN,MAAO,CACLwB,MAhFgB/M,EAgFGwe,GA/EhB,SAAUY,GACf,IAAIlL,EAASnW,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E0gB,GAAkBW,GAAuB,CAAC,GAAGrS,KAAOqS,EAAsBtL,GAAmBsL,GAAuB,CAAC,GACrH3J,EAAOvB,EAAOuB,KAIlB,OAHIA,IACFA,GAAQA,GAAQ,CAAC,GAAG1I,KAAO0I,EAAO3B,GAAmB2B,GAAQ,CAAC,IAEzDzV,EAAKye,EAAgB7gB,EAAeA,EAAe,CAAC,EAAGsW,GAAS,CAAC,EAAG,CACzEuB,KAAMA,IAEV,IAXF,IAAsBzV,CAkFpB,EACAyL,MAAO,WACL,MAAO,CACL4T,0BAA2B,SAAmC9L,GAG5D,OAFAA,EAAYyH,aAAeyC,GAC3BlK,EAAY2H,aAAeqD,GACpBhL,CACT,EAEJ,EACA+L,SAAU,SAAkBC,GAC1BA,EAAatL,MAAQ,SAAUC,GAC7B,IAAIsL,EAAetL,EAAOlL,KACxBA,OAAwB,IAAjBwW,EAA0B5c,EAAW4c,EAC5CC,EAAmBvL,EAAOkG,SAE5B,OAAOqD,GAAOzU,OADoB,IAArByW,EAA8B,WAAa,EAAIA,EAE9D,EACAF,EAAaG,+BAAiC,SAAU1W,EAAMuU,GAC5D,IAAIzQ,EAAWyQ,EAASzQ,SACtB6I,EAAQ4H,EAAS5H,MACjBE,EAAU0H,EAAS1H,QACnBhJ,EAAS0Q,EAAS1Q,OAClBhD,EAAY0T,EAAS1T,UACrB6L,EAAS6H,EAAS7H,OAClBD,EAAO8H,EAAS9H,KAChBG,EAAS2H,EAAS3H,OAClBtH,EAAQiP,EAASjP,MACnB,OAAO,IAAI6F,SAAQ,SAAUwD,EAASvD,GACpCD,QAAQgK,IAAI,CAACzG,GAAS5K,EAAUD,GAAS4I,EAAK3I,SAAW4K,GAASjC,EAAK3I,SAAU2I,EAAK5I,QAAUsH,QAAQwD,QAAQ,CAC9G3B,OAAO,EACPC,MAAO,IACPC,OAAQ,IACRnJ,KAAM,CAAC,MACJqR,MAAK,SAAUhY,GAClB,IAAIC,EAAQjH,EAAegH,EAAM,GAC/BoP,EAAOnP,EAAM,GACboP,EAAOpP,EAAM,GACfsR,EAAQ,CAAC3O,EAAMsM,GAAsB,CACnC7G,MAAO,CACL+G,KAAMA,EACNC,KAAMA,GAER5I,OAAQA,EACRC,SAAUA,EACVjD,UAAWA,EACX6L,OAAQA,EACRE,OAAQA,EACRD,MAAOA,EACPE,QAASA,EACTvH,MAAOA,EACPyH,WAAW,KAEf,IAAGuI,MAAMlK,EACX,GACF,EACAmL,EAAaI,qBAAuB,SAAUC,GAC5C,IASIC,EATAtT,EAAWqT,EAAMrT,SACnBF,EAAauT,EAAMvT,WACnBmJ,EAAOoK,EAAMpK,KACb3L,EAAY+V,EAAM/V,UAEhBsN,EAAc7N,GADPsW,EAAMrW,QAejB,OAbI4N,EAAYnZ,OAAS,IACvBqO,EAAkB,MAAI8K,GAGpBvN,GAAsBC,KACxBgW,EAAYhM,GAAa,oCAAqC,CAC5D2B,KAAMA,EACN3L,UAAWA,EACXiW,eAAgBtK,EAAKS,MACrB8J,UAAWvK,EAAKS,SAGpB1J,EAAS7O,KAAKmiB,GAAarK,EAAKzI,MACzB,CACLR,SAAUA,EACVF,WAAYA,EAEhB,CACF,GAEE2T,GAAS,CACXzU,OAAQ,WACN,MAAO,CACL0U,MAAO,SAAeC,GACpB,IAAIhM,EAASnW,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EihB,EAAkB9K,EAAOmC,QAC3BA,OAA8B,IAApB2I,EAA6B,GAAKA,EAC9C,OAAO/J,GAAY,CACjByG,KAAM,UACL,WACDhI,GAAU,2BAA4B,CACpCwM,UAAWA,EACXhM,OAAQA,IAEV,IAAI3H,EAAW,GAMf,OALA2T,GAAU,SAAU1M,GAClBlU,MAAMC,QAAQiU,GAAQA,EAAK3N,KAAI,SAAU8H,GACvCpB,EAAWA,EAASnH,OAAOuI,EAAEwH,SAC/B,IAAK5I,EAAWA,EAASnH,OAAOoO,EAAK2B,SACvC,IACO,CAAC,CACNhJ,IAAK,OACLE,WAAY,CACV+K,MAAO,CAAC,GAAGhS,OAAOwC,GAAOb,UAAW,YAAY3B,OAAO7E,EAAmB8V,IAAU3J,KAAK,MAE3FH,SAAUA,GAEd,GACF,EAEJ,GAEE4T,GAAgB,CAClB5U,OAAQ,WACN,MAAO,CACL6C,QAAS,SAAiBkI,GACxB,IAAIpC,EAASnW,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E+gB,EAAgB5K,EAAOyB,MACzBA,OAA0B,IAAlBmJ,EAA2B,KAAOA,EAC1CE,EAAkB9K,EAAOmC,QACzBA,OAA8B,IAApB2I,EAA6B,GAAKA,EAC5CC,EAAqB/K,EAAO7H,WAC5BA,OAAoC,IAAvB4S,EAAgC,CAAC,EAAIA,EAClDC,EAAiBhL,EAAO3K,OACxBA,OAA4B,IAAnB2V,EAA4B,CAAC,EAAIA,EAC5C,OAAOjK,GAAY,CACjByG,KAAM,UACNpF,QAASA,IACR,WAKD,OAJA5C,GAAU,2BAA4B,CACpC4C,QAASA,EACTpC,OAAQA,IAjuBpB,SAAmCA,GACjC,IAAIoC,EAAUpC,EAAOoC,QACnBX,EAAQzB,EAAOyB,MACfrH,EAAQ4F,EAAO5F,MACbjC,EAAazO,EAAeA,EAAeA,EAAe,CAAC,EAAG0Q,EAAMjC,YAAasJ,EAAQ,CAC3F,MAASA,GACP,CAAC,GAAI,CAAC,EAAG,CACX,MAASrH,EAAM+H,QAAQ3J,KAAK,OAE1ByK,EAAc7N,GAAWgF,EAAM/E,QAC/B4N,EAAYnZ,OAAS,IACvBqO,EAAkB,MAAI8K,GAExB,IAAI5Q,EAAM,GAeV,OAdAA,EAAI7I,KAAK,CACPyO,IAAK,OACLE,WAAYA,EACZE,SAAU,CAAC+J,KAETX,GACFpP,EAAI7I,KAAK,CACPyO,IAAK,OACLE,WAAY,CACV+K,MAAO,WAET7K,SAAU,CAACoJ,KAGRpP,CACT,CAssBiB6Z,CAA0B,CAC/B9J,QAASA,EAAQrV,WACjB0U,MAAOA,EACPrH,MAAO,CACLjC,WAAYA,EACZ9C,OAAQA,EACR8M,QAAS,CAAC,GAAGjR,OAAOwC,GAAOb,UAAW,oBAAoB3B,OAAO7E,EAAmB8V,MAG1F,GACF,EAEJ,GAEEgK,GAAa,CACf9U,OAAQ,WACN,MAAO,CACL+U,KAAM,SAAchK,GAClB,IAAIpC,EAASnW,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E2gB,EAAoBxK,EAAOrK,UAC7BA,OAAkC,IAAtB6U,EAA+BzW,GAAuByW,EAClEI,EAAgB5K,EAAOyB,MACvBA,OAA0B,IAAlBmJ,EAA2B,KAAOA,EAC1CE,EAAkB9K,EAAOmC,QACzBA,OAA8B,IAApB2I,EAA6B,GAAKA,EAC5CC,EAAqB/K,EAAO7H,WAC5BA,OAAoC,IAAvB4S,EAAgC,CAAC,EAAIA,EAClDC,EAAiBhL,EAAO3K,OACxBA,OAA4B,IAAnB2V,EAA4B,CAAC,EAAIA,EAC5C,OAAOjK,GAAY,CACjByG,KAAM,OACNpF,QAASA,IACR,WAKD,OAJA5C,GAAU,2BAA4B,CACpC4C,QAASA,EACTpC,OAAQA,IAEH0C,GAAuB,CAC5BN,QAASA,EACTzM,UAAWjM,EAAeA,EAAe,CAAC,EAAGqK,IAAuB4B,GACpE8L,MAAOA,EACPrH,MAAO,CACLjC,WAAYA,EACZ9C,OAAQA,EACR8M,QAAS,CAAC,GAAGjR,OAAOwC,GAAOb,UAAW,iBAAiB3B,OAAO7E,EAAmB8V,MAGvF,GACF,EAEJ,EACAiJ,SAAU,SAAkBC,GAC1BA,EAAagB,mBAAqB,SAAUvX,EAAMuU,GAChD,IAAI5H,EAAQ4H,EAAS5H,MACnB9L,EAAY0T,EAAS1T,UACrByE,EAAQiP,EAASjP,MACf2H,EAAQ,KACRC,EAAS,KACb,GAAI9S,EAAO,CACT,IAAIod,EAAmBC,SAASC,iBAAiB1X,GAAM2X,SAAU,IAC7DC,EAAqB5X,EAAK6X,wBAC9B5K,EAAQ2K,EAAmB3K,MAAQuK,EACnCtK,EAAS0K,EAAmB1K,OAASsK,CACvC,CAIA,OAHI5Y,GAAOT,WAAawO,IACtBrH,EAAMjC,WAAW,eAAiB,QAE7B8H,QAAQwD,QAAQ,CAAC3O,EAAM4N,GAAuB,CACnDN,QAAStN,EAAK6B,UACdoL,MAAOA,EACPC,OAAQA,EACRrM,UAAWA,EACX8L,MAAOA,EACPrH,MAAOA,EACPyH,WAAW,KAEf,CACF,GAEE+K,GAAwB,IAAIxW,OAAO,IAAM,MACzCyW,GAA0B,CAAC,QAAS,SAWxC,SAASC,GAAmBhY,EAAMiY,GAChC,IAAIC,EAAmB,GAAG9b,OAAOxB,GAAgCwB,OAAO6b,EAAS5X,QAAQ,IAAK,MAC9F,OAAO,IAAI8K,SAAQ,SAAUwD,EAASvD,GACpC,GAA4C,OAAxCpL,EAAKtC,aAAawa,GAEpB,OAAOvJ,IAET,IAj0CkB3J,EAChBmT,EACAC,EAg0CEC,EADWxY,GAAQG,EAAKuD,UACiBjP,QAAO,SAAUuQ,GAC5D,OAAOA,EAAEnH,aAAa/C,KAA4Bsd,CACpD,IAAG,GACC1X,EAAS5G,EAAO+d,iBAAiB1X,EAAMiY,GACvCK,EAAa/X,EAAOgY,iBAAiB,eAAe1M,MAAM7P,GAC1Dwc,EAAajY,EAAOgY,iBAAiB,eACrCjL,EAAU/M,EAAOgY,iBAAiB,WACtC,GAAIF,IAAkCC,EAKpC,OADAtY,EAAKyY,YAAYJ,GACV1J,IACF,GAAI2J,GAA0B,SAAZhL,GAAkC,KAAZA,EAAgB,CAC7D,IAAIoL,EAAWnY,EAAOgY,iBAAiB,WACnC5Q,GAAU,CAAC,SAAStN,QAAQie,EAAW,IAAMld,EAAeD,EAC5D0I,GAAU,CAAC,QAAS,UAAW,QAAS,OAAQ,UAAW,SAAU,OAAOxJ,QAAQie,EAAW,IAAM3c,EAAgBgM,GAAQ2Q,EAAW,GAAGK,eAAiB1c,GAAsB0L,GAAQ6Q,GAC1LI,EAnCV,SAA6BtL,GAC3B,IAj+CmBpI,EAAQ2T,EAGvBC,EAFA5Z,EACA6Z,EA+9CAC,EAAU1L,EAAQjN,QAAQyX,GAAuB,IACjDmB,GAl+CuBJ,EAk+CU,EAj+CjC3Z,GADegG,EAk+CS8T,GAj+CVhkB,QACd+jB,EAAQ7T,EAAOG,WAAWwT,KAEjB,OAAUE,GAAS,OAAU7Z,EAAO2Z,EAAQ,IACvDC,EAAS5T,EAAOG,WAAWwT,EAAQ,KACrB,OAAUC,GAAU,MACN,MAAlBC,EAAQ,OAAkBD,EAAS,MAAS,MAGjDC,GAy9CHG,EAAeD,GAAalB,GAAwB,IAAMkB,GAAalB,GAAwB,GAC/FoB,EAA+B,IAAnBH,EAAQhkB,QAAegkB,EAAQ,KAAOA,EAAQ,GAC9D,MAAO,CACL7iB,MAAmB4O,GAAZoU,EAAkBH,EAAQ,GAAYA,GAC7CI,YAAaF,GAAgBC,EAEjC,CA0BiCE,CAAoBX,GAC7CY,EAAWV,EAAqBziB,MAChCijB,EAAcR,EAAqBQ,YACjCG,EAAOjB,EAAW,GAAGkB,WAAW,eAChC1V,EAAW8D,GAAU/D,EAAQyV,GAC7BG,EAAiB3V,EACrB,GAAIyV,EAAM,CACR,IAAIG,GAz1CNvB,EAAa3R,GADGxB,EA01CesU,GAx1C/BlB,EAAaxQ,GAAU,MAAO5C,GAC3BmT,IAAeC,EAAa,CACjCvU,OAAQ,MACRC,SAAUsU,GACR,OAAS,CACXvU,OAAQ,KACRC,SAAU,OAm1CF4V,EAAU5V,UAAY4V,EAAU7V,SAClCC,EAAW4V,EAAU5V,SACrBD,EAAS6V,EAAU7V,OAEvB,CAGA,IAAIC,GAAasV,GAAiBf,GAAiCA,EAA8B3a,aAAa7C,KAAiBgJ,GAAUwU,EAA8B3a,aAAa5C,KAAe2e,EAiCjM9K,QAjCkN,CAClN3O,EAAK4B,aAAasW,EAAkBuB,GAChCpB,GAEFrY,EAAKyY,YAAYJ,GAEnB,IAAIsB,EAjfH,CACL7V,SAAU,KACV6I,MAAO,KACPE,QAAS,KACThJ,OAAQ,KACRhD,UAAW5B,GACXyN,QAAQ,EACRD,KAAM,CACJ3I,SAAU,KACVD,OAAQ,KACRoE,KAAM,IAER2E,OAAQ,KACRtH,MAAO,CACL+H,QAAS,GACT9M,OAAQ,CAAC,EACT8C,WAAY,CAAC,IAkePiC,EAAQqU,EAAKrU,MACjBA,EAAMjC,WAAW1I,GAA0Bsd,EAC3CvJ,GAAS5K,EAAUD,GAAQuR,MAAK,SAAU5I,GACxC,IAAIyD,EAAY3D,GAAsB1X,EAAeA,EAAe,CAAC,EAAG+kB,GAAO,CAAC,EAAG,CACjFlU,MAAO,CACL+G,KAAMA,EACNC,KAAMzE,MAERnE,OAAQA,EACRC,SAAU2V,EACVnU,MAAOA,EACPyH,WAAW,KAETtP,EAAU7D,EAAS2V,gBAAgB,6BAA8B,OACpD,aAAb0I,EACFjY,EAAKoC,aAAa3E,EAASuC,EAAKuT,YAEhCvT,EAAK6P,YAAYpS,GAEnBA,EAAQ2S,UAAYH,EAAUpT,KAAI,SAAU8H,GAC1C,OAAO1B,GAAO0B,EAChB,IAAGjB,KAAK,MACR1D,EAAK8Q,gBAAgBoH,GACrBvJ,GACF,IAAG2G,MAAMlK,EACX,CAGF,MACEuD,GAEJ,GACF,CACA,SAAStO,GAAQL,GACf,OAAOmL,QAAQgK,IAAI,CAAC6C,GAAmBhY,EAAM,YAAagY,GAAmBhY,EAAM,YACrF,CACA,SAAS4Z,GAAY5Z,GACnB,QAAOA,EAAKgQ,aAAejX,SAASkB,OAAUgB,EAAoCZ,QAAQ2F,EAAKkC,QAAQC,gBAAmBnC,EAAKtC,aAAa/C,IAA6BqF,EAAKgQ,YAA0C,QAA5BhQ,EAAKgQ,WAAW9N,QAC9M,CACA,SAAS9D,GAAqBsW,GAC5B,GAAK3a,EACL,OAAO,IAAIoR,SAAQ,SAAUwD,EAASvD,GACpC,IAAIyO,EAAaha,GAAQ6U,EAAKQ,iBAAiB,MAAM5gB,OAAOslB,IAAa/c,IAAIwD,IACzE6O,EAAMC,GAAKC,MAAM,wBACrBsC,KACAvG,QAAQgK,IAAI0E,GAAYzE,MAAK,WAC3BlG,IACAyC,KACAhD,GACF,IAAG2G,OAAM,WACPpG,IACAyC,KACAvG,GACF,GACF,GACF,CACA,IAmBI0O,IAAa,EAiCbC,GAAuB,SAA8BC,GASvD,OAAOA,EAAgBrB,cAAczY,MAAM,KAAKM,QAAO,SAAUC,EAAKzI,GACpE,IAAI6O,EAAQ7O,EAAE2gB,cAAczY,MAAM,KAC9B6Y,EAAQlS,EAAM,GACdoB,EAAOpB,EAAM3O,MAAM,GAAGwL,KAAK,KAC/B,GAAIqV,GAAkB,MAAT9Q,EAEX,OADAxH,EAAInB,OAAQ,EACLmB,EAET,GAAIsY,GAAkB,MAAT9Q,EAEX,OADAxH,EAAIlB,OAAQ,EACLkB,EAGT,GADAwH,EAAOgS,WAAWhS,GACdiS,MAAMjS,GACR,OAAOxH,EAET,OAAQsY,GACN,IAAK,OACHtY,EAAIvB,KAAOuB,EAAIvB,KAAO+I,EACtB,MACF,IAAK,SACHxH,EAAIvB,KAAOuB,EAAIvB,KAAO+I,EACtB,MACF,IAAK,OACHxH,EAAItB,EAAIsB,EAAItB,EAAI8I,EAChB,MACF,IAAK,QACHxH,EAAItB,EAAIsB,EAAItB,EAAI8I,EAChB,MACF,IAAK,KACHxH,EAAIrB,EAAIqB,EAAIrB,EAAI6I,EAChB,MACF,IAAK,OACHxH,EAAIrB,EAAIqB,EAAIrB,EAAI6I,EAChB,MACF,IAAK,SACHxH,EAAIpB,OAASoB,EAAIpB,OAAS4I,EAG9B,OAAOxH,CACT,GAhDgB,CACdvB,KAAM,GACNC,EAAG,EACHC,EAAG,EACHE,OAAO,EACPC,OAAO,EACPF,OAAQ,GA2CZ,EACI8a,GAAkB,CACpB5X,OAAQ,WACN,MAAO,CACLoJ,MAAO,CACL9K,UAAW,SAAmBmZ,GAC5B,OAAOD,GAAqBC,EAC9B,GAGN,EACAvX,MAAO,WACL,MAAO,CACL2X,oBAAqB,SAA6B7P,EAAavK,GAC7D,IAAIga,EAAkBha,EAAKtC,aAAa,qBAIxC,OAHIsc,IACFzP,EAAY1J,UAAYkZ,GAAqBC,IAExCzP,CACT,EAEJ,EACA+L,SAAU,SAAkBnM,GAC1BA,EAAUkQ,kCAAoC,SAAUjd,GACtD,IAAIoP,EAAOpP,EAAKoP,KACd3L,EAAYzD,EAAKyD,UACjBiW,EAAiB1Z,EAAK0Z,eACtBC,EAAY3Z,EAAK2Z,UACfuD,EAAQ,CACVzZ,UAAW,aAAazE,OAAO0a,EAAiB,EAAG,UAEjDyD,EAAiB,aAAane,OAAqB,GAAdyE,EAAU1B,EAAQ,MAAM/C,OAAqB,GAAdyE,EAAUzB,EAAQ,MACtFob,EAAa,SAASpe,OAAOyE,EAAU3B,KAAO,IAAM2B,EAAUvB,OAAS,EAAI,GAAI,MAAMlD,OAAOyE,EAAU3B,KAAO,IAAM2B,EAAUtB,OAAS,EAAI,GAAI,MAC9Ikb,EAAc,UAAUre,OAAOyE,EAAUxB,OAAQ,SAOjDwa,EAAa,CACfS,MAAOA,EACPI,MARU,CACV7Z,UAAW,GAAGzE,OAAOme,EAAgB,KAAKne,OAAOoe,EAAY,KAAKpe,OAAOqe,IAQzEE,KANS,CACT9Z,UAAW,aAAazE,OAAO2a,EAAY,GAAK,EAAG,YAOrD,MAAO,CACL5T,IAAK,IACLE,WAAYzO,EAAe,CAAC,EAAGilB,EAAWS,OAC1C/W,SAAU,CAAC,CACTJ,IAAK,IACLE,WAAYzO,EAAe,CAAC,EAAGilB,EAAWa,OAC1CnX,SAAU,CAAC,CACTJ,IAAKqJ,EAAKzI,KAAKZ,IACfI,SAAUiJ,EAAKzI,KAAKR,SACpBF,WAAYzO,EAAeA,EAAe,CAAC,EAAG4X,EAAKzI,KAAKV,YAAawW,EAAWc,UAIxF,CACF,GAEEC,GAAY,CACdzb,EAAG,EACHC,EAAG,EACH6N,MAAO,OACPC,OAAQ,QAEV,SAAS2N,GAAU5K,GACjB,IAAI6K,IAAQ/lB,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,KAAmBA,UAAU,GAI3E,OAHIkb,EAAU5M,aAAe4M,EAAU5M,WAAWmL,MAAQsM,KACxD7K,EAAU5M,WAAWmL,KAAO,SAEvByB,CACT,CAQA,IAAI8K,GAAQ,CACVtY,MAAO,WACL,MAAO,CACL2X,oBAAqB,SAA6B7P,EAAavK,GAC7D,IAAIgb,EAAWhb,EAAKtC,aAAa,gBAC7B+O,EAAQuO,EAAkC1S,GAAiB0S,EAAS9a,MAAM,KAAKrD,KAAI,SAAU/H,GAC/F,OAAOA,EAAE6L,MACX,KAFuBqH,KAQvB,OALKyE,EAAK5I,SACR4I,EAAK5I,OAASkE,MAEhBwC,EAAYkC,KAAOA,EACnBlC,EAAYqC,OAAS5M,EAAKtC,aAAa,mBAChC6M,CACT,EAEJ,EACA+L,SAAU,SAAkBnM,GAC1BA,EAAU8Q,qBAAuB,SAAU7d,GACzC,IA1BWqT,EA0BPlN,EAAWnG,EAAKmG,SAClBF,EAAajG,EAAKiG,WAClBmJ,EAAOpP,EAAKoP,KACZC,EAAOrP,EAAKqP,KACZyO,EAAiB9d,EAAKwP,OACtB/L,EAAYzD,EAAKyD,UACfsa,EAAY3O,EAAKS,MACnBmO,EAAW5O,EAAKzI,KACdsX,EAAY5O,EAAKQ,MACnBqO,EAAW7O,EAAK1I,KACdwX,EAngEV,SAAyBne,GACvB,IAAIyD,EAAYzD,EAAKyD,UACnBiW,EAAiB1Z,EAAK0Z,eACtBC,EAAY3Z,EAAK2Z,UACfuD,EAAQ,CACVzZ,UAAW,aAAazE,OAAO0a,EAAiB,EAAG,UAEjDyD,EAAiB,aAAane,OAAqB,GAAdyE,EAAU1B,EAAQ,MAAM/C,OAAqB,GAAdyE,EAAUzB,EAAQ,MACtFob,EAAa,SAASpe,OAAOyE,EAAU3B,KAAO,IAAM2B,EAAUvB,OAAS,EAAI,GAAI,MAAMlD,OAAOyE,EAAU3B,KAAO,IAAM2B,EAAUtB,OAAS,EAAI,GAAI,MAC9Ikb,EAAc,UAAUre,OAAOyE,EAAUxB,OAAQ,SAOrD,MAAO,CACLib,MAAOA,EACPI,MARU,CACV7Z,UAAW,GAAGzE,OAAOme,EAAgB,KAAKne,OAAOoe,EAAY,KAAKpe,OAAOqe,IAQzEE,KANS,CACT9Z,UAAW,aAAazE,OAAO2a,EAAY,GAAK,EAAG,WAOvD,CA8+DkByE,CAAgB,CAC1B3a,UAAWA,EACXiW,eAAgBuE,EAChBtE,UAAWoE,IAETM,EAAW,CACbtY,IAAK,OACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAGgmB,IAAY,CAAC,EAAG,CAC5DpM,KAAM,WAGNkN,EAA8BN,EAAS7X,SAAW,CACpDA,SAAU6X,EAAS7X,SAAS1G,IAAIge,KAC9B,CAAC,EACDc,EAAiB,CACnBxY,IAAK,IACLE,WAAYzO,EAAe,CAAC,EAAG2mB,EAAMb,OACrCnX,SAAU,CAACsX,GAAUjmB,EAAe,CAClCuO,IAAKiY,EAASjY,IACdE,WAAYzO,EAAeA,EAAe,CAAC,EAAGwmB,EAAS/X,YAAakY,EAAMZ,OACzEe,MAEDE,EAAiB,CACnBzY,IAAK,IACLE,WAAYzO,EAAe,CAAC,EAAG2mB,EAAMjB,OACrC/W,SAAU,CAACoY,IAET/O,EAAS,QAAQxQ,OAAO8e,GAAkBzb,MAC1Coc,EAAS,QAAQzf,OAAO8e,GAAkBzb,MAC1Cqc,EAAU,CACZ3Y,IAAK,OACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAGgmB,IAAY,CAAC,EAAG,CAC5Dlb,GAAIkN,EACJmP,UAAW,iBACXC,iBAAkB,mBAEpBzY,SAAU,CAACkY,EAAUG,IAEnBK,EAAO,CACT9Y,IAAK,OACLI,SAAU,CAAC,CACTJ,IAAK,WACLE,WAAY,CACV3D,GAAImc,GAENtY,UAjFOkN,EAiFW6K,EAhFH,MAAnB7K,EAAWtN,IACNsN,EAAWlN,SAEX,CAACkN,KA8EDqL,IAUL,OARAvY,EAAS7O,KAAKunB,EAAM,CAClB9Y,IAAK,OACLE,WAAYzO,EAAe,CACzB4Z,KAAM,eACN,YAAa,QAAQpS,OAAOyf,EAAQ,KACpCpP,KAAM,QAAQrQ,OAAOwQ,EAAQ,MAC5BgO,MAEE,CACLrX,SAAUA,EACVF,WAAYA,EAEhB,CACF,GAEE6Y,GAAuB,CACzB5F,SAAU,SAAkBnM,GAC1B,IAAIgS,GAAe,EACfxiB,EAAOyiB,aACTD,EAAexiB,EAAOyiB,WAAW,oCAAoCC,SAEvElS,EAAUmS,oBAAsB,WAC9B,IAAIC,EAAY,GACZC,EAAO,CACThO,KAAM,gBAEJiO,EAAiB,CACnBC,cAAe,MACfC,YAAa,aACbC,IAAK,MAGPL,EAAU7nB,KAAK,CACbyO,IAAK,OACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAG4nB,GAAO,CAAC,EAAG,CACvDxd,EAAG,u4CAGP,IAAI6d,EAAkBjoB,EAAeA,EAAe,CAAC,EAAG6nB,GAAiB,CAAC,EAAG,CAC3EjZ,cAAe,YAEbsZ,EAAM,CACR3Z,IAAK,SACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAG4nB,GAAO,CAAC,EAAG,CACvDO,GAAI,MACJC,GAAI,MACJC,EAAG,OAEL1Z,SAAU,IA8CZ,OA5CK4Y,GACHW,EAAIvZ,SAAS7O,KAAK,CAChByO,IAAK,UACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAG6nB,GAAiB,CAAC,EAAG,CACjEjZ,cAAe,IACf2C,OAAQ,wBAET,CACDhD,IAAK,UACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAGioB,GAAkB,CAAC,EAAG,CAClE1W,OAAQ,mBAIdoW,EAAU7nB,KAAKooB,GACfP,EAAU7nB,KAAK,CACbyO,IAAK,OACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAG4nB,GAAO,CAAC,EAAG,CACvDU,QAAS,IACTle,EAAG,ySAELuE,SAAU4Y,EAAe,GAAK,CAAC,CAC7BhZ,IAAK,UACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAGioB,GAAkB,CAAC,EAAG,CAClE1W,OAAQ,qBAITgW,GAEHI,EAAU7nB,KAAK,CACbyO,IAAK,OACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAG4nB,GAAO,CAAC,EAAG,CACvDU,QAAS,IACTle,EAAG,gJAELuE,SAAU,CAAC,CACTJ,IAAK,UACLE,WAAYzO,EAAeA,EAAe,CAAC,EAAGioB,GAAkB,CAAC,EAAG,CAClE1W,OAAQ,qBAKT,CACLhD,IAAK,IACLE,WAAY,CACV,MAAS,WAEXE,SAAUgZ,EAEd,CACF,IA/mDF,SAAyBY,EAAa/f,GACpC,IAAI3H,EAAM2H,EAAKggB,UACfnT,GAAWkT,EACXjT,GAAS,CAAC,EACV/V,OAAOD,KAAKiW,IAAWjV,SAAQ,SAAUmoB,IACC,IAApCjT,GAAoB/P,QAAQgjB,WACvBlT,GAAUkT,EAErB,IACApT,GAAS/U,SAAQ,SAAUooB,GACzB,IAAI/a,EAAS+a,EAAO/a,OAAS+a,EAAO/a,SAAW,CAAC,EAchD,GAbApO,OAAOD,KAAKqO,GAAQrN,SAAQ,SAAUqoB,GACV,mBAAfhb,EAAOgb,KAChB9nB,EAAI8nB,GAAMhb,EAAOgb,IAES,WAAxB/nB,EAAQ+M,EAAOgb,KACjBppB,OAAOD,KAAKqO,EAAOgb,IAAKroB,SAAQ,SAAUsoB,GACnC/nB,EAAI8nB,KACP9nB,EAAI8nB,GAAM,CAAC,GAEb9nB,EAAI8nB,GAAIC,GAAMjb,EAAOgb,GAAIC,EAC3B,GAEJ,IACIF,EAAO7a,MAAO,CAChB,IAAIA,EAAQ6a,EAAO7a,QACnBtO,OAAOD,KAAKuO,GAAOvN,SAAQ,SAAUoV,GAC9BJ,GAAOI,KACVJ,GAAOI,GAAQ,IAEjBJ,GAAOI,GAAM5V,KAAK+N,EAAM6H,GAC1B,GACF,CACIgT,EAAOhH,UACTgH,EAAOhH,SAASnM,GAEpB,GAEF,CAwlDAsT,CADc,CAACnb,GAAW6T,GAAiBa,GAAQG,GAAeE,GAxX7C,CACnB5U,MAAO,WACL,MAAO,CACL4T,0BAA2B,SAAmC9L,GAE5D,OADAA,EAAY6H,uBAAyBhU,GAC9BmM,CACT,EAEJ,EACA+L,SAAU,SAAkBC,GAC1BA,EAAamH,mBAAqB,SAAUxS,GAC1C,IAAIsL,EAAetL,EAAOlL,KACxBA,OAAwB,IAAjBwW,EAA0B5c,EAAW4c,EAC1C5X,GAAOR,sBACTA,GAAqB4B,EAEzB,CACF,GAGuB,CACvBuC,OAAQ,WACN,MAAO,CACLC,IAAK,CACHmb,QAAS,WACPjM,KACAoI,IAAa,CACf,GAGN,EACArX,MAAO,WACL,MAAO,CACLmb,UAAW,WACT/L,GAAQxH,GAAW,4BAA6B,CAAC,GACnD,EACAqB,OAAQ,WA5oBPkG,IACLA,GAAGiM,YA6oBC,EACAxS,MAAO,SAAeH,GACpB,IAAIoH,EAAuBpH,EAAOoH,qBAC9BwH,GACFnI,KAEAE,GAAQxH,GAAW,4BAA6B,CAC9CiI,qBAAsBA,IAG5B,EAEJ,GAsUgH6H,GAAiBY,GAAOmB,GAZzH,CACfzZ,MAAO,WACL,MAAO,CACL2X,oBAAqB,SAA6B7P,EAAavK,GAC7D,IAAI8d,EAAa9d,EAAKtC,aAAa,kBAC/BgP,EAAwB,OAAfoR,IAA6C,KAAfA,GAA2BA,GAEtE,OADAvT,EAAoB,OAAImC,EACjBnC,CACT,EAEJ,IAGuB,CACvB6S,UAAW3R,KAEb,IAIIsS,GAAUtS,GAAIE,MAGd5H,GAAO0H,GAAI1H,K,iCCrpFf,SAAS,GAAQ/P,EAAQC,GACvB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAC3CC,IAAmBI,EAAUA,EAAQC,QAAO,SAAUC,GACpD,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAAKP,EAAKQ,KAAKC,MAAMT,EAAMG,EAC7B,CACA,OAAOH,CACT,CACA,SAAS,GAAeW,GACtB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,CAAC,EACpDA,EAAI,EAAI,GAAQX,OAAOc,IAAS,GAAIC,SAAQ,SAAUC,GACpD,GAAgBN,EAAQM,EAAKF,EAAOE,GACtC,IAAKhB,OAAOkB,0BAA4BlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAAW,GAAQd,OAAOc,IAASC,SAAQ,SAAUC,GAC5JhB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GACF,CACA,OAAON,CACT,CACA,SAAS,GAAQY,GAGf,OAAO,GAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAC1H,EAAG,GAAQA,EACb,CACA,SAAS,GAAgBA,EAAKN,EAAKgB,GAWjC,OAVIhB,KAAOM,EACTtB,OAAOoB,eAAeE,EAAKN,EAAK,CAC9BgB,MAAOA,EACP1B,YAAY,EACZwB,cAAc,EACdC,UAAU,IAGZT,EAAIN,GAAOgB,EAENV,CACT,CAaA,SAASuoB,GAAyB/oB,EAAQgpB,GACxC,GAAc,MAAVhpB,EAAgB,MAAO,CAAC,EAC5B,IACIE,EAAKL,EADLD,EAdN,SAAuCI,EAAQgpB,GAC7C,GAAc,MAAVhpB,EAAgB,MAAO,CAAC,EAC5B,IAEIE,EAAKL,EAFLD,EAAS,CAAC,EACVqpB,EAAa/pB,OAAOD,KAAKe,GAE7B,IAAKH,EAAI,EAAGA,EAAIopB,EAAWlpB,OAAQF,IACjCK,EAAM+oB,EAAWppB,GACbmpB,EAAS5jB,QAAQlF,IAAQ,IAC7BN,EAAOM,GAAOF,EAAOE,IAEvB,OAAON,CACT,CAGespB,CAA8BlpB,EAAQgpB,GAEnD,GAAI9pB,OAAOC,sBAAuB,CAChC,IAAIgqB,EAAmBjqB,OAAOC,sBAAsBa,GACpD,IAAKH,EAAI,EAAGA,EAAIspB,EAAiBppB,OAAQF,IACvCK,EAAMipB,EAAiBtpB,GACnBmpB,EAAS5jB,QAAQlF,IAAQ,GACxBhB,OAAO0B,UAAUwoB,qBAAqBtnB,KAAK9B,EAAQE,KACxDN,EAAOM,GAAOF,EAAOE,GAEzB,CACA,OAAON,CACT,CACA,SAAS,GAAmBwB,GAC1B,OAEF,SAA4BA,GAC1B,GAAIC,MAAMC,QAAQF,GAAM,OAAO,GAAkBA,EACnD,CAJS,CAAmBA,IAK5B,SAA0BqB,GACxB,GAAsB,oBAAXhC,QAAmD,MAAzBgC,EAAKhC,OAAOC,WAA2C,MAAtB+B,EAAK,cAAuB,OAAOpB,MAAMqB,KAAKD,EACtH,CAPoC,CAAiBrB,IAQrD,SAAqCyB,EAAGC,GACtC,IAAKD,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGC,GACvD,IAAIC,EAAI7D,OAAO0B,UAAUoC,SAASlB,KAAKe,GAAGI,MAAM,GAAI,GAC1C,WAANF,GAAkBF,EAAElC,cAAaoC,EAAIF,EAAElC,YAAYuC,MACvD,GAAU,QAANH,GAAqB,QAANA,EAAa,OAAO1B,MAAMqB,KAAKG,GAClD,GAAU,cAANE,GAAqB,2CAA2CI,KAAKJ,GAAI,OAAO,GAAkBF,EAAGC,EAC3G,CAf6D,CAA4B1B,IAqBzF,WACE,MAAM,IAAIgB,UAAU,uIACtB,CAvBiG,EACjG,CAeA,SAAS,GAAkBhB,EAAKgC,IACnB,MAAPA,GAAeA,EAAMhC,EAAIrB,UAAQqD,EAAMhC,EAAIrB,QAC/C,IAAK,IAAIF,EAAI,EAAGwD,EAAO,IAAIhC,MAAM+B,GAAMvD,EAAIuD,EAAKvD,IAAKwD,EAAKxD,GAAKuB,EAAIvB,GACnE,OAAOwD,CACT,CAgEA,SAASgmB,GAASpZ,GAChB,OANoBzP,EAMHyP,GALjBzP,GAAY,IAEGA,EAINyP,GAGTA,EAASA,EAAO7E,QAAQ,iBAAiB,SAAUwL,EAAO0S,GACxD,OAAOA,EAAMA,EAAIpc,cAAgB,EACnC,KAEcqc,OAAO,EAAG,GAAG7F,cAAgBzT,EAAOsZ,OAAO,GAd3D,IAAsB/oB,CAetB,CACA,IAAIgpB,GAAc,CAAC,SAwDnB,IAAI,IAAa,EACjB,IACE,IAAa,CACf,CAAE,MAAOvlB,IAAI,CAOb,SAASwlB,GAAkB3a,GAGzB,OAAIA,GAA0B,WAAlB,GAAQA,IAAsBA,EAAKF,QAAUE,EAAKD,UAAYC,EAAKA,KACtEA,EAEL,GAAMA,KACD,GAAMA,KAAKA,GAGP,OAATA,EACK,KAGLA,GAA0B,WAAlB,GAAQA,IAAsBA,EAAKF,QAAUE,EAAKD,SACrDC,EAGLzN,MAAMC,QAAQwN,IAAyB,IAAhBA,EAAK/O,OAEvB,CACL6O,OAAQE,EAAK,GACbD,SAAUC,EAAK,IAIC,iBAATA,EACF,CACLF,OAAQ,MACRC,SAAUC,QAHd,CAMF,CAKA,SAAS4a,GAAcxpB,EAAKgB,GAK1B,OAAOG,MAAMC,QAAQJ,IAAUA,EAAMnB,OAAS,IAAMsB,MAAMC,QAAQJ,IAAUA,EAAQ,GAAgB,CAAC,EAAGhB,EAAKgB,GAAS,CAAC,CACzH,CACA,IAAIyoB,GAAY,CAAC,gBACjB,SAASC,GAAgBzhB,GACvB,IAAI0hB,EAAe1hB,EAAK0hB,aACtB/oB,EAAQioB,GAAyB5gB,EAAMwhB,IACrCG,EAAWhpB,EAAMgO,KACnBib,EAAWjpB,EAAM0W,KACjBC,EAAS3W,EAAM2W,OACfuS,EAAYlpB,EAAMkpB,UAClBtS,EAAQ5W,EAAM4W,MACdE,EAAU9W,EAAM8W,QAChBD,EAAS7W,EAAM6W,OACb7B,EAAa2T,GAAkBK,GAC/B1R,EAAUsR,GAAc,UAAW,GAAGviB,OAAO,GA/LnD,SAAmBrG,GACjB,IAAImpB,EACAC,EAAOppB,EAAMopB,KACfC,EAAOrpB,EAAMqpB,KACbC,EAAWtpB,EAAMspB,SACjBC,EAASvpB,EAAMupB,OACfC,EAAQxpB,EAAMwpB,MACdC,EAAQzpB,EAAMypB,MACdC,EAAO1pB,EAAM0pB,KACbC,EAAY3pB,EAAM2pB,UAClBC,EAAc5pB,EAAM4pB,YACpBC,EAAQ7pB,EAAM6pB,MACdC,EAAa9pB,EAAM8pB,WACnBC,EAAU/pB,EAAM+pB,QAChBC,EAAShqB,EAAMgqB,OACfC,EAAWjqB,EAAMiqB,SACjBC,EAAOlqB,EAAMkqB,KACb/gB,EAAOnJ,EAAMmJ,KACbghB,EAAWnqB,EAAMmqB,SACjBC,EAAOpqB,EAAMoqB,KAEX9S,GAkBD,GAlBY6R,EAAW,CACxB,UAAWC,EACX,UAAWC,EACX,eAAgBC,EAChB,YAAaC,EACb,WAAYC,EACZ,WAAYC,EACZ,UAAWC,EACX,kBAAmBE,EACnB,gBAAiBD,EACjB,WAAYE,EACZ,QAASC,EACT,aAAcC,EACd,YAAaC,EACb,QAASC,EACT,WAAoB,IAATC,EACX,qBAA+B,eAATA,GAAkC,SAATA,EAC/C,mBAA6B,aAATA,GAAgC,SAATA,GAChB,MAAM7jB,OAAO8C,GAAO,MAAOA,GAAwC,GAAgBggB,EAAU,aAAa9iB,OAAO8jB,GAAW,MAAOA,GAA8D,IAAbA,GAAiB,GAAgBhB,EAAU,WAAW9iB,OAAO+jB,GAAO,MAAOA,GAAwC,GAAgBjB,EAAU,kBAAmBnpB,EAAMqqB,aAAclB,GAGrY,OAAO/qB,OAAOD,KAAKmZ,GAASxQ,KAAI,SAAU1H,GACxC,OAAOkY,EAAQlY,GAAOA,EAAM,IAC9B,IAAGb,QAAO,SAAUa,GAClB,OAAOA,CACT,GACF,CAgJsE8K,CAAUlK,IAAS,GAAmBkpB,EAAU/e,MAAM,QACtHW,EAAY8d,GAAc,YAAwC,iBAApB5oB,EAAM8K,UAAyB,GAAMA,UAAU9K,EAAM8K,WAAa9K,EAAM8K,WACtH4L,EAAOkS,GAAc,OAAQD,GAAkBM,IAC/CqB,EAAetc,GAAKgH,EAAY,GAAe,GAAe,GAAe,GAAe,CAAC,EAAGsC,GAAUxM,GAAY4L,GAAO,CAAC,EAAG,CACnIC,OAAQA,EACRC,MAAOA,EACPE,QAASA,EACTD,OAAQA,KAEV,IAAKyT,EAEH,OAzEJ,WAEI,IAAIC,GADD,IAAc1R,SAAoC,mBAAlBA,QAAQC,QAE1CyR,EAAW1R,SAASC,MAAMla,MAAM2rB,EAAUvrB,UAE/C,CAmEIwrB,CAAI,sBAAuBxV,GACpB,KAET,IAAIoB,EAAWkU,EAAalU,SACxBqU,EAAa,CACfC,IAAK3B,GAQP,OANA3qB,OAAOD,KAAK6B,GAAOb,SAAQ,SAAUC,GAE9B0pB,GAAgB6B,aAAaC,eAAexrB,KAC/CqrB,EAAWrrB,GAAOY,EAAMZ,GAE5B,IACOyrB,GAAazU,EAAS,GAAIqU,EACnC,CACA3B,GAAgBgC,YAAc,kBAC9BhC,GAAgBiC,UAAY,CAC1B3B,KAAM,UACNY,OAAQ,UACRV,SAAU,UACVC,OAAQ,UACRL,UAAW,YACXG,KAAM,UACNI,MAAO,UACP/S,KAAM,eAAoB,CAAC,YAAkB,WAAiB,cAC9DG,OAAQ,YACRiT,WAAY,UACZC,QAAS,UACTG,KAAM,WAAgB,EAAC,GAAM,EAAO,aAAc,WAAY,SAC9Dlc,KAAM,eAAoB,CAAC,YAAkB,WAAiB,cAC9Dic,SAAU,UACVG,KAAM,WAAgB,CAAC,QAAS,SAChCP,MAAO,UACPM,SAAU,WAAgB,CAAC,EAAG,GAAI,IAAK,MACvCX,MAAO,UACPrgB,KAAM,WAAgB,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QACnHugB,KAAM,UACNC,UAAW,UACXC,YAAa,UACbjT,OAAQ,eAAoB,CAAC,UAAgB,cAC7CC,MAAO,YACPE,QAAS,YACThM,UAAW,eAAoB,CAAC,YAAkB,cAClDuf,YAAa,WAEfvB,GAAgB6B,aAAe,CAC7BX,QAAQ,EACRd,UAAW,GACXxS,KAAM,KACNG,OAAQ,KACRiT,YAAY,EACZC,SAAS,EACTG,MAAM,EACNlc,KAAM,KACNic,UAAU,EACVG,KAAM,KACNP,OAAO,EACPM,SAAU,KACVhhB,KAAM,KACNugB,MAAM,EACNC,WAAW,EACXC,aAAa,EACbR,MAAM,EACNC,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,OAAO,EACP7S,QAAQ,EACRC,MAAO,GACPE,QAAS,KACThM,UAAW,KACXuf,aAAa,GAEf,IAAIQ,GA5LJ,SAASG,EAAQ5mB,EAAesD,GAC9B,IAAI+iB,EAAazrB,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACtF,GAAuB,iBAAZ0I,EACT,OAAOA,EAET,IAAI8F,GAAY9F,EAAQ8F,UAAY,IAAI1G,KAAI,SAAUoF,GACpD,OAAO8e,EAAQ5mB,EAAe8H,EAChC,IAGI+e,EAAS7sB,OAAOD,KAAKuJ,EAAQ4F,YAAc,CAAC,GAAG7C,QAAO,SAAUC,EAAKtL,GACvE,IAAIoI,EAAME,EAAQ4F,WAAWlO,GAC7B,OAAQA,GACN,IAAK,QACHsL,EAAIwgB,MAAiB,UAAI1jB,SAClBE,EAAQ4F,WAAkB,MACjC,MACF,IAAK,QACH5C,EAAIwgB,MAAa,MAAkB1jB,EA9B5B2C,MAAM,KAAKrD,KAAI,SAAUuE,GACpC,OAAOA,EAAET,MACX,IAAGrM,QAAO,SAAU8M,GAClB,OAAOA,CACT,IAAGZ,QAAO,SAAUC,EAAKygB,GACvB,IATgB3jB,EASZzI,EAAIosB,EAAK7mB,QAAQ,KACjBoB,EAAO6iB,GAAS4C,EAAKhpB,MAAM,EAAGpD,IAC9BqB,EAAQ+qB,EAAKhpB,MAAMpD,EAAI,GAAG6L,OAE9B,OADAlF,EAAK+d,WAAW,UAAY/Y,GAZZlD,EAY2B9B,EAXtC8B,EAAI4jB,OAAO,GAAGhf,cAAgB5E,EAAIrF,MAAM,KAWO/B,EAAQsK,EAAIhF,GAAQtF,EACjEsK,CACT,GAAG,CAAC,GAqBE,MACF,QAC+B,IAAzBtL,EAAIkF,QAAQ,UAA2C,IAAzBlF,EAAIkF,QAAQ,SAC5CoG,EAAIwgB,MAAM9rB,EAAIwjB,eAAiBpb,EAE/BkD,EAAIwgB,MAAM3C,GAASnpB,IAAQoI,EAGjC,OAAOkD,CACT,GAAG,CACDwgB,MAAO,CAAC,IAENG,EAAoBZ,EAAW7e,MACjC0f,OAAsC,IAAtBD,EAA+B,CAAC,EAAIA,EACpDE,EAAYtD,GAAyBwC,EAAY/B,IAInD,OAHAuC,EAAOC,MAAa,MAAI,GAAe,GAAe,CAAC,EAAGD,EAAOC,MAAa,OAAII,GAG3ElnB,EAAcxF,WAAM,EAAQ,CAAC8I,EAAQ0F,IAAK,GAAe,GAAe,CAAC,EAAG6d,EAAOC,OAAQK,IAAYllB,OAAO,GAAmBmH,IAC1I,EAsJ2BxG,KAAK,KAAM,iB,kCCnXtC,IAAIwkB,EAAWptB,OAAOqtB,QAAU,SAAU3sB,GACxC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GACvB,IAAK,IAAIK,KAAOF,EACVd,OAAO0B,UAAU8qB,eAAe5pB,KAAK9B,EAAQE,KAC/CN,EAAOM,GAAOF,EAAOE,GAG3B,CACA,OAAON,CACT,EACI4sB,EAAc,SAAqBxsB,GACrC,IAAIysB,EAAmBzsB,EAAO0sB,SAC5BC,EAASF,EAAiBE,OAC1BC,EAAOH,EAAiBG,KACxBC,EAAOJ,EAAiBI,KACxBC,EAASL,EAAiBK,OAC1BC,EAAWN,EAAiBM,SAC5BC,EAAOP,EAAiBO,KACxBC,EAAWR,EAAiBQ,SAC5BC,EAAOT,EAAiBS,KACtBC,EAAWntB,EAAO0sB,SAASS,UAC1BA,GAAYN,GAAQO,IAEvBD,EADU,IAAIE,IAAIR,GACHM,UAEjB,MAAO,CACLA,SAAUG,UAAUC,UAAUJ,IAC9BR,OAAQA,EACRC,KAAMA,EACNC,KAAMA,EACNC,OAAQA,EACRC,SAAUA,EACVC,KAAMA,EACNC,SAAUA,EACVC,KAAMA,EACNM,MAAOxtB,EAAOytB,QAAQD,MACtBttB,IAAKF,EAAOytB,QAAQD,OAASxtB,EAAOytB,QAAQD,MAAMttB,KAAO,UAE7D,EACIwtB,EAAgB,SAAuB1tB,EAAQ6c,GACjD,IAAI8Q,EAAY,GACZjB,EAAWF,EAAYxsB,GACvB4tB,GAAgB,EAChBC,EAAoB,WAA8B,EACtD,MAAO,CACL,YAAInB,GACF,OAAOA,CACT,EACA,iBAAIkB,GACF,OAAOA,CACT,EACAE,sBAAuB,WACrBF,GAAgB,EAChBC,GACF,EACAE,OAAQ,SAAgB9e,GACtB0e,EAAUluB,KAAKwP,GACf,IAAI+e,EAAmB,WACrBtB,EAAWF,EAAYxsB,GACvBiP,EAAS,CACPyd,SAAUA,EACVuB,OAAQ,OAEZ,EAEA,OADAjuB,EAAOiF,iBAAiB,WAAY+oB,GAC7B,WACLhuB,EAAOkP,oBAAoB,WAAY8e,GACvCL,EAAYA,EAAUtuB,QAAO,SAAU8P,GACrC,OAAOA,IAAOF,CAChB,GACF,CACF,EACAif,SAAU,SAAkBC,GAC1B,IAAIhmB,EAAOrI,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E0tB,EAAQrlB,EAAKqlB,MACbY,EAAejmB,EAAKiD,QACpBA,OAA2BoE,IAAjB4e,GAAqCA,EACjD,GAAkB,iBAAPD,EACTnuB,EAAOytB,QAAQY,GAAGF,OACb,CACLX,EAAQlB,EAAS,CAAC,EAAGkB,EAAO,CAC1BttB,IAAKouB,KAAKC,MAAQ,KAGpB,IACMX,GAAiBxiB,EACnBpL,EAAOytB,QAAQe,aAAahB,EAAO,KAAMW,GAEzCnuB,EAAOytB,QAAQgB,UAAUjB,EAAO,KAAMW,EAE1C,CAAE,MAAOlqB,GACPjE,EAAO0sB,SAASthB,EAAU,UAAY,UAAU+iB,EAClD,CACF,CACAzB,EAAWF,EAAYxsB,GACvB4tB,GAAgB,EAChB,IAAIc,EAAa,IAAIxY,SAAQ,SAAUyY,GACrC,OAAOd,EAAoBc,CAC7B,IAOA,OANAhB,EAAU1tB,SAAQ,SAAUgP,GAC1B,OAAOA,EAAS,CACdyd,SAAUA,EACVuB,OAAQ,QAEZ,IACOS,CACT,EAEJ,EAIIE,EAAqB,WACvB,IAAIC,EAAc/uB,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,IAClFgvB,EAAcD,EAAYzpB,QAAQ,KAClC2pB,EAAkB,CACpB5B,SAAU2B,GAAe,EAAID,EAAYtF,OAAO,EAAGuF,GAAeD,EAClElC,OAAQmC,GAAe,EAAID,EAAYtF,OAAOuF,GAAe,IAE3DlL,EAAQ,EACRoL,EAAQ,CAACD,GACTE,EAAS,CAAC,MACd,MAAO,CACL,YAAIvC,GACF,OAAOsC,EAAMpL,EACf,EACA3e,iBAAkB,SAA0B/B,EAAMiM,GAAK,EACvDD,oBAAqB,SAA6BhM,EAAMiM,GAAK,EAC7Dse,QAAS,CACP,WAAIyB,GACF,OAAOF,CACT,EACA,SAAIpL,GACF,OAAOA,CACT,EACA,SAAI4J,GACF,OAAOyB,EAAOrL,EAChB,EACA6K,UAAW,SAAmBjB,EAAO2B,EAAGC,GACtC,IAAIC,EAAaD,EAAInkB,MAAM,KACzBkiB,EAAWkC,EAAW,GACtBC,EAAcD,EAAW,GACzB1C,OAAyBnd,IAAhB8f,EAA4B,GAAKA,EAC5C1L,IACAoL,EAAMvvB,KAAK,CACT0tB,SAAUA,EACVR,OAAQA,EAAO5sB,OAAS,IAAM4sB,EAASA,IAEzCsC,EAAOxvB,KAAK+tB,EACd,EACAgB,aAAc,SAAsBhB,EAAO2B,EAAGC,GAC5C,IAAIG,EAAcH,EAAInkB,MAAM,KAC1BkiB,EAAWoC,EAAY,GACvBC,EAAeD,EAAY,GAC3B5C,OAA0Bnd,IAAjBggB,EAA6B,GAAKA,EAC7CR,EAAMpL,GAAS,CACbuJ,SAAUA,EACVR,OAAQA,GAEVsC,EAAOrL,GAAS4J,CAClB,EACAa,GAAI,SAAYF,GACd,IAAIsB,EAAW7L,EAAQuK,EACnBsB,EAAW,GAAKA,EAAWR,EAAOlvB,OAAS,IAG/C6jB,EAAQ6L,EACV,GAGN,EAKIrC,IAAiC,oBAAXvpB,SAA0BA,OAAOC,WAAYD,OAAOC,SAASoB,eAInFwqB,EAAgBhC,EAFXN,EAAYvpB,OAAS+qB,KAG1BV,EAAWwB,EAAcxB,SAI7ByB,EAAQ,GAAgBD,C,oCCzLqFC,EAAQ,QAA4BngB,EACjJ,IAEgChP,EAF5BovB,EAAa,EAAQ,MACrBC,GAC4BrvB,EADSovB,IAEzBpvB,EAAIsvB,WAAatvB,EAAM,CACnCuvB,QAASvvB,GAMb,IAAI+jB,EAAa,SAAoBtU,EAAQ0c,GAC3C,OAAO1c,EAAOsZ,OAAO,EAAGoD,EAAO5sB,UAAY4sB,CAC7C,EAuBIqD,EAAO,SAAcC,EAAQb,GAQ/B,IAPA,IAAIxY,OAAQ,EACRsZ,OAAW,EAEbC,EADef,EAAInkB,MAAM,KACA,GACvBmlB,EAAcC,EAAWF,GACzBG,EAA+B,KAAnBF,EAAY,GACxBG,EAASC,EAAWP,GACfpwB,EAAI,EAAG4wB,EAAIF,EAAOxwB,OAAQF,EAAI4wB,EAAG5wB,IAAK,CAC7C,IAAI6wB,GAAS,EACTC,EAAQJ,EAAO1wB,GAAG8wB,MACtB,GAAIA,EAAMZ,QACRG,EAAW,CACTS,MAAOA,EACP1a,OAAQ,CAAC,EACTmZ,IAAKA,OAJT,CAYA,IAJA,IAAIwB,EAAgBP,EAAWM,EAAMjL,MACjCzP,EAAS,CAAC,EACV4a,EAAMnmB,KAAKmmB,IAAIT,EAAYrwB,OAAQ6wB,EAAc7wB,QACjD6jB,EAAQ,EACLA,EAAQiN,EAAKjN,IAAS,CAC3B,IAAIkN,EAAeF,EAAchN,GAC7BmN,EAAaX,EAAYxM,GAC7B,GAAIoN,EAAQF,GAAe,CAKzB7a,EADY6a,EAAa7tB,MAAM,IAAM,KACrBmtB,EAAYntB,MAAM2gB,GAAOhc,IAAIqpB,oBAAoBxiB,KAAK,KACtE,KACF,CACA,QAAmBe,IAAfuhB,EAA0B,CAI5BL,GAAS,EACT,KACF,CACA,IAAIQ,EAAeC,EAAQC,KAAKN,GAChC,GAAII,IAAiBZ,EAAW,EACuC,IAA5Ce,EAAcjsB,QAAQ8rB,EAAa,MAC4K,EAAIrB,EAAYE,UAAS,GACjQ,IAAI7uB,EAAQ+vB,mBAAmBF,GAC/B9a,EAAOib,EAAa,IAAMhwB,CAC5B,MAAO,GAAI4vB,IAAiBC,EAAY,CAItCL,GAAS,EACT,KACF,CACF,CACA,IAAKA,EAAQ,CACX9Z,EAAQ,CACN+Z,MAAOA,EACP1a,OAAQA,EACRmZ,IAAK,IAAMgB,EAAYntB,MAAM,EAAG2gB,GAAOnV,KAAK,MAE9C,KACF,CA5CA,CA6CF,CACA,OAAOmI,GAASsZ,GAAY,IAC9B,EA0GIiB,EAAU,SASVG,EAAY,SAAmBC,GACjC,OAAOJ,EAAQhuB,KAAKouB,EACtB,EACIP,EAAU,SAAiBO,GAC7B,OAAOA,GAA0B,MAAfA,EAAQ,EAC5B,EACIC,EAAY,SAAmBb,EAAO/M,GAMxC,MAAO,CACL+M,MAAOA,EACPc,MAPUd,EAAMZ,QAAU,EAAIM,EAAWM,EAAMjL,MAAMna,QAAO,SAAUkmB,EAAOF,GAG7E,OAFAE,GAhBiB,GAKD,SAAuBF,GACzC,MAAmB,KAAZA,CACT,CAUQG,CAAcH,GAAwCD,EAAUC,GAAUE,GAf7D,EAe8FT,EAAQO,GAAUE,GAASE,EAAoCF,GAhB9J,EAgBYA,GAbd,EAcPA,CACT,GAAG,GAID7N,MAAOA,EAEX,EACI4M,EAAa,SAAoBP,GACnC,OAAOA,EAAOroB,IAAI4pB,GAAWI,MAAK,SAAUliB,EAAGC,GAC7C,OAAOD,EAAE+hB,MAAQ9hB,EAAE8hB,MAAQ,EAAI/hB,EAAE+hB,MAAQ9hB,EAAE8hB,OAAS,EAAI/hB,EAAEkU,MAAQjU,EAAEiU,KACtE,GACF,EACIyM,EAAa,SAAoBjB,GACnC,OAAOA,EAENhkB,QAAQ,eAAgB,IAAIH,MAAM,IACrC,EACI4mB,EAAW,SAAkB1E,GAC/B,IAAK,IAAI1Y,EAAO3U,UAAUC,OAAQ+xB,EAAQzwB,MAAMoT,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Fod,EAAMpd,EAAO,GAAK5U,UAAU4U,GAK9B,OAAOyY,IAHP2E,EAAQA,EAAMzyB,QAAO,SAAU0yB,GAC7B,OAAOA,GAAKA,EAAEhyB,OAAS,CACzB,MAC4B+xB,EAAM/xB,OAAS,EAAI,IAAM+xB,EAAMrjB,KAAK,KAAO,GACzE,EACI4iB,EAAgB,CAAC,MAAO,QAgB5B1B,EAAQ,GAAOK,C,uBChRfgC,EAAOrC,QAAU,EAAjB,K,oCCEA,IAAIsC,EAAQ,EAAQ,MAChBC,EAAS,EAAQ,MACjBC,EAAU,EAAQ,KAClBC,EAAW,EAAQ,MACnBC,EAAgB,EAAQ,MACxBC,EAAe,EAAQ,MACvBC,EAAkB,EAAQ,KAC1BC,EAAc,EAAQ,MACtBC,EAAW,EAAQ,MACnBC,EAAS,EAAQ,MACrBV,EAAOrC,QAAU,SAAoBhmB,GACnC,OAAO,IAAIuM,SAAQ,SAA4BwD,EAASvD,GACtD,IAGIwc,EAHAC,EAAcjpB,EAAO+U,KACrBmU,EAAiBlpB,EAAOmpB,QACxBC,EAAeppB,EAAOopB,aAE1B,SAAS/wB,IACH2H,EAAOqpB,aACTrpB,EAAOqpB,YAAYC,YAAYN,GAE7BhpB,EAAOupB,QACTvpB,EAAOupB,OAAOhkB,oBAAoB,QAASyjB,EAE/C,CACIV,EAAMkB,WAAWP,WACZC,EAAe,gBAGxB,IAAIO,EAAU,IAAIC,eAGlB,GAAI1pB,EAAO2pB,KAAM,CACf,IAAIC,EAAW5pB,EAAO2pB,KAAKC,UAAY,GACnCC,EAAW7pB,EAAO2pB,KAAKE,SAAWC,SAASC,mBAAmB/pB,EAAO2pB,KAAKE,WAAa,GAC3FX,EAAec,cAAgB,SAAWC,KAAKL,EAAW,IAAMC,EAClE,CACA,IAAIK,EAAWxB,EAAc1oB,EAAOmqB,QAASnqB,EAAOoqB,KAKpD,SAASC,IACP,GAAKZ,EAAL,CAIA,IAAIa,EAAkB,0BAA2Bb,EAAUd,EAAac,EAAQc,yBAA2B,KAEvGC,EAAW,CACbzV,KAFkBqU,GAAiC,SAAjBA,GAA4C,SAAjBA,EAAiDK,EAAQe,SAA/Bf,EAAQgB,aAG/FC,OAAQjB,EAAQiB,OAChBC,WAAYlB,EAAQkB,WACpBxB,QAASmB,EACTtqB,OAAQA,EACRypB,QAASA,GAEXlB,GAAO,SAAkBhxB,GACvBwY,EAAQxY,GACRc,GACF,IAAG,SAAiBC,GAClBkU,EAAOlU,GACPD,GACF,GAAGmyB,GAGHf,EAAU,IArBV,CAsBF,CA6DA,GA1FAA,EAAQmB,KAAK5qB,EAAO6qB,OAAOtnB,cAAeklB,EAASyB,EAAUlqB,EAAOsM,OAAQtM,EAAO8qB,mBAAmB,GAGtGrB,EAAQsB,QAAU/qB,EAAO+qB,QA2BrB,cAAetB,EAEjBA,EAAQY,UAAYA,EAGpBZ,EAAQuB,mBAAqB,WACtBvB,GAAkC,IAAvBA,EAAQpkB,aAQD,IAAnBokB,EAAQiB,QAAkBjB,EAAQwB,aAAwD,IAAzCxB,EAAQwB,YAAYxvB,QAAQ,WAKjFmR,WAAWyd,EACb,EAIFZ,EAAQyB,QAAU,WACXzB,IAGLjd,EAAOqc,EAAY,kBAAmB7oB,EAAQ,eAAgBypB,IAG9DA,EAAU,KACZ,EAGAA,EAAQ0B,QAAU,WAGhB3e,EAAOqc,EAAY,gBAAiB7oB,EAAQ,KAAMypB,IAGlDA,EAAU,IACZ,EAGAA,EAAQ2B,UAAY,WAClB,IAAIC,EAAsBrrB,EAAO+qB,QAAU,cAAgB/qB,EAAO+qB,QAAU,cAAgB,mBACxFO,EAAetrB,EAAOsrB,cAAgBxC,EAASwC,aAC/CtrB,EAAOqrB,sBACTA,EAAsBrrB,EAAOqrB,qBAE/B7e,EAAOqc,EAAYwC,EAAqBrrB,EAAQsrB,EAAaC,oBAAsB,YAAc,eAAgB9B,IAGjHA,EAAU,IACZ,EAKInB,EAAMkD,uBAAwB,CAEhC,IAAIC,GAAazrB,EAAO0rB,iBAAmB9C,EAAgBsB,KAAclqB,EAAO2rB,eAAiBnD,EAAQoD,KAAK5rB,EAAO2rB,qBAAkB9lB,EACnI4lB,IACFvC,EAAelpB,EAAO6rB,gBAAkBJ,EAE5C,CAGI,qBAAsBhC,GACxBnB,EAAMhyB,QAAQ4yB,GAAgB,SAA0BvqB,EAAKpI,QAChC,IAAhB0yB,GAAqD,iBAAtB1yB,EAAIwjB,qBAErCmP,EAAe3yB,GAGtBkzB,EAAQqC,iBAAiBv1B,EAAKoI,EAElC,IAIG2pB,EAAMyD,YAAY/rB,EAAO0rB,mBAC5BjC,EAAQiC,kBAAoB1rB,EAAO0rB,iBAIjCtC,GAAiC,SAAjBA,IAClBK,EAAQL,aAAeppB,EAAOopB,cAIS,mBAA9BppB,EAAOgsB,oBAChBvC,EAAQnuB,iBAAiB,WAAY0E,EAAOgsB,oBAIP,mBAA5BhsB,EAAOisB,kBAAmCxC,EAAQyC,QAC3DzC,EAAQyC,OAAO5wB,iBAAiB,WAAY0E,EAAOisB,mBAEjDjsB,EAAOqpB,aAAerpB,EAAOupB,UAG/BP,EAAa,SAAUmD,GAChB1C,IAGLjd,GAAQ2f,GAAUA,GAAUA,EAAOrY,KAAO,IAAIiV,EAAO,YAAcoD,GACnE1C,EAAQ2C,QACR3C,EAAU,KACZ,EACAzpB,EAAOqpB,aAAerpB,EAAOqpB,YAAYgD,UAAUrD,GAC/ChpB,EAAOupB,SACTvpB,EAAOupB,OAAO+C,QAAUtD,IAAehpB,EAAOupB,OAAOjuB,iBAAiB,QAAS0tB,KAG9EC,IACHA,EAAc,MAIhBQ,EAAQ8C,KAAKtD,EACf,GACF,C,oCC9LA,IAAIX,EAAQ,EAAQ,MAChBnqB,EAAO,EAAQ,MACfquB,EAAQ,EAAQ,MAChBC,EAAc,EAAQ,MA2B1B,IAAIC,EAlBJ,SAASC,EAAeC,GACtB,IAAIC,EAAU,IAAIL,EAAMI,GACpBtiB,EAAWnM,EAAKquB,EAAMv1B,UAAUwyB,QAASoD,GAY7C,OATAvE,EAAMwE,OAAOxiB,EAAUkiB,EAAMv1B,UAAW41B,GAGxCvE,EAAMwE,OAAOxiB,EAAUuiB,GAGvBviB,EAASyiB,OAAS,SAAgBC,GAChC,OAAOL,EAAeF,EAAYG,EAAeI,GACnD,EACO1iB,CACT,CAGYqiB,CA1BG,EAAQ,OA6BvBD,EAAMF,MAAQA,EAGdE,EAAM3D,OAAS,EAAQ,MACvB2D,EAAMO,YAAc,EAAQ,MAC5BP,EAAMQ,SAAW,EAAQ,MACzBR,EAAMS,QAAU,gBAGhBT,EAAMnW,IAAM,SAAa6W,GACvB,OAAO7gB,QAAQgK,IAAI6W,EACrB,EACAV,EAAMW,OAAS,EAAQ,MAGvBX,EAAMY,aAAe,EAAQ,MAC7BjF,EAAOrC,QAAU0G,EAGjBrE,EAAOrC,QAAP,QAAyB0G,C,gCC9CzB,SAAS3D,EAAOwE,GACd9iB,KAAK8iB,QAAUA,CACjB,CACAxE,EAAO9xB,UAAUoC,SAAW,WAC1B,MAAO,UAAYoR,KAAK8iB,QAAU,KAAO9iB,KAAK8iB,QAAU,GAC1D,EACAxE,EAAO9xB,UAAUu2B,YAAa,EAC9BnF,EAAOrC,QAAU+C,C,oCCbjB,IAAIA,EAAS,EAAQ,MAQrB,SAASkE,EAAYQ,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAIh1B,UAAU,gCAEtB,IAAIi1B,EACJjjB,KAAKkjB,QAAU,IAAIphB,SAAQ,SAAyBwD,GAClD2d,EAAiB3d,CACnB,IACA,IAAI6d,EAAQnjB,KAGZA,KAAKkjB,QAAQnX,MAAK,SAAU2V,GAC1B,GAAKyB,EAAMC,WAAX,CACA,IAAI33B,EACA4wB,EAAI8G,EAAMC,WAAWz3B,OACzB,IAAKF,EAAI,EAAGA,EAAI4wB,EAAG5wB,IACjB03B,EAAMC,WAAW33B,GAAGi2B,GAEtByB,EAAMC,WAAa,IANU,CAO/B,IAGApjB,KAAKkjB,QAAQnX,KAAO,SAAUsX,GAC5B,IAAIC,EAEAJ,EAAU,IAAIphB,SAAQ,SAAUwD,GAClC6d,EAAMvB,UAAUtc,GAChBge,EAAWhe,CACb,IAAGyG,KAAKsX,GAIR,OAHAH,EAAQxB,OAAS,WACfyB,EAAMtE,YAAYyE,EACpB,EACOJ,CACT,EACAF,GAAS,SAAgBF,GACnBK,EAAMI,SAIVJ,EAAMI,OAAS,IAAIjF,EAAOwE,GAC1BG,EAAeE,EAAMI,QACvB,GACF,CAKAf,EAAYh2B,UAAUg3B,iBAAmB,WACvC,GAAIxjB,KAAKujB,OACP,MAAMvjB,KAAKujB,MAEf,EAMAf,EAAYh2B,UAAUo1B,UAAY,SAAmB/mB,GAC/CmF,KAAKujB,OACP1oB,EAASmF,KAAKujB,QAGZvjB,KAAKojB,WACPpjB,KAAKojB,WAAW/3B,KAAKwP,GAErBmF,KAAKojB,WAAa,CAACvoB,EAEvB,EAMA2nB,EAAYh2B,UAAUqyB,YAAc,SAAqBhkB,GACvD,GAAKmF,KAAKojB,WAAV,CAGA,IAAI5T,EAAQxP,KAAKojB,WAAWpyB,QAAQ6J,IACrB,IAAX2U,GACFxP,KAAKojB,WAAWK,OAAOjU,EAAO,EAHhC,CAKF,EAMAgT,EAAY52B,OAAS,WACnB,IAAI81B,EAIJ,MAAO,CACLyB,MAJU,IAAIX,GAAY,SAAkBhnB,GAC5CkmB,EAASlmB,CACX,IAGEkmB,OAAQA,EAEZ,EACA9D,EAAOrC,QAAUiH,C,gCCzGjB5E,EAAOrC,QAAU,SAAkBzuB,GACjC,SAAUA,IAASA,EAAMi2B,WAC3B,C,oCCFA,IAAIlF,EAAQ,EAAQ,MAChBG,EAAW,EAAQ,MACnB0F,EAAqB,EAAQ,MAC7BC,EAAkB,EAAQ,MAC1B3B,EAAc,EAAQ,MACtB4B,EAAY,EAAQ,MACpBC,EAAaD,EAAUC,WAM3B,SAAS9B,EAAMQ,GACbviB,KAAKqe,SAAWkE,EAChBviB,KAAK8jB,aAAe,CAClB9E,QAAS,IAAI0E,EACb3D,SAAU,IAAI2D,EAElB,CAOA3B,EAAMv1B,UAAUwyB,QAAU,SAAiB+E,EAAaxuB,GAStD,GAN2B,iBAAhBwuB,GACTxuB,EAASA,GAAU,CAAC,GACboqB,IAAMoE,EAEbxuB,EAASwuB,GAAe,CAAC,GAEtBxuB,EAAOoqB,IACV,MAAM,IAAIqE,MAAM,qCAElBzuB,EAASysB,EAAYhiB,KAAKqe,SAAU9oB,IAGzB6qB,OACT7qB,EAAO6qB,OAAS7qB,EAAO6qB,OAAO9Q,cACrBtP,KAAKqe,SAAS+B,OACvB7qB,EAAO6qB,OAASpgB,KAAKqe,SAAS+B,OAAO9Q,cAErC/Z,EAAO6qB,OAAS,MAElB,IAAIS,EAAetrB,EAAOsrB,kBACLzlB,IAAjBylB,GACF+C,EAAUK,cAAcpD,EAAc,CACpCqD,kBAAmBL,EAAWhD,aAAagD,EAAWM,SACtDC,kBAAmBP,EAAWhD,aAAagD,EAAWM,SACtDrD,oBAAqB+C,EAAWhD,aAAagD,EAAWM,WACvD,GAIL,IAAIE,EAA0B,GAC1BC,GAAiC,EACrCtkB,KAAK8jB,aAAa9E,QAAQnzB,SAAQ,SAAoC04B,GACjC,mBAAxBA,EAAYC,UAA0D,IAAhCD,EAAYC,QAAQjvB,KAGrE+uB,EAAiCA,GAAkCC,EAAYE,YAC/EJ,EAAwBK,QAAQH,EAAYI,UAAWJ,EAAYK,UACrE,IACA,IAII1B,EAJA2B,EAA2B,GAK/B,GAJA7kB,KAAK8jB,aAAa/D,SAASl0B,SAAQ,SAAkC04B,GACnEM,EAAyBx5B,KAAKk5B,EAAYI,UAAWJ,EAAYK,SACnE,KAEKN,EAAgC,CACnC,IAAIQ,EAAQ,CAACnB,OAAiBvoB,GAI9B,IAHAnO,MAAMT,UAAUk4B,QAAQp5B,MAAMw5B,EAAOT,GACrCS,EAAQA,EAAM/xB,OAAO8xB,GACrB3B,EAAUphB,QAAQwD,QAAQ/P,GACnBuvB,EAAMn5B,QACXu3B,EAAUA,EAAQnX,KAAK+Y,EAAMC,QAASD,EAAMC,SAE9C,OAAO7B,CACT,CAEA,IADA,IAAI8B,EAAYzvB,EACT8uB,EAAwB14B,QAAQ,CACrC,IAAIs5B,EAAcZ,EAAwBU,QACtCG,EAAab,EAAwBU,QACzC,IACEC,EAAYC,EAAYD,EAC1B,CAAE,MAAOxf,GACP0f,EAAW1f,GACX,KACF,CACF,CACA,IACE0d,EAAUS,EAAgBqB,EAC5B,CAAE,MAAOxf,GACP,OAAO1D,QAAQC,OAAOyD,EACxB,CACA,KAAOqf,EAAyBl5B,QAC9Bu3B,EAAUA,EAAQnX,KAAK8Y,EAAyBE,QAASF,EAAyBE,SAEpF,OAAO7B,CACT,EACAnB,EAAMv1B,UAAU24B,OAAS,SAAgB5vB,GACvC,IAAKA,EAAOoqB,IACV,MAAM,IAAIqE,MAAM,oCAGlB,OADAzuB,EAASysB,EAAYhiB,KAAKqe,SAAU9oB,GAC7ByoB,EAASzoB,EAAOoqB,IAAKpqB,EAAOsM,OAAQtM,EAAO8qB,kBAAkBrpB,QAAQ,MAAO,GACrF,EAGA6mB,EAAMhyB,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6Bu0B,GAE/E2B,EAAMv1B,UAAU4zB,GAAU,SAAUT,EAAKpqB,GACvC,OAAOyK,KAAKgf,QAAQgD,EAAYzsB,GAAU,CAAC,EAAG,CAC5C6qB,OAAQA,EACRT,IAAKA,EACLrV,MAAO/U,GAAU,CAAC,GAAG+U,OAEzB,CACF,IACAuT,EAAMhyB,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+Bu0B,GAErE2B,EAAMv1B,UAAU4zB,GAAU,SAAUT,EAAKrV,EAAM/U,GAC7C,OAAOyK,KAAKgf,QAAQgD,EAAYzsB,GAAU,CAAC,EAAG,CAC5C6qB,OAAQA,EACRT,IAAKA,EACLrV,KAAMA,IAEV,CACF,IACAsT,EAAOrC,QAAUwG,C,oCCnIjB,IAAIlE,EAAQ,EAAQ,MACpB,SAAS6F,IACP1jB,KAAKolB,SAAW,EAClB,CAUA1B,EAAmBl3B,UAAU64B,IAAM,SAAaV,EAAWC,EAAUnc,GAOnE,OANAzI,KAAKolB,SAAS/5B,KAAK,CACjBs5B,UAAWA,EACXC,SAAUA,EACVH,cAAahc,GAAUA,EAAQgc,YAC/BD,QAAS/b,EAAUA,EAAQ+b,QAAU,OAEhCxkB,KAAKolB,SAASz5B,OAAS,CAChC,EAOA+3B,EAAmBl3B,UAAU84B,MAAQ,SAAejvB,GAC9C2J,KAAKolB,SAAS/uB,KAChB2J,KAAKolB,SAAS/uB,GAAM,KAExB,EAUAqtB,EAAmBl3B,UAAUX,QAAU,SAAiBkP,GACtD8iB,EAAMhyB,QAAQmU,KAAKolB,UAAU,SAAwBG,GACzC,OAANA,GACFxqB,EAAGwqB,EAEP,GACF,EACA3H,EAAOrC,QAAUmI,C,oCCjDjB,IAAI8B,EAAgB,EAAQ,KACxBC,EAAc,EAAQ,MAW1B7H,EAAOrC,QAAU,SAAuBmE,EAASgG,GAC/C,OAAIhG,IAAY8F,EAAcE,GACrBD,EAAY/F,EAASgG,GAEvBA,CACT,C,oCCjBA,IAAIC,EAAe,EAAQ,MAY3B/H,EAAOrC,QAAU,SAAqBuH,EAASvtB,EAAQqwB,EAAM5G,EAASe,GACpE,IAAIva,EAAQ,IAAIwe,MAAMlB,GACtB,OAAO6C,EAAangB,EAAOjQ,EAAQqwB,EAAM5G,EAASe,EACpD,C,oCCfA,IAAIlC,EAAQ,EAAQ,MAChBgI,EAAgB,EAAQ,MACxBpD,EAAW,EAAQ,MACnBpE,EAAW,EAAQ,MACnBC,EAAS,EAAQ,MAKrB,SAASwH,EAA6BvwB,GAIpC,GAHIA,EAAOqpB,aACTrpB,EAAOqpB,YAAY4E,mBAEjBjuB,EAAOupB,QAAUvpB,EAAOupB,OAAO+C,QACjC,MAAM,IAAIvD,EAAO,WAErB,CAQAV,EAAOrC,QAAU,SAAyBhmB,GAexC,OAdAuwB,EAA6BvwB,GAG7BA,EAAOmpB,QAAUnpB,EAAOmpB,SAAW,CAAC,EAGpCnpB,EAAO+U,KAAOub,EAAcn4B,KAAK6H,EAAQA,EAAO+U,KAAM/U,EAAOmpB,QAASnpB,EAAOwwB,kBAG7ExwB,EAAOmpB,QAAUb,EAAMmI,MAAMzwB,EAAOmpB,QAAQuH,QAAU,CAAC,EAAG1wB,EAAOmpB,QAAQnpB,EAAO6qB,SAAW,CAAC,EAAG7qB,EAAOmpB,SACtGb,EAAMhyB,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAAW,SAA2Bu0B,UAC7F7qB,EAAOmpB,QAAQ0B,EACxB,KACc7qB,EAAO2wB,SAAW7H,EAAS6H,SAC1B3wB,GAAQwW,MAAK,SAA6BgU,GAKvD,OAJA+F,EAA6BvwB,GAG7BwqB,EAASzV,KAAOub,EAAcn4B,KAAK6H,EAAQwqB,EAASzV,KAAMyV,EAASrB,QAASnpB,EAAO4wB,mBAC5EpG,CACT,IAAG,SAA4BwD,GAS7B,OARKd,EAASc,KACZuC,EAA6BvwB,GAGzBguB,GAAUA,EAAOxD,WACnBwD,EAAOxD,SAASzV,KAAOub,EAAcn4B,KAAK6H,EAAQguB,EAAOxD,SAASzV,KAAMiZ,EAAOxD,SAASrB,QAASnpB,EAAO4wB,qBAGrGrkB,QAAQC,OAAOwhB,EACxB,GACF,C,gCC9CA3F,EAAOrC,QAAU,SAAsB/V,EAAOjQ,EAAQqwB,EAAM5G,EAASe,GA2BnE,OA1BAva,EAAMjQ,OAASA,EACXqwB,IACFpgB,EAAMogB,KAAOA,GAEfpgB,EAAMwZ,QAAUA,EAChBxZ,EAAMua,SAAWA,EACjBva,EAAMqd,cAAe,EACrBrd,EAAM4gB,OAAS,WACb,MAAO,CAELtD,QAAS9iB,KAAK8iB,QACdh0B,KAAMkR,KAAKlR,KAEXu3B,YAAarmB,KAAKqmB,YAClBC,OAAQtmB,KAAKsmB,OAEbC,SAAUvmB,KAAKumB,SACfC,WAAYxmB,KAAKwmB,WACjBC,aAAczmB,KAAKymB,aACnB7L,MAAO5a,KAAK4a,MAEZrlB,OAAQyK,KAAKzK,OACbqwB,KAAM5lB,KAAK4lB,KACX3F,OAAQjgB,KAAK+f,UAAY/f,KAAK+f,SAASE,OAASjgB,KAAK+f,SAASE,OAAS,KAE3E,EACOza,CACT,C,oCCtCA,IAAIqY,EAAQ,EAAQ,MAUpBD,EAAOrC,QAAU,SAAqBmL,EAASC,GAE7CA,EAAUA,GAAW,CAAC,EACtB,IAAIpxB,EAAS,CAAC,EACd,SAASqxB,EAAep7B,EAAQI,GAC9B,OAAIiyB,EAAMgJ,cAAcr7B,IAAWqyB,EAAMgJ,cAAcj7B,GAC9CiyB,EAAMmI,MAAMx6B,EAAQI,GAClBiyB,EAAMgJ,cAAcj7B,GACtBiyB,EAAMmI,MAAM,CAAC,EAAGp6B,GACdiyB,EAAM3wB,QAAQtB,GAChBA,EAAOiD,QAETjD,CACT,CAGA,SAASk7B,EAAoB10B,GAC3B,OAAKyrB,EAAMyD,YAAYqF,EAAQv0B,IAEnByrB,EAAMyD,YAAYoF,EAAQt0B,SAA/B,EACEw0B,OAAexrB,EAAWsrB,EAAQt0B,IAFlCw0B,EAAeF,EAAQt0B,GAAOu0B,EAAQv0B,GAIjD,CAGA,SAAS20B,EAAiB30B,GACxB,IAAKyrB,EAAMyD,YAAYqF,EAAQv0B,IAC7B,OAAOw0B,OAAexrB,EAAWurB,EAAQv0B,GAE7C,CAGA,SAAS40B,EAAiB50B,GACxB,OAAKyrB,EAAMyD,YAAYqF,EAAQv0B,IAEnByrB,EAAMyD,YAAYoF,EAAQt0B,SAA/B,EACEw0B,OAAexrB,EAAWsrB,EAAQt0B,IAFlCw0B,OAAexrB,EAAWurB,EAAQv0B,GAI7C,CAGA,SAAS60B,EAAgB70B,GACvB,OAAIA,KAAQu0B,EACHC,EAAeF,EAAQt0B,GAAOu0B,EAAQv0B,IACpCA,KAAQs0B,EACVE,OAAexrB,EAAWsrB,EAAQt0B,SADpC,CAGT,CACA,IAAI80B,EAAW,CACb,IAAOH,EACP,OAAUA,EACV,KAAQA,EACR,QAAWC,EACX,iBAAoBA,EACpB,kBAAqBA,EACrB,iBAAoBA,EACpB,QAAWA,EACX,eAAkBA,EAClB,gBAAmBA,EACnB,QAAWA,EACX,aAAgBA,EAChB,eAAkBA,EAClB,eAAkBA,EAClB,iBAAoBA,EACpB,mBAAsBA,EACtB,WAAcA,EACd,iBAAoBA,EACpB,cAAiBA,EACjB,UAAaA,EACb,UAAaA,EACb,WAAcA,EACd,YAAeA,EACf,WAAcA,EACd,iBAAoBA,EACpB,eAAkBC,GAOpB,OALApJ,EAAMhyB,QAAQf,OAAOD,KAAK67B,GAAS3zB,OAAOjI,OAAOD,KAAK87B,KAAW,SAA4Bv0B,GAC3F,IAAI4zB,EAAQkB,EAAS90B,IAAS00B,EAC1BK,EAAcnB,EAAM5zB,GACxByrB,EAAMyD,YAAY6F,IAAgBnB,IAAUiB,IAAoB1xB,EAAOnD,GAAQ+0B,EACjF,IACO5xB,CACT,C,oCC5FA,IAAI6oB,EAAc,EAAQ,MAS1BR,EAAOrC,QAAU,SAAgBjW,EAASvD,EAAQge,GAChD,IAAIqH,EAAiBrH,EAASxqB,OAAO6xB,eAChCrH,EAASE,QAAWmH,IAAkBA,EAAerH,EAASE,QAGjEle,EAAOqc,EAAY,mCAAqC2B,EAASE,OAAQF,EAASxqB,OAAQ,KAAMwqB,EAASf,QAASe,IAFlHza,EAAQya,EAIZ,C,oCChBA,IAAIlC,EAAQ,EAAQ,MAChBQ,EAAW,EAAQ,MAUvBT,EAAOrC,QAAU,SAAuBjR,EAAMoU,EAAS2I,GACrD,IAAIjF,EAAUpiB,MAAQqe,EAKtB,OAHAR,EAAMhyB,QAAQw7B,GAAK,SAAmBtsB,GACpCuP,EAAOvP,EAAGrN,KAAK00B,EAAS9X,EAAMoU,EAChC,IACOpU,CACT,C,oCClBA,IAAIuT,EAAQ,EAAQ,MAChByJ,EAAsB,EAAQ,MAC9B3B,EAAe,EAAQ,MACvB4B,EAAuB,CACzB,eAAgB,qCAElB,SAASC,EAAsB9I,EAAS5xB,IACjC+wB,EAAMyD,YAAY5C,IAAYb,EAAMyD,YAAY5C,EAAQ,mBAC3DA,EAAQ,gBAAkB5xB,EAE9B,CAyBA,IAvBMo5B,EAuBF7H,EAAW,CACbwC,aAAc,CACZqD,mBAAmB,EACnBE,mBAAmB,EACnBtD,qBAAqB,GAEvBoF,UA5B8B,oBAAnBjH,gBAGmB,oBAAZwI,SAAuE,qBAA5C38B,OAAO0B,UAAUoC,SAASlB,KAAK+5B,YAD1EvB,EAAU,EAAQ,OAKbA,GAsBPH,iBAAkB,CAAC,SAA0Bzb,EAAMoU,GAGjD,OAFA4I,EAAoB5I,EAAS,UAC7B4I,EAAoB5I,EAAS,gBACzBb,EAAMkB,WAAWzU,IAASuT,EAAM6J,cAAcpd,IAASuT,EAAM8J,SAASrd,IAASuT,EAAM+J,SAAStd,IAASuT,EAAMgK,OAAOvd,IAASuT,EAAMiK,OAAOxd,GACrIA,EAELuT,EAAMkK,kBAAkBzd,GACnBA,EAAK0d,OAEVnK,EAAMoK,kBAAkB3d,IAC1Bkd,EAAsB9I,EAAS,mDACxBpU,EAAK1b,YAEVivB,EAAMqK,SAAS5d,IAASoU,GAAuC,qBAA5BA,EAAQ,iBAC7C8I,EAAsB9I,EAAS,oBAlCrC,SAAyByJ,EAAU3d,EAAQ4d,GACzC,GAAIvK,EAAMwK,SAASF,GACjB,IAEE,OADC3d,GAAU8d,KAAKhmB,OAAO6lB,GAChBtK,EAAMvmB,KAAK6wB,EACpB,CAAE,MAAOt4B,GACP,GAAe,gBAAXA,EAAEf,KACJ,MAAMe,CAEV,CAEF,OAAQu4B,GAAWE,KAAKC,WAAWJ,EACrC,CAuBaK,CAAgBle,IAElBA,CACT,GACA6b,kBAAmB,CAAC,SAA2B7b,GAC7C,IAAIuW,EAAe7gB,KAAK6gB,cAAgBxC,EAASwC,aAC7CqD,EAAoBrD,GAAgBA,EAAaqD,kBACjDE,EAAoBvD,GAAgBA,EAAauD,kBACjDqE,GAAqBvE,GAA2C,SAAtBlkB,KAAK2e,aACnD,GAAI8J,GAAqBrE,GAAqBvG,EAAMwK,SAAS/d,IAASA,EAAK3e,OACzE,IACE,OAAO28B,KAAKhmB,MAAMgI,EACpB,CAAE,MAAOza,GACP,GAAI44B,EAAmB,CACrB,GAAe,gBAAX54B,EAAEf,KACJ,MAAM62B,EAAa91B,EAAGmQ,KAAM,gBAE9B,MAAMnQ,CACR,CACF,CAEF,OAAOya,CACT,GAKAgW,QAAS,EACTY,eAAgB,aAChBE,eAAgB,eAChBsH,kBAAmB,EACnBC,eAAgB,EAChBvB,eAAgB,SAAwBnH,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EACAvB,QAAS,CACPuH,OAAQ,CACN,OAAU,uCAIhBpI,EAAMhyB,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6Bu0B,GACpE/B,EAASK,QAAQ0B,GAAU,CAAC,CAC9B,IACAvC,EAAMhyB,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+Bu0B,GACrE/B,EAASK,QAAQ0B,GAAUvC,EAAMmI,MAAMuB,EACzC,IACA3J,EAAOrC,QAAU8C,C,mBC1GjBT,EAAOrC,QAAU,CACf,QAAW,S,gCCCbqC,EAAOrC,QAAU,SAAcxgB,EAAI6tB,GACjC,OAAO,WAEL,IADA,IAAIznB,EAAO,IAAIlU,MAAMvB,UAAUC,QACtBF,EAAI,EAAGA,EAAI0V,EAAKxV,OAAQF,IAC/B0V,EAAK1V,GAAKC,UAAUD,GAEtB,OAAOsP,EAAGzP,MAAMs9B,EAASznB,EAC3B,CACF,C,oCCRA,IAAI0c,EAAQ,EAAQ,MACpB,SAASgL,EAAO30B,GACd,OAAOorB,mBAAmBprB,GAAK8C,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,QAAS,IAC9J,CASA4mB,EAAOrC,QAAU,SAAkBoE,EAAK9d,EAAQwe,GAE9C,IAAKxe,EACH,OAAO8d,EAET,IAAImJ,EACJ,GAAIzI,EACFyI,EAAmBzI,EAAiBxe,QAC/B,GAAIgc,EAAMoK,kBAAkBpmB,GACjCinB,EAAmBjnB,EAAOjT,eACrB,CACL,IAAI4O,EAAQ,GACZqgB,EAAMhyB,QAAQgW,GAAQ,SAAmB3N,EAAKpI,GACxCoI,UAGA2pB,EAAM3wB,QAAQgH,GAChBpI,GAAY,KAEZoI,EAAM,CAACA,GAET2pB,EAAMhyB,QAAQqI,GAAK,SAAoBuL,GACjCoe,EAAMkL,OAAOtpB,GACfA,EAAIA,EAAEupB,cACGnL,EAAMqK,SAASzoB,KACxBA,EAAI6oB,KAAKC,UAAU9oB,IAErBjC,EAAMnS,KAAKw9B,EAAO/8B,GAAO,IAAM+8B,EAAOppB,GACxC,IACF,IACAqpB,EAAmBtrB,EAAMnD,KAAK,IAChC,CACA,GAAIyuB,EAAkB,CACpB,IAAIG,EAAgBtJ,EAAI3uB,QAAQ,MACT,IAAnBi4B,IACFtJ,EAAMA,EAAI9wB,MAAM,EAAGo6B,IAErBtJ,KAA8B,IAAtBA,EAAI3uB,QAAQ,KAAc,IAAM,KAAO83B,CACjD,CACA,OAAOnJ,CACT,C,gCC7CA/B,EAAOrC,QAAU,SAAqBmE,EAASwJ,GAC7C,OAAOA,EAAcxJ,EAAQ1oB,QAAQ,OAAQ,IAAM,IAAMkyB,EAAYlyB,QAAQ,OAAQ,IAAM0oB,CAC7F,C,mCCTA,IAAI7B,EAAQ,EAAQ,MACpBD,EAAOrC,QAAUsC,EAAMkD,uBAGd,CACLoI,MAAO,SAAer6B,EAAMhC,EAAOs8B,EAAS9X,EAAM+X,EAAQC,GACxD,IAAIC,EAAS,GACbA,EAAOl+B,KAAKyD,EAAO,IAAMwwB,mBAAmBxyB,IACxC+wB,EAAM2L,SAASJ,IACjBG,EAAOl+B,KAAK,WAAa,IAAI6uB,KAAKkP,GAASK,eAEzC5L,EAAMwK,SAAS/W,IACjBiY,EAAOl+B,KAAK,QAAUimB,GAEpBuM,EAAMwK,SAASgB,IACjBE,EAAOl+B,KAAK,UAAYg+B,IAEX,IAAXC,GACFC,EAAOl+B,KAAK,UAEdqE,SAAS65B,OAASA,EAAOlvB,KAAK,KAChC,EACA8mB,KAAM,SAAcryB,GAClB,IAAI0T,EAAQ9S,SAAS65B,OAAO/mB,MAAM,IAAIvK,OAAO,aAAenJ,EAAO,cACnE,OAAO0T,EAAQqa,mBAAmBra,EAAM,IAAM,IAChD,EACA0E,OAAQ,SAAgBpY,GACtBkR,KAAKmpB,MAAMr6B,EAAM,GAAIorB,KAAKC,MAAQ,MACpC,GAKK,CACLgP,MAAO,WAAkB,EACzBhI,KAAM,WACJ,OAAO,IACT,EACAja,OAAQ,WAAmB,E,+BChC/B0W,EAAOrC,QAAU,SAAuBoE,GAItC,MAAO,8BAA8B5wB,KAAK4wB,EAC5C,C,oCCXA,IAAI9B,EAAQ,EAAQ,MAQpBD,EAAOrC,QAAU,SAAsBmO,GACrC,OAAO7L,EAAMqK,SAASwB,KAAqC,IAAzBA,EAAQ7G,YAC5C,C,mCCVA,IAAIhF,EAAQ,EAAQ,MACpBD,EAAOrC,QAAUsC,EAAMkD,uBAGvB,WACE,IAEI4I,EAFAC,EAAO,kBAAkB76B,KAAKqB,UAAUC,WACxCw5B,EAAiBn6B,SAASoB,cAAc,KAS5C,SAASg5B,EAAWnK,GAClB,IAAIlH,EAAOkH,EASX,OARIiK,IAEFC,EAAetxB,aAAa,OAAQkgB,GACpCA,EAAOoR,EAAepR,MAExBoR,EAAetxB,aAAa,OAAQkgB,GAG7B,CACLA,KAAMoR,EAAepR,KACrBE,SAAUkR,EAAelR,SAAWkR,EAAelR,SAAS3hB,QAAQ,KAAM,IAAM,GAChF4hB,KAAMiR,EAAejR,KACrBL,OAAQsR,EAAetR,OAASsR,EAAetR,OAAOvhB,QAAQ,MAAO,IAAM,GAC3EwhB,KAAMqR,EAAerR,KAAOqR,EAAerR,KAAKxhB,QAAQ,KAAM,IAAM,GACpE6hB,SAAUgR,EAAehR,SACzBC,KAAM+Q,EAAe/Q,KACrBC,SAAgD,MAAtC8Q,EAAe9Q,SAASjB,OAAO,GAAa+R,EAAe9Q,SAAW,IAAM8Q,EAAe9Q,SAEzG,CASA,OARA4Q,EAAYG,EAAWr6B,OAAO6oB,SAASG,MAQhC,SAAyBsR,GAC9B,IAAIC,EAASnM,EAAMwK,SAAS0B,GAAcD,EAAWC,GAAcA,EACnE,OAAOC,EAAOrR,WAAagR,EAAUhR,UAAYqR,EAAOpR,OAAS+Q,EAAU/Q,IAC7E,CACF,CA5CA,GA+CS,WACL,OAAO,CACT,C,oCCrDF,IAAIiF,EAAQ,EAAQ,MACpBD,EAAOrC,QAAU,SAA6BmD,EAASuL,GACrDpM,EAAMhyB,QAAQ6yB,GAAS,SAAuB5xB,EAAOgC,GAC/CA,IAASm7B,GAAkBn7B,EAAKgK,gBAAkBmxB,EAAenxB,gBACnE4lB,EAAQuL,GAAkBn9B,SACnB4xB,EAAQ5vB,GAEnB,GACF,C,oCCRA,IAAI+uB,EAAQ,EAAQ,MAIhBqM,EAAoB,CAAC,MAAO,gBAAiB,iBAAkB,eAAgB,OAAQ,UAAW,OAAQ,OAAQ,oBAAqB,sBAAuB,gBAAiB,WAAY,eAAgB,sBAAuB,UAAW,cAAe,cAehQtM,EAAOrC,QAAU,SAAsBmD,GACrC,IACI5yB,EACAoI,EACAzI,EAHAu+B,EAAS,CAAC,EAId,OAAKtL,GAGLb,EAAMhyB,QAAQ6yB,EAAQ7nB,MAAM,OAAO,SAAgBszB,GAIjD,GAHA1+B,EAAI0+B,EAAKn5B,QAAQ,KACjBlF,EAAM+xB,EAAMvmB,KAAK6yB,EAAKhV,OAAO,EAAG1pB,IAAI6jB,cACpCpb,EAAM2pB,EAAMvmB,KAAK6yB,EAAKhV,OAAO1pB,EAAI,IAC7BK,EAAK,CACP,GAAIk+B,EAAOl+B,IAAQo+B,EAAkBl5B,QAAQlF,IAAQ,EACnD,OAGAk+B,EAAOl+B,GADG,eAARA,GACak+B,EAAOl+B,GAAOk+B,EAAOl+B,GAAO,IAAIiH,OAAO,CAACmB,IAEzC81B,EAAOl+B,GAAOk+B,EAAOl+B,GAAO,KAAOoI,EAAMA,CAE3D,CACF,IACO81B,GAjBEA,CAkBX,C,gCCvBApM,EAAOrC,QAAU,SAAgBxT,GAC/B,OAAO,SAAc/a,GACnB,OAAO+a,EAASzc,MAAM,KAAM0B,EAC9B,CACF,C,oCCxBA,IAAI01B,EAAU,gBACVmB,EAAa,CAAC,EAGlB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUh4B,SAAQ,SAAUwd,EAAM5d,GACtFo4B,EAAWxa,GAAQ,SAAmB+gB,GACpC,cAAcA,IAAU/gB,GAAQ,KAAO5d,EAAI,EAAI,KAAO,KAAO4d,CAC/D,CACF,IACA,IAAIghB,EAAqB,CAAC,EAS1BxG,EAAWhD,aAAe,SAAsB+C,EAAW0G,EAASxH,GAClE,SAASyH,EAAcC,EAAKC,GAC1B,MAAO,WAAa/H,EAAU,0BAA6B8H,EAAM,IAAOC,GAAQ3H,EAAU,KAAOA,EAAU,GAC7G,CAGA,OAAO,SAAUh2B,EAAO09B,EAAKE,GAC3B,IAAkB,IAAd9G,EACF,MAAM,IAAII,MAAMuG,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,MAOzF,OALIA,IAAYD,EAAmBG,KACjCH,EAAmBG,IAAO,EAE1BjlB,QAAQolB,KAAKJ,EAAcC,EAAK,+BAAiCF,EAAU,8CAEtE1G,GAAYA,EAAU92B,EAAO09B,EAAKE,EAC3C,CACF,EA+BA9M,EAAOrC,QAAU,CACf0I,cAvBF,SAAuBxb,EAASmiB,EAAQC,GACtC,GAAuB,iBAAZpiB,EACT,MAAM,IAAIza,UAAU,6BAItB,IAFA,IAAInD,EAAOC,OAAOD,KAAK4d,GACnBhd,EAAIZ,EAAKc,OACNF,KAAM,GAAG,CACd,IAAI++B,EAAM3/B,EAAKY,GACXm4B,EAAYgH,EAAOJ,GACvB,GAAI5G,EAAJ,CACE,IAAI92B,EAAQ2b,EAAQ+hB,GAChBrvB,OAAmBC,IAAVtO,GAAuB82B,EAAU92B,EAAO09B,EAAK/hB,GAC1D,IAAe,IAAXtN,EACF,MAAM,IAAInN,UAAU,UAAYw8B,EAAM,YAAcrvB,EAGxD,MACA,IAAqB,IAAjB0vB,EACF,MAAM7G,MAAM,kBAAoBwG,EAEpC,CACF,EAGE3G,WAAYA,E,oCCpEd,IAAInwB,EAAO,EAAQ,MAIf9E,EAAW9D,OAAO0B,UAAUoC,SAQhC,SAAS1B,EAAQgH,GACf,OAAOjH,MAAMC,QAAQgH,EACvB,CAQA,SAASotB,EAAYptB,GACnB,YAAsB,IAARA,CAChB,CAkBA,SAASwzB,EAAcxzB,GACrB,MAA8B,yBAAvBtF,EAASlB,KAAKwG,EACvB,CAsDA,SAASg0B,EAASh0B,GAChB,OAAe,OAARA,GAA+B,iBAARA,CAChC,CAQA,SAAS2yB,EAAc3yB,GACrB,GAA2B,oBAAvBtF,EAASlB,KAAKwG,GAChB,OAAO,EAET,IAAI1H,EAAY1B,OAAOggC,eAAe52B,GACtC,OAAqB,OAAd1H,GAAsBA,IAAc1B,OAAO0B,SACpD,CAsCA,SAASu+B,EAAW72B,GAClB,MAA8B,sBAAvBtF,EAASlB,KAAKwG,EACvB,CAkEA,SAASrI,EAAQO,EAAK2O,GAEpB,GAAI3O,QASJ,GAJmB,iBAARA,IAETA,EAAM,CAACA,IAELc,EAAQd,GAEV,IAAK,IAAIX,EAAI,EAAG4wB,EAAIjwB,EAAIT,OAAQF,EAAI4wB,EAAG5wB,IACrCsP,EAAGrN,KAAK,KAAMtB,EAAIX,GAAIA,EAAGW,QAI3B,IAAK,IAAIN,KAAOM,EACVtB,OAAO0B,UAAU8qB,eAAe5pB,KAAKtB,EAAKN,IAC5CiP,EAAGrN,KAAK,KAAMtB,EAAIN,GAAMA,EAAKM,EAIrC,CAsEAwxB,EAAOrC,QAAU,CACfruB,QAASA,EACTw6B,cAAeA,EACfC,SA7RF,SAAkBzzB,GAChB,OAAe,OAARA,IAAiBotB,EAAYptB,IAA4B,OAApBA,EAAI3H,cAAyB+0B,EAAYptB,EAAI3H,cAAoD,mBAA7B2H,EAAI3H,YAAYo7B,UAA2BzzB,EAAI3H,YAAYo7B,SAASzzB,EACtL,EA4RE6qB,WA1QF,SAAoB7qB,GAClB,MAA8B,sBAAvBtF,EAASlB,KAAKwG,EACvB,EAyQE6zB,kBAjQF,SAA2B7zB,GAOzB,MAL2B,oBAAhB82B,aAA+BA,YAAYC,OAC3CD,YAAYC,OAAO/2B,GAEnBA,GAAOA,EAAI8zB,QAAUN,EAAcxzB,EAAI8zB,OAGpD,EA0PEK,SAlPF,SAAkBn0B,GAChB,MAAsB,iBAARA,CAChB,EAiPEs1B,SAzOF,SAAkBt1B,GAChB,MAAsB,iBAARA,CAChB,EAwOEg0B,SAAUA,EACVrB,cAAeA,EACfvF,YAAaA,EACbyH,OA3MF,SAAgB70B,GACd,MAA8B,kBAAvBtF,EAASlB,KAAKwG,EACvB,EA0ME2zB,OAlMF,SAAgB3zB,GACd,MAA8B,kBAAvBtF,EAASlB,KAAKwG,EACvB,EAiME4zB,OAzLF,SAAgB5zB,GACd,MAA8B,kBAAvBtF,EAASlB,KAAKwG,EACvB,EAwLE62B,WAAYA,EACZnD,SAvKF,SAAkB1zB,GAChB,OAAOg0B,EAASh0B,IAAQ62B,EAAW72B,EAAIg3B,KACzC,EAsKEjD,kBA9JF,SAA2B/zB,GACzB,MAA8B,6BAAvBtF,EAASlB,KAAKwG,EACvB,EA6JE6sB,qBAlIF,WACE,OAAyB,oBAAd3wB,WAAoD,gBAAtBA,UAAU+6B,SAAmD,iBAAtB/6B,UAAU+6B,SAAoD,OAAtB/6B,UAAU+6B,WAGzG,oBAAX17B,QAA8C,oBAAbC,SACjD,EA8HE7D,QAASA,EACTm6B,MAtEF,SAASA,IAEP,IAAI7qB,EAAS,CAAC,EACd,SAASiwB,EAAYl3B,EAAKpI,GACpB+6B,EAAc1rB,EAAOrP,KAAS+6B,EAAc3yB,GAC9CiH,EAAOrP,GAAOk6B,EAAM7qB,EAAOrP,GAAMoI,GACxB2yB,EAAc3yB,GACvBiH,EAAOrP,GAAOk6B,EAAM,CAAC,EAAG9xB,GACfhH,EAAQgH,GACjBiH,EAAOrP,GAAOoI,EAAIrF,QAElBsM,EAAOrP,GAAOoI,CAElB,CACA,IAAK,IAAIzI,EAAI,EAAG4wB,EAAI3wB,UAAUC,OAAQF,EAAI4wB,EAAG5wB,IAC3CI,EAAQH,UAAUD,GAAI2/B,GAExB,OAAOjwB,CACT,EAqDEknB,OA3CF,SAAgB/mB,EAAGC,EAAGqtB,GAQpB,OAPA/8B,EAAQ0P,GAAG,SAAqBrH,EAAKpI,GAEjCwP,EAAExP,GADA88B,GAA0B,mBAAR10B,EACXR,EAAKQ,EAAK00B,GAEV10B,CAEb,IACOoH,CACT,EAmCEhE,KAzJF,SAAcP,GACZ,OAAOA,EAAIO,KAAOP,EAAIO,OAASP,EAAIC,QAAQ,aAAc,GAC3D,EAwJEq0B,SA5BF,SAAkBpnB,GAIhB,OAH8B,QAA1BA,EAAQjI,WAAW,KACrBiI,EAAUA,EAAQpV,MAAM,IAEnBoV,CACT,E,oCC3TA,SAAS2P,EAAE/jB,GACT,IAAIy7B,EACF5f,EACA/c,EAAI,GACN,GAAI,iBAAmBkB,GAAK,iBAAmBA,EAAGlB,GAAKkB,OAAO,GAAI,iBAAmBA,EAAG,GAAI5C,MAAMC,QAAQ2C,GAAI,IAAKy7B,EAAI,EAAGA,EAAIz7B,EAAElE,OAAQ2/B,IAAKz7B,EAAEy7B,KAAO5f,EAAIkI,EAAE/jB,EAAEy7B,OAAS38B,IAAMA,GAAK,KAAMA,GAAK+c,QAAQ,IAAK4f,KAAKz7B,EAAGA,EAAEy7B,KAAO38B,IAAMA,GAAK,KAAMA,GAAK28B,GACjP,OAAO38B,CACT,CAKA,IAJO,WACL,IAAK,IAAIkB,EAAGy7B,EAAG5f,EAAI,EAAG/c,EAAI,GAAI+c,EAAIhgB,UAAUC,SAAUkE,EAAInE,UAAUggB,QAAU4f,EAAI1X,EAAE/jB,MAAQlB,IAAMA,GAAK,KAAMA,GAAK28B,GAClH,OAAO38B,CACT,C,kCCPA4sB,EAAQ,OAA2B,EAoBnCA,EAAQ,EAjByB,SAAUgQ,GACzC,IAAIC,EAAS9/B,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,SACjF,MAAM+/B,EAAgBF,EAAMG,SAAS,SAC/BC,EAAeJ,EAAMG,SAAS,QAC9BE,EAAeL,EAAMG,SAAS,QACpC,MAAc,MAAVH,EAAsBA,IACtBE,GAAiBE,GAAgBC,KACnCJ,EAAS,SAEI,WAAXA,EACKD,EAAMG,SAAS,KAAOH,EAAQ,GAAGx4B,OAAOw4B,EAAO,KAEzC,UAAXC,GACKD,EAAMG,SAAS,KAAOH,EAAM18B,MAAM,GAAI,GAExC08B,EACT,C,gCCpBA3N,EAAOrC,QAAUzwB,OAAOqtB,M,mCCAxBoD,EAAQG,YAAa,EACrBH,EAAQsQ,2BAAwB,EACZ,EAAQ,MACE,EAAQ,MAetCtQ,EAAQsQ,sBAZsB,KAMyC,C,oCCZvE,EAAQ,MACRtQ,EAAQG,YAAa,EACrBH,EAAQuQ,YACR,SAAqBC,GACnB,OAAOA,aAA2D,EAASA,EAAiBC,SAAQC,IAAWA,aAAuC,EAASA,EAAOC,UAAY,IACpL,C,oCCLA3Q,EAAQG,YAAa,EACrBH,EAAQ4Q,uBAKR,SAAgCJ,GAC9B,IAAKA,EAAiBpgC,OACpB,OAEF,MAAMygC,EAAkB18B,SAASoE,cAAc,0BACzCu4B,EAAkB38B,SAASoE,cAAc,kDAC3Cs4B,GACFA,EAAgBllB,SAEdmlB,GACFA,EAAgBnlB,SAElB,MAAMolB,GAAW,EAAIC,EAAaT,aAAaC,GACzCS,EAAU98B,SAASoB,cAAc,UACvC07B,EAAQC,QAAQC,UAAY,GAC5BF,EAAQh0B,WAAY,EAAIm0B,EAAaC,kBAAkB,CACrDV,QAASI,IAEX58B,SAASkB,KAAK4V,YAAYgmB,EAC5B,EAvBA,IAAIG,EAAe,EAAQ,MACvBJ,EAAe,EAAQ,K,mBCK3B,IAAIM,EAAW,IACbC,EAAmB,iBACnBC,EAAc,sBACdC,EAAM,IAGJC,EAAU,oBACZC,EAAS,6BACTC,EAAY,kBAGVC,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAW,mBAGXC,EAAerf,SAUfsf,EAPc5iC,OAAO0B,UAOQoC,SAG7B++B,EAAar3B,KAAKs3B,KACpBC,EAAYv3B,KAAKmmB,IAWnB,SAASqR,EAAUr3B,EAAOs3B,EAAOloB,GAC/B,IAAI2J,GAAS,EACX7jB,EAAS8K,EAAM9K,OACboiC,EAAQ,IACVA,GAASA,EAAQpiC,EAAS,EAAIA,EAASoiC,IAEzCloB,EAAMA,EAAMla,EAASA,EAASka,GACpB,IACRA,GAAOla,GAETA,EAASoiC,EAAQloB,EAAM,EAAIA,EAAMkoB,IAAU,EAC3CA,KAAW,EAEX,IADA,IAAI5yB,EAASlO,MAAMtB,KACV6jB,EAAQ7jB,GACfwP,EAAOqU,GAAS/Y,EAAM+Y,EAAQue,GAEhC,OAAO5yB,CACT,CAyBA,SAAS6yB,EAAelhC,EAAO0iB,EAAO7kB,GACpC,IAAKu9B,EAASv9B,GACZ,OAAO,EAET,IAAI0e,SAAcmG,EAClB,SAAY,UAARnG,EA2GN,SAAqBvc,GACnB,OAAgB,MAATA,GAqDT,SAAkBA,GAChB,MAAuB,iBAATA,GAAqBA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAASggC,CAC9E,CAvD0BmB,CAASnhC,EAAMnB,UAoBzC,SAAoBmB,GAGlB,IAAIgN,EAAMouB,EAASp7B,GAAS4gC,EAAehgC,KAAKZ,GAAS,GACzD,OAAOgN,GAAOmzB,GAAWnzB,GAAOozB,CAClC,CAzBqDnC,CAAWj+B,EAChE,CA7GyBohC,CAAYvjC,IApBrC,SAAiBmC,EAAOnB,GAEtB,SADAA,EAAmB,MAAVA,EAAiBmhC,EAAmBnhC,KACT,iBAATmB,GAAqB0gC,EAASz+B,KAAKjC,KAAWA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQnB,CACnH,CAiBgDwiC,CAAQ3e,EAAO7kB,EAAOgB,QAAkB,UAAR0d,GAAoBmG,KAAS7kB,IA8E7G,SAAYmC,EAAOshC,GACjB,OAAOthC,IAAUshC,GAASthC,GAAUA,GAASshC,GAAUA,CACzD,CA/EWC,CAAG1jC,EAAO6kB,GAAQ1iB,EAG7B,CA0LA,SAASo7B,EAASp7B,GAChB,IAAIuc,SAAcvc,EAClB,QAASA,IAAkB,UAARuc,GAA4B,YAARA,EACzC,CA+JAuU,EAAOrC,QArUP,SAAe9kB,EAAOZ,EAAMy4B,GAExBz4B,GADEy4B,EAAQN,EAAev3B,EAAOZ,EAAMy4B,QAAkBlzB,IAATvF,GACxC,EAEAg4B,EAkRX,SAAmB/gC,GACjB,IAAIqO,EAvCN,SAAkBrO,GAChB,IAAKA,EACH,OAAiB,IAAVA,EAAcA,EAAQ,EAG/B,GADAA,EA+DF,SAAkBA,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAlGF,SAAkBA,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,CAC3B,CAoBqCyhC,CAAazhC,IAAU4gC,EAAehgC,KAAKZ,IAAUqgC,CAC1F,CAgGMqB,CAAS1hC,GACX,OAAOkgC,EAET,GAAI9E,EAASp7B,GAAQ,CACnB,IAAIshC,EAAgC,mBAAjBthC,EAAM2hC,QAAwB3hC,EAAM2hC,UAAY3hC,EACnEA,EAAQo7B,EAASkG,GAASA,EAAQ,GAAKA,CACzC,CACA,GAAoB,iBAATthC,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAMkK,QAAQo2B,EAAQ,IAC9B,IAAIsB,EAAWpB,EAAWv+B,KAAKjC,GAC/B,OAAO4hC,GAAYnB,EAAUx+B,KAAKjC,GAAS2gC,EAAa3gC,EAAM+B,MAAM,GAAI6/B,EAAW,EAAI,GAAKrB,EAAWt+B,KAAKjC,GAASkgC,GAAOlgC,CAC9H,CAhFU6hC,CAAS7hC,GACbA,IAAU+/B,GAAY//B,KAAW+/B,EAAU,CAE7C,OADW//B,EAAQ,GAAK,EAAI,GACdigC,CAChB,CACA,OAAOjgC,GAAUA,EAAQA,EAAQ,CACnC,CA6Be8hC,CAAS9hC,GACpB+hC,EAAY1zB,EAAS,EACvB,OAAOA,GAAWA,EAAS0zB,EAAY1zB,EAAS0zB,EAAY1zB,EAAS,CACvE,CAtRqB2zB,CAAUj5B,GAAO,GAEpC,IAAIlK,EAAS8K,EAAQA,EAAM9K,OAAS,EACpC,IAAKA,GAAUkK,EAAO,EACpB,MAAO,GAKT,IAHA,IAAI2Z,EAAQ,EACVuf,EAAW,EACX5zB,EAASlO,MAAM0gC,EAAWhiC,EAASkK,IAC9B2Z,EAAQ7jB,GACbwP,EAAO4zB,KAAcjB,EAAUr3B,EAAO+Y,EAAOA,GAAS3Z,GAExD,OAAOsF,CACT,C,mBCtJA,IAAI6zB,EAAoC,oBAAZC,QACxBC,EAAwB,mBAARC,IAChBC,EAAwB,mBAAR77B,IAChB87B,EAAwC,mBAAhBrE,eAAgCA,YAAYC,OAIxE,SAASqE,EAAMh0B,EAAGC,GAEhB,GAAID,IAAMC,EAAG,OAAO,EACpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAE/O,cAAgBgP,EAAEhP,YAAa,OAAO,EAC5C,IAAIZ,EAAQF,EAAGZ,EA4BX0kC,EA3BJ,GAAItiC,MAAMC,QAAQoO,GAAI,CAEpB,IADA3P,EAAS2P,EAAE3P,SACG4P,EAAE5P,OAAQ,OAAO,EAC/B,IAAKF,EAAIE,EAAgB,GAARF,KAAY,IAAK6jC,EAAMh0B,EAAE7P,GAAI8P,EAAE9P,IAAK,OAAO,EAC5D,OAAO,CACT,CAuBA,GAAIyjC,GAAU5zB,aAAa6zB,KAAO5zB,aAAa4zB,IAAK,CAClD,GAAI7zB,EAAEzF,OAAS0F,EAAE1F,KAAM,OAAO,EAE9B,IADA05B,EAAKj0B,EAAEwf,YACErvB,EAAI8jC,EAAG5hC,QAAQC,UAAW2N,EAAEi0B,IAAI/jC,EAAEqB,MAAM,IAAK,OAAO,EAE7D,IADAyiC,EAAKj0B,EAAEwf,YACErvB,EAAI8jC,EAAG5hC,QAAQC,UAAW0hC,EAAM7jC,EAAEqB,MAAM,GAAIyO,EAAEpJ,IAAI1G,EAAEqB,MAAM,KAAM,OAAO,EAChF,OAAO,CACT,CACA,GAAIsiC,GAAU9zB,aAAa/H,KAAOgI,aAAahI,IAAK,CAClD,GAAI+H,EAAEzF,OAAS0F,EAAE1F,KAAM,OAAO,EAE9B,IADA05B,EAAKj0B,EAAEwf,YACErvB,EAAI8jC,EAAG5hC,QAAQC,UAAW2N,EAAEi0B,IAAI/jC,EAAEqB,MAAM,IAAK,OAAO,EAC7D,OAAO,CACT,CAGA,GAAIuiC,GAAkBrE,YAAYC,OAAO3vB,IAAM0vB,YAAYC,OAAO1vB,GAAI,CAEpE,IADA5P,EAAS2P,EAAE3P,SACG4P,EAAE5P,OAAQ,OAAO,EAC/B,IAAKF,EAAIE,EAAgB,GAARF,KAAY,GAAI6P,EAAE7P,KAAO8P,EAAE9P,GAAI,OAAO,EACvD,OAAO,CACT,CACA,GAAI6P,EAAE/O,cAAgB0L,OAAQ,OAAOqD,EAAE1P,SAAW2P,EAAE3P,QAAU0P,EAAEm0B,QAAUl0B,EAAEk0B,MAK5E,GAAIn0B,EAAEmzB,UAAY3jC,OAAO0B,UAAUiiC,SAAgC,mBAAdnzB,EAAEmzB,SAA+C,mBAAdlzB,EAAEkzB,QAAwB,OAAOnzB,EAAEmzB,YAAclzB,EAAEkzB,UAC3I,GAAInzB,EAAE1M,WAAa9D,OAAO0B,UAAUoC,UAAkC,mBAAf0M,EAAE1M,UAAiD,mBAAf2M,EAAE3M,SAAyB,OAAO0M,EAAE1M,aAAe2M,EAAE3M,WAKhJ,IADAjD,GADAd,EAAOC,OAAOD,KAAKyQ,IACL3P,UACCb,OAAOD,KAAK0Q,GAAG5P,OAAQ,OAAO,EAC7C,IAAKF,EAAIE,EAAgB,GAARF,KAAY,IAAKX,OAAO0B,UAAU8qB,eAAe5pB,KAAK6N,EAAG1Q,EAAKY,IAAK,OAAO,EAK3F,GAAIujC,GAAkB1zB,aAAa2zB,QAAS,OAAO,EAGnD,IAAKxjC,EAAIE,EAAgB,GAARF,KACf,IAAiB,WAAZZ,EAAKY,IAA+B,QAAZZ,EAAKY,IAA4B,QAAZZ,EAAKY,KAAiB6P,EAAEo0B,YAarEJ,EAAMh0B,EAAEzQ,EAAKY,IAAK8P,EAAE1Q,EAAKY,KAAM,OAAO,EAK7C,OAAO,CACT,CACA,OAAO6P,GAAMA,GAAKC,GAAMA,CAC1B,CAGAqiB,EAAOrC,QAAU,SAAiBjgB,EAAGC,GACnC,IACE,OAAO+zB,EAAMh0B,EAAGC,EAClB,CAAE,MAAOiK,GACP,IAAKA,EAAMsd,SAAW,IAAItgB,MAAM,oBAO9B,OADA+C,QAAQolB,KAAK,mDACN,EAGT,MAAMnlB,CACR,CACF,C,sHC9HA,IAAI3V,EAAI,CACJya,KAAM,IAERghB,EAAIA,GAAK,iBAAmB77B,SAAW67B,EAAIA,EAAEx3B,cAAc,YAAcrE,OAAOkgC,UAAY7kC,OAAOqtB,QAAQmT,GAAK57B,SAASkB,MAAM4V,YAAY9W,SAASoB,cAAc,UAAW,CAC3K0H,UAAW,IACXnC,GAAI,aACF6T,WAAaohB,GAAKz7B,EAMtBwsB,EAAI,oEACJ/gB,EAAI,qBACJ3M,EAAI,OACJF,EAAI,CAACoB,EAAGy7B,KACN,IAAI1X,EAAI,GACNyI,EAAI,GACJ/gB,EAAI,GACN,IAAK,IAAI3M,KAAKkB,EAAG,CACf,IAAI2L,EAAI3L,EAAElB,GACV,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAKilB,EAAIjlB,EAAI,IAAM6M,EAAI,IAAM6gB,GAAK,KAAO1tB,EAAE,GAAKF,EAAE+M,EAAG7M,GAAKA,EAAI,IAAMF,EAAE+M,EAAG,KAAO7M,EAAE,GAAK,GAAK28B,GAAK,IAAM,iBAAmB9vB,EAAI6gB,GAAK5tB,EAAE+M,EAAG8vB,EAAIA,EAAEt0B,QAAQ,YAAYnH,GAAKlB,EAAEqI,QAAQ,mBAAmBs0B,GAAK,IAAIv8B,KAAKu8B,GAAKA,EAAEt0B,QAAQ,KAAMnH,GAAKA,EAAIA,EAAI,IAAMy7B,EAAIA,MAAM38B,GAAK,MAAQ6M,IAAM7M,EAAI,MAAMI,KAAKJ,GAAKA,EAAIA,EAAEqI,QAAQ,SAAU,OAAOsY,cAAehU,GAAK7M,EAAEkX,EAAIlX,EAAEkX,EAAEhX,EAAG6M,GAAK7M,EAAI,IAAM6M,EAAI,IACvZ,CACA,OAAOoY,GAAK0X,GAAKhwB,EAAIgwB,EAAI,IAAMhwB,EAAI,IAAMA,GAAK+gB,CAAC,EAEjD7gB,EAAI,CAAC,EACLzD,EAAIlI,IACF,GAAI,iBAAmBA,EAAG,CACxB,IAAIy7B,EAAI,GACR,IAAK,IAAI1X,KAAK/jB,EAAGy7B,GAAK1X,EAAI7b,EAAElI,EAAE+jB,IAC9B,OAAO0X,CACT,CACA,OAAOz7B,CAAC,EAEVpE,EAAI,CAACoE,EAAGy7B,EAAG1X,EAAGnoB,EAAGka,KACf,IAAIiqB,EAAI73B,EAAElI,GACR8F,EAAI6F,EAAEo0B,KAAOp0B,EAAEo0B,GAAK,CAAC//B,IACnB,IAAIy7B,EAAI,EACN1X,EAAI,GACN,KAAO0X,EAAIz7B,EAAElE,QAASioB,EAAI,IAAMA,EAAI/jB,EAAEmM,WAAWsvB,OAAS,EAC1D,MAAO,KAAO1X,CACf,EALmB,CAKjBgc,IACL,IAAKp0B,EAAE7F,GAAI,CACT,IAAI21B,EAAIsE,IAAM//B,EAAIA,EAAI,CAACA,IACrB,IAAIy7B,EACF1X,EACAnlB,EAAI,CAAC,CAAC,GACR,KAAO68B,EAAIjP,EAAEW,KAAKntB,EAAEmH,QAAQsE,EAAG,MAAOgwB,EAAE,GAAK78B,EAAEs2B,QAAUuG,EAAE,IAAM1X,EAAI0X,EAAE,GAAGt0B,QAAQrI,EAAG,KAAK2I,OAAQ7I,EAAEi2B,QAAQj2B,EAAE,GAAGmlB,GAAKnlB,EAAE,GAAGmlB,IAAM,CAAC,IAAMnlB,EAAE,GAAG68B,EAAE,IAAMA,EAAE,GAAGt0B,QAAQrI,EAAG,KAAK2I,OAC1K,OAAO7I,EAAE,EACV,EANqB,CAMnBoB,GACH2L,EAAE7F,GAAKlH,EAAEkX,EAAI,CACX,CAAC,cAAgBhQ,GAAI21B,GACnBA,EAAG1X,EAAI,GAAK,IAAMje,EACxB,CACA,IAAI+V,EAAIkI,GAAKpY,EAAEq0B,EAAIr0B,EAAEq0B,EAAI,KACzB,OAAOjc,IAAMpY,EAAEq0B,EAAIr0B,EAAE7F,IAAK,EAAE9F,EAAGy7B,EAAG1X,EAAGyI,KACnCA,EAAIiP,EAAEhhB,KAAOghB,EAAEhhB,KAAKtT,QAAQqlB,EAAGxsB,IAAM,IAAMy7B,EAAEhhB,KAAKtZ,QAAQnB,KAAOy7B,EAAEhhB,KAAOsJ,EAAI/jB,EAAIy7B,EAAEhhB,KAAOghB,EAAEhhB,KAAOza,EACrG,EAFyB,CAEvB2L,EAAE7F,GAAI21B,EAAG7/B,EAAGigB,GAAI/V,CAAC,EAEtBgQ,EAAI,CAAC9V,EAAGy7B,EAAG1X,IAAM/jB,EAAEsH,QAAO,CAACtH,EAAGwsB,EAAG/gB,KAC/B,IAAI3M,EAAI28B,EAAEhwB,GACV,GAAI3M,GAAKA,EAAEjB,KAAM,CACf,IAAImC,EAAIlB,EAAEilB,GACR0X,EAAIz7B,GAAKA,EAAEnD,OAASmD,EAAEnD,MAAMkpB,WAAa,MAAM7mB,KAAKc,IAAMA,EAC5DlB,EAAI28B,EAAI,IAAMA,EAAIz7B,GAAK,iBAAmBA,EAAIA,EAAEnD,MAAQ,GAAK+B,EAAEoB,EAAG,KAAM,IAAOA,EAAI,GAAKA,CAC1F,CACA,OAAOA,EAAIwsB,GAAK,MAAQ1tB,EAAI,GAAKA,EAAE,GAClC,IACL,SAASihC,EAAE//B,GACT,IAAI+jB,EAAI5T,MAAQ,CAAC,EACfqc,EAAIxsB,EAAEnC,KAAOmC,EAAE+jB,EAAEjO,GAAK9V,EACxB,OAAOpE,EAAE4wB,EAAEqI,QAAUrI,EAAEyT,IAAMnqB,EAAE0W,EAAG,GAAGxtB,MAAMnB,KAAKhC,UAAW,GAAIkoB,EAAEjO,GAAK0W,EAAEllB,QAAO,CAACtH,EAAGy7B,IAAMxgC,OAAOqtB,OAAOtoB,EAAGy7B,GAAKA,EAAE59B,KAAO49B,EAAE1X,EAAEjO,GAAK2lB,IAAI,CAAC,GAAKjP,EAAGiP,EAAE1X,EAAEpoB,QAASooB,EAAEic,EAAGjc,EAAEnlB,EAAGmlB,EAAEI,EACzK,CAIM4b,EAAEl8B,KAAK,CACTm8B,EAAG,IAJP,IAAIl6B,EACF+V,EACAmkB,EAIAtK,EAAIqK,EAAEl8B,KAAK,CACTsgB,EAAG,IAKP,SAAS+b,EAAElgC,EAAGy7B,GACZ,IAAI1X,EAAI5T,MAAQ,CAAC,EACjB,OAAO,WACL,IAAIqc,EAAI3wB,UACR,SAAS4P,EAAE3M,EAAGF,GACZ,IAAI+M,EAAI1Q,OAAOqtB,OAAO,CAAC,EAAGxpB,GACxBoJ,EAAIyD,EAAEoa,WAAata,EAAEsa,UACvBhC,EAAEjO,EAAI7a,OAAOqtB,OAAO,CAClB6X,MAAOtkB,GAAKA,KACXlQ,GAAIoY,EAAEnlB,EAAI,UAAUM,KAAKgJ,GAAIyD,EAAEoa,UAAYga,EAAEtkC,MAAMsoB,EAAGyI,IAAMtkB,EAAI,IAAMA,EAAI,IAAKuzB,IAAM9vB,EAAE4b,IAAM3oB,GAChG,IAAIhD,EAAIoE,EACR,OAAOA,EAAE,KAAOpE,EAAI+P,EAAEy0B,IAAMpgC,SAAU2L,EAAEy0B,IAAKJ,GAAKpkC,EAAE,IAAMokC,EAAEr0B,GAAI7F,EAAElK,EAAG+P,EACvE,CACA,OAAO8vB,EAAIA,EAAEhwB,GAAKA,CACpB,CACF,CCjGA,IAAI40B,EAAiBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAmBC,EAAmBC,EAAmBC,EAAmBC,EAAmBC,EAAmBC,EAErRC,EAAI,CAACrhC,EAAGy7B,IADFz7B,IAAiB,mBAALA,EACJshC,CAAEthC,GAAKA,EAAEy7B,GAAKz7B,EAC1BuhC,EAAI,MACJ,IAAIvhC,EAAI,EACR,MAAO,OAASA,GAAGjB,UACpB,EAHK,GAIN,EAAI,MACF,IAAIiB,EACJ,MAAO,KACL,QAAU,IAANA,UAAuBJ,OAAS,IAAK,CACvC,IAAI67B,EAAIvY,WAAW,oCACnBljB,GAAKy7B,GAAKA,EAAEtY,OACd,CACA,OAAOnjB,CAAC,CAEX,EATG,GAYFwhC,EAAI,IAAIlC,IAEVmC,EAAIzhC,IACF,GAAIwhC,EAAE7B,IAAI3/B,GAAI,OACd,IAAIy7B,EAAInpB,YAAW,KACjBkvB,EAAEE,OAAO1hC,GAAI,EAAE,CACbwZ,KAAM,EACNmoB,QAAS3hC,GACT,GAPF,KASFwhC,EAAE77B,IAAI3F,EAAGy7B,EAAE,EAMb7rB,EAAI,CAAC5P,EAAGy7B,KACN,OAAQA,EAAEjiB,MACR,KAAK,EACH,MAAO,IACFxZ,EACH4hC,OAAQ,CAACnG,EAAEoG,SAAU7hC,EAAE4hC,QAAQ5iC,MAAM,EAtBvC,KAwBF,KAAK,EACH,OAAOy8B,EAAEoG,MAAMr7B,IAZjBxG,KACF,IAAIy7B,EAAI+F,EAAEl/B,IAAItC,GACdy7B,GAAKqG,aAAarG,EAAE,EAUKsG,CAAEtG,EAAEoG,MAAMr7B,IAAK,IAC/BxG,EACH4hC,OAAQ5hC,EAAE4hC,OAAOj+B,KAAIogB,GAAKA,EAAEvd,KAAOi1B,EAAEoG,MAAMr7B,GAAK,IAC3Cud,KACA0X,EAAEoG,OACH9d,KAER,KAAK,EACH,IACE8d,MAAOjjC,GACL68B,EACJ,OAAOz7B,EAAE4hC,OAAOI,MAAKje,GAAKA,EAAEvd,KAAO5H,EAAE4H,KAAMoJ,EAAE5P,EAAG,CAC9CwZ,KAAM,EACNqoB,MAAOjjC,IACJgR,EAAE5P,EAAG,CACRwZ,KAAM,EACNqoB,MAAOjjC,IAEX,KAAK,EACH,IACE+iC,QAASz5B,GACPuzB,EACJ,OAAOvzB,EAAIu5B,EAAEv5B,GAAKlI,EAAE4hC,OAAO5lC,SAAQ+nB,IACjC0d,EAAE1d,EAAEvd,GAAG,IACL,IACCxG,EACH4hC,OAAQ5hC,EAAE4hC,OAAOj+B,KAAIogB,GAAKA,EAAEvd,KAAO0B,QAAW,IAANA,EAAe,IAClD6b,EACHke,SAAS,GACPle,KAER,KAAK,EACH,YAAqB,IAAd0X,EAAEkG,QAAqB,IACzB3hC,EACH4hC,OAAQ,IACN,IACC5hC,EACH4hC,OAAQ5hC,EAAE4hC,OAAOxmC,QAAO2oB,GAAKA,EAAEvd,KAAOi1B,EAAEkG,WAE5C,KAAK,EACH,MAAO,IACF3hC,EACHkiC,SAAUzG,EAAE0G,MAEhB,KAAK,EACH,IAAI12B,EAAIgwB,EAAE0G,MAAQniC,EAAEkiC,UAAY,GAChC,MAAO,IACFliC,EACHkiC,cAAU,EACVN,OAAQ5hC,EAAE4hC,OAAOj+B,KAAIogB,IAAK,IACrBA,EACHqe,cAAere,EAAEqe,cAAgB32B,OAGzC,EAEF42B,EAAI,GACJC,EAAI,CACFV,OAAQ,GACRM,cAAU,GAEZ,EAAIliC,IACFsiC,EAAI1yB,EAAE0yB,EAAGtiC,GAAIqiC,EAAErmC,SAAQy/B,IACrBA,EAAE6G,EAAE,GACJ,EAEJC,EAAI,CACFC,MAAO,IACP7sB,MAAO,IACP8sB,QAAS,IACTC,QAAS,IACTC,OAAQ,KA6CV,EAAI3iC,GAAK,CAACy7B,EAAG78B,KACX,IAAIsJ,EAlBA,SAAUlI,GACd,IAAIy7B,EAAI5/B,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,QACxE+C,EAAI/C,UAAUC,OAAS,EAAID,UAAU,QAAK0P,EAC9C,MAAO,CACLq3B,UAAWvY,KAAKC,MAChB2X,SAAS,EACTzoB,KAAMiiB,EACNoH,UAAW,CACTxuB,KAAM,SACN,YAAa,UAEf4e,QAASjzB,EACToiC,cAAe,KACZxjC,EACH4H,IAAU,MAAL5H,OAAY,EAASA,EAAE4H,KAAO+6B,IAEvC,CAEUuB,CAAErH,EAAGz7B,EAAGpB,GAChB,OAAO,EAAE,CACP4a,KAAM,EACNqoB,MAAO35B,IACLA,EAAE1B,EAAE,EAEV,EAAI,CAACxG,EAAGy7B,IAAM,EAAE,QAAF,CAAWz7B,EAAGy7B,GAC9B,EAAE9lB,MAAQ,EAAE,SACZ,EAAE8sB,QAAU,EAAE,WACd,EAAEC,QAAU,EAAE,WACd,EAAEC,OAAS,EAAE,UACb,EAAEI,QAAU/iC,IACV,EAAE,CACAwZ,KAAM,EACNmoB,QAAS3hC,GACT,EAEJ,EAAEqX,OAASrX,GAAK,EAAE,CAChBwZ,KAAM,EACNmoB,QAAS3hC,IAEX,EAAEqzB,QAAU,CAACrzB,EAAGy7B,EAAG78B,KACjB,IAAIsJ,EAAI,EAAEw6B,QAAQjH,EAAEiH,QAAS,IACxB9jC,KACM,MAALA,OAAY,EAASA,EAAE8jC,UAE7B,OAAO1iC,EAAEkc,MAAKzQ,IAAM,EAAEg3B,QAAQpB,EAAE5F,EAAEgH,QAASh3B,GAAI,CAC7CjF,GAAI0B,KACDtJ,KACM,MAALA,OAAY,EAASA,EAAE6jC,UACzBh3B,KAAI2Q,OAAM3Q,IACZ,EAAEkK,MAAM0rB,EAAE5F,EAAE9lB,MAAOlK,GAAI,CACrBjF,GAAI0B,KACDtJ,KACM,MAALA,OAAY,EAASA,EAAE+W,OAC3B,IACA3V,CAAC,EAGP,IAAIgjC,EAAI,CAAChjC,EAAGy7B,KACR,EAAE,CACAjiB,KAAM,EACNqoB,MAAO,CACLr7B,GAAIxG,EACJgU,OAAQynB,IAEV,EAEJwH,EAAK,KACH,EAAE,CACAzpB,KAAM,EACN2oB,KAAM9X,KAAKC,OACX,EAEJ4Y,EAAIljC,IACF,IACE4hC,OAAQnG,EACRyG,SAAUtjC,GArGV,WACF,IAAIoB,EAAInE,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACxE4/B,EAAG78B,IAAK,cAAE0jC,IACf,gBAAE,KAAOD,EAAE7mC,KAAKoD,GAAI,KAClB,IAAI6M,EAAI42B,EAAElhC,QAAQvC,GAClB6M,GAAK,GAAK42B,EAAEzO,OAAOnoB,EAAG,EAAE,IACtB,CAACgwB,IACL,IAAIvzB,EAAIuzB,EAAEmG,OAAOj+B,KAAI8H,IACnB,IAAIsY,EAAGpY,EACP,MAAO,IACF3L,KACAA,EAAEyL,EAAE+N,SACJ/N,EACH03B,SAAU13B,EAAE03B,WAAgC,OAAlBpf,EAAI/jB,EAAEyL,EAAE+N,YAAiB,EAASuK,EAAEof,YAAmB,MAALnjC,OAAY,EAASA,EAAEmjC,WAAaZ,EAAE92B,EAAE+N,MACpH/Q,MAAO,IACFzI,EAAEyI,SACkB,OAAlBkD,EAAI3L,EAAEyL,EAAE+N,YAAiB,EAAS7N,EAAElD,SACtCgD,EAAEhD,OAER,IAEH,MAAO,IACFgzB,EACHmG,OAAQ15B,EAEZ,CA6EMk7B,CAAEpjC,IACN,gBAAE,KACA,GAAIpB,EAAG,OACP,IAAImlB,EAAIsG,KAAKC,MACX3e,EAAI8vB,EAAE93B,KAAI/H,IACR,GAAIA,EAAEunC,WAAa,IAAO,OAC1B,IAAIr9B,GAAKlK,EAAEunC,UAAY,GAAKvnC,EAAEwmC,eAAiBre,EAAInoB,EAAEgnC,WACrD,KAAI98B,EAAI,GAIR,OAAOwM,YAAW,IAAM,EAAEywB,QAAQnnC,EAAE4K,KAAKV,GAHvClK,EAAEqmC,SAAW,EAAEc,QAAQnnC,EAAE4K,GAGgB,IAE/C,MAAO,KACLmF,EAAE3P,SAAQJ,GAAKA,GAAKkmC,aAAalmC,IAAG,CACrC,GACA,CAAC6/B,EAAG78B,IACP,IAAIsJ,GAAI,kBAAE,KACNtJ,GAAK,EAAE,CACL4a,KAAM,EACN2oB,KAAM9X,KAAKC,OACX,GACD,CAAC1rB,IACJ6M,GAAI,kBAAE,CAACsY,EAAGpY,KACR,IACI03B,aAAcznC,GAAI,EAClB0nC,OAAQx9B,EAAI,EACZy9B,gBAAiBztB,GACfnK,GAAK,CAAC,EACVq0B,EAAIvE,EAAErgC,QAAOooC,IAAMA,EAAEzkB,UAAYjJ,MAAQiO,EAAEhF,UAAYjJ,IAAM0tB,EAAExvB,SAC/DyvB,EAAIzD,EAAE0D,WAAUF,GAAKA,EAAEh9B,KAAOud,EAAEvd,KAChCP,EAAI+5B,EAAE5kC,QAAO,CAACooC,EAAGG,IAAMA,EAAIF,GAAKD,EAAEvB,UAASnmC,OAC7C,OAAOkkC,EAAE5kC,QAAOooC,GAAKA,EAAEvB,UAASjjC,SAAUpD,EAAI,CAACqK,EAAI,GAAK,CAAC,EAAGA,IAAKqB,QAAO,CAACk8B,EAAGG,IAAMH,GAAKG,EAAE3vB,QAAU,GAAKlO,GAAG,EAAE,GAC5G,CAAC21B,IACN,MAAO,CACLmG,OAAQnG,EACRlG,SAAU,CACRqO,aAAcZ,EACda,WAAYZ,EACZa,SAAU57B,EACV67B,gBAAiBt4B,GAEpB,EAODu4B,EAAK,EAAE3D,IAAoBA,GAAkB,OAAuB,CAAC,oIACvE4D,EAAK,EAAE3D,IAAqBA,GAAmB,OAAuB,CAAC,yGACvE4D,GAAK,EAAE3D,IAAqBA,GAAmB,OAAuB,CAAC,qIACvErV,GAAI,EAAG,MAAH,CAAUsV,IAAqBA,GAAmB,OAAuB,CAAC,2FAA4F,yEAA0E,yJAA0J,8IAA+I,gHAAiH,mGAAmGxgC,GAAKA,EAAEmkC,SAAW,WAAWH,EAAIC,GAAIjkC,GAAKA,EAAEokC,WAAa,QAAQF,IAEhzBG,GAAK,EAAG5D,IAAqBA,GAAmB,OAAuB,CAAC,mGAC1E6D,GAAI,EAAG,MAAH,CAAU5D,IAAqBA,GAAmB,OAAuB,CAAC,+HAAgI,4BAA6B,mBAAoB,6BAA6B1gC,GAAKA,EAAEokC,WAAa,YAAWpkC,GAAKA,EAAEmkC,SAAW,WAAWE,IAEtVE,GAAK,EAAE5D,IAAqBA,GAAmB,OAAuB,CAAC,qIACzE6D,GAAK,EAAE5D,IAAqBA,GAAmB,OAAuB,CAAC,2JACvEl3B,GAAI,EAAG,MAAH,CAAUm3B,IAAqBA,GAAmB,OAAuB,CAAC,2FAA4F,yEAA0E,uKAAwK,mLAAoL,qFAAqF7gC,GAAKA,EAAEmkC,SAAW,WAAWI,GAAIC,IAAIxkC,GAAKA,EAAEokC,WAAa,SAC5tBK,GAAK,EAAE,MAAF,CAAS3D,IAAsBA,GAAoB,OAAuB,CAAC,gCAClF4D,GAAK,EAAE,MAAF,CAAS3D,IAAsBA,GAAoB,OAAuB,CAAC,+IAChF4D,GAAK,EAAG3D,IAAsBA,GAAoB,OAAuB,CAAC,6GAC1E4D,GAAK,EAAE,MAAF,CAAS3D,IAAsBA,GAAoB,OAAuB,CAAC,wGAAyG,0EAA2E0D,IACpQE,GAAI3gC,IACF,IACE29B,MAAO7hC,GACLkE,GAEF2G,KAAM4wB,EACNjiB,KAAM5a,EACNkmC,UAAW58B,GACTlI,EACJ,YAAa,IAANy7B,EAA2B,iBAALA,EAAgB,gBAAgBmJ,GAAI,KAAMnJ,GAAKA,EAAU,UAAN78B,EAAgB,KAAO,gBAAgB8lC,GAAI,KAAM,gBAAgBJ,GAAG,IAC/Ip8B,IACK,YAANtJ,GAAmB,gBAAgB6lC,GAAI,KAAY,UAAN7lC,EAAgB,gBAAgBssB,GAAG,IAC/EhjB,IACA,gBAAgBwB,GAAG,IACnBxB,KACD,EAEJ68B,GAAK/kC,GAAK,kCAAkCkD,QAAY,IAALlD,EAAU,6FAC/DglC,GAAKhlC,GAAK,gGAAgGkD,QAAY,IAALlD,EAAU,oCAG3HilC,GAAK,EAAE,MAAF,CAAS/D,IAAsBA,GAAoB,OAAuB,CAAC,mTAChFgE,GAAK,EAAE,MAAF,CAAS/D,IAAsBA,GAAoB,OAAuB,CAAC,4IAQhFgE,GAAI,QAAOhhC,IACT,IACE09B,MAAO7hC,EACP+e,SAAU0c,EACVhzB,MAAO7J,EACPyL,SAAUnC,GACR/D,EACAsH,EAAIzL,EAAEgU,OAdP,EAAChU,EAAGy7B,KACP,IAAIvzB,EAAIlI,EAAE0P,SAAS,OAAS,GAAK,GAC9BjE,EAAGsY,GAAK,IAAM,CANd,kCACA,mCAKyB,CAACghB,GAAG78B,GAAI88B,GAAG98B,IACvC,MAAO,CACLk9B,UAAW3J,EAAI,GAAGv4B,OAAO,EAAEuI,GAAI,gDAAkD,GAAGvI,OAAO,EAAE6gB,GAAI,8CAClG,EASkBshB,CAAGrlC,EAAE+e,UAAY0c,GAAK,aAAcz7B,EAAEiiC,SAAW,CAChEje,QAAS,GAEXD,EAAI,gBAAgB8gB,GAAG,CACrBhD,MAAO7hC,IAET2L,EAAI,gBAAgBu5B,GAAI,IACnBllC,EAAE6iC,WACJxB,EAAErhC,EAAEizB,QAASjzB,IAClB,OAAO,gBAAgBilC,GAAI,CACzBlf,UAAW/lB,EAAE+lB,UACbtd,MAAO,IACFgD,KACA7M,KACAoB,EAAEyI,QAEM,mBAALP,EAAkBA,EAAE,CAC5B2C,KAAMkZ,EACNkP,QAAStnB,IACN,gBAAgB,WAAY,KAAMoY,EAAGpY,GAAG,KDnQjD,SAAW3L,EAAGy7B,EAAG1X,EAAGyI,GAClB5tB,EAAEkX,EAAI2lB,EAAG31B,EAAI9F,EAAG6b,EAAIkI,EAAGic,EAAIxT,CAC7B,CCqQA,CAAG,iBACH,IAAI8Y,GAAK5nB,IACL,IACElX,GAAIxG,EACJ+lB,UAAW0V,EACXhzB,MAAO7J,EACP2mC,eAAgBr9B,EAChBmC,SAAUoB,GACRiS,EACAqG,EAAI,eAAcpY,IACpB,GAAIA,EAAG,CACL,IAAI/P,EAAI,KACN,IAAIkK,EAAI6F,EAAEgT,wBAAwB3K,OAClC9L,EAAElI,EAAG8F,EAAE,EAETlK,IAAK,IAAIkE,iBAAiBlE,GAAG+c,QAAQhN,EAAG,CACtCoO,SAAS,EACTF,WAAW,EACXC,eAAe,GAEnB,IACC,CAAC9Z,EAAGkI,IACP,OAAO,gBAAgB,MAAO,CAC5Bqf,IAAKxD,EACLgC,UAAW0V,EACXhzB,MAAO7J,GACN6M,EAAE,EAyBP+5B,GAAK,EAAGpE,IAAsBA,GAAoB,OAAuB,CAAC,oEAE1EqE,GAAKC,IACH,IACErC,aAAcrjC,EACd+e,SAAU0c,EAAI,aACdkK,aAAc/mC,EACd0kC,OAAQp7B,EACRmC,SAAUoB,EACVm6B,eAAgB7hB,EAChB8hB,mBAAoBl6B,GAClB+5B,GAEF9D,OAAQhmC,EACR25B,SAAUzvB,GACRo9B,EAAEtkC,GACN,OAAO,gBAAgB,MAAO,CAC5B6J,MAAO,CACLsW,SAAU,QACV+mB,OAAQ,KACRC,IAnBF,GAoBEC,KApBF,GAqBEC,MArBF,GAsBEC,OAtBF,GAuBEC,cAAe,UACZpiB,GAELgC,UAAWpa,EACXy6B,aAActgC,EAAE+9B,WAChBwC,aAAcvgC,EAAEg+B,UACfloC,EAAE+H,KAAImS,IACP,IAAIkqB,EAAIlqB,EAAEiJ,UAAY0c,EAMpBx1B,EA5DD,EAACjG,EAAGy7B,KACP,IAAI78B,EAAIoB,EAAE0P,SAAS,OACjBxH,EAAItJ,EAAI,CACNmnC,IAAK,GACH,CACFG,OAAQ,GAEVz6B,EAAIzL,EAAE0P,SAAS,UAAY,CACzB42B,eAAgB,UACdtmC,EAAE0P,SAAS,SAAW,CACxB42B,eAAgB,YACd,CAAC,EACP,MAAO,CACLN,KAAM,EACNC,MAAO,EACPM,QAAS,OACTxnB,SAAU,WACV0L,WAAY,SAAM,EAAS,yCAC3B9iB,UAAW,cAAczE,OAAOu4B,GAAK78B,EAAI,GAAK,GAAI,UAC/CsJ,KACAuD,EACJ,EAuCO+6B,CAAGxG,EALHl6B,EAAEi+B,gBAAgBjuB,EAAG,CACvButB,aAAcrjC,EACdsjC,OAAQp7B,EACRq7B,gBAAiB9H,KAGrB,OAAO,gBAAgB6J,GAAI,CACzB9+B,GAAIsP,EAAEtP,GACNvK,IAAK6Z,EAAEtP,GACP++B,eAAgBz/B,EAAE89B,aAClB7d,UAAWjQ,EAAEmsB,QAAUuD,GAAK,GAC5B/8B,MAAOxC,GACK,WAAX6P,EAAE0D,KAAoB6nB,EAAEvrB,EAAEmd,QAASnd,GAAKrK,EAAIA,EAAEqK,GAAK,gBAAgBqvB,GAAG,CACvEtD,MAAO/rB,EACPiJ,SAAUihB,IACT,IACF,EAEHyG,GAAK,C,mBC7bP1Y,EAAOrC,QAAU,CACfgb,mBAAoB,WAClB,OAAO,IACT,EACAC,wBAAyB,WACvB,OAAO,IACT,E,qGCoEOC,EAAe,IAxEa,SAAUC,GAE/C,SAASC,IACP,IAAIv2B,EAkBJ,OAjBAA,EAAQs2B,EAAchpC,KAAKsS,OAASA,MAC9B42B,MAAQ,SAAUC,GACtB,IAAIC,EACJ,IAAK,OAAmC,OAArBA,EAAUrnC,aAAkB,EAASqnC,EAAQjmC,kBAAmB,CACjF,IAAIgK,EAAW,WACb,OAAOg8B,GACT,EAIA,OAFApnC,OAAOoB,iBAAiB,mBAAoBgK,GAAU,GACtDpL,OAAOoB,iBAAiB,QAASgK,GAAU,GACpC,WAELpL,OAAOqL,oBAAoB,mBAAoBD,GAC/CpL,OAAOqL,oBAAoB,QAASD,EACtC,CACF,CACF,EACOuF,CACT,EArBA,OAAeu2B,EAAcD,GAsB7B,IAAIK,EAASJ,EAAanqC,UA+C1B,OA9CAuqC,EAAOC,YAAc,WACdh3B,KAAKi3B,SACRj3B,KAAKk3B,iBAAiBl3B,KAAK42B,MAE/B,EACAG,EAAOI,cAAgB,WAEnB,IAAIC,EADDp3B,KAAKq3B,iBAE0B,OAAjCD,EAAgBp3B,KAAKi3B,UAA4BG,EAAc1pC,KAAKsS,MACrEA,KAAKi3B,aAAU77B,EAEnB,EACA27B,EAAOG,iBAAmB,SAA0BN,GAClD,IAAIU,EACFC,EAASv3B,KACXA,KAAK42B,MAAQA,EACsB,OAAlCU,EAAiBt3B,KAAKi3B,UAA4BK,EAAe5pC,KAAKsS,MACvEA,KAAKi3B,QAAUL,GAAM,SAAUY,GACN,kBAAZA,EACTD,EAAOE,WAAWD,GAElBD,EAAOV,SAEX,GACF,EACAE,EAAOU,WAAa,SAAoBD,GACtCx3B,KAAKw3B,QAAUA,EACXA,GACFx3B,KAAK62B,SAET,EACAE,EAAOF,QAAU,WACf72B,KAAKuZ,UAAU1tB,SAAQ,SAAUgP,GAC/BA,GACF,GACF,EACAk8B,EAAOW,UAAY,WACjB,MAA4B,kBAAjB13B,KAAKw3B,QACPx3B,KAAKw3B,QAGU,oBAAb9nC,UAGJ,MAAC0L,EAAW,UAAW,aAAamE,SAAS7P,SAASioC,gBAC/D,EACOhB,CACT,CAvEuC,CAuErC,K,yWCxEF,IAAIiB,EAASryB,QACN,SAASsyB,IACd,OAAOD,CACT,CACO,SAASE,EAAUC,GACxBH,EAASG,CACX,C,kFCLWC,EAA6B,WACtC,SAASA,IACPh4B,KAAKi4B,MAAQ,GACbj4B,KAAKk4B,aAAe,EACpBl4B,KAAKm4B,SAAW,SAAUpwB,GACxBA,GACF,EACA/H,KAAKo4B,cAAgB,SAAUrwB,GAC7BA,GACF,CACF,CACA,IAAIgvB,EAASiB,EAAcxrC,UAqE3B,OApEAuqC,EAAOsB,MAAQ,SAAetwB,GAC5B,IAAI5M,EACJ6E,KAAKk4B,eACL,IACE/8B,EAAS4M,GACX,CAAE,QACA/H,KAAKk4B,eACAl4B,KAAKk4B,cACRl4B,KAAKs4B,OAET,CACA,OAAOn9B,CACT,EACA47B,EAAOwB,SAAW,SAAkBxwB,GAClC,IAAI3H,EAAQJ,KACRA,KAAKk4B,aACPl4B,KAAKi4B,MAAM5sC,KAAK0c,IAEhB,SAAkB,WAChB3H,EAAM+3B,SAASpwB,EACjB,GAEJ,EAKAgvB,EAAOyB,WAAa,SAAoBzwB,GACtC,IAAIwvB,EAASv3B,KACb,OAAO,WACL,IAAK,IAAIK,EAAO3U,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMoT,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ea,EAAKb,GAAQ5U,UAAU4U,GAEzBi3B,EAAOgB,UAAS,WACdxwB,EAASzc,WAAM,EAAQ6V,EACzB,GACF,CACF,EACA41B,EAAOuB,MAAQ,WACb,IAAIG,EAASz4B,KACTi4B,EAAQj4B,KAAKi4B,MACjBj4B,KAAKi4B,MAAQ,GACTA,EAAMtsC,SACR,SAAkB,WAChB8sC,EAAOL,eAAc,WACnBH,EAAMpsC,SAAQ,SAAUkc,GACtB0wB,EAAON,SAASpwB,EAClB,GACF,GACF,GAEJ,EAMAgvB,EAAO2B,kBAAoB,SAA2B39B,GACpDiF,KAAKm4B,SAAWp9B,CAClB,EAMAg8B,EAAO4B,uBAAyB,SAAgC59B,GAC9DiF,KAAKo4B,cAAgBr9B,CACvB,EACOi9B,CACT,CAjFwC,GAmF7BY,EAAgB,IAAIZ,C,qGCZpBa,EAAgB,IAvEa,SAAUnC,GAEhD,SAASoC,IACP,IAAI14B,EAkBJ,OAjBAA,EAAQs2B,EAAchpC,KAAKsS,OAASA,MAC9B42B,MAAQ,SAAUmC,GACtB,IAAIjC,EACJ,IAAK,OAAmC,OAArBA,EAAUrnC,aAAkB,EAASqnC,EAAQjmC,kBAAmB,CACjF,IAAIgK,EAAW,WACb,OAAOk+B,GACT,EAIA,OAFAtpC,OAAOoB,iBAAiB,SAAUgK,GAAU,GAC5CpL,OAAOoB,iBAAiB,UAAWgK,GAAU,GACtC,WAELpL,OAAOqL,oBAAoB,SAAUD,GACrCpL,OAAOqL,oBAAoB,UAAWD,EACxC,CACF,CACF,EACOuF,CACT,EArBA,OAAe04B,EAAepC,GAsB9B,IAAIK,EAAS+B,EAActsC,UA8C3B,OA7CAuqC,EAAOC,YAAc,WACdh3B,KAAKi3B,SACRj3B,KAAKk3B,iBAAiBl3B,KAAK42B,MAE/B,EACAG,EAAOI,cAAgB,WAEnB,IAAIC,EADDp3B,KAAKq3B,iBAE0B,OAAjCD,EAAgBp3B,KAAKi3B,UAA4BG,EAAc1pC,KAAKsS,MACrEA,KAAKi3B,aAAU77B,EAEnB,EACA27B,EAAOG,iBAAmB,SAA0BN,GAClD,IAAIU,EACFC,EAASv3B,KACXA,KAAK42B,MAAQA,EACsB,OAAlCU,EAAiBt3B,KAAKi3B,UAA4BK,EAAe5pC,KAAKsS,MACvEA,KAAKi3B,QAAUL,GAAM,SAAUoC,GACP,kBAAXA,EACTzB,EAAO0B,UAAUD,GAEjBzB,EAAOwB,UAEX,GACF,EACAhC,EAAOkC,UAAY,SAAmBD,GACpCh5B,KAAKg5B,OAASA,EACVA,GACFh5B,KAAK+4B,UAET,EACAhC,EAAOgC,SAAW,WAChB/4B,KAAKuZ,UAAU1tB,SAAQ,SAAUgP,GAC/BA,GACF,GACF,EACAk8B,EAAOmC,SAAW,WAChB,MAA2B,kBAAhBl5B,KAAKg5B,OACPh5B,KAAKg5B,OAEW,oBAAd5oC,gBAAyD,IAArBA,UAAU+oC,QAGlD/oC,UAAU+oC,MACnB,EACOL,CACT,CAtEwC,CAsEtC,K,oIClESM,EAAqB,WAC9B,SAASA,EAAM7jC,GACbyK,KAAKq5B,qBAAsB,EAC3Br5B,KAAKs5B,cAAe,EACpBt5B,KAAKu5B,eAAiBhkC,EAAOgkC,eAC7Bv5B,KAAKw5B,WAAWjkC,EAAOkT,SACvBzI,KAAKy5B,UAAY,GACjBz5B,KAAK05B,MAAQnkC,EAAOmkC,MACpB15B,KAAK25B,SAAWpkC,EAAOokC,SACvB35B,KAAK45B,UAAYrkC,EAAOqkC,UACxB55B,KAAK65B,aAAetkC,EAAO6jB,OAASpZ,KAAK85B,gBAAgB95B,KAAKyI,SAC9DzI,KAAKoZ,MAAQpZ,KAAK65B,aAClB75B,KAAKsQ,KAAO/a,EAAO+a,KACnBtQ,KAAK+5B,YACP,CACA,IAAIhD,EAASqC,EAAM5sC,UAqZnB,OApZAuqC,EAAOyC,WAAa,SAAoB/wB,GACtC,IAAIuxB,EACJh6B,KAAKyI,SAAU,OAAS,CAAC,EAAGzI,KAAKu5B,eAAgB9wB,GACjDzI,KAAKsQ,KAAkB,MAAX7H,OAAkB,EAASA,EAAQ6H,KAE/CtQ,KAAKi6B,UAAY3jC,KAAKmmB,IAAIzc,KAAKi6B,WAAa,EAAuD,OAAnDD,EAAwBh6B,KAAKyI,QAAQwxB,WAAqBD,EAAwB,IACpI,EACAjD,EAAOmD,kBAAoB,SAA2BzxB,GACpDzI,KAAKu5B,eAAiB9wB,CACxB,EACAsuB,EAAOgD,WAAa,WAClB,IAAI35B,EAAQJ,KACZA,KAAKm6B,kBACD,QAAen6B,KAAKi6B,aACtBj6B,KAAKo6B,UAAYj4B,YAAW,WAC1B/B,EAAMi6B,gBACR,GAAGr6B,KAAKi6B,WAEZ,EACAlD,EAAOoD,eAAiB,WAClBn6B,KAAKo6B,YACPzI,aAAa3xB,KAAKo6B,WAClBp6B,KAAKo6B,eAAYh/B,EAErB,EACA27B,EAAOsD,eAAiB,WACjBr6B,KAAKy5B,UAAU9tC,SACdqU,KAAKoZ,MAAMkhB,WACTt6B,KAAKs5B,cACPt5B,KAAK+5B,aAGP/5B,KAAK05B,MAAMxyB,OAAOlH,MAGxB,EACA+2B,EAAOwD,QAAU,SAAiBC,EAAS/xB,GACzC,IAAIgyB,EAAuBC,EACvBC,EAAW36B,KAAKoZ,MAAM9O,KAEtBA,GAAO,QAAiBkwB,EAASG,GAcrC,OAZ4E,OAAvEF,GAAyBC,EAAgB16B,KAAKyI,SAASmyB,kBAAuB,EAASH,EAAsB/sC,KAAKgtC,EAAeC,EAAUrwB,IAC9IA,EAAOqwB,GACqC,IAAnC36B,KAAKyI,QAAQoyB,oBAEtBvwB,GAAO,QAAiBqwB,EAAUrwB,IAGpCtK,KAAK86B,SAAS,CACZxwB,KAAMA,EACNjB,KAAM,UACN0xB,cAA0B,MAAXtyB,OAAkB,EAASA,EAAQuyB,YAE7C1wB,CACT,EACAysB,EAAOkE,SAAW,SAAkB7hB,EAAO8hB,GACzCl7B,KAAK86B,SAAS,CACZzxB,KAAM,WACN+P,MAAOA,EACP8hB,gBAAiBA,GAErB,EACAnE,EAAOrV,OAAS,SAAgBjZ,GAC9B,IAAI0yB,EACAjY,EAAUljB,KAAKkjB,QAEnB,OADkC,OAAjCiY,EAAgBn7B,KAAKo7B,UAA4BD,EAAczZ,OAAOjZ,GAChEya,EAAUA,EAAQnX,KAAK,MAAME,MAAM,MAAQnK,QAAQwD,SAC5D,EACAyxB,EAAOsE,QAAU,WACfr7B,KAAKm6B,iBACLn6B,KAAK0hB,OAAO,CACV4Z,QAAQ,GAEZ,EACAvE,EAAOwE,MAAQ,WACbv7B,KAAKq7B,UACLr7B,KAAKi7B,SAASj7B,KAAK65B,aACrB,EACA9C,EAAOyE,SAAW,WAChB,OAAOx7B,KAAKy5B,UAAUj6B,MAAK,SAAUi8B,GACnC,OAAoC,IAA7BA,EAAShzB,QAAQizB,OAC1B,GACF,EACA3E,EAAOuD,WAAa,WAClB,OAAOt6B,KAAKoZ,MAAMkhB,UACpB,EACAvD,EAAO4E,QAAU,WACf,OAAO37B,KAAKoZ,MAAMwiB,gBAAkB57B,KAAKoZ,MAAM2hB,eAAiB/6B,KAAKy5B,UAAUj6B,MAAK,SAAUi8B,GAC5F,OAAOA,EAASI,mBAAmBF,OACrC,GACF,EACA5E,EAAO+E,cAAgB,SAAuBC,GAI5C,YAHkB,IAAdA,IACFA,EAAY,GAEP/7B,KAAKoZ,MAAMwiB,gBAAkB57B,KAAKoZ,MAAM2hB,iBAAkB,QAAe/6B,KAAKoZ,MAAM2hB,cAAegB,EAC5G,EACAhF,EAAOF,QAAU,WACf,IAAImF,EACAP,EAAWz7B,KAAKy5B,UAAU5H,MAAK,SAAU/7B,GAC3C,OAAOA,EAAEmmC,0BACX,IACIR,GACFA,EAASS,UAGwB,OAAlCF,EAAiBh8B,KAAKo7B,UAA4BY,EAAeG,UACpE,EACApF,EAAOgC,SAAW,WAChB,IAAIqD,EACAX,EAAWz7B,KAAKy5B,UAAU5H,MAAK,SAAU/7B,GAC3C,OAAOA,EAAEumC,wBACX,IACIZ,GACFA,EAASS,UAGwB,OAAlCE,EAAiBp8B,KAAKo7B,UAA4BgB,EAAeD,UACpE,EACApF,EAAOuF,YAAc,SAAqBb,IACE,IAAtCz7B,KAAKy5B,UAAUzoC,QAAQyqC,KACzBz7B,KAAKy5B,UAAUpuC,KAAKowC,GACpBz7B,KAAKs5B,cAAe,EAEpBt5B,KAAKm6B,iBACLn6B,KAAK05B,MAAM6C,OAAO,CAChBlzB,KAAM,gBACNqU,MAAO1d,KACPy7B,SAAUA,IAGhB,EACA1E,EAAOyF,eAAiB,SAAwBf,IACJ,IAAtCz7B,KAAKy5B,UAAUzoC,QAAQyqC,KACzBz7B,KAAKy5B,UAAYz5B,KAAKy5B,UAAUxuC,QAAO,SAAU6K,GAC/C,OAAOA,IAAM2lC,CACf,IACKz7B,KAAKy5B,UAAU9tC,SAGdqU,KAAKo7B,UACHp7B,KAAKo7B,QAAQqB,uBAAyBz8B,KAAKq5B,oBAC7Cr5B,KAAKo7B,QAAQ1Z,OAAO,CAClBgb,QAAQ,IAGV18B,KAAKo7B,QAAQuB,eAGb38B,KAAKi6B,UACPj6B,KAAK+5B,aAEL/5B,KAAK05B,MAAMxyB,OAAOlH,OAGtBA,KAAK05B,MAAM6C,OAAO,CAChBlzB,KAAM,kBACNqU,MAAO1d,KACPy7B,SAAUA,IAGhB,EACA1E,EAAO6F,kBAAoB,WACzB,OAAO58B,KAAKy5B,UAAU9tC,MACxB,EACAorC,EAAO8F,WAAa,WACb78B,KAAKoZ,MAAMwiB,eACd57B,KAAK86B,SAAS,CACZzxB,KAAM,cAGZ,EACA0tB,EAAO+F,MAAQ,SAAer0B,EAASs0B,GACrC,IACEC,EACAC,EACAC,EAHE3F,EAASv3B,KAIb,GAAIA,KAAKoZ,MAAMkhB,WACb,GAAIt6B,KAAKoZ,MAAM2hB,gBAAkC,MAAhBgC,OAAuB,EAASA,EAAaI,eAE5En9B,KAAK0hB,OAAO,CACV4Z,QAAQ,SAEL,GAAIt7B,KAAKkjB,QAAS,CACvB,IAAIka,EAKJ,OAFmC,OAAlCA,EAAiBp9B,KAAKo7B,UAA4BgC,EAAeC,gBAE3Dr9B,KAAKkjB,OACd,CAQF,GALIza,GACFzI,KAAKw5B,WAAW/wB,IAIbzI,KAAKyI,QAAQ60B,QAAS,CACzB,IAAI7B,EAAWz7B,KAAKy5B,UAAU5H,MAAK,SAAU/7B,GAC3C,OAAOA,EAAE2S,QAAQ60B,OACnB,IACI7B,GACFz7B,KAAKw5B,WAAWiC,EAAShzB,QAE7B,CACA,IAAIkxB,GAAW,QAAoB35B,KAAK25B,UACpC4D,GAAkB,UAElBC,EAAiB,CACnB7D,SAAUA,EACV8D,eAAWriC,EACXkV,KAAMtQ,KAAKsQ,MAEbxlB,OAAOoB,eAAesxC,EAAgB,SAAU,CAC9CpyC,YAAY,EACZ+G,IAAK,WACH,GAAIorC,EAEF,OADAhG,EAAO8B,qBAAsB,EACtBkE,EAAgBze,MAG3B,IAGF,IAiBM4e,EAOAC,EAhBFvb,EAAU,CACZ2a,aAAcA,EACdt0B,QAASzI,KAAKyI,QACdkxB,SAAUA,EACVvgB,MAAOpZ,KAAKoZ,MACZwkB,QAbY,WACZ,OAAKrG,EAAO9uB,QAAQ60B,SAGpB/F,EAAO8B,qBAAsB,EACtB9B,EAAO9uB,QAAQ60B,QAAQE,IAHrB17B,QAAQC,OAAO,kBAI1B,EAQEuO,KAAMtQ,KAAKsQ,OAE0C,OAAlD0sB,EAAwBh9B,KAAKyI,QAAQo1B,eAAoB,EAASb,EAAsBc,WAEvC,OAAnDJ,EAAyB19B,KAAKyI,QAAQo1B,WAA6BH,EAAuBI,QAAQ1b,KAGrGpiB,KAAK+9B,YAAc/9B,KAAKoZ,MAEnBpZ,KAAKoZ,MAAMkhB,YAAct6B,KAAKoZ,MAAM4kB,aAAiE,OAAjDf,EAAwB7a,EAAQ2a,mBAAwB,EAASE,EAAsB3sB,QAE9ItQ,KAAK86B,SAAS,CACZzxB,KAAM,QACNiH,KAAyD,OAAlDqtB,EAAyBvb,EAAQ2a,mBAAwB,EAASY,EAAuBrtB,OAsDpG,OAlDAtQ,KAAKo7B,QAAU,IAAI,KAAQ,CACzBrgC,GAAIqnB,EAAQwb,QACZjc,MAA0B,MAAnB4b,GAAsF,OAAlDL,EAAwBK,EAAgB5b,YAAlD,EAA4Eub,EAAsBxpC,KAAK6pC,GACxIU,UAAW,SAAmB3zB,GAC5BitB,EAAOgD,QAAQjwB,GAEkB,MAAjCitB,EAAOmC,MAAMnkC,OAAO0oC,WAA6B1G,EAAOmC,MAAMnkC,OAAO0oC,UAAU3zB,EAAMitB,GAE5D,IAArBA,EAAO0C,WACT1C,EAAO8C,gBAEX,EACA6D,QAAS,SAAiB14B,IAElB,QAAiBA,IAAUA,EAAM81B,QACrC/D,EAAOuD,SAAS,CACdzxB,KAAM,QACN7D,MAAOA,KAGN,QAAiBA,KAEW,MAA/B+xB,EAAOmC,MAAMnkC,OAAO2oC,SAA2B3G,EAAOmC,MAAMnkC,OAAO2oC,QAAQ14B,EAAO+xB,IAElF,SAAY/xB,MAAMA,IAGK,IAArB+xB,EAAO0C,WACT1C,EAAO8C,gBAEX,EACA8D,OAAQ,WACN5G,EAAOuD,SAAS,CACdzxB,KAAM,UAEV,EACA+0B,QAAS,WACP7G,EAAOuD,SAAS,CACdzxB,KAAM,SAEV,EACAg1B,WAAY,WACV9G,EAAOuD,SAAS,CACdzxB,KAAM,YAEV,EACAi1B,MAAOlc,EAAQ3Z,QAAQ61B,MACvBC,WAAYnc,EAAQ3Z,QAAQ81B,aAE9Bv+B,KAAKkjB,QAAUljB,KAAKo7B,QAAQlY,QACrBljB,KAAKkjB,OACd,EACA6T,EAAO+D,SAAW,SAAkBjhB,GAClC,IAAI4e,EAASz4B,KACbA,KAAKoZ,MAAQpZ,KAAKrC,QAAQqC,KAAKoZ,MAAOS,GACtC+e,EAAA,EAAcP,OAAM,WAClBI,EAAOgB,UAAU5tC,SAAQ,SAAU4vC,GACjCA,EAAS+C,cAAc3kB,EACzB,IACA4e,EAAOiB,MAAM6C,OAAO,CAClB7e,MAAO+a,EACPpvB,KAAM,eACNwQ,OAAQA,GAEZ,GACF,EACAkd,EAAO+C,gBAAkB,SAAyBrxB,GAChD,IAAI6B,EAAsC,mBAAxB7B,EAAQg2B,YAA6Bh2B,EAAQg2B,cAAgBh2B,EAAQg2B,YAEnFC,OADgD,IAAxBj2B,EAAQg2B,YACgD,mBAAjCh2B,EAAQi2B,qBAAsCj2B,EAAQi2B,uBAAyBj2B,EAAQi2B,qBAAuB,EAC7JC,OAA0B,IAATr0B,EACrB,MAAO,CACLA,KAAMA,EACNs0B,gBAAiB,EACjB7D,cAAe4D,EAAkC,MAAxBD,EAA+BA,EAAuBxkB,KAAKC,MAAQ,EAC5F3U,MAAO,KACPq5B,iBAAkB,EAClBC,eAAgB,EAChBC,kBAAmB,EACnBf,UAAW,KACX1D,YAAY,EACZsB,eAAe,EACfoD,UAAU,EACV/e,OAAQ0e,EAAU,UAAY,OAElC,EACA5H,EAAOp5B,QAAU,SAAiByb,EAAOS,GACvC,IAAIolB,EAAcC,EAClB,OAAQrlB,EAAOxQ,MACb,IAAK,SACH,OAAO,OAAS,CAAC,EAAG+P,EAAO,CACzB2lB,kBAAmB3lB,EAAM2lB,kBAAoB,IAEjD,IAAK,QACH,OAAO,OAAS,CAAC,EAAG3lB,EAAO,CACzB4lB,UAAU,IAEd,IAAK,WACH,OAAO,OAAS,CAAC,EAAG5lB,EAAO,CACzB4lB,UAAU,IAEd,IAAK,QACH,OAAO,OAAS,CAAC,EAAG5lB,EAAO,CACzB2lB,kBAAmB,EACnBf,UAA2C,OAA/BiB,EAAeplB,EAAOvJ,MAAgB2uB,EAAe,KACjE3E,YAAY,EACZ0E,UAAU,IACR5lB,EAAM2hB,eAAiB,CACzBv1B,MAAO,KACPya,OAAQ,YAEZ,IAAK,UACH,OAAO,OAAS,CAAC,EAAG7G,EAAO,CACzB9O,KAAMuP,EAAOvP,KACbs0B,gBAAiBxlB,EAAMwlB,gBAAkB,EACzC7D,cAAiE,OAAjDmE,EAAwBrlB,EAAOkhB,eAAyBmE,EAAwBhlB,KAAKC,MACrG3U,MAAO,KACPu5B,kBAAmB,EACnBzE,YAAY,EACZsB,eAAe,EACfoD,UAAU,EACV/e,OAAQ,YAEZ,IAAK,QACH,IAAIza,EAAQqU,EAAOrU,MACnB,OAAI,QAAiBA,IAAUA,EAAMk3B,QAAU18B,KAAK+9B,aAC3C,OAAS,CAAC,EAAG/9B,KAAK+9B,cAEpB,OAAS,CAAC,EAAG3kB,EAAO,CACzB5T,MAAOA,EACPq5B,iBAAkBzlB,EAAMylB,iBAAmB,EAC3CC,eAAgB5kB,KAAKC,MACrB4kB,kBAAmB3lB,EAAM2lB,kBAAoB,EAC7CzE,YAAY,EACZ0E,UAAU,EACV/e,OAAQ,UAEZ,IAAK,aACH,OAAO,OAAS,CAAC,EAAG7G,EAAO,CACzBwiB,eAAe,IAEnB,IAAK,WACH,OAAO,OAAS,CAAC,EAAGxiB,EAAOS,EAAOT,OACpC,QACE,OAAOA,EAEb,EACOggB,CACT,CAragC,G,SCDrB+F,EAA0B,SAAUzI,GAE7C,SAASyI,EAAW5pC,GAClB,IAAI6K,EAKJ,OAJAA,EAAQs2B,EAAchpC,KAAKsS,OAASA,MAC9BzK,OAASA,GAAU,CAAC,EAC1B6K,EAAMg/B,QAAU,GAChBh/B,EAAMi/B,WAAa,CAAC,EACbj/B,CACT,EARA,OAAe++B,EAAYzI,GAS3B,IAAIK,EAASoI,EAAW3yC,UAqGxB,OApGAuqC,EAAOt5B,MAAQ,SAAe6hC,EAAQ72B,EAAS2Q,GAC7C,IAAImmB,EACA5F,EAAWlxB,EAAQkxB,SACnBC,EAAwD,OAA3C2F,EAAqB92B,EAAQmxB,WAAqB2F,GAAqB,QAAsB5F,EAAUlxB,GACpHiV,EAAQ1d,KAAK7N,IAAIynC,GAarB,OAZKlc,IACHA,EAAQ,IAAI0b,EAAM,CAChBM,MAAO15B,KACP25B,SAAUA,EACVC,UAAWA,EACXnxB,QAAS62B,EAAOE,oBAAoB/2B,GACpC2Q,MAAOA,EACPmgB,eAAgB+F,EAAOG,iBAAiB9F,GACxCrpB,KAAM7H,EAAQ6H,OAEhBtQ,KAAKvM,IAAIiqB,IAEJA,CACT,EACAqZ,EAAOtjC,IAAM,SAAaiqB,GACnB1d,KAAKq/B,WAAW3hB,EAAMkc,aACzB55B,KAAKq/B,WAAW3hB,EAAMkc,WAAalc,EACnC1d,KAAKo/B,QAAQ/zC,KAAKqyB,GAClB1d,KAAKu8B,OAAO,CACVlzB,KAAM,aACNqU,MAAOA,IAGb,EACAqZ,EAAO7vB,OAAS,SAAgBwW,GAC9B,IAAIgiB,EAAa1/B,KAAKq/B,WAAW3hB,EAAMkc,WACnC8F,IACFhiB,EAAM2d,UACNr7B,KAAKo/B,QAAUp/B,KAAKo/B,QAAQn0C,QAAO,SAAU6K,GAC3C,OAAOA,IAAM4nB,CACf,IACIgiB,IAAehiB,UACV1d,KAAKq/B,WAAW3hB,EAAMkc,WAE/B55B,KAAKu8B,OAAO,CACVlzB,KAAM,eACNqU,MAAOA,IAGb,EACAqZ,EAAO4I,MAAQ,WACb,IAAIpI,EAASv3B,KACb44B,EAAA,EAAcP,OAAM,WAClBd,EAAO6H,QAAQvzC,SAAQ,SAAU6xB,GAC/B6Z,EAAOrwB,OAAOwW,EAChB,GACF,GACF,EACAqZ,EAAO5kC,IAAM,SAAaynC,GACxB,OAAO55B,KAAKq/B,WAAWzF,EACzB,EACA7C,EAAO6I,OAAS,WACd,OAAO5/B,KAAKo/B,OACd,EACArI,EAAOlF,KAAO,SAAcgO,EAAMC,GAChC,IACEC,GADqB,QAAgBF,EAAMC,GAChB,GAI7B,YAH6B,IAAlBC,EAAQC,QACjBD,EAAQC,OAAQ,GAEXhgC,KAAKo/B,QAAQvN,MAAK,SAAUnU,GACjC,OAAO,QAAWqiB,EAASriB,EAC7B,GACF,EACAqZ,EAAOkJ,QAAU,SAAiBJ,EAAMC,GACtC,IACEC,GADsB,QAAgBF,EAAMC,GAChB,GAC9B,OAAOh1C,OAAOD,KAAKk1C,GAASp0C,OAAS,EAAIqU,KAAKo/B,QAAQn0C,QAAO,SAAUyyB,GACrE,OAAO,QAAWqiB,EAASriB,EAC7B,IAAK1d,KAAKo/B,OACZ,EACArI,EAAOwF,OAAS,SAAgB2D,GAC9B,IAAIzH,EAASz4B,KACb44B,EAAA,EAAcP,OAAM,WAClBI,EAAOlf,UAAU1tB,SAAQ,SAAUgP,GACjCA,EAASqlC,EACX,GACF,GACF,EACAnJ,EAAOF,QAAU,WACf,IAAIsJ,EAASngC,KACb44B,EAAA,EAAcP,OAAM,WAClB8H,EAAOf,QAAQvzC,SAAQ,SAAU6xB,GAC/BA,EAAMmZ,SACR,GACF,GACF,EACAE,EAAOgC,SAAW,WAChB,IAAIqH,EAASpgC,KACb44B,EAAA,EAAcP,OAAM,WAClB+H,EAAOhB,QAAQvzC,SAAQ,SAAU6xB,GAC/BA,EAAMqb,UACR,GACF,GACF,EACOoG,CACT,CAhHqC,CAgHnC,KC/GSkB,EAAwB,WACjC,SAASA,EAAS9qC,GAChByK,KAAKyI,SAAU,OAAS,CAAC,EAAGlT,EAAOgkC,eAAgBhkC,EAAOkT,SAC1DzI,KAAKsgC,WAAa/qC,EAAO+qC,WACzBtgC,KAAKugC,cAAgBhrC,EAAOgrC,cAC5BvgC,KAAKy5B,UAAY,GACjBz5B,KAAKoZ,MAAQ7jB,EAAO6jB,OAwIf,CACLgJ,aAAShnB,EACTkP,UAAMlP,EACNoK,MAAO,KACPg7B,aAAc,EACdxB,UAAU,EACV/e,OAAQ,OACRwgB,eAAWrlC,GA9IX4E,KAAKsQ,KAAO/a,EAAO+a,IACrB,CACA,IAAIymB,EAASsJ,EAAS7zC,UAkItB,OAjIAuqC,EAAOkE,SAAW,SAAkB7hB,GAClCpZ,KAAK86B,SAAS,CACZzxB,KAAM,WACN+P,MAAOA,GAEX,EACA2d,EAAOuF,YAAc,SAAqBb,IACE,IAAtCz7B,KAAKy5B,UAAUzoC,QAAQyqC,IACzBz7B,KAAKy5B,UAAUpuC,KAAKowC,EAExB,EACA1E,EAAOyF,eAAiB,SAAwBf,GAC9Cz7B,KAAKy5B,UAAYz5B,KAAKy5B,UAAUxuC,QAAO,SAAU6K,GAC/C,OAAOA,IAAM2lC,CACf,GACF,EACA1E,EAAOrV,OAAS,WACd,OAAI1hB,KAAKo7B,SACPp7B,KAAKo7B,QAAQ1Z,SACN1hB,KAAKo7B,QAAQlY,QAAQnX,KAAK,MAAME,MAAM,OAExCnK,QAAQwD,SACjB,EACAyxB,EAAOoF,SAAW,WAChB,OAAIn8B,KAAKo7B,SACPp7B,KAAKo7B,QAAQe,WACNn8B,KAAKo7B,QAAQlY,SAEfljB,KAAK0gC,SACd,EACA3J,EAAO2J,QAAU,WACf,IACIp2B,EADAlK,EAAQJ,KAER2gC,EAAiC,YAAtB3gC,KAAKoZ,MAAM6G,OACtBiD,EAAUphB,QAAQwD,UAqBtB,OApBKq7B,IACH3gC,KAAK86B,SAAS,CACZzxB,KAAM,UACNo3B,UAAWzgC,KAAKyI,QAAQg4B,YAE1Bvd,EAAUA,EAAQnX,MAAK,WAEkB,MAAvC3L,EAAMmgC,cAAchrC,OAAOqrC,UAA4BxgC,EAAMmgC,cAAchrC,OAAOqrC,SAASxgC,EAAMgZ,MAAMqnB,UAAWrgC,EACpH,IAAG2L,MAAK,WACN,OAAiC,MAA1B3L,EAAMqI,QAAQm4B,cAAmB,EAASxgC,EAAMqI,QAAQm4B,SAASxgC,EAAMgZ,MAAMqnB,UACtF,IAAG10B,MAAK,SAAUqW,GACZA,IAAYhiB,EAAMgZ,MAAMgJ,SAC1BhiB,EAAM06B,SAAS,CACbzxB,KAAM,UACN+Y,QAASA,EACTqe,UAAWrgC,EAAMgZ,MAAMqnB,WAG7B,KAEKvd,EAAQnX,MAAK,WAClB,OAAO3L,EAAMygC,iBACf,IAAG90B,MAAK,SAAU5Q,GAChBmP,EAAOnP,EAEiC,MAAxCiF,EAAMmgC,cAAchrC,OAAO0oC,WAA6B79B,EAAMmgC,cAAchrC,OAAO0oC,UAAU3zB,EAAMlK,EAAMgZ,MAAMqnB,UAAWrgC,EAAMgZ,MAAMgJ,QAAShiB,EACjJ,IAAG2L,MAAK,WACN,OAAkC,MAA3B3L,EAAMqI,QAAQw1B,eAAoB,EAAS79B,EAAMqI,QAAQw1B,UAAU3zB,EAAMlK,EAAMgZ,MAAMqnB,UAAWrgC,EAAMgZ,MAAMgJ,QACrH,IAAGrW,MAAK,WACN,OAAkC,MAA3B3L,EAAMqI,QAAQq4B,eAAoB,EAAS1gC,EAAMqI,QAAQq4B,UAAUx2B,EAAM,KAAMlK,EAAMgZ,MAAMqnB,UAAWrgC,EAAMgZ,MAAMgJ,QAC3H,IAAGrW,MAAK,WAKN,OAJA3L,EAAM06B,SAAS,CACbzxB,KAAM,UACNiB,KAAMA,IAEDA,CACT,IAAG2B,OAAM,SAAUzG,GAKjB,OAHsC,MAAtCpF,EAAMmgC,cAAchrC,OAAO2oC,SAA2B99B,EAAMmgC,cAAchrC,OAAO2oC,QAAQ14B,EAAOpF,EAAMgZ,MAAMqnB,UAAWrgC,EAAMgZ,MAAMgJ,QAAShiB,IAE5I,SAAYoF,MAAMA,GACX1D,QAAQwD,UAAUyG,MAAK,WAC5B,OAAgC,MAAzB3L,EAAMqI,QAAQy1B,aAAkB,EAAS99B,EAAMqI,QAAQy1B,QAAQ14B,EAAOpF,EAAMgZ,MAAMqnB,UAAWrgC,EAAMgZ,MAAMgJ,QAClH,IAAGrW,MAAK,WACN,OAAkC,MAA3B3L,EAAMqI,QAAQq4B,eAAoB,EAAS1gC,EAAMqI,QAAQq4B,eAAU1lC,EAAWoK,EAAOpF,EAAMgZ,MAAMqnB,UAAWrgC,EAAMgZ,MAAMgJ,QACjI,IAAGrW,MAAK,WAKN,MAJA3L,EAAM06B,SAAS,CACbzxB,KAAM,QACN7D,MAAOA,IAEHA,CACR,GACF,GACF,EACAuxB,EAAO8J,gBAAkB,WACvB,IACEE,EADExJ,EAASv3B,KA2Bb,OAzBAA,KAAKo7B,QAAU,IAAI,KAAQ,CACzBrgC,GAAI,WACF,OAAKw8B,EAAO9uB,QAAQu4B,WAGbzJ,EAAO9uB,QAAQu4B,WAAWzJ,EAAOne,MAAMqnB,WAFrC3+B,QAAQC,OAAO,sBAG1B,EACAo8B,OAAQ,WACN5G,EAAOuD,SAAS,CACdzxB,KAAM,UAEV,EACA+0B,QAAS,WACP7G,EAAOuD,SAAS,CACdzxB,KAAM,SAEV,EACAg1B,WAAY,WACV9G,EAAOuD,SAAS,CACdzxB,KAAM,YAEV,EACAi1B,MAAqD,OAA7CyC,EAAsB/gC,KAAKyI,QAAQ61B,OAAiByC,EAAsB,EAClFxC,WAAYv+B,KAAKyI,QAAQ81B,aAEpBv+B,KAAKo7B,QAAQlY,OACtB,EACA6T,EAAO+D,SAAW,SAAkBjhB,GAClC,IAAI4e,EAASz4B,KACbA,KAAKoZ,MAqBT,SAAiBA,EAAOS,GACtB,OAAQA,EAAOxQ,MACb,IAAK,SACH,OAAO,OAAS,CAAC,EAAG+P,EAAO,CACzBonB,aAAcpnB,EAAMonB,aAAe,IAEvC,IAAK,QACH,OAAO,OAAS,CAAC,EAAGpnB,EAAO,CACzB4lB,UAAU,IAEd,IAAK,WACH,OAAO,OAAS,CAAC,EAAG5lB,EAAO,CACzB4lB,UAAU,IAEd,IAAK,UACH,OAAO,OAAS,CAAC,EAAG5lB,EAAO,CACzBgJ,QAASvI,EAAOuI,QAChB9X,UAAMlP,EACNoK,MAAO,KACPw5B,UAAU,EACV/e,OAAQ,UACRwgB,UAAW5mB,EAAO4mB,YAEtB,IAAK,UACH,OAAO,OAAS,CAAC,EAAGrnB,EAAO,CACzB9O,KAAMuP,EAAOvP,KACb9E,MAAO,KACPya,OAAQ,UACR+e,UAAU,IAEd,IAAK,QACH,OAAO,OAAS,CAAC,EAAG5lB,EAAO,CACzB9O,UAAMlP,EACNoK,MAAOqU,EAAOrU,MACdg7B,aAAcpnB,EAAMonB,aAAe,EACnCxB,UAAU,EACV/e,OAAQ,UAEZ,IAAK,WACH,OAAO,OAAS,CAAC,EAAG7G,EAAOS,EAAOT,OACpC,QACE,OAAOA,EAEb,CAhEiBzb,CAAQqC,KAAKoZ,MAAOS,GACjC+e,EAAA,EAAcP,OAAM,WAClBI,EAAOgB,UAAU5tC,SAAQ,SAAU4vC,GACjCA,EAASwF,iBAAiBpnB,EAC5B,IACA4e,EAAO8H,cAAchE,OAAO9D,EAC9B,GACF,EACO4H,CACT,CA5ImC,GCA5B,IAAIa,EAA6B,SAAUxK,GAEhD,SAASwK,EAAc3rC,GACrB,IAAI6K,EAKJ,OAJAA,EAAQs2B,EAAchpC,KAAKsS,OAASA,MAC9BzK,OAASA,GAAU,CAAC,EAC1B6K,EAAM0H,UAAY,GAClB1H,EAAMkgC,WAAa,EACZlgC,CACT,EARA,OAAe8gC,EAAexK,GAS9B,IAAIK,EAASmK,EAAc10C,UA0E3B,OAzEAuqC,EAAOt5B,MAAQ,SAAe6hC,EAAQ72B,EAAS2Q,GAC7C,IAAI1S,EAAW,IAAI25B,EAAS,CAC1BE,cAAevgC,KACfsgC,aAActgC,KAAKsgC,WACnB73B,QAAS62B,EAAO6B,uBAAuB14B,GACvC2Q,MAAOA,EACPmgB,eAAgB9wB,EAAQ24B,YAAc9B,EAAO+B,oBAAoB54B,EAAQ24B,kBAAehmC,EACxFkV,KAAM7H,EAAQ6H,OAGhB,OADAtQ,KAAKvM,IAAIiT,GACFA,CACT,EACAqwB,EAAOtjC,IAAM,SAAaiT,GACxB1G,KAAK8H,UAAUzc,KAAKqb,GACpB1G,KAAKu8B,OAAO71B,EACd,EACAqwB,EAAO7vB,OAAS,SAAgBR,GAC9B1G,KAAK8H,UAAY9H,KAAK8H,UAAU7c,QAAO,SAAU6K,GAC/C,OAAOA,IAAM4Q,CACf,IACAA,EAASgb,SACT1hB,KAAKu8B,OAAO71B,EACd,EACAqwB,EAAO4I,MAAQ,WACb,IAAIpI,EAASv3B,KACb44B,EAAA,EAAcP,OAAM,WAClBd,EAAOzvB,UAAUjc,SAAQ,SAAU6a,GACjC6wB,EAAOrwB,OAAOR,EAChB,GACF,GACF,EACAqwB,EAAO6I,OAAS,WACd,OAAO5/B,KAAK8H,SACd,EACAivB,EAAOlF,KAAO,SAAckO,GAI1B,YAH6B,IAAlBA,EAAQC,QACjBD,EAAQC,OAAQ,GAEXhgC,KAAK8H,UAAU+pB,MAAK,SAAUnrB,GACnC,OAAO,QAAcq5B,EAASr5B,EAChC,GACF,EACAqwB,EAAOkJ,QAAU,SAAiBF,GAChC,OAAO//B,KAAK8H,UAAU7c,QAAO,SAAUyb,GACrC,OAAO,QAAcq5B,EAASr5B,EAChC,GACF,EACAqwB,EAAOwF,OAAS,SAAgB71B,GAC9B,IAAI+xB,EAASz4B,KACb44B,EAAA,EAAcP,OAAM,WAClBI,EAAOlf,UAAU1tB,SAAQ,SAAUgP,GACjCA,EAAS6L,EACX,GACF,GACF,EACAqwB,EAAOF,QAAU,WACf72B,KAAKshC,uBACP,EACAvK,EAAOgC,SAAW,WAChB/4B,KAAKshC,uBACP,EACAvK,EAAOuK,sBAAwB,WAC7B,IAAIC,EAAkBvhC,KAAK8H,UAAU7c,QAAO,SAAU6K,GACpD,OAAOA,EAAEsjB,MAAM4lB,QACjB,IACA,OAAOpG,EAAA,EAAcP,OAAM,WACzB,OAAOkJ,EAAgBpqC,QAAO,SAAU+rB,EAASxc,GAC/C,OAAOwc,EAAQnX,MAAK,WAClB,OAAOrF,EAASy1B,WAAWlwB,MAAM,KACnC,GACF,GAAGnK,QAAQwD,UACb,GACF,EACO47B,CACT,CArFwC,CAqFtC,K,oBCeK,SAASM,EAAiB/4B,EAASg5B,GACxC,OAAmC,MAA5Bh5B,EAAQ+4B,sBAA2B,EAAS/4B,EAAQ+4B,iBAAiBC,EAAMA,EAAM91C,OAAS,GAAI81C,EACvG,CACO,SAASC,EAAqBj5B,EAASg5B,GAC5C,OAAuC,MAAhCh5B,EAAQi5B,0BAA+B,EAASj5B,EAAQi5B,qBAAqBD,EAAM,GAAIA,EAChG,CCvGO,IAAIE,EAA2B,WACpC,SAASA,EAAYpsC,QACJ,IAAXA,IACFA,EAAS,CAAC,GAEZyK,KAAK4hC,WAAarsC,EAAOqsC,YAAc,IAAIzC,EAC3Cn/B,KAAKugC,cAAgBhrC,EAAOgrC,eAAiB,IAAIW,EACjDlhC,KAAKu5B,eAAiBhkC,EAAOgkC,gBAAkB,CAAC,EAChDv5B,KAAK6hC,cAAgB,GACrB7hC,KAAK8hC,iBAAmB,EAC1B,CACA,IAAI/K,EAAS4K,EAAYn1C,UAkQzB,OAjQAuqC,EAAOgL,MAAQ,WACb,IAAI3hC,EAAQJ,KACZA,KAAKgiC,iBAAmBvL,EAAA,EAAa7U,WAAU,WACzC6U,EAAA,EAAaiB,aAAemB,EAAA,EAAcK,aAC5C94B,EAAMmgC,cAAc1J,UACpBz2B,EAAMwhC,WAAW/K,UAErB,IACA72B,KAAKiiC,kBAAoBpJ,EAAA,EAAcjX,WAAU,WAC3C6U,EAAA,EAAaiB,aAAemB,EAAA,EAAcK,aAC5C94B,EAAMmgC,cAAcxH,WACpB34B,EAAMwhC,WAAW7I,WAErB,GACF,EACAhC,EAAOmL,QAAU,WACf,IAAIC,EAAuBC,EACwB,OAAlDD,EAAwBniC,KAAKgiC,mBAAqCG,EAAsBz0C,KAAKsS,MAC1C,OAAnDoiC,EAAwBpiC,KAAKiiC,oBAAsCG,EAAsB10C,KAAKsS,KACjG,EACA+2B,EAAOuD,WAAa,SAAoBuF,EAAMC,GAC5C,IACEC,GADqB,QAAgBF,EAAMC,GAChB,GAE7B,OADAC,EAAQsC,UAAW,EACZriC,KAAK4hC,WAAW3B,QAAQF,GAASp0C,MAC1C,EACAorC,EAAOuL,WAAa,SAAoBvC,GACtC,OAAO//B,KAAKugC,cAAcN,SAAQ,OAAS,CAAC,EAAGF,EAAS,CACtDsC,UAAU,KACR12C,MACN,EACAorC,EAAOwL,aAAe,SAAsB5I,EAAUoG,GACpD,IAAIyC,EACJ,OAA4E,OAApEA,EAAwBxiC,KAAK4hC,WAAW/P,KAAK8H,EAAUoG,SAAoB,EAASyC,EAAsBppB,MAAM9O,IAC1H,EACAysB,EAAO0L,eAAiB,SAAwBC,GAC9C,OAAO1iC,KAAK2iC,gBAAgB1C,QAAQyC,GAAmBlvC,KAAI,SAAUO,GAInE,MAAO,CAHQA,EAAK4lC,SACV5lC,EAAKqlB,MACE9O,KAEnB,GACF,EACAysB,EAAO6L,aAAe,SAAsBjJ,EAAUa,EAAS/xB,GAC7D,IAAIo6B,GAAgB,QAAelJ,GAC/BmJ,EAAmB9iC,KAAKw/B,oBAAoBqD,GAChD,OAAO7iC,KAAK4hC,WAAWnkC,MAAMuC,KAAM8iC,GAAkBvI,QAAQC,EAAS/xB,EACxE,EACAsuB,EAAOgM,eAAiB,SAAwBL,EAAmBlI,EAAS/xB,GAC1E,IAAI8uB,EAASv3B,KACb,OAAO44B,EAAA,EAAcP,OAAM,WACzB,OAAOd,EAAOoL,gBAAgB1C,QAAQyC,GAAmBlvC,KAAI,SAAUQ,GACrE,IAAI2lC,EAAW3lC,EAAM2lC,SACrB,MAAO,CAACA,EAAUpC,EAAOqL,aAAajJ,EAAUa,EAAS/xB,GAC3D,GACF,GACF,EACAsuB,EAAOiM,cAAgB,SAAuBrJ,EAAUoG,GACtD,IAAIkD,EACJ,OAA6E,OAArEA,EAAyBjjC,KAAK4hC,WAAW/P,KAAK8H,EAAUoG,SAAoB,EAASkD,EAAuB7pB,KACtH,EACA2d,EAAOmM,cAAgB,SAAuBrD,EAAMC,GAClD,IACEC,GADsB,QAAgBF,EAAMC,GAChB,GAC1B8B,EAAa5hC,KAAK4hC,WACtBhJ,EAAA,EAAcP,OAAM,WAClBuJ,EAAW3B,QAAQF,GAASl0C,SAAQ,SAAU6xB,GAC5CkkB,EAAW16B,OAAOwW,EACpB,GACF,GACF,EACAqZ,EAAOoM,aAAe,SAAsBtD,EAAMC,EAAMsD,GACtD,IAAI3K,EAASz4B,KACTqjC,GAAoB,QAAgBxD,EAAMC,EAAMsD,GAClDrD,EAAUsD,EAAkB,GAC5B56B,EAAU46B,EAAkB,GAC1BzB,EAAa5hC,KAAK4hC,WAClB0B,GAAiB,OAAS,CAAC,EAAGvD,EAAS,CACzCwD,QAAQ,IAEV,OAAO3K,EAAA,EAAcP,OAAM,WAIzB,OAHAuJ,EAAW3B,QAAQF,GAASl0C,SAAQ,SAAU6xB,GAC5CA,EAAM6d,OACR,IACO9C,EAAO+K,eAAeF,EAAgB76B,EAC/C,GACF,EACAsuB,EAAO0M,cAAgB,SAAuB5D,EAAMC,EAAMsD,GACxD,IAAIjD,EAASngC,KACT0jC,GAAoB,QAAgB7D,EAAMC,EAAMsD,GAClDrD,EAAU2D,EAAkB,GAC5BC,EAAqBD,EAAkB,GACvCE,OAAuC,IAAvBD,EAAgC,CAAC,EAAIA,OACnB,IAAzBC,EAAclH,SACvBkH,EAAclH,QAAS,GAEzB,IAAI/Z,EAAWiW,EAAA,EAAcP,OAAM,WACjC,OAAO8H,EAAOyB,WAAW3B,QAAQF,GAASvsC,KAAI,SAAUkqB,GACtD,OAAOA,EAAMgE,OAAOkiB,EACtB,GACF,IACA,OAAO9hC,QAAQgK,IAAI6W,GAAU5W,KAAK,MAAME,MAAM,KAChD,EACA8qB,EAAO8M,kBAAoB,SAA2BhE,EAAMC,EAAMsD,GAChE,IAAI71B,EACFu2B,EACAC,EACA3D,EAASpgC,KACPgkC,GAAoB,QAAgBnE,EAAMC,EAAMsD,GAClDrD,EAAUiE,EAAkB,GAC5Bv7B,EAAUu7B,EAAkB,GAC1BV,GAAiB,OAAS,CAAC,EAAGvD,EAAS,CAGzCwD,OAAsH,OAA7Gh2B,EAA2D,OAAlDu2B,EAAwB/D,EAAQkE,eAAyBH,EAAwB/D,EAAQwD,SAAkBh2B,EAC7H22B,SAA+D,OAApDH,EAAwBhE,EAAQoE,kBAA2BJ,IAExE,OAAOnL,EAAA,EAAcP,OAAM,WAIzB,OAHA+H,EAAOwB,WAAW3B,QAAQF,GAASl0C,SAAQ,SAAU6xB,GACnDA,EAAMmf,YACR,IACOuD,EAAOoD,eAAeF,EAAgB76B,EAC/C,GACF,EACAsuB,EAAOyM,eAAiB,SAAwB3D,EAAMC,EAAMsD,GAC1D,IAAIgB,EAASpkC,KACTqkC,GAAoB,QAAgBxE,EAAMC,EAAMsD,GAClDrD,EAAUsE,EAAkB,GAC5B57B,EAAU47B,EAAkB,GAC1B1hB,EAAWiW,EAAA,EAAcP,OAAM,WACjC,OAAO+L,EAAOxC,WAAW3B,QAAQF,GAASvsC,KAAI,SAAUkqB,GACtD,OAAOA,EAAMof,WAAM1hC,GAAW,OAAS,CAAC,EAAGqN,EAAS,CAClD6H,KAAM,CACJg0B,YAAwB,MAAXvE,OAAkB,EAASA,EAAQuE,eAGtD,GACF,IACIphB,EAAUphB,QAAQgK,IAAI6W,GAAU5W,KAAK,MAIzC,OAHiB,MAAXtD,OAAkB,EAASA,EAAQ87B,gBACvCrhB,EAAUA,EAAQjX,MAAM,OAEnBiX,CACT,EACA6T,EAAOyN,WAAa,SAAoB3E,EAAMC,EAAMsD,GAClD,IAAIP,GAAgB,QAAehD,EAAMC,EAAMsD,GAC3CN,EAAmB9iC,KAAKw/B,oBAAoBqD,QAEV,IAA3BC,EAAiBxE,QAC1BwE,EAAiBxE,OAAQ,GAE3B,IAAI5gB,EAAQ1d,KAAK4hC,WAAWnkC,MAAMuC,KAAM8iC,GACxC,OAAOplB,EAAMoe,cAAcgH,EAAiB/G,WAAare,EAAMof,MAAMgG,GAAoBhhC,QAAQwD,QAAQoY,EAAMtE,MAAM9O,KACvH,EACAysB,EAAO0N,cAAgB,SAAuB5E,EAAMC,EAAMsD,GACxD,OAAOpjC,KAAKwkC,WAAW3E,EAAMC,EAAMsD,GAAMr3B,KAAK,MAAME,MAAM,KAC5D,EACA8qB,EAAO2N,mBAAqB,SAA4B7E,EAAMC,EAAMsD,GAClE,IAAIP,GAAgB,QAAehD,EAAMC,EAAMsD,GAE/C,OADAP,EAAchF,SDjLT,CACLC,QAAS,SAAiB1b,GACxBA,EAAQwb,QAAU,WAChB,IAAIX,EAAuBU,EAAwBgH,EAAwBC,EAAwBC,EAAqBC,EA4CpH5hB,EA3CAohB,EAAgE,OAAjDrH,EAAwB7a,EAAQ2a,eAA0F,OAAxDY,EAAyBV,EAAsB3sB,WAAzD,EAAkFqtB,EAAuB2G,YAChLS,EAA+D,OAAlDJ,EAAyBviB,EAAQ2a,eAA2F,OAAzD6H,EAAyBD,EAAuBr0B,WAA1D,EAAmFs0B,EAAuBG,UAChLtH,EAAyB,MAAbsH,OAAoB,EAASA,EAAUtH,UACnDuH,EAA4E,aAAzC,MAAbD,OAAoB,EAASA,EAAUE,WAC7DC,EAAgF,cAAzC,MAAbH,OAAoB,EAASA,EAAUE,WACjEE,GAA0D,OAA7CN,EAAsBziB,EAAQhJ,MAAM9O,WAAgB,EAASu6B,EAAoBpD,QAAU,GACxG2D,GAAgE,OAA9CN,EAAuB1iB,EAAQhJ,MAAM9O,WAAgB,EAASw6B,EAAqBO,aAAe,GACpH9H,GAAkB,UAClB+H,EAAiC,MAAnB/H,OAA0B,EAASA,EAAgBze,OACjEymB,EAAgBH,EAChBI,GAAY,EAEZlI,EAAUlb,EAAQ3Z,QAAQ60B,SAAW,WACvC,OAAOx7B,QAAQC,OAAO,kBACxB,EACI0jC,EAAgB,SAAuBhE,EAAOiE,EAAOC,EAAMC,GAE7D,OADAL,EAAgBK,EAAW,CAACF,GAAO3yC,OAAOwyC,GAAiB,GAAGxyC,OAAOwyC,EAAe,CAACG,IAC9EE,EAAW,CAACD,GAAM5yC,OAAO0uC,GAAS,GAAG1uC,OAAO0uC,EAAO,CAACkE,GAC7D,EAEIE,EAAY,SAAmBpE,EAAOqE,EAAQJ,EAAOE,GACvD,GAAIJ,EACF,OAAO1jC,QAAQC,OAAO,aAExB,QAAqB,IAAV2jC,IAA0BI,GAAUrE,EAAM91C,OACnD,OAAOmW,QAAQwD,QAAQm8B,GAEzB,IAAIjE,EAAiB,CACnB7D,SAAUvX,EAAQuX,SAClB7a,OAAQwmB,EACR7H,UAAWiI,EACXp1B,KAAM8R,EAAQ9R,MAEZy1B,EAAgBzI,EAAQE,GACxBta,EAAUphB,QAAQwD,QAAQygC,GAAeh6B,MAAK,SAAU45B,GAC1D,OAAOF,EAAchE,EAAOiE,EAAOC,EAAMC,EAC3C,IAKA,OAJI,QAAaG,KACI7iB,EACNxB,OAASqkB,EAAcrkB,QAE/BwB,CACT,EAGA,GAAKiiB,EAASx5C,OAGT,GAAIq5C,EAAoB,CAC3B,IAAIc,OAA8B,IAAdrI,EAChBiI,EAAQI,EAASrI,EAAY+D,EAAiBpf,EAAQ3Z,QAAS08B,GACnEjiB,EAAU2iB,EAAUV,EAAUW,EAAQJ,EACxC,MACK,GAAIR,EAAwB,CAC/B,IAAIc,OAA+B,IAAdvI,EACjBwI,EAASD,EAAUvI,EAAYiE,EAAqBtf,EAAQ3Z,QAAS08B,GACzEjiB,EAAU2iB,EAAUV,EAAUa,EAASC,GAAQ,EACjD,MAEE,WACEV,EAAgB,GAChB,IAAIO,OAAqD,IAArC1jB,EAAQ3Z,QAAQ+4B,iBAChC0E,GAAuB5B,IAAea,EAAS,IAAKb,EAAYa,EAAS,GAAI,EAAGA,GAEpFjiB,EAAUgjB,EAAuBL,EAAU,GAAIC,EAAQV,EAAc,IAAMtjC,QAAQwD,QAAQmgC,EAAc,GAAIL,EAAc,GAAID,EAAS,KAYxI,IAVA,IAAIgB,EAAQ,SAAe16C,GACzBy3B,EAAUA,EAAQnX,MAAK,SAAU01B,GAE/B,IAD0B6C,IAAea,EAAS15C,IAAK64C,EAAYa,EAAS15C,GAAIA,EAAG05C,GAC1D,CACvB,IAAIiB,EAAUN,EAASV,EAAc35C,GAAK+1C,EAAiBpf,EAAQ3Z,QAASg5B,GAC5E,OAAOoE,EAAUpE,EAAOqE,EAAQM,EAClC,CACA,OAAOtkC,QAAQwD,QAAQmgC,EAAchE,EAAO2D,EAAc35C,GAAI05C,EAAS15C,IACzE,GACF,EACSA,EAAI,EAAGA,EAAI05C,EAASx5C,OAAQF,IACnC06C,EAAM16C,EAET,CApBD,QAbAy3B,EAAU2iB,EAAU,IAmCtB,IAAIQ,EAAenjB,EAAQnX,MAAK,SAAU01B,GACxC,MAAO,CACLA,MAAOA,EACP4D,WAAYE,EAEhB,IASA,OARwBc,EACN3kB,OAAS,WACzB8jB,GAAY,EACO,MAAnBjI,GAAmCA,EAAgB5b,SAC/C,QAAauB,IACfA,EAAQxB,QAEZ,EACO2kB,CACT,CACF,GC6EOrmC,KAAKwkC,WAAW3B,EACzB,EACA9L,EAAOuP,sBAAwB,SAA+BzG,EAAMC,EAAMsD,GACxE,OAAOpjC,KAAK0kC,mBAAmB7E,EAAMC,EAAMsD,GAAMr3B,KAAK,MAAME,MAAM,KACpE,EACA8qB,EAAOwP,gBAAkB,WACvB,IAAIC,EAASxmC,KACT2iB,EAAWiW,EAAA,EAAcP,OAAM,WACjC,OAAOmO,EAAOjG,cAAcX,SAASpsC,KAAI,SAAUkT,GACjD,OAAOA,EAASgb,QAClB,GACF,IACA,OAAO5f,QAAQgK,IAAI6W,GAAU5W,KAAK,MAAME,MAAM,KAChD,EACA8qB,EAAOuK,sBAAwB,WAC7B,OAAOthC,KAAKymC,mBAAmBnF,uBACjC,EACAvK,EAAO8J,gBAAkB,SAAyBp4B,GAChD,OAAOzI,KAAKugC,cAAc9iC,MAAMuC,KAAMyI,GAASi4B,SACjD,EACA3J,EAAO4L,cAAgB,WACrB,OAAO3iC,KAAK4hC,UACd,EACA7K,EAAO0P,iBAAmB,WACxB,OAAOzmC,KAAKugC,aACd,EACAxJ,EAAO2P,kBAAoB,WACzB,OAAO1mC,KAAKu5B,cACd,EACAxC,EAAOmD,kBAAoB,SAA2BzxB,GACpDzI,KAAKu5B,eAAiB9wB,CACxB,EACAsuB,EAAO4P,iBAAmB,SAA0BhN,EAAUlxB,GAC5D,IAAItN,EAAS6E,KAAK6hC,cAAchQ,MAAK,SAAU/7B,GAC7C,OAAO,QAAa6jC,MAAc,QAAa7jC,EAAE6jC,SACnD,IACIx+B,EACFA,EAAOo+B,eAAiB9wB,EAExBzI,KAAK6hC,cAAcx2C,KAAK,CACtBsuC,SAAUA,EACVJ,eAAgB9wB,GAGtB,EACAsuB,EAAO0I,iBAAmB,SAA0B9F,GAClD,IAAIiN,EACJ,OAAOjN,EAEA,OAFYiN,EAAwB5mC,KAAK6hC,cAAchQ,MAAK,SAAU/7B,GAC3E,OAAO,QAAgB6jC,EAAU7jC,EAAE6jC,SACrC,UAAc,EAASiN,EAAsBrN,oBAAiBn+B,CAChE,EACA27B,EAAO8P,oBAAsB,SAA6BzF,EAAa34B,GACrE,IAAItN,EAAS6E,KAAK8hC,iBAAiBjQ,MAAK,SAAU/7B,GAChD,OAAO,QAAasrC,MAAiB,QAAatrC,EAAEsrC,YACtD,IACIjmC,EACFA,EAAOo+B,eAAiB9wB,EAExBzI,KAAK8hC,iBAAiBz2C,KAAK,CACzB+1C,YAAaA,EACb7H,eAAgB9wB,GAGtB,EACAsuB,EAAOsK,oBAAsB,SAA6BD,GACxD,IAAI0F,EACJ,OAAO1F,EAEA,OAFe0F,EAAwB9mC,KAAK8hC,iBAAiBjQ,MAAK,SAAU/7B,GACjF,OAAO,QAAgBsrC,EAAatrC,EAAEsrC,YACxC,UAAc,EAAS0F,EAAsBvN,oBAAiBn+B,CAChE,EACA27B,EAAOyI,oBAAsB,SAA6B/2B,GACxD,GAAe,MAAXA,OAAkB,EAASA,EAAQs+B,WACrC,OAAOt+B,EAET,IAAIq6B,GAAmB,OAAS,CAAC,EAAG9iC,KAAKu5B,eAAe6F,QAASp/B,KAAKy/B,iBAA4B,MAAXh3B,OAAkB,EAASA,EAAQkxB,UAAWlxB,EAAS,CAC5Is+B,YAAY,IAKd,OAHKjE,EAAiBlJ,WAAakJ,EAAiBnJ,WAClDmJ,EAAiBlJ,WAAY,QAAsBkJ,EAAiBnJ,SAAUmJ,IAEzEA,CACT,EACA/L,EAAOiQ,4BAA8B,SAAqCv+B,GACxE,OAAOzI,KAAKw/B,oBAAoB/2B,EAClC,EACAsuB,EAAOoK,uBAAyB,SAAgC14B,GAC9D,OAAe,MAAXA,OAAkB,EAASA,EAAQs+B,YAC9Bt+B,GAEF,OAAS,CAAC,EAAGzI,KAAKu5B,eAAezxB,UAAW9H,KAAKqhC,oBAA+B,MAAX54B,OAAkB,EAASA,EAAQ24B,aAAc34B,EAAS,CACpIs+B,YAAY,GAEhB,EACAhQ,EAAO4I,MAAQ,WACb3/B,KAAK4hC,WAAWjC,QAChB3/B,KAAKugC,cAAcZ,OACrB,EACOgC,CACT,CA9QsC,E,uJCNtC,SAASsF,EAAkBzG,GACzB,OAAOlqC,KAAK4wC,IAAI,IAAO5wC,KAAK6wC,IAAI,EAAG3G,GAAe,IACpD,CACO,SAAS4G,EAAat6C,GAC3B,MAA0D,mBAAlC,MAATA,OAAgB,EAASA,EAAM40B,OAChD,CACO,IAAI2lB,EAAiB,SAAwB5+B,GAClDzI,KAAK08B,OAAoB,MAAXj0B,OAAkB,EAASA,EAAQi0B,OACjD18B,KAAKs7B,OAAoB,MAAX7yB,OAAkB,EAASA,EAAQ6yB,MACnD,EACO,SAASgM,EAAiBx6C,GAC/B,OAAOA,aAAiBu6C,CAC1B,CAEO,IAAIE,EAAU,SAAiBhyC,GACpC,IAEIiyC,EACAC,EACAC,EACAC,EALAvnC,EAAQJ,KACR28B,GAAc,EAKlB38B,KAAK2hB,MAAQpsB,EAAOosB,MACpB3hB,KAAK0hB,OAAS,SAAUkiB,GACtB,OAAmB,MAAZ4D,OAAmB,EAASA,EAAS5D,EAC9C,EACA5jC,KAAK28B,YAAc,WACjBA,GAAc,CAChB,EACA38B,KAAKq9B,cAAgB,WACnBV,GAAc,CAChB,EACA38B,KAAKm8B,SAAW,WACd,OAAqB,MAAdsL,OAAqB,EAASA,GACvC,EACAznC,KAAKwgC,aAAe,EACpBxgC,KAAKg/B,UAAW,EAChBh/B,KAAK4nC,YAAa,EAClB5nC,KAAKy8B,uBAAwB,EAC7Bz8B,KAAKkjB,QAAU,IAAIphB,SAAQ,SAAU+lC,EAAcC,GACjDJ,EAAiBG,EACjBF,EAAgBG,CAClB,IACA,IAAIxiC,EAAU,SAAiBxY,GACxBsT,EAAMwnC,aACTxnC,EAAMwnC,YAAa,EACC,MAApBryC,EAAO0oC,WAA6B1oC,EAAO0oC,UAAUnxC,GACvC,MAAd26C,GAA8BA,IAC9BC,EAAe56C,GAEnB,EACIiV,EAAS,SAAgBjV,GACtBsT,EAAMwnC,aACTxnC,EAAMwnC,YAAa,EACD,MAAlBryC,EAAO2oC,SAA2B3oC,EAAO2oC,QAAQpxC,GACnC,MAAd26C,GAA8BA,IAC9BE,EAAc76C,GAElB,GAaU,SAASi7C,IAEjB,IAAI3nC,EAAMwnC,WAAV,CAGA,IAAII,EAEJ,IACEA,EAAiBzyC,EAAOwF,IAC1B,CAAE,MAAOyK,GACPwiC,EAAiBlmC,QAAQC,OAAOyD,EAClC,CAEAgiC,EAAW,SAAkB5D,GAC3B,IAAKxjC,EAAMwnC,aACT7lC,EAAO,IAAIslC,EAAezD,IACX,MAAfxjC,EAAMuhB,OAAyBvhB,EAAMuhB,QAEjCylB,EAAaY,IACf,IACEA,EAAetmB,QACjB,CAAE,MAAOumB,GAAU,CAGzB,EAEA7nC,EAAMq8B,sBAAwB2K,EAAaY,GAC3ClmC,QAAQwD,QAAQ0iC,GAAgBj8B,KAAKzG,GAAS2G,OAAM,SAAUzG,GAC5D,IAAI0iC,EAAeC,EAGnB,IAAI/nC,EAAMwnC,WAAV,CAIA,IAAItJ,EAA0C,OAAjC4J,EAAgB3yC,EAAO+oC,OAAiB4J,EAAgB,EACjE3J,EAAyD,OAA3C4J,EAAqB5yC,EAAOgpC,YAAsB4J,EAAqBlB,EACrFmB,EAA8B,mBAAf7J,EAA4BA,EAAWn+B,EAAMogC,aAAch7B,GAAS+4B,EACnF8J,GAAwB,IAAV/J,GAAmC,iBAAVA,GAAsBl+B,EAAMogC,aAAelC,GAA0B,mBAAVA,GAAwBA,EAAMl+B,EAAMogC,aAAch7B,IACpJm3B,GAAgB0L,GAKpBjoC,EAAMogC,eAEW,MAAjBjrC,EAAO4oC,QAA0B5oC,EAAO4oC,OAAO/9B,EAAMogC,aAAch7B,IAEnE,QAAM4iC,GACLr8B,MAAK,WACJ,IAAK,IAAa2rB,cAAgB,IAAcwB,WAC9C,OA9DC,IAAIp3B,SAAQ,SAAUwmC,GAC3Bb,EAAaa,EACbloC,EAAM4+B,UAAW,EACC,MAAlBzpC,EAAO6oC,SAA2B7oC,EAAO6oC,SAC3C,IAAGryB,MAAK,WACN07B,OAAarsC,EACbgF,EAAM4+B,UAAW,EACI,MAArBzpC,EAAO8oC,YAA8B9oC,EAAO8oC,YAC9C,GAwDE,IAAGtyB,MAAK,WACF4wB,EACF56B,EAAOyD,GAEPuiC,GAEJ,KAlBEhmC,EAAOyD,EART,CA2BF,GAxDA,CAyDF,CAEAuiC,EACF,C,mECzIO,IAAIQ,EAA4B,WACrC,SAASA,IACPvoC,KAAKuZ,UAAY,EACnB,CACA,IAAIwd,EAASwR,EAAa/7C,UAsB1B,OArBAuqC,EAAOnV,UAAY,SAAmB/mB,GACpC,IAAIuF,EAAQJ,KACR+H,EAAWlN,GAAY,WAE3B,EAGA,OAFAmF,KAAKuZ,UAAUluB,KAAK0c,GACpB/H,KAAKg3B,cACE,WACL52B,EAAMmZ,UAAYnZ,EAAMmZ,UAAUtuB,QAAO,SAAU6K,GACjD,OAAOA,IAAMiS,CACf,IACA3H,EAAM+2B,eACR,CACF,EACAJ,EAAOM,aAAe,WACpB,OAAOr3B,KAAKuZ,UAAU5tB,OAAS,CACjC,EACAorC,EAAOC,YAAc,WACrB,EACAD,EAAOI,cAAgB,WACvB,EACOoR,CACT,CA3BuC,E,6fCG5BC,EAA6B,oBAAX/4C,OACtB,SAASP,IAEhB,CACO,SAASu5C,EAAiBjO,EAASjP,GACxC,MAA0B,mBAAZiP,EAAyBA,EAAQjP,GAASiP,CAC1D,CACO,SAASkO,EAAe57C,GAC7B,MAAwB,iBAAVA,GAAsBA,GAAS,GAAKA,IAAU67C,GAC9D,CACO,SAASC,EAAoB97C,GAClC,OAAOG,MAAMC,QAAQJ,GAASA,EAAQ,CAACA,EACzC,CAWO,SAAS+7C,EAAe7N,EAAWe,GACxC,OAAOzlC,KAAKmmB,IAAIue,GAAae,GAAa,GAAK7hB,KAAKC,MAAO,EAC7D,CACO,SAAS2uB,EAAejJ,EAAMC,EAAMsD,GACzC,OAAK2F,EAAWlJ,GAGI,mBAATC,GACF,OAAS,CAAC,EAAGsD,EAAM,CACxBzJ,SAAUkG,EACVvC,QAASwC,KAGN,OAAS,CAAC,EAAGA,EAAM,CACxBnG,SAAUkG,IATHA,CAWX,CAoBO,SAASmJ,EAAgBnJ,EAAMC,EAAMsD,GAC1C,OAAO2F,EAAWlJ,GAAQ,EAAC,OAAS,CAAC,EAAGC,EAAM,CAC5CnG,SAAUkG,IACRuD,GAAQ,CAACvD,GAAQ,CAAC,EAAGC,EAC3B,CAkBO,SAASmJ,EAAWlJ,EAASriB,GAClC,IAAI6lB,EAASxD,EAAQwD,OACnBvD,EAAQD,EAAQC,MAChBqC,EAAWtC,EAAQsC,SACnB6B,EAAWnE,EAAQmE,SACnBgF,EAAYnJ,EAAQmJ,UACpBvP,EAAWoG,EAAQpG,SACnBwP,EAAQpJ,EAAQoJ,MAClB,GAAIJ,EAAWpP,GACb,GAAIqG,GACF,GAAItiB,EAAMkc,YAAcwP,EAAsBzP,EAAUjc,EAAMjV,SAC5D,OAAO,OAEJ,IAAK4gC,EAAgB3rB,EAAMic,SAAUA,GAC1C,OAAO,EAGX,IAAI2P,EA7BC,SAA8B/F,EAAQW,GAC3C,OAAe,IAAXX,IAAgC,IAAbW,GAA+B,MAAVX,GAA8B,MAAZW,EACrD,OACa,IAAXX,IAAiC,IAAbW,EACtB,QAIkB,MAAVX,EAAiBA,GAAUW,GACxB,SAAW,UAEjC,CAkB0BqF,CAAqBhG,EAAQW,GACrD,GAA0B,SAAtBoF,EACF,OAAO,EACF,GAA0B,QAAtBA,EAA6B,CACtC,IAAI9N,EAAW9d,EAAM8d,WACrB,GAA0B,WAAtB8N,IAAmC9N,EACrC,OAAO,EAET,GAA0B,aAAtB8N,GAAoC9N,EACtC,OAAO,CAEX,CACA,OAAqB,kBAAV2N,GAAuBzrB,EAAMie,YAAcwN,MAG9B,kBAAb9G,GAA0B3kB,EAAM4c,eAAiB+H,MAGxD6G,IAAcA,EAAUxrB,IAI9B,CACO,SAAS8rB,EAAczJ,EAASr5B,GACrC,IAAIs5B,EAAQD,EAAQC,MAClBqC,EAAWtC,EAAQsC,SACnB6G,EAAYnJ,EAAQmJ,UACpB9H,EAAcrB,EAAQqB,YACxB,GAAI2H,EAAW3H,GAAc,CAC3B,IAAK16B,EAAS+B,QAAQ24B,YACpB,OAAO,EAET,GAAIpB,GACF,GAAIyJ,EAAa/iC,EAAS+B,QAAQ24B,eAAiBqI,EAAarI,GAC9D,OAAO,OAEJ,IAAKiI,EAAgB3iC,EAAS+B,QAAQ24B,YAAaA,GACxD,OAAO,CAEX,CACA,OAAwB,kBAAbiB,GAAoD,YAA1B37B,EAAS0S,MAAM6G,SAAyBoiB,MAGzE6G,IAAcA,EAAUxiC,GAI9B,CACO,SAAS0iC,EAAsBzP,EAAUlxB,GAE9C,QADyB,MAAXA,OAAkB,EAASA,EAAQihC,iBAAmBD,GACtD9P,EAChB,CAKO,SAAS8P,EAAa9P,GAC3B,IAO8B7sC,EAP1B68C,EAAUf,EAAoBjP,GAClC,OAM8B7sC,EANP68C,EAOhBrhB,KAAKC,UAAUz7B,GAAO,SAAUiuB,EAAG7mB,GACxC,OAAO2yB,EAAc3yB,GAAOpJ,OAAOD,KAAKqJ,GAAKspB,OAAOrmB,QAAO,SAAUgE,EAAQrP,GAE3E,OADAqP,EAAOrP,GAAOoI,EAAIpI,GACXqP,CACT,GAAG,CAAC,GAAKjH,CACX,GAXF,CAiBO,SAASm1C,EAAgB/tC,EAAGC,GACjC,OAAOquC,EAAiBhB,EAAoBttC,GAAIstC,EAAoBrtC,GACtE,CAKO,SAASquC,EAAiBtuC,EAAGC,GAClC,OAAID,IAAMC,UAGCD,UAAaC,OAGpBD,IAAKC,GAAkB,iBAAND,GAA+B,iBAANC,KACpCzQ,OAAOD,KAAK0Q,GAAGiE,MAAK,SAAU1T,GACpC,OAAQ89C,EAAiBtuC,EAAExP,GAAMyP,EAAEzP,GACrC,IAGJ,CAOO,SAAS+9C,EAAiBvuC,EAAGC,GAClC,GAAID,IAAMC,EACR,OAAOD,EAET,IAAI7E,EAAQxJ,MAAMC,QAAQoO,IAAMrO,MAAMC,QAAQqO,GAC9C,GAAI9E,GAASowB,EAAcvrB,IAAMurB,EAActrB,GAAI,CAMjD,IALA,IAAIuuC,EAAQrzC,EAAQ6E,EAAE3P,OAASb,OAAOD,KAAKyQ,GAAG3P,OAC1Co+C,EAAStzC,EAAQ8E,EAAIzQ,OAAOD,KAAK0Q,GACjCyuC,EAAQD,EAAOp+C,OACfs+C,EAAOxzC,EAAQ,GAAK,CAAC,EACrByzC,EAAa,EACRz+C,EAAI,EAAGA,EAAIu+C,EAAOv+C,IAAK,CAC9B,IAAIK,EAAM2K,EAAQhL,EAAIs+C,EAAOt+C,GAC7Bw+C,EAAKn+C,GAAO+9C,EAAiBvuC,EAAExP,GAAMyP,EAAEzP,IACnCm+C,EAAKn+C,KAASwP,EAAExP,IAClBo+C,GAEJ,CACA,OAAOJ,IAAUE,GAASE,IAAeJ,EAAQxuC,EAAI2uC,CACvD,CACA,OAAO1uC,CACT,CAKO,SAAS4uC,EAAoB7uC,EAAGC,GACrC,GAAID,IAAMC,GAAKA,IAAMD,EACnB,OAAO,EAET,IAAK,IAAIxP,KAAOwP,EACd,GAAIA,EAAExP,KAASyP,EAAEzP,GACf,OAAO,EAGX,OAAO,CACT,CAEO,SAAS+6B,EAAcp4B,GAC5B,IAAK27C,EAAmB37C,GACtB,OAAO,EAGT,IAAI47C,EAAO57C,EAAElC,YACb,QAAoB,IAAT89C,EACT,OAAO,EAGT,IAAIC,EAAOD,EAAK79C,UAChB,QAAK49C,EAAmBE,MAInBA,EAAKhzB,eAAe,gBAK3B,CACA,SAAS8yB,EAAmB37C,GAC1B,MAA6C,oBAAtC3D,OAAO0B,UAAUoC,SAASlB,KAAKe,EACxC,CACO,SAASs6C,EAAWj8C,GACzB,MAAwB,iBAAVA,GAAsBG,MAAMC,QAAQJ,EACpD,CAIO,SAASy9C,EAAMjqB,GACpB,OAAO,IAAIxe,SAAQ,SAAUwD,GAC3BnD,WAAWmD,EAASgb,EACtB,GACF,CAMO,SAASkqB,EAAkBziC,GAChCjG,QAAQwD,UAAUyG,KAAKhE,GAAUkE,OAAM,SAAUzG,GAC/C,OAAOrD,YAAW,WAChB,MAAMqD,CACR,GACF,GACF,CACO,SAASilC,IACd,GAA+B,mBAApBC,gBACT,OAAO,IAAIA,eAEf,C,+fCpSWC,E,QAA0B,wBCCrC/R,EAAA,EAAcD,uBAAuBgS,G,cCF1B,EAASplC,SCEpB,OAAU,G,cCDNqlC,EAA8B,qBAAoBxvC,GAClDyvC,EAAyC,iBAAoB,GAOjE,SAASC,EAAsBC,GAC7B,OAAIA,GAAoC,oBAAXt7C,QACtBA,OAAOu7C,0BACVv7C,OAAOu7C,wBAA0BJ,GAE5Bn7C,OAAOu7C,yBAETJ,CACT,CACO,IAAIK,EAAiB,WAC1B,IAAIC,EAAc,aAAiBJ,EAAsB,aAAiBD,KAC1E,IAAKK,EACH,MAAM,IAAIlnB,MAAM,0DAElB,OAAOknB,CACT,EACWC,EAAsB,SAA6Bp3C,GAC5D,IAAIurC,EAASvrC,EAAKurC,OAChB8L,EAAsBr3C,EAAKg3C,eAC3BA,OAAyC,IAAxBK,GAAyCA,EAC1DlxC,EAAWnG,EAAKmG,SAClB,aAAgB,WAEd,OADAolC,EAAOyC,QACA,WACLzC,EAAO4C,SACT,CACF,GAAG,CAAC5C,IACJ,IAAI+L,EAAUP,EAAsBC,GACpC,OAAoB,gBAAoBF,EAA0BS,SAAU,CAC1Ex+C,MAAOi+C,GACO,gBAAoBM,EAAQC,SAAU,CACpDx+C,MAAOwyC,GACNplC,GACL,E,2DClCWqxC,EAA6B,SAAU7U,GAEhD,SAAS6U,EAAcjM,EAAQ72B,GAC7B,IAAIrI,EAQJ,OAPAA,EAAQs2B,EAAchpC,KAAKsS,OAASA,MAC9Bs/B,OAASA,EACfl/B,EAAMqI,QAAUA,EAChBrI,EAAMorC,aAAe,GACrBprC,EAAMqrC,YAAc,KACpBrrC,EAAMsrC,cACNtrC,EAAMo5B,WAAW/wB,GACVrI,CACT,EAXA,OAAemrC,EAAe7U,GAY9B,IAAIK,EAASwU,EAAc/+C,UA0Z3B,OAzZAuqC,EAAO2U,YAAc,WACnB1rC,KAAKkH,OAASlH,KAAKkH,OAAOxT,KAAKsM,MAC/BA,KAAKk8B,QAAUl8B,KAAKk8B,QAAQxoC,KAAKsM,KACnC,EACA+2B,EAAOC,YAAc,WACW,IAA1Bh3B,KAAKuZ,UAAU5tB,SACjBqU,KAAK2rC,aAAarP,YAAYt8B,MAC1B4rC,EAAmB5rC,KAAK2rC,aAAc3rC,KAAKyI,UAC7CzI,KAAK6rC,eAEP7rC,KAAK8rC,eAET,EACA/U,EAAOI,cAAgB,WAChBn3B,KAAKuZ,UAAU5tB,QAClBqU,KAAKq7B,SAET,EACAtE,EAAOsF,uBAAyB,WAC9B,OAAO0P,EAAc/rC,KAAK2rC,aAAc3rC,KAAKyI,QAASzI,KAAKyI,QAAQujC,mBACrE,EACAjV,EAAOkF,yBAA2B,WAChC,OAAO8P,EAAc/rC,KAAK2rC,aAAc3rC,KAAKyI,QAASzI,KAAKyI,QAAQwjC,qBACrE,EACAlV,EAAOsE,QAAU,WACfr7B,KAAKuZ,UAAY,GACjBvZ,KAAKksC,cACLlsC,KAAK2rC,aAAanP,eAAex8B,KACnC,EACA+2B,EAAOyC,WAAa,SAAoB/wB,EAAS0jC,GAC/C,IAAIC,EAAcpsC,KAAKyI,QACnB4jC,EAAYrsC,KAAK2rC,aAErB,GADA3rC,KAAKyI,QAAUzI,KAAKs/B,OAAO0H,4BAA4Bv+B,QACnB,IAAzBzI,KAAKyI,QAAQizB,SAA2D,kBAAzB17B,KAAKyI,QAAQizB,QACrE,MAAM,IAAI1X,MAAM,oCAGbhkB,KAAKyI,QAAQkxB,WAChB35B,KAAKyI,QAAQkxB,SAAWyS,EAAYzS,UAEtC35B,KAAKssC,cACL,IAAIC,EAAUvsC,KAAKq3B,eAEfkV,GAAWC,EAAsBxsC,KAAK2rC,aAAcU,EAAWrsC,KAAKyI,QAAS2jC,IAC/EpsC,KAAK6rC,eAGP7rC,KAAKysC,aAAaN,IAEdI,GAAYvsC,KAAK2rC,eAAiBU,GAAarsC,KAAKyI,QAAQizB,UAAY0Q,EAAY1Q,SAAW17B,KAAKyI,QAAQszB,YAAcqQ,EAAYrQ,WACxI/7B,KAAK0sC,qBAEP,IAAIC,EAAsB3sC,KAAK4sC,0BAE3BL,GAAYvsC,KAAK2rC,eAAiBU,GAAarsC,KAAKyI,QAAQizB,UAAY0Q,EAAY1Q,SAAWiR,IAAwB3sC,KAAK6sC,wBAC9H7sC,KAAK8sC,sBAAsBH,EAE/B,EACA5V,EAAOgW,oBAAsB,SAA6BtkC,GACxD,IAAIq6B,EAAmB9iC,KAAKs/B,OAAO0H,4BAA4Bv+B,GAC3DiV,EAAQ1d,KAAKs/B,OAAOqD,gBAAgBllC,MAAMuC,KAAKs/B,OAAQwD,GAC3D,OAAO9iC,KAAKgtC,aAAatvB,EAAOolB,EAClC,EACA/L,EAAO8E,iBAAmB,WACxB,OAAO77B,KAAKitC,aACd,EACAlW,EAAOmW,YAAc,SAAqB/xC,EAAQ2nC,GAChD,IAAIvL,EAASv3B,KACTmtC,EAAgB,CAAC,EACjBC,EAAY,SAAmBthD,GAC5ByrC,EAAOiU,aAAajsC,SAASzT,IAChCyrC,EAAOiU,aAAangD,KAAKS,EAE7B,EAcA,OAbAhB,OAAOD,KAAKsQ,GAAQtP,SAAQ,SAAUC,GACpChB,OAAOoB,eAAeihD,EAAerhD,EAAK,CACxCc,cAAc,EACdxB,YAAY,EACZ+G,IAAK,WAEH,OADAi7C,EAAUthD,GACHqP,EAAOrP,EAChB,GAEJ,KACIg3C,EAAiBuK,kBAAoBvK,EAAiBwK,WACxDF,EAAU,SAELD,CACT,EACApW,EAAOwW,cAAgB,SAAuB9kC,GAC5C,IAAIgwB,EAASz4B,KACb,OAAO,IAAI8B,SAAQ,SAAUwD,EAASvD,GACpC,IAAI8c,EAAc4Z,EAAO7W,WAAU,SAAUzmB,GACtCA,EAAOm/B,aACVzb,IACI1jB,EAAOqyC,UAAuB,MAAX/kC,OAAkB,EAASA,EAAQ87B,cACxDxiC,EAAO5G,EAAOqK,OAEdF,EAAQnK,GAGd,GACF,GACF,EACA47B,EAAO0W,gBAAkB,WACvB,OAAOztC,KAAK2rC,YACd,EACA5U,EAAO7vB,OAAS,WACdlH,KAAKs/B,OAAOqD,gBAAgBz7B,OAAOlH,KAAK2rC,aAC1C,EACA5U,EAAOmF,QAAU,SAAiBzzB,GAChC,OAAOzI,KAAK88B,OAAM,OAAS,CAAC,EAAGr0B,EAAS,CACtC6H,KAAM,CACJg0B,YAAwB,MAAX77B,OAAkB,EAASA,EAAQ67B,eAGtD,EACAvN,EAAO2W,gBAAkB,SAAyBjlC,GAChD,IAAI03B,EAASngC,KACT8iC,EAAmB9iC,KAAKs/B,OAAO0H,4BAA4Bv+B,GAC3DiV,EAAQ1d,KAAKs/B,OAAOqD,gBAAgBllC,MAAMuC,KAAKs/B,OAAQwD,GAC3D,OAAOplB,EAAMof,QAAQ/wB,MAAK,WACxB,OAAOo0B,EAAO6M,aAAatvB,EAAOolB,EACpC,GACF,EACA/L,EAAO+F,MAAQ,SAAeC,GAC5B,IAAIqD,EAASpgC,KACb,OAAOA,KAAK6rC,aAAa9O,GAAchxB,MAAK,WAE1C,OADAq0B,EAAOqM,eACArM,EAAO6M,aAChB,GACF,EACAlW,EAAO8U,aAAe,SAAsB9O,GAE1C/8B,KAAKssC,cAEL,IAAIppB,EAAUljB,KAAK2rC,aAAa7O,MAAM98B,KAAKyI,QAASs0B,GAIpD,OAHsB,MAAhBA,OAAuB,EAASA,EAAawH,gBACjDrhB,EAAUA,EAAQjX,MAAM,OAEnBiX,CACT,EACA6T,EAAO2V,mBAAqB,WAC1B,IAAItI,EAASpkC,KAEb,GADAA,KAAK2tC,qBACD,OAAY3tC,KAAKitC,cAActR,UAAY,QAAe37B,KAAKyI,QAAQszB,WAA3E,CAGA,IAGIzb,GAHO,QAAetgB,KAAKitC,cAAclS,cAAe/6B,KAAKyI,QAAQszB,WAGpD,EACrB/7B,KAAK4tC,eAAiBzrC,YAAW,WAC1BiiC,EAAO6I,cAActR,SACxByI,EAAOqI,cAEX,GAAGnsB,EATH,CAUF,EACAyW,EAAO6V,uBAAyB,WAC9B,IAAIiB,EACJ,MAA+C,mBAAjC7tC,KAAKyI,QAAQqlC,gBAAiC9tC,KAAKyI,QAAQqlC,gBAAgB9tC,KAAKitC,cAAc3iC,KAAMtK,KAAK2rC,cAA0E,OAAzDkC,EAAwB7tC,KAAKyI,QAAQqlC,kBAA2BD,CAC1M,EACA9W,EAAO+V,sBAAwB,SAA+BiB,GAC5D,IAAIvH,EAASxmC,KACbA,KAAKguC,uBACLhuC,KAAK6sC,uBAAyBkB,GAC1B,OAAqC,IAAzB/tC,KAAKyI,QAAQizB,UAAsB,QAAe17B,KAAK6sC,yBAA2D,IAAhC7sC,KAAK6sC,yBAGvG7sC,KAAKiuC,kBAAoBC,aAAY,YAC/B1H,EAAO/9B,QAAQ0lC,6BAA+B1X,EAAA,EAAaiB,cAC7D8O,EAAOqF,cAEX,GAAG7rC,KAAK6sC,wBACV,EACA9V,EAAO+U,aAAe,WACpB9rC,KAAK0sC,qBACL1sC,KAAK8sC,sBAAsB9sC,KAAK4sC,yBAClC,EACA7V,EAAOmV,YAAc,WACnBlsC,KAAK2tC,oBACL3tC,KAAKguC,sBACP,EACAjX,EAAO4W,kBAAoB,WACrB3tC,KAAK4tC,iBACPjc,aAAa3xB,KAAK4tC,gBAClB5tC,KAAK4tC,oBAAiBxyC,EAE1B,EACA27B,EAAOiX,qBAAuB,WACxBhuC,KAAKiuC,oBACPG,cAAcpuC,KAAKiuC,mBACnBjuC,KAAKiuC,uBAAoB7yC,EAE7B,EACA27B,EAAOiW,aAAe,SAAsBtvB,EAAOjV,GACjD,IAgBI6B,EAhBA+hC,EAAYrsC,KAAK2rC,aACjBS,EAAcpsC,KAAKyI,QACnB4lC,EAAaruC,KAAKitC,cAClBqB,EAAkBtuC,KAAKuuC,mBACvBC,EAAoBxuC,KAAKyuC,qBACzBC,EAAchxB,IAAU2uB,EACxBsC,EAAoBD,EAAchxB,EAAMtE,MAAQpZ,KAAK4uC,yBACrDC,EAAkBH,EAAc1uC,KAAKitC,cAAgBjtC,KAAK8uC,oBAC1D11B,EAAQsE,EAAMtE,MACd2hB,EAAgB3hB,EAAM2hB,cACxBv1B,EAAQ4T,EAAM5T,MACds5B,EAAiB1lB,EAAM0lB,eACvBxE,EAAalhB,EAAMkhB,WACnBra,EAAS7G,EAAM6G,OACb8uB,GAAiB,EACjBC,GAAoB,EAGxB,GAAIvmC,EAAQwmC,kBAAmB,CAC7B,IAAI1C,EAAUvsC,KAAKq3B,eACf6X,GAAgB3C,GAAWX,EAAmBluB,EAAOjV,GACrD0mC,EAAkB5C,GAAWC,EAAsB9uB,EAAO2uB,EAAW5jC,EAAS2jC,IAC9E8C,GAAgBC,KAClB7U,GAAa,EACRS,IACH9a,EAAS,WAGf,CAEA,GAAIxX,EAAQ2mC,mBAAqBh2B,EAAMwlB,kBAAuC,MAAnBiQ,OAA0B,EAASA,EAAgBQ,YAAyB,UAAXpvB,EAC1H3V,EAAOukC,EAAgBvkC,KACvBywB,EAAgB8T,EAAgB9T,cAChC9a,EAAS4uB,EAAgB5uB,OACzB8uB,GAAiB,OAEd,GAAItmC,EAAQ6mC,aAAgC,IAAfl2B,EAAM9O,KAEtC,GAAI+jC,GAAcj1B,EAAM9O,QAA6B,MAAnBgkC,OAA0B,EAASA,EAAgBhkC,OAAS7B,EAAQ6mC,SAAWtvC,KAAKuvC,SACpHjlC,EAAOtK,KAAKwvC,kBAEZ,IACExvC,KAAKuvC,SAAW9mC,EAAQ6mC,OACxBhlC,EAAO7B,EAAQ6mC,OAAOl2B,EAAM9O,OACM,IAA9B7B,EAAQoyB,oBACVvwB,GAAO,QAA+B,MAAd+jC,OAAqB,EAASA,EAAW/jC,KAAMA,IAEzEtK,KAAKwvC,aAAellC,EACpBtK,KAAKyrC,YAAc,IACrB,CAAE,MAAOA,IACP,SAAYjmC,MAAMimC,GAClBzrC,KAAKyrC,YAAcA,CACrB,MAIFnhC,EAAO8O,EAAM9O,KAGf,QAAuC,IAA5B7B,EAAQgnC,sBAAmD,IAATnlC,IAAoC,YAAX2V,GAAmC,SAAXA,GAAoB,CAChI,IAAIwvB,EAEJ,IAAmB,MAAdpB,OAAqB,EAASA,EAAWW,oBAAsBvmC,EAAQgnC,mBAA0C,MAArBjB,OAA4B,EAASA,EAAkBiB,iBACtJA,EAAkBpB,EAAW/jC,UAG7B,GADAmlC,EAAqD,mBAA5BhnC,EAAQgnC,gBAAiChnC,EAAQgnC,kBAAoBhnC,EAAQgnC,gBAClGhnC,EAAQ6mC,aAAqC,IAApBG,EAC3B,IACEA,EAAkBhnC,EAAQ6mC,OAAOG,IACC,IAA9BhnC,EAAQoyB,oBACV4U,GAAkB,QAA+B,MAAdpB,OAAqB,EAASA,EAAW/jC,KAAMmlC,IAEpFzvC,KAAKyrC,YAAc,IACrB,CAAE,MAAOA,IACP,SAAYjmC,MAAMimC,GAClBzrC,KAAKyrC,YAAcA,CACrB,MAG2B,IAApBgE,IACTxvB,EAAS,UACT3V,EAAOmlC,EACPT,GAAoB,EAExB,CA+BA,OA9BIhvC,KAAKyrC,cACPjmC,EAAQxF,KAAKyrC,YACbnhC,EAAOtK,KAAKwvC,aACZ1Q,EAAiB5kB,KAAKC,MACtB8F,EAAS,SAEE,CACXA,OAAQA,EACRyvB,UAAsB,YAAXzvB,EACXovB,UAAsB,YAAXpvB,EACXutB,QAAoB,UAAXvtB,EACT0vB,OAAmB,SAAX1vB,EACR3V,KAAMA,EACNywB,cAAeA,EACfv1B,MAAOA,EACPs5B,eAAgBA,EAChB0B,aAAcpnB,EAAM2lB,kBACpBF,iBAAkBzlB,EAAMylB,iBACxB+Q,UAAWx2B,EAAMwlB,gBAAkB,GAAKxlB,EAAMylB,iBAAmB,EACjEgR,oBAAqBz2B,EAAMwlB,gBAAkB+P,EAAkB/P,iBAAmBxlB,EAAMylB,iBAAmB8P,EAAkB9P,iBAC7HvE,WAAYA,EACZwV,aAAcxV,GAAyB,YAAXra,EAC5B8vB,eAA2B,UAAX9vB,GAA8C,IAAxB7G,EAAM2hB,cAC5CiU,kBAAmBA,EACnBD,eAAgBA,EAChBiB,eAA2B,UAAX/vB,GAA8C,IAAxB7G,EAAM2hB,cAC5CY,QAASA,EAAQje,EAAOjV,GACxByzB,QAASl8B,KAAKk8B,QACdh1B,OAAQlH,KAAKkH,OAGjB,EACA6vB,EAAOkZ,sBAAwB,SAA+B90C,EAAQkzC,GACpE,IAAKA,EACH,OAAO,EAET,IAAI3T,EAAgB16B,KAAKyI,QACvBynC,EAAsBxV,EAAcwV,oBACpCC,EAAgCzV,EAAcyV,8BAChD,IAAKD,IAAwBC,EAC3B,OAAO,EAET,GAA4B,YAAxBD,IAAsClwC,KAAKwrC,aAAa7/C,OAC1D,OAAO,EAET,IAAIykD,EAAwC,YAAxBF,EAAoClwC,KAAKwrC,aAAe0E,EAC5E,OAAOplD,OAAOD,KAAKsQ,GAAQqE,MAAK,SAAU1T,GACxC,IAAIukD,EAAWvkD,EACXwkD,EAAUn1C,EAAOk1C,KAAchC,EAAWgC,GAC1CE,EAA8B,MAAjBH,OAAwB,EAASA,EAAc5wC,MAAK,SAAU1J,GAC7E,OAAOA,IAAMhK,CACf,IACI0kD,EAA8C,MAAjCL,OAAwC,EAASA,EAA8B3wC,MAAK,SAAU1J,GAC7G,OAAOA,IAAMhK,CACf,IACA,OAAOwkD,IAAYE,KAAgBJ,GAAiBG,EACtD,GACF,EACAxZ,EAAO0V,aAAe,SAAsBN,GAC1C,IAAIkC,EAAaruC,KAAKitC,cAKtB,GAJAjtC,KAAKitC,cAAgBjtC,KAAKgtC,aAAahtC,KAAK2rC,aAAc3rC,KAAKyI,SAC/DzI,KAAKuuC,mBAAqBvuC,KAAK2rC,aAAavyB,MAC5CpZ,KAAKyuC,qBAAuBzuC,KAAKyI,UAE7B,QAAoBzI,KAAKitC,cAAeoB,GAA5C,CAIA,IAAIoC,EAAuB,CACzB/W,OAAO,IAE0D,KAA7C,MAAjByS,OAAwB,EAASA,EAAc5yB,YAAwBvZ,KAAKiwC,sBAAsBjwC,KAAKitC,cAAeoB,KACzHoC,EAAqBl3B,WAAY,GAEnCvZ,KAAKu8B,QAAO,OAAS,CAAC,EAAGkU,EAAsBtE,GAR/C,CASF,EACApV,EAAOuV,YAAc,WACnB,IAAI5uB,EAAQ1d,KAAKs/B,OAAOqD,gBAAgBllC,MAAMuC,KAAKs/B,OAAQt/B,KAAKyI,SAChE,GAAIiV,IAAU1d,KAAK2rC,aAAnB,CAGA,IAAIU,EAAYrsC,KAAK2rC,aACrB3rC,KAAK2rC,aAAejuB,EACpB1d,KAAK4uC,yBAA2BlxB,EAAMtE,MACtCpZ,KAAK8uC,oBAAsB9uC,KAAKitC,cAC5BjtC,KAAKq3B,iBACM,MAAbgV,GAA6BA,EAAU7P,eAAex8B,MACtD0d,EAAM4e,YAAYt8B,MAPpB,CASF,EACA+2B,EAAOyH,cAAgB,SAAuB3kB,GAC5C,IAAIsyB,EAAgB,CAAC,EACD,YAAhBtyB,EAAOxQ,KACT8iC,EAAclO,WAAY,EACD,UAAhBpkB,EAAOxQ,OAAqB,QAAiBwQ,EAAOrU,SAC7D2mC,EAAcjO,SAAU,GAE1Bl+B,KAAKysC,aAAaN,GACdnsC,KAAKq3B,gBACPr3B,KAAK8rC,cAET,EACA/U,EAAOwF,OAAS,SAAgB4P,GAC9B,IAAIuE,EAAS1wC,KACb44B,EAAA,EAAcP,OAAM,WAEd8T,EAAclO,WACY,MAA5ByS,EAAOjoC,QAAQw1B,WAA6ByS,EAAOjoC,QAAQw1B,UAAUyS,EAAOzD,cAAc3iC,MAC9D,MAA5BomC,EAAOjoC,QAAQq4B,WAA6B4P,EAAOjoC,QAAQq4B,UAAU4P,EAAOzD,cAAc3iC,KAAM,OACvF6hC,EAAcjO,UACG,MAA1BwS,EAAOjoC,QAAQy1B,SAA2BwS,EAAOjoC,QAAQy1B,QAAQwS,EAAOzD,cAAcznC,OAC1D,MAA5BkrC,EAAOjoC,QAAQq4B,WAA6B4P,EAAOjoC,QAAQq4B,eAAU1lC,EAAWs1C,EAAOzD,cAAcznC,QAGnG2mC,EAAc5yB,WAChBm3B,EAAOn3B,UAAU1tB,SAAQ,SAAUgP,GACjCA,EAAS61C,EAAOzD,cAClB,IAGEd,EAAczS,OAChBgX,EAAOpR,OAAOqD,gBAAgBpG,OAAO,CACnC7e,MAAOgzB,EAAO/E,aACdtiC,KAAM,0BAGZ,GACF,EACOkiC,CACT,CAxawC,CAwatC,KAIF,SAASK,EAAmBluB,EAAOjV,GACjC,OAJF,SAA2BiV,EAAOjV,GAChC,SAA2B,IAApBA,EAAQizB,SAAsBhe,EAAMtE,MAAM2hB,eAA0C,UAAvBrd,EAAMtE,MAAM6G,SAA+C,IAAzBxX,EAAQkoC,aAChH,CAESC,CAAkBlzB,EAAOjV,IAAYiV,EAAMtE,MAAM2hB,cAAgB,GAAKgR,EAAcruB,EAAOjV,EAASA,EAAQooC,eACrH,CACA,SAAS9E,EAAcruB,EAAOjV,EAASqoC,GACrC,IAAwB,IAApBroC,EAAQizB,QAAmB,CAC7B,IAAI5uC,EAAyB,mBAAVgkD,EAAuBA,EAAMpzB,GAASozB,EACzD,MAAiB,WAAVhkD,IAAgC,IAAVA,GAAmB6uC,EAAQje,EAAOjV,EACjE,CACA,OAAO,CACT,CACA,SAAS+jC,EAAsB9uB,EAAO2uB,EAAW5jC,EAAS2jC,GACxD,OAA2B,IAApB3jC,EAAQizB,UAAsBhe,IAAU2uB,IAAqC,IAAxBD,EAAY1Q,YAAwBjzB,EAAQ6kC,UAAmC,UAAvB5vB,EAAMtE,MAAM6G,SAAuB0b,EAAQje,EAAOjV,EACxK,CACA,SAASkzB,EAAQje,EAAOjV,GACtB,OAAOiV,EAAMoe,cAAcrzB,EAAQszB,UACrC,CCjcA,SAASgV,IACP,IAAIC,GAAW,EACf,MAAO,CACLC,WAAY,WACVD,GAAW,CACb,EACAzV,MAAO,WACLyV,GAAW,CACb,EACAE,QAAS,WACP,OAAOF,CACT,EAEJ,CACA,IAAIG,EAA8C,gBAAoBJ,KAE3DK,EAA6B,WACtC,OAAO,aAAiBD,EAC1B,EChBO,SAASE,EAASxR,EAAMC,EAAMsD,GAEnC,OCDK,SAAsB36B,EAAS6oC,GACpC,IAAIC,EAAa,UAAa,GAE5BC,EADoB,WAAe,GACL,GAC5BtG,EAAcD,IACdwG,EAAqBL,IACrBtO,EAAmBoI,EAAYlE,4BAA4Bv+B,GAE/Dq6B,EAAiBmM,mBAAoB,EAEjCnM,EAAiB5E,UACnB4E,EAAiB5E,QAAUtF,EAAA,EAAcJ,WAAWsK,EAAiB5E,UAEnE4E,EAAiB7E,YACnB6E,EAAiB7E,UAAYrF,EAAA,EAAcJ,WAAWsK,EAAiB7E,YAErE6E,EAAiBhC,YACnBgC,EAAiBhC,UAAYlI,EAAA,EAAcJ,WAAWsK,EAAiBhC,YAErEgC,EAAiBwK,WAGuB,iBAA/BxK,EAAiB/G,YAC1B+G,EAAiB/G,UAAY,KAII,IAA/B+G,EAAiB7I,YACnB6I,EAAiB7I,UAAY,KAG7B6I,EAAiBwK,UAAYxK,EAAiBuK,oBAE3CoE,EAAmBP,YACtBpO,EAAiB6N,cAAe,IAGpC,IC1C+BrD,EAAUoE,EAAmB7vC,ED6C1D45B,EAHqB,YAAe,WAClC,OAAO,IAAI6V,EAASpG,EAAapI,EACnC,IAC4B,GAC1B3nC,EAASsgC,EAASsR,oBAAoBjK,GA2B1C,GA1BA,aAAgB,WACdyO,EAAWI,SAAU,EACrBF,EAAmBR,aACnB,IAAIpyB,EAAc4c,EAAS7Z,UAAUgX,EAAA,EAAcJ,YAAW,WACxD+Y,EAAWI,SACbH,GAAY,SAAU17C,GACpB,OAAOA,EAAI,CACb,GAEJ,KAIA,OADA2lC,EAASgR,eACF,WACL8E,EAAWI,SAAU,EACrB9yB,GACF,CACF,GAAG,CAAC4yB,EAAoBhW,IACxB,aAAgB,WAGdA,EAASjC,WAAWsJ,EAAkB,CACpCvpB,WAAW,GAEf,GAAG,CAACupB,EAAkBrH,IAElBqH,EAAiBwK,UAAYnyC,EAAOu0C,UACtC,MAAMjU,EAASiS,gBAAgB5K,GAAkB/2B,MAAK,SAAUhY,GAC9D,IAAIuW,EAAOvW,EAAKuW,KACc,MAA9Bw4B,EAAiB7E,WAA6B6E,EAAiB7E,UAAU3zB,GAC3C,MAA9Bw4B,EAAiBhC,WAA6BgC,EAAiBhC,UAAUx2B,EAAM,KACjF,IAAG2B,OAAM,SAAUzG,GACjBisC,EAAmBR,aACS,MAA5BnO,EAAiB5E,SAA2B4E,EAAiB5E,QAAQ14B,GACvC,MAA9Bs9B,EAAiBhC,WAA6BgC,EAAiBhC,eAAU1lC,EAAWoK,EACtF,IAGF,GAAIrK,EAAOqyC,UAAYiE,EAAmBP,YAAc/1C,EAAOm/B,aCrFhCgT,EDqF+DxK,EAAiBwK,SCrFtEoE,EDqFgF5O,EAAiBuK,iBCrF9ExrC,EDqFgG,CAAC1G,EAAOqK,MAAOi2B,EAASgS,mBCnFnJ,mBAAtBiE,EACFA,EAAkBpmD,WAAM,EAAQuW,GAGR,kBAAtB6vC,EAAwCA,EAE1CpE,GD8EP,MAAMnyC,EAAOqK,MAMf,MAH6C,YAAzCs9B,EAAiBoN,sBACnB/0C,EAASsgC,EAASyR,YAAY/xC,EAAQ2nC,IAEjC3nC,CACT,CDvFSy2C,EADa,QAAe/R,EAAMC,EAAMsD,GACZmI,EACrC,C,oCGFA,IAHyBsG,EAGrBC,EAAQ,EAAQ,MAChBC,GAJqBF,EAIYC,IAHR,iBAAPD,GAAmB,YAAaA,EAAKA,EAAY,QAAIA,EAI3E,SAAS9lD,EAAgBK,EAAKN,EAAKgB,GAWjC,OAVIhB,KAAOM,EACTtB,OAAOoB,eAAeE,EAAKN,EAAK,CAC9BgB,MAAOA,EACP1B,YAAY,EACZwB,cAAc,EACdC,UAAU,IAGZT,EAAIN,GAAOgB,EAENV,CACT,CAMA,IAAI4sB,IAAiC,oBAAXvpB,SAA0BA,OAAOC,WAAYD,OAAOC,SAASoB,eA0EvF8sB,EAAOrC,QAzEP,SAAwBy2B,EAAoBC,EAA2BC,GACrE,GAAkC,mBAAvBF,EACT,MAAM,IAAIhuB,MAAM,iDAElB,GAAyC,mBAA9BiuB,EACT,MAAM,IAAIjuB,MAAM,wDAElB,QAAgC,IAArBkuB,GAAgE,mBAArBA,EACpD,MAAM,IAAIluB,MAAM,mEAKlB,OAAO,SAAcmuB,GACnB,GAAgC,mBAArBA,EACT,MAAM,IAAInuB,MAAM,sDAElB,IACI5K,EADAg5B,EAAmB,GAEvB,SAASC,IACPj5B,EAAQ44B,EAAmBI,EAAiB5+C,KAAI,SAAUqM,GACxD,OAAOA,EAASnT,KAClB,KACI4lD,EAAWt5B,UACbi5B,EAA0B74B,GACjB84B,IACT94B,EAAQ84B,EAAiB94B,GAE7B,CACA,IAAIk5B,EACJ,SAAUC,GApCd,IAAwBC,EAAUC,EAsC5B,SAASH,IACP,OAAOC,EAAejnD,MAAM0U,KAAMtU,YAAcsU,IAClD,CAxC4ByyC,EAqCDF,GArCTC,EAqCHF,GApCV9lD,UAAY1B,OAAOw3B,OAAOmwB,EAAWjmD,WAC9CgmD,EAAShmD,UAAUD,YAAcimD,EACjCA,EAASE,UAAYD,EAyCjBH,EAAWK,KAAO,WAChB,OAAOv5B,CACT,EACAk5B,EAAWM,OAAS,WAClB,GAAIN,EAAWt5B,UACb,MAAM,IAAIgL,MAAM,oFAElB,IAAI6uB,EAAgBz5B,EAGpB,OAFAA,OAAQhe,EACRg3C,EAAmB,GACZS,CACT,EACA,IAAI9b,EAASub,EAAW9lD,UAgBxB,OAfAuqC,EAAO+b,0BAA4B,WACjCV,EAAiB/mD,KAAK2U,MACtBqyC,GACF,EACAtb,EAAOgc,mBAAqB,WAC1BV,GACF,EACAtb,EAAOic,qBAAuB,WAC5B,IAAIxjC,EAAQ4iC,EAAiBphD,QAAQgP,MACrCoyC,EAAiB3uB,OAAOjU,EAAO,GAC/B6iC,GACF,EACAtb,EAAO5qB,OAAS,WACd,OAAO4lC,EAAejhD,cAAcqhD,EAAkBnyC,KAAKtT,MAC7D,EACO4lD,CACT,CArCA,CAqCER,EAAMmB,eAGR,OAFAlnD,EAAgBumD,EAAY,cAAe,cA1D7C,SAAwBH,GACtB,OAAOA,EAAiB36B,aAAe26B,EAAiBrjD,MAAQ,WAClE,CAwD6DokD,CAAef,GAAoB,KAC9FpmD,EAAgBumD,EAAY,YAAat5B,GAClCs5B,CACT,CACF,C,oCCjGA,IAAIa,EAAkB,EAAQ,MAC1B7wB,EAAS,EAAQ,IACjBp2B,EAAiB,UAEjBknD,EAAcD,EAAgB,eAC9BE,EAAiBpmD,MAAMT,eAIS4O,IAAhCi4C,EAAeD,IACjBlnD,EAAemnD,EAAgBD,EAAa,CAC1CxmD,cAAc,EACdE,MAAOw1B,EAAO,QAKlB1E,EAAOrC,QAAU,SAAUzvB,GACzBunD,EAAeD,GAAatnD,IAAO,CACrC,C,mCCnBA,IAAIwnD,EAAc,EAAQ,MACtBC,EAAW,EAAQ,MAEnBC,EAAQl9C,KAAKk9C,MACb17B,EAASw7B,EAAY,GAAGx7B,QACxB9gB,EAAUs8C,EAAY,GAAGt8C,SACzBy8C,EAAcH,EAAY,GAAGzkD,OAE7B6kD,EAAuB,8BACvBC,EAAgC,sBAIpC/1B,EAAOrC,QAAU,SAAUq4B,EAAS78C,EAAK6X,EAAUilC,EAAUC,EAAeC,GAC1E,IAAIC,EAAUplC,EAAWglC,EAAQjoD,OAC7B0nC,EAAIwgB,EAASloD,OACbX,EAAU2oD,EAKd,YAJsBv4C,IAAlB04C,IACFA,EAAgBP,EAASO,GACzB9oD,EAAU0oD,GAEL18C,EAAQ+8C,EAAa/oD,GAAS,SAAUwX,EAAOyxC,GACpD,IAAIC,EACJ,OAAQp8B,EAAOm8B,EAAI,IACjB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,OAAOL,EACjB,IAAK,IAAK,OAAOH,EAAY18C,EAAK,EAAG6X,GACrC,IAAK,IAAK,OAAO6kC,EAAY18C,EAAKi9C,GAClC,IAAK,IACHE,EAAUJ,EAAcL,EAAYQ,EAAI,GAAI,IAC5C,MACF,QACE,IAAItlD,GAAKslD,EACT,GAAU,IAANtlD,EAAS,OAAO6T,EACpB,GAAI7T,EAAI0kC,EAAG,CACT,IAAI3nB,EAAI8nC,EAAM7kD,EAAI,IAClB,OAAU,IAAN+c,EAAgBlJ,EAChBkJ,GAAK2nB,OAA8Bj4B,IAApBy4C,EAASnoC,EAAI,GAAmBoM,EAAOm8B,EAAI,GAAKJ,EAASnoC,EAAI,GAAKoM,EAAOm8B,EAAI,GACzFzxC,CACT,CACA0xC,EAAUL,EAASllD,EAAI,GAE3B,YAAmByM,IAAZ84C,EAAwB,GAAKA,CACtC,GACF,C,mCC5CA,IAAIC,EAAa,EAAQ,MAEzBv2B,EAAOrC,QAAU44B,EAAW,WAAY,kB,oCCFxC,IAAIjsB,EAAW,EAAQ,KACnBksB,EAAU,EAAQ,MAGlBC,EAFkB,EAAQ,KAElBlB,CAAgB,SAI5Bv1B,EAAOrC,QAAU,SAAUgU,GACzB,IAAI+kB,EACJ,OAAOpsB,EAASqH,UAAmCn0B,KAA1Bk5C,EAAW/kB,EAAG8kB,MAA0BC,EAA2B,WAAhBF,EAAQ7kB,GACtF,C,kCCVA,IAmDIglB,EAnDAC,EAAW,EAAQ,MACnBC,EAAyB,EAAQ,MACjCC,EAAc,EAAQ,KACtBC,EAAa,EAAQ,MACrB3xC,EAAO,EAAQ,KACf4xC,EAAwB,EAAQ,KAChCC,EAAY,EAAQ,MAIpBC,EAAY,YACZC,EAAS,SACTC,EAAWH,EAAU,YAErBI,EAAmB,WAA0B,EAE7CC,EAAY,SAAUjxC,GACxB,MARO,IAQK8wC,EATL,IASmB9wC,EAAnBkxC,KAAwCJ,EATxC,GAUT,EAGIK,EAA4B,SAAUb,GACxCA,EAAgBprB,MAAM+rB,EAAU,KAChCX,EAAgBc,QAChB,IAAIC,EAAOf,EAAgBgB,aAAazqD,OAExC,OADAypD,EAAkB,KACXe,CACT,EAyBIE,EAAkB,WACpB,IACEjB,EAAkB,IAAIkB,cAAc,WACtC,CAAE,MAAOjwC,GAAsB,CAzBF,IAIzBkwC,EAFAC,EACAC,EAuBJJ,EAAqC,oBAAZ9lD,SACrBA,SAAS25B,QAAUkrB,EACjBa,EAA0Bb,IA1B5BoB,EAASf,EAAsB,UAC/BgB,EAAK,OAASb,EAAS,IAE3BY,EAAOr9C,MAAM89B,QAAU,OACvBpzB,EAAKwD,YAAYmvC,GAEjBA,EAAOE,IAAMC,OAAOF,IACpBF,EAAiBC,EAAOI,cAAcrmD,UACvBywB,OACfu1B,EAAevsB,MAAM+rB,EAAU,sBAC/BQ,EAAeL,QACRK,EAAe1gB,GAiBlBogB,EAA0Bb,GAE9B,IADA,IAAI5oD,EAAS+oD,EAAY/oD,OAClBA,YAAiB6pD,EAAgBV,GAAWJ,EAAY/oD,IAC/D,OAAO6pD,GACT,EAEAb,EAAWK,IAAY,EAKvBp3B,EAAOrC,QAAUzwB,OAAOw3B,QAAU,SAAgB0zB,EAAGC,GACnD,IAAI96C,EAQJ,OAPU,OAAN66C,GACFf,EAAiBH,GAAaN,EAASwB,GACvC76C,EAAS,IAAI85C,EACbA,EAAiBH,GAAa,KAE9B35C,EAAO65C,GAAYgB,GACd76C,EAASq6C,SACMp6C,IAAf66C,EAA2B96C,EAASs5C,EAAuB/oC,EAAEvQ,EAAQ86C,EAC9E,C,oCClFA,IAAIC,EAAc,EAAQ,MACtBC,EAA0B,EAAQ,MAClCC,EAAuB,EAAQ,MAC/B5B,EAAW,EAAQ,MACnB6B,EAAkB,EAAQ,MAC1BC,EAAa,EAAQ,MAKzB/6B,EAAQ7P,EAAIwqC,IAAgBC,EAA0BrrD,OAAOmB,iBAAmB,SAA0B+pD,EAAGC,GAC3GzB,EAASwB,GAMT,IALA,IAIIlqD,EAJAY,EAAQ2pD,EAAgBJ,GACxBprD,EAAOyrD,EAAWL,GAClBtqD,EAASd,EAAKc,OACd6jB,EAAQ,EAEL7jB,EAAS6jB,GAAO4mC,EAAqB1qC,EAAEsqC,EAAGlqD,EAAMjB,EAAK2kB,KAAU9iB,EAAMZ,IAC5E,OAAOkqD,CACT,C,oCCnBA,IAAIO,EAAqB,EAAQ,MAC7B7B,EAAc,EAAQ,KAK1B92B,EAAOrC,QAAUzwB,OAAOD,MAAQ,SAAcmrD,GAC5C,OAAOO,EAAmBP,EAAGtB,EAC/B,C,oCCRA,IAAIF,EAAW,EAAQ,MAIvB52B,EAAOrC,QAAU,WACf,IAAIi7B,EAAOhC,EAASx0C,MAChB7E,EAAS,GASb,OARIq7C,EAAKC,aAAYt7C,GAAU,KAC3Bq7C,EAAKE,SAAQv7C,GAAU,KACvBq7C,EAAKG,aAAYx7C,GAAU,KAC3Bq7C,EAAKI,YAAWz7C,GAAU,KAC1Bq7C,EAAKK,SAAQ17C,GAAU,KACvBq7C,EAAK76C,UAASR,GAAU,KACxBq7C,EAAKM,cAAa37C,GAAU,KAC5Bq7C,EAAKO,SAAQ57C,GAAU,KACpBA,CACT,C,oCChBA,IAAIzN,EAAO,EAAQ,MACfspD,EAAS,EAAQ,MACjBC,EAAgB,EAAQ,MACxBC,EAAc,EAAQ,MAEtBC,EAAkBl/C,OAAOzL,UAE7BoxB,EAAOrC,QAAU,SAAUiY,GACzB,IAAI/D,EAAQ+D,EAAE/D,MACd,YAAiBr0B,IAAVq0B,GAAyB,UAAW0nB,GAAqBH,EAAOxjB,EAAG,WAAYyjB,EAAcE,EAAiB3jB,GAC1F/D,EAAvB/hC,EAAKwpD,EAAa1jB,EACxB,C,oCCXA,IAAI4gB,EAAU,EAAQ,KAElBgD,EAAUtB,OAEdl4B,EAAOrC,QAAU,SAAU87B,GACzB,GAA0B,WAAtBjD,EAAQiD,GAAwB,MAAMrpD,UAAU,6CACpD,OAAOopD,EAAQC,EACjB,C,oCCLuB,EAAQ,KAG/BC,CAAiB,U,oCCHM,EAAQ,KAG/BA,CAAiB,O,oCCLjB,IAAIhmB,EAAI,EAAQ,MACZ5jC,EAAO,EAAQ,MACf4lD,EAAc,EAAQ,MACtBiE,EAAyB,EAAQ,MACjCC,EAAa,EAAQ,KACrBC,EAAoB,EAAQ,MAC5BnD,EAAW,EAAQ,MACnB1lD,EAAW,EAAQ,MACnB8oD,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MACzBC,EAAkB,EAAQ,KAC1BzE,EAAkB,EAAQ,MAC1B0E,EAAU,EAAQ,MAElBC,EAAU3E,EAAgB,WAC1B4E,EAAa/pD,UACbgD,EAAUsiD,EAAY,GAAGtiD,SACzBgG,EAAUs8C,EAAY,GAAGt8C,SACzBy8C,EAAcH,EAAY,GAAGzkD,OAC7B4tB,EAAMnmB,KAAKmmB,IAEXu7B,EAAgB,SAAUn8C,EAAQo8C,EAAaC,GACjD,OAAIA,EAAYr8C,EAAOlQ,QAAgB,EACnB,KAAhBssD,EAA2BC,EACxBlnD,EAAQ6K,EAAQo8C,EAAaC,EACtC,EAIA5mB,EAAE,CAAE9lC,OAAQ,SAAU2sD,OAAO,GAAQ,CACnCC,WAAY,SAAoBH,EAAaI,GAC3C,IACIC,EAAY7oB,EAAO8oB,EAAU18C,EAAQ28C,EAAcC,EAAmBC,EAAcC,EAAW5E,EAD/FiC,EAAIuB,EAAuBv3C,MAE3B4O,EAAW,EACXgqC,EAAiB,EACjBz9C,EAAS,GACb,IAAKs8C,EAAkBQ,GAAc,CAEnC,IADAK,EAAahE,EAAS2D,MAEpBxoB,EAAQ7gC,EAAS2oD,EAAuBI,EAAeM,OACjDjnD,EAAQy+B,EAAO,MAAM,MAAMsoB,EAAW,mDAG9C,GADAQ,EAAWb,EAAUO,EAAaH,GAEhC,OAAOpqD,EAAK6qD,EAAUN,EAAajC,EAAGqC,GACjC,GAAIR,GAAWS,EACpB,OAAOthD,EAAQpI,EAASonD,GAAIiC,EAAaI,EAE7C,CAQA,IAPAx8C,EAASjN,EAASonD,GAClBwC,EAAe5pD,EAASqpD,IACxBQ,EAAoBjB,EAAWa,MACPA,EAAezpD,EAASypD,IAChDK,EAAeF,EAAa7sD,OAC5BgtD,EAAYl8B,EAAI,EAAGi8B,GACnB9pC,EAAWopC,EAAcn8C,EAAQ28C,EAAc,IAC1B,IAAd5pC,GACLmlC,EAAc0E,EACV7pD,EAASypD,EAAaG,EAAc5pC,EAAU/S,IAC9C+7C,EAAgBY,EAAc38C,EAAQ+S,EAAU,QAAIxT,EAAWi9C,GACnEl9C,GAAUs4C,EAAY53C,EAAQ+8C,EAAgBhqC,GAAYmlC,EAC1D6E,EAAiBhqC,EAAW8pC,EAC5B9pC,EAAWopC,EAAcn8C,EAAQ28C,EAAc5pC,EAAW+pC,GAK5D,OAHIC,EAAiB/8C,EAAOlQ,SAC1BwP,GAAUs4C,EAAY53C,EAAQ+8C,IAEzBz9C,CACT,G,oCCnEF,EAAQ,K,oCCCuBogB,EAAQ,QAAgB,EAEvD,IAAIs9B,EAAiB,EAAQ,MAE7Bt9B,EAAQ,GAAgBs9B,EAAeC,cAEX,EAAQ,MAEiBC,oB,oCCTrD,IAAIC,EAAyB,EAAQ,MAErCz9B,EAAQG,YAAa,EACrBH,EAAQu9B,cAAgBv9B,EAAQ09B,mBAAgB,EAEhD,IAAIC,EAA0BF,EAAuB,EAAQ,OAEzDG,EAAkBH,EAAuB,EAAQ,OAEjDlH,EAQJ,SAAiC1lD,EAAKgtD,GAAe,IAAKA,GAAehtD,GAAOA,EAAIsvB,WAAc,OAAOtvB,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEuvB,QAASvvB,GAAS,IAAIstC,EAAQ2f,EAAyBD,GAAc,GAAI1f,GAASA,EAAMlK,IAAIpjC,GAAQ,OAAOstC,EAAMvnC,IAAI/F,GAAQ,IAAIktD,EAAS,CAAC,EAAOC,EAAwBzuD,OAAOoB,gBAAkBpB,OAAOK,yBAA0B,IAAK,IAAIW,KAAOM,EAAO,GAAY,YAARN,GAAqBhB,OAAO0B,UAAU8qB,eAAe5pB,KAAKtB,EAAKN,GAAM,CAAE,IAAI2+B,EAAO8uB,EAAwBzuD,OAAOK,yBAAyBiB,EAAKN,GAAO,KAAU2+B,IAASA,EAAKt4B,KAAOs4B,EAAKj1B,KAAQ1K,OAAOoB,eAAeotD,EAAQxtD,EAAK2+B,GAAgB6uB,EAAOxtD,GAAOM,EAAIN,EAAQ,CAAIwtD,EAAO39B,QAAUvvB,EAASstC,GAASA,EAAMlkC,IAAIpJ,EAAKktD,GAAW,OAAOA,CAAQ,CARvxBE,CAAwB,EAAQ,OAExCC,EAAaT,EAAuB,EAAQ,OAE5CU,EAAkB,EAAQ,MAE9B,SAASL,EAAyBD,GAAe,GAAuB,mBAAZO,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQN,EAA2B,SAAkCD,GAAe,OAAOA,EAAcS,EAAmBD,CAAmB,GAAGR,EAAc,CAI9U,IAAIH,EAA6BnH,EAAMgI,cAAc,IAAIJ,EAAgBK,gBACzEx+B,EAAQ09B,cAAgBA,EACxBA,EAAczhC,YAAc,sBAE5B,IAAIshC,EAA6B,SAAUkB,GAGzC,SAASlB,IAGP,IAFA,IAAI14C,EAEKC,EAAO3U,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMoT,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ea,EAAKb,GAAQ5U,UAAU4U,GA0CzB,OAvCAF,EAAQ45C,EAAiBtsD,KAAKpC,MAAM0uD,EAAkB,CAACh6C,MAAMjN,OAAOoO,KAAUnB,MACxEi6C,cAAgB,IAAIP,EAAgBK,eAC1C35C,EAAM85C,YAAa,EACnB95C,EAAM+5C,oBAAsB,EAE5B/5C,EAAMg6C,eAAiB,WACrBh6C,EAAM+5C,oBAAsB1qD,OAAO4qD,QAE9Bj6C,EAAM85C,aACT95C,EAAM85C,YAAa,EACnBhyC,sBAAsB9H,EAAMk6C,YAAY5mD,MAAK,EAAIwlD,EAAwBv9B,SAASvb,KAEtF,EAEAA,EAAMm6C,aAAe,SAAU3rC,EAAU4rC,GACnCp6C,EAAMq6C,mBAAmBD,EAAWp6C,EAAM1T,QAC5C+C,OAAOirD,SAAS,EAAG9rC,EAEvB,EAEAxO,EAAMu6C,aAAe,SAAUniC,EAAMgiC,GACnC,IAAI7jD,EAAOjH,SAASkrD,eAAepiC,EAAKqiC,UAAU,IAE9ClkD,GAAQyJ,EAAMq6C,mBAAmBD,EAAWp6C,EAAM1T,QACpDiK,EAAKmkD,gBAET,EAEA16C,EAAMq6C,mBAAqB,SAAUM,EAAiBC,GACpD,IAAIP,EAAqBr6C,EAAM1T,MAAM+tD,mBAErC,OAAKA,GAKEA,EAAmB/sD,MAAK,EAAIwrD,EAAwBv9B,SAASvb,GAAQ26C,EAAiBC,EAC/F,EAEO56C,CACT,EAjDA,EAAI+4C,EAAgBx9B,SAASm9B,EAAekB,GAmD5C,IAAIjjB,EAAS+hB,EAActsD,UAkE3B,OAhEAuqC,EAAOujB,YAAc,WACnB,IAAIxuD,EAAMkU,KAAKtT,MAAM4rB,SAASxsB,KAAO,KAEjCA,GACFkU,KAAKi6C,cAAcgB,KAAKj7C,KAAKtT,MAAM4rB,SAAUxsB,EAAKkU,KAAKm6C,qBAGzDn6C,KAAKk6C,YAAa,CACpB,EAEAnjB,EAAOmkB,kBAAoB,WAEzB,IAAIC,EADJ1rD,OAAOoB,iBAAiB,SAAUmP,KAAKo6C,gBAEvC,IAAIgB,EAAuBp7C,KAAKtT,MAAM4rB,SAClCxsB,EAAMsvD,EAAqBtvD,IAC3B0sB,EAAO4iC,EAAqB5iC,KAE5B1sB,IACFqvD,EAAiBn7C,KAAKi6C,cAAc94B,KAAKnhB,KAAKtT,MAAM4rB,SAAUxsB,IAG5DqvD,EACFn7C,KAAKu6C,aAAaY,OAAgB//C,GACzBod,GACTxY,KAAK26C,aAAaxhC,UAAUX,QAAOpd,EAEvC,EAEA27B,EAAOic,qBAAuB,WAC5BvjD,OAAOqL,oBAAoB,SAAUkF,KAAKo6C,eAC5C,EAEArjB,EAAOgc,mBAAqB,SAA4ByH,GACtD,IAGIW,EAHAE,EAAwBr7C,KAAKtT,MAAM4rB,SACnCE,EAAO6iC,EAAsB7iC,KAC7B1sB,EAAMuvD,EAAsBvvD,IAG5BA,IACFqvD,EAAiBn7C,KAAKi6C,cAAc94B,KAAKnhB,KAAKtT,MAAM4rB,SAAUxsB,IAY5D0sB,EACFxY,KAAK26C,aAAaxhC,UAAUX,GAAOgiC,GAEnCx6C,KAAKu6C,aAAaY,EAAgBX,EAEtC,EAEAzjB,EAAO5qB,OAAS,WACd,OAAoB2lC,EAAMhhD,cAAcmoD,EAAc3N,SAAU,CAC9Dx+C,MAAOkT,KAAKi6C,eACXj6C,KAAKtT,MAAMwN,SAChB,EAEO4+C,CACT,CAvHiC,CAuH/BhH,EAAMwJ,WAER//B,EAAQu9B,cAAgBA,EACxBA,EAAcrhC,UAAY,CACxBgjC,mBAAoBhB,EAAW99B,QAAQtgB,KACvCnB,SAAUu/C,EAAW99B,QAAQvnB,QAAQmnD,WACrCjjC,SAAUmhC,EAAW99B,QAAQhxB,OAAO4wD,W,kCCpJtChgC,EAAQG,YAAa,EACrBH,EAAQw+B,oBAAiB,EACzB,IACIyB,EAA6B,gCAE7BzB,EAA8B,WAChC,SAASA,IAAkB,CAE3B,IAAIhjB,EAASgjB,EAAevtD,UA8C5B,OA5CAuqC,EAAO5V,KAAO,SAAc7I,EAAUxsB,GACpC,IAAI2vD,EAAWz7C,KAAK07C,YAAYpjC,EAAUxsB,GAE1C,IACE,IAAIgB,EAAQ2C,OAAOksD,eAAeC,QAAQH,GAC1C,OAAO3uD,EAAQw7B,KAAKhmB,MAAMxV,GAAS,CACrC,CAAE,MAAO+C,GAKP,OAAIJ,QAAUA,OAAO+rD,IAA+B/rD,OAAO+rD,GAA4BC,GAC9EhsD,OAAO+rD,GAA4BC,GAGrC,CACT,CACF,EAEA1kB,EAAOkkB,KAAO,SAAc3iC,EAAUxsB,EAAKgB,GACzC,IAAI2uD,EAAWz7C,KAAK07C,YAAYpjC,EAAUxsB,GACtC+vD,EAAcvzB,KAAKC,UAAUz7B,GAEjC,IACE2C,OAAOksD,eAAeG,QAAQL,EAAUI,EAC1C,CAAE,MAAOhsD,GACHJ,QAAUA,OAAO+rD,KAGnB/rD,OAAO+rD,GAA8B,CAAC,GAFtC/rD,OAAO+rD,GAA4BC,GAAYnzB,KAAKhmB,MAAMu5C,EAS9D,CACF,EAEA9kB,EAAO2kB,YAAc,SAAqBpjC,EAAUxsB,GAClD,IAAIiwD,EAhDe,YAgDwBzjC,EAASS,SACpD,OAAOjtB,QAA6CiwD,EAAeA,EAAe,IAAMjwD,CAC1F,EAEOiuD,CACT,CAlDkC,GAoDlCx+B,EAAQw+B,eAAiBA,C,oCCzDzBx+B,EAAQG,YAAa,EACrBH,EAAQw9B,qBAQR,SAA8BiD,GAC5B,IAAI1jC,GAAW,EAAI2jC,EAAaC,eAC5B9iC,GAAQ,EAAI+iC,EAAOC,YAAYvD,EAAeI,eAC9C7hC,GAAM,EAAI+kC,EAAOE,QAAQ,MAO7B,OANA,EAAIF,EAAOG,kBAAiB,WAC1B,GAAIllC,EAAIu6B,QAAS,CACf,IAAI/iC,EAAWwK,EAAM+H,KAAK7I,EAAU0jC,GACpC5kC,EAAIu6B,QAAQ+I,SAAS,EAAG9rC,GAAY,EACtC,CACF,GAAG,CAAC0J,EAASxsB,MACN,CACLsrB,IAAKA,EACLmlC,SAAU,WACJnlC,EAAIu6B,SACNv4B,EAAM6hC,KAAK3iC,EAAU0jC,EAAY5kC,EAAIu6B,QAAQ6K,UAEjD,EAEJ,EAxBA,IAAI3D,EAAiB,EAAQ,MAEzBsD,EAAS,EAAQ,MAEjBF,EAAe,EAAQ,K,uBCT3B1gC,EAAQkhC,WAAa,CACnB,gCAAiCC,IAAM,8BACvC,kCAAmCC,IAAM,wEACzC,8EAA+EC,IAAM,wEACrF,mEAAoEC,IAAM,wEAC1E,kDAAmDC,IAAM,wEACzD,sDAAuDC,IAAM,wE,uBCN/Dn/B,EAAOrC,QAAU,CAAC,CACZtH,OAAQ+oC,EAAQ,MAChBv0C,QAAS,CAAC,QAAU,GAAG,UAAY,0FACnC,CACAwL,OAAQ+oC,EAAQ,KAChBv0C,QAAS,CAAC,QAAU,GAAG,YAAa,EAAK,QAAU,CAAC,qBAAqB,YAAY,cAAc,2CAA2C,eAAiB,CAAC,UAAY,KAAK,iBAAmB,SACpM,CACAwL,OAAQ+oC,EAAQ,MAChBv0C,QAAS,CAAC,QAAU,KACpB,CACAwL,OAAQ+oC,EAAQ,KAChBv0C,QAAS,CAAC,QAAU,K,uBCX1B,MAAMw0C,EAAUD,EAAQ,OAClB,2BAAEE,EAA0B,SAAEC,EAAQ,aAAEC,GAC5CJ,EAAAA,MAAAA,GAEFzhC,EAAQ,EAAY,SAACnZ,EAAKjB,EAAWk8C,EAAeC,QAAtB,IAAJn8C,IAAAA,EAAO,CAAC,GAYhC,IAAIo8C,EAAUN,EAAQzpD,KAAIygB,IACxB,IAAKA,EAAOA,OAAO7R,GACjB,OAGFjB,EAAK+7C,2BAA6BA,EAClC/7C,EAAKg8C,SAAWA,EAChBh8C,EAAKi8C,aAAeA,EAEpB,MAAMjiD,EAAS8Y,EAAOA,OAAO7R,GAAKjB,EAAM8S,EAAOxL,SAI/C,OAHItN,GAAUmiD,IACZn8C,EAAOm8C,EAAa,CAAEn8C,OAAMhG,SAAQ8Y,YAE/B9Y,CAAM,IAMf,OAFAoiD,EAAUA,EAAQtyD,QAAOkQ,QAAuB,IAANA,IAEtCoiD,EAAQ5xD,OAAS,EACZ4xD,EACEF,EACF,CAACA,GAED,EAEX,EAEA9hC,EAAQ,EAAiB,CAACnZ,EAAKjB,EAAMk8C,IACnCJ,EAAQ9lD,QACN,CAACyuC,EAAUj4C,IACTA,EAAKsmB,OAAO7R,GACRwjC,EAAS75B,MAAK,IAAMpe,EAAKsmB,OAAO7R,GAAKjB,EAAMxT,EAAK8a,WAChDm9B,GACN9jC,QAAQwD,U,oEC/CZ,MCgBA,SAAcwG,GAGb,OAFAA,EAAMA,GAAOhhB,OAAOw3B,OAAO,MAEpB,CAQNk7B,GAAI,SAAYn0C,EAAco0C,IAC5B3xC,EAAIzC,KAAUyC,EAAIzC,GAAQ,KAAKhe,KAAKoyD,EACtC,EASAC,IAAK,SAAar0C,EAAco0C,GAC3B3xC,EAAIzC,IACPyC,EAAIzC,GAAMoa,OAAO3X,EAAIzC,GAAMrY,QAAQysD,KAAa,EAAG,EAErD,EAUAE,KAAM,SAAct0C,EAAcu0C,IAChC9xC,EAAIzC,IAAS,IAAIxa,QAAQ2E,KAAI,SAAUiqD,GAAWA,EAAQG,EAAM,KAChE9xC,EAAI,MAAQ,IAAIjd,QAAQ2E,KAAI,SAAUiqD,GAAWA,EAAQp0C,EAAMu0C,EAAM,GACvE,EAEF,CD1DgBC,E,qKEFhB,EAAeC,IACb,QAAsB1iD,IAAlB0iD,EACF,OAAOA,EAET,IAAKxsC,EAAMiH,EAAM,IAASulC,EAAcjnD,MAAM,KAK9C,OAJI0hB,IACFA,EAAS,IAAMA,GAGT,MAAJjH,EACK,IAAMiH,EAEiB,MAA5BjH,EAAKwG,OAAOxG,EAAK3lB,OAAS,GACrB2lB,EAAKziB,MAAM,GAAI,GAAK0pB,EAEtBjH,EAAOiH,CACf,E,UCXD,MAAMwlC,EAAY,IAAI5uB,IACtB,IAAI6uB,EAAa,GAEjB,MAAMC,EAAeC,IACnB,IAAIC,EAAiBD,EAGrB,IAAoB,IAFDA,EAAYltD,QAAQ,KAEhB,CACrB,MAAOsgB,EAAM8sC,GAAMF,EAAYrnD,MAAM,KACrCsnD,EAAoB7sC,EAAI,IAAIgO,mBAAmB8+B,EACjD,CAEA,MAAMrlC,EAAW8D,mBAAmBshC,GAUpC,OAPwBE,EAAAA,EAAAA,GACtBtlC,EACA8D,mBAAmByhC,KAGlBznD,MAAM,KAAK,EAEQ,EAGxB,SAAS0nD,EAAWjtC,GAElB,OACEA,EAAKnB,WAAW,MAChBmB,EAAKnB,WAAW,aAChBmB,EAAKnB,WAAW,WAETmB,EAIF,IAAI2H,IACT3H,EACA7hB,OAAO6oB,SAASG,MAAQhpB,OAAO6oB,SAASG,KAAKiT,SAAS,KAAI,SAC1D3S,QACJ,CAOO,MAAMylC,EAAgB1xD,IAC3BkxD,EAAalxD,CAAK,EAWP2xD,EAAgBP,IAC3B,MAAMQ,EAAkBC,EAAUT,GAE5BU,EAAYZ,EAAWxqD,KAAIO,IAA0B,IAAzB,KAAEud,EAAI,UAAEutC,GAAW9qD,EACnD,MAAO,CACLud,KAAMutC,EACNC,aAAcxtC,EACf,IAGGA,GAAOsK,EAAAA,EAAAA,IAAKgjC,EAAWF,GAE7B,OAAIptC,EACKytC,EAAkBztC,EAAKiL,MAAMuiC,cAG/B,IAAI,EAYAE,EAAkBd,IAC7B,MAAMQ,EAAkBC,EAAUT,GAE5BU,EAAYZ,EAAWxqD,KAAIQ,IAA0B,IAAzB,KAAEsd,EAAI,UAAEutC,GAAW7qD,EACnD,MAAO,CACLsd,KAAMutC,EACNC,aAAcxtC,EACf,IAGGA,GAAOsK,EAAAA,EAAAA,IAAKgjC,EAAWF,GAE7B,OAAIptC,EACKA,EAAKzP,OAGP,CAAC,CAAC,EAWEo9C,EAAWf,IACtB,MAAMQ,EAAkBT,EAAaM,EAAWL,IAChD,GAAIH,EAAUvuB,IAAIkvB,GAChB,OAAOX,EAAU5rD,IAAIusD,GAGvB,MAAMQ,GAAWC,EAAAA,EAAAA,GAAwBjB,GACzC,GAAIgB,EACF,OAAOD,EAASC,EAASE,QAG3B,IAAIC,EAAYZ,EAAcC,GAQ9B,OANKW,IACHA,EAAYV,EAAUT,IAGxBH,EAAUvoD,IAAIkpD,EAAiBW,GAExBA,CAAS,EAULV,EAAYT,IAGvB,IAAImB,EAFoBpB,EAAaM,EAAWL,IAShD,MANa,gBAATmB,IACFA,EAAS,KAGXA,EAAYN,EAAkBM,GAEvBA,CAAS,C,4JC3JlB,MAAMC,EAAqBxN,EAAAA,cAAoB,CAAC,GAChD,IAAIyN,EAA2B,KAC3BzN,EAAM0N,sBACRD,EAA2BzN,EAAM0N,oBAAoB,cAAe,CAAC,ICJ9CC,EAAAA,GAAOC,O,2OCEjB,SAASxxD,EAAmBlB,GACzC,OCJa,SAA4BA,GACzC,GAAIC,MAAMC,QAAQF,GAAM,OAAO,EAAA2yD,EAAA,GAAiB3yD,EAClD,CDES,CAAkBA,KAAQ,EAAA4yD,EAAA,GAAgB5yD,KAAQ,EAAA6yD,EAAA,GAA2B7yD,IELvE,WACb,MAAM,IAAIgB,UAAU,uIACtB,CFG8F,EAC9F,CGNA,MAyDM8xD,EAzDU,SAAUC,GACxB,GAAmB,oBAARrwD,SACT,OAAO,EAET,MAAMswD,EAAWtwD,SAASoB,cAAc,QACxC,IACE,GAAIkvD,EAASC,SAA2C,mBAAzBD,EAASC,QAAQC,SAC9C,OAAOF,EAASC,QAAQC,SAASH,EAErC,CAAE,MAAOlyD,GACP,OAAO,CACT,CACA,OAAO,CACT,CA4CkCsyD,CAAQ,YA1Cb,SAAUxgC,EAAKlX,GAC1C,OAAO,IAAI3G,SAAQ,CAACwD,EAASvD,KAC3B,GAAmB,oBAARrS,SAET,YADAqS,IAIF,MAAMq+C,EAAO1wD,SAASoB,cAAc,QACpCsvD,EAAK7nD,aAAa,MAAD,YACjB6nD,EAAK7nD,aAAa,OAAQonB,GAE1B70B,OAAOD,KAAK4d,GAAS5c,SAAQC,IAC3Bs0D,EAAK7nD,aAAazM,EAAK2c,EAAQ3c,GAAK,IAGtCs0D,EAAKC,OAAS/6C,EACd86C,EAAK1/B,QAAU3e,GAGbrS,SAAS4wD,qBAAqB,QAAQ,IACtC5wD,SAAS6wD,kBAAkB,UAAU,GAAG55C,YAC5BH,YAAY45C,EAAK,GAEnC,EAE4B,SAAUzgC,GACpC,OAAO,IAAI7d,SAAQ,CAACwD,EAASvD,KAC3B,MAAMy+C,EAAM,IAAIvhC,eAChBuhC,EAAIrgC,KAAK,MAAOR,GAAK,GAErB6gC,EAAIH,OAAS,KACQ,MAAfG,EAAIvgC,OACN3a,IAEAvD,GACF,EAGFy+C,EAAI1+B,KAAK,KAAK,GAElB,EAMM2+B,EAAa,CAAC,EAkBpB,MAhBiB,SAAU9gC,EAAKlX,GAC9B,OAAO,IAAI3G,SAAQwD,IACbm7C,EAAW9gC,GACbra,IAIFw6C,EAA0BngC,EAAKlX,GAC5BsD,MAAK,KACJzG,IACAm7C,EAAW9gC,IAAO,CAAI,IAEvB1T,OAAM,QAAS,GAEtB,E,oBCrEO,MAAMy0C,EAAqB,CAIhC18B,MAAM,QAIN28B,QAAQ,WASJC,EAAoBC,IACxB,MAAOvvC,EAAMwvC,GAAeD,EAAQhqD,MAAM,KAPZkB,MAS9B,MAAyB,eADH,MAAJuZ,EAAY,SAP9BvZ,EAAQ,OADsBA,EAQqCuZ,GAP7D,GAAavZ,EAAElJ,MAAM,GAAKkJ,GAC1B2zB,SAAS,KAAO3zB,EAAElJ,MAAM,GAAI,GAAKkJ,GAOS,mBAC9C+oD,EAAW,IAAOA,EAAW,GAAO,EAIxC,SAASC,EAAQphC,EAAKS,GACpB,YAD0B,IAANA,IAAAA,EAAM,OACnB,IAAIte,SAAQwD,IACjB,MAAMk7C,EAAM,IAAIvhC,eAChBuhC,EAAIrgC,KAAKC,EAAQT,GAAK,GACtB6gC,EAAIjgC,mBAAqB,KACD,GAAlBigC,EAAI5lD,YACN0K,EAAQk7C,EACV,EAEFA,EAAI1+B,KAAK,KAAK,GAElB,CAEA,MAgBMk/B,EAAY,+BAEZC,EAAkB,SAACC,EAAUC,EAAkBvwD,QAAT,IAATuwD,IAAAA,EAAY,MAC7C,MAAMxb,EAAO,CACXyb,mBAAoBF,EAASE,mBAC7B9vC,KAAM4vC,EAAS5vC,KACf+vC,uBAAwBH,EAASG,uBACjCxC,UAAWqC,EAASrC,UACpByC,kBAAmBJ,EAASI,kBAC5BC,mBAAoBL,EAASK,oBAG/B,MAAO,CACLJ,YACAvwD,OACA4wD,KAAMN,EAAS/lD,OACfwqC,OAEJ,EAsBO,IAAM8b,EAAU,WACrB,SAAAA,EAAYC,EAAe1D,GAAa,KA6BxC2D,wBAA0B,IAAIxyB,IAb5BnvB,KAAK4hD,OAAS,IAAIzyB,IAClBnvB,KAAK6hD,WAAa,IAAI1yB,IACtBnvB,KAAK8hD,cAAgB,CAAC,EACtB9hD,KAAK+hD,WAAa,IAAI5yB,IACtBnvB,KAAKgiD,mBAAqB,IAAI7yB,IAC9BnvB,KAAKiiD,wBAAyB,EAC9BjiD,KAAKkiD,eAAiB,GACtBliD,KAAKmiD,kBAAoB,IAAI5uD,IAC7ByM,KAAKoiD,kBAAoB,IAAI7uD,IAC7ByM,KAAK0hD,cAAgBA,GACrBlD,EAAAA,EAAAA,IAAcR,EAChB,CAAC,IAAAjnB,EAAA0qB,EAAAj1D,UAirBA,OAjrBAuqC,EAIDsrB,YAAA,SAAY1iC,GACV,IAAI2iC,EAAkBtiD,KAAK2hD,wBAAwBxvD,IAAIwtB,GAQvD,OANK2iC,IACHA,EAAkBvB,EAAQphC,EAAI,OAC9B3f,KAAK2hD,wBAAwBnsD,IAAImqB,EAAK2iC,IAIjCA,EACJv2C,MAAKgU,IACJ/f,KAAK2hD,wBAAwBpwB,OAAO5R,GAC7BI,KAER9T,OAAMpe,IAEL,MADAmS,KAAK2hD,wBAAwBpwB,OAAO5R,GAC9B9xB,CAAG,GAEf,EAACkpC,EAEDwrB,aAAA,SAAaC,GACXxiD,KAAKwiD,UAAYA,EACjBxiD,KAAKyiD,iBAAmBD,EAAU,0BAA0BhjD,MAAKlE,GAAKA,GACxE,EAACy7B,EAED2rB,kBAAA,SAAkBC,GAChB,MAAM,SAAEC,EAAQ,QAAEC,EAAU,GAAMF,EAC5BhjC,EAAMihC,EAAkBgC,GAC9B,OAAO5iD,KAAKqiD,YAAY1iC,GAAK5T,MAAKy0C,IAChC,MAAM,OAAEvgC,EAAM,aAAED,GAAiBwgC,EAGjC,GAAe,MAAXvgC,EACF,IACE,MAAM6iC,EAAcx6B,KAAKhmB,MAAM0d,GAC/B,QAAyB5kB,IAArB0nD,EAAYxxC,KACd,MAAM,IAAI0S,MAAM,iCAGlB,MAAM88B,EAAc8B,EAAS/rD,MAAM,KAAK,GAKxC,OAJIiqD,IAAgBgC,EAAYxxC,KAAK/R,SAASuhD,KAC5CgC,EAAYxxC,MAAI,IAAQwvC,GAGnBh2D,OAAOqtB,OAAOwqC,EAAS,CAC5B1iC,OAAQygC,EAAmBC,QAC3Bj3B,QAASo5B,GAEb,CAAE,MAAOj1D,GACP,CAKJ,OAAe,MAAXoyB,GAA6B,MAAXA,EAER,cAAR2iC,GAAoC,cAARA,EACvB93D,OAAOqtB,OAAOwqC,EAAS,CAC5B1iC,OAAQygC,EAAmB18B,QAMxBhkB,KAAK0iD,kBACV53D,OAAOqtB,OAAOwqC,EAAS,CAAEC,SAAS,YAAcG,UAAU,KAK/C,MAAX9iC,EACKjgB,KAAK0iD,kBACV53D,OAAOqtB,OAAOwqC,EAAS,CACrBC,SAAS,YACTI,qBAAqB,KAMvBH,EAAU,EACL7iD,KAAK0iD,kBACV53D,OAAOqtB,OAAOwqC,EAAS,CAAEE,QAASA,EAAU,KAKzC/3D,OAAOqtB,OAAOwqC,EAAS,CAC5B1iC,OAAQygC,EAAmB18B,OAC3B,GAEN,EAAC+S,EAEDksB,0BAAA,SAA0BN,GACxB,MAAM,SAAEC,EAAQ,QAAEC,EAAU,GAAMF,EAC5BhjC,EAAMihC,EAAkBgC,GAAU5rD,QAAQ,QAAD,aAC/C,OAAOgJ,KAAKqiD,YAAY1iC,GAAK5T,MAAKy0C,IAChC,MAAM,OAAEvgC,EAAM,aAAED,GAAiBwgC,EAGjC,GAAe,MAAXvgC,EACF,IACE,OAAOn1B,OAAOqtB,OAAOwqC,EAAS,CAC5B1iC,OAAQygC,EAAmBC,QAC3Bj3B,QAAS1J,GAEb,CAAE,MAAOnyB,GACP,CAKJ,OAAe,MAAXoyB,GAA6B,MAAXA,EAER,cAAR2iC,GAAoC,cAARA,EACvB93D,OAAOqtB,OAAOwqC,EAAS,CAC5B1iC,OAAQygC,EAAmB18B,QAMxBhkB,KAAKijD,0BACVn4D,OAAOqtB,OAAOwqC,EAAS,CAAEC,SAAS,YAAcG,UAAU,KAK/C,MAAX9iC,EACKjgB,KAAKijD,0BACVn4D,OAAOqtB,OAAOwqC,EAAS,CACrBC,SAAS,YACTI,qBAAqB,KAMvBH,EAAU,EACL7iD,KAAKijD,0BACVn4D,OAAOqtB,OAAOwqC,EAAS,CAAEE,QAASA,EAAU,KAKzC/3D,OAAOqtB,OAAOwqC,EAAS,CAC5B1iC,OAAQygC,EAAmB18B,OAC3B,GAEN,EAAC+S,EAEDmsB,iBAAA,SAAiBrC,GACf,MAAM+B,GAAW3D,EAAAA,EAAAA,IAAS4B,GAC1B,GAAI7gD,KAAK+hD,WAAWvyB,IAAIozB,GAAW,CACjC,MAAM1B,EAAWlhD,KAAK+hD,WAAW5vD,IAAIywD,GAEnC,OAAO9gD,QAAQwD,QAAQ47C,EAE3B,CAEA,OAAOlhD,KAAK0iD,kBAAkB,CAAEE,aAAY72C,MAAKm1C,IAC/ClhD,KAAK+hD,WAAWvsD,IAAIotD,EAAU1B,GAEvBA,IAEX,EAACnqB,EAEDosB,yBAAA,SAAyBtC,GACvB,MAAM+B,GAAW3D,EAAAA,EAAAA,IAAS4B,GAC1B,GAAI7gD,KAAKgiD,mBAAmBxyB,IAAIozB,GAAW,CACzC,MAAM1B,EAAWlhD,KAAKgiD,mBAAmB7vD,IAAIywD,GAE3C,OAAO9gD,QAAQwD,QAAQ47C,EAE3B,CAEA,OAAOlhD,KAAKijD,0BAA0B,CAAEL,aAAY72C,MAAKm1C,IACvDlhD,KAAKgiD,mBAAmBxsD,IAAIotD,EAAU1B,GAE/BA,IAEX,EAACnqB,EAED0nB,cAAA,SAAcoC,GACZ,OAAOpC,EAAAA,EAAAA,IAAcoC,EACvB,EAEA9pB,EACAomB,SAAA,SAAS0D,GACP,MAAM+B,GAAW3D,EAAAA,EAAAA,IAAS4B,GAC1B,GAAI7gD,KAAK4hD,OAAOpyB,IAAIozB,GAAW,CAC7B,MAAMjd,EAAO3lC,KAAK4hD,OAAOzvD,IAAIywD,GAE3B,OAAIjd,EAAKngC,MACA,CACLA,MAAOmgC,EAAKngC,MACZya,OAAQ0lB,EAAK1lB,QAIVne,QAAQwD,QAAQqgC,EAAKjc,QAEhC,CAEA,GAAI1pB,KAAK6hD,WAAWryB,IAAIozB,GACtB,OAAO5iD,KAAK6hD,WAAW1vD,IAAIywD,GAG7B,IAAIN,EAmQJ,OA5HEA,EAAkBxgD,QAAQgK,IAAI,CAC5B9L,KAAKojD,cACLpjD,KAAKkjD,iBAAiBN,KACrB72C,MAAKs3C,IACN,MAAMloD,EAASkoD,EAAQ,GACvB,GAAIloD,EAAO8kB,SAAWygC,EAAmB18B,MACvC,MAAO,CACL/D,OAAQygC,EAAmB18B,OAI/B,IAAIk9B,EAAW/lD,EAAOuuB,QACtB,MAAM,mBAAE03B,EAAkB,kBAAEE,EAAoB,IAAOJ,EAEjDoC,EAAc,CAAC,EAOfC,EAAwBzhD,QAAQgK,IAAI,CACxC9L,KAAK0hD,cAAcN,GACnBphD,KAAK0hD,cAAcN,EAAmB,UACrCr1C,MAAKwpB,IAAwB,IAE1BiuB,GAFIrC,EAAWvwD,GAAK2kC,EAmBxB,OAlBA+tB,EAAY7wB,UAAY,IAAIvY,MAEvBinC,GAAaA,aAAqBn9B,OACrCs/B,EAAYrjC,OAASygC,EAAmB18B,MACxCs/B,EAAY99C,MAAQ27C,IAEpBmC,EAAYrjC,OAASygC,EAAmBC,SAChB,IAApBxlD,EAAO4nD,WACTO,EAAYP,UAAW,GAEzB7B,EAAWp2D,OAAOqtB,OAAO+oC,EAAU,CACjCG,uBAAwBgC,EAAQ,GAC5BA,EAAQ,GAAGhC,uBAAsB,KAGvCmC,EAAgBvC,EAAgBC,EAAUC,EAAWvwD,IAGhD4yD,CAAa,IAGhBC,EAA0B3hD,QAAQgK,IACtCw1C,EAAkB9tD,KAAIkwD,IAEpB,GAAI1jD,KAAK8hD,cAAc4B,GAAkB,CACvC,MAAMZ,EAAc9iD,KAAK8hD,cAAc4B,GACvC,MAAO,CAAEA,kBAAiBZ,cAC5B,CAEA,OAAO9iD,KAAKqiD,YACQ,mBAAmBqB,EAAe,SAEnD33C,MAAKy0C,IACJ,MAAMsC,EAAcx6B,KAAKhmB,MAAMk+C,EAAIxgC,cACnC,MAAO,CAAE0jC,kBAAiBZ,cAAa,IAExC72C,OAAM,KACL,MAAM,IAAI+X,MAAM,sCACyC0/B,EAAe,SACvE,GACD,KAEN33C,MAAK43C,IACL,MAAMC,EAAwB,CAAC,EAO/B,OALAD,EAAmB93D,SAAQg4D,IAAuC,IAAtC,gBAAEH,EAAe,YAAEZ,GAAae,EAC1DD,EAAsBF,GAAmBZ,EACzC9iD,KAAK8hD,cAAc4B,GAAmBZ,CAAW,IAG5Cc,CAAqB,IAG9B,OACE9hD,QAAQgK,IAAI,CAACy3C,EAAuBE,IACjC13C,MAAK+3C,IAA0C,IAC1Cp6B,GADE85B,EAAeG,GAAmBG,EAaxC,OAXIN,IACF95B,EAAU,IAAK85B,EAAeG,sBAC9BL,EAAY55B,QAAUA,EACtBq6B,EAAAA,EAAQpG,KAAK,0BAA2B,CACtChY,KAAMjc,EACN85B,cAAe95B,KAInB1pB,KAAK4hD,OAAOpsD,IAAIotD,EAAUU,GAEtBA,EAAY99C,MACP,CACLA,MAAO89C,EAAY99C,MACnBya,OAAQqjC,EAAYrjC,QAIjByJ,CAAO,IAGfzd,OAAMpe,IACE,CACL2X,MAAO3X,EACPoyB,OAAQygC,EAAmB18B,SAE7B,IAKVs+B,EACGv2C,MAAK,KACJ/L,KAAK6hD,WAAWtwB,OAAOqxB,EAAS,IAEjC32C,OAAMzG,IAEL,MADAxF,KAAK6hD,WAAWtwB,OAAOqxB,GACjBp9C,CAAK,IAGfxF,KAAK6hD,WAAWrsD,IAAIotD,EAAUN,GAEvBA,CACT,EAEAvrB,EACAqmB,aAAA,SAAayD,EAASp4C,QAAO,IAAPA,IAAAA,EAAU,CAAC,GAC/B,MAAMm6C,GAAW3D,EAAAA,EAAAA,IAAS4B,GAC1B,GAAI7gD,KAAK4hD,OAAOpyB,IAAIozB,GAAW,CAAC,IAADoB,EAC7B,MAAM9C,EAAWlhD,KAAK4hD,OAAOzvD,IAAIywD,GAEjC,GAAI1B,EAASx3B,QACX,OAAOw3B,EAASx3B,QAGlB,GAAW,QAAXs6B,EAAIv7C,SAAO,IAAAu7C,GAAPA,EAASC,iBACX,MAAO,CACLz+C,MAAO07C,EAAS17C,MAChBya,OAAQihC,EAASjhC,OAGvB,CAEF,EAAC8W,EAEDmtB,eAAA,SAAetB,GAEb,QApkBkCuB,MACpC,GACE,eAAgB/zD,gBACW,IAApBA,UAAUg0D,WACjB,CACA,IAAKh0D,UAAUg0D,WAAWC,eAAa,IAAQ9kD,SAAS,MACtD,OAAO,EAET,GAAInP,UAAUg0D,WAAWE,SACvB,OAAO,CAEX,CACA,OAAO,CAAI,EAwjBJH,OAKD/zD,UAAUC,YAAa2wD,EAAUjyD,KAAKqB,UAAUC,cAKhD2P,KAAK4hD,OAAOpyB,IAAIozB,GAKtB,EAAC7rB,EAEDwtB,SAAA,SAAS3B,GACP,IAAK5iD,KAAKkkD,eAAetB,GACvB,MAAO,CACL72C,KAAMzG,GAAWA,GAAQ,GACzBqc,MAAOA,QAGX,GAAI3hB,KAAKmiD,kBAAkB3yB,IAAIozB,GAC7B,MAAO,CACL72C,KAAMzG,GAAWA,GAAQ,GACzBqc,MAAOA,QAIX,MAAM6iC,EAAQ,CACZl/C,QAAS,KACTvD,OAAQ,KACRmhB,QAAS,MAEXshC,EAAMthC,QAAU,IAAIphB,SAAQ,CAACwD,EAASvD,KACpCyiD,EAAMl/C,QAAUA,EAChBk/C,EAAMziD,OAASA,CAAM,IAEvB/B,KAAKkiD,eAAe72D,KAAK,CAACu3D,EAAU4B,IACpC,MAAMC,EAAS,IAAI/Z,gBAgBnB,OAfA+Z,EAAO3lC,OAAOjuB,iBAAiB,SAAS,KACtC,MAAM2e,EAAQxP,KAAKkiD,eAAe3uB,WAAUmxB,IAAA,IAAE/+C,GAAE++C,EAAA,OAAK/+C,IAAMi9C,CAAQ,KAEpD,IAAXpzC,GACFxP,KAAKkiD,eAAez+B,OAAOjU,EAAO,EACpC,IAGGxP,KAAKiiD,yBACRjiD,KAAKiiD,wBAAyB,EAC9B9/C,YAAW,KACTnC,KAAK2kD,2BAA2B,GAC/B,MAGE,CACL54C,KAAMA,CAACzG,EAASvD,IAAWyiD,EAAMthC,QAAQnX,KAAKzG,EAASvD,GACvD4f,MAAO8iC,EAAO9iC,MAAMjuB,KAAK+wD,GAE7B,EAAC1tB,EAED4tB,0BAAA,YACuBl1D,OAAOm1D,qBAAmB,CAAKlvD,GAAMyM,WAAWzM,EAAI,MAE5D,KACX,MAAMmvD,EAAa7kD,KAAKkiD,eAAez+B,OAAO,EAAG,GAC3CqhC,EAAahjD,QAAQgK,IACzB+4C,EAAWrxD,KAAIuxD,IAA2B,IAAzBnC,EAAUoC,GAASD,EASlC,OANK/kD,KAAKmiD,kBAAkB3yB,IAAIozB,KAC9B5iD,KAAKwiD,UAAU,qBAAsB,CAAEzpC,SAAU6pC,IACjD5iD,KAAKmiD,kBAAkB1uD,IAAImvD,IAIzB5iD,KAAKyiD,iBACAuC,EAAS1/C,SAAQ,GAGnBtF,KAAKilD,YAAWhG,EAAAA,EAAAA,IAAS2D,IAAW72C,MAAK,KACzC/L,KAAKoiD,kBAAkB5yB,IAAIozB,KAC9B5iD,KAAKwiD,UAAU,yBAA0B,CAAEzpC,SAAU6pC,IACrD5iD,KAAKoiD,kBAAkB3uD,IAAImvD,IAG7BoC,EAAS1/C,SAAQ,EAAK,GACtB,KAIFtF,KAAKkiD,eAAev2D,OACtBm5D,EAAW/4C,MAAK,KACd5J,YAAW,KACTnC,KAAK2kD,2BAA2B,GAC/B,IAAK,IAGV3kD,KAAKiiD,wBAAyB,CAChC,GAEJ,EAAClrB,EAEDkuB,WAAA,SAAWrC,GACT,MAAMsC,EAActE,EAAkBgC,GAsBpC,OAAOuC,EAAeD,EAAa,CACjCE,YAAY,YACZn1B,GAAG,UACFlkB,MAAK,IAGN/L,KAAKkjD,iBAAiBN,IAG5B,EAAC7rB,EAEDsuB,SAAA,SAASxE,GACP7gD,KAAKm9C,SAAS0D,EAChB,EAAC9pB,EAEDmmB,2BAAA,SAA2B2D,GACzB,MAAM+B,GAAW3D,EAAAA,EAAAA,IAAS4B,GACpBlb,EAAO3lC,KAAK+hD,WAAW5vD,IAAIywD,GACjC,GAAIjd,EAAM,CACR,MAAM6d,EAAgBvC,EAAgBtb,EAAKjc,SAE3C,MAAM,GAAN32B,OAAA7E,EACKo3D,EAAoB9B,EAAc7d,KAAKyb,qBAAmB,CAC7DR,EAAkBgC,IAEtB,CACE,OAAO,IAEX,EAAC7rB,EAEDwuB,eAAA,SAAe1E,GACb,MAAM+B,GAAW3D,EAAAA,EAAAA,IAAS4B,GACpBlb,EAAO3lC,KAAK4hD,OAAOzvD,IAAIywD,GAC7B,OAAQjd,GAAQA,EAAKod,QACvB,EAAChsB,EAEDqsB,YAAA,SAAYP,GACV,YADiB,IAAPA,IAAAA,EAAU,GACb7iD,KAAKqiD,YAA8B,4BAA4Bt2C,MACpEy0C,IACE,MAAM,OAAEvgC,EAAM,aAAED,GAAiBwgC,EAEjC,IAAIgF,EAEJ,GAAe,MAAXvlC,GAAkB4iC,EAAU,EAE9B,OAAO7iD,KAAKojD,YAAYP,EAAU,GAIpC,GAAe,MAAX5iC,EACF,IACE,MAAM6iC,EAAcx6B,KAAKhmB,MAAM0d,GAC/B,QAA2C5kB,IAAvC0nD,EAAYzB,uBACd,MAAM,IAAIr9B,MAAM,iCAGlBwhC,EAAU1C,CACZ,CAAE,MAAOj1D,GACP,CAIJ,OAAO23D,CAAO,GAGpB,EAAC/D,CAAA,CA7sBoB,GAgtBvB,MAAM6D,EAAsBlE,IACzB3xD,OAAOg2D,gBAAgBrE,IAAuB,IAAI5tD,KACjDkyD,GAASC,GAAkBD,IAGxB,IA4FH7lD,EA5FS+lD,EAAU,SAAAC,GACrB,SAAAD,EAAYE,EAAe9H,EAAYkD,GAAW,IAAD9gD,EA2B9C,OARDA,EAAAylD,EAAAn4D,KAAA,MAlBsB,SAACq4D,EAAWC,GAKhC,QAL0C,IAAVA,IAAAA,EAAU,eAKrCF,EAHHE,EAAU,cAGmBD,GAC7B,MAAM,IAAI/hC,MAAM,gEACiD+hC,EAAS,KAI5E,OACED,EAAcE,GAAYD,KAEvB95C,OAAMpe,GAAOA,GAEpB,GAEqBmwD,IAAW,KAE5BkD,GACF9gD,EAAK2hD,WAAWvsD,KAAIypD,EAAAA,EAAAA,IAASiC,EAAS5vC,MAAO,CAC3CsxC,SAAU1B,EAAS5vC,KACnBoY,QAASw3B,EACTjhC,OAAO,YAEV7f,CACH,EA7BqB6lD,EAAAA,EAAAA,GAAAL,EAAAC,GA6BpB,IAAAK,EAAAN,EAAAp5D,UA4DA,OA5DA05D,EAEDjB,WAAA,SAAWrC,GACT,OAAOiD,EAAAr5D,UAAMy4D,WAAUv3D,KAAC,KAAAk1D,GAAU72C,MAAK5Q,IACrC,GAAIA,EAAO8kB,SAAWygC,EAAmBC,QACvC,OAAO7+C,QAAQwD,UAEjB,MAAM47C,EAAW/lD,EAAOuuB,QAClBq8B,EAAY7E,EAASE,mBACrB+E,EAAgBb,EAAoBS,GAC1C,OAAOjkD,QAAQgK,IAAIq6C,EAAc3yD,IAAI2xD,IAAiBp5C,MAAK,IAAMm1C,GAAS,GAE9E,EAACgF,EAEDhD,iBAAA,SAAiBrC,GACf,OAAOgF,EAAAr5D,UAAM02D,iBAAgBx1D,KAAC,KAAAmzD,GAAS90C,MAAKzB,GACtCA,EAAKy4C,SAGAhC,EAAQF,EAAQ,QAAS90C,MAAKy0C,GAChB,MAAfA,EAAIvgC,OAIC,CACLA,OAAQygC,EAAmB18B,OAMxB1Z,IAGJA,GAEX,EAAC47C,EAED/C,yBAAA,SAAyBtC,GACvB,OAAOgF,EAAAr5D,UAAM22D,yBAAwBz1D,KAAC,KAAAmzD,GAAS90C,MAAKzB,GAC9CA,EAAKy4C,SAGAhC,EAAQF,EAAQ,QAAS90C,MAAKy0C,GAChB,MAAfA,EAAIvgC,OAIC,CACLA,OAAQygC,EAAmB18B,OAMxB1Z,IAGJA,GAEX,EAACs7C,CAAA,CAzFoB,CAASnE,GA8FzB,MAAM2E,EAAYC,IACvBxmD,EAAWwmD,CAAO,EAGPC,EAAe,CAC1B5G,QAASmB,GAAWhhD,EAAS0kD,SAAS1D,GAGtC3D,2BAA4B2D,GAC1BhhD,EAASq9C,2BAA2B2D,GACtC1D,SAAU0D,GAAWhhD,EAASs9C,SAAS0D,GAEvCzD,aAAc,SAACyD,EAASp4C,GAAY,YAAL,IAAPA,IAAAA,EAAU,CAAC,GACjC5I,EAASu9C,aAAayD,EAASp4C,EAAQ,EACzC87C,SAAU1D,GAAWhhD,EAAS0kD,SAAS1D,GACvC0E,eAAgB1E,GAAWhhD,EAAS0lD,eAAe1E,GACnDwE,SAAUxE,GAAWhhD,EAASwlD,SAASxE,GACvCuC,YAAaA,IAAMvjD,EAASujD,eAG9B,QAEO,SAASmD,IACd,OAAI1mD,EACKA,EAASiiD,cAET,CAAC,CAEZ,C,uJCh7BO,SAAS0E,EAAoBzyD,GAA0B,IAAzB,SAAEmG,EAAQ,SAAE6N,GAAUhU,EAKzD,OAJA0yD,EAAAA,EAAAA,YAAU,KACR1+C,GAAU,IAGL7N,CACT,CCXO,MAAMwsD,EAAmB,CAAC,OAAD,mDCqEzB,SAASC,EAAYC,EAAQC,GAClC,GAAID,aAAkBE,aAAeD,aAAkBC,YAAa,CAClE,MAAMC,EAAQF,EAAOxyD,aAAa,SAGlC,GAAI0yD,IAAUH,EAAOvyD,aAAa,SAAU,CAC1C,MAAM2yD,EAAWH,EAAOI,WAAU,GAGlC,OAFAD,EAASzuD,aAAa,QAAD,IACrByuD,EAASD,MAAQA,EACVA,IAAUH,EAAOG,OAASH,EAAOD,YAAYK,EACtD,CACF,CAEA,OAAOJ,EAAOD,YAAYE,EAC5B,C,cCrEA,MAAMK,EAAax3D,SAASoB,cAAc,OAEpCq2D,EAAyBA,KAC7B,MAAMC,EAAgB13D,SAASmc,iBAAiB,sBAEhD,IAAK,MAAMlV,KAAQywD,EACjBzwD,EAAKgQ,WAAWyI,YAAYzY,EAC9B,EAGI0wD,EAAiBA,KAAO,IAADC,EAC3B,MAAMC,EAAiB,GAEjBC,EAAU,IAAIr4B,IACpB,IAAK,MAAMx4B,KAAQuwD,EAAWxuD,WAAY,CAAC,IAAD+uD,EAAAC,EACxC,MAAMC,EAAWhxD,EAAKgxD,SAASr4C,cACzBjZ,EAAoB,QAAlBoxD,EAAG9wD,EAAKqD,kBAAU,IAAAytD,GAAI,QAAJC,EAAfD,EAAiBpxD,UAAE,IAAAqxD,OAAJ,EAAfA,EAAqB56D,MAEhC,GAAK45D,EAAiBnnD,SAASooD,GAExB,CACL,IAAIC,EAAajxD,EAAKswD,WAAU,GAIhC,GAHAW,EAAWrvD,aAAa,oBAAoB,GAGP,WAAjCqvD,EAAWD,SAASr4C,cAA4B,CAClD,MAAM2c,EAASv8B,SAASoB,cAAc,UACtC,IAAK,MAAMmD,KAAQ2zD,EAAW5tD,WAC5BiyB,EAAO1zB,aAAatE,EAAKnF,KAAMmF,EAAKnH,OAEtCm/B,EAAOzzB,UAAYovD,EAAWpvD,UAC9BovD,EAAa37B,CACf,CAEA,GAAI51B,EACF,GAAKmxD,EAAQh4B,IAAIn5B,GAGV,CAAC,IAADwxD,EACL,MAAMC,EAAgCN,EAAQr1D,IAAIkE,GACM,QAAxDwxD,EAAAN,EAAeO,GAA+BnhD,kBAAU,IAAAkhD,GAAxDA,EAA0Dz4C,YACxDm4C,EAAeO,IAEjBP,EAAeO,GAAiCF,CAClD,MAREL,EAAel8D,KAAKu8D,GACpBJ,EAAQhyD,IAAIa,EAAIkxD,EAAe57D,OAAS,QAS1C47D,EAAel8D,KAAKu8D,EAExB,MACF,CAEA,MAAMG,EAAuBr4D,SAASmc,iBAAiB,sBAEf,IAADm8C,EAAvC,GAAoC,IAAhCD,EAAqBp8D,OAEvB,YADAq8D,EAAAt4D,SAASkB,MAAKq3D,OAAM38D,MAAA08D,EAAIT,GAI1B,MAAMW,EAAe,IDahB,SAAkBn0D,GAA0C,IAAzC,SAAEo0D,EAAQ,SAAEC,EAAQ,QAAEC,EAAO,MAAEC,GAAOv0D,EAC9D,IAAK,MAAMw0D,KAAuBJ,EAAU,CAC1C,MAAMK,EAAkBJ,EAAS70B,WAAU1jC,GACzC82D,EAAY92D,EAAG04D,MAGQ,IAArBC,EACFH,EAAQE,GAGRH,EAAS3kC,OAAO+kC,EAAiB,EAErC,CAGA,IAAK,MAAMC,KAAWL,EACpBE,EAAMG,EAEV,CC9BEC,CAAU,CACRP,SAAUJ,EACVK,SAAUb,EACVc,QAAS1xD,GAAQA,EAAKgQ,WAAWyI,YAAYzY,GAC7C2xD,MAAO3xD,GAAQuxD,EAAa78D,KAAKsL,MAGnC2wD,EAAA53D,SAASkB,MAAKq3D,OAAM38D,MAAAg8D,EAAIY,EAAa,EAehC,SAASS,EAAqB50D,GAIjC,IAJkC,cACpC60D,EAAa,mBACbjF,EAAkB,mBAClBkF,GACD90D,GACC0yD,EAAAA,EAAAA,YAAU,KACR,GAAImC,SAAAA,EAAeE,KAAM,EDjFtB,SAA6Bl4D,GAClC,GAAe,mBAAJA,EACT,MAAM,IAAIozB,MAAM,uDACyCpzB,EAAI,KAEjE,CC6EMm4D,CAAoBH,EAAcE,MAElC,MAAM,OAAE38C,IAAW68C,EAAAA,EAAAA,KAEbF,EAAOF,EAAcE,KAE3B38C,GAIE88C,EAAAA,EAAAA,KAACzC,EAAoB,CAACz+C,SAAUs/C,EAAentD,UAC7C+uD,EAAAA,EAAAA,KAAC3J,EAAAA,GAAmBhU,SAAQ,CAACx+C,MAAO62D,EAAmBzpD,UACrD+uD,EAAAA,EAAAA,KAACC,EAAAA,iBAAgB,CAAAhvD,UACf+uD,EAAAA,EAAAA,KAACH,EAAI,KD7Gav9B,EC6GQs9B,ED5G/B,CACLvwC,SAAU,CACRS,SAAUwS,EAAMjT,SAASS,UAE3BlX,OAAQ0pB,EAAM1pB,OACdyI,KAAMihB,EAAMjhB,MAAQ,CAAC,EACrB6+C,YAAa59B,EAAM49B,sBC0GfjC,EAEJ,CDnHG,IAAyB37B,ECqH5B,MAAO,KACL47B,GAAwB,CACzB,GAEL,CCxHA,SAASiC,EAAa18D,GACpB,MAAMm8D,EAAqB,IACtBn8D,EACHmV,OAAQ,KACHm9C,EAAAA,EAAAA,IAAgBtyD,EAAM4rB,SAASS,aAC/BrsB,EAAM82D,cAAchC,KAAK2H,YAAYE,WAM5C,IAAIC,EAFkBj2B,MAIpBi2B,EADE58D,EAAM82D,cAAc+F,iBACR78D,EAAM82D,cAAc+F,kBAEpBz4D,EAAAA,EAAAA,gBANMuiC,EAMsB3mC,EAAM82D,cAAcrC,YAN/B9tB,EAAE1X,SAAY0X,EAM6B,IACrEw1B,EACH/8D,IAAKY,EAAM4kB,MAAQ5kB,EAAM82D,cAAc7d,KAAKr0B,OAMhDq3C,EAAsB,CACpBC,cAHoBl8D,EAAM82D,cAAc5yD,KAIxC+yD,mBAAoBj3D,EAAM82D,cAAcG,mBACxCkF,uBAeF,OAZoBrG,EAAAA,EAAAA,GAAU,kBAE5B,CACEpuD,QAASk1D,EACT58D,MAAOm8D,GAETS,GACAv1D,IAAiB,IAAhB,OAAEoH,GAAQpH,EACT,MAAO,CAAEK,QAAS+G,EAAQzO,MAAOm8D,EAAoB,IAEvDW,KAGJ,CAEAJ,EAAa3xC,UAAY,CACvBa,SAAUmxC,IAAAA,OAAiBlO,WAC3BiI,cAAeiG,IAAAA,OAAiBlO,WAChCjxC,KAAMm/C,IAAAA,OACNN,YAAaM,IAAAA,OAAiBlO,YAGhC,O,kICxDO,MAAMmO,EAAsB,CACjCrzD,GAAG,mBACHiC,MAAO,CACLsW,SAAS,WACTgnB,IAAK,EACLhyB,MAAO,EACPC,OAAQ,EACR8lD,QAAS,EACTC,SAAS,SACTC,KAAK,mBACLC,WAAW,SACXpzC,OAAQ,GAEV,YAAY,YACZ,cAAc,Q,kCCLhB,SAASqzC,EAAchxC,GACrB,MAAMmmC,GAAWC,EAAAA,EAAAA,GAAwBpmC,IACnC,KAAEP,EAAI,OAAED,GAAW9oB,OAAO6oB,SAEhC,OAAgB,MAAZ4mC,IACFzvD,OAAOu6D,WAAW9K,EAASE,OAAS7mC,EAASC,IACtC,EAIX,CAGA,IAAIyxC,EAAS,GAEbx6D,OAAOoB,iBAAiB,sBAAsBqvC,IACxC,6BAA6BnxC,KAAKmxC,EAAM3c,SACtC0mC,IACFx6D,OAAO6oB,SAASS,SAAWkxC,EAE/B,IAGF,MAAMC,EAAmBA,CAAC5xC,EAAU6xC,KAC7BJ,EAAczxC,EAASS,YAC1BkxC,EAAY3xC,EAASS,UACrBypC,EAAAA,EAAAA,GAAU,mBAAoB,CAAElqC,WAAU6xC,iBAC5C,EAGIC,EAAgBA,CAAC9xC,EAAU6xC,KAC1BJ,EAAczxC,EAASS,YAC1BypC,EAAAA,EAAAA,GAAU,gBAAiB,CAAElqC,WAAU6xC,gBAOzC,EAGIrwC,EAAW,SAACC,EAAItR,GAIpB,QAJ2B,IAAPA,IAAAA,EAAU,CAAC,GAIlB,iBAAFsR,EAET,YADAuB,EAAAA,GAAcxB,SAASC,GAIzB,MAAM,SAAEhB,EAAQ,OAAER,EAAM,KAAEC,IAAS6xC,EAAAA,EAAAA,IAAUtwC,GACvCmlC,GAAWC,EAAAA,EAAAA,GAAwBpmC,GAUzC,GANImmC,IACFnlC,EAAKmlC,EAASE,OAAS7mC,EAASC,GAK9B/oB,OAAO66D,aAET,YADA76D,OAAO6oB,SAAWS,EAAWR,EAASC,GAMxC,MAAM+xC,EAAYpoD,YAAW,KAC3B4hD,EAAAA,EAAQpG,KAAK,6BAA8B,CAAE5kC,cAC7CypC,EAAAA,EAAAA,GAAU,uBAAwB,CAChClqC,SAAU7oB,OAAO6oB,UACjB,GACD,KAEHmnC,EAAAA,GAAOtC,SAASpkC,EAAWR,GAAQxM,MAAKy3C,IAOtC,IAAKA,GAAiBA,EAAcvjC,SAAWygC,EAAAA,GAAmB18B,MAIhE,OAHAv0B,OAAO4pB,QAAQe,aAAa,CAAC,EAAE,GAAK9B,SAASG,MAC7ChpB,OAAO6oB,SAAWS,OAClB4Y,aAAa44B,GAM8B/G,GAEzCA,EAAc7d,KAAK0b,yBACnB5xD,OAAO+6D,4BAIL,kBAAmBp6D,WACoB,OAAvCA,UAAUq6D,cAAcC,YACgB,cAAxCt6D,UAAUq6D,cAAcC,WAAWtxC,OAEnChpB,UAAUq6D,cAAcC,WAAWC,YAAY,CAC7CC,UAAU,uBAIdn7D,OAAO6oB,SAAWS,EAAWR,EAASC,IAG1CqyC,EAAAA,EAAAA,UAAc9wC,EAAItR,GAClBkpB,aAAa44B,EAAU,GAE3B,EAEA,SAAS9P,EAAmBM,EAAehnD,GAAiB,IAAf,SAAEukB,GAAUvkB,EACvD,MAAM,SAAEglB,EAAQ,KAAEP,GAASF,EACrBilC,GAAUiF,EAAAA,EAAAA,GAAU,qBAAsB,CAC9CzH,kBAEAhiC,WACAiiC,YAAa,CAAE1iC,YACfwyC,uBAAwB3pD,GAAQ,CAC9B,EAGAnB,KAAKi6C,cAAc94B,KAAKhgB,EAAMA,EAAKrV,QAGvC,GAAIyxD,EAAQ5xD,OAAS,EAGnB,OAAO4xD,EAAQA,EAAQ5xD,OAAS,GAGlC,GAAIovD,EAAiB,CACnB,MACEziC,UAAYS,SAAUgyC,IACpBhQ,EACJ,GAAIgQ,IAAgBhyC,EAGlB,OAAOP,EAAOW,UAAUX,EAAK3pB,MAAM,IAAM,CAAC,EAAG,EAEjD,CACA,OAAO,CACT,CAYC,IAEKm8D,EAAc,SAAAhR,GAClB,SAAAgR,EAAYt+D,GAAQ,IAAD0T,EAEuB,OADxCA,EAAA45C,EAAAtsD,KAAA,KAAMhB,IAAM,MACPu+D,gBAAkBnZ,EAAAA,YAAiB1xC,CAC1C,EAJkB6lD,EAAAA,EAAAA,GAAA+E,EAAAhR,GAIjB,IAAAjjB,EAAAi0B,EAAAx+D,UAwBA,OAxBAuqC,EAEDgc,mBAAA,SAAmByH,EAAW0Q,GAC5BhjD,uBAAsB,KACpB,IAAIijD,EAAQ,eAAkBnrD,KAAKtT,MAAM4rB,SAASS,SAC9CrpB,SAAS4T,QACX6nD,EAAWz7D,SAAS4T,OAEtB,MAAM8nD,EAAe17D,SAASmc,iBAAiB,4BAC3Cu/C,GAAgBA,EAAaz/D,SAC/Bw/D,EAAWC,EAAa,GAAGC,aAE7B,MAAMC,EAAe,gBAAmBH,EACxC,GAAInrD,KAAKirD,gBAAgBtZ,QAAS,CACR3xC,KAAKirD,gBAAgBtZ,QAAQ1nC,YAC7BqhD,IACtBtrD,KAAKirD,gBAAgBtZ,QAAQ1nC,UAAYqhD,EAE7C,IAEJ,EAACv0B,EAED5qB,OAAA,WACE,OAAO88C,EAAAA,EAAAA,KAAA,UAASS,EAAqBtyC,IAAKpX,KAAKirD,iBACjD,EAACD,CAAA,CA5BiB,CAASlZ,EAAAA,WA+B7B,MAAMyZ,EAAuBA,CAACpB,EAAcqB,KAAkB,IAADC,EAAAC,EAC3D,OAAIvB,EAAa1xC,OAAS+yC,EAAa/yC,OAInC0xC,SAAmB,QAAPsB,EAAZtB,EAAc/wC,aAAK,IAAAqyC,OAAP,EAAZA,EAAqB3/D,QAAQ0/D,SAAmB,QAAPE,EAAZF,EAAcpyC,aAAK,IAAAsyC,OAAP,EAAZA,EAAqB5/D,IAI1C,EAGd,IACM6/D,EAAY,SAAAC,GAChB,SAAAD,EAAYj/D,GAAQ,IAAD6qC,EAEqB,OADtCA,EAAAq0B,EAAAl+D,KAAA,KAAMhB,IAAM,KACZw9D,EAAiBx9D,EAAM4rB,SAAU,MAAKif,CACxC,EAJgB0uB,EAAAA,EAAAA,GAAA0F,EAAAC,GAIf,IAAA1F,EAAAyF,EAAAn/D,UA2BA,OA3BA05D,EAEDhL,kBAAA,WACEkP,EAAcpqD,KAAKtT,MAAM4rB,SAAU,KACrC,EAAC4tC,EAED2F,sBAAA,SAAsBrR,GACpB,QAAI+Q,EAAqB/Q,EAAUliC,SAAUtY,KAAKtT,MAAM4rB,YACtD4xC,EAAiBlqD,KAAKtT,MAAM4rB,SAAUkiC,EAAUliC,WACzC,EAGX,EAAC4tC,EAEDnT,mBAAA,SAAmByH,GACb+Q,EAAqB/Q,EAAUliC,SAAUtY,KAAKtT,MAAM4rB,WACtD8xC,EAAcpqD,KAAKtT,MAAM4rB,SAAUkiC,EAAUliC,SAEjD,EAAC4tC,EAED/5C,OAAA,WACE,OACE2/C,EAAAA,EAAAA,MAACha,EAAAA,SAAc,CAAA53C,SAAA,CACZ8F,KAAKtT,MAAMwN,UACZ+uD,EAAAA,EAAAA,KAAC+B,EAAc,CAAC1yC,SAAUA,aAGhC,EAACqzC,CAAA,CA/Be,CAAS7Z,EAAAA,W,wBCtN3B,SAASia,EAAezwD,EAAGC,GACzB,IAAK,IAAI9P,KAAK6P,EACZ,KAAM7P,KAAK8P,GAAI,OAAO,EACvB,IAAK,IAAInO,KAAMmO,EACd,GAAID,EAAElO,KAAQmO,EAAEnO,GAAK,OAAO,EAC7B,OAAO,CACV,CC8GA,MAlHqB,SAAA4sD,GACnB,SAAAgS,EAAYt/D,GAAQ,IAAD0T,EACjBA,EAAA45C,EAAAtsD,KAAA,OAAO,KACP,MAAM,SAAE4qB,EAAQ,cAAEkrC,GAAkB92D,EAQnC,OAPD0T,EAAKgZ,MAAQ,CACXd,SAAU,IAAKA,GACfkrC,cACEA,GACA/D,EAAAA,GAAOrC,aAAa9kC,EAASS,SAAWT,EAASC,OAAQ,CACvD0rC,kBAAkB,KAEvB7jD,CACH,EAZmB6lD,EAAAA,EAAAA,GAAA+F,EAAAhS,GAYlBgS,EAEMC,yBAAP,SAAAl4D,EAA8Cm4D,GAAY,IAA1B,SAAE5zC,GAAUvkB,EAC1C,GAAIm4D,EAAU5zC,SAASG,OAASH,EAASG,KAAM,CAQ7C,MAAO,CACL+qC,cARoB/D,EAAAA,GAAOrC,aAC3B9kC,EAASS,SAAWT,EAASC,OAC7B,CACE0rC,kBAAkB,IAMpB3rC,SAAU,IAAKA,GAEnB,CAEA,MAAO,CACLA,SAAU,IAAKA,GAEnB,EAAC,IAAAye,EAAAi1B,EAAAx/D,UA+EA,OA/EAuqC,EAEDo1B,cAAA,SAActL,GACZpB,EAAAA,GAAOtC,SAAS0D,GAAS90C,MAAKy3C,IACxBA,GAAiBA,EAAcvjC,SAAWygC,EAAAA,GAAmB18B,MAC/DhkB,KAAKi7B,SAAS,CACZ3iB,SAAU,IAAK7oB,OAAO6oB,UACtBkrC,mBAGF/zD,OAAO4pB,QAAQe,aAAa,CAAC,EAAE,GAAK9B,SAASG,MAC7ChpB,OAAO6oB,SAAWuoC,EACpB,GAEJ,EAAC9pB,EAED80B,sBAAA,SAAsBX,EAAWkB,GAE/B,OAAKA,EAAU5I,cAkBXxjD,KAAKoZ,MAAMoqC,gBAAkB4I,EAAU5I,gBAIzCxjD,KAAKoZ,MAAMoqC,cAAcrC,YAAciL,EAAU5I,cAAcrC,YAK7DnhD,KAAKoZ,MAAMoqC,cAAchC,OAAS4K,EAAU5I,cAAchC,SAM5DxhD,KAAKoZ,MAAMd,SAASxsB,MAAQsgE,EAAU9zC,SAASxsB,MAC/CsgE,EAAU5I,cAAc7d,OACvBymB,EAAU5I,cAAc7d,KAAKkZ,YAC5BuN,EAAU5I,cAAc7d,KAAKr0B,ODhFrC,SAA0BzR,EAAUqrD,EAAWkB,GAC7C,OAAOL,EAAelsD,EAASnT,MAAOw+D,IAAca,EAAelsD,EAASuZ,MAAOgzC,EACpF,CCkFUC,CAAersD,KAAMkrD,EAAWkB,OAvCrCpsD,KAAKmsD,cACHjB,EAAU5yC,SAASS,SAAWmyC,EAAU5yC,SAASC,SAE5C,EAqCX,EAACwe,EAED5qB,OAAA,WAiBE,OAAOnM,KAAKtT,MAAMwN,SAAS8F,KAAKoZ,MAClC,EAAC4yC,CAAA,CA/GkB,CAASla,EAAAA,W,4YCuB9B,MAAM2N,EAAS,IAAImG,EAAAA,GAAWE,EAAe9H,EAAYvuD,OAAOyxD,WAChEkF,EAAAA,EAAAA,IAAU3G,GACVA,EAAO8C,aAAaC,EAAAA,GAEpB,MAAM,OAAEr2C,EAAM,QAAEmgD,IAAYtD,EAAAA,EAAAA,KAE5Bv5D,OAAOq2D,cAAgBA,EACvBr2D,OAAO88D,WAAaxI,EAAAA,EACpBt0D,OAAO+8D,UAAYlG,EAAAA,GHgIjBhrC,EAAAA,GAAc3B,QAAOxY,IACnBA,EAAKmX,SAASuB,OAAS1Y,EAAK0Y,MAAM,IAGpCpqB,OAAOg9D,QAAU1yC,GAAMD,EAASC,EAAI,CAAE/iB,SAAS,IAC/CvH,OAAOu6D,WAAajwC,GAAMD,EAASC,EAAI,CAAE/iB,SAAS,IAClDvH,OAAOi9D,YAAc,CAAC3yC,EAAItR,IAAYqR,EAASC,EAAItR,GGlIrD,MAAMkkD,EAAgB,wCAEtBC,EAAAA,EAAAA,GAAe,iBAAiB7gD,MAAK,MAG/By2C,EAAAA,EAAAA,GAAU,yBAAyBv3D,OAAO4hE,SAASlhE,OAAS,GAC9DqxD,EAAQ,MAWV,MAAM8P,EAAepgE,IACnBu8D,EAAAA,EAAAA,KAAC8D,EAAAA,YAAYzhB,SAAQ,CACnBx+C,MAAO,CACLkgE,QAAQ,IACRC,SAAS,KACT/yD,UAEF+uD,EAAAA,EAAAA,KAACG,EAAAA,EAAY,IAAK18D,MAIhBwgE,EAAcpb,EAAAA,cAAoB,CAAC,GAAE,IAErCqb,EAAU,SAAAnT,GAAA,SAAAmT,IAAA,OAAAnT,EAAA1uD,MAAA,KAAAI,YAAA,KA6Bb,OA7Bau6D,EAAAA,EAAAA,GAAAkH,EAAAnT,GAAAmT,EAAA3gE,UACd2f,OAAA,WACE,MAAM,SAAEjS,GAAa8F,KAAKtT,MAC1B,OACEu8D,EAAAA,EAAAA,KAACmE,EAAAA,SAAQ,CAAAlzD,SACNnG,IAAA,IAAC,SAAEukB,GAAUvkB,EAAA,OACZk1D,EAAAA,EAAAA,KAAC+C,EAAe,CAAC1zC,SAAUA,EAASpe,SACjClG,IAAkC,IAAjC,cAAEwvD,EAAa,SAAElrC,GAAUtkB,EAC3B,GAAIwvD,EAAc+F,iBAChB,OACEN,EAAAA,EAAAA,KAACiE,EAAY5hB,SAAQ,CAACx+C,MAAO,CAAE02D,gBAAelrC,YAAWpe,SACtDA,IAGA,CACL,MAAMypD,GAAqB4C,EAAAA,EAAAA,MAC3B,OACE0C,EAAAA,EAAAA,KAAC3J,EAAAA,GAAmBhU,SAAQ,CAACx+C,MAAO62D,EAAmBzpD,UACrD+uD,EAAAA,EAAAA,KAACiE,EAAY5hB,SAAQ,CAACx+C,MAAO,CAAE02D,gBAAelrC,YAAWpe,SACtDA,KAIT,IAEc,GAI1B,EAACizD,CAAA,CA7Ba,CAASrb,EAAAA,WAgCnBub,EAAe,SAAAzB,GAAA,SAAAyB,IAAA,OAAAzB,EAAAtgE,MAAA,KAAAI,YAAA,KAsClB,OAtCkBu6D,EAAAA,EAAAA,GAAAoH,EAAAzB,GAAAyB,EAAA7gE,UACnB2f,OAAA,WACE,OACE88C,EAAAA,EAAAA,KAACiE,EAAYI,SAAQ,CAAApzD,SAClBqT,IAAA,IAAC,cAAEi2C,EAAa,SAAElrC,GAAU/K,EAAA,OAC3B07C,EAAAA,EAAAA,KAAC0C,EAAY,CAACrzC,SAAUA,EAASpe,UAC/B+uD,EAAAA,EAAAA,KAAChQ,EAAAA,GAAa,CACZ3gC,SAAUA,EACVmiC,mBAAoBA,EAAmBvgD,UAEvC+uD,EAAAA,EAAAA,KAACsE,EAAAA,OAAM,CACLN,SAAU3O,GACVhmC,SAAUA,EACVjiB,GAAG,uBAAsB6D,UAEzB+uD,EAAAA,EAAAA,KAAC6D,EAAY,CACXx7C,KACyB,cAAvBkyC,EAAc7d,KAAKr0B,MACI,cAAvBkyC,EAAc7d,KAAKr0B,MACf+sC,EAAAA,EAAAA,GAAY/lC,EAASS,SAAUulC,IAC/BplC,WAEIsqC,EAAc7d,KAAKkZ,WACnB2E,EAAc7d,KAAKr0B,MACnBza,MAAM,KAAK,OAGjBmJ,KAAKtT,MACT4rB,SAAUA,EACVkrC,cAAeA,KACXA,EAAchC,YAIX,GAIvB,EAAC6L,CAAA,CAtCkB,CAASvb,EAAAA,WAyC9B,MAAM,SAAE8Q,EAAUtqC,SAAUk1C,GAAe/9D,OAYzCmzD,GACAtE,GAAgBsE,IACd4K,EAAWz0C,UAAY6pC,EAASrjD,SAAS,KAAOiuD,EAAWj1C,OAAM,OAEjEknC,EAAOhB,eAAcJ,EAAAA,EAAAA,GAAYmP,EAAWz0C,SAAUulC,MACtDsE,EAASpgD,MAAM,6BACfogD,EAASpgD,MAAM,+CAGjBsX,EAAAA,EAAAA,UACEwkC,GACEsE,GACEA,EAASrjD,SAAS,KAAwB,GAAjBiuD,EAAWj1C,QACtCi1C,EAAWh1C,KACb,CACExhB,SAAS,IAMf,MAAMy2D,EAAoBA,KACxB,IACE,OAAO9R,cACT,CAAE,MACA,OAAO,IACT,GAGF2K,EAAAA,GAAanJ,SAASqQ,EAAWz0C,SAAWy0C,EAAWj1C,QAAQxM,MAAK45B,IAAS,IAAD+nB,EAC1E,MAAM/R,EAAiB8R,IAEvB,GACE9nB,SAAU,QAAN+nB,EAAJ/nB,EAAMA,YAAI,IAAA+nB,GAAVA,EAAYrM,wBACZ1b,EAAKA,KAAK0b,yBAA2B5xD,OAAO+6D,4BAI1C,kBAAmBp6D,WACoB,OAAvCA,UAAUq6D,cAAcC,YACgB,cAAxCt6D,UAAUq6D,cAAcC,WAAWtxC,OAEnChpB,UAAUq6D,cAAcC,WAAWC,YAAY,CAC7CC,UAAU,uBAUVjP,GAAgB,CAGlB,KAF2D,MAAxCA,EAAeC,QAAQ+Q,IAKxC,OAFAhR,EAAeG,QAAQ6Q,EAAiB,UACxCl9D,OAAO6oB,SAASq1C,QAAO,EAG3B,CAOF,GAJIhS,GACFA,EAAeiS,WAAWjB,IAGvBhnB,GAAQA,EAAK1lB,SAAWygC,EAAAA,GAAmB18B,MAAO,CACrD,MAAMlB,EAAO,sBAAyB0qC,EAAWz0C,SAAQ,kCAIzD,GAAI4sB,GAAQA,EAAKngC,MAEf,MADAD,QAAQC,MAAMsd,GACR6iB,EAAKngC,MAGb,MAAM,IAAIwe,MAAMlB,EAClB,CAEA,MAAM+qC,GAAWrL,EAAAA,EAAAA,GAAU,kBAEzB,CAAEpuD,SAAS60D,EAAAA,EAAAA,KAACoE,EAAe,MAC3BpE,EAAAA,EAAAA,KAACoE,EAAe,KAChB93B,IAAiB,IAAhB,OAAEp6B,GAAQo6B,EACT,MAAO,CAAEnhC,QAAS+G,EAAQ,IAE5BquD,MAEIsE,EAAM,WACV,MAAMC,EAAsBjc,EAAAA,QAAa,GAazC,OAXAA,EAAAA,WAAgB,KACTic,EAAoBpc,UACvBoc,EAAoBpc,SAAU,EAC1B/hD,YAAYL,MACdK,YAAYL,KAAK,0BAGnBizD,EAAAA,EAAAA,GAAU,yBACZ,GACC,KAEIyG,EAAAA,EAAAA,KAACkE,EAAU,CAAAjzD,SAAE2zD,GACtB,EAEMG,EAAUt+D,SAASkrD,eAAe,wBAIxC,IAAIqT,EAAkB9hD,EAClB6hD,GAAWA,EAAQ9zD,SAASvO,SAC9BsiE,EAAkB3B,GAGpB,MAAM4B,GAAW1L,EAAAA,EAAAA,GAAU,8BAEzBpnD,EACA6yD,GACA,GAEF,SAASE,IACP,MAAMC,EACS,oBAAN3+D,OACHC,SAASkrD,eAAe,aACxB,KAENsT,GAASjF,EAAAA,EAAAA,KAAC6E,EAAG,IAAKM,EACpB,CAIA,MAAMC,EAAM3+D,SACZ,GACgB,aAAd2+D,EAAIzzD,YACW,YAAdyzD,EAAIzzD,aAA6ByzD,EAAI19D,gBAAgBgK,SAEtDwH,YAAW,WACTgsD,GACF,GAAG,OACE,CACL,MAAM1Q,EAAU,WACd4Q,EAAIvzD,oBAAoB,mBAAoB2iD,GAAS,GACrDhuD,OAAOqL,oBAAoB,OAAQ2iD,GAAS,GAE5C0Q,GACF,EAEAE,EAAIx9D,iBAAiB,mBAAoB4sD,GAAS,GAClDhuD,OAAOoB,iBAAiB,OAAQ4sD,GAAS,EAC3C,CAEM,GACN,G,4EC5RJ,UAlByB1pD,IAAmB,IAAlB,SAAEukB,GAAUvkB,EACpC,MAAMyvD,EAAgB/D,EAAAA,GAAOrC,aAAa9kC,EAASS,UACnD,OAAKyqC,EAGE1R,EAAAA,cAAoBwc,EAAAA,EAAsB,CAC/Ch2C,WACAkrC,mBACGA,EAAchC,OALV,IAMP,C,uBCfkBnuB,MAKpBzV,EAAOrC,SALa8X,EAKW2pB,EAAQ,OALR3pB,EAAE1X,SAAY0X,C,oECE/C,MAAM7/B,EAAM,IAAImmD,QAOT,SAASqP,IACd,IAAI78C,EACAmgD,EAEc,CAChB,MAAMiC,EAAiBvR,EAAQ,KAE/B7wC,EAASA,CAACmvC,EAAWkT,KACnB,IAAInjD,EAAO7X,EAAIrB,IAAIq8D,GACdnjD,GACH7X,EAAIgC,IAAIg5D,EAAKnjD,EAAOkjD,EAAeE,WAAWD,IAEhDnjD,EAAKc,OAAOmvC,EAAU,EAGxBgR,EAAUA,CAAChR,EAAWkT,IAAOD,EAAeG,YAAYF,EAAIlT,EAC9D,CAMA,MAAO,CAAEnvC,SAAQmgD,UACnB,C,qBChCA/wC,EAAQ,EAAW+/B,GAAaA,C,oECIhC,MAAMqT,EAAc,IAAIx/B,IAClBy/B,EAAwB,IAAIz/B,IAU3B,SAASgwB,EAAwBpmC,GACtC,IAAImmC,EAAWyP,EAAYx8D,IAAI4mB,GAI/B,OAHKmmC,IACHA,EAAW0P,EAAsBz8D,IAAI4mB,EAASzJ,gBAEzC4vC,CACT,C,GAdUrzD,SAAQqzD,IACZA,EAASvI,WACXiY,EAAsBp5D,IAAI0pD,EAAS2P,SAAU3P,GAE7CyP,EAAYn5D,IAAI0pD,EAAS2P,SAAU3P,EACrC,G,yDCTwB,WAAxBzvD,OAAO6oB,SAASK,UACQ,cAAxBlpB,OAAO6oB,SAASO,SAEhBtT,QAAQC,MAAM,gFAGL,kBAAmBpV,WAC5BA,UAAUq6D,cACPqE,SAAyB,UACzB/iD,MAAK,SAAUgjD,GACdA,EAAIl+D,iBAAiB,eAAe,MAClC2xD,EAAAA,EAAAA,GAAU,6BAA8B,CAAEiI,cAAesE,IAGzD,MAAMC,EAAmBD,EAAIE,WAC7B1pD,QAAQ2R,IAAI,mBAAoB83C,GAChCA,EAAiBn+D,iBAAiB,eAAe,KAC/C,OAAQm+D,EAAiB51C,OACvB,IAAI,YACEhpB,UAAUq6D,cAAcC,YAK1Bj7D,OAAO66D,cAAe,GAEtB9H,EAAAA,EAAAA,GAAU,6BAA8B,CAAEiI,cAAesE,IAGrDt/D,OAAOy/D,qBACT3pD,QAAQ2R,IAAI,4CACZznB,OAAO6oB,SAASq1C,YAKlBpoD,QAAQ2R,IAAI,sCAKZsrC,EAAAA,EAAAA,GAAU,2BAA4B,CAAEiI,cAAesE,KAEzD,MAEF,IAAI,YACFxpD,QAAQC,MAAM,oDACdg9C,EAAAA,EAAAA,GAAU,2BAA4B,CAAEiI,cAAesE,IACvD,MAEF,IAAI,aACFvM,EAAAA,EAAAA,GAAU,wBAAyB,CAAEiI,cAAesE,IAExD,GACA,GAEN,IACC9iD,OAAM,SAAUpc,GACf0V,QAAQC,MAAM,4CAA6C3V,EAC7D,G,oCCzDW,SAASwuD,EAAYtnD,EAAKyD,GACvC,YAD6C,IAANA,IAAAA,EAAM,IACxCA,EAIDzD,IAAQyD,EACJ,IAGJzD,EAAIoZ,WAAc3V,EAAM,KACnBzD,EAAIlI,MAAM2L,EAAO7O,QAGnBoL,EAXEA,CAYX,C,iKCfO,MAAMo4D,EAAkBp7D,IAAkB,IAAjB,QAAEK,GAASL,EACzC,MAAMm3C,EAAc,IAAIvJ,EAAAA,YAAY,CAClCpI,eAAgB,CACd6F,QAAS,CACP6M,sBAAsB,EACtBmjB,gBAAgB,EAChBpjB,oBAAoB,EACpB1N,MAAO,EACPC,WAAY,IACZxC,UAAW,SAKjB,OACE+vB,EAAAA,EAAAA,MAAC3gB,EAAAA,oBAAmB,CAAC7L,OAAQ4L,EAAYhxC,SAAA,CACtC9F,GACD60D,EAAAA,EAAAA,KAAC1yB,EAAAA,mBAAkB,MACC,C,oCCpB1B,IAAIyiB,EAAyBgE,EAAQ,MACrCzhC,EAAQG,YAAa,EACrBH,EAAQ8zC,kBAAe,EACvB,IAAIlT,EAASnD,EAAuBgE,EAAQ,OACxCsS,EAAqBtS,EAAQ,MAC7BuS,EAAkBvS,EAAQ,KAoB9BzhC,EAAQ8zC,aAfW,SAAsBt7D,GACvC,IAAIK,EAAUL,EAAKK,QACjBo7D,EAAgBz7D,EAAKy7D,cACnBC,EAAeD,EAAcC,aAC/BC,EAAgBF,EAAcE,cAC9BC,EAAaH,EAAcG,WAC3BC,EAAgBJ,EAAcI,cAChC,OAAoBzT,EAAOxgC,QAAQ7qB,cAAcy+D,EAAgBM,gBAAiB,CAChFF,WAAYA,IAAc,EAC1BD,cAAeA,IAAiB,EAChCE,cAAeA,GAAiB,MAClBzT,EAAOxgC,QAAQ7qB,cAAcw+D,EAAmBQ,mBAAoB,CAClFL,aAAcA,GAAgB,MAC7Br7D,GACL,C,oCCxBA,IAAI4kD,EAAyBgE,EAAQ,MACrCzhC,EAAQG,YAAa,EACrBH,EAAQw0C,mBAAqBx0C,EAAQu0C,mBAAqBv0C,EAAQy0C,uBAAoB,EACtF,IAAIC,EAAYjX,EAAuBgE,EAAQ,MAC3Cb,EAASnD,EAAuBgE,EAAQ,OACxCvD,EAAaT,EAAuBgE,EAAQ,OAG5CgT,EAAiC7T,EAAOxgC,QAAQm+B,cAAc,cAClEv+B,EAAQy0C,kBAAoBA,EAC5B,IAAIF,EAAqB,SAA4B/7D,GACnD,IAAImG,EAAWnG,EAAKmG,SAClBu1D,EAAe17D,EAAK07D,aAClBS,EAAkB/T,EAAOxgC,QAAQw0C,SAASV,EAAe,EAAC,EAAIQ,EAAUt0C,SAAS,CACjF5C,SAAU02C,EAAan3C,SAASS,UAC/B02C,IAAiB,IACpBW,EAASF,EAAgB,GACzBG,EAAYH,EAAgB,GA4B1BI,EAAQ,CACVF,OAAQA,EACRG,aA7BiB,SAAsBv8D,GACvC,IAAIskB,EAAWtkB,EAAMskB,SACnBk4C,EAAax8D,EAAMw8D,WACnBC,EAAiBz8D,EAAMy8D,eACvBC,EAAa18D,EAAM08D,WACnBC,EAAmB38D,EAAM28D,iBAEvBC,EAAsCR,EAAO78B,WAAU,SAAU+8B,GACnE,OAAOA,EAAMv3C,WAAaT,EAASS,QACrC,IAII63C,GAAuC,GAAKA,EAAsCR,EAAOzkE,OAAS,GACpG0kE,EAAUD,EAAOvhE,MAAM,EAAG+hE,KAIiB,IAAzCA,GACFP,EAAU,GAAGt9D,OAAOq9D,EAAQ,EAAC,EAAIH,EAAUt0C,SAAS,CAAC,EAAGrD,EAAU,CAChEk4C,WAAYA,EACZC,eAAgBA,EAChBC,WAAYA,EACZC,iBAAkBA,MAGxB,GAKA,OAAoBxU,EAAOxgC,QAAQ7qB,cAAck/D,EAAkB1kB,SAAU,CAC3Ex+C,MAAOwjE,GACNp2D,EACL,EACAqhB,EAAQu0C,mBAAqBA,EAC7B,IAAIC,EAAqBC,EAAkB1C,SAC3C/xC,EAAQw0C,mBAAqBA,EAC7BD,EAAmBz4C,aAAe,CAChCo4C,aAAc,MAEhBK,EAAmBr4C,UAAY,CAC7Bvd,SAAUu/C,EAAW99B,QAAQhlB,KAAK4kD,WAClCkU,aAAchW,EAAW99B,QAAQk1C,MAAM,CACrCv4C,SAAUmhC,EAAW99B,QAAQk1C,MAAM,CACjC93C,SAAU0gC,EAAW99B,QAAQ9f,SAE/B20D,WAAY/W,EAAW99B,QAAQ9f,OAC/B40D,eAAgBhX,EAAW99B,QAAQ9f,OACnC60D,WAAYjX,EAAW99B,QAAQk1C,QAC/BF,iBAAkBlX,EAAW99B,QAAQk1C,U,mCCpEzC,IAAI7X,EAAyBgE,EAAQ,MACrCzhC,EAAQG,YAAa,EACrBH,EAAQu1C,gBAAkBv1C,EAAQs0C,gBAAkBt0C,EAAQw1C,oBAAiB,EAC7E,IAAI5U,EAASnD,EAAuBgE,EAAQ,OACxCvD,EAAaT,EAAuBgE,EAAQ,OAG5C+T,EAA8B5U,EAAOxgC,QAAQm+B,cAAc,WAC/Dv+B,EAAQw1C,eAAiBA,EACzB,IAAIlB,EAAkB,SAAyB97D,GAC7C,IAAImG,EAAWnG,EAAKmG,SAClB82D,EAAkBj9D,EAAK47D,WACvBA,OAAiC,IAApBqB,GAAqCA,EAClDC,EAAqBl9D,EAAK67D,cAExBnnD,EAAU,CACZknD,WAAYA,EACZC,mBAHuC,IAAvBqB,EAAgC,KAAOA,GAKzD,OAAoB9U,EAAOxgC,QAAQ7qB,cAAcigE,EAAezlB,SAAU,CACxEx+C,MAAO2b,GACNvO,EACL,EACAqhB,EAAQs0C,gBAAkBA,EAC1B,IAAIiB,EAAkBC,EAAezD,SACrC/xC,EAAQu1C,gBAAkBA,EAC1BjB,EAAgBx4C,aAAe,CAC7Bs4C,YAAY,EACZC,cAAe,MAEjBC,EAAgBp4C,UAAY,CAC1Bvd,SAAUu/C,EAAW99B,QAAQhlB,KAAK4kD,WAClCoU,WAAYlW,EAAW99B,QAAQu1C,KAC/BtB,cAAenW,EAAW99B,QAAQ9f,O,mCCjCpC,IAAIm9C,EAAyBgE,EAAQ,MACrCzhC,EAAQG,YAAa,EACrBH,EAAQ4zC,qBAAkB,EAC1B,IAAIhT,EAASnD,EAAuBgE,EAAQ,OACxCmU,EAAgBnU,EAAQ,MAY5BzhC,EAAQ4zC,gBAPc,SAAyBp7D,EAAMy7D,GACnD,IAAIp7D,EAAUL,EAAKK,QACnB,OAAoB+nD,EAAOxgC,QAAQ7qB,cAAcqgE,EAAc9B,aAAc,CAC3Ej7D,QAASA,EACTo7D,cAAeA,GAEnB,C,oCCfAj0C,EAAQ61C,gBAAkB,EAA1B71C,K,oCCAA,IAMI81C,EAJuCh+B,EAFvCye,EAAQkL,EAAQ,MAQpB,IAN2C3pB,EAOlB2pB,EAAQsU,MAA/BD,EANOh+B,GAAKA,EAAE1X,SAAW0X,CAO3B,CAAE,MAAOxjC,GACP,MAA2D,IAAvDA,EAAEjB,WAAWoC,QAAQ,6BACjB,IAAIgzB,MAAM,0OAIhBze,QAAQC,MAAM3V,GACRA,EAEV,CAGA+tB,EAAOrC,QAAU,SAAUxnB,GACzB,IAAIK,EAAUL,EAAKK,QACf1H,EAAQqH,EAAKrH,MACjB,OAAoBolD,EAAMhhD,cAAcugE,EAAQ3kE,EAAO0H,EACzD,C,4FCzBA,MAAMm9D,EAAazf,EAAAA,cAAgC,IAAI0f,EAAAA,GAE1CC,EAAcF,EAAWjmB,SAEtC,K,mHCJqBomB,EAInB,SAAYC,EAA0B7vC,GAAsB,KAKrD8vC,WAAaC,UAClB,MAAM,KAAEvnD,SAAetK,KAAK8xD,MAAM9xD,KAAK2xD,UAAW,MAAOI,GAEzD,OAAOznD,CAAI,EACX,KAEK0nD,kBAAoBH,UACzB,MAAM,KAAEvnD,SAAetK,KAAK8xD,MAAM9xD,KAAK2xD,UAAW,MAAOM,GAEzD,IAAK3nD,EAAM,MAAO,GAElB,MAAM4nD,EAAe5nD,EAAKrf,QAAQknE,GAAcA,EAAKrjE,KAAKyQ,SAAS,SAMnE,OALmB2yD,aAAY,EAAZA,EAAc1+D,KAAK2+D,IAAS,CAC7C15C,KAAM05C,EAAKrjE,KAAKkI,QAAQ,MAAO,IAC/BlI,KAAMqjE,EAAKrjE,KAAKkI,QAAQ,IAAK,KAAKA,QAAQ,MAAO,OAGlC,EArBjBgJ,KAAK2xD,UAAYA,EACjB3xD,KAAK8xD,MAAQhwC,CACf,ECQmB0vC,EAAU,oBAAAA,IAc7B,KACOY,KAAsB,CAACvyD,EAAUugB,EAAQiyC,EAAU3oC,EAAS4oC,KAAoB,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACpF,MAAMC,EAAWvqC,KAAKC,UAAUmB,GAEhC,OAAQtJ,GACN,IAAK,MACH,MAAML,EAAWlgB,EAAS1N,IAAIkgE,GAI9B,OAFAtyC,EAAS9T,OAAOpe,GAAQ6jC,EAAAA,GAAMlsB,MAAM3X,EAAIi1B,WAEjC/C,EAET,IAAK,OACH,OAAO2R,EAAAA,GAAMxO,QAAQrjB,EAASizD,KAAKT,EAAUQ,GAAW,CACtDtgC,QAAgC,QAAzBggC,EAAED,aAAc,EAAdA,EAAgB//B,eAAO,IAAAggC,EAAAA,EAAI,mBACpCjgC,QAAgC,QAAzBkgC,EAAEF,aAAc,EAAdA,EAAgBhgC,eAAO,IAAAkgC,EAAAA,EAAI,2BACpChtD,MAAQ3X,GAAeA,EAAIi1B,UAG/B,IAAK,MACH,OAAO4O,EAAAA,GAAMxO,QAAQrjB,EAASkzD,IAAIV,EAAUQ,GAAW,CACrDtgC,QAAgC,QAAzBkgC,EAAEH,aAAc,EAAdA,EAAgB//B,eAAO,IAAAkgC,EAAAA,EAAI,mBACpCngC,QAAgC,QAAzBogC,EAAEJ,aAAc,EAAdA,EAAgBhgC,eAAO,IAAAogC,EAAAA,EAAI,2BACpCltD,MAAQ3X,GAAeA,EAAIi1B,UAG/B,IAAK,SACH,OAAO4O,EAAAA,GAAMxO,QAAQrjB,EAAS0xB,OAAO8gC,GAAW,CAC9C9/B,QAAgC,QAAzBogC,EAAEL,aAAc,EAAdA,EAAgB//B,eAAO,IAAAogC,EAAAA,EAAI,mBACpCrgC,QAAgC,QAAzBsgC,EAAEN,aAAc,EAAdA,EAAgBhgC,eAAO,IAAAsgC,EAAAA,EAAI,2BACpCptD,MAAQ3X,GAAeA,EAAIi1B,UAEjC,CACA,CAnCD,OAmCAkwC,EAAAA,EAAAA,GAAAxB,EAAA,EAAA1lE,IAAA,eAAAqG,IA9CD,WACE,OAAO8vB,IAAAA,OAAa,CAClBvC,QAAS+H,0EACT/I,QAAS,CACPu0C,OAAQ,gCAGd,GAAC,CAAAnnE,IAAA,SAAAqG,IAED,WACE,OAAO,IAAIu/D,EAAO1xD,KAAKkzD,aAAclzD,KAAKoyD,KAC5C,KAACZ,CAAA,CAZ4B,E,qGCbxB,MAAM2B,EAAYA,KACvB,MAAMC,EAAyBthB,EAAAA,WAAiByf,EAAAA,GAgBhD,MAAO,CAAEK,WAdWG,IAClB1gB,EAAAA,EAAAA,UAAqB,CAAC,WAAY0gB,IAAW,IAAMqB,aAAG,EAAHA,EAAK1B,OAAOE,WAAWG,IAAW,CACnF7zB,QAAU14B,IACRD,QAAQolB,KAAKnlB,EAAMsd,QAAQ,IAWZkvC,kBAPMC,IACzB5gB,EAAAA,EAAAA,UAAuB,CAAC,kBAAmB4gB,IAAgB,IAAMmB,aAAG,EAAHA,EAAK1B,OAAOM,kBAAkBC,IAAgB,CAC7G/zB,QAAU14B,IACRD,QAAQolB,KAAKnlB,EAAMsd,QAAQ,IAIO,C,kFCfnC,MAAMuwC,EAAuBA,KAClC,MAAOC,EAAaC,GAAkBzhB,EAAAA,SAAmC,IAEzEA,EAAAA,WAAgB,KACd,MAAM0hB,EAAiD/rC,kDAIvD,IACE,MAAM6rC,EAAchrC,KAAKhmB,MAAMkxD,GAE/BD,EAAeD,EACjB,CAAE,MACA/tD,QAAQolB,KAAK,uDACf,IACC,IAEH,MACM8oC,EAAmBC,GAAyBA,EAAK18D,QAAQ,IAAK,KAkBpE,MAAO,CAAEs8D,cAAaK,gBAnBG7kE,GAAyBA,EAAKkI,QAAQ,IAAK,KAmB7B48D,2BAhBHC,IAClC,MAAMC,EAAYR,EAAYzhC,MAAMiiC,GAAcA,EAAUhlE,OAAS2kE,EAAgBI,KAErF,OAAKC,EAEKA,EAAUx7C,SAAQ,aAFL,EAEK,EAWqCy7C,oBARvCA,CAACF,EAAkBG,KAC7C,MAAMF,EAAYR,EAAYzhC,MAAMiiC,GAAcA,EAAUhlE,OAAS2kE,EAAgBI,KAErF,OAAKC,EAEKA,EAAUx7C,SAAQ,IAAIm7C,EAAgBO,GAAe,MAFxC,EAEwC,EAGuB,C,0GC3C3E,SAASj0D,EAAgBF,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAI9R,UAAU,oCAExB,C,cCJe,SAASimE,EAAuBC,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAE3B,OAAOD,CACT,C,cCJe,SAASE,EAAU5hB,EAAUC,GAC1C,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIzkD,UAAU,sDAEtBwkD,EAAShmD,UAAY1B,OAAOw3B,OAAOmwB,GAAcA,EAAWjmD,UAAW,CACrED,YAAa,CACXO,MAAO0lD,EACP3lD,UAAU,EACVD,cAAc,KAGlB9B,OAAOoB,eAAesmD,EAAU,YAAa,CAC3C3lD,UAAU,IAER4lD,IAAY,EAAA4hB,EAAA,GAAe7hB,EAAUC,EAC3C,CCde,SAAS6hB,EAA2BJ,EAAMxmE,GACvD,GAAIA,IAA2B,YAAlB,OAAQA,IAAsC,mBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIM,UAAU,4DAEtB,OAAO,EAAsBkmE,EAC/B,CCTe,SAASK,EAAgB9lE,GAItC,OAHA8lE,EAAkBzpE,OAAOupE,eAAiBvpE,OAAOggC,eAAep3B,OAAS,SAAyBjF,GAChG,OAAOA,EAAEikD,WAAa5nD,OAAOggC,eAAer8B,EAC9C,EACO8lE,EAAgB9lE,EACzB,C,cCJe,SAAS1C,EAAgBK,EAAKN,EAAKgB,GAYhD,OAXAhB,GAAM,EAAA0oE,EAAA,GAAc1oE,MACTM,EACTtB,OAAOoB,eAAeE,EAAKN,EAAK,CAC9BgB,MAAOA,EACP1B,YAAY,EACZwB,cAAc,EACdC,UAAU,IAGZT,EAAIN,GAAOgB,EAENV,CACT,C,uBCVe,SAASqoE,EAASznE,GAC/B,OCLa,SAAyBA,GACtC,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CACjC,CDGS,CAAeA,KAAQ,EAAA4yD,EAAA,GAAgB5yD,KAAQ,EAAA6yD,EAAA,GAA2B7yD,IELpE,WACb,MAAM,IAAIgB,UAAU,4IACtB,CFG2F,EAC3F,CGGA,SAAStD,EAAQC,EAAQC,GACvB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IACFI,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAEFP,EAAKQ,KAAKC,MAAMT,EAAMG,EACxB,CACA,OAAOH,CACT,CACA,SAAS6pE,EAAclpE,GACrB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,CAAC,EAChDA,EAAI,EACNf,EAAQI,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAC9CC,EAAgBP,EAAQM,EAAKF,EAAOE,GACtC,IACShB,OAAOkB,0BAChBlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAEjElB,EAAQI,OAAOc,IAASC,SAAQ,SAAUC,GACxChB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GAEJ,CACA,OAAON,CACT,CACA,IAAImpE,EAAgB,CAClBtrD,KAAM,SACN6N,IAAK,SAAa/V,GAChBnB,KAAKlE,OAAO,MAAOqF,EACrB,EACAwpB,KAAM,SAAcxpB,GAClBnB,KAAKlE,OAAO,OAAQqF,EACtB,EACAqE,MAAO,SAAerE,GACpBnB,KAAKlE,OAAO,QAASqF,EACvB,EACArF,OAAQ,SAAgBuN,EAAMlI,GACxBoE,SAAWA,QAAQ8D,IAAO9D,QAAQ8D,GAAM/d,MAAMia,QAASpE,EAC7D,GAEEyzD,EAAS,WACX,SAASA,EAAOC,GACd,IAAIpsD,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFqU,EAAgBC,KAAM40D,GACtB50D,KAAK80D,KAAKD,EAAgBpsD,EAC5B,CAqEA,OApEA,OAAamsD,EAAQ,CAAC,CACpB9oE,IAAK,OACLgB,MAAO,SAAc+nE,GACnB,IAAIpsD,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFsU,KAAKxF,OAASiO,EAAQjO,QAAU,WAChCwF,KAAK43B,OAASi9B,GAAkBF,EAChC30D,KAAKyI,QAAUA,EACfzI,KAAK+0D,MAAQtsD,EAAQssD,KACvB,GACC,CACDjpE,IAAK,WACLgB,MAAO,SAAkBokE,GACvBlxD,KAAK+0D,MAAQ7D,CACf,GACC,CACDplE,IAAK,MACLgB,MAAO,WACL,IAAK,IAAIuT,EAAO3U,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMoT,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ea,EAAKb,GAAQ5U,UAAU4U,GAEzB,OAAON,KAAKksB,QAAQ/qB,EAAM,MAAO,IAAI,EACvC,GACC,CACDrV,IAAK,OACLgB,MAAO,WACL,IAAK,IAAIwU,EAAQ5V,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMqU,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFJ,EAAKI,GAAS7V,UAAU6V,GAE1B,OAAOvB,KAAKksB,QAAQ/qB,EAAM,OAAQ,IAAI,EACxC,GACC,CACDrV,IAAK,QACLgB,MAAO,WACL,IAAK,IAAIkoE,EAAQtpE,UAAUC,OAAQwV,EAAO,IAAIlU,MAAM+nE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF9zD,EAAK8zD,GAASvpE,UAAUupE,GAE1B,OAAOj1D,KAAKksB,QAAQ/qB,EAAM,QAAS,GACrC,GACC,CACDrV,IAAK,YACLgB,MAAO,WACL,IAAK,IAAIooE,EAAQxpE,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMioE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFh0D,EAAKg0D,GAASzpE,UAAUypE,GAE1B,OAAOn1D,KAAKksB,QAAQ/qB,EAAM,OAAQ,wBAAwB,EAC5D,GACC,CACDrV,IAAK,UACLgB,MAAO,SAAiBqU,EAAMi0D,EAAK56D,EAAQ66D,GACzC,OAAIA,IAAcr1D,KAAK+0D,MAAc,MACd,iBAAZ5zD,EAAK,KAAiBA,EAAK,GAAK,GAAGpO,OAAOyH,GAAQzH,OAAOiN,KAAKxF,OAAQ,KAAKzH,OAAOoO,EAAK,KAC3FnB,KAAK43B,OAAOw9B,GAAKj0D,GAC1B,GACC,CACDrV,IAAK,SACLgB,MAAO,SAAgBwoE,GACrB,OAAO,IAAIV,EAAO50D,KAAK43B,OAAQ88B,EAAcA,EAAc,CAAC,EAAG,CAC7Dl6D,OAAQ,GAAGzH,OAAOiN,KAAKxF,OAAQ,KAAKzH,OAAOuiE,EAAY,OACrDt1D,KAAKyI,SACX,GACC,CACD3c,IAAK,QACLgB,MAAO,SAAe2b,GAGpB,OAFAA,EAAUA,GAAWzI,KAAKyI,SAClBjO,OAASiO,EAAQjO,QAAUwF,KAAKxF,OACjC,IAAIo6D,EAAO50D,KAAK43B,OAAQnvB,EACjC,KAEKmsD,CACT,CA3Ea,GA4ETW,EAAa,IAAIX,EACjBY,EAAe,WACjB,SAASA,IACPz1D,EAAgBC,KAAMw1D,GACtBx1D,KAAKy5B,UAAY,CAAC,CACpB,CA2CA,OA1CA,OAAa+7B,EAAc,CAAC,CAC1B1pE,IAAK,KACLgB,MAAO,SAAY2oE,EAAQ56D,GACzB,IAAIuF,EAAQJ,KAKZ,OAJAy1D,EAAO5+D,MAAM,KAAKhL,SAAQ,SAAUq0C,GAClC9/B,EAAMq5B,UAAUyG,GAAS9/B,EAAMq5B,UAAUyG,IAAU,GACnD9/B,EAAMq5B,UAAUyG,GAAO70C,KAAKwP,EAC9B,IACOmF,IACT,GACC,CACDlU,IAAK,MACLgB,MAAO,SAAaozC,EAAOrlC,GACpBmF,KAAKy5B,UAAUyG,KACfrlC,EAILmF,KAAKy5B,UAAUyG,GAASlgC,KAAKy5B,UAAUyG,GAAOj1C,QAAO,SAAUoxB,GAC7D,OAAOA,IAAMxhB,CACf,WALSmF,KAAKy5B,UAAUyG,GAM1B,GACC,CACDp0C,IAAK,OACLgB,MAAO,SAAcozC,GACnB,IAAK,IAAI7/B,EAAO3U,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMoT,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGa,EAAKb,EAAO,GAAK5U,UAAU4U,GAEzBN,KAAKy5B,UAAUyG,IACJ,GAAGntC,OAAOiN,KAAKy5B,UAAUyG,IAC/Br0C,SAAQ,SAAU4vC,GACvBA,EAASnwC,WAAM,EAAQ6V,EACzB,IAEEnB,KAAKy5B,UAAU,MACH,GAAG1mC,OAAOiN,KAAKy5B,UAAU,MAC/B5tC,SAAQ,SAAU4vC,GACxBA,EAASnwC,MAAMmwC,EAAU,CAACyE,GAAOntC,OAAOoO,GAC1C,GAEJ,KAEKq0D,CACT,CAhDmB,GAiDnB,SAAShR,IACP,IAAIjqC,EACAm7C,EACAxyC,EAAU,IAAIphB,SAAQ,SAAUwD,EAASvD,GAC3CwY,EAAMjV,EACNowD,EAAM3zD,CACR,IAGA,OAFAmhB,EAAQ5d,QAAUiV,EAClB2I,EAAQnhB,OAAS2zD,EACVxyC,CACT,CACA,SAASyyC,EAAWhrE,GAClB,OAAc,MAAVA,EAAuB,GACpB,GAAKA,CACd,CAMA,SAASirE,EAAcjrE,EAAQ2mB,EAAMukD,GACnC,SAASC,EAAShqE,GAChB,OAAOA,GAAOA,EAAIkF,QAAQ,QAAU,EAAIlF,EAAIkL,QAAQ,OAAQ,KAAOlL,CACrE,CACA,SAASiqE,IACP,OAAQprE,GAA4B,iBAAXA,CAC3B,CAEA,IADA,IAAIiwB,EAAwB,iBAATtJ,EAAoB,GAAGve,OAAOue,GAAQA,EAAKza,MAAM,KAC7D+jB,EAAMjvB,OAAS,GAAG,CACvB,GAAIoqE,IAAwB,MAAO,CAAC,EACpC,IAAIjqE,EAAMgqE,EAASl7C,EAAMmK,UACpBp6B,EAAOmB,IAAQ+pE,IAAOlrE,EAAOmB,GAAO,IAAI+pE,GAE3ClrE,EADEG,OAAO0B,UAAU8qB,eAAe5pB,KAAK/C,EAAQmB,GACtCnB,EAAOmB,GAEP,CAAC,CAEd,CACA,OAAIiqE,IAA+B,CAAC,EAC7B,CACL3pE,IAAKzB,EACLqpB,EAAG8hD,EAASl7C,EAAMmK,SAEtB,CACA,SAASixC,EAAQrrE,EAAQ2mB,EAAM2kD,GAC7B,IAAIC,EAAiBN,EAAcjrE,EAAQ2mB,EAAMxmB,QACzCorE,EAAe9pE,IACjB8pE,EAAeliD,GACZiiD,CACX,CASA,SAASE,EAAQxrE,EAAQ2mB,GACvB,IAAI8kD,EAAkBR,EAAcjrE,EAAQ2mB,GAC1CllB,EAAMgqE,EAAgBhqE,IACtB4nB,EAAIoiD,EAAgBpiD,EACtB,GAAK5nB,EACL,OAAOA,EAAI4nB,EACb,CACA,SAASqiD,EAAoB/rD,EAAMgsD,EAAaxqE,GAC9C,IAAIgB,EAAQqpE,EAAQ7rD,EAAMxe,GAC1B,YAAcsP,IAAVtO,EACKA,EAEFqpE,EAAQG,EAAaxqE,EAC9B,CACA,SAASyqE,EAAW/qE,EAAQI,EAAQ4qE,GAClC,IAAK,IAAIpkE,KAAQxG,EACF,cAATwG,GAAiC,gBAATA,IACtBA,KAAQ5G,EACkB,iBAAjBA,EAAO4G,IAAsB5G,EAAO4G,aAAiB0jD,QAAkC,iBAAjBlqD,EAAOwG,IAAsBxG,EAAOwG,aAAiB0jD,OAChI0gB,IAAWhrE,EAAO4G,GAAQxG,EAAOwG,IAErCmkE,EAAW/qE,EAAO4G,GAAOxG,EAAOwG,GAAOokE,GAGzChrE,EAAO4G,GAAQxG,EAAOwG,IAI5B,OAAO5G,CACT,CACA,SAASirE,EAAY1/D,GACnB,OAAOA,EAAIC,QAAQ,sCAAuC,OAC5D,CACA,IAAI0/D,EAAa,CACf,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,UAEP,SAAS,EAAOpsD,GACd,MAAoB,iBAATA,EACFA,EAAKtT,QAAQ,cAAc,SAAUe,GAC1C,OAAO2+D,EAAW3+D,EACpB,IAEKuS,CACT,CACA,IAAIqsD,EAA2B,oBAAXlnE,QAA0BA,OAAOW,gBAAuD,IAAnCX,OAAOW,UAAUwmE,eAAiCnnE,OAAOW,UAAUC,WAAaZ,OAAOW,UAAUC,UAAUW,QAAQ,SAAW,EACnM6lE,EAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,KAoBjC,SAASC,EAAUnsE,EAAQC,GACzB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IACFI,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAEFP,EAAKQ,KAAKC,MAAMT,EAAMG,EACxB,CACA,OAAOH,CACT,CACA,SAASksE,EAAgBvrE,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,CAAC,EAChDA,EAAI,EACNqrE,EAAUhsE,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAChDC,EAAgBP,EAAQM,EAAKF,EAAOE,GACtC,IACShB,OAAOkB,0BAChBlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAEjEkrE,EAAUhsE,OAAOc,IAASC,SAAQ,SAAUC,GAC1ChB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GAEJ,CACA,OAAON,CACT,CACA,SAASwrE,EAAaC,GACpB,IAAIC,EAaN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVnlE,MAAsB,OAAO,EACxC,IAEE,OADA26D,QAAQrgE,UAAUiiC,QAAQ/gC,KAAKypE,QAAQC,UAAUvK,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOh9D,GACP,OAAO,CACT,CACF,CAvBkCynE,GAChC,OAAO,WACL,IACEn8D,EADEo8D,EAAQhD,EAAgB0C,GAE5B,GAAIC,EAA2B,CAC7B,IAAIM,EAAYjD,EAAgBv0D,MAAMzT,YACtC4O,EAASg8D,QAAQC,UAAUG,EAAO7rE,UAAW8rE,EAC/C,MACEr8D,EAASo8D,EAAMjsE,MAAM0U,KAAMtU,WAE7B,OAAO4oE,EAA2Bt0D,KAAM7E,EAC1C,CACF,CAYA,SAASs8D,EAASrrE,EAAKklB,GACrB,IAAIomD,EAAehsE,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,IACvF,GAAKU,EAAL,CACA,GAAIA,EAAIklB,GAAO,OAAOllB,EAAIklB,GAG1B,IAFA,IAAIqmD,EAAQrmD,EAAKza,MAAM6gE,GACnB/lB,EAAUvlD,EACLX,EAAI,EAAGA,EAAIksE,EAAMhsE,SAAUF,EAAG,CACrC,IAAKkmD,EAAS,OACd,GAAiC,iBAAtBA,EAAQgmB,EAAMlsE,KAAoBA,EAAI,EAAIksE,EAAMhsE,OACzD,OAEF,QAA0ByP,IAAtBu2C,EAAQgmB,EAAMlsE,IAAmB,CAInC,IAHA,IAAIskC,EAAI,EACJpqB,EAAIgyD,EAAM9oE,MAAMpD,EAAGA,EAAIskC,GAAG11B,KAAKq9D,GAC/BE,EAAMjmB,EAAQhsC,QACHvK,IAARw8D,GAAqBD,EAAMhsE,OAASF,EAAIskC,GAC7CA,IAEA6nC,EAAMjmB,EADNhsC,EAAIgyD,EAAM9oE,MAAMpD,EAAGA,EAAIskC,GAAG11B,KAAKq9D,IAGjC,QAAYt8D,IAARw8D,EAAmB,OACvB,GAAY,OAARA,EAAc,OAAO,KACzB,GAAItmD,EAAKoa,SAAS/lB,GAAI,CACpB,GAAmB,iBAARiyD,EAAkB,OAAOA,EACpC,GAAIjyD,GAAuB,iBAAXiyD,EAAIjyD,GAAiB,OAAOiyD,EAAIjyD,EAClD,CACA,IAAIkyD,EAAaF,EAAM9oE,MAAMpD,EAAIskC,GAAG11B,KAAKq9D,GACzC,OAAIG,EAAmBJ,EAASG,EAAKC,EAAYH,QACjD,CACF,CACA/lB,EAAUA,EAAQgmB,EAAMlsE,GAC1B,CACA,OAAOkmD,CA9BmB,CA+B5B,CACA,IAAImmB,EAAgB,SAAUC,GAC5B3D,EAAU0D,EAAeC,GACzB,IAAIC,EAAShB,EAAac,GAC1B,SAASA,EAAcxtD,GACrB,IAAIlK,EACAqI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAChFusE,GAAI,CAAC,eACLC,UAAW,eAeb,OAbAn4D,EAAgBC,KAAM83D,GACtB13D,EAAQ43D,EAAOtqE,KAAKsS,MAChB22D,GACFnB,EAAa9nE,KAAKumE,EAAuB7zD,IAE3CA,EAAMkK,KAAOA,GAAQ,CAAC,EACtBlK,EAAMqI,QAAUA,OACmBrN,IAA/BgF,EAAMqI,QAAQivD,eAChBt3D,EAAMqI,QAAQivD,aAAe,UAEWt8D,IAAtCgF,EAAMqI,QAAQ0vD,sBAChB/3D,EAAMqI,QAAQ0vD,qBAAsB,GAE/B/3D,CACT,CAgIA,OA/HA,OAAa03D,EAAe,CAAC,CAC3BhsE,IAAK,gBACLgB,MAAO,SAAuBmrE,GACxBj4D,KAAKyI,QAAQwvD,GAAGjnE,QAAQinE,GAAM,GAChCj4D,KAAKyI,QAAQwvD,GAAG5sE,KAAK4sE,EAEzB,GACC,CACDnsE,IAAK,mBACLgB,MAAO,SAA0BmrE,GAC/B,IAAIzoD,EAAQxP,KAAKyI,QAAQwvD,GAAGjnE,QAAQinE,GAChCzoD,GAAS,GACXxP,KAAKyI,QAAQwvD,GAAGx0C,OAAOjU,EAAO,EAElC,GACC,CACD1jB,IAAK,cACLgB,MAAO,SAAqBsrE,EAAKH,EAAInsE,GACnC,IAAI2c,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EgsE,OAAwCt8D,IAAzBqN,EAAQivD,aAA6BjvD,EAAQivD,aAAe13D,KAAKyI,QAAQivD,aACxFS,OAAsD/8D,IAAhCqN,EAAQ0vD,oBAAoC1vD,EAAQ0vD,oBAAsBn4D,KAAKyI,QAAQ0vD,oBAC7G7mD,EAAO,CAAC8mD,EAAKH,GACbnsE,GAAsB,iBAARA,IAAkBwlB,EAAOA,EAAKve,OAAOjH,IACnDA,GAAsB,iBAARA,IAAkBwlB,EAAOA,EAAKve,OAAO2kE,EAAe5rE,EAAI+K,MAAM6gE,GAAgB5rE,IAC5FssE,EAAIpnE,QAAQ,MAAQ,IACtBsgB,EAAO8mD,EAAIvhE,MAAM,MAEnB,IAAIsE,EAASg7D,EAAQn2D,KAAKsK,KAAMgH,GAChC,OAAInW,IAAWg9D,GAAsC,iBAARrsE,EAAyBqP,EAC/Ds8D,EAASz3D,KAAKsK,MAAQtK,KAAKsK,KAAK8tD,IAAQp4D,KAAKsK,KAAK8tD,GAAKH,GAAKnsE,EAAK4rE,EAC1E,GACC,CACD5rE,IAAK,cACLgB,MAAO,SAAqBsrE,EAAKH,EAAInsE,EAAKgB,GACxC,IAAI2b,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAChF4vC,QAAQ,GAENo8B,EAAe13D,KAAKyI,QAAQivD,kBACXt8D,IAAjBs8D,IAA4BA,EAAe,KAC/C,IAAIpmD,EAAO,CAAC8mD,EAAKH,GACbnsE,IAAKwlB,EAAOA,EAAKve,OAAO2kE,EAAe5rE,EAAI+K,MAAM6gE,GAAgB5rE,IACjEssE,EAAIpnE,QAAQ,MAAQ,IAEtBlE,EAAQmrE,EACRA,GAFA3mD,EAAO8mD,EAAIvhE,MAAM,MAEP,IAEZmJ,KAAKq4D,cAAcJ,GACnBjC,EAAQh2D,KAAKsK,KAAMgH,EAAMxkB,GACpB2b,EAAQ6yB,QAAQt7B,KAAK29C,KAAK,QAASya,EAAKH,EAAInsE,EAAKgB,EACxD,GACC,CACDhB,IAAK,eACLgB,MAAO,SAAsBsrE,EAAKH,EAAIK,GACpC,IAAI7vD,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAChF4vC,QAAQ,GAEV,IAAK,IAAIjI,KAAKilC,EACgB,iBAAjBA,EAAUjlC,IAAqE,mBAAlDvoC,OAAO0B,UAAUoC,SAAStD,MAAMgtE,EAAUjlC,KAA0BrzB,KAAKu4D,YAAYH,EAAKH,EAAI5kC,EAAGilC,EAAUjlC,GAAI,CACrJiI,QAAQ,IAGP7yB,EAAQ6yB,QAAQt7B,KAAK29C,KAAK,QAASya,EAAKH,EAAIK,EACnD,GACC,CACDxsE,IAAK,oBACLgB,MAAO,SAA2BsrE,EAAKH,EAAIK,EAAWE,EAAMhC,GAC1D,IAAI/tD,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAChF4vC,QAAQ,GAENhqB,EAAO,CAAC8mD,EAAKH,GACbG,EAAIpnE,QAAQ,MAAQ,IAEtBwnE,EAAOF,EACPA,EAAYL,EACZA,GAHA3mD,EAAO8mD,EAAIvhE,MAAM,MAGP,IAEZmJ,KAAKq4D,cAAcJ,GACnB,IAAIQ,EAAOtC,EAAQn2D,KAAKsK,KAAMgH,IAAS,CAAC,EACpCknD,EACFjC,EAAWkC,EAAMH,EAAW9B,GAE5BiC,EAAO1B,EAAgBA,EAAgB,CAAC,EAAG0B,GAAOH,GAEpDtC,EAAQh2D,KAAKsK,KAAMgH,EAAMmnD,GACpBhwD,EAAQ6yB,QAAQt7B,KAAK29C,KAAK,QAASya,EAAKH,EAAIK,EACnD,GACC,CACDxsE,IAAK,uBACLgB,MAAO,SAA8BsrE,EAAKH,GACpCj4D,KAAK04D,kBAAkBN,EAAKH,WACvBj4D,KAAKsK,KAAK8tD,GAAKH,GAExBj4D,KAAK24D,iBAAiBV,GACtBj4D,KAAK29C,KAAK,UAAWya,EAAKH,EAC5B,GACC,CACDnsE,IAAK,oBACLgB,MAAO,SAA2BsrE,EAAKH,GACrC,YAAqC78D,IAA9B4E,KAAK44D,YAAYR,EAAKH,EAC/B,GACC,CACDnsE,IAAK,oBACLgB,MAAO,SAA2BsrE,EAAKH,GAErC,OADKA,IAAIA,EAAKj4D,KAAKyI,QAAQyvD,WACW,OAAlCl4D,KAAKyI,QAAQowD,iBAAkC9B,EAAgBA,EAAgB,CAAC,EAAG,CAAC,GAAI/2D,KAAK44D,YAAYR,EAAKH,IAC3Gj4D,KAAK44D,YAAYR,EAAKH,EAC/B,GACC,CACDnsE,IAAK,oBACLgB,MAAO,SAA2BsrE,GAChC,OAAOp4D,KAAKsK,KAAK8tD,EACnB,GACC,CACDtsE,IAAK,8BACLgB,MAAO,SAAqCsrE,GAC1C,IAAI9tD,EAAOtK,KAAK84D,kBAAkBV,GAElC,SADQ9tD,GAAQxf,OAAOD,KAAKyf,IAAS,IAC1BunB,MAAK,SAAUpyB,GACxB,OAAO6K,EAAK7K,IAAM3U,OAAOD,KAAKyf,EAAK7K,IAAI9T,OAAS,CAClD,GACF,GACC,CACDG,IAAK,SACLgB,MAAO,WACL,OAAOkT,KAAKsK,IACd,KAEKwtD,CACT,CAxJoB,CAwJlBtC,GACEuD,EAAgB,CAClBC,WAAY,CAAC,EACbC,iBAAkB,SAA0Br7C,GAC1C5d,KAAKg5D,WAAWp7C,EAAO9uB,MAAQ8uB,CACjC,EACAs7C,OAAQ,SAAgBF,EAAYlsE,EAAOhB,EAAK2c,EAAS0wD,GACvD,IAAI/4D,EAAQJ,KAIZ,OAHAg5D,EAAWntE,SAAQ,SAAUutE,GACvBh5D,EAAM44D,WAAWI,KAAYtsE,EAAQsT,EAAM44D,WAAWI,GAAW3xC,QAAQ36B,EAAOhB,EAAK2c,EAAS0wD,GACpG,IACOrsE,CACT,GAEF,SAASusE,EAAU1uE,EAAQC,GACzB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IACFI,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAEFP,EAAKQ,KAAKC,MAAMT,EAAMG,EACxB,CACA,OAAOH,CACT,CACA,SAASyuE,EAAgB9tE,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,CAAC,EAChDA,EAAI,EACN4tE,EAAUvuE,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAChDC,EAAgBP,EAAQM,EAAKF,EAAOE,GACtC,IACShB,OAAOkB,0BAChBlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAEjEytE,EAAUvuE,OAAOc,IAASC,SAAQ,SAAUC,GAC1ChB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GAEJ,CACA,OAAON,CACT,CACA,SAAS+tE,EAAetC,GACtB,IAAIC,EAaN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVnlE,MAAsB,OAAO,EACxC,IAEE,OADA26D,QAAQrgE,UAAUiiC,QAAQ/gC,KAAKypE,QAAQC,UAAUvK,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOh9D,GACP,OAAO,CACT,CACF,CAvBkC2pE,GAChC,OAAO,WACL,IACEr+D,EADEo8D,EAAQhD,EAAgB0C,GAE5B,GAAIC,EAA2B,CAC7B,IAAIM,EAAYjD,EAAgBv0D,MAAMzT,YACtC4O,EAASg8D,QAAQC,UAAUG,EAAO7rE,UAAW8rE,EAC/C,MACEr8D,EAASo8D,EAAMjsE,MAAM0U,KAAMtU,WAE7B,OAAO4oE,EAA2Bt0D,KAAM7E,EAC1C,CACF,CAYA,IAAIs+D,EAAmB,CAAC,EACpBC,EAAa,SAAU3B,GACzB3D,EAAUsF,EAAY3B,GACtB,IAAIC,EAASuB,EAAeG,GAC5B,SAASA,EAAWC,GAClB,IAAIv5D,EACAqI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAYnF,OAXAqU,EAAgBC,KAAM05D,GACtBt5D,EAAQ43D,EAAOtqE,KAAKsS,MAChB22D,GACFnB,EAAa9nE,KAAKumE,EAAuB7zD,IAjb/C,SAAc9E,EAAGvD,EAAGuzB,GAClBhwB,EAAEzP,SAAQ,SAAUwnC,GACdt7B,EAAEs7B,KAAI/H,EAAE+H,GAAKt7B,EAAEs7B,GACrB,GACF,CA+aI4W,CAAK,CAAC,gBAAiB,gBAAiB,iBAAkB,eAAgB,mBAAoB,aAAc,SAAU0vB,EAAU1F,EAAuB7zD,IACvJA,EAAMqI,QAAUA,OACmBrN,IAA/BgF,EAAMqI,QAAQivD,eAChBt3D,EAAMqI,QAAQivD,aAAe,KAE/Bt3D,EAAMw3B,OAAS29B,EAAWjzC,OAAO,cAC1BliB,CACT,CAmVA,OAlVA,OAAas5D,EAAY,CAAC,CACxB5tE,IAAK,iBACLgB,MAAO,SAAwBsrE,GACzBA,IAAKp4D,KAAK45D,SAAWxB,EAC3B,GACC,CACDtsE,IAAK,SACLgB,MAAO,SAAgBhB,GACrB,IAAI2c,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAChFmuE,cAAe,CAAC,GAElB,GAAI/tE,QACF,OAAO,EAET,IAAIguE,EAAW95D,KAAKsF,QAAQxZ,EAAK2c,GACjC,OAAOqxD,QAA6B1+D,IAAjB0+D,EAASv/C,GAC9B,GACC,CACDzuB,IAAK,iBACLgB,MAAO,SAAwBhB,EAAK2c,GAClC,IAAIsxD,OAAsC3+D,IAAxBqN,EAAQsxD,YAA4BtxD,EAAQsxD,YAAc/5D,KAAKyI,QAAQsxD,iBACrE3+D,IAAhB2+D,IAA2BA,EAAc,KAC7C,IAAIrC,OAAwCt8D,IAAzBqN,EAAQivD,aAA6BjvD,EAAQivD,aAAe13D,KAAKyI,QAAQivD,aACxFsC,EAAavxD,EAAQwvD,IAAMj4D,KAAKyI,QAAQyvD,WAAa,GACrD+B,EAAuBF,GAAejuE,EAAIkF,QAAQ+oE,IAAgB,EAClEG,IAAwBl6D,KAAKyI,QAAQ0xD,yBAA4B1xD,EAAQivD,cAAiB13D,KAAKyI,QAAQ2xD,wBAA2B3xD,EAAQsxD,aAtXpJ,SAA6BjuE,EAAKiuE,EAAarC,GAC7CqC,EAAcA,GAAe,GAC7BrC,EAAeA,GAAgB,GAC/B,IAAI2C,EAAgBxD,EAAM5rE,QAAO,SAAUuQ,GACzC,OAAOu+D,EAAY/oE,QAAQwK,GAAK,GAAKk8D,EAAa1mE,QAAQwK,GAAK,CACjE,IACA,GAA6B,IAAzB6+D,EAAc1uE,OAAc,OAAO,EACvC,IAAIioB,EAAI,IAAI3b,OAAO,IAAIlF,OAAOsnE,EAAc7mE,KAAI,SAAUgI,GACxD,MAAa,MAANA,EAAY,MAAQA,CAC7B,IAAGnB,KAAK,KAAM,MACVu5C,GAAWhgC,EAAE7kB,KAAKjD,GACtB,IAAK8nD,EAAS,CACZ,IAAI0mB,EAAKxuE,EAAIkF,QAAQ0mE,GACjB4C,EAAK,IAAM1mD,EAAE7kB,KAAKjD,EAAI+uD,UAAU,EAAGyf,MACrC1mB,GAAU,EAEd,CACA,OAAOA,CACT,CAoWoK2mB,CAAoBzuE,EAAKiuE,EAAarC,IACpM,GAAIuC,IAAyBC,EAAsB,CACjD,IAAI7mC,EAAIvnC,EAAI0W,MAAMxC,KAAKw6D,aAAaC,eACpC,GAAIpnC,GAAKA,EAAE1nC,OAAS,EAClB,MAAO,CACLG,IAAKA,EACLkuE,WAAYA,GAGhB,IAAIx8D,EAAQ1R,EAAI+K,MAAMkjE,IAClBA,IAAgBrC,GAAgBqC,IAAgBrC,GAAgB13D,KAAKyI,QAAQwvD,GAAGjnE,QAAQwM,EAAM,KAAO,KAAGw8D,EAAax8D,EAAMunB,SAC/Hj5B,EAAM0R,EAAMnD,KAAKq9D,EACnB,CAEA,MAD0B,iBAAfsC,IAAyBA,EAAa,CAACA,IAC3C,CACLluE,IAAKA,EACLkuE,WAAYA,EAEhB,GACC,CACDluE,IAAK,YACLgB,MAAO,SAAmBjC,EAAM4d,EAASiyD,GACvC,IAAInjC,EAASv3B,KAKb,GAJyB,YAArB,OAAQyI,IAAyBzI,KAAKyI,QAAQkyD,mCAChDlyD,EAAUzI,KAAKyI,QAAQkyD,iCAAiCjvE,YAErD+c,IAASA,EAAU,CAAC,GACrB5d,QAAqC,MAAO,GAC3CoC,MAAMC,QAAQrC,KAAOA,EAAO,CAACirD,OAAOjrD,KACzC,IAAI+vE,OAA0Cx/D,IAA1BqN,EAAQmyD,cAA8BnyD,EAAQmyD,cAAgB56D,KAAKyI,QAAQmyD,cAC3FlD,OAAwCt8D,IAAzBqN,EAAQivD,aAA6BjvD,EAAQivD,aAAe13D,KAAKyI,QAAQivD,aACxFmD,EAAuB76D,KAAK86D,eAAejwE,EAAKA,EAAKc,OAAS,GAAI8c,GACpE3c,EAAM+uE,EAAqB/uE,IAC3BkuE,EAAaa,EAAqBb,WAChCvgE,EAAYugE,EAAWA,EAAWruE,OAAS,GAC3CysE,EAAM3vD,EAAQ2vD,KAAOp4D,KAAK45D,SAC1BmB,EAA0BtyD,EAAQsyD,yBAA2B/6D,KAAKyI,QAAQsyD,wBAC9E,GAAI3C,GAA6B,WAAtBA,EAAI9oD,cAA4B,CACzC,GAAIyrD,EAAyB,CAC3B,IAAIhB,EAActxD,EAAQsxD,aAAe/5D,KAAKyI,QAAQsxD,YACtD,OAAIa,GACFd,EAASv/C,IAAM,GAAGxnB,OAAO0G,GAAW1G,OAAOgnE,GAAahnE,OAAOjH,GACxDguE,GAEF,GAAG/mE,OAAO0G,GAAW1G,OAAOgnE,GAAahnE,OAAOjH,EACzD,CACA,OAAI8uE,GACFd,EAASv/C,IAAMzuB,EACRguE,GAEFhuE,CACT,CACA,IAAIguE,EAAW95D,KAAKsF,QAAQza,EAAM4d,GAC9B8R,EAAMu/C,GAAYA,EAASv/C,IAC3BygD,EAAalB,GAAYA,EAASmB,SAAWnvE,EAC7CovE,EAAkBpB,GAAYA,EAASqB,cAAgBrvE,EACvDsvE,EAAUtwE,OAAO0B,UAAUoC,SAAStD,MAAMivB,GAE1C8gD,OAAoCjgE,IAAvBqN,EAAQ4yD,WAA2B5yD,EAAQ4yD,WAAar7D,KAAKyI,QAAQ4yD,WAClFC,GAA8Bt7D,KAAKu7D,YAAcv7D,KAAKu7D,WAAWC,eAErE,GAAIF,GAA8B/gD,IADE,iBAARA,GAAmC,kBAARA,GAAoC,iBAARA,IAHpE,CAAC,kBAAmB,oBAAqB,mBAIYvpB,QAAQoqE,GAAW,IAA6B,iBAAfC,GAAuC,mBAAZD,GAA+B,CAC7J,IAAK3yD,EAAQgzD,gBAAkBz7D,KAAKyI,QAAQgzD,cAAe,CACpDz7D,KAAKyI,QAAQizD,uBAChB17D,KAAK43B,OAAOjN,KAAK,mEAEnB,IAAI/W,EAAI5T,KAAKyI,QAAQizD,sBAAwB17D,KAAKyI,QAAQizD,sBAAsBV,EAAYzgD,EAAK++C,EAAgBA,EAAgB,CAAC,EAAG7wD,GAAU,CAAC,EAAG,CACjJwvD,GAAI+B,KACA,QAAQjnE,OAAOjH,EAAK,MAAMiH,OAAOiN,KAAK45D,SAAU,4CACtD,OAAIgB,GACFd,EAASv/C,IAAM3G,EACRkmD,GAEFlmD,CACT,CACA,GAAI8jD,EAAc,CAChB,IAAIiE,EAA6B,mBAAZP,EACjBnxB,EAAO0xB,EAAiB,GAAK,CAAC,EAC9BC,EAAcD,EAAiBT,EAAkBF,EACrD,IAAK,IAAI3nC,KAAK9Y,EACZ,GAAIzvB,OAAO0B,UAAU8qB,eAAe5pB,KAAK6sB,EAAK8Y,GAAI,CAChD,IAAIwoC,EAAU,GAAG9oE,OAAO6oE,GAAa7oE,OAAO2kE,GAAc3kE,OAAOsgC,GACjE4W,EAAK5W,GAAKrzB,KAAK87D,UAAUD,EAASvC,EAAgBA,EAAgB,CAAC,EAAG7wD,GAAU,CAC9E4yD,YAAY,EACZpD,GAAI+B,KAEF/vB,EAAK5W,KAAOwoC,IAAS5xB,EAAK5W,GAAK9Y,EAAI8Y,GACzC,CAEF9Y,EAAM0vB,CACR,CACF,MAAO,GAAIqxB,GAAoD,iBAAfD,GAAuC,mBAAZD,GACzE7gD,EAAMA,EAAIlgB,KAAKghE,MACN9gD,EAAMva,KAAK+7D,kBAAkBxhD,EAAK1vB,EAAM4d,EAASiyD,QACrD,CACL,IAAIsB,GAAc,EACdf,GAAU,EACVgB,OAAwC7gE,IAAlBqN,EAAQyzD,OAAgD,iBAAlBzzD,EAAQyzD,MACpEC,EAAkBzC,EAAWyC,gBAAgB1zD,GAC7C2zD,EAAqBH,EAAsBj8D,KAAKq8D,eAAeC,UAAUlE,EAAK3vD,EAAQyzD,MAAOzzD,GAAW,GACxG8zD,EAAe9zD,EAAQ,eAAe1V,OAAOqpE,KAAwB3zD,EAAQ8zD,cAC5Ev8D,KAAKw8D,cAAcjiD,IAAQ4hD,IAC9BH,GAAc,EACdzhD,EAAMgiD,GAEHv8D,KAAKw8D,cAAcjiD,KACtB0gD,GAAU,EACV1gD,EAAMzuB,GAER,IACI2wE,GADiCh0D,EAAQi0D,gCAAkC18D,KAAKyI,QAAQi0D,iCACtCzB,OAAU7/D,EAAYmf,EACxEoiD,EAAgBR,GAAmBI,IAAiBhiD,GAAOva,KAAKyI,QAAQk0D,cAC5E,GAAI1B,GAAWe,GAAeW,EAAe,CAE3C,GADA38D,KAAK43B,OAAO1gB,IAAIylD,EAAgB,YAAc,aAAcvE,EAAK3+D,EAAW3N,EAAK6wE,EAAgBJ,EAAehiD,GAC5Gm9C,EAAc,CAChB,IAAIkF,EAAK58D,KAAKsF,QAAQxZ,EAAKwtE,EAAgBA,EAAgB,CAAC,EAAG7wD,GAAU,CAAC,EAAG,CAC3EivD,cAAc,KAEZkF,GAAMA,EAAGriD,KAAKva,KAAK43B,OAAOjN,KAAK,kLACrC,CACA,IAAIkyC,EAAO,GACPC,EAAe98D,KAAK+8D,cAAcC,iBAAiBh9D,KAAKyI,QAAQw0D,YAAax0D,EAAQ2vD,KAAOp4D,KAAK45D,UACrG,GAAmC,aAA/B55D,KAAKyI,QAAQy0D,eAAgCJ,GAAgBA,EAAa,GAC5E,IAAK,IAAIrxE,EAAI,EAAGA,EAAIqxE,EAAanxE,OAAQF,IACvCoxE,EAAKxxE,KAAKyxE,EAAarxE,QAEe,QAA/BuU,KAAKyI,QAAQy0D,cACtBL,EAAO78D,KAAK+8D,cAAcI,mBAAmB10D,EAAQ2vD,KAAOp4D,KAAK45D,UAEjEiD,EAAKxxE,KAAKod,EAAQ2vD,KAAOp4D,KAAK45D,UAEhC,IAAI93C,EAAO,SAAczF,EAAGrI,EAAGopD,GAC7B,IAAIC,EAAoBlB,GAAmBiB,IAAyB7iD,EAAM6iD,EAAuBX,EAC7FllC,EAAO9uB,QAAQ60D,kBACjB/lC,EAAO9uB,QAAQ60D,kBAAkBjhD,EAAG5iB,EAAWua,EAAGqpD,EAAmBV,EAAel0D,GAC3E8uB,EAAOgmC,kBAAoBhmC,EAAOgmC,iBAAiBC,aAC5DjmC,EAAOgmC,iBAAiBC,YAAYnhD,EAAG5iB,EAAWua,EAAGqpD,EAAmBV,EAAel0D,GAEzF8uB,EAAOomB,KAAK,aAActhC,EAAG5iB,EAAWua,EAAGuG,EAC7C,EACIva,KAAKyI,QAAQ+0D,cACXx9D,KAAKyI,QAAQg1D,oBAAsBxB,EACrCY,EAAKhxE,SAAQ,SAAU+tE,GACrBriC,EAAO8kC,eAAeqB,YAAY9D,EAAUnxD,GAAS5c,SAAQ,SAAU2f,GACrEsW,EAAK,CAAC83C,GAAW9tE,EAAM0f,EAAQ/C,EAAQ,eAAe1V,OAAOyY,KAAY+wD,EAC3E,GACF,IAEAz6C,EAAK+6C,EAAM/wE,EAAKywE,GAGtB,CACAhiD,EAAMva,KAAK+7D,kBAAkBxhD,EAAK1vB,EAAM4d,EAASqxD,EAAUY,GACvDO,GAAW1gD,IAAQzuB,GAAOkU,KAAKyI,QAAQk1D,8BAA6BpjD,EAAM,GAAGxnB,OAAO0G,EAAW,KAAK1G,OAAOjH,KAC1GmvE,GAAWe,IAAgBh8D,KAAKyI,QAAQm1D,yBAEzCrjD,EADoC,OAAlCva,KAAKyI,QAAQowD,iBACT74D,KAAKyI,QAAQm1D,uBAAuB59D,KAAKyI,QAAQk1D,4BAA8B,GAAG5qE,OAAO0G,EAAW,KAAK1G,OAAOjH,GAAOA,EAAKkwE,EAAczhD,OAAMnf,GAEhJ4E,KAAKyI,QAAQm1D,uBAAuBrjD,GAGhD,CACA,OAAIqgD,GACFd,EAASv/C,IAAMA,EACRu/C,GAEFv/C,CACT,GACC,CACDzuB,IAAK,oBACLgB,MAAO,SAA2BytB,EAAKzuB,EAAK2c,EAASqxD,EAAUY,GAC7D,IAAIjiC,EAASz4B,KACb,GAAIA,KAAKu7D,YAAcv7D,KAAKu7D,WAAWj5D,MACrCiY,EAAMva,KAAKu7D,WAAWj5D,MAAMiY,EAAK++C,EAAgBA,EAAgB,CAAC,EAAGt5D,KAAKyI,QAAQoxD,cAAcgE,kBAAmBp1D,GAAUqxD,EAASgE,QAAShE,EAASiE,OAAQjE,EAASmB,QAAS,CAChLnB,SAAUA,SAEP,IAAKrxD,EAAQu1D,kBAAmB,CACjCv1D,EAAQoxD,eAAe75D,KAAKw6D,aAAa1F,KAAKwE,EAAgBA,EAAgB,CAAC,EAAG7wD,GAAU,CAC9FoxD,cAAeP,EAAgBA,EAAgB,CAAC,EAAGt5D,KAAKyI,QAAQoxD,eAAgBpxD,EAAQoxD,kBAE1F,IACIoE,EADAC,EAAiC,iBAAR3jD,IAAqB9R,GAAWA,EAAQoxD,oBAA2Dz+D,IAA1CqN,EAAQoxD,cAAcqE,gBAAgCz1D,EAAQoxD,cAAcqE,gBAAkBl+D,KAAKyI,QAAQoxD,cAAcqE,iBAE/M,GAAIA,EAAiB,CACnB,IAAIC,EAAK5jD,EAAI/X,MAAMxC,KAAKw6D,aAAaC,eACrCwD,EAAUE,GAAMA,EAAGxyE,MACrB,CACA,IAAI2e,EAAO7B,EAAQzR,SAAsC,iBAApByR,EAAQzR,QAAuByR,EAAQzR,QAAUyR,EAGtF,GAFIzI,KAAKyI,QAAQoxD,cAAcgE,mBAAkBvzD,EAAOgvD,EAAgBA,EAAgB,CAAC,EAAGt5D,KAAKyI,QAAQoxD,cAAcgE,kBAAmBvzD,IAC1IiQ,EAAMva,KAAKw6D,aAAa4D,YAAY7jD,EAAKjQ,EAAM7B,EAAQ2vD,KAAOp4D,KAAK45D,SAAUnxD,GACzEy1D,EAAiB,CACnB,IAAIG,EAAK9jD,EAAI/X,MAAMxC,KAAKw6D,aAAaC,eAEjCwD,GADUI,GAAMA,EAAG1yE,UACA8c,EAAQtB,MAAO,EACxC,EACqB,IAAjBsB,EAAQtB,OAAgBoT,EAAMva,KAAKw6D,aAAarzD,KAAKoT,GAAK,WAC5D,IAAK,IAAIla,EAAO3U,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMoT,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ea,EAAKb,GAAQ5U,UAAU4U,GAEzB,OAAIo6D,GAAWA,EAAQ,KAAOv5D,EAAK,KAAOsH,EAAQ2Z,SAChDqW,EAAOb,OAAOjN,KAAK,6CAA6C53B,OAAOoO,EAAK,GAAI,aAAapO,OAAOjH,EAAI,KACjG,MAEF2sC,EAAOqjC,UAAUxwE,MAAMmtC,EAAQt3B,EAAKpO,OAAO,CAACjH,IACrD,GAAG2c,IACCA,EAAQoxD,eAAe75D,KAAKw6D,aAAaj/B,OAC/C,CACA,IAAI+iC,EAAc71D,EAAQ61D,aAAet+D,KAAKyI,QAAQ61D,YAClDC,EAA4C,iBAAhBD,EAA2B,CAACA,GAAeA,EAM3E,OALI/jD,SAAqCgkD,GAAsBA,EAAmB5yE,SAAyC,IAA/B8c,EAAQ+1D,qBAClGjkD,EAAMw+C,EAAcG,OAAOqF,EAAoBhkD,EAAKzuB,EAAKkU,KAAKyI,SAAWzI,KAAKyI,QAAQg2D,wBAA0BnF,EAAgB,CAC9HoF,aAAc5E,GACbrxD,GAAWA,EAASzI,OAElBua,CACT,GACC,CACDzuB,IAAK,UACLgB,MAAO,SAAiBjC,GACtB,IAEI8Y,EACAs3D,EACAE,EACA2C,EACAC,EANA59B,EAASngC,KACTyI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EA8DnF,MAxDoB,iBAATb,IAAmBA,EAAO,CAACA,IACtCA,EAAKgB,SAAQ,SAAUmoB,GACrB,IAAImsB,EAAOq8B,cAAc74D,GAAzB,CACA,IAAIg7D,EAAYx+B,EAAO26B,eAAe9mD,EAAGvL,GACrC3c,EAAM6yE,EAAU7yE,IACpBmvE,EAAUnvE,EACV,IAAIkuE,EAAa2E,EAAU3E,WACvB75B,EAAO13B,QAAQm2D,aAAY5E,EAAaA,EAAWjnE,OAAOotC,EAAO13B,QAAQm2D,aAC7E,IAAI3C,OAAwC7gE,IAAlBqN,EAAQyzD,OAAgD,iBAAlBzzD,EAAQyzD,MACpE2C,EAAwB5C,IAAwBxzD,EAAQq2D,SAA6B,IAAlBr2D,EAAQyzD,OAAe/7B,EAAOk8B,eAAe0C,mBAChHC,OAA2C5jE,IAApBqN,EAAQ2Z,UAAqD,iBAApB3Z,EAAQ2Z,SAAmD,iBAApB3Z,EAAQ2Z,UAA6C,KAApB3Z,EAAQ2Z,QAChJ68C,EAAQx2D,EAAQo0D,KAAOp0D,EAAQo0D,KAAO18B,EAAO48B,cAAcI,mBAAmB10D,EAAQ2vD,KAAOj4B,EAAOy5B,SAAUnxD,EAAQw0D,aAC1HjD,EAAWnuE,SAAQ,SAAUosE,GACvB93B,EAAOq8B,cAAc74D,KACzBo6D,EAAS9F,GACJwB,EAAiB,GAAG1mE,OAAOksE,EAAM,GAAI,KAAKlsE,OAAOklE,KAAQ93B,EAAOtiB,OAASsiB,EAAOtiB,MAAMqhD,qBAAuB/+B,EAAOtiB,MAAMqhD,mBAAmBnB,KAChJtE,EAAiB,GAAG1mE,OAAOksE,EAAM,GAAI,KAAKlsE,OAAOklE,KAAO,EACxD93B,EAAOvI,OAAOjN,KAAK,QAAS53B,OAAOkoE,EAAS,qBAAuBloE,OAAOksE,EAAM5kE,KAAK,MAAO,wCAAyCtH,OAAOgrE,EAAQ,wBAA0B,6NAEhLkB,EAAMpzE,SAAQ,SAAU+5B,GACtB,IAAIua,EAAOq8B,cAAc74D,GAAzB,CACAm6D,EAAUl4C,EACV,IAwBIu5C,EAxBAC,EAAY,CAACtzE,GACjB,GAAIq0C,EAAOo7B,YAAcp7B,EAAOo7B,WAAW8D,cACzCl/B,EAAOo7B,WAAW8D,cAAcD,EAAWtzE,EAAK85B,EAAMqyC,EAAIxvD,OACrD,CACL,IAAI62D,EACArD,IAAqBqD,EAAen/B,EAAOk8B,eAAeC,UAAU12C,EAAMnd,EAAQyzD,MAAOzzD,IAC7F,IAAI82D,EAAa,GAAGxsE,OAAOotC,EAAO13B,QAAQ+2D,gBAAiB,QAO3D,GANIvD,IACFmD,EAAU/zE,KAAKS,EAAMwzE,GACjBT,GACFO,EAAU/zE,KAAKS,EAAMyzE,IAGrBP,EAAsB,CACxB,IAAIS,EAAa,GAAG1sE,OAAOjH,GAAKiH,OAAOotC,EAAO13B,QAAQi3D,kBAAkB3sE,OAAO0V,EAAQ2Z,SACvFg9C,EAAU/zE,KAAKo0E,GACXxD,IACFmD,EAAU/zE,KAAKo0E,EAAaH,GACxBT,GACFO,EAAU/zE,KAAKo0E,EAAaF,GAGlC,CACF,CAEA,KAAOJ,EAAcC,EAAU5V,OACxBrpB,EAAOq8B,cAAc74D,KACxBw3D,EAAegE,EACfx7D,EAAQw8B,EAAOy4B,YAAYhzC,EAAMqyC,EAAIkH,EAAa12D,GA9Bf,CAiCzC,IACF,GApDuC,CAqDzC,IACO,CACL8R,IAAK5W,EACLs3D,QAASA,EACTE,aAAcA,EACd2C,QAASA,EACTC,OAAQA,EAEZ,GACC,CACDjyE,IAAK,gBACLgB,MAAO,SAAuBytB,GAC5B,aAAenf,IAARmf,IAAwBva,KAAKyI,QAAQk3D,YAAsB,OAARplD,IAAoBva,KAAKyI,QAAQm3D,mBAA6B,KAARrlD,EAClH,GACC,CACDzuB,IAAK,cACLgB,MAAO,SAAqB84B,EAAMqyC,EAAInsE,GACpC,IAAI2c,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAIsU,KAAKu7D,YAAcv7D,KAAKu7D,WAAW3C,YAAoB54D,KAAKu7D,WAAW3C,YAAYhzC,EAAMqyC,EAAInsE,EAAK2c,GAC/FzI,KAAK6/D,cAAcjH,YAAYhzC,EAAMqyC,EAAInsE,EAAK2c,EACvD,IACE,CAAC,CACH3c,IAAK,kBACLgB,MAAO,SAAyB2b,GAC9B,IAAIjO,EAAS,eACb,IAAK,IAAIgxB,KAAU/iB,EACjB,GAAI3d,OAAO0B,UAAU8qB,eAAe5pB,KAAK+a,EAAS+iB,IAAWhxB,IAAWgxB,EAAOqvB,UAAU,EAAGrgD,UAAkBY,IAAcqN,EAAQ+iB,GAClI,OAAO,EAGX,OAAO,CACT,KAEKkuC,CACT,CAtWiB,CAsWflE,GACF,SAASsK,EAAWjkE,GAClB,OAAOA,EAAOic,OAAO,GAAGhf,cAAgB+C,EAAOhN,MAAM,EACvD,CACA,IAAIkxE,EAAe,WACjB,SAASA,EAAat3D,GACpB1I,EAAgBC,KAAM+/D,GACtB//D,KAAKyI,QAAUA,EACfzI,KAAKggE,cAAgBhgE,KAAKyI,QAAQu3D,gBAAiB,EACnDhgE,KAAK43B,OAAS29B,EAAWjzC,OAAO,gBAClC,CAqHA,OApHA,OAAay9C,EAAc,CAAC,CAC1Bj0E,IAAK,wBACLgB,MAAO,SAA+B84B,GACpC,IAAKA,GAAQA,EAAK50B,QAAQ,KAAO,EAAG,OAAO,KAC3C,IAAI2U,EAAIigB,EAAK/uB,MAAM,KACnB,OAAiB,IAAb8O,EAAEha,OAAqB,MAC3Bga,EAAE6jD,MACoC,MAAlC7jD,EAAEA,EAAEha,OAAS,GAAG2jB,cAA8B,KAC3CtP,KAAKigE,mBAAmBt6D,EAAEtL,KAAK,MACxC,GACC,CACDvO,IAAK,0BACLgB,MAAO,SAAiC84B,GACtC,IAAKA,GAAQA,EAAK50B,QAAQ,KAAO,EAAG,OAAO40B,EAC3C,IAAIjgB,EAAIigB,EAAK/uB,MAAM,KACnB,OAAOmJ,KAAKigE,mBAAmBt6D,EAAE,GACnC,GACC,CACD7Z,IAAK,qBACLgB,MAAO,SAA4B84B,GACjC,GAAoB,iBAATA,GAAqBA,EAAK50B,QAAQ,MAAQ,EAAG,CACtD,IAAIkvE,EAAe,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAChEv6D,EAAIigB,EAAK/uB,MAAM,KAgBnB,OAfImJ,KAAKyI,QAAQ03D,aACfx6D,EAAIA,EAAEnS,KAAI,SAAU4sE,GAClB,OAAOA,EAAK9wD,aACd,IACsB,IAAb3J,EAAEha,QACXga,EAAE,GAAKA,EAAE,GAAG2J,cACZ3J,EAAE,GAAKA,EAAE,GAAG7M,cACRonE,EAAalvE,QAAQ2U,EAAE,GAAG2J,gBAAkB,IAAG3J,EAAE,GAAKm6D,EAAWn6D,EAAE,GAAG2J,iBACpD,IAAb3J,EAAEha,SACXga,EAAE,GAAKA,EAAE,GAAG2J,cACQ,IAAhB3J,EAAE,GAAGha,SAAcga,EAAE,GAAKA,EAAE,GAAG7M,eACtB,QAAT6M,EAAE,IAAgC,IAAhBA,EAAE,GAAGha,SAAcga,EAAE,GAAKA,EAAE,GAAG7M,eACjDonE,EAAalvE,QAAQ2U,EAAE,GAAG2J,gBAAkB,IAAG3J,EAAE,GAAKm6D,EAAWn6D,EAAE,GAAG2J,gBACtE4wD,EAAalvE,QAAQ2U,EAAE,GAAG2J,gBAAkB,IAAG3J,EAAE,GAAKm6D,EAAWn6D,EAAE,GAAG2J,iBAErE3J,EAAEtL,KAAK,IAChB,CACA,OAAO2F,KAAKyI,QAAQ43D,WAAargE,KAAKyI,QAAQ03D,aAAev6C,EAAKtW,cAAgBsW,CACpF,GACC,CACD95B,IAAK,kBACLgB,MAAO,SAAyB84B,GAI9B,OAH0B,iBAAtB5lB,KAAKyI,QAAQ63D,MAA2BtgE,KAAKyI,QAAQ83D,4BACvD36C,EAAO5lB,KAAKwgE,wBAAwB56C,KAE9B5lB,KAAKggE,gBAAkBhgE,KAAKggE,cAAcr0E,QAAUqU,KAAKggE,cAAchvE,QAAQ40B,IAAS,CAClG,GACC,CACD95B,IAAK,wBACLgB,MAAO,SAA+BmyE,GACpC,IAEIt7D,EAFAvD,EAAQJ,KACZ,OAAKi/D,GAELA,EAAMpzE,SAAQ,SAAU+5B,GACtB,IAAIjiB,EAAJ,CACA,IAAI88D,EAAargE,EAAM6/D,mBAAmBr6C,GACrCxlB,EAAMqI,QAAQu3D,gBAAiB5/D,EAAMsgE,gBAAgBD,KAAa98D,EAAQ88D,EAF9D,CAGnB,KACK98D,GAAS3D,KAAKyI,QAAQu3D,eACzBf,EAAMpzE,SAAQ,SAAU+5B,GACtB,IAAIjiB,EAAJ,CACA,IAAIg9D,EAAUvgE,EAAMogE,wBAAwB56C,GAC5C,GAAIxlB,EAAMsgE,gBAAgBC,GAAU,OAAOh9D,EAAQg9D,EACnDh9D,EAAQvD,EAAMqI,QAAQu3D,cAAcnuC,MAAK,SAAU+uC,GACjD,GAAsC,IAAlCA,EAAa5vE,QAAQ2vE,GAAgB,OAAOC,CAClD,GALiB,CAMnB,IAEGj9D,IAAOA,EAAQ3D,KAAKg9D,iBAAiBh9D,KAAKyI,QAAQw0D,aAAa,IAC7Dt5D,GAlBY,IAmBrB,GACC,CACD7X,IAAK,mBACLgB,MAAO,SAA0B+zE,EAAWj7C,GAC1C,IAAKi7C,EAAW,MAAO,GAGvB,GAFyB,mBAAdA,IAA0BA,EAAYA,EAAUj7C,IAClC,iBAAdi7C,IAAwBA,EAAY,CAACA,IACG,mBAA/C/1E,OAAO0B,UAAUoC,SAAStD,MAAMu1E,GAAiC,OAAOA,EAC5E,IAAKj7C,EAAM,OAAOi7C,EAAmB,SAAK,GAC1C,IAAIl9D,EAAQk9D,EAAUj7C,GAKtB,OAJKjiB,IAAOA,EAAQk9D,EAAU7gE,KAAK8gE,sBAAsBl7C,KACpDjiB,IAAOA,EAAQk9D,EAAU7gE,KAAKigE,mBAAmBr6C,KACjDjiB,IAAOA,EAAQk9D,EAAU7gE,KAAKwgE,wBAAwB56C,KACtDjiB,IAAOA,EAAQk9D,EAAmB,SAChCl9D,GAAS,EAClB,GACC,CACD7X,IAAK,qBACLgB,MAAO,SAA4B84B,EAAMm7C,GACvC,IAAIxpC,EAASv3B,KACTghE,EAAgBhhE,KAAKg9D,iBAAiB+D,GAAgB/gE,KAAKyI,QAAQw0D,aAAe,GAAIr3C,GACtFq5C,EAAQ,GACRgC,EAAU,SAAiBzlE,GACxBA,IACD+7B,EAAOmpC,gBAAgBllE,GACzByjE,EAAM5zE,KAAKmQ,GAEX+7B,EAAOK,OAAOjN,KAAK,uDAAuD53B,OAAOyI,IAErF,EAWA,MAVoB,iBAAToqB,GAAqBA,EAAK50B,QAAQ,MAAQ,GACzB,iBAAtBgP,KAAKyI,QAAQ63D,MAAyBW,EAAQjhE,KAAKigE,mBAAmBr6C,IAChD,iBAAtB5lB,KAAKyI,QAAQ63D,MAAiD,gBAAtBtgE,KAAKyI,QAAQ63D,MAAwBW,EAAQjhE,KAAK8gE,sBAAsBl7C,IAC1F,gBAAtB5lB,KAAKyI,QAAQ63D,MAAwBW,EAAQjhE,KAAKwgE,wBAAwB56C,KACrD,iBAATA,GAChBq7C,EAAQjhE,KAAKigE,mBAAmBr6C,IAElCo7C,EAAcn1E,SAAQ,SAAUq1E,GAC1BjC,EAAMjuE,QAAQkwE,GAAM,GAAGD,EAAQ1pC,EAAO0oC,mBAAmBiB,GAC/D,IACOjC,CACT,KAEKc,CACT,CA5HmB,GA6HfoB,EAAO,CAAC,CACVtE,KAAM,CAAC,MAAO,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,MACjIuE,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDrE,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,KAAM,QAAS,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzYuE,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDrE,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACxIuE,GAAI,CAAC,GACLF,GAAI,GACH,CACDrE,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAClDuE,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KACrBF,GAAI,GACH,CACDrE,KAAM,CAAC,KAAM,MACbuE,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDrE,KAAM,CAAC,MAAO,MACduE,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,GACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IACjBF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,EAAG,IACdF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,IACXF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDrE,KAAM,CAAC,OACPuE,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,GAAI,IACfF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,IACXF,GAAI,IACH,CACDrE,KAAM,CAAC,MACPuE,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,IACH,CACDrE,KAAM,CAAC,KAAM,MACbuE,GAAI,CAAC,EAAG,EAAG,GAAI,IACfF,GAAI,KAEFG,EAAqB,CACvB,EAAG,SAAW1yE,GACZ,OAAO2yE,OAAO3yE,EAAI,EACpB,EACA,EAAG,SAAWA,GACZ,OAAO2yE,OAAY,GAAL3yE,EAChB,EACA,EAAG,SAAWA,GACZ,OAAO,CACT,EACA,EAAG,SAAWA,GACZ,OAAO2yE,OAAO3yE,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACvH,EACA,EAAG,SAAWA,GACZ,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,EAAS,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,EAC/G,EACA,EAAG,SAAWA,GACZ,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAIA,GAAK,GAAKA,GAAK,EAAI,EAAI,EACpD,EACA,EAAG,SAAWA,GACZ,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACjG,EACA,EAAG,SAAWA,GACZ,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,GAAe,IAALA,EAAU,EAAI,EAClE,EACA,EAAG,SAAWA,GACZ,OAAO2yE,OAAO3yE,GAAK,EACrB,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAS,GAALA,EAAS,EAAIA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,EACnE,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAY,GAAL3yE,GAAe,IAALA,EAAU,EAAS,GAALA,GAAe,IAALA,EAAU,EAAIA,EAAI,GAAKA,EAAI,GAAK,EAAI,EACtF,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAO3yE,EAAI,IAAM,GAAKA,EAAI,KAAO,GAC1C,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAa,IAAN3yE,EAChB,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,EAAS,EAAI,EACvD,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAO3yE,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACxG,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAO3yE,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAU,IAANA,EAAU,EAAI,EACjE,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAY,GAAL3yE,GAAUA,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAI,EAC7D,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAS,GAALA,EAAS,EAAI,EAC1C,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAS,GAALA,GAAUA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAK,EAAIA,EAAI,IAAM,IAAMA,EAAI,IAAM,GAAK,EAAI,EAC5G,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAS,GAALA,GAAUA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAK,EAAI,EACzE,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAO3yE,EAAI,KAAO,EAAI,EAAIA,EAAI,KAAO,EAAI,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,EAAI,EAAI,EACzF,EACA,GAAI,SAAWA,GACb,OAAO2yE,OAAY,GAAL3yE,EAAS,EAAS,GAALA,EAAS,GAAKA,EAAI,GAAKA,EAAI,KAAOA,EAAI,IAAM,EAAI,EAAI,EACjF,GAEE4yE,EAAyB,CAAC,KAAM,KAAM,MACtCC,EAAgB,CAClBC,KAAM,EACNC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,KAAM,EACNzzC,MAAO,GAcT,IAAI0zC,EAAiB,WACnB,SAASA,EAAe/E,GACtB,IAbEgF,EAaEt5D,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFqU,EAAgBC,KAAM8hE,GACtB9hE,KAAK+8D,cAAgBA,EACrB/8D,KAAKyI,QAAUA,EACfzI,KAAK43B,OAAS29B,EAAWjzC,OAAO,kBAC1BtiB,KAAKyI,QAAQu5D,mBAAwD,OAAnChiE,KAAKyI,QAAQu5D,mBAAgD,oBAATC,MAAyBA,KAAKC,cACxHliE,KAAKyI,QAAQu5D,kBAAoB,KACjChiE,KAAK43B,OAAOpyB,MAAM,uJAEpBxF,KAAK+hE,OAtBHA,EAAQ,CAAC,EACbZ,EAAKt1E,SAAQ,SAAU2J,GACrBA,EAAIqnE,KAAKhxE,SAAQ,SAAUwwB,GACzB0lD,EAAM1lD,GAAK,CACT8lD,QAAS3sE,EAAI4rE,GACbgB,QAASf,EAAmB7rE,EAAI0rE,IAEpC,GACF,IACOa,EAcP,CA0GA,OAzGA,OAAaD,EAAgB,CAAC,CAC5Bh2E,IAAK,UACLgB,MAAO,SAAiBsrE,EAAKhsE,GAC3B4T,KAAK+hE,MAAM3J,GAAOhsE,CACpB,GACC,CACDN,IAAK,UACLgB,MAAO,SAAiB84B,GACtB,IAAInd,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,GAAIsU,KAAK++D,mBACP,IACE,OAAO,IAAIkD,KAAKC,YAAYt8C,EAAM,CAChCvc,KAAMZ,EAAQq2D,QAAU,UAAY,YAExC,CAAE,MAAO72B,GACP,MACF,CAEF,OAAOjoC,KAAK+hE,MAAMn8C,IAAS5lB,KAAK+hE,MAAM/hE,KAAK+8D,cAAcyD,wBAAwB56C,GACnF,GACC,CACD95B,IAAK,cACLgB,MAAO,SAAqB84B,GAC1B,IAAInd,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E22E,EAAOriE,KAAKsiE,QAAQ18C,EAAMnd,GAC9B,OAAIzI,KAAK++D,mBACAsD,GAAQA,EAAKE,kBAAkBC,iBAAiB72E,OAAS,EAE3D02E,GAAQA,EAAKF,QAAQx2E,OAAS,CACvC,GACC,CACDG,IAAK,sBACLgB,MAAO,SAA6B84B,EAAM95B,GACxC,IAAI2c,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAOsU,KAAK09D,YAAY93C,EAAMnd,GAASjV,KAAI,SAAUgY,GACnD,MAAO,GAAGzY,OAAOjH,GAAKiH,OAAOyY,EAC/B,GACF,GACC,CACD1f,IAAK,cACLgB,MAAO,SAAqB84B,GAC1B,IAAIxlB,EAAQJ,KACRyI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E22E,EAAOriE,KAAKsiE,QAAQ18C,EAAMnd,GAC9B,OAAK45D,EAGDriE,KAAK++D,mBACAsD,EAAKE,kBAAkBC,iBAAiBhlD,MAAK,SAAUilD,EAAiBC,GAC7E,OAAOlB,EAAciB,GAAmBjB,EAAckB,EACxD,IAAGlvE,KAAI,SAAUmvE,GACf,MAAO,GAAG5vE,OAAOqN,EAAMqI,QAAQm6D,SAAS7vE,OAAO4vE,EACjD,IAEKN,EAAKF,QAAQ3uE,KAAI,SAAU8yB,GAChC,OAAOlmB,EAAMk8D,UAAU12C,EAAMU,EAAQ7d,EACvC,IAXS,EAYX,GACC,CACD3c,IAAK,YACLgB,MAAO,SAAmB84B,EAAMs2C,GAC9B,IAAIzzD,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E22E,EAAOriE,KAAKsiE,QAAQ18C,EAAMnd,GAC9B,OAAI45D,EACEriE,KAAK++D,mBACA,GAAGhsE,OAAOiN,KAAKyI,QAAQm6D,SAAS7vE,OAAOsvE,EAAK/yB,OAAO4sB,IAErDl8D,KAAK6iE,yBAAyBR,EAAMnG,IAE7Cl8D,KAAK43B,OAAOjN,KAAK,6BAA6B53B,OAAO6yB,IAC9C,GACT,GACC,CACD95B,IAAK,2BACLgB,MAAO,SAAkCu1E,EAAMnG,GAC7C,IAAI3kC,EAASv3B,KACT8iE,EAAMT,EAAKU,MAAQV,EAAKD,QAAQlG,GAASmG,EAAKD,QAAQ9rE,KAAK0sE,IAAI9G,IAC/D1wD,EAAS62D,EAAKF,QAAQW,GACtB9iE,KAAKyI,QAAQw6D,sBAAgD,IAAxBZ,EAAKF,QAAQx2E,QAAoC,IAApB02E,EAAKF,QAAQ,KAClE,IAAX32D,EACFA,EAAS,SACW,IAAXA,IACTA,EAAS,KAGb,IAAI03D,EAAe,WACjB,OAAO3rC,EAAO9uB,QAAQm6D,SAAWp3D,EAAO5c,WAAa2oC,EAAO9uB,QAAQm6D,QAAUp3D,EAAO5c,WAAa4c,EAAO5c,UAC3G,EACA,MAAuC,OAAnCoR,KAAKyI,QAAQu5D,kBACA,IAAXx2D,EAAqB,GACH,iBAAXA,EAA4B,WAAWzY,OAAOyY,EAAO5c,YACzDs0E,IACqC,OAAnCljE,KAAKyI,QAAQu5D,mBAEbhiE,KAAKyI,QAAQw6D,sBAAgD,IAAxBZ,EAAKF,QAAQx2E,QAAoC,IAApB02E,EAAKF,QAAQ,GADjFe,IAIFljE,KAAKyI,QAAQm6D,SAAWE,EAAIl0E,WAAaoR,KAAKyI,QAAQm6D,QAAUE,EAAIl0E,WAAak0E,EAAIl0E,UAC9F,GACC,CACD9C,IAAK,mBACLgB,MAAO,WACL,OAAQy0E,EAAuBhiE,SAASS,KAAKyI,QAAQu5D,kBACvD,KAEKF,CACT,CAvHqB,GAwHrB,SAASqB,EAAUx4E,EAAQC,GACzB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IACFI,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAEFP,EAAKQ,KAAKC,MAAMT,EAAMG,EACxB,CACA,OAAOH,CACT,CACA,SAASu4E,GAAgB53E,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,CAAC,EAChDA,EAAI,EACN03E,EAAUr4E,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAChDC,EAAgBP,EAAQM,EAAKF,EAAOE,GACtC,IACShB,OAAOkB,0BAChBlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAEjEu3E,EAAUr4E,OAAOc,IAASC,SAAQ,SAAUC,GAC1ChB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GAEJ,CACA,OAAON,CACT,CACA,IAAI63E,GAAe,WACjB,SAASA,IACP,IAAI56D,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFqU,EAAgBC,KAAMqjE,GACtBrjE,KAAK43B,OAAS29B,EAAWjzC,OAAO,gBAChCtiB,KAAKyI,QAAUA,EACfzI,KAAKsjE,OAAS76D,EAAQoxD,eAAiBpxD,EAAQoxD,cAAcyJ,QAAU,SAAUx2E,GAC/E,OAAOA,CACT,EACAkT,KAAK80D,KAAKrsD,EACZ,CAkLA,OAjLA,OAAa46D,EAAc,CAAC,CAC1Bv3E,IAAK,OACLgB,MAAO,WACL,IAAI2b,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E+c,EAAQoxD,gBAAepxD,EAAQoxD,cAAgB,CAClD0J,aAAa,IAEf,IAAIC,EAAQ/6D,EAAQoxD,cACpB75D,KAAKyjE,YAA0BroE,IAAjBooE,EAAMC,OAAuBD,EAAMC,OAAS,EAC1DzjE,KAAKujE,iBAAoCnoE,IAAtBooE,EAAMD,aAA4BC,EAAMD,YAC3DvjE,KAAK0jE,yBAAoDtoE,IAA9BooE,EAAME,qBAAoCF,EAAME,oBAC3E1jE,KAAKxF,OAASgpE,EAAMhpE,OAASi8D,EAAY+M,EAAMhpE,QAAUgpE,EAAMG,eAAiB,KAChF3jE,KAAKwL,OAASg4D,EAAMh4D,OAASirD,EAAY+M,EAAMh4D,QAAUg4D,EAAMI,eAAiB,KAChF5jE,KAAK6jE,gBAAkBL,EAAMK,gBAAkBL,EAAMK,gBAAkBL,EAAMK,iBAAmB,IAChG7jE,KAAK8jE,eAAiBN,EAAMO,eAAiB,GAAKP,EAAMM,gBAAkB,IAC1E9jE,KAAK+jE,eAAiB/jE,KAAK8jE,eAAiB,GAAKN,EAAMO,gBAAkB,GACzE/jE,KAAKgkE,cAAgBR,EAAMQ,cAAgBvN,EAAY+M,EAAMQ,eAAiBR,EAAMS,sBAAwBxN,EAAY,OACxHz2D,KAAKkkE,cAAgBV,EAAMU,cAAgBzN,EAAY+M,EAAMU,eAAiBV,EAAMW,sBAAwB1N,EAAY,KACxHz2D,KAAKokE,wBAA0BZ,EAAMY,wBAA0BZ,EAAMY,wBAA0BZ,EAAMY,yBAA2B,IAChIpkE,KAAKqkE,YAAcb,EAAMa,YAAcb,EAAMa,YAAc,IAC3DrkE,KAAKskE,kBAAsClpE,IAAvBooE,EAAMc,cAA6Bd,EAAMc,aAC7DtkE,KAAKukE,aACP,GACC,CACDz4E,IAAK,QACLgB,MAAO,WACDkT,KAAKyI,SAASzI,KAAK80D,KAAK90D,KAAKyI,QACnC,GACC,CACD3c,IAAK,cACLgB,MAAO,WACL,IAAI03E,EAAY,GAAGzxE,OAAOiN,KAAKxF,OAAQ,SAASzH,OAAOiN,KAAKwL,QAC5DxL,KAAKykE,OAAS,IAAIxsE,OAAOusE,EAAW,KACpC,IAAIE,EAAoB,GAAG3xE,OAAOiN,KAAKxF,QAAQzH,OAAOiN,KAAK8jE,eAAgB,SAAS/wE,OAAOiN,KAAK+jE,gBAAgBhxE,OAAOiN,KAAKwL,QAC5HxL,KAAK2kE,eAAiB,IAAI1sE,OAAOysE,EAAmB,KACpD,IAAIE,EAAmB,GAAG7xE,OAAOiN,KAAKgkE,cAAe,SAASjxE,OAAOiN,KAAKkkE,eAC1ElkE,KAAKy6D,cAAgB,IAAIxiE,OAAO2sE,EAAkB,IACpD,GACC,CACD94E,IAAK,cACLgB,MAAO,SAAqBiK,EAAKuT,EAAM8tD,EAAK3vD,GAC1C,IACIjG,EACA1V,EACA+3E,EAHAzkE,EAAQJ,KAIRs2D,EAAct2D,KAAKyI,SAAWzI,KAAKyI,QAAQoxD,eAAiB75D,KAAKyI,QAAQoxD,cAAcgE,kBAAoB,CAAC,EAChH,SAASiH,EAAU5wE,GACjB,OAAOA,EAAI8C,QAAQ,MAAO,OAC5B,CACA,IAAI+tE,EAAe,SAAsBj5E,GACvC,GAAIA,EAAIkF,QAAQoP,EAAMyjE,iBAAmB,EAAG,CAC1C,IAAIvyD,EAAO+kD,EAAoB/rD,EAAMgsD,EAAaxqE,GAClD,OAAOsU,EAAMkkE,aAAelkE,EAAMkjE,OAAOhyD,OAAMlW,EAAWg9D,EAAKgL,GAAgBA,GAAgBA,GAAgB,CAAC,EAAG36D,GAAU6B,GAAO,CAAC,EAAG,CACtI06D,iBAAkBl5E,KACdwlB,CACR,CACA,IAAI3L,EAAI7Z,EAAI+K,MAAMuJ,EAAMyjE,iBACpB7vD,EAAIrO,EAAEof,QAAQztB,OACdoU,EAAI/F,EAAEtL,KAAK+F,EAAMyjE,iBAAiBvsE,OACtC,OAAO8I,EAAMkjE,OAAOjN,EAAoB/rD,EAAMgsD,EAAatiD,GAAItI,EAAG0sD,EAAKgL,GAAgBA,GAAgBA,GAAgB,CAAC,EAAG36D,GAAU6B,GAAO,CAAC,EAAG,CAC9I06D,iBAAkBhxD,IAEtB,EACAhU,KAAKukE,cACL,IAAIU,EAA8Bx8D,GAAWA,EAAQw8D,6BAA+BjlE,KAAKyI,QAAQw8D,4BAC7F/G,EAAkBz1D,GAAWA,EAAQoxD,oBAA2Dz+D,IAA1CqN,EAAQoxD,cAAcqE,gBAAgCz1D,EAAQoxD,cAAcqE,gBAAkBl+D,KAAKyI,QAAQoxD,cAAcqE,gBA+CnL,MA9CY,CAAC,CACXgH,MAAOllE,KAAK2kE,eACZQ,UAAW,SAAmBjxE,GAC5B,OAAO4wE,EAAU5wE,EACnB,GACC,CACDgxE,MAAOllE,KAAKykE,OACZU,UAAW,SAAmBjxE,GAC5B,OAAOkM,EAAMmjE,YAAcuB,EAAU1kE,EAAMqjE,OAAOvvE,IAAQ4wE,EAAU5wE,EACtE,IAEIrI,SAAQ,SAAUu5E,GAEtB,IADAP,EAAW,EACJriE,EAAQ4iE,EAAKF,MAAMloD,KAAKjmB,IAAM,CACnC,IAAIsuE,EAAa7iE,EAAM,GAAGlL,OAE1B,QAAc8D,KADdtO,EAAQi4E,EAAaM,IAEnB,GAA2C,mBAAhCJ,EAA4C,CACrD,IAAI3vB,EAAO2vB,EAA4BluE,EAAKyL,EAAOiG,GACnD3b,EAAwB,iBAATwoD,EAAoBA,EAAO,EAC5C,MAAO,GAAI7sC,GAAWA,EAAQ6O,eAAe+tD,GAC3Cv4E,EAAQ,OACH,IAAIoxE,EAAiB,CAC1BpxE,EAAQ0V,EAAM,GACd,QACF,CACEpC,EAAMw3B,OAAOjN,KAAK,8BAA8B53B,OAAOsyE,EAAY,uBAAuBtyE,OAAOgE,IACjGjK,EAAQ,EACV,KAC0B,iBAAVA,GAAuBsT,EAAMsjE,sBAC7C52E,EAAQ6oE,EAAW7oE,IAErB,IAAIq4E,EAAYC,EAAKD,UAAUr4E,GAS/B,GARAiK,EAAMA,EAAIC,QAAQwL,EAAM,GAAI2iE,GACxBjH,GACFkH,EAAKF,MAAMI,WAAax4E,EAAMnB,OAC9By5E,EAAKF,MAAMI,WAAa9iE,EAAM,GAAG7W,QAEjCy5E,EAAKF,MAAMI,UAAY,IAEzBT,GACgBzkE,EAAMikE,YACpB,KAEJ,CACF,IACOttE,CACT,GACC,CACDjL,IAAK,OACLgB,MAAO,SAAciK,EAAKmqE,GACxB,IAEI1+D,EACA1V,EAHAyqC,EAASv3B,KACTyI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAG/E65E,EAAgBnC,GAAgB,CAAC,EAAG36D,GAGxC,SAAS+8D,EAAiB15E,EAAK25E,GAC7B,IAAIC,EAAM1lE,KAAKokE,wBACf,GAAIt4E,EAAIkF,QAAQ00E,GAAO,EAAG,OAAO55E,EACjC,IAAI0P,EAAI1P,EAAI+K,MAAM,IAAIoB,OAAO,GAAGlF,OAAO2yE,EAAK,WACxCC,EAAgB,IAAI5yE,OAAOyI,EAAE,IACjC1P,EAAM0P,EAAE,GAER,IAAIoqE,GADJD,EAAgB3lE,KAAKo+D,YAAYuH,EAAeJ,IACR/iE,MAAM,MAC1CqjE,EAAsBF,EAAcnjE,MAAM,OAC1CojE,GAAuBA,EAAoBj6E,OAAS,GAAM,IAAMk6E,GAAuBA,EAAoBl6E,OAAS,GAAM,KAC5Hg6E,EAAgBA,EAAc3uE,QAAQ,KAAM,MAE9C,IACEuuE,EAAgBj9C,KAAKhmB,MAAMqjE,GACvBF,IAAkBF,EAAgBnC,GAAgBA,GAAgB,CAAC,EAAGqC,GAAmBF,GAC/F,CAAE,MAAO11E,GAEP,OADAmQ,KAAK43B,OAAOjN,KAAK,oDAAoD53B,OAAOjH,GAAM+D,GAC3E,GAAGkD,OAAOjH,GAAKiH,OAAO2yE,GAAK3yE,OAAO4yE,EAC3C,CAEA,cADOJ,EAAchJ,aACdzwE,CACT,CACA,IAxBAy5E,EAAc/G,oBAAqB,SAC5B+G,EAAchJ,aAuBd/5D,EAAQxC,KAAKy6D,cAAcz9C,KAAKjmB,IAAM,CAC3C,IAAI+uE,EAAa,GACbC,GAAW,EACf,IAAgD,IAA5CvjE,EAAM,GAAGxR,QAAQgP,KAAK6jE,mBAA4B,OAAO90E,KAAKyT,EAAM,IAAK,CAC3E,IAAIoR,EAAIpR,EAAM,GAAG3L,MAAMmJ,KAAK6jE,iBAAiBrwE,KAAI,SAAUwyE,GACzD,OAAOA,EAAK1uE,MACd,IACAkL,EAAM,GAAKoR,EAAEmR,QACb+gD,EAAalyD,EACbmyD,GAAW,CACb,CAEA,IADAj5E,EAAQo0E,EAAGsE,EAAiB93E,KAAKsS,KAAMwC,EAAM,GAAGlL,OAAQiuE,GAAgBA,KAC3D/iE,EAAM,KAAOzL,GAAwB,iBAAVjK,EAAoB,OAAOA,EAC9C,iBAAVA,IAAoBA,EAAQ6oE,EAAW7oE,IAC7CA,IACHkT,KAAK43B,OAAOjN,KAAK,qBAAqB53B,OAAOyP,EAAM,GAAI,iBAAiBzP,OAAOgE,IAC/EjK,EAAQ,IAENi5E,IACFj5E,EAAQg5E,EAAW3uE,QAAO,SAAUsI,EAAGiM,GACrC,OAAO6rB,EAAO+rC,OAAO7jE,EAAGiM,EAAGjD,EAAQ2vD,IAAKgL,GAAgBA,GAAgB,CAAC,EAAG36D,GAAU,CAAC,EAAG,CACxFu8D,iBAAkBxiE,EAAM,GAAGlL,SAE/B,GAAGxK,EAAMwK,SAEXP,EAAMA,EAAIC,QAAQwL,EAAM,GAAI1V,GAC5BkT,KAAKykE,OAAOa,UAAY,CAC1B,CACA,OAAOvuE,CACT,KAEKssE,CACT,CA7LmB,GA8LnB,SAAS4C,GAAUt7E,EAAQC,GACzB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IACFI,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAEFP,EAAKQ,KAAKC,MAAMT,EAAMG,EACxB,CACA,OAAOH,CACT,CACA,SAASq7E,GAAgB16E,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,CAAC,EAChDA,EAAI,EACNw6E,GAAUn7E,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAChDC,EAAgBP,EAAQM,EAAKF,EAAOE,GACtC,IACShB,OAAOkB,0BAChBlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAEjEq6E,GAAUn7E,OAAOc,IAASC,SAAQ,SAAUC,GAC1ChB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GAEJ,CACA,OAAON,CACT,CAiCA,SAAS26E,GAAsBprE,GAC7B,IAAI2+B,EAAQ,CAAC,EACb,OAAO,SAAyBxlC,EAAKkkE,EAAK3vD,GACxC,IAAI3c,EAAMssE,EAAM9vC,KAAKC,UAAU9f,GAC3B29D,EAAY1sC,EAAM5tC,GAKtB,OAJKs6E,IACHA,EAAYrrE,EAAGq9D,EAAK3vD,GACpBixB,EAAM5tC,GAAOs6E,GAERA,EAAUlyE,EACnB,CACF,CACA,IAAImyE,GAAY,WACd,SAASA,IACP,IAAI59D,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFqU,EAAgBC,KAAMqmE,GACtBrmE,KAAK43B,OAAS29B,EAAWjzC,OAAO,aAChCtiB,KAAKyI,QAAUA,EACfzI,KAAKsmE,QAAU,CACbhgD,OAAQ6/C,IAAsB,SAAU/N,EAAK3vD,GAC3C,IAAI29D,EAAY,IAAInE,KAAKsE,aAAanO,EAAK3vD,GAC3C,OAAO,SAAUvU,GACf,OAAOkyE,EAAU9C,OAAOpvE,EAC1B,CACF,IACAsyE,SAAUL,IAAsB,SAAU/N,EAAK3vD,GAC7C,IAAI29D,EAAY,IAAInE,KAAKsE,aAAanO,EAAK8N,GAAgBA,GAAgB,CAAC,EAAGz9D,GAAU,CAAC,EAAG,CAC3FnQ,MAAO,cAET,OAAO,SAAUpE,GACf,OAAOkyE,EAAU9C,OAAOpvE,EAC1B,CACF,IACAuyE,SAAUN,IAAsB,SAAU/N,EAAK3vD,GAC7C,IAAI29D,EAAY,IAAInE,KAAKyE,eAAetO,EAAK8N,GAAgB,CAAC,EAAGz9D,IACjE,OAAO,SAAUvU,GACf,OAAOkyE,EAAU9C,OAAOpvE,EAC1B,CACF,IACAyyE,aAAcR,IAAsB,SAAU/N,EAAK3vD,GACjD,IAAI29D,EAAY,IAAInE,KAAK2E,mBAAmBxO,EAAK8N,GAAgB,CAAC,EAAGz9D,IACrE,OAAO,SAAUvU,GACf,OAAOkyE,EAAU9C,OAAOpvE,EAAKuU,EAAQo+D,OAAS,MAChD,CACF,IACAC,KAAMX,IAAsB,SAAU/N,EAAK3vD,GACzC,IAAI29D,EAAY,IAAInE,KAAK8E,WAAW3O,EAAK8N,GAAgB,CAAC,EAAGz9D,IAC7D,OAAO,SAAUvU,GACf,OAAOkyE,EAAU9C,OAAOpvE,EAC1B,CACF,KAEF8L,KAAK80D,KAAKrsD,EACZ,CA+CA,OA9CA,OAAa49D,EAAW,CAAC,CACvBv6E,IAAK,OACLgB,MAAO,SAAc6sE,GACnB,IAGI6J,GAHU93E,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAChFmuE,cAAe,CAAC,IAEEA,cACpB75D,KAAK6jE,gBAAkBL,EAAMK,gBAAkBL,EAAMK,gBAAkBL,EAAMK,iBAAmB,GAClG,GACC,CACD/3E,IAAK,MACLgB,MAAO,SAAagC,EAAMoyE,GACxBlhE,KAAKsmE,QAAQx3E,EAAKwgB,cAAchY,QAAU4pE,CAC5C,GACC,CACDp1E,IAAK,YACLgB,MAAO,SAAmBgC,EAAMoyE,GAC9BlhE,KAAKsmE,QAAQx3E,EAAKwgB,cAAchY,QAAU6uE,GAAsBjF,EAClE,GACC,CACDp1E,IAAK,SACLgB,MAAO,SAAgBA,EAAOk6E,EAAS5O,EAAK3vD,GAC1C,IAAIrI,EAAQJ,KAqBZ,OApBcgnE,EAAQnwE,MAAMmJ,KAAK6jE,iBACZ1sE,QAAO,SAAU8vE,EAAKv7D,GACzC,IAAIw7D,EA/GZ,SAAwBC,GACtB,IAAIC,EAAaD,EAAU73D,cAAchY,OACrC+vE,EAAgB,CAAC,EACrB,GAAIF,EAAUn2E,QAAQ,MAAQ,EAAG,CAC/B,IAAI2U,EAAIwhE,EAAUtwE,MAAM,KACxBuwE,EAAazhE,EAAE,GAAG2J,cAAchY,OAChC,IAAIgwE,EAAS3hE,EAAE,GAAGk1C,UAAU,EAAGl1C,EAAE,GAAGha,OAAS,GAC1B,aAAfy7E,GAA6BE,EAAOt2E,QAAQ,KAAO,EAChDq2E,EAAcb,WAAUa,EAAcb,SAAWc,EAAOhwE,QACrC,iBAAf8vE,GAAiCE,EAAOt2E,QAAQ,KAAO,EAC3Dq2E,EAAcR,QAAOQ,EAAcR,MAAQS,EAAOhwE,QAE5CgwE,EAAOzwE,MAAM,KACnBhL,SAAQ,SAAU2+B,GACrB,GAAKA,EAAL,CACA,IACE+8C,EAAc9S,EADCjqC,EAAI3zB,MAAM,MAEzB/K,EAAMy7E,EAAY,GAEhBrzE,EADKqzE,EAAY14E,MAAM,GACZwL,KAAK,KAAK/C,OAAON,QAAQ,WAAY,IAC/CqwE,EAAcv7E,EAAIwL,UAAS+vE,EAAcv7E,EAAIwL,QAAUpD,GAChD,UAARA,IAAiBmzE,EAAcv7E,EAAIwL,SAAU,GACrC,SAARpD,IAAgBmzE,EAAcv7E,EAAIwL,SAAU,GAC3CuZ,MAAM3c,KAAMmzE,EAAcv7E,EAAIwL,QAAU8W,SAASla,EAAK,IAT3C,CAUlB,GAEJ,CACA,MAAO,CACLkzE,WAAYA,EACZC,cAAeA,EAEnB,CAgF8BG,CAAe97D,GACnC07D,EAAaF,EAAgBE,WAC7BC,EAAgBH,EAAgBG,cAClC,GAAIjnE,EAAMkmE,QAAQc,GAAa,CAC7B,IAAIK,EAAYR,EAChB,IACE,IAAIS,EAAaj/D,GAAWA,EAAQk/D,cAAgBl/D,EAAQk/D,aAAal/D,EAAQu8D,mBAAqB,CAAC,EACnG3oD,EAAIqrD,EAAWE,QAAUF,EAAWtP,KAAO3vD,EAAQm/D,QAAUn/D,EAAQ2vD,KAAOA,EAChFqP,EAAYrnE,EAAMkmE,QAAQc,GAAYH,EAAK5qD,EAAG6pD,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGmB,GAAgB5+D,GAAUi/D,GAC9H,CAAE,MAAOliE,GACPpF,EAAMw3B,OAAOjN,KAAKnlB,EACpB,CACA,OAAOiiE,CACT,CAGA,OAFErnE,EAAMw3B,OAAOjN,KAAK,oCAAoC53B,OAAOq0E,IAExDH,CACT,GAAGn6E,EAEL,KAEKu5E,CACT,CAzFgB,GA0FhB,SAASwB,GAAUl9E,EAAQC,GACzB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IACFI,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAEFP,EAAKQ,KAAKC,MAAMT,EAAMG,EACxB,CACA,OAAOH,CACT,CACA,SAASi9E,GAAgBt8E,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,CAAC,EAChDA,EAAI,EACNo8E,GAAU/8E,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAChDC,EAAgBP,EAAQM,EAAKF,EAAOE,GACtC,IACShB,OAAOkB,0BAChBlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAEjEi8E,GAAU/8E,OAAOc,IAASC,SAAQ,SAAUC,GAC1ChB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GAEJ,CACA,OAAON,CACT,CACA,SAASu8E,GAAe9Q,GACtB,IAAIC,EAaN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVnlE,MAAsB,OAAO,EACxC,IAEE,OADA26D,QAAQrgE,UAAUiiC,QAAQ/gC,KAAKypE,QAAQC,UAAUvK,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOh9D,GACP,OAAO,CACT,CACF,CAvBkCm4E,GAChC,OAAO,WACL,IACE7sE,EADEo8D,EAAQhD,EAAgB0C,GAE5B,GAAIC,EAA2B,CAC7B,IAAIM,EAAYjD,EAAgBv0D,MAAMzT,YACtC4O,EAASg8D,QAAQC,UAAUG,EAAO7rE,UAAW8rE,EAC/C,MACEr8D,EAASo8D,EAAMjsE,MAAM0U,KAAMtU,WAE7B,OAAO4oE,EAA2Bt0D,KAAM7E,EAC1C,CACF,CAkBA,IAAI8sE,GAAY,SAAUlQ,GACxB3D,EAAU6T,EAAWlQ,GACrB,IAAIC,EAAS+P,GAAeE,GAC5B,SAASA,EAAUC,EAASC,EAAOxO,GACjC,IAAIv5D,EACAqI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAsBnF,OArBAqU,EAAgBC,KAAMioE,GACtB7nE,EAAQ43D,EAAOtqE,KAAKsS,MAChB22D,GACFnB,EAAa9nE,KAAKumE,EAAuB7zD,IAE3CA,EAAM8nE,QAAUA,EAChB9nE,EAAM+nE,MAAQA,EACd/nE,EAAMu5D,SAAWA,EACjBv5D,EAAM28D,cAAgBpD,EAASoD,cAC/B38D,EAAMqI,QAAUA,EAChBrI,EAAMw3B,OAAS29B,EAAWjzC,OAAO,oBACjCliB,EAAMgoE,aAAe,GACrBhoE,EAAMioE,iBAAmB5/D,EAAQ4/D,kBAAoB,GACrDjoE,EAAMkoE,aAAe,EACrBloE,EAAMmoE,WAAa9/D,EAAQ8/D,YAAc,EAAI9/D,EAAQ8/D,WAAa,EAClEnoE,EAAMooE,aAAe//D,EAAQ+/D,cAAgB,EAAI//D,EAAQ+/D,aAAe,IACxEpoE,EAAMgZ,MAAQ,CAAC,EACfhZ,EAAM63B,MAAQ,GACV73B,EAAM8nE,SAAW9nE,EAAM8nE,QAAQpT,MACjC10D,EAAM8nE,QAAQpT,KAAK6E,EAAUlxD,EAAQy/D,QAASz/D,GAEzCrI,CACT,CAsLA,OArLA,OAAa6nE,EAAW,CAAC,CACvBn8E,IAAK,YACLgB,MAAO,SAAmB27E,EAAWzO,EAAYvxD,EAASV,GACxD,IAAIwvB,EAASv3B,KACT0oE,EAAS,CAAC,EACVC,EAAU,CAAC,EACXC,EAAkB,CAAC,EACnBC,EAAmB,CAAC,EA4BxB,OA3BAJ,EAAU58E,SAAQ,SAAUusE,GAC1B,IAAI0Q,GAAmB,EACvB9O,EAAWnuE,SAAQ,SAAUosE,GAC3B,IAAInpE,EAAO,GAAGiE,OAAOqlE,EAAK,KAAKrlE,OAAOklE,IACjCxvD,EAAQklD,QAAUp2B,EAAO4wC,MAAMzP,kBAAkBN,EAAKH,GACzD1gC,EAAOne,MAAMtqB,GAAQ,EACZyoC,EAAOne,MAAMtqB,GAAQ,IAAoC,IAAvByoC,EAAOne,MAAMtqB,QAClCsM,IAAlButE,EAAQ75E,KAAqB65E,EAAQ75E,IAAQ,IAEjDyoC,EAAOne,MAAMtqB,GAAQ,EACrBg6E,GAAmB,OACG1tE,IAAlButE,EAAQ75E,KAAqB65E,EAAQ75E,IAAQ,QAC5BsM,IAAjBstE,EAAO55E,KAAqB45E,EAAO55E,IAAQ,QAClBsM,IAAzBytE,EAAiB5Q,KAAmB4Q,EAAiB5Q,IAAM,IAEnE,IACK6Q,IAAkBF,EAAgBxQ,IAAO,EAChD,KACIttE,OAAOD,KAAK69E,GAAQ/8E,QAAUb,OAAOD,KAAK89E,GAASh9E,SACrDqU,KAAKi4B,MAAM5sC,KAAK,CACds9E,QAASA,EACTI,aAAcj+E,OAAOD,KAAK89E,GAASh9E,OACnCgO,OAAQ,CAAC,EACTqvE,OAAQ,GACRjhE,SAAUA,IAGP,CACL2gE,OAAQ59E,OAAOD,KAAK69E,GACpBC,QAAS79E,OAAOD,KAAK89E,GACrBC,gBAAiB99E,OAAOD,KAAK+9E,GAC7BC,iBAAkB/9E,OAAOD,KAAKg+E,GAElC,GACC,CACD/8E,IAAK,SACLgB,MAAO,SAAgBgC,EAAMjB,EAAKyc,GAChC,IAAIvS,EAAIjJ,EAAK+H,MAAM,KACfuhE,EAAMrgE,EAAE,GACRkgE,EAAKlgE,EAAE,GACPlK,GAAKmS,KAAK29C,KAAK,gBAAiBya,EAAKH,EAAIpqE,GACzCyc,GACFtK,KAAKmoE,MAAMc,kBAAkB7Q,EAAKH,EAAI3tD,GAExCtK,KAAKoZ,MAAMtqB,GAAQjB,GAAO,EAAI,EAC9B,IAAI8L,EAAS,CAAC,EACdqG,KAAKi4B,MAAMpsC,SAAQ,SAAU8xB,GA1qDnC,IAAkBhzB,EAAcsrE,EAAUljE,EACpCm2E,EACF98E,EACA4nB,EAHcrpB,EA2qDDgzB,EAAEhkB,OA3qDas8D,EA2qDEgC,EA1qD5BiR,EAAkBtT,EAAcjrE,EA0qDX,CAACytE,GA1qDwBttE,QAChDsB,EAAM88E,EAAgB98E,IACtB4nB,EAAIk1D,EAAgBl1D,EACtB5nB,EAAI4nB,GAAK5nB,EAAI4nB,IAAM,GACfjhB,IAAQ3G,EAAI4nB,GAAK5nB,EAAI4nB,GAAGjhB,OAAOkjE,IAC9BljE,GAAQ3G,EAAI4nB,GAAG3oB,KAAK4qE,GA2kD3B,SAAuBt4C,EAAG7uB,QACAsM,IAApBuiB,EAAEgrD,QAAQ75E,YACL6uB,EAAEgrD,QAAQ75E,GACjB6uB,EAAEorD,eAEN,CAsFQI,CAAcxrD,EAAG7uB,GACbjB,GAAK8vB,EAAEqrD,OAAO39E,KAAKwC,GACA,IAAnB8vB,EAAEorD,cAAuBprD,EAAE/vB,OAC7B9C,OAAOD,KAAK8yB,EAAEhkB,QAAQ9N,SAAQ,SAAUwwB,GACjC1iB,EAAO0iB,KAAI1iB,EAAO0iB,GAAK,CAAC,GAC7B,IAAI+sD,EAAazrD,EAAEhkB,OAAO0iB,GACtB+sD,EAAWz9E,QACby9E,EAAWv9E,SAAQ,SAAUosE,QACL78D,IAAlBzB,EAAO0iB,GAAG47C,KAAmBt+D,EAAO0iB,GAAG47C,IAAM,EACnD,GAEJ,IACAt6C,EAAE/vB,MAAO,EACL+vB,EAAEqrD,OAAOr9E,OACXgyB,EAAE5V,SAAS4V,EAAEqrD,QAEbrrD,EAAE5V,WAGR,IACA/H,KAAK29C,KAAK,SAAUhkD,GACpBqG,KAAKi4B,MAAQj4B,KAAKi4B,MAAMhtC,QAAO,SAAU0yB,GACvC,OAAQA,EAAE/vB,IACZ,GACF,GACC,CACD9B,IAAK,OACLgB,MAAO,SAAcsrE,EAAKH,EAAIoR,GAC5B,IAAI5wC,EAASz4B,KACTspE,EAAQ59E,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,EAC5E69E,EAAO79E,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAKsU,KAAKwoE,aAChFzgE,EAAWrc,UAAUC,OAAS,EAAID,UAAU,QAAK0P,EACrD,OAAKg9D,EAAIzsE,OACLqU,KAAKsoE,cAAgBtoE,KAAKqoE,sBAC5BroE,KAAKooE,aAAa/8E,KAAK,CACrB+sE,IAAKA,EACLH,GAAIA,EACJoR,OAAQA,EACRC,MAAOA,EACPC,KAAMA,EACNxhE,SAAUA,KAId/H,KAAKsoE,eACEtoE,KAAKkoE,QAAQmB,GAAQjR,EAAKH,GAAI,SAAUpqE,EAAKyc,GAElD,GADAmuB,EAAO6vC,eACH7vC,EAAO2vC,aAAaz8E,OAAS,EAAG,CAClC,IAAIgC,EAAO8qC,EAAO2vC,aAAarjD,QAC/B0T,EAAOtX,KAAKxzB,EAAKyqE,IAAKzqE,EAAKsqE,GAAItqE,EAAK07E,OAAQ17E,EAAK27E,MAAO37E,EAAK47E,KAAM57E,EAAKoa,SAC1E,CACIla,GAAOyc,GAAQg/D,EAAQ7wC,EAAO8vC,WAChCpmE,YAAW,WACTs2B,EAAOtX,KAAKzzB,KAAK+qC,EAAQ2/B,EAAKH,EAAIoR,EAAQC,EAAQ,EAAU,EAAPC,EAAUxhE,EACjE,GAAGwhE,GAGLxhE,EAASla,EAAKyc,EAChB,KA1BwBvC,EAAS,KAAM,CAAC,EA2B1C,GACC,CACDjc,IAAK,iBACLgB,MAAO,SAAwB27E,EAAWzO,GACxC,IAAI75B,EAASngC,KACTyI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Eqc,EAAWrc,UAAUC,OAAS,EAAID,UAAU,QAAK0P,EACrD,IAAK4E,KAAKkoE,QAER,OADAloE,KAAK43B,OAAOjN,KAAK,kEACV5iB,GAAYA,IAEI,iBAAd0gE,IAAwBA,EAAYzoE,KAAK+8D,cAAcI,mBAAmBsL,IAC3D,iBAAfzO,IAAyBA,EAAa,CAACA,IAClD,IAAI0O,EAAS1oE,KAAKwpE,UAAUf,EAAWzO,EAAYvxD,EAASV,GAC5D,IAAK2gE,EAAOA,OAAO/8E,OAEjB,OADK+8E,EAAOC,QAAQh9E,QAAQoc,IACrB,KAET2gE,EAAOA,OAAO78E,SAAQ,SAAUiD,GAC9BqxC,EAAOspC,QAAQ36E,EACjB,GACF,GACC,CACDhD,IAAK,OACLgB,MAAO,SAAc27E,EAAWzO,EAAYjyD,GAC1C/H,KAAK0pE,eAAejB,EAAWzO,EAAY,CAAC,EAAGjyD,EACjD,GACC,CACDjc,IAAK,SACLgB,MAAO,SAAgB27E,EAAWzO,EAAYjyD,GAC5C/H,KAAK0pE,eAAejB,EAAWzO,EAAY,CACzCrM,QAAQ,GACP5lD,EACL,GACC,CACDjc,IAAK,UACLgB,MAAO,SAAiBgC,GACtB,IAAIsxC,EAASpgC,KACTxF,EAAS9O,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,GAC7EqM,EAAIjJ,EAAK+H,MAAM,KACfuhE,EAAMrgE,EAAE,GACRkgE,EAAKlgE,EAAE,GACXiI,KAAKmhB,KAAKi3C,EAAKH,EAAI,YAAQ78D,OAAWA,GAAW,SAAUvN,EAAKyc,GAC1Dzc,GAAKuyC,EAAOxI,OAAOjN,KAAK,GAAG53B,OAAOyH,EAAQ,sBAAsBzH,OAAOklE,EAAI,kBAAkBllE,OAAOqlE,EAAK,WAAYvqE,IACpHA,GAAOyc,GAAM81B,EAAOxI,OAAO1gB,IAAI,GAAGnkB,OAAOyH,EAAQ,qBAAqBzH,OAAOklE,EAAI,kBAAkBllE,OAAOqlE,GAAM9tD,GACrH81B,EAAOzmC,OAAO7K,EAAMjB,EAAKyc,EAC3B,GACF,GACC,CACDxe,IAAK,cACLgB,MAAO,SAAqB27E,EAAWhvE,EAAW3N,EAAK69E,EAAeC,GACpE,IAAInhE,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EsU,KAAK25D,SAAS97C,OAAS7d,KAAK25D,SAAS97C,MAAMqhD,qBAAuBl/D,KAAK25D,SAAS97C,MAAMqhD,mBAAmBzlE,GAC3GuG,KAAK43B,OAAOjN,KAAK,qBAAsB53B,OAAOjH,EAAK,wBAA0BiH,OAAO0G,EAAW,wBAA0B,4NAGvH3N,SAA6C,KAARA,IACrCkU,KAAKkoE,SAAWloE,KAAKkoE,QAAQ5lD,QAC/BtiB,KAAKkoE,QAAQ5lD,OAAOmmD,EAAWhvE,EAAW3N,EAAK69E,EAAe,KAAM7B,GAAgBA,GAAgB,CAAC,EAAGr/D,GAAU,CAAC,EAAG,CACpHmhE,SAAUA,KAGTnB,GAAcA,EAAU,IAC7BzoE,KAAKmoE,MAAM5P,YAAYkQ,EAAU,GAAIhvE,EAAW3N,EAAK69E,GACvD,KAEK1B,CACT,CAnNgB,CAmNdzS,GAiEF,SAASqU,GAAiBphE,GAOxB,MAN0B,iBAAfA,EAAQwvD,KAAiBxvD,EAAQwvD,GAAK,CAACxvD,EAAQwvD,KACvB,iBAAxBxvD,EAAQw0D,cAA0Bx0D,EAAQw0D,YAAc,CAACx0D,EAAQw0D,cAC1C,iBAAvBx0D,EAAQm2D,aAAyBn2D,EAAQm2D,WAAa,CAACn2D,EAAQm2D,aACtEn2D,EAAQu3D,eAAiBv3D,EAAQu3D,cAAchvE,QAAQ,UAAY,IACrEyX,EAAQu3D,cAAgBv3D,EAAQu3D,cAAcjtE,OAAO,CAAC,YAEjD0V,CACT,CACA,SAASqhE,GAAUn/E,EAAQC,GACzB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IACFI,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAEFP,EAAKQ,KAAKC,MAAMT,EAAMG,EACxB,CACA,OAAOH,CACT,CACA,SAASk/E,GAAgBv+E,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,CAAC,EAChDA,EAAI,EACNq+E,GAAUh/E,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAChDC,EAAgBP,EAAQM,EAAKF,EAAOE,GACtC,IACShB,OAAOkB,0BAChBlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAEjEk+E,GAAUh/E,OAAOc,IAASC,SAAQ,SAAUC,GAC1ChB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GAEJ,CACA,OAAON,CACT,CACA,SAASw+E,GAAe/S,GACtB,IAAIC,EAaN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVnlE,MAAsB,OAAO,EACxC,IAEE,OADA26D,QAAQrgE,UAAUiiC,QAAQ/gC,KAAKypE,QAAQC,UAAUvK,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOh9D,GACP,OAAO,CACT,CACF,CAvBkCo6E,GAChC,OAAO,WACL,IACE9uE,EADEo8D,EAAQhD,EAAgB0C,GAE5B,GAAIC,EAA2B,CAC7B,IAAIM,EAAYjD,EAAgBv0D,MAAMzT,YACtC4O,EAASg8D,QAAQC,UAAUG,EAAO7rE,UAAW8rE,EAC/C,MACEr8D,EAASo8D,EAAMjsE,MAAM0U,KAAMtU,WAE7B,OAAO4oE,EAA2Bt0D,KAAM7E,EAC1C,CACF,CAYA,SAASjM,KAAQ,CASjB,IAAIg7E,GAAO,SAAUnS,GACnB3D,EAAU8V,EAAMnS,GAChB,IAAIC,EAASgS,GAAeE,GAC5B,SAASA,IACP,IAAI9pE,EAZqB+pE,EAarB1hE,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Eqc,EAAWrc,UAAUC,OAAS,EAAID,UAAU,QAAK0P,EAarD,GAZA2E,EAAgBC,KAAMkqE,GACtB9pE,EAAQ43D,EAAOtqE,KAAKsS,MAChB22D,GACFnB,EAAa9nE,KAAKumE,EAAuB7zD,IAE3CA,EAAMqI,QAAUohE,GAAiBphE,GACjCrI,EAAMu5D,SAAW,CAAC,EAClBv5D,EAAMw3B,OAAS29B,EACfn1D,EAAMgqE,QAAU,CACdC,SAAU,IAxBaF,EA0BLlW,EAAuB7zD,GAzBlCtV,OAAOw/E,oBAAoBx/E,OAAOggC,eAAeq/C,IACvDt+E,SAAQ,SAAUo7E,GACI,mBAAdkD,EAAKlD,KACdkD,EAAKlD,GAAOkD,EAAKlD,GAAKvzE,KAAKy2E,GAE/B,IAqBMpiE,IAAa3H,EAAMmqE,gBAAkB9hE,EAAQ+hE,QAAS,CACxD,IAAKpqE,EAAMqI,QAAQgiE,cAEjB,OADArqE,EAAM00D,KAAKrsD,EAASV,GACbusD,EAA2Bl0D,EAAO6zD,EAAuB7zD,IAElE+B,YAAW,WACT/B,EAAM00D,KAAKrsD,EAASV,EACtB,GAAG,EACL,CACA,OAAO3H,CACT,CAucA,OAtcA,OAAa8pE,EAAM,CAAC,CAClBp+E,IAAK,OACLgB,MAAO,WACL,IAAIyqC,EAASv3B,KACTyI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Eqc,EAAWrc,UAAUC,OAAS,EAAID,UAAU,QAAK0P,EAC9B,mBAAZqN,IACTV,EAAWU,EACXA,EAAU,CAAC,IAERA,EAAQyvD,YAAmC,IAAtBzvD,EAAQyvD,WAAuBzvD,EAAQwvD,KACrC,iBAAfxvD,EAAQwvD,GACjBxvD,EAAQyvD,UAAYzvD,EAAQwvD,GACnBxvD,EAAQwvD,GAAGjnE,QAAQ,eAAiB,IAC7CyX,EAAQyvD,UAAYzvD,EAAQwvD,GAAG,KAGnC,IAAIyS,EAvLD,CACL3V,OAAO,EACP0V,eAAe,EACfxS,GAAI,CAAC,eACLC,UAAW,CAAC,eACZ+E,YAAa,CAAC,OACd2B,YAAY,EACZoB,eAAe,EACfO,0BAA0B,EAC1BD,KAAM,MACNqK,SAAS,EACT1H,sBAAsB,EACtBvL,aAAc,IACdqC,YAAa,IACbyF,gBAAiB,IACjBE,iBAAkB,IAClBkL,yBAAyB,EACzBpN,aAAa,EACbb,eAAe,EACfO,cAAe,WACfO,oBAAoB,EACpBH,mBAAmB,EACnB2H,6BAA6B,EAC7B3G,aAAa,EACbG,yBAAyB,EACzBkB,YAAY,EACZC,mBAAmB,EACnBnE,eAAe,EACfJ,YAAY,EACZK,uBAAuB,EACvBkC,wBAAwB,EACxBD,6BAA6B,EAC7B5C,yBAAyB,EACzBJ,iCAAkC,SAAgBx5D,GAChD,IAAI0pE,EAAM,CAAC,EAIX,GAHyB,YAArB,OAAQ1pE,EAAK,MAAkB0pE,EAAM1pE,EAAK,IACvB,iBAAZA,EAAK,KAAiB0pE,EAAItO,aAAep7D,EAAK,IAClC,iBAAZA,EAAK,KAAiB0pE,EAAIC,aAAe3pE,EAAK,IAChC,YAArB,OAAQA,EAAK,KAAyC,YAArB,OAAQA,EAAK,IAAkB,CAClE,IAAIsH,EAAUtH,EAAK,IAAMA,EAAK,GAC9BrW,OAAOD,KAAK4d,GAAS5c,SAAQ,SAAUC,GACrC++E,EAAI/+E,GAAO2c,EAAQ3c,EACrB,GACF,CACA,OAAO++E,CACT,EACAhR,cAAe,CACb0J,aAAa,EACbD,OAAQ,SAAgBx2E,EAAOk6E,EAAS5O,EAAK3vD,GAC3C,OAAO3b,CACT,EACA0N,OAAQ,KACRgR,OAAQ,KACRq4D,gBAAiB,IACjBC,eAAgB,IAChBE,cAAe,MACfE,cAAe,IACfE,wBAAyB,IACzBC,YAAa,IACbnG,iBAAiB,IAuIjB,SAAS6M,EAAoBC,GAC3B,OAAKA,EACwB,mBAAlBA,EAAqC,IAAIA,EAC7CA,EAFoB,IAG7B,CACA,GAfAhrE,KAAKyI,QAAUshE,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGW,GAAU1qE,KAAKyI,SAAUohE,GAAiBphE,IACvE,OAAlCzI,KAAKyI,QAAQowD,mBACf74D,KAAKyI,QAAQoxD,cAAgBkQ,GAAgBA,GAAgB,CAAC,EAAGW,EAAQ7Q,eAAgB75D,KAAKyI,QAAQoxD,qBAE3Ez+D,IAAzBqN,EAAQivD,eACV13D,KAAKyI,QAAQ0xD,wBAA0B1xD,EAAQivD,mBAErBt8D,IAAxBqN,EAAQsxD,cACV/5D,KAAKyI,QAAQ2xD,uBAAyB3xD,EAAQsxD,cAO3C/5D,KAAKyI,QAAQ+hE,QAAS,CAMzB,IAAIpE,EALApmE,KAAKoqE,QAAQxyC,OACf29B,EAAWT,KAAKiW,EAAoB/qE,KAAKoqE,QAAQxyC,QAAS53B,KAAKyI,SAE/D8sD,EAAWT,KAAK,KAAM90D,KAAKyI,SAGzBzI,KAAKoqE,QAAQhE,UACfA,EAAYpmE,KAAKoqE,QAAQhE,UACA,oBAATnE,OAChBmE,EAAYC,IAEd,IAAI4E,EAAK,IAAIlL,EAAa//D,KAAKyI,SAC/BzI,KAAKmoE,MAAQ,IAAIrQ,EAAc93D,KAAKyI,QAAQ6vD,UAAWt4D,KAAKyI,SAC5D,IAAI1Q,EAAIiI,KAAK25D,SACb5hE,EAAE6/B,OAAS29B,EACXx9D,EAAE8nE,cAAgB7/D,KAAKmoE,MACvBpwE,EAAEglE,cAAgBkO,EAClBlzE,EAAEskE,eAAiB,IAAIyF,EAAemJ,EAAI,CACxCrI,QAAS5iE,KAAKyI,QAAQ+2D,gBACtBwC,kBAAmBhiE,KAAKyI,QAAQu5D,kBAChCiB,qBAAsBjjE,KAAKyI,QAAQw6D,wBAEjCmD,GAAepmE,KAAKyI,QAAQoxD,cAAcyJ,QAAUtjE,KAAKyI,QAAQoxD,cAAcyJ,SAAWoH,EAAQ7Q,cAAcyJ,SAClHvrE,EAAEquE,UAAY2E,EAAoB3E,GAClCruE,EAAEquE,UAAUtR,KAAK/8D,EAAGiI,KAAKyI,SACzBzI,KAAKyI,QAAQoxD,cAAcyJ,OAASvrE,EAAEquE,UAAU9C,OAAO5vE,KAAKqE,EAAEquE,YAEhEruE,EAAEyiE,aAAe,IAAI6I,GAAarjE,KAAKyI,SACvC1Q,EAAE8lB,MAAQ,CACRqhD,mBAAoBl/D,KAAKk/D,mBAAmBxrE,KAAKsM,OAEnDjI,EAAEwlE,iBAAmB,IAAI0K,GAAU8C,EAAoB/qE,KAAKoqE,QAAQlC,SAAUnwE,EAAE8nE,cAAe9nE,EAAGiI,KAAKyI,SACvG1Q,EAAEwlE,iBAAiB/f,GAAG,KAAK,SAAUtd,GACnC,IAAK,IAAI7/B,EAAO3U,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMoT,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGa,EAAKb,EAAO,GAAK5U,UAAU4U,GAE7Bi3B,EAAOomB,KAAKryD,MAAMisC,EAAQ,CAAC2I,GAAOntC,OAAOoO,GAC3C,IACInB,KAAKoqE,QAAQc,mBACfnzE,EAAEmzE,iBAAmBH,EAAoB/qE,KAAKoqE,QAAQc,kBACtDnzE,EAAEmzE,iBAAiBpW,KAAK/8D,EAAGiI,KAAKyI,QAAQ0iE,UAAWnrE,KAAKyI,UAEtDzI,KAAKoqE,QAAQ7O,aACfxjE,EAAEwjE,WAAawP,EAAoB/qE,KAAKoqE,QAAQ7O,YAC5CxjE,EAAEwjE,WAAWzG,MAAM/8D,EAAEwjE,WAAWzG,KAAK90D,OAE3CA,KAAKm5D,WAAa,IAAIO,EAAW15D,KAAK25D,SAAU35D,KAAKyI,SACrDzI,KAAKm5D,WAAW3b,GAAG,KAAK,SAAUtd,GAChC,IAAK,IAAI5+B,EAAQ5V,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMqU,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGJ,EAAKI,EAAQ,GAAK7V,UAAU6V,GAE9Bg2B,EAAOomB,KAAKryD,MAAMisC,EAAQ,CAAC2I,GAAOntC,OAAOoO,GAC3C,IACAnB,KAAKoqE,QAAQC,SAASx+E,SAAQ,SAAUwnC,GAClCA,EAAEyhC,MAAMzhC,EAAEyhC,KAAKv9B,EACrB,GACF,CAGA,GAFAv3B,KAAKsjE,OAAStjE,KAAKyI,QAAQoxD,cAAcyJ,OACpCv7D,IAAUA,EAAW7Y,IACtB8Q,KAAKyI,QAAQw0D,cAAgBj9D,KAAK25D,SAASuR,mBAAqBlrE,KAAKyI,QAAQ2vD,IAAK,CACpF,IAAI6G,EAAQj/D,KAAK25D,SAASoD,cAAcC,iBAAiBh9D,KAAKyI,QAAQw0D,aAClEgC,EAAMtzE,OAAS,GAAkB,QAAbszE,EAAM,KAAcj/D,KAAKyI,QAAQ2vD,IAAM6G,EAAM,GACvE,CACKj/D,KAAK25D,SAASuR,kBAAqBlrE,KAAKyI,QAAQ2vD,KACnDp4D,KAAK43B,OAAOjN,KAAK,2DAEJ,CAAC,cAAe,oBAAqB,oBAAqB,qBAChE9+B,SAAQ,SAAUw9E,GACzB9xC,EAAO8xC,GAAU,WACf,IAAI+B,EACJ,OAAQA,EAAe7zC,EAAO4wC,OAAOkB,GAAQ/9E,MAAM8/E,EAAc1/E,UACnE,CACF,IACsB,CAAC,cAAe,eAAgB,oBAAqB,wBAC3DG,SAAQ,SAAUw9E,GAChC9xC,EAAO8xC,GAAU,WACf,IAAIgC,EAEJ,OADCA,EAAgB9zC,EAAO4wC,OAAOkB,GAAQ/9E,MAAM+/E,EAAe3/E,WACrD6rC,CACT,CACF,IACA,IAAI+zC,EAAW9mB,IACX8b,EAAO,WACT,IAAIiL,EAAS,SAAgB19E,EAAKy9B,GAC5BiM,EAAOgzC,gBAAkBhzC,EAAOi0C,sBAAsBj0C,EAAOK,OAAOjN,KAAK,yEAC7E4M,EAAOgzC,eAAgB,EAClBhzC,EAAO9uB,QAAQ+hE,SAASjzC,EAAOK,OAAO1gB,IAAI,cAAeqgB,EAAO9uB,SACrE8uB,EAAOomB,KAAK,cAAepmB,EAAO9uB,SAClC6iE,EAAShmE,QAAQgmB,GACjBvjB,EAASla,EAAKy9B,EAChB,EACA,GAAIiM,EAAOkxC,WAAiD,OAApClxC,EAAO9uB,QAAQowD,mBAA8BthC,EAAOgzC,cAAe,OAAOgB,EAAO,KAAMh0C,EAAOjM,EAAE53B,KAAK6jC,IAC7HA,EAAOk0C,eAAel0C,EAAO9uB,QAAQ2vD,IAAKmT,EAC5C,EAMA,OALIvrE,KAAKyI,QAAQ6vD,YAAct4D,KAAKyI,QAAQgiE,cAC1CnK,IAEAn+D,WAAWm+D,EAAM,GAEZgL,CACT,GACC,CACDx/E,IAAK,gBACLgB,MAAO,SAAuB8sE,GAC5B,IAAInhC,EAASz4B,KAET0rE,EADWhgF,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAKwD,GAE/E4uE,EAA8B,iBAAblE,EAAwBA,EAAW55D,KAAK45D,SAE7D,GADwB,mBAAbA,IAAyB8R,EAAe9R,IAC9C55D,KAAKyI,QAAQ6vD,WAAat4D,KAAKyI,QAAQmiE,wBAAyB,CACnE,GAAI9M,GAAqC,WAA1BA,EAAQxuD,cAA4B,OAAOo8D,IAC1D,IAAIhD,EAAS,GACTzgB,EAAS,SAAgBmQ,GACtBA,GACM3/B,EAAOkhC,SAASoD,cAAcI,mBAAmB/E,GACvDvsE,SAAQ,SAAUwwB,GACjBqsD,EAAO13E,QAAQqrB,GAAK,GAAGqsD,EAAOr9E,KAAKgxB,EACzC,GACF,EACA,GAAKyhD,EAMH7V,EAAO6V,QALS99D,KAAK25D,SAASoD,cAAcC,iBAAiBh9D,KAAKyI,QAAQw0D,aAChEpxE,SAAQ,SAAUwwB,GAC1B,OAAO4rC,EAAO5rC,EAChB,IAIErc,KAAKyI,QAAQkiE,SACf3qE,KAAKyI,QAAQkiE,QAAQ9+E,SAAQ,SAAUwwB,GACrC,OAAO4rC,EAAO5rC,EAChB,IAEFrc,KAAK25D,SAAS4D,iBAAiB+C,KAAKoI,EAAQ1oE,KAAKyI,QAAQwvD,IAAI,SAAUpoE,GAChEA,GAAM4oC,EAAOkzC,mBAAoBlzC,EAAOmhC,UAAUnhC,EAAOmzC,oBAAoBnzC,EAAOmhC,UACzF8R,EAAa77E,EACf,GACF,MACE67E,EAAa,KAEjB,GACC,CACD5/E,IAAK,kBACLgB,MAAO,SAAyB+vE,EAAM5E,EAAIlwD,GACxC,IAAIujE,EAAW9mB,IAQf,OAPKqY,IAAMA,EAAO78D,KAAKyoE,WAClBxQ,IAAIA,EAAKj4D,KAAKyI,QAAQwvD,IACtBlwD,IAAUA,EAAW7Y,IAC1B8Q,KAAK25D,SAAS4D,iBAAiB5P,OAAOkP,EAAM5E,GAAI,SAAUpqE,GACxDy9E,EAAShmE,UACTyC,EAASla,EACX,IACOy9E,CACT,GACC,CACDx/E,IAAK,MACLgB,MAAO,SAAa8wB,GAClB,IAAKA,EAAQ,MAAM,IAAIoG,MAAM,iGAC7B,IAAKpG,EAAOvU,KAAM,MAAM,IAAI2a,MAAM,4FAsBlC,MArBoB,YAAhBpG,EAAOvU,OACTrJ,KAAKoqE,QAAQlC,QAAUtqD,IAEL,WAAhBA,EAAOvU,MAAqBuU,EAAO1G,KAAO0G,EAAO+M,MAAQ/M,EAAOpY,SAClExF,KAAKoqE,QAAQxyC,OAASha,GAEJ,qBAAhBA,EAAOvU,OACTrJ,KAAKoqE,QAAQc,iBAAmBttD,GAEd,eAAhBA,EAAOvU,OACTrJ,KAAKoqE,QAAQ7O,WAAa39C,GAER,kBAAhBA,EAAOvU,MACT0vD,EAAcE,iBAAiBr7C,GAEb,cAAhBA,EAAOvU,OACTrJ,KAAKoqE,QAAQhE,UAAYxoD,GAEP,aAAhBA,EAAOvU,MACTrJ,KAAKoqE,QAAQC,SAASh/E,KAAKuyB,GAEtB5d,IACT,GACC,CACDlU,IAAK,sBACLgB,MAAO,SAA6BuvB,GAClC,GAAKA,GAAMrc,KAAKyoE,aACZ,CAAC,SAAU,OAAOz3E,QAAQqrB,IAAM,GACpC,IAAK,IAAIwvD,EAAK,EAAGA,EAAK7rE,KAAKyoE,UAAU98E,OAAQkgF,IAAM,CACjD,IAAIC,EAAY9rE,KAAKyoE,UAAUoD,GAC/B,KAAI,CAAC,SAAU,OAAO76E,QAAQ86E,IAAc,IACxC9rE,KAAKmoE,MAAM4D,4BAA4BD,GAAY,CACrD9rE,KAAK2rE,iBAAmBG,EACxB,KACF,CACF,CACF,GACC,CACDhgF,IAAK,iBACLgB,MAAO,SAAwBsrE,EAAKrwD,GAClC,IAAIo4B,EAASngC,KACbA,KAAKgsE,qBAAuB5T,EAC5B,IAAIkT,EAAW9mB,IACfxkD,KAAK29C,KAAK,mBAAoBya,GAC9B,IAAI6T,EAAc,SAAqB5vD,GACrC8jB,EAAOy5B,SAAWv9C,EAClB8jB,EAAOsoC,UAAYtoC,EAAOw5B,SAASoD,cAAcI,mBAAmB9gD,GACpE8jB,EAAOwrC,sBAAmBvwE,EAC1B+kC,EAAOyrC,oBAAoBvvD,EAC7B,EAkBI6vD,EAAS,SAAgBrP,GACtBzE,GAAQyE,IAAQ18B,EAAOw5B,SAASuR,mBAAkBrO,EAAO,IAC9D,IAAIxgD,EAAoB,iBAATwgD,EAAoBA,EAAO18B,EAAOw5B,SAASoD,cAAcoP,sBAAsBtP,GAC1FxgD,IACG8jB,EAAOy5B,UACVqS,EAAY5vD,GAET8jB,EAAOg5B,WAAWS,UAAUz5B,EAAOg5B,WAAWsS,eAAepvD,GAC9D8jB,EAAOw5B,SAASuR,kBAAkB/qC,EAAOw5B,SAASuR,iBAAiBkB,kBAAkB/vD,IAE3F8jB,EAAOgsB,cAAc9vC,GAAG,SAAUxuB,IA3BzB,SAAcA,EAAKwuB,GACxBA,GACF4vD,EAAY5vD,GACZ8jB,EAAOg5B,WAAWsS,eAAepvD,GACjC8jB,EAAO6rC,0BAAuB5wE,EAC9B+kC,EAAOwd,KAAK,kBAAmBthC,GAC/B8jB,EAAOvI,OAAO1gB,IAAI,kBAAmBmF,IAErC8jB,EAAO6rC,0BAAuB5wE,EAEhCkwE,EAAShmE,SAAQ,WACf,OAAO66B,EAAO7U,EAAEhgC,MAAM60C,EAAQz0C,UAChC,IACIqc,GAAUA,EAASla,GAAK,WAC1B,OAAOsyC,EAAO7U,EAAEhgC,MAAM60C,EAAQz0C,UAChC,GACF,CAYIkC,CAAKC,EAAKwuB,EACZ,GACF,EAQA,OAPK+7C,IAAOp4D,KAAK25D,SAASuR,kBAAqBlrE,KAAK25D,SAASuR,iBAAiBrZ,OAElEuG,GAAOp4D,KAAK25D,SAASuR,kBAAoBlrE,KAAK25D,SAASuR,iBAAiBrZ,MAClF7xD,KAAK25D,SAASuR,iBAAiBmB,OAAOH,GAEtCA,EAAO9T,GAJP8T,EAAOlsE,KAAK25D,SAASuR,iBAAiBmB,UAMjCf,CACT,GACC,CACDx/E,IAAK,YACLgB,MAAO,SAAmBsrE,EAAKH,EAAIqU,GACjC,IAAIlsC,EAASpgC,KACTusE,EAAS,SAASA,EAAOzgF,EAAK4+B,GAChC,IAAIjiB,EACJ,GAAsB,YAAlB,OAAQiiB,GAAoB,CAC9B,IAAK,IAAIsqC,EAAQtpE,UAAUC,OAAQiT,EAAO,IAAI3R,MAAM+nE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGr2D,EAAKq2D,EAAQ,GAAKvpE,UAAUupE,GAE9BxsD,EAAU23B,EAAO33B,QAAQkyD,iCAAiC,CAAC7uE,EAAK4+B,GAAM33B,OAAO6L,GAC/E,MACE6J,EAAUshE,GAAgB,CAAC,EAAGr/C,GAEhCjiB,EAAQ2vD,IAAM3vD,EAAQ2vD,KAAOmU,EAAOnU,IACpC3vD,EAAQo0D,KAAOp0D,EAAQo0D,MAAQ0P,EAAO1P,KACtCp0D,EAAQwvD,GAAKxvD,EAAQwvD,IAAMsU,EAAOtU,GAClCxvD,EAAQ6jE,UAAY7jE,EAAQ6jE,WAAaA,GAAaC,EAAOD,UAC7D,IAAI5U,EAAet3B,EAAO33B,QAAQivD,cAAgB,IAC9C8U,EAAY/jE,EAAQ6jE,UAAY,GAAGv5E,OAAO0V,EAAQ6jE,WAAWv5E,OAAO2kE,GAAc3kE,OAAOjH,GAAOA,EACpG,OAAOs0C,EAAO9U,EAAEkhD,EAAW/jE,EAC7B,EAQA,MAPmB,iBAAR2vD,EACTmU,EAAOnU,IAAMA,EAEbmU,EAAO1P,KAAOzE,EAEhBmU,EAAOtU,GAAKA,EACZsU,EAAOD,UAAYA,EACZC,CACT,GACC,CACDzgF,IAAK,IACLgB,MAAO,WACL,IAAI2/E,EACJ,OAAOzsE,KAAKm5D,aAAesT,EAAmBzsE,KAAKm5D,YAAY2C,UAAUxwE,MAAMmhF,EAAkB/gF,UACnG,GACC,CACDI,IAAK,SACLgB,MAAO,WACL,IAAI4/E,EACJ,OAAO1sE,KAAKm5D,aAAeuT,EAAoB1sE,KAAKm5D,YAAYwT,OAAOrhF,MAAMohF,EAAmBhhF,UAClG,GACC,CACDI,IAAK,sBACLgB,MAAO,SAA6BmrE,GAClCj4D,KAAKyI,QAAQyvD,UAAYD,CAC3B,GACC,CACDnsE,IAAK,qBACLgB,MAAO,SAA4BmrE,GACjC,IAAI7zB,EAASpkC,KACTyI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,IAAKsU,KAAKuqE,cAER,OADAvqE,KAAK43B,OAAOjN,KAAK,kDAAmD3qB,KAAKyoE,YAClE,EAET,IAAKzoE,KAAKyoE,YAAczoE,KAAKyoE,UAAU98E,OAErC,OADAqU,KAAK43B,OAAOjN,KAAK,6DAA8D3qB,KAAKyoE,YAC7E,EAET,IAAIrQ,EAAMp4D,KAAK2rE,kBAAoB3rE,KAAKyoE,UAAU,GAC9CxL,IAAcj9D,KAAKyI,SAAUzI,KAAKyI,QAAQw0D,YAC1C2P,EAAU5sE,KAAKyoE,UAAUzoE,KAAKyoE,UAAU98E,OAAS,GACrD,GAA0B,WAAtBysE,EAAI9oD,cAA4B,OAAO,EAC3C,IAAIu9D,EAAiB,SAAwBxwD,EAAG1tB,GAC9C,IAAIm+E,EAAY1oC,EAAOu1B,SAAS4D,iBAAiBnkD,MAAM,GAAGrmB,OAAOspB,EAAG,KAAKtpB,OAAOpE,IAChF,OAAsB,IAAfm+E,GAAkC,IAAdA,CAC7B,EACA,GAAIrkE,EAAQskE,SAAU,CACpB,IAAIC,EAAYvkE,EAAQskE,SAAS/sE,KAAM6sE,GACvC,QAAkBzxE,IAAd4xE,EAAyB,OAAOA,CACtC,CACA,QAAIhtE,KAAK04D,kBAAkBN,EAAKH,OAC3Bj4D,KAAK25D,SAAS4D,iBAAiB2K,WAAWloE,KAAKyI,QAAQ6vD,WAAct4D,KAAKyI,QAAQmiE,8BACnFiC,EAAezU,EAAKH,IAASgF,IAAe4P,EAAeD,EAAS3U,IAE1E,GACC,CACDnsE,IAAK,iBACLgB,MAAO,SAAwBmrE,EAAIlwD,GACjC,IAAIy+B,EAASxmC,KACTsrE,EAAW9mB,IACf,OAAKxkD,KAAKyI,QAAQwvD,IAIA,iBAAPA,IAAiBA,EAAK,CAACA,IAClCA,EAAGpsE,SAAQ,SAAU8C,GACf63C,EAAO/9B,QAAQwvD,GAAGjnE,QAAQrC,GAAK,GAAG63C,EAAO/9B,QAAQwvD,GAAG5sE,KAAKsD,EAC/D,IACAqR,KAAKmsD,eAAc,SAAUt+D,GAC3By9E,EAAShmE,UACLyC,GAAUA,EAASla,EACzB,IACOy9E,IAXLvjE,GAAYA,IACLjG,QAAQwD,UAWnB,GACC,CACDxZ,IAAK,gBACLgB,MAAO,SAAuB+vE,EAAM90D,GAClC,IAAIujE,EAAW9mB,IACK,iBAATqY,IAAmBA,EAAO,CAACA,IACtC,IAAIoQ,EAAYjtE,KAAKyI,QAAQkiE,SAAW,GACpCuC,EAAUrQ,EAAK5xE,QAAO,SAAUmtE,GAClC,OAAO6U,EAAUj8E,QAAQonE,GAAO,CAClC,IACA,OAAK8U,EAAQvhF,QAIbqU,KAAKyI,QAAQkiE,QAAUsC,EAAUl6E,OAAOm6E,GACxCltE,KAAKmsD,eAAc,SAAUt+D,GAC3By9E,EAAShmE,UACLyC,GAAUA,EAASla,EACzB,IACOy9E,IARDvjE,GAAUA,IACPjG,QAAQwD,UAQnB,GACC,CACDxZ,IAAK,MACLgB,MAAO,SAAasrE,GAElB,GADKA,IAAKA,EAAMp4D,KAAK2rE,mBAAqB3rE,KAAKyoE,WAAazoE,KAAKyoE,UAAU98E,OAAS,EAAIqU,KAAKyoE,UAAU,GAAKzoE,KAAK45D,YAC5GxB,EAAK,MAAO,MAEjB,MADc,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,OACjapnE,QAAQgP,KAAK25D,SAASoD,cAAcyD,wBAAwBpI,KAAS,GAAKA,EAAI9oD,cAActe,QAAQ,SAAW,EAAI,MAAQ,KAC5I,GACC,CACDlF,IAAK,gBACLgB,MAAO,WACL,IAAI4jD,EAAS1wC,KACTyI,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Eqc,EAAWrc,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAKwD,GAC/Ei+E,EAAgBpD,GAAgBA,GAAgBA,GAAgB,CAAC,EAAG/pE,KAAKyI,SAAUA,GAAU,CAC/F+hE,SAAS,IAEP4C,EAAQ,IAAIlD,EAAKiD,QACC/xE,IAAlBqN,EAAQssD,YAA0C35D,IAAnBqN,EAAQjO,SACzC4yE,EAAMx1C,OAASw1C,EAAMx1C,OAAOw1C,MAAM3kE,IAsBpC,MApBoB,CAAC,QAAS,WAAY,YAC5B5c,SAAQ,SAAUwnC,GAC9B+5C,EAAM/5C,GAAKqd,EAAOrd,EACpB,IACA+5C,EAAMzT,SAAWoQ,GAAgB,CAAC,EAAG/pE,KAAK25D,UAC1CyT,EAAMzT,SAAS97C,MAAQ,CACrBqhD,mBAAoBkO,EAAMlO,mBAAmBxrE,KAAK05E,IAEpDA,EAAMjU,WAAa,IAAIO,EAAW0T,EAAMzT,SAAUyT,EAAM3kE,SACxD2kE,EAAMjU,WAAW3b,GAAG,KAAK,SAAUtd,GACjC,IAAK,IAAIg1B,EAAQxpE,UAAUC,OAAQwV,EAAO,IAAIlU,MAAMioE,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGh0D,EAAKg0D,EAAQ,GAAKzpE,UAAUypE,GAE9BiY,EAAMzvB,KAAKryD,MAAM8hF,EAAO,CAACltC,GAAOntC,OAAOoO,GACzC,IACAisE,EAAMtY,KAAKqY,EAAeplE,GAC1BqlE,EAAMjU,WAAW1wD,QAAU2kE,EAAM3kE,QACjC2kE,EAAMjU,WAAWoE,iBAAiB5D,SAAS97C,MAAQ,CACjDqhD,mBAAoBkO,EAAMlO,mBAAmBxrE,KAAK05E,IAE7CA,CACT,GACC,CACDthF,IAAK,SACLgB,MAAO,WACL,MAAO,CACL2b,QAASzI,KAAKyI,QACd0/D,MAAOnoE,KAAKmoE,MACZvO,SAAU55D,KAAK45D,SACf6O,UAAWzoE,KAAKyoE,UAChBkD,iBAAkB3rE,KAAK2rE,iBAE3B,KAEKzB,CACT,CAreW,CAqeT1U,GACFzpE,EAAgBm+E,GAAM,kBAAkB,WAGtC,OAAO,IAAIA,GAFGx+E,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACpEA,UAAUC,OAAS,EAAID,UAAU,QAAK0P,EAEvD,IACA,IAAIyE,GAAWqqE,GAAKhoD,iBACpBriB,GAASqiB,eAAiBgoD,GAAKhoD,eACVriB,GAASqiB,eACnBriB,GAASi1D,KACAj1D,GAASssD,cACPtsD,GAASwtE,gBACrBxtE,GAASwlB,IACExlB,GAAS4rE,eACd5rE,GAASytE,UACjBztE,GAASyrB,EACJzrB,GAAS8sE,OACI9sE,GAAS0tE,oBACV1tE,GAASq/D,mBACbr/D,GAAS2tE,eACV3tE,GAAS4tE,cAZ7B,IAaA,M,kECppFIC,GAAkB,oGAClBC,GAAe,CACjB,QAAS,IACT,QAAS,IACT,OAAQ,IACR,QAAS,IACT,OAAQ,IACR,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,QAAS,IACT,SAAU,IACV,WAAY,IACZ,UAAW,IACX,SAAU,IACV,QAAS,KAEPC,GAAqB,SAA4Bv6C,GACnD,OAAOs6C,GAAat6C,EACtB,ECtBA,SAAS,GAAQ1oC,EAAQC,GACvB,IAAIC,EAAOC,OAAOD,KAAKF,GACvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IACFI,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,UACtD,KAEFP,EAAKQ,KAAKC,MAAMT,EAAMG,EACxB,CACA,OAAOH,CACT,CACA,SAAS,GAAcW,GACrB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,CAAC,EAChDA,EAAI,EACN,GAAQX,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAC9C,KAAgBN,EAAQM,EAAKF,EAAOE,GACtC,IACShB,OAAOkB,0BAChBlB,OAAOmB,iBAAiBT,EAAQV,OAAOkB,0BAA0BJ,IAEjE,GAAQd,OAAOc,IAASC,SAAQ,SAAUC,GACxChB,OAAOoB,eAAeV,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,GAC7E,GAEJ,CACA,OAAON,CACT,CAGA,IAAI+tC,GAAiB,CACnBs0C,SAAU,kBACVC,cAAe,GACfC,oBAAqB,GACrBC,4BAA4B,EAC5BC,mBAAoB,GACpBC,2BAA4B,CAAC,KAAM,SAAU,IAAK,KAClDC,aAAa,EACb9uD,SDjBoB,SAAkBpR,GACtC,OAAOA,EAAKjX,QAAQ02E,GAAiBE,GACvC,ICkByB,IAAA9zB,kBAQK,WAC5B,SAASs0B,IACP,KAAgBpuE,KAAMouE,GACtBpuE,KAAKquE,eAAiB,CAAC,CACzB,CACA,KAAaD,EAAkB,CAAC,CAC9BtiF,IAAK,oBACLgB,MAAO,SAA2BktE,GAChC,IAAI55D,EAAQJ,KACZg6D,EAAWnuE,SAAQ,SAAUosE,GACtB73D,EAAMiuE,eAAepW,KAAK73D,EAAMiuE,eAAepW,IAAM,EAC5D,GACF,GACC,CACDnsE,IAAK,oBACLgB,MAAO,WACL,OAAOhC,OAAOD,KAAKmV,KAAKquE,eAC1B,IAGJ,CApB8B,GA2BvB,IAAIC,GAAmB,CAC5BjlE,KAAM,WACNyrD,KAAM,SAAcj1D,IApCf,WACL,IAAI4I,EAAU/c,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF6tC,GAAiB,GAAc,GAAc,CAAC,EAAGA,IAAiB9wB,EACpE,CAkCI8lE,CAAY1uE,EAAS4I,QAAQ+lE,OAT1B,SAAiB3uE,GACPA,CACjB,CAQI4uE,CAAQ5uE,EACV,GCtFK,MCKDy4D,GAAY,CAChBoW,GAAI,CACFC,YCPc,CAChBC,MAAO,QACPC,OAAQ,UACRC,YAAa,aACbC,KAAM,OACN,iBAAkB,iBAClBC,KAAM,OACNC,QAAS,UACT,mBAAoB,mBACpB,0BAA2B,0BAC3B,6BAA8B,6BAC9BC,SAAU,WACVC,SAAU,WACV/c,KAAM,SDJNgd,GAAI,CACFT,YDVc,CAChBC,MAAO,WACPC,OAAQ,YACRC,YAAa,UACbC,KAAM,OACN,iBAAkB,iBAClBC,KAAM,OACNC,QAAS,SACT,mBAAoB,qBACpB,0BAA2B,uBAC3B,6BAA8B,+BAC9BC,SAAU,iBACVC,SAAU,aACV/c,KAAM,eCCRid,GAAAA,IAASf,IAAkBxZ,KAAK,CAC9BwD,aACAF,IAAK,KAELyB,cAAe,CACb0J,aAAa,KAIjB,I,sBEfO,MCAM+L,GAAuC,CAClDC,WAAW,EACXC,ODFkD,CAClDrmB,YAAa,KACb7wC,SAAU,OCGCm3D,GAAgB39B,EAAAA,cAE3B,CAACw9B,GAAsB,IAAM,OAElBI,GAAiBD,GAAcnkC,S,ICuPtCqkC,GAsSuBr0B,GACvBs0B,GAAQC,G,wFA1iBVC,GACI,iBADJA,GAEI,iBAFJA,GAGK,kBAELC,GAAY,CACdC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,SAAU,WACVv7B,OAAQ,SACRw7B,MAAO,QACPC,MAAO,SAKLC,IAHkB3lF,OAAOD,KAAKklF,IAAWv8E,KAAI,SAAU1E,GACzD,OAAOihF,GAAUjhF,EACnB,IAEW,WADP2hF,GAEQ,UAFRA,GAGI,OAHJA,GAIS,aAJTA,GAKU,YALVA,GAMS,WANTA,GAOI,OAPJA,GAQQ,WARRA,GASG,MATHA,GAUG,MAVHA,GAWM,SAENC,GAAgB,CAClBC,UAAW,YACXC,QAAS,UACT7rE,MAAO,YACP8rE,gBAAiB,kBACjBC,YAAa,cACb,aAAc,YACdC,SAAU,WACVC,SAAU,YAERC,GACa,eADbA,GAEK,QAFLA,GAGyB,0BAHzBA,GAIsB,sBAJtBA,GAKc,gBAEdC,GAAepmF,OAAOD,KAAK6lF,IAAev5E,QAAO,SAAU/K,EAAKN,GAElE,OADAM,EAAIskF,GAAc5kF,IAAQA,EACnBM,CACT,GAAG,CAAC,GACA+kF,GAAoB,CAACpB,GAAUO,SAAUP,GAAUh7B,OAAQg7B,GAAUQ,OACrEa,GAAmB,oBACnBjlF,GAA4B,mBAAXE,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUF,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAC3H,EAMI,GAAc,WAChB,SAASH,EAAiBT,EAAQkB,GAChC,IAAK,IAAIjB,EAAI,EAAGA,EAAIiB,EAAMf,OAAQF,IAAK,CACrC,IAAIkB,EAAaD,EAAMjB,GACvBkB,EAAWvB,WAAauB,EAAWvB,aAAc,EACjDuB,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD/B,OAAOoB,eAAeV,EAAQmB,EAAWb,IAAKa,EAChD,CACF,CACA,OAAO,SAAUmT,EAAaI,EAAYC,GAGxC,OAFID,GAAYjU,EAAiB6T,EAAYtT,UAAW0T,GACpDC,GAAalU,EAAiB6T,EAAaK,GACxCL,CACT,CACF,CAfkB,GAgBdoY,GAAWptB,OAAOqtB,QAAU,SAAU3sB,GACxC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GACvB,IAAK,IAAIK,KAAOF,EACVd,OAAO0B,UAAU8qB,eAAe5pB,KAAK9B,EAAQE,KAC/CN,EAAOM,GAAOF,EAAOE,GAG3B,CACA,OAAON,CACT,EAeI6lF,GAA0B,SAAUjlF,EAAKvB,GAC3C,IAAIW,EAAS,CAAC,EACd,IAAK,IAAIC,KAAKW,EACRvB,EAAKmG,QAAQvF,IAAM,GAClBX,OAAO0B,UAAU8qB,eAAe5pB,KAAKtB,EAAKX,KAC/CD,EAAOC,GAAKW,EAAIX,IAElB,OAAOD,CACT,EAOI8lF,GAA0B,SAAiCv6E,GAE7D,OAAe,OADFrL,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,KAAmBA,UAAU,IAEnEoqD,OAAO/+C,GAET++C,OAAO/+C,GAAKC,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAC9H,EACIu6E,GAAwB,SAA+BC,GACzD,IAAIC,EAAiBC,GAAqBF,EAAWzB,GAAUS,OAC3DmB,EAAoBD,GAAqBF,EAAWP,IACxD,GAAIU,GAAqBF,EAEvB,OAAOE,EAAkB36E,QAAQ,OAAO,WACtC,OAAO/J,MAAMC,QAAQukF,GAAkBA,EAAep3E,KAAK,IAAMo3E,CACnE,IAEF,IAAIG,EAAwBF,GAAqBF,EAAWP,IAC5D,OAAOQ,GAAkBG,QAAyBx2E,CACpD,EACIy2E,GAAyB,SAAgCL,GAC3D,OAAOE,GAAqBF,EAAWP,KAAwC,WAAa,CAC9F,EACIa,GAA6B,SAAoCC,EAASP,GAC5E,OAAOA,EAAUvmF,QAAO,SAAUyB,GAChC,YAAiC,IAAnBA,EAAMqlF,EACtB,IAAGv+E,KAAI,SAAU9G,GACf,OAAOA,EAAMqlF,EACf,IAAG56E,QAAO,SAAU66E,EAAUrgC,GAC5B,OAAOz5B,GAAS,CAAC,EAAG85D,EAAUrgC,EAChC,GAAG,CAAC,EACN,EACIsgC,GAA0B,SAAiCC,EAAmBV,GAChF,OAAOA,EAAUvmF,QAAO,SAAUyB,GAChC,YAAwC,IAA1BA,EAAMqjF,GAAUC,KAChC,IAAGx8E,KAAI,SAAU9G,GACf,OAAOA,EAAMqjF,GAAUC,KACzB,IAAGmC,UAAUh7E,QAAO,SAAUi7E,EAAkBt4E,GAC9C,IAAKs4E,EAAiBzmF,OAEpB,IADA,IAAId,EAAOC,OAAOD,KAAKiP,GACdrO,EAAI,EAAGA,EAAIZ,EAAKc,OAAQF,IAAK,CACpC,IACI4mF,EADexnF,EAAKY,GACiB6jB,cACzC,IAA0D,IAAtD4iE,EAAkBlhF,QAAQqhF,IAAiCv4E,EAAIu4E,GACjE,OAAOD,EAAiBr/E,OAAO+G,EAEnC,CAEF,OAAOs4E,CACT,GAAG,GACL,EACIE,GAAuB,SAA8Bz5E,EAASq5E,EAAmBV,GAEnF,IAAIe,EAAmB,CAAC,EACxB,OAAOf,EAAUvmF,QAAO,SAAUyB,GAChC,QAAIO,MAAMC,QAAQR,EAAMmM,WAGM,IAAnBnM,EAAMmM,IACf8xB,GAAK,WAAa9xB,EAAU,mDAAwD1M,GAAQO,EAAMmM,IAAY,MAEzG,EACT,IAAGrF,KAAI,SAAU9G,GACf,OAAOA,EAAMmM,EACf,IAAGs5E,UAAUh7E,QAAO,SAAUq7E,EAAcC,GAC1C,IAAIC,EAAmB,CAAC,EACxBD,EAAaxnF,QAAO,SAAU6O,GAG5B,IAFA,IAAI64E,OAAsB,EACtB9nF,EAAOC,OAAOD,KAAKiP,GACdrO,EAAI,EAAGA,EAAIZ,EAAKc,OAAQF,IAAK,CACpC,IAAImnF,EAAe/nF,EAAKY,GACpB4mF,EAAwBO,EAAatjE,eAGiB,IAAtD4iE,EAAkBlhF,QAAQqhF,IAAmCM,IAAwBlC,IAAiE,cAA3C32E,EAAI64E,GAAqBrjE,eAAoC+iE,IAA0B5B,IAAmE,eAA7C32E,EAAIu4E,GAAuB/iE,gBACrPqjE,EAAsBN,IAGyB,IAA7CH,EAAkBlhF,QAAQ4hF,IAAyBA,IAAiBnC,IAA6BmC,IAAiBnC,IAA2BmC,IAAiBnC,KAChKkC,EAAsBC,EAE1B,CACA,IAAKD,IAAwB74E,EAAI64E,GAC/B,OAAO,EAET,IAAI7lF,EAAQgN,EAAI64E,GAAqBrjE,cAOrC,OANKijE,EAAiBI,KACpBJ,EAAiBI,GAAuB,CAAC,GAEtCD,EAAiBC,KACpBD,EAAiBC,GAAuB,CAAC,IAEtCJ,EAAiBI,GAAqB7lF,KACzC4lF,EAAiBC,GAAqB7lF,IAAS,GACxC,EAGX,IAAGqlF,UAAUtmF,SAAQ,SAAUiO,GAC7B,OAAO04E,EAAannF,KAAKyO,EAC3B,IAIA,IADA,IAAIjP,EAAOC,OAAOD,KAAK6nF,GACdjnF,EAAI,EAAGA,EAAIZ,EAAKc,OAAQF,IAAK,CACpC,IAAImnF,EAAe/nF,EAAKY,GACpBonF,EAAW,KAAa,CAAC,EAAGN,EAAiBK,GAAeF,EAAiBE,IACjFL,EAAiBK,GAAgBC,CACnC,CACA,OAAOL,CACT,GAAG,IAAIL,SACT,EACIT,GAAuB,SAA8BF,EAAWsB,GAClE,IAAK,IAAIrnF,EAAI+lF,EAAU7lF,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC9C,IAAIiB,EAAQ8kF,EAAU/lF,GACtB,GAAIiB,EAAM4qB,eAAew7D,GACvB,OAAOpmF,EAAMomF,EAEjB,CACA,OAAO,IACT,EAkBIC,IACEpD,GAAQz1D,KAAKC,MACV,SAAUpS,GACf,IAAIirE,EAAc94D,KAAKC,MACnB64D,EAAcrD,GAAQ,IACxBA,GAAQqD,EACRjrE,EAASirE,IAET7wE,YAAW,WACT4wE,GAAYhrE,EACd,GAAG,EAEP,GAEEkrE,GAAc,SAAqB58E,GACrC,OAAOs7B,aAAat7B,EACtB,EACI6R,GAA0C,oBAAXzY,OAAyBA,OAAOyY,uBAAyBzY,OAAOyY,sBAAsBxU,KAAKjE,SAAWA,OAAOyjF,6BAA+BzjF,OAAO0jF,0BAA4BJ,GAAc,EAAAljD,EAAO3nB,uBAAyB6qE,GAC5PK,GAAyC,oBAAX3jF,OAAyBA,OAAO2jF,sBAAwB3jF,OAAO4jF,4BAA8B5jF,OAAO6jF,yBAA2BL,GAAc,EAAApjD,EAAOujD,sBAAwBH,GAC1MtoD,GAAO,SAAc4oD,GACvB,OAAOhuE,SAAmC,mBAAjBA,QAAQolB,MAAuBplB,QAAQolB,KAAK4oD,EACvE,EACIC,GAAkB,KAgBlBC,GAAmB,SAA0BC,EAAUh+E,GACzD,IAAIi+E,EAAUD,EAASC,QACrBC,EAAiBF,EAASE,eAC1BC,EAAiBH,EAASG,eAC1BC,EAAWJ,EAASI,SACpBC,EAAWL,EAASK,SACpBC,EAAeN,EAASM,aACxBC,EAAsBP,EAASO,oBAC/BC,EAAaR,EAASQ,WACtBC,EAAYT,EAASS,UACrB7wE,EAAQowE,EAASpwE,MACjB8wE,EAAkBV,EAASU,gBAC7BC,GAAiBtE,GAAUE,KAAM2D,GACjCS,GAAiBtE,GAAUI,KAAM0D,GACjCS,GAAYhxE,EAAO8wE,GACnB,IAAIG,EAAa,CACfZ,QAASa,GAAWzE,GAAUC,KAAM2D,GACpCG,SAAUU,GAAWzE,GAAUK,KAAM0D,GACrCC,SAAUS,GAAWzE,GAAUM,KAAM0D,GACrCC,aAAcQ,GAAWzE,GAAUO,SAAU0D,GAC7CE,WAAYM,GAAWzE,GAAUh7B,OAAQm/B,GACzCC,UAAWK,GAAWzE,GAAUQ,MAAO4D,IAErCM,EAAY,CAAC,EACbC,EAAc,CAAC,EACnB5pF,OAAOD,KAAK0pF,GAAY1oF,SAAQ,SAAUkmF,GACxC,IAAI4C,EAAsBJ,EAAWxC,GACnC6C,EAAUD,EAAoBC,QAC9BC,EAAUF,EAAoBE,QAC5BD,EAAQjpF,SACV8oF,EAAU1C,GAAW6C,GAEnBC,EAAQlpF,SACV+oF,EAAY3C,GAAWwC,EAAWxC,GAAS8C,QAE/C,IACAn/E,GAAMA,IACNu+E,EAAoBP,EAAUe,EAAWC,EAC3C,EACII,GAAe,SAAsBC,GACvC,OAAO9nF,MAAMC,QAAQ6nF,GAAiBA,EAAc16E,KAAK,IAAM06E,CACjE,EACIT,GAAc,SAAqBhxE,EAAOtJ,QACvB,IAAVsJ,GAAyB5T,SAAS4T,QAAUA,IACrD5T,SAAS4T,MAAQwxE,GAAaxxE,IAEhC+wE,GAAiBtE,GAAUS,MAAOx2E,EACpC,EACIq6E,GAAmB,SAA0Bx7E,EAASmB,GACxD,IAAIg7E,EAAatlF,SAAS4wD,qBAAqBznD,GAAS,GACxD,GAAKm8E,EAAL,CAOA,IAJA,IAAIC,EAAwBD,EAAW3gF,aAAa+8E,IAChD8D,EAAmBD,EAAwBA,EAAsBp+E,MAAM,KAAO,GAC9Es+E,EAAqB,GAAGpiF,OAAOmiF,GAC/BE,EAAgBtqF,OAAOD,KAAKmP,GACvBvO,EAAI,EAAGA,EAAI2pF,EAAczpF,OAAQF,IAAK,CAC7C,IAAI4pF,EAAYD,EAAc3pF,GAC1BqB,EAAQkN,EAAWq7E,IAAc,GACjCL,EAAW3gF,aAAaghF,KAAevoF,GACzCkoF,EAAWz8E,aAAa88E,EAAWvoF,IAEQ,IAAzCooF,EAAiBlkF,QAAQqkF,IAC3BH,EAAiB7pF,KAAKgqF,GAExB,IAAIC,EAAcH,EAAmBnkF,QAAQqkF,IACxB,IAAjBC,GACFH,EAAmB1xD,OAAO6xD,EAAa,EAE3C,CACA,IAAK,IAAIloF,EAAK+nF,EAAmBxpF,OAAS,EAAGyB,GAAM,EAAGA,IACpD4nF,EAAWvtE,gBAAgB0tE,EAAmB/nF,IAE5C8nF,EAAiBvpF,SAAWwpF,EAAmBxpF,OACjDqpF,EAAWvtE,gBAAgB2pE,IAClB4D,EAAW3gF,aAAa+8E,MAAsBgE,EAAc/6E,KAAK,MAC1E26E,EAAWz8E,aAAa64E,GAAkBgE,EAAc/6E,KAAK,KAzB/D,CA2BF,EACIm6E,GAAa,SAAoBnrE,EAAMksE,GACzC,IAAIC,EAAc9lF,SAASkB,MAAQlB,SAASoE,cAAci8E,GAAUG,MAChEuF,EAAWD,EAAY3pE,iBAAiBxC,EAAO,IAAM+nE,GAAmB,KACxEyD,EAAU5nF,MAAMT,UAAUqC,MAAMnB,KAAK+nF,GACrCb,EAAU,GACVc,OAAgB,EAuCpB,OAtCIH,GAAQA,EAAK5pF,QACf4pF,EAAK1pF,SAAQ,SAAUiO,GACrB,IAAI67E,EAAajmF,SAASoB,cAAcuY,GACxC,IAAK,IAAIgsE,KAAav7E,EACpB,GAAIA,EAAIwd,eAAe+9D,GACrB,GAAIA,IAAc5E,GAChBkF,EAAWn9E,UAAYsB,EAAItB,eACtB,GAAI68E,IAAc5E,GACnBkF,EAAWC,WACbD,EAAWC,WAAWC,QAAU/7E,EAAI+7E,QAEpCF,EAAWnvE,YAAY9W,SAAS6W,eAAezM,EAAI+7E,cAEhD,CACL,IAAI/oF,OAAkC,IAAnBgN,EAAIu7E,GAA6B,GAAKv7E,EAAIu7E,GAC7DM,EAAWp9E,aAAa88E,EAAWvoF,EACrC,CAGJ6oF,EAAWp9E,aAAa64E,GAAkB,QAGtCyD,EAAQr1E,MAAK,SAAUs2E,EAAatmE,GAEtC,OADAkmE,EAAgBlmE,EACTmmE,EAAWhvB,YAAYmvB,EAChC,IACEjB,EAAQpxD,OAAOiyD,EAAe,GAE9Bd,EAAQvpF,KAAKsqF,EAEjB,IAEFd,EAAQhpF,SAAQ,SAAUiO,GACxB,OAAOA,EAAI6M,WAAWyI,YAAYtV,EACpC,IACA86E,EAAQ/oF,SAAQ,SAAUiO,GACxB,OAAO07E,EAAYhvE,YAAY1M,EACjC,IACO,CACL+6E,QAASA,EACTD,QAASA,EAEb,EACImB,GAAoC,SAA2C/7E,GACjF,OAAOlP,OAAOD,KAAKmP,GAAY7C,QAAO,SAAUJ,EAAKjL,GACnD,IAAImI,OAAkC,IAApB+F,EAAWlO,GAAuBA,EAAM,KAAQkO,EAAWlO,GAAO,IAAO,GAAKA,EAChG,OAAOiL,EAAMA,EAAM,IAAM9C,EAAOA,CAClC,GAAG,GACL,EAmBI+hF,GAAuC,SAA8Ch8E,GACvF,IAAIi8E,EAAYvqF,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACrF,OAAOZ,OAAOD,KAAKmP,GAAY7C,QAAO,SAAU/K,EAAKN,GAEnD,OADAM,EAAIskF,GAAc5kF,IAAQA,GAAOkO,EAAWlO,GACrCM,CACT,GAAG6pF,EACL,EAsCIC,GAAmB,SAA0B7sE,EAAMksE,EAAM1sD,GAC3D,OAAQxf,GACN,KAAK0mE,GAAUS,MACb,MAAO,CACL2F,YAAa,WACX,OAnCuE7yE,EAmC5BiyE,EAAKjyE,MAnC8BtJ,EAmCvBu7E,EAAKnB,iBA/BnDgC,EAAa,CAC5BtqF,IAAKwX,IACO8tE,KAAoB,EAC9B1kF,EAAQspF,GAAqCh8E,EADTo8E,GAEjC,CAAC,gBAAoBrG,GAAUS,MAAO9jF,EAAO4W,IARlB,IAA6CA,EAAOtJ,EAClFo8E,EAMA1pF,CA6BE,EACAkC,SAAU,WACR,OAtEkB,SAA+Bya,EAAM/F,EAAOtJ,EAAY6uB,GAClF,IAAIwtD,EAAkBN,GAAkC/7E,GACpDs8E,EAAiBxB,GAAaxxE,GAClC,OAAO+yE,EAAkB,IAAMhtE,EAAO,IAAM+nE,GAAmB,WAAeiF,EAAkB,IAAM/E,GAAwBgF,EAAgBztD,GAAU,KAAOxf,EAAO,IAAM,IAAMA,EAAO,IAAM+nE,GAAmB,WAAeE,GAAwBgF,EAAgBztD,GAAU,KAAOxf,EAAO,GACnS,CAkEiBktE,CAAsBltE,EAAMksE,EAAKjyE,MAAOiyE,EAAKnB,gBAAiBvrD,EACvE,GAEJ,KAAKinD,GACL,KAAKA,GACH,MAAO,CACLqG,YAAa,WACX,OAAOH,GAAqCT,EAC9C,EACA3mF,SAAU,WACR,OAAOmnF,GAAkCR,EAC3C,GAEJ,QACE,MAAO,CACLY,YAAa,WACX,OA5CyB,SAAsC9sE,EAAMksE,GAC7E,OAAOA,EAAK/hF,KAAI,SAAUsG,EAAKrO,GAC7B,IAAI+qF,EACAC,IAAaD,EAAa,CAC5B1qF,IAAKL,IACO2lF,KAAoB,EAAMoF,GAYxC,OAXA1rF,OAAOD,KAAKiP,GAAKjO,SAAQ,SAAUwpF,GACjC,IAAIqB,EAAkBhG,GAAc2E,IAAcA,EAClD,GAAIqB,IAAoBjG,IAA6BiG,IAAoBjG,GAAyB,CAChG,IAAIxsE,EAAUnK,EAAItB,WAAasB,EAAI+7E,QACnCY,EAAUE,wBAA0B,CAClCC,OAAQ3yE,EAEZ,MACEwyE,EAAUC,GAAmB58E,EAAIu7E,EAErC,IACO,gBAAoBhsE,EAAMotE,EACnC,GACF,CAyBiBI,CAA6BxtE,EAAMksE,EAC5C,EACA3mF,SAAU,WACR,OApFiB,SAA8Bya,EAAMksE,EAAM1sD,GACnE,OAAO0sD,EAAKp+E,QAAO,SAAUJ,EAAK+C,GAChC,IAAIg9E,EAAgBhsF,OAAOD,KAAKiP,GAAK7O,QAAO,SAAUoqF,GACpD,QAASA,IAAc5E,IAA6B4E,IAAc5E,GACpE,IAAGt5E,QAAO,SAAU0E,EAAQw5E,GAC1B,IAAIphF,OAAiC,IAAnB6F,EAAIu7E,GAA6BA,EAAYA,EAAY,KAAQ/D,GAAwBx3E,EAAIu7E,GAAYxsD,GAAU,IACrI,OAAOhtB,EAASA,EAAS,IAAM5H,EAAOA,CACxC,GAAG,IACC8iF,EAAaj9E,EAAItB,WAAasB,EAAI+7E,SAAW,GAC7CmB,GAAqD,IAArC7F,GAAkBngF,QAAQqY,GAC9C,OAAOtS,EAAM,IAAMsS,EAAO,IAAM+nE,GAAmB,WAAe0F,GAAiBE,EAAgB,KAAO,IAAMD,EAAa,KAAO1tE,EAAO,IAC7I,GAAG,GACL,CAwEiB4tE,CAAqB5tE,EAAMksE,EAAM1sD,EAC1C,GAGR,EACIqpB,GAAmB,SAA0Bn+C,GAC/C,IAAI4/E,EAAU5/E,EAAK4/E,QACjBC,EAAiB7/E,EAAK6/E,eACtB/qD,EAAS90B,EAAK80B,OACdgrD,EAAiB9/E,EAAK8/E,eACtBC,EAAW//E,EAAK+/E,SAChBC,EAAWhgF,EAAKggF,SAChBC,EAAejgF,EAAKigF,aACpBE,EAAangF,EAAKmgF,WAClBC,EAAYpgF,EAAKogF,UACjB+C,EAAanjF,EAAKuP,MAClBA,OAAuBlI,IAAf87E,EAA2B,GAAKA,EACxC9C,EAAkBrgF,EAAKqgF,gBACzB,MAAO,CACL+C,KAAMjB,GAAiBnG,GAAUC,KAAM2D,EAAS9qD,GAChD+qD,eAAgBsC,GAAiBpG,GAAsB8D,EAAgB/qD,GACvEgrD,eAAgBqC,GAAiBpG,GAAsB+D,EAAgBhrD,GACvEu3B,KAAM81B,GAAiBnG,GAAUK,KAAM0D,EAAUjrD,GACjDvY,KAAM4lE,GAAiBnG,GAAUM,KAAM0D,EAAUlrD,GACjDuuD,SAAUlB,GAAiBnG,GAAUO,SAAU0D,EAAcnrD,GAC7DoD,OAAQiqD,GAAiBnG,GAAUh7B,OAAQm/B,EAAYrrD,GACvDvwB,MAAO49E,GAAiBnG,GAAUQ,MAAO4D,EAAWtrD,GACpDvlB,MAAO4yE,GAAiBnG,GAAUS,MAAO,CACvCltE,MAAOA,EACP8wE,gBAAiBA,GAChBvrD,GAEP,EA4MIwuD,GAAoB,MAngBC,SAA4B7F,GACnD,MAAO,CACLmC,QAAS1B,GAAwB,CAACxB,GAAqBA,IAAwBe,GAC/EoC,eAAgB9B,GAA2BhC,GAAsB0B,GACjEhtB,MAAOktB,GAAqBF,EAAWP,IACvCpoD,OAAQ6oD,GAAqBF,EAAWP,IACxC4C,eAAgB/B,GAA2BhC,GAAsB0B,GACjEsC,SAAUxB,GAAqBvC,GAAUK,KAAM,CAACK,GAAoBA,IAAsBe,GAC1FuC,SAAUzB,GAAqBvC,GAAUM,KAAM,CAACI,GAAqBA,GAAwBA,GAA0BA,GAAyBA,IAA2Be,GAC3KwC,aAAc1B,GAAqBvC,GAAUO,SAAU,CAACG,IAA4Be,GACpFyC,oBAAqBpC,GAAuBL,GAC5C0C,WAAY5B,GAAqBvC,GAAUh7B,OAAQ,CAAC07B,GAAoBA,IAA4Be,GACpG2C,UAAW7B,GAAqBvC,GAAUQ,MAAO,CAACE,IAA0Be,GAC5EluE,MAAOiuE,GAAsBC,GAC7B4C,gBAAiBtC,GAA2BhC,GAAuB0B,GAEvE,IAwB8B,SAAiCkC,GACzDF,IACFJ,GAAqBI,IAEnBE,EAASlvB,MACXgvB,GAAkBtrE,IAAsB,WACtCurE,GAAiBC,GAAU,WACzBF,GAAkB,IACpB,GACF,KAEAC,GAAiBC,GACjBF,GAAkB,KAEtB,GA6coFthC,GAA5D,EAHJ,WAClB,OAAO,IACT,IAEIolC,IA5MyBh8B,GA4MH+7B,GA1MjBxH,GAAQD,GAAS,SAAU51B,GAEhC,SAASu9B,IAEP,OAlfe,SAAU13E,EAAUC,GACvC,KAAMD,aAAoBC,GACxB,MAAM,IAAI9R,UAAU,oCAExB,CA6eM,CAAegS,KAAMu3E,GA1bK,SAAUrjB,EAAMxmE,GAC9C,IAAKwmE,EACH,MAAM,IAAIC,eAAe,6DAE3B,OAAOzmE,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BwmE,EAAPxmE,CAC5E,CAsba8pF,CAA0Bx3E,KAAMg6C,EAAiB1uD,MAAM0U,KAAMtU,WACtE,CAuJA,OA1mBW,SAAU8mD,EAAUC,GACjC,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIzkD,UAAU,kEAAoEykD,GAE1FD,EAAShmD,UAAY1B,OAAOw3B,OAAOmwB,GAAcA,EAAWjmD,UAAW,CACrED,YAAa,CACXO,MAAO0lD,EACPpnD,YAAY,EACZyB,UAAU,EACVD,cAAc,KAGd6lD,IAAY3nD,OAAOupE,eAAiBvpE,OAAOupE,eAAe7hB,EAAUC,GAAcD,EAASE,UAAYD,EAC7G,CAkcIglC,CAASF,EAAev9B,GAKxBu9B,EAAc/qF,UAAUq/D,sBAAwB,SAA+BX,GAC7E,OAAQ,KAAQlrD,KAAKtT,MAAOw+D,EAC9B,EACAqsB,EAAc/qF,UAAUkrF,yBAA2B,SAAkC9+E,EAAO++E,GAC1F,IAAKA,EACH,OAAO,KAET,OAAQ/+E,EAAMyQ,MACZ,KAAK0mE,GAAUh7B,OACf,KAAKg7B,GAAUO,SACb,MAAO,CACL93E,UAAWm/E,GAEf,KAAK5H,GAAUQ,MACb,MAAO,CACLsF,QAAS8B,GAGf,MAAM,IAAI3zD,MAAM,IAAMprB,EAAMyQ,KAAO,qGACrC,EACAkuE,EAAc/qF,UAAUorF,yBAA2B,SAAkC7jF,GACnF,IAAI8jF,EACAj/E,EAAQ7E,EAAK6E,MACfk/E,EAAoB/jF,EAAK+jF,kBACzBC,EAAgBhkF,EAAKgkF,cACrBJ,EAAiB5jF,EAAK4jF,eACxB,OAAOz/D,GAAS,CAAC,EAAG4/D,IAAoBD,EAAwB,CAAC,GAAyBj/E,EAAMyQ,MAAQ,GAAGtW,OAAO+kF,EAAkBl/E,EAAMyQ,OAAS,GAAI,CAAC6O,GAAS,CAAC,EAAG6/D,EAAe/3E,KAAK03E,yBAAyB9+E,EAAO++E,MAAoBE,GAC/O,EACAN,EAAc/qF,UAAUwrF,sBAAwB,SAA+BhkF,GAC7E,IAAIikF,EAAwBC,EACxBt/E,EAAQ5E,EAAM4E,MAChBu/E,EAAWnkF,EAAMmkF,SACjBJ,EAAgB/jF,EAAM+jF,cACtBJ,EAAiB3jF,EAAM2jF,eACzB,OAAQ/+E,EAAMyQ,MACZ,KAAK0mE,GAAUS,MACb,OAAOt4D,GAAS,CAAC,EAAGigE,IAAWF,EAAyB,CAAC,GAA0Br/E,EAAMyQ,MAAQsuE,EAAgBM,EAAuB7D,gBAAkBl8D,GAAS,CAAC,EAAG6/D,GAAgBE,IACzL,KAAKlI,GAAUE,KACb,OAAO/3D,GAAS,CAAC,EAAGigE,EAAU,CAC5BvE,eAAgB17D,GAAS,CAAC,EAAG6/D,KAEjC,KAAKhI,GAAUI,KACb,OAAOj4D,GAAS,CAAC,EAAGigE,EAAU,CAC5BtE,eAAgB37D,GAAS,CAAC,EAAG6/D,KAGnC,OAAO7/D,GAAS,CAAC,EAAGigE,IAAWD,EAAyB,CAAC,GAA0Bt/E,EAAMyQ,MAAQ6O,GAAS,CAAC,EAAG6/D,GAAgBG,GAChI,EACAX,EAAc/qF,UAAU4rF,4BAA8B,SAAqCN,EAAmBK,GAC5G,IAAIE,EAAoBngE,GAAS,CAAC,EAAGigE,GAKrC,OAJArtF,OAAOD,KAAKitF,GAAmBjsF,SAAQ,SAAUysF,GAC/C,IAAIC,EACJF,EAAoBngE,GAAS,CAAC,EAAGmgE,IAAoBE,EAAyB,CAAC,GAA0BD,GAAkBR,EAAkBQ,GAAiBC,GAChK,IACOF,CACT,EACAd,EAAc/qF,UAAUgsF,sBAAwB,SAA+B5/E,EAAO++E,GAgBpF,OAAO,CACT,EACAJ,EAAc/qF,UAAUisF,mBAAqB,SAA4Bv+E,EAAUi+E,GACjF,IAAI5gD,EAASv3B,KACT83E,EAAoB,CAAC,EAkCzB,OAjCA,WAAejsF,QAAQqO,GAAU,SAAUtB,GACzC,GAAKA,GAAUA,EAAMlM,MAArB,CAGA,IAAIgsF,EAAe9/E,EAAMlM,MACvBirF,EAAiBe,EAAax+E,SAE5B69E,EA7L4B,SAA2CrrF,GACjF,IAAIisF,EAAiBjtF,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC1F,OAAOZ,OAAOD,KAAK6B,GAAOyK,QAAO,SAAU/K,EAAKN,GAE9C,OADAM,EAAI8kF,GAAaplF,IAAQA,GAAOY,EAAMZ,GAC/BM,CACT,GAAGusF,EACL,CAuL4BC,CADLvH,GAAwBqH,EAAc,CAAC,cAGtD,OADAnhD,EAAOihD,sBAAsB5/E,EAAO++E,GAC5B/+E,EAAMyQ,MACZ,KAAK0mE,GAAUK,KACf,KAAKL,GAAUM,KACf,KAAKN,GAAUO,SACf,KAAKP,GAAUh7B,OACf,KAAKg7B,GAAUQ,MACbuH,EAAoBvgD,EAAOqgD,yBAAyB,CAClDh/E,MAAOA,EACPk/E,kBAAmBA,EACnBC,cAAeA,EACfJ,eAAgBA,IAElB,MACF,QACEQ,EAAW5gD,EAAOygD,sBAAsB,CACtCp/E,MAAOA,EACPu/E,SAAUA,EACVJ,cAAeA,EACfJ,eAAgBA,IAxBtB,CA4BF,IACAQ,EAAWn4E,KAAKo4E,4BAA4BN,EAAmBK,EAEjE,EACAZ,EAAc/qF,UAAU2f,OAAS,WAC/B,IAAI0sE,EAAS74E,KAAKtT,MAChBwN,EAAW2+E,EAAO3+E,SAClBxN,EAAQ2kF,GAAwBwH,EAAQ,CAAC,aACvCV,EAAWjgE,GAAS,CAAC,EAAGxrB,GAI5B,OAHIwN,IACFi+E,EAAWn4E,KAAKy4E,mBAAmBv+E,EAAUi+E,IAExC,gBAAoB78B,GAAW68B,EACxC,EACA,GAAYZ,EAAe,KAAM,CAAC,CAChCzrF,IAAK,YAuBL0J,IAAK,SAAgBwjB,GACnBsiC,GAAUtiC,UAAYA,CACxB,KAEKu+D,CACT,CA7JwB,CA6JtB,aAAkB3H,GAAOn4D,UAAY,CACrC0/D,KAAM,YACNvD,eAAgB,YAChB15E,SAAU,eAAoB,CAAC,aAAkB,WAAiB,YAClE4+E,aAAc,YACdt0B,MAAO,UACP8sB,wBAAyB,UACzBuC,eAAgB,YAChBzzB,KAAM,aAAkB,aACxB9vC,KAAM,aAAkB,aACxB8mE,SAAU,aAAkB,aAC5BnD,oBAAqB,UACrBhoD,OAAQ,aAAkB,aAC1B3zB,MAAO,aAAkB,aACzBgL,MAAO,YACP8wE,gBAAiB,YACjB2E,cAAe,aACdnJ,GAAOv4D,aAAe,CACvBmtC,OAAO,EACP8sB,yBAAyB,GACxB1B,GAAOj9B,KAAO2I,GAAU3I,KAAMi9B,GAAOh9B,OAAS,WAC/C,IAAIomC,EAAc19B,GAAU1I,SAiB5B,OAhBKomC,IAEHA,EAAc9mC,GAAiB,CAC7ByhC,QAAS,GACTC,eAAgB,CAAC,EACjBtC,yBAAyB,EACzBuC,eAAgB,CAAC,EACjBC,SAAU,GACVC,SAAU,GACVC,aAAc,GACdE,WAAY,GACZC,UAAW,GACX7wE,MAAO,GACP8wE,gBAAiB,CAAC,KAGf4E,CACT,EAAGnJ,IAOLyH,GAAa2B,aAAe3B,GAAa1kC,OACzC,I,2CC1vBO,MAAMsmC,GAAeA,CAAC9oB,EAAa93C,KACxC,MAAM6gE,EAAY7gE,EAASS,SAAS/hB,QAAQ,MAAO,IAE7CoiF,EAAkBD,EAAUE,YAAY,KAExCC,EADgBH,EAAUt+B,UAAUu+B,EAAkB,GAC5BpiF,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAE/D,OAAIuiF,KAAOnpB,GAAiBI,WAAWjxD,SAAS,KAAa+5E,EAEtDE,KAAaD,KAAOnpB,GAAiBI,WAAW,E,eCJlD,MAAM1H,GAAiBA,KAAO,IAAD2wB,EAAAC,EAClC,MAAM,cAAEC,GJKsBC,MAC9B,MAAOC,GAAiB/nC,EAAAA,WAAiB29B,IAIzC,MAAO,CAAEkK,cAF6BE,EAAcrK,OAE5B,EIVEoK,GAE1B,OACE9tB,EAAAA,GAAAA,MAACguB,GAAM,CAAA5/E,SAAA,EACL+uD,EAAAA,GAAAA,KAAA,SAAA/uD,SAAA,cACoF,QADUu/E,EAC5FP,GAAsC,QAA1BQ,EAACC,EAAcxwB,mBAAW,IAAAuwB,OAAA,EAAzBA,EAA2BK,WAAW3pB,OAAQupB,EAAcrhE,iBAAS,IAAAmhE,EAAAA,EAAI,YAExFxwB,EAAAA,GAAAA,KAAA,QAAM+wB,IAAI,OAAO3wE,KAAK,MAAMoP,KAAMgP,gFAC3B,ECfN,I,8BCCA,MCAMwyD,GAAuBA,KAClChxB,EAAAA,GAAAA,KAAA,OAAKrlD,MAAM,OAAOC,OAAO,OAAOq2E,QAAQ,YAAY5vD,QAAQ,MAAMhyB,MAAO,CAAE6hF,cAAe,UAAWjgF,UACnG+uD,EAAAA,GAAAA,KAAA,KAAG5yD,GAAG,SAAS+jF,OAAO,OAAOC,YAAY,IAAIl1E,KAAK,UAAUm1E,SAAS,UAASpgF,UAC5E+uD,EAAAA,GAAAA,KAAA,KAAG5yD,GAAG,QAAQ8O,KAAK,eAAem1E,SAAS,UAASpgF,UAClD+uD,EAAAA,GAAAA,KAAA,QACEtzD,EAAE,2sBACFU,GAAG,e,eCON,MAAMkkF,GAA2BA,KACtC,MAAM,YAAEjnB,EAAW,gBAAEK,IAAoBN,EAAAA,GAAAA,KAEzC,OACEpK,EAAAA,GAAAA,KAACuxB,GAAAA,GAAU,CAAC5kE,UClBI,uCDkBqB1b,UACnC+uD,EAAAA,GAAAA,KAACwxB,GAAAA,GAAW,CAAAvgF,UACV4xD,EAAAA,GAAAA,MAAC4uB,GAAAA,GAAa,CAAC9kE,UClBL,qCDkB4B1b,SAAA,EACpC4xD,EAAAA,GAAAA,MAAA,WAASl2C,UCpBS,+CDoBwB1b,SAAA,EACxC+uD,EAAAA,GAAAA,KAAC0xB,GAAAA,GAAiB,CAACC,QAASA,KAAM9gE,EAAAA,GAAAA,IAAS,KAAK5f,SAAC,SAEhDo5D,aAAW,EAAXA,EAAa9/D,KAAI,CAACsgE,EAAWgP,KAC5B7Z,EAAAA,GAAAA,KAAC0xB,GAAAA,GAAiB,CAAWC,QAASA,KAAM9gE,EAAAA,GAAAA,IAAS,UAAU65C,EAAgBG,EAAUhlE,OAASoL,SAC/F45D,EAAUhlE,MADWg0E,MAKzBr7C,GAMAA,GAMDqkC,EAAAA,GAAAA,MAAC6uB,GAAAA,GAAiB,CAACC,QAASA,IAAMz6D,KAAKsH,wDAA0CvtB,SAAA,EAC/E+uD,EAAAA,GAAAA,KAACgxB,GAAU,IAAG,iBAIlBhxB,EAAAA,GAAAA,KAAA,WAAA/uD,UACE+uD,EAAAA,GAAAA,KAAA,OACE2xB,QAASA,IAAMz6D,KAAKsH,sBACpBouB,IAAKpuB,gEACLozD,IAAK,wBAKF,EExDV,I,WCUA,MAAMC,GAAmBA,KAC9B,MAAM,YAAExnB,EAAW,gBAAEK,IAAoBN,EAAAA,GAAAA,KAEzC,OACEpK,EAAAA,GAAAA,KAAA,OAAKrzC,UCdc,kCDcc1b,UAC/B4xD,EAAAA,GAAAA,MAAC4uB,GAAAA,GAAa,CAAC9kE,UCXH,6BDW0B1b,SAAA,EACpC4xD,EAAAA,GAAAA,MAAA,WAAA5xD,SAAA,EACE+uD,EAAAA,GAAAA,KAAC0xB,GAAAA,GAAiB,CAAAzgF,UAChB+uD,EAAAA,GAAAA,KAAA,OAAKrzC,UCfW,uCDesB1b,UACpC+uD,EAAAA,GAAAA,KAAA,OACErzC,UClBG,8BDmBHglE,QAASA,KAAM9gE,EAAAA,GAAAA,IAAS,KACxB+7B,IAAKpuB,q4CACLozD,IAAK,qBAKX5xB,EAAAA,GAAAA,KAAC0xB,GAAAA,GAAiB,CAACC,QAASA,KAAM9gE,EAAAA,GAAAA,IAAS,KAAK5f,SAAC,SAEhDo5D,aAAW,EAAXA,EAAa9/D,KAAI,CAACsgE,EAAWgP,KAC5BhX,EAAAA,GAAAA,MAAC6uB,GAAAA,GAAiB,CAAWC,QAASA,KAAM9gE,EAAAA,GAAAA,IAAS,UAAU65C,EAAgBG,EAAUhlE,OAASoL,SAAA,CAC/F45D,EAAUhlE,MAEXm6D,EAAAA,GAAAA,KAAC8xB,GAAmB,CAAOjnB,gBAHLgP,SAQ5BhX,EAAAA,GAAAA,MAAA,WAAA5xD,SAAA,EACGutB,GAMAA,GAMDqkC,EAAAA,GAAAA,MAAC6uB,GAAAA,GAAiB,CAACC,QAASA,IAAMz6D,KAAKsH,wDAA0CvtB,SAAA,EAC/E+uD,EAAAA,GAAAA,KAACgxB,GAAU,IAAG,oBAIhB,EAQJc,GAA0DhnF,IAAoB,IAAnB,UAAE+/D,GAAW//D,EAC5E,MAAM,gBAAE4/D,IAAoBN,EAAAA,GAAAA,MACrB2nB,EAAaC,GAAkBnpC,EAAAA,SAAsB,IACtDopC,GAAiB/nB,EAAAA,GAAAA,KAAYnB,kBAAkB8B,EAAUx7C,UAE/Dw5B,EAAAA,WAAgB,KACTopC,EAAe5wE,MAEpB2wE,EAAeC,EAAe5wE,KAAKrf,QAAQkwF,GAAmC,WAApBA,EAAWrsF,OAAmB,GACvF,CAACosF,EAAe5wE,OAQnB,OAAK0wE,EAAYrvF,QAGfs9D,EAAAA,GAAAA,KAACyxB,GAAAA,GAAa,CAAC9kE,UCpFO,qCDoFwB1b,SAC3C8gF,EAAYxnF,KAAI,CAAC2nF,EAAYrY,KAC5B7Z,EAAAA,GAAAA,KAAC0xB,GAAAA,GAAiB,CAAWC,QAAU/qF,GAXzBurF,EAACvrF,EAAgDrE,KACnEqE,EAAEwrF,mBAEFvhE,EAAAA,GAAAA,IAAS,UAAU65C,EAAgBG,EAAUhlE,MAAK,IAAItD,EAAS,EAQd4vF,CAAYvrF,EAAGsrF,EAAW1iE,MAAMve,SAC1EihF,EAAWrsF,MADUg0E,QALE7Z,EAAAA,GAAAA,KAAAqyB,GAAAA,SAAA,GASd,E,eElFb,MAAMC,GAAgDxnF,IAA0B,IAAzB,gBAAEynF,GAAiBznF,EAC/E,OACEk1D,EAAAA,GAAAA,KAACwyB,GAAAA,GAAU,CAAC7lE,WAAW8lE,EAAAA,GAAAA,GHXJ,0CGW2B,CAACF,GAAmBA,IAAkBthF,UAClF+uD,EAAAA,GAAAA,KAAC6xB,GAAM,KACI,ECLJa,GAAkC5nF,IAAmB,IAAlB,SAAEmG,GAAUnG,EAC1D,OACE+3D,EAAAA,GAAAA,MAAA,OAAKl2C,UTVc,mCSUc1b,SAAA,EAC/B+uD,EAAAA,GAAAA,KAACsyB,GAAc,CAACC,gBTVF,mCSYdvyB,EAAAA,GAAAA,KAAA,OAAKrzC,UTXc,qCSWgB1b,SAAEA,KAErC+uD,EAAAA,GAAAA,KAACsxB,GAAc,MACX,E,eCuCV,OAtCsCxmF,IAA0C,IAAzC,SAAEmG,EAAQ,YAAEivD,EAAW,SAAE7wC,GAAUvkB,EACxE,MAAOq/D,EAAKwoB,GAAU9pC,EAAAA,SAA2BA,EAAAA,WAAiByf,GAAAA,KAC3DsoB,EAAegC,GAAoB/pC,EAAAA,SAA+Bw9B,IAgBzE,OAdAx9B,EAAAA,WAAgB,KACd8pC,EAAO,IAAIpqB,GAAAA,EAAa,GACvB,CAACrI,IAEJrX,EAAAA,WAAgB,KACd+pC,GAAkBz5D,IAAO,IACpBA,EACHmtD,WAAW,EACXC,OAAQ,CACDrmB,cAAa7wC,WAAUwjE,aAAcxjE,EAASS,aAEpD,GACF,CAACowC,EAAa7wC,IAEZuhE,EAActK,WAGjBtmB,EAAAA,GAAAA,KAAAqyB,GAAAA,SAAA,CAAAphF,UACE4xD,EAAAA,GAAAA,MAAC4jB,GAAc,CAAC5iF,MAAO,CAAC+sF,EAAegC,GAAkB3hF,SAAA,EACvD+uD,EAAAA,GAAAA,KAACH,GAAI,KACLG,EAAAA,GAAAA,KAACwI,GAAAA,EAAW,CAAC3kE,MAAOsmE,EAAIl5D,UACtB4xD,EAAAA,GAAAA,MAACiwB,GAAAA,GAAQ,CAACnmE,WAAW8lE,EAAAA,GAAAA,GAAKj0D,eCxCd,kCDwC6EvtB,SAAA,EACvF+uD,EAAAA,GAAAA,KAAC+yB,GAAAA,GAAO,CAACptE,SAAS,kBAElBq6C,EAAAA,GAAAA,KAAA,OAAKrzC,UC5CM,kCD4CsB1b,UAC/B+uD,EAAAA,GAAAA,KAAC0yB,GAAO,CAAOzhF,0BAXU+uD,EAAAA,GAAAA,KAAAqyB,GAAAA,SAAA,GAgBhC,C,kuBEhDHnrE,EAAa,SAAoBtU,EAAQ0c,GAC3C,OAAO1c,EAAOsZ,OAAO,EAAGoD,EAAO5sB,UAAY4sB,CAC7C,EAuBIqD,EAAO,SAAcC,EAAQb,GAQ/B,IAPA,IAAIxY,OAAQ,EACRsZ,OAAW,EAEbC,EADef,EAAInkB,MAAM,KACA,GACvBmlB,EAAcC,EAAWF,GACzBG,EAA+B,KAAnBF,EAAY,GACxBG,EAASC,EAAWP,GACfpwB,EAAI,EAAG4wB,EAAIF,EAAOxwB,OAAQF,EAAI4wB,EAAG5wB,IAAK,CAC7C,IAAI6wB,GAAS,EACTC,EAAQJ,EAAO1wB,GAAG8wB,MACtB,GAAIA,EAAMZ,QACRG,EAAW,CACTS,MAAOA,EACP1a,OAAQ,CAAC,EACTmZ,IAAKA,OAJT,CAYA,IAJA,IAAIwB,EAAgBP,EAAWM,EAAMjL,MACjCzP,EAAS,CAAC,EACV4a,EAAMnmB,KAAKmmB,IAAIT,EAAYrwB,OAAQ6wB,EAAc7wB,QACjD6jB,EAAQ,EACLA,EAAQiN,EAAKjN,IAAS,CAC3B,IAAIkN,EAAeF,EAAchN,GAC7BmN,EAAaX,EAAYxM,GAC7B,GAAIoN,EAAQF,GAAe,CAKzB7a,EADY6a,EAAa7tB,MAAM,IAAM,KACrBmtB,EAAYntB,MAAM2gB,GAAOhc,IAAIqpB,oBAAoBxiB,KAAK,KACtE,KACF,CACA,QAAmBe,IAAfuhB,EAA0B,CAI5BL,GAAS,EACT,KACF,CACA,IAAIQ,EAAeC,EAAQC,KAAKN,GAChC,GAAII,IAAiBZ,EAAW,EACuC,IAA5Ce,EAAcjsB,QAAQ8rB,EAAa,KAC6J,KAAU,GACnO,IAAIhwB,EAAQ+vB,mBAAmBF,GAC/B9a,EAAOib,EAAa,IAAMhwB,CAC5B,MAAO,GAAI4vB,IAAiBC,EAAY,CAItCL,GAAS,EACT,KACF,CACF,CACA,IAAKA,EAAQ,CACX9Z,EAAQ,CACN+Z,MAAOA,EACP1a,OAAQA,EACRmZ,IAAK,IAAMgB,EAAYntB,MAAM,EAAG2gB,GAAOnV,KAAK,MAE9C,KACF,CA5CA,CA6CF,CACA,OAAOmI,GAASsZ,GAAY,IAC9B,EAIItZ,EAAQ,SAAe8O,EAAM0J,GAC/B,OAAOY,EAAK,CAAC,CACXtK,KAAMA,IACJ0J,EACN,EA4BI1V,EAAU,SAAiByU,EAAIo9D,GAEjC,GAAIhnE,EAAW4J,EAAI,KACjB,OAAOA,EAET,IAAIkiE,EAAYliE,EAAGljB,MAAM,KACvBqlF,EAAaD,EAAU,GACvBE,EAAUF,EAAU,GAEpBG,EADgBjF,EAAKtgF,MAAM,KACA,GACzBwlF,EAAapgE,EAAWigE,GACxBI,EAAergE,EAAWmgE,GAG9B,GAAsB,KAAlBC,EAAW,GACb,OAAO5+D,EAAS2+D,EAAcD,GAIhC,IAAKhsE,EAAWksE,EAAW,GAAI,KAAM,CACnC,IAAItjE,EAAWujE,EAAavpF,OAAOspF,GAAYhiF,KAAK,KACpD,OAAOojB,GAA2B,MAAjB2+D,EAAuB,GAAK,KAAOrjE,EAAUojE,EAChE,CASA,IAFA,IAAII,EAAcD,EAAavpF,OAAOspF,GAClCG,EAAW,GACN/wF,EAAI,EAAG4wB,EAAIkgE,EAAY5wF,OAAQF,EAAI4wB,EAAG5wB,IAAK,CAClD,IAAI0xB,EAAUo/D,EAAY9wF,GACV,OAAZ0xB,EAAkBq/D,EAAShzB,MAA2B,MAAZrsC,GAAiBq/D,EAASnxF,KAAK8xB,EAC/E,CACA,OAAOM,EAAS,IAAM++D,EAASniF,KAAK,KAAM8hF,EAC5C,EAKIM,EAAe,SAAsBnrE,EAAMzP,GAC7C,IAAI66E,EAAcprE,EAAKza,MAAM,KAC3B8lF,EAAWD,EAAY,GACvBE,EAAeF,EAAY,GAC3Bh/D,OAAyBtiB,IAAjBwhF,EAA6B,GAAKA,EAExCC,EAAkB,IADP5gE,EAAW0gE,GACWnpF,KAAI,SAAU2pB,GACjD,IAAI3a,EAAQua,EAAQC,KAAKG,GACzB,OAAO3a,EAAQX,EAAOW,EAAM,IAAM2a,CACpC,IAAG9iB,KAAK,KACJyiF,EAAmBj7E,EAAOyW,SAE1BykE,GADJD,OAAwC1hF,IAArB0hF,EAAiC,CAAC,EAAIA,GACZvkE,OAEzCykE,QADiC5hF,IAA1B2hF,EAAsC,GAAKA,GAC7BlmF,MAAM,KAAK,IAAM,GAE1C,OADAgmF,EAAkBp/D,EAASo/D,EAAiBn/D,EAAOs/D,EAErD,EAYIjgE,EAAU,SASVG,EAAY,SAAmBC,GACjC,OAAOJ,EAAQhuB,KAAKouB,EACtB,EACIP,EAAU,SAAiBO,GAC7B,OAAOA,GAA0B,MAAfA,EAAQ,EAC5B,EACIC,EAAY,SAAmBb,EAAO/M,GAMxC,MAAO,CACL+M,MAAOA,EACPc,MAPUd,EAAMZ,QAAU,EAAIM,EAAWM,EAAMjL,MAAMna,QAAO,SAAUkmB,EAAOF,GAG7E,OAFAE,GAhBiB,GAKD,SAAuBF,GACzC,MAAmB,KAAZA,CACT,CAUQG,CAAcH,GAAwCD,EAAUC,GAAUE,GAf7D,EAe8FT,EAAQO,GAAUE,GAASE,EAAoCF,GAhB9J,EAgBYA,GAbd,EAcPA,CACT,GAAG,GAID7N,MAAOA,EAEX,EACI4M,EAAa,SAAoBP,GACnC,OAAOA,EAAOroB,IAAI4pB,GAAWI,MAAK,SAAUliB,EAAGC,GAC7C,OAAOD,EAAE+hB,MAAQ9hB,EAAE8hB,MAAQ,EAAI/hB,EAAE+hB,MAAQ9hB,EAAE8hB,OAAS,EAAI/hB,EAAEkU,MAAQjU,EAAEiU,KACtE,GACF,EACIyM,EAAa,SAAoBjB,GACnC,OAAOA,EAENhkB,QAAQ,eAAgB,IAAIH,MAAM,IACrC,EACI4mB,EAAW,SAAkB1E,GAC/B,IAAK,IAAI1Y,EAAO3U,UAAUC,OAAQ+xB,EAAQzwB,MAAMoT,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Fod,EAAMpd,EAAO,GAAK5U,UAAU4U,GAK9B,OAAOyY,IAHP2E,EAAQA,EAAMzyB,QAAO,SAAU0yB,GAC7B,OAAOA,GAAKA,EAAEhyB,OAAS,CACzB,MAC4B+xB,EAAM/xB,OAAS,EAAI,IAAM+xB,EAAMrjB,KAAK,KAAO,GACzE,EACI4iB,EAAgB,CAAC,MAAO,QCtPxB/E,EAAWptB,OAAOqtB,QAAU,SAAU3sB,GACxC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GACvB,IAAK,IAAIK,KAAOF,EACVd,OAAO0B,UAAU8qB,eAAe5pB,KAAK9B,EAAQE,KAC/CN,EAAOM,GAAOF,EAAOE,GAG3B,CACA,OAAON,CACT,EACI4sB,EAAc,SAAqBxsB,GACrC,IAAIysB,EAAmBzsB,EAAO0sB,SAC5BC,EAASF,EAAiBE,OAC1BC,EAAOH,EAAiBG,KACxBC,EAAOJ,EAAiBI,KACxBC,EAASL,EAAiBK,OAC1BC,EAAWN,EAAiBM,SAC5BC,EAAOP,EAAiBO,KACxBC,EAAWR,EAAiBQ,SAC5BC,EAAOT,EAAiBS,KACtBC,EAAWntB,EAAO0sB,SAASS,UAC1BA,GAAYN,GAAQO,IAEvBD,EADU,IAAIE,IAAIR,GACHM,UAEjB,MAAO,CACLA,SAAUG,UAAUC,UAAUJ,IAC9BR,OAAQA,EACRC,KAAMA,EACNC,KAAMA,EACNC,OAAQA,EACRC,SAAUA,EACVC,KAAMA,EACNC,SAAUA,EACVC,KAAMA,EACNM,MAAOxtB,EAAOytB,QAAQD,MACtBttB,IAAKF,EAAOytB,QAAQD,OAASxtB,EAAOytB,QAAQD,MAAMttB,KAAO,UAE7D,EACIwtB,EAAgB,SAAuB1tB,EAAQ6c,GACjD,IAAI8Q,EAAY,GACZjB,EAAWF,EAAYxsB,GACvB4tB,GAAgB,EAChBC,EAAoB,WAA8B,EACtD,MAAO,CACL,YAAInB,GACF,OAAOA,CACT,EACA,iBAAIkB,GACF,OAAOA,CACT,EACAE,sBAAuB,WACrBF,GAAgB,EAChBC,GACF,EACAE,OAAQ,SAAgB9e,GACtB0e,EAAUluB,KAAKwP,GACf,IAAI+e,EAAmB,WACrBtB,EAAWF,EAAYxsB,GACvBiP,EAAS,CACPyd,SAAUA,EACVuB,OAAQ,OAEZ,EAEA,OADAjuB,EAAOiF,iBAAiB,WAAY+oB,GAC7B,WACLhuB,EAAOkP,oBAAoB,WAAY8e,GACvCL,EAAYA,EAAUtuB,QAAO,SAAU8P,GACrC,OAAOA,IAAOF,CAChB,GACF,CACF,EACAif,SAAU,SAAkBC,GAC1B,IAAIhmB,EAAOrI,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E0tB,EAAQrlB,EAAKqlB,MACbY,EAAejmB,EAAKiD,QACpBA,OAA2BoE,IAAjB4e,GAAqCA,EACjD,GAAkB,iBAAPD,EACTnuB,EAAOytB,QAAQY,GAAGF,OACb,CACLX,EAAQlB,EAAS,CAAC,EAAGkB,EAAO,CAC1BttB,IAAKouB,KAAKC,MAAQ,KAGpB,IACMX,GAAiBxiB,EACnBpL,EAAOytB,QAAQe,aAAahB,EAAO,KAAMW,GAEzCnuB,EAAOytB,QAAQgB,UAAUjB,EAAO,KAAMW,EAE1C,CAAE,MAAOlqB,GACPjE,EAAO0sB,SAASthB,EAAU,UAAY,UAAU+iB,EAClD,CACF,CACAzB,EAAWF,EAAYxsB,GACvB4tB,GAAgB,EAChB,IAAIc,EAAa,IAAIxY,SAAQ,SAAUyY,GACrC,OAAOd,EAAoBc,CAC7B,IAOA,OANAhB,EAAU1tB,SAAQ,SAAUgP,GAC1B,OAAOA,EAAS,CACdyd,SAAUA,EACVuB,OAAQ,QAEZ,IACOS,CACT,EAEJ,EAIIE,EAAqB,WACvB,IAAIC,EAAc/uB,UAAUC,OAAS,QAAsByP,IAAjB1P,UAAU,GAAmBA,UAAU,GAAK,IAClFgvB,EAAcD,EAAYzpB,QAAQ,KAClC2pB,EAAkB,CACpB5B,SAAU2B,GAAe,EAAID,EAAYtF,OAAO,EAAGuF,GAAeD,EAClElC,OAAQmC,GAAe,EAAID,EAAYtF,OAAOuF,GAAe,IAE3DlL,EAAQ,EACRoL,EAAQ,CAACD,GACTE,EAAS,CAAC,MACd,MAAO,CACL,YAAIvC,GACF,OAAOsC,EAAMpL,EACf,EACA3e,iBAAkB,SAA0B/B,EAAMiM,GAAK,EACvDD,oBAAqB,SAA6BhM,EAAMiM,GAAK,EAC7Dse,QAAS,CACP,WAAIyB,GACF,OAAOF,CACT,EACA,SAAIpL,GACF,OAAOA,CACT,EACA,SAAI4J,GACF,OAAOyB,EAAOrL,EAChB,EACA6K,UAAW,SAAmBjB,EAAO2B,EAAGC,GACtC,IAAIC,EAAaD,EAAInkB,MAAM,KACzBkiB,EAAWkC,EAAW,GACtBC,EAAcD,EAAW,GACzB1C,OAAyBnd,IAAhB8f,EAA4B,GAAKA,EAC5C1L,IACAoL,EAAMvvB,KAAK,CACT0tB,SAAUA,EACVR,OAAQA,EAAO5sB,OAAS,IAAM4sB,EAASA,IAEzCsC,EAAOxvB,KAAK+tB,EACd,EACAgB,aAAc,SAAsBhB,EAAO2B,EAAGC,GAC5C,IAAIG,EAAcH,EAAInkB,MAAM,KAC1BkiB,EAAWoC,EAAY,GACvBC,EAAeD,EAAY,GAC3B5C,OAA0Bnd,IAAjBggB,EAA6B,GAAKA,EAC7CR,EAAMpL,GAAS,CACbuJ,SAAUA,EACVR,OAAQA,GAEVsC,EAAOrL,GAAS4J,CAClB,EACAa,GAAI,SAAYF,GACd,IAAIsB,EAAW7L,EAAQuK,EACnBsB,EAAW,GAAKA,EAAWR,EAAOlvB,OAAS,IAG/C6jB,EAAQ6L,EACV,GAGN,EAKIrC,IAAiC,oBAAXvpB,SAA0BA,OAAOC,WAAYD,OAAOC,SAASoB,eAInFwqB,EAAgBhC,EAFXN,EAAYvpB,OAAS+qB,KAG1B,EAAWc,EAAcxB,SCrLzB,EAAWhvB,OAAOqtB,QAAU,SAAU3sB,GACxC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GACvB,IAAK,IAAIK,KAAOF,EACVd,OAAO0B,UAAU8qB,eAAe5pB,KAAK9B,EAAQE,KAC/CN,EAAOM,GAAOF,EAAOE,GAG3B,CACA,OAAON,CACT,EACA,SAASmpB,EAAyBvoB,EAAKvB,GACrC,IAAIW,EAAS,CAAC,EACd,IAAK,IAAIC,KAAKW,EACRvB,EAAKmG,QAAQvF,IAAM,GAClBX,OAAO0B,UAAU8qB,eAAe5pB,KAAKtB,EAAKX,KAC/CD,EAAOC,GAAKW,EAAIX,IAElB,OAAOD,CACT,CACA,SAASuU,EAAgBF,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI9R,UAAU,oCAExB,CACA,SAASsmE,EAA2BJ,EAAMxmE,GACxC,IAAKwmE,EACH,MAAM,IAAIC,eAAe,6DAE3B,OAAOzmE,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BwmE,EAAPxmE,CAC5E,CACA,SAAS0mE,EAAU5hB,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIzkD,UAAU,kEAAoEykD,GAE1FD,EAAShmD,UAAY1B,OAAOw3B,OAAOmwB,GAAcA,EAAWjmD,UAAW,CACrED,YAAa,CACXO,MAAO0lD,EACPpnD,YAAY,EACZyB,UAAU,EACVD,cAAc,KAGd6lD,IAAY3nD,OAAOupE,eAAiBvpE,OAAOupE,eAAe7hB,EAAUC,GAAcD,EAASE,UAAYD,EAC7G,CAWA,IAAIwqC,EAAqB,SAA4BnuF,EAAMytE,GACzD,IAAI2gB,GAAM,IAAApjC,eAAcyiB,GAExB,OADA2gB,EAAI1lE,YAAc1oB,EACXouF,CACT,EAIIC,EAAkBF,EAAmB,YAIrC7vB,EAAW,SAAkBr5D,GAC/B,IAAImG,EAAWnG,EAAKmG,SACpB,OAAO,gBAAoBijF,EAAgB7vB,SAAU,MAAM,SAAUlrC,GACnE,OAAOA,EAAUloB,EAASkoB,GAAW,gBAAoB8mC,EAAkB,KAAMhvD,EACnF,GACF,EACIgvD,EAAmB,SAAUlP,GAE/B,SAASkP,IACP,IAAI2mB,EAAOzvE,EACXL,EAAgBC,KAAMkpD,GACtB,IAAK,IAAI7oD,EAAO3U,UAAUC,OAAQwV,EAAOlU,MAAMoT,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3Ea,EAAKb,GAAQ5U,UAAU4U,GAEzB,OAAeuvE,EAASzvE,EAAQk0D,EAA2Bt0D,KAAMg6C,EAAiBtsD,KAAKpC,MAAM0uD,EAAkB,CAACh6C,MAAMjN,OAAOoO,KAAiBf,EAAMgZ,MAAQ,CAC1JgJ,QAAShiB,EAAMg9E,aACfC,KAAM,CACJC,SAAU,OAEHhpB,EAA2Bl0D,EAAnCyvE,EACL,CAyDA,OAtEAzb,EAAUlL,EAAkBlP,GAc5BkP,EAAiB18D,UAAU4wF,WAAa,WACtC,IAAIG,EAAiBv9E,KAAKtT,MAAM2sB,QAGhC,MAAO,CACLS,SAHWyjE,EAAezjE,SAI1BxB,SAHWilE,EAAejlE,SAK9B,EACA4wC,EAAiB18D,UAAUgxF,kBAAoB,SAA2Bh4E,EAAOi4E,GAC/E,IAAIC,EAAWl4E,GAMb,MAAMA,GAJNm4E,EADgB39E,KAAKtT,MAAM2sB,QAAQS,UACzBtU,EAAMwV,IAAK,CACnBhkB,SAAS,GAKf,EACAkyD,EAAiB18D,UAAUumD,mBAAqB,SAA4ByH,EAAW0R,GACjFA,EAAU9pC,QAAQ9J,WAAatY,KAAKoZ,MAAMgJ,QAAQ9J,UACpDtY,KAAKtT,MAAM2sB,QAAQK,uBAEvB,EACAwvC,EAAiB18D,UAAU0uD,kBAAoB,WAC7C,IAAI3jB,EAASv3B,KACTq9E,EAAOr9E,KAAKoZ,MAAMikE,KACpBhkE,EAAUrZ,KAAKtT,MAAM2sB,QACvBA,EAAQK,wBACR2jE,EAAKC,SAAWjkE,EAAQM,QAAO,WAC7B7X,QAAQwD,UAAUyG,MAAK,WAErB7D,uBAAsB,WACfqvB,EAAOqmD,WACVrmD,EAAO0D,UAAS,WACd,MAAO,CACL7Y,QAASmV,EAAO6lD,aAEpB,GAEJ,GACF,GACF,GACF,EACAl0B,EAAiB18D,UAAUwmD,qBAAuB,WAChD,IAAIqqC,EAAOr9E,KAAKoZ,MAAMikE,KACtBr9E,KAAK49E,WAAY,EACjBP,EAAKC,UACP,EACAp0B,EAAiB18D,UAAU2f,OAAS,WAClC,IAAIiW,EAAUpiB,KAAKoZ,MAAMgJ,QACvBloB,EAAW8F,KAAKtT,MAAMwN,SACxB,OAAO,gBAAoBijF,EAAgB7xC,SAAU,CACnDx+C,MAAOs1B,GACc,mBAAbloB,EAA0BA,EAASkoB,GAAWloB,GAAY,KACtE,EACOgvD,CACT,CAxEuB,CAwErB,aAIFA,EAAiB7xC,aAAe,CAC9BgC,QAASiC,GAGX,IAAIuiE,EAAiB,SAAwB7pF,GAC3C,IAAI2rB,EAAM3rB,EAAM2rB,IACdzlB,EAAWlG,EAAMkG,SACfwgB,EAAciF,EAAI3uB,QAAQ,KAE1B+nB,OAAW,EACXR,EAAS,GAQb,OAVmBmC,GAAe,GAKhC3B,EAAW4G,EAAIk7B,UAAU,EAAGngC,GAC5BnC,EAASoH,EAAIk7B,UAAUngC,IAEvB3B,EAAW4G,EAEN,gBAAoBw9D,EAAgB7xC,SAAU,CACnDx+C,MAAO,CACLwrB,SAAU,CACRS,SAAUA,EACVR,OAAQA,EACRC,KAZK,IAcPsB,SAAU,WACR,MAAM,IAAIkK,MAAM,yCAClB,IAED9pB,EACL,EAGI6yD,EAAckwB,EAAmB,OAAQ,CAC3CjwB,QAAS,IACTC,SAAU,IACVnzC,SAAUwB,EAAcxB,WAKtByzC,EAAS,SAAgB7gE,GAC3B,OAAO,gBAAoBqgE,EAAYO,SAAU,MAAM,SAAUwwB,GAC/D,OAAO,gBAAoB1wB,EAAU,MAAM,SAAU2wB,GACnD,OAAO,gBAAoBC,EAAY,EAAS,CAAC,EAAGF,EAAaC,EAAiBrxF,GACpF,GACF,GACF,EACIsxF,EAAa,SAAUC,GAEzB,SAASD,IAEP,OADAj+E,EAAgBC,KAAMg+E,GACf1pB,EAA2Bt0D,KAAMi+E,EAAqB3yF,MAAM0U,KAAMtU,WAC3E,CAuEA,OA3EA0oE,EAAU4pB,EAAYC,GAKtBD,EAAWxxF,UAAU2f,OAAS,WAC5B,IAAI0sE,EAAS74E,KAAKtT,MAChB4rB,EAAWugE,EAAOvgE,SAClB4lE,EAAarF,EAAO/+D,SACpBmzC,EAAW4rB,EAAO5rB,SAClBj5B,EAAU6kD,EAAO7kD,QACjB95B,EAAW2+E,EAAO3+E,SAElBikF,GADUtF,EAAO7rB,QACE6rB,EAAO13B,WAC1BA,OAAiC/lD,IAArB+iF,EAAiC,MAAQA,EACrDC,EAAWzpE,EAAyBkkE,EAAQ,CAAC,WAAY,WAAY,WAAY,UAAW,WAAY,UAAW,cACjHh9D,EAAS,WAAerlB,QAAQ0D,GAAU/C,QAAO,SAAUV,EAAOmC,GACpE,IAAIijB,EAASwiE,GAAYpxB,EAAZoxB,CAAsBzlF,GACnC,OAAOnC,EAAM1D,OAAO8oB,EACtB,GAAG,IACC9C,EAAWT,EAASS,SACpBvW,EAAQoZ,EAAKC,EAAQ9C,GACzB,GAAIvW,EAAO,CACT,IAAIX,EAASW,EAAMX,OACjBmZ,EAAMxY,EAAMwY,IACZuB,EAAQ/Z,EAAM+Z,MACdnoB,EAAUoO,EAAM+Z,MAAMzvB,MAIxBmgE,EAAW1wC,EAAMZ,QAAUsxC,EAAW1wC,EAAMjL,KAAKta,QAAQ,MAAO,IAChE,IAAItK,EAAQ,EAAS,CAAC,EAAGmV,EAAQ,CAC/BmZ,IAAKA,EACL1C,SAAUA,EACVwB,SAAU,SAAkBC,EAAItR,GAC9B,OAAOy1E,EAAW54E,EAAQyU,EAAIiB,GAAMvS,EACtC,IAEE2kE,EAAQ,eAAmBh5E,EAAS1H,EAAO0H,EAAQ1H,MAAMwN,SAAW,gBAAoBqzD,EAAQ,CAClGj1C,SAAUA,EACV0b,QAASA,GACR5/B,EAAQ1H,MAAMwN,eAAYkB,GAGzBkjF,EAAetqD,EAAUuqD,EAAep9B,EAExCq9B,EAAexqD,EAAU,EAAS,CACpChZ,IAAKA,EACL1C,SAAUA,EACV6oC,UAAWA,GACVi9B,GAAYA,EACf,OAAO,gBAAoBrxB,EAAYzhB,SAAU,CAC/Cx+C,MAAO,CACLkgE,QAAShyC,EACTiyC,SAAUA,EACVnzC,SAAUptB,EAAMotB,WAEjB,gBAAoBwkE,EAAcE,EAAcpR,GACrD,CAcE,OAAO,IAEX,EACO4Q,CACT,CA7EiB,CA6Ef,iBACFA,EAAW3mE,aAAe,CACxB2c,SAAS,GAEX,IAAIyqD,EAAexB,EAAmB,SAClCsB,EAAe,SAAsBhxE,GACvC,IAAIyN,EAAMzN,EAAMyN,IACd1C,EAAW/K,EAAM+K,SACjB6oC,EAAY5zC,EAAM4zC,UAClBi9B,EAAWzpE,EAAyBpH,EAAO,CAAC,MAAO,WAAY,cACjE,OAAO,gBAAoBkxE,EAAanxB,SAAU,MAAM,SAAUoxB,GAChE,OAAO,gBAAoBC,EAAkB,EAAS,CAAC,EAAGP,EAAU,CAClEj9B,UAAWA,EACXu9B,aAAcA,EACd1jE,IAAKA,EACL1C,SAAUA,IAEd,GACF,EAGIsmE,GAAgB,EAChBC,EAAoB,EACpBF,EAAmB,SAAU/yB,GAE/B,SAAS+yB,IACP,IAAIG,EAAQ3+C,EACZpgC,EAAgBC,KAAM2+E,GACtB,IAAK,IAAIr9E,EAAQ5V,UAAUC,OAAQwV,EAAOlU,MAAMqU,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChFJ,EAAKI,GAAS7V,UAAU6V,GAE1B,OAAgBu9E,EAAU3+C,EAASm0B,EAA2Bt0D,KAAM4rD,EAAkBl+D,KAAKpC,MAAMsgE,EAAmB,CAAC5rD,MAAMjN,OAAOoO,KAAkBg/B,EAAO/mB,MAAQ,CAAC,EAAG+mB,EAAOu+C,aAAe,SAAU/nF,IAChMwpC,EAAO/mB,MAAM2lE,aAAepoF,GAC/BA,EAAKqoF,OAET,EAAY1qB,EAA2Bn0B,EAApC2+C,EACL,CA2EA,OAvFA1qB,EAAUuqB,EAAkB/yB,GAa5B+yB,EAAiB1yB,yBAA2B,SAAkCf,EAAWgB,GAEvF,GAD+B,MAAjBA,EAAUlxC,IAEtB,OAAO,EAAS,CACd+jE,aAAa,GACZ7zB,GAEH,IAAI+zB,EAAe/zB,EAAUlwC,MAAQkxC,EAAUlxC,IAC3CkkE,EAAkBhzB,EAAU5zC,SAASS,WAAamyC,EAAU5yC,SAASS,UAAYmyC,EAAU5yC,SAASS,WAAamyC,EAAUlwC,IAC/H,OAAO,EAAS,CACd+jE,YAAaE,GAAgBC,GAC5Bh0B,EAEP,EACAyzB,EAAiBnyF,UAAU0uD,kBAAoB,WAC7C2jC,IACA7+E,KAAKg/E,OACP,EACAL,EAAiBnyF,UAAUwmD,qBAAuB,WAEtB,MAD1B6rC,IAEED,GAAgB,EAEpB,EACAD,EAAiBnyF,UAAUumD,mBAAqB,SAA4ByH,EAAW0R,GACjF1R,EAAUliC,WAAatY,KAAKtT,MAAM4rB,UAAYtY,KAAKoZ,MAAM2lE,aAC3D/+E,KAAKg/E,OAET,EACAL,EAAiBnyF,UAAUwyF,MAAQ,WAOjC,IAAIN,EAAe1+E,KAAKtT,MAAMgyF,aAC1BA,EACFA,EAAa1+E,KAAKrJ,MAEdioF,EACFA,GAAgB,EACP5+E,KAAKrJ,OAGTqJ,KAAKrJ,KAAK8S,SAAS/Z,SAASyvF,gBAC/Bn/E,KAAKrJ,KAAKqoF,QAIlB,EACAL,EAAiBnyF,UAAU2f,OAAS,WAClC,IAAIi0B,EAASpgC,KACTo/E,EAAUp/E,KAAKtT,MAEjB4L,GADW8mF,EAAQllF,SACXklF,EAAQ9mF,OAEhB+mF,GADeD,EAAQV,aACHU,EAAQj+B,WAC5Bm+B,OAA6BlkF,IAAtBikF,EAAkC,MAAQA,EAGjDjB,GAFMgB,EAAQpkE,IACHokE,EAAQ9mE,SACR3D,EAAyByqE,EAAS,CAAC,WAAY,QAAS,eAAgB,YAAa,MAAO,cACzG,OAAO,gBAAoBE,EAAM,EAAS,CACxChnF,MAAO,EAAS,CACdinF,QAAS,QACRjnF,GACHknF,SAAU,KACVpoE,IAAK,SAAazoB,GAChB,OAAOyxC,EAAOzpC,KAAOhI,CACvB,GACCyvF,GAAW,gBAAoBK,EAAanzC,SAAU,CACvDx+C,MAAOkT,KAAK0+E,cACX1+E,KAAKtT,MAAMwN,UAChB,EACOykF,CACT,CAzFuB,CAyFrB,cACF,OAASA,GACT,IAAI3qE,EAAI,WAAc,EAGlByrE,EAAa,kBACS,IAAfA,IACTA,EAAa,SAAoBC,GAC/B,OAAOA,CACT,GAEF,IAAI1Q,EAAOyQ,GAAW,SAAUlqD,EAAOne,GACrC,IAAIuoE,EAAWpqD,EAAMoqD,SACnBjzF,EAAQioB,EAAyB4gB,EAAO,CAAC,aAC3C,OAAO,gBAAoBw3B,EAAYO,SAAU,MAAM,SAAUzJ,GAChDA,EAAMoJ,SAArB,IACED,EAAUnJ,EAAMmJ,QAClB,OAAO,gBAAoBI,EAAU,MAAM,SAAUtJ,GACnD,IAAIxrC,EAAWwrC,EAAMxrC,SACnBwB,EAAWgqC,EAAMhqC,SACfC,EAAKrtB,EAAMqtB,GACbX,EAAQ1sB,EAAM0sB,MACdpiB,EAAUtK,EAAMsK,QAChB4oF,EAAkBlzF,EAAMmzF,SACxBA,OAA+BzkF,IAApBwkF,EAAgC5rE,EAAI4rE,EAC/CE,EAAcnrE,EAAyBjoB,EAAO,CAAC,KAAM,QAAS,UAAW,aACvE+rB,EAAOnT,EAAQyU,EAAIizC,GACnB+yB,EAAc7mE,UAAUT,GACxBunE,EAAY1nE,EAASS,WAAagnE,EAClCE,EAAqB9vE,EAAWmI,EAASS,SAAUgnE,GACvD,OAAO,gBAAoB,IAAK,EAAS,CACvC3oE,IAAKA,GAAOuoE,EACZ,eAAgBK,EAAY,YAAS5kF,GACpC0kF,EAAaD,EAAS,CACvBG,UAAWA,EACXC,mBAAoBA,EACpBxnE,KAAMA,EACNH,SAAUA,IACR,CACFG,KAAMA,EACNmiE,QAAS,SAAiB16C,GAExB,GADI4/C,EAAYlF,SAASkF,EAAYlF,QAAQ16C,GACzCggD,GAAehgD,GAAQ,CACzBA,EAAMigD,iBACN,IAAIC,EAAgBppF,EACpB,GAAuB,kBAAZA,GAAyBgpF,EAAW,CAC7C,IAAIK,EAAkB,EAAS,CAAC,EAAG/nE,EAASc,OAE1CknE,GADMD,EAAgBv0F,IACV6oB,EAAyB0rE,EAAiB,CAAC,SFrL1BE,EEsLA,EAAS,CAAC,EAAGnnE,GFtLPonE,EEsLeF,EAApDF,GFrLRK,EAAW31F,OAAOD,KAAK01F,IACX50F,SAAWb,OAAOD,KAAK21F,GAAM70F,QAAU80F,EAASC,OAAM,SAAU50F,GAC9E,OAAO00F,EAAKlpE,eAAexrB,IAAQy0F,EAAKz0F,KAAS00F,EAAK10F,EACxD,GEmLU,CACAguB,EAASrB,EAAM,CACbW,MAAOA,EACPpiB,QAASopF,GAEb,CF5LW,IAAwBG,EAAMC,EAC7CC,CE4LE,IAEJ,GACF,GACF,IAKA,SAASE,EAAgB3lE,GACvBhb,KAAKgb,IAAMA,CACb,CANAg0D,EAAKx3D,YAAc,OAOnB,IAAIkmE,EAAa,SAAoBjvF,GACnC,OAAOA,aAAakyF,CACtB,EACIC,EAAa,SAAoB7mE,GACnC,MAAM,IAAI4mE,EAAgB5mE,EAC5B,EACI8mE,EAAe,SAAUC,GAE3B,SAASD,IAEP,OADA9gF,EAAgBC,KAAM6gF,GACfvsB,EAA2Bt0D,KAAM8gF,EAAkBx1F,MAAM0U,KAAMtU,WACxE,CAoCA,OAxCA0oE,EAAUysB,EAAcC,GAOxBD,EAAar0F,UAAU0uD,kBAAoB,WACzC,IAAI6lC,EAAU/gF,KAAKtT,MACjBotB,EAAWinE,EAAQjnE,SACnBC,EAAKgnE,EAAQhnE,GAEbinE,GADOD,EAAQzyF,KACGyyF,EAAQ/pF,SAC1BA,OAA8BoE,IAApB4lF,GAAuCA,EACjD5nE,EAAQ2nE,EAAQ3nE,MAEhB4zC,GADU+zB,EAAQE,QACRF,EAAQ/zB,SAClBtgE,EAAQioB,EAAyBosE,EAAS,CAAC,WAAY,KAAM,OAAQ,UAAW,QAAS,UAAW,YACtGj/E,QAAQwD,UAAUyG,MAAK,WACrB,IAAIm1E,EAAa57E,EAAQyU,EAAIizC,GAC7BlzC,EAAS2iE,EAAayE,EAAYx0F,GAAQ,CACxCsK,QAASA,EACToiB,MAAOA,GAEX,GACF,EACAynE,EAAar0F,UAAU2f,OAAS,WAC9B,IAAIg1E,EAAUnhF,KAAKtT,MAEjBqtB,GADWonE,EAAQrnE,SACdqnE,EAAQpnE,IAIbknE,GAHOE,EAAQ7yF,KACL6yF,EAAQnqF,QACVmqF,EAAQ/nE,MACN+nE,EAAQF,SAClBj0B,EAAUm0B,EAAQn0B,QAClBtgE,EAAQioB,EAAyBwsE,EAAS,CAAC,WAAY,KAAM,OAAQ,UAAW,QAAS,UAAW,YAClGD,EAAa57E,EAAQyU,EAAIizC,GAE7B,OADKi0B,GAASL,EAAWnE,EAAayE,EAAYx0F,IAC3C,IACT,EACOm0F,CACT,CA1CmB,CA0CjB,aACEO,EAAW,SAAkB10F,GAC/B,OAAO,gBAAoBqgE,EAAYO,SAAU,MAAM,SAAU5I,GAC/D,IAAIsI,EAAUtI,EAAMsI,QACpB,OAAO,gBAAoBI,EAAU,MAAM,SAAU2wB,GACnD,OAAO,gBAAoB8C,EAAc,EAAS,CAAC,EAAG9C,EAAiB,CACrE/wB,QAASA,GACRtgE,GACL,GACF,GACF,EAII20F,EAAQ,SAAet8B,GACzB,IAAIzzC,EAAOyzC,EAAMzzC,KACfpX,EAAW6qD,EAAM7qD,SACnB,OAAO,gBAAoB6yD,EAAYO,SAAU,MAAM,SAAUg0B,GAC/D,IAAIt0B,EAAUs0B,EAAMt0B,QACpB,OAAO,gBAAoBI,EAAU,MAAM,SAAUm0B,GACnD,IAAIznE,EAAWynE,EAAOznE,SACpBxB,EAAWipE,EAAOjpE,SAChBkpE,EAAel8E,EAAQgM,EAAM07C,GAC7B7xD,EAASqH,EAAMg/E,EAAclpE,EAASS,UAC1C,OAAO7e,EAAS,CACd4f,SAAUA,EACVxB,SAAUA,EACV9V,MAAOrH,EAAS,EAAS,CAAC,EAAGA,EAAO0G,OAAQ,CAC1CmZ,IAAK7f,EAAO6f,IACZ1J,KAAMA,IACH,MAET,GACF,GACF,EAKI4qC,GAAc,WAChB,IAAI95B,GAAU,IAAAg6B,YAAW+gC,GACzB,IAAK/6D,EACH,MAAM,IAAI4B,MAAM,8JAElB,OAAO5B,EAAQ9J,QACjB,EACImpE,GAAc,WAChB,IAAIr/D,GAAU,IAAAg6B,YAAW2Q,GACzB,IAAK3qC,EACH,MAAM,IAAI4B,MAAM,0JAElB,OAAO5B,EAAQtI,QACjB,EACI4nE,GAAY,WACd,IAAIt/D,GAAU,IAAAg6B,YAAW2Q,GACzB,IAAK3qC,EACH,MAAM,IAAI4B,MAAM,4JAElB,IAAI1L,EAAW4jC,KACXqB,EAAU/6C,EAAM4f,EAAQ6qC,SAAU30C,EAASS,UAC/C,OAAOwkC,EAAUA,EAAQ17C,OAAS,IACpC,EACI8/E,GAAW,SAAkBrwE,GAC/B,IAAKA,EACH,MAAM,IAAI0S,MAAM,4EAElB,IAAI5B,GAAU,IAAAg6B,YAAW2Q,GACzB,IAAK3qC,EACH,MAAM,IAAI4B,MAAM,2JAElB,IAAI1L,EAAW4jC,KACXslC,EAAel8E,EAAQgM,EAAM8Q,EAAQ4qC,SACrC7xD,EAASqH,EAAMg/E,EAAclpE,EAASS,UAC1C,OAAO5d,EAAS,EAAS,CAAC,EAAGA,EAAO0G,OAAQ,CAC1CmZ,IAAK7f,EAAO6f,IACZ1J,KAAMA,IACH,IACP,EAIIswE,GAAe,SAAsB7qF,GACvC,OAAOA,EAAIC,QAAQ,eAAgB,GACrC,EACIqnF,GAAc,SAASA,EAAYpxB,GACrC,OAAO,SAAU74D,GACf,IAAKA,EACH,OAAO,KAET,GAAIA,EAAQiV,OAAS,YAAkBjV,EAAQ1H,MAAMwN,SACnD,OAAO,WAAe1G,IAAIY,EAAQ1H,MAAMwN,SAAUmkF,EAAYpxB,IFnZ7C,IAA0B3+D,EAAMyrB,EACjD9uB,EEuZF,GAHEmJ,EAAQ1H,MAAM4kB,MAAQld,EAAQ1H,MAAMivB,SAAWvnB,EAAQiV,OAAS+3E,GAAuN,KAAU,GAChShtF,EAAQiV,OAAS+3E,GAAchtF,EAAQ1H,MAAM4B,MAAS8F,EAAQ1H,MAAMqtB,IAAqN,KAAU,GACnS3lB,EAAQiV,OAAS+3E,IFvZyB9yF,EEuZK8F,EAAQ1H,MAAM4B,KFvZbyrB,EEuZmB3lB,EAAQ1H,MAAMqtB,GFtZlF9uB,EAAS,SAAgBkyB,GAC3B,OAAOD,EAAUC,EACnB,EACiBlB,EAAW3tB,GAAMrD,OAAOA,GAAQuyB,OAAOnjB,KAAK,OAC9C4hB,EAAWlC,GAAI9uB,OAAOA,GAAQuyB,OAAOnjB,KAAK,OEkZyQ,KAAU,GACtUjG,EAAQ1H,MAAMivB,QAChB,MAAO,CACL7uB,MAAOsH,EACPunB,SAAS,GAGb,IAAIkmE,EAAcztF,EAAQiV,OAAS+3E,EAAWhtF,EAAQ1H,MAAM4B,KAAO8F,EAAQ1H,MAAM4kB,KAC7EA,EAAuB,MAAhBuwE,EAAsB50B,EAAW20B,GAAa30B,GAAY,IAAM20B,GAAaC,GACxF,MAAO,CACL/0F,MAAOsH,EACPunB,QAASvnB,EAAQ1H,MAAMivB,QACvBrK,KAAMld,EAAQ1H,MAAMwN,SAAW0nF,GAAatwE,GAAQ,KAAOA,EAE/D,CACF,EACI4uE,GAAiB,SAAwBhgD,GAC3C,OAAQA,EAAM4hD,kBAAqC,IAAjB5hD,EAAM6hD,UAAkB7hD,EAAM8hD,SAAW9hD,EAAM+hD,QAAU/hD,EAAMgiD,SAAWhiD,EAAMiiD,SACpH,C,gCCtjBAvkE,EAAOrC,QA5BS,SAAS6mE,EAAW9e,EAAQhoE,EAAGC,EAAGC,EAAG7F,EAAG9F,EAAG6b,GAOzD,IAAK02E,EAAW,CACd,IAAI58E,EACJ,QAAepK,IAAXkoE,EACF99D,EAAQ,IAAIwe,MACV,qIAGG,CACL,IAAI7iB,EAAO,CAAC7F,EAAGC,EAAGC,EAAG7F,EAAG9F,EAAG6b,GACvB22E,EAAW,GACf78E,EAAQ,IAAIwe,MACVs/C,EAAOtsE,QAAQ,OAAO,WAAa,OAAOmK,EAAKkhF,IAAa,MAExDvzF,KAAO,qBACf,CAGA,MADA0W,EAAM88E,YAAc,EACd98E,CACR,CACF,C,uBC9CA,IAGInZ,EAHO,EAAQ,MAGDA,OAElBuxB,EAAOrC,QAAUlvB,C,mBCejBuxB,EAAOrC,QAXP,SAAkB9kB,EAAO8rF,GAKvB,IAJA,IAAI/yE,GAAS,EACT7jB,EAAkB,MAAT8K,EAAgB,EAAIA,EAAM9K,OACnCwP,EAASlO,MAAMtB,KAEV6jB,EAAQ7jB,GACfwP,EAAOqU,GAAS+yE,EAAS9rF,EAAM+Y,GAAQA,EAAO/Y,GAEhD,OAAO0E,CACT,C,mBCPAyiB,EAAOrC,QAJP,SAAsB1f,GACpB,OAAOA,EAAOhF,MAAM,GACtB,C,uBCTA,IAAIxK,EAAS,EAAQ,MACjBm2F,EAAY,EAAQ,MACpB90D,EAAiB,EAAQ,MAOzB+0D,EAAiBp2F,EAASA,EAAOq2F,iBAActnF,EAkBnDwiB,EAAOrC,QATP,SAAoBzuB,GAClB,OAAa,MAATA,OACesO,IAAVtO,EAdQ,qBADL,gBAiBJ21F,GAAkBA,KAAkB33F,OAAOgC,GAC/C01F,EAAU11F,GACV4gC,EAAe5gC,EACrB,C,mBCKA8wB,EAAOrC,QArBP,SAAmB9kB,EAAOs3B,EAAOloB,GAC/B,IAAI2J,GAAS,EACT7jB,EAAS8K,EAAM9K,OAEfoiC,EAAQ,IACVA,GAASA,EAAQpiC,EAAS,EAAKA,EAASoiC,IAE1CloB,EAAMA,EAAMla,EAASA,EAASka,GACpB,IACRA,GAAOla,GAETA,EAASoiC,EAAQloB,EAAM,EAAMA,EAAMkoB,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAI5yB,EAASlO,MAAMtB,KACV6jB,EAAQ7jB,GACfwP,EAAOqU,GAAS/Y,EAAM+Y,EAAQue,GAEhC,OAAO5yB,CACT,C,sBC5BA,IAAI9O,EAAS,EAAQ,MACjBs2F,EAAW,EAAQ,MACnBz1F,EAAU,EAAQ,MAClBshC,EAAW,EAAQ,MAMnBo0D,EAAcv2F,EAASA,EAAOG,eAAY4O,EAC1CynF,EAAiBD,EAAcA,EAAYh0F,cAAWwM,EA0B1DwiB,EAAOrC,QAhBP,SAASunE,EAAah2F,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAII,EAAQJ,GAEV,OAAO61F,EAAS71F,EAAOg2F,GAAgB,GAEzC,GAAIt0D,EAAS1hC,GACX,OAAO+1F,EAAiBA,EAAen1F,KAAKZ,GAAS,GAEvD,IAAIqO,EAAUrO,EAAQ,GACtB,MAAkB,KAAVqO,GAAkB,EAAIrO,IA3BjB,SA2BwC,KAAOqO,CAC9D,C,sBClCA,IAAI2yB,EAAY,EAAQ,MAiBxBlQ,EAAOrC,QANP,SAAmB9kB,EAAOs3B,EAAOloB,GAC/B,IAAIla,EAAS8K,EAAM9K,OAEnB,OADAka,OAAczK,IAARyK,EAAoBla,EAASka,GAC1BkoB,GAASloB,GAAOla,EAAU8K,EAAQq3B,EAAUr3B,EAAOs3B,EAAOloB,EACrE,C,uBCfA,IAAIk9E,EAAY,EAAQ,KACpBC,EAAa,EAAQ,MACrBC,EAAgB,EAAQ,MACxBr0F,EAAW,EAAQ,MA6BvBgvB,EAAOrC,QApBP,SAAyB2nE,GACvB,OAAO,SAASrnF,GACdA,EAASjN,EAASiN,GAElB,IAAIsnF,EAAaH,EAAWnnF,GACxBonF,EAAcpnF,QACdT,EAEA8Z,EAAMiuE,EACNA,EAAW,GACXtnF,EAAOic,OAAO,GAEdsrE,EAAWD,EACXJ,EAAUI,EAAY,GAAG9oF,KAAK,IAC9BwB,EAAOhN,MAAM,GAEjB,OAAOqmB,EAAIguE,KAAgBE,CAC7B,CACF,C,uBC7BA,IAAIC,EAA8B,iBAAV,EAAAxzD,GAAsB,EAAAA,GAAU,EAAAA,EAAO/kC,SAAWA,QAAU,EAAA+kC,EAEpFjS,EAAOrC,QAAU8nE,C,uBCHjB,IAAIh3F,EAAS,EAAQ,MAGjBi3F,EAAcx4F,OAAO0B,UAGrB8qB,EAAiBgsE,EAAYhsE,eAO7BisE,EAAuBD,EAAY10F,SAGnC6zF,EAAiBp2F,EAASA,EAAOq2F,iBAActnF,EA6BnDwiB,EAAOrC,QApBP,SAAmBzuB,GACjB,IAAI02F,EAAQlsE,EAAe5pB,KAAKZ,EAAO21F,GACnC3oF,EAAMhN,EAAM21F,GAEhB,IACE31F,EAAM21F,QAAkBrnF,EACxB,IAAIqoF,GAAW,CACjB,CAAE,MAAO5zF,GAAI,CAEb,IAAIsL,EAASooF,EAAqB71F,KAAKZ,GAQvC,OAPI22F,IACED,EACF12F,EAAM21F,GAAkB3oF,SAEjBhN,EAAM21F,IAGVtnF,CACT,C,mBC1CA,IAWIuoF,EAAezrF,OAAO,uFAa1B2lB,EAAOrC,QAJP,SAAoB1f,GAClB,OAAO6nF,EAAa30F,KAAK8M,EAC3B,C,mBCtBA,IAOI0nF,EAPcz4F,OAAO0B,UAOcoC,SAavCgvB,EAAOrC,QAJP,SAAwBzuB,GACtB,OAAOy2F,EAAqB71F,KAAKZ,EACnC,C,uBCnBA,IAAIu2F,EAAa,EAAQ,MAGrBM,EAA0B,iBAARzvB,MAAoBA,MAAQA,KAAKppE,SAAWA,QAAUopE,KAGxE7oD,EAAOg4E,GAAcM,GAAYC,SAAS,cAATA,GAErChmE,EAAOrC,QAAUlQ,C,uBCRjB,IAAIw4E,EAAe,EAAQ,MACvBb,EAAa,EAAQ,MACrBc,EAAiB,EAAQ,KAe7BlmE,EAAOrC,QANP,SAAuB1f,GACrB,OAAOmnF,EAAWnnF,GACdioF,EAAejoF,GACfgoF,EAAahoF,EACnB,C,kBCdA,IAAIkoF,EAAgB,kBAQhBC,EAAW,IAAMD,EAAgB,IACjCE,EAAU,kDACVC,EAAS,2BAETC,EAAc,KAAOJ,EAAgB,IACrCK,EAAa,kCACbC,EAAa,qCAIbC,EAPa,MAAQL,EAAU,IAAMC,EAAS,IAOtB,IACxBK,EAAW,oBAEXC,EAAQD,EAAWD,GADP,gBAAwB,CAACH,EAAaC,EAAYC,GAAYhqF,KAAK,KAAO,IAAMkqF,EAAWD,EAAW,MAElHG,EAAW,MAAQ,CAACN,EAAcF,EAAU,IAAKA,EAASG,EAAYC,EAAYL,GAAU3pF,KAAK,KAAO,IAGxGqqF,EAAYzsF,OAAOisF,EAAS,MAAQA,EAAS,KAAOO,EAAWD,EAAO,KAa1E5mE,EAAOrC,QAJP,SAAwB1f,GACtB,OAAOA,EAAO2G,MAAMkiF,IAAc,EACpC,C,uBCrCA,IAAI91F,EAAW,EAAQ,MACnB+1F,EAAa,EAAQ,MAqBzB/mE,EAAOrC,QAJP,SAAoB1f,GAClB,OAAO8oF,EAAW/1F,EAASiN,GAAQyT,cACrC,C,mBCGA,IAAIpiB,EAAUD,MAAMC,QAEpB0wB,EAAOrC,QAAUruB,C,mBCGjB0wB,EAAOrC,QAJP,SAAsBzuB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,C,uBC1BA,IAAI83F,EAAa,EAAQ,MACrBr2D,EAAe,EAAQ,MA2B3B3Q,EAAOrC,QALP,SAAkBzuB,GAChB,MAAuB,iBAATA,GACXyhC,EAAazhC,IArBF,mBAqBY83F,EAAW93F,EACvC,C,kBCPA8wB,EAAOrC,QALP,SAAc9kB,GACZ,IAAI9K,EAAkB,MAAT8K,EAAgB,EAAIA,EAAM9K,OACvC,OAAOA,EAAS8K,EAAM9K,EAAS,QAAKyP,CACtC,C,uBCjBA,IAAI0nF,EAAe,EAAQ,KA2B3BllE,EAAOrC,QAJP,SAAkBzuB,GAChB,OAAgB,MAATA,EAAgB,GAAKg2F,EAAah2F,EAC3C,C,uBCzBA,IAmBI63F,EAnBkB,EAAQ,KAmBbE,CAAgB,eAEjCjnE,EAAOrC,QAAUopE,C,mBChBjB/mE,EAAOrC,QALP,SAA2BvuB,EAAKgC,IACnB,MAAPA,GAAeA,EAAMhC,EAAIrB,UAAQqD,EAAMhC,EAAIrB,QAC/C,IAAK,IAAIF,EAAI,EAAGwD,EAAO,IAAIhC,MAAM+B,GAAMvD,EAAIuD,EAAKvD,IAAKwD,EAAKxD,GAAKuB,EAAIvB,GACnE,OAAOwD,CACT,EACoC2uB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCFzGqC,EAAOrC,QAHP,SAAyBvuB,GACvB,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CACjC,EACkC4wB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCGvGqC,EAAOrC,QANP,SAAgC24C,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAE3B,OAAOD,CACT,EACyCt2C,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCD9GqC,EAAOrC,QALP,SAAyB1b,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI9R,UAAU,oCAExB,EACkC4vB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,uBCLvG,IAAIi5C,EAAgB,EAAQ,MAC5B,SAAS/nE,EAAkBjB,EAAQkB,GACjC,IAAK,IAAIjB,EAAI,EAAGA,EAAIiB,EAAMf,OAAQF,IAAK,CACrC,IAAIkB,EAAaD,EAAMjB,GACvBkB,EAAWvB,WAAauB,EAAWvB,aAAc,EACjDuB,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD/B,OAAOoB,eAAeV,EAAQgpE,EAAc7nE,EAAWb,KAAMa,EAC/D,CACF,CASAixB,EAAOrC,QARP,SAAsBzb,EAAaI,EAAYC,GAM7C,OALID,GAAYzT,EAAkBqT,EAAYtT,UAAW0T,GACrDC,GAAa1T,EAAkBqT,EAAaK,GAChDrV,OAAOoB,eAAe4T,EAAa,YAAa,CAC9CjT,UAAU,IAELiT,CACT,EAC+B8d,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,uBClBpG,IAAIi5C,EAAgB,EAAQ,MAe5B52C,EAAOrC,QAdP,SAAyBnvB,EAAKN,EAAKgB,GAYjC,OAXAhB,EAAM0oE,EAAc1oE,MACTM,EACTtB,OAAOoB,eAAeE,EAAKN,EAAK,CAC9BgB,MAAOA,EACP1B,YAAY,EACZwB,cAAc,EACdC,UAAU,IAGZT,EAAIN,GAAOgB,EAENV,CACT,EACkCwxB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,kBCfvG,SAASrD,IAYP,OAXA0F,EAAOrC,QAAUrD,EAAWptB,OAAOqtB,OAASrtB,OAAOqtB,OAAOzkB,OAAS,SAAUlI,GAC3E,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GACvB,IAAK,IAAIK,KAAOF,EACVd,OAAO0B,UAAU8qB,eAAe5pB,KAAK9B,EAAQE,KAC/CN,EAAOM,GAAOF,EAAOE,GAG3B,CACA,OAAON,CACT,EAAGoyB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,QACjErD,EAAS5sB,MAAM0U,KAAMtU,UAC9B,CACAkyB,EAAOrC,QAAUrD,EAAU0F,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,uBCdhG,IAAI84C,EAAiB,EAAQ,MAM7Bz2C,EAAOrC,QALP,SAAwBi3B,EAAUC,GAChCD,EAAShmD,UAAY1B,OAAOw3B,OAAOmwB,EAAWjmD,WAC9CgmD,EAAShmD,UAAUD,YAAcimD,EACjC6hB,EAAe7hB,EAAUC,EAC3B,EACiC70B,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCDtGqC,EAAOrC,QALP,SAAgCnvB,GAC9B,OAAOA,GAAOA,EAAIsvB,WAAatvB,EAAM,CACnC,QAAWA,EAEf,EACyCwxB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCsB9GqC,EAAOrC,QA3BP,SAA+B3H,EAAGyI,GAChC,IAAIiP,EAAI,MAAQ1X,EAAI,KAAO,oBAAsBvnB,QAAUunB,EAAEvnB,OAAOC,WAAasnB,EAAE,cACnF,GAAI,MAAQ0X,EAAG,CACb,IAAIz7B,EACFlB,EACAlD,EACAmkC,EACAt0B,EAAI,GACJoQ,GAAI,EACJjd,GAAI,EACN,IACE,GAAIhD,GAAK6/B,EAAIA,EAAE59B,KAAKkmB,IAAIjmB,KAAM,IAAM0uB,EAAG,CACrC,GAAIvxB,OAAOwgC,KAAOA,EAAG,OACrB5f,GAAI,CACN,MAAO,OAASA,GAAK7b,EAAIpE,EAAEiC,KAAK49B,IAAI19B,QAAU0N,EAAEjQ,KAAKwE,EAAE/C,OAAQwO,EAAE3P,SAAW0wB,GAAI3Q,GAAI,GACtF,CAAE,MAAOkI,GACPnlB,GAAI,EAAIE,EAAIilB,CACd,CAAE,QACA,IACE,IAAKlI,GAAK,MAAQ4f,EAAU,SAAMsE,EAAItE,EAAU,SAAKxgC,OAAO8kC,KAAOA,GAAI,MACzE,CAAE,QACA,GAAInhC,EAAG,MAAME,CACf,CACF,CACA,OAAO2M,CACT,CACF,EACwCsiB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCxB7GqC,EAAOrC,QAHP,WACE,MAAM,IAAIvtB,UAAU,4IACtB,EACmC4vB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCAxGqC,EAAOrC,QAHP,SAAmCnvB,GACjC,GAAW,MAAPA,EAAa,MAAM,IAAI4B,UAAU,sBAAwB5B,EAC/D,EAC4CwxB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,sBCHjH,IAAIupE,EAA+B,EAAQ,MAgB3ClnE,EAAOrC,QAfP,SAAkC3vB,EAAQgpB,GACxC,GAAc,MAAVhpB,EAAgB,MAAO,CAAC,EAC5B,IACIE,EAAKL,EADLD,EAASs5F,EAA6Bl5F,EAAQgpB,GAElD,GAAI9pB,OAAOC,sBAAuB,CAChC,IAAIgqB,EAAmBjqB,OAAOC,sBAAsBa,GACpD,IAAKH,EAAI,EAAGA,EAAIspB,EAAiBppB,OAAQF,IACvCK,EAAMipB,EAAiBtpB,GACnBmpB,EAAS5jB,QAAQlF,IAAQ,GACxBhB,OAAO0B,UAAUwoB,qBAAqBtnB,KAAK9B,EAAQE,KACxDN,EAAOM,GAAOF,EAAOE,GAEzB,CACA,OAAON,CACT,EAC2CoyB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCJhHqC,EAAOrC,QAZP,SAAuC3vB,EAAQgpB,GAC7C,GAAc,MAAVhpB,EAAgB,MAAO,CAAC,EAC5B,IAEIE,EAAKL,EAFLD,EAAS,CAAC,EACVqpB,EAAa/pB,OAAOD,KAAKe,GAE7B,IAAKH,EAAI,EAAGA,EAAIopB,EAAWlpB,OAAQF,IACjCK,EAAM+oB,EAAWppB,GACbmpB,EAAS5jB,QAAQlF,IAAQ,IAC7BN,EAAOM,GAAOF,EAAOE,IAEvB,OAAON,CACT,EACgDoyB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCZrH,SAASwpE,EAAgBt2F,EAAGkX,GAK1B,OAJAiY,EAAOrC,QAAUwpE,EAAkBj6F,OAAOupE,eAAiBvpE,OAAOupE,eAAe3gE,OAAS,SAAyBjF,EAAGkX,GAEpH,OADAlX,EAAEikD,UAAY/sC,EACPlX,CACT,EAAGmvB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,QACjEwpE,EAAgBt2F,EAAGkX,EAC5B,CACAiY,EAAOrC,QAAUwpE,EAAiBnnE,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,uBCPvG,IAAIypE,EAAiB,EAAQ,MACzBC,EAAuB,EAAQ,MAC/BplC,EAA6B,EAAQ,MACrCqlC,EAAkB,EAAQ,MAI9BtnE,EAAOrC,QAHP,SAAwBvuB,EAAKvB,GAC3B,OAAOu5F,EAAeh4F,IAAQi4F,EAAqBj4F,EAAKvB,IAAMo0D,EAA2B7yD,EAAKvB,IAAMy5F,GACtG,EACiCtnE,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,uBCPtG,IAAIpvB,EAAU,gBAWdyxB,EAAOrC,QAVP,SAAsBgQ,EAAO45D,GAC3B,GAAuB,WAAnBh5F,EAAQo/B,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAI65D,EAAO75D,EAAMl/B,OAAOg5F,aACxB,QAAajqF,IAATgqF,EAAoB,CACtB,IAAI7qE,EAAM6qE,EAAK13F,KAAK69B,EAAO45D,GAAQ,WACnC,GAAqB,WAAjBh5F,EAAQouB,GAAmB,OAAOA,EACtC,MAAM,IAAIvsB,UAAU,+CACtB,CACA,OAAiB,WAATm3F,EAAoBrvC,OAASwrB,QAAQ/1C,EAC/C,EAC+B3N,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,uBCXpG,IAAIpvB,EAAU,gBACVk5F,EAAc,EAAQ,MAK1BznE,EAAOrC,QAJP,SAAwB+pE,GACtB,IAAIx5F,EAAMu5F,EAAYC,EAAK,UAC3B,MAAwB,WAAjBn5F,EAAQL,GAAoBA,EAAMgqD,OAAOhqD,EAClD,EACiC8xB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,mBCNtG,SAASpvB,EAAQsC,GAGf,OAAQmvB,EAAOrC,QAAUpvB,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUmC,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBpC,QAAUoC,EAAElC,cAAgBF,QAAUoC,IAAMpC,OAAOG,UAAY,gBAAkBiC,CACpH,EAAGmvB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,QAAUpvB,EAAQsC,EAC5F,CACAmvB,EAAOrC,QAAUpvB,EAASyxB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,uBCT/F,IAAIokC,EAAmB,EAAQ,MAS/B/hC,EAAOrC,QARP,SAAqC9sB,EAAGC,GACtC,GAAKD,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAOkxD,EAAiBlxD,EAAGC,GACtD,IAAIC,EAAI7D,OAAO0B,UAAUoC,SAASlB,KAAKe,GAAGI,MAAM,GAAI,GAEpD,MADU,WAANF,GAAkBF,EAAElC,cAAaoC,EAAIF,EAAElC,YAAYuC,MAC7C,QAANH,GAAqB,QAANA,EAAoB1B,MAAMqB,KAAKG,GACxC,cAANE,GAAqB,2CAA2CI,KAAKJ,GAAWgxD,EAAiBlxD,EAAGC,QAAxG,CALc,CAMhB,EAC8CkvB,EAAOrC,QAAQG,YAAa,EAAMkC,EAAOrC,QAAiB,QAAIqC,EAAOrC,O,kCCPnHzwB,OAAOoB,eAAeqvB,EAAS,aAA/B,CAA+CzuB,OAAO,IA6CtDyuB,EAAQgqE,YAVY,iBAWpBhqE,EAAQqR,iBAHkBr3B,GAvCJ,EAACA,EAAQiwF,KAC3B,MAAM,QAAEt5D,EAAU,MAAOu5D,GAAmBlwF,GAAU,CAAC,EACjDmwF,EAAYp9D,KAAKC,UAAUk9D,GAAgB,CAACzxE,EAAGvU,KAChC,mBAANA,IACPA,EAAIq2C,OAAOr2C,IACL0Q,WAAW6D,EAAI,OACjBvU,EAAI,YAAcA,GAGnBA,KAEX,MAAO,CACH,uBACA3U,OAAOD,KAAK46F,GAAgB95F,OAAS,EAC/B,iCAAiC+5F,MACjC,mBACN,kBACAx5D,EAAQvgC,OAAS,EAAI,WAAW28B,KAAKC,UAAU2D,MAAc,GAC7D,oCACAs5D,GACFnrF,KAAK,GAAG,EAmBuBsrF,CAAcpwF,EAzC1B,82C,mCCJV,SAASpH,EAAkBnB,EAAKgC,IAClC,MAAPA,GAAeA,EAAMhC,EAAIrB,UAAQqD,EAAMhC,EAAIrB,QAC/C,IAAK,IAAIF,EAAI,EAAGwD,EAAO,IAAIhC,MAAM+B,GAAMvD,EAAIuD,EAAKvD,IAAKwD,EAAKxD,GAAKuB,EAAIvB,GACnE,OAAOwD,CACT,C,iHCHA,SAASxC,EAAkBjB,EAAQkB,GACjC,IAAK,IAAIjB,EAAI,EAAGA,EAAIiB,EAAMf,OAAQF,IAAK,CACrC,IAAIkB,EAAaD,EAAMjB,GACvBkB,EAAWvB,WAAauB,EAAWvB,aAAc,EACjDuB,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD/B,OAAOoB,eAAeV,GAAQ,OAAcmB,EAAWb,KAAMa,EAC/D,CACF,CACe,SAASqmE,EAAalzD,EAAaI,EAAYC,GAM5D,OALID,GAAYzT,EAAkBqT,EAAYtT,UAAW0T,GACrDC,GAAa1T,EAAkBqT,EAAaK,GAChDrV,OAAOoB,eAAe4T,EAAa,YAAa,CAC9CjT,UAAU,IAELiT,CACT,C,oCCjBe,SAASoY,IAYtB,OAXAA,EAAWptB,OAAOqtB,OAASrtB,OAAOqtB,OAAOzkB,OAAS,SAAUlI,GAC1D,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GACvB,IAAK,IAAIK,KAAOF,EACVd,OAAO0B,UAAU8qB,eAAe5pB,KAAK9B,EAAQE,KAC/CN,EAAOM,GAAOF,EAAOE,GAG3B,CACA,OAAON,CACT,EACO0sB,EAAS5sB,MAAM0U,KAAMtU,UAC9B,C,iHCZe,SAASu6D,EAAezT,EAAUC,GAC/CD,EAAShmD,UAAY1B,OAAOw3B,OAAOmwB,EAAWjmD,WAC9CgmD,EAAShmD,UAAUD,YAAcimD,GACjC,OAAeA,EAAUC,EAC3B,C,oCCLe,SAASlkD,EAAiBF,GACvC,GAAsB,oBAAXhC,QAAmD,MAAzBgC,EAAKhC,OAAOC,WAA2C,MAAtB+B,EAAK,cAAuB,OAAOpB,MAAMqB,KAAKD,EACtH,C,mECFe,SAAS02F,EAAgBt2F,EAAGkX,GAKzC,OAJAo/E,EAAkBj6F,OAAOupE,eAAiBvpE,OAAOupE,eAAe3gE,OAAS,SAAyBjF,EAAGkX,GAEnG,OADAlX,EAAEikD,UAAY/sC,EACPlX,CACT,EACOs2F,EAAgBt2F,EAAGkX,EAC5B,C,kECNe,SAASigF,EAAuBC,EAAS/1D,GAItD,OAHKA,IACHA,EAAM+1D,EAAQh3F,MAAM,IAEf/D,OAAOg7F,OAAOh7F,OAAOmB,iBAAiB45F,EAAS,CACpD/1D,IAAK,CACHhjC,MAAOhC,OAAOg7F,OAAOh2D,MAG3B,C,iHCPe,SAASi2D,EAAeT,GACrC,IAAIx5F,ECFS,SAAsBy/B,EAAO45D,GAC1C,GAAuB,YAAnB,OAAQ55D,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAI65D,EAAO75D,EAAMl/B,OAAOg5F,aACxB,QAAajqF,IAATgqF,EAAoB,CACtB,IAAI7qE,EAAM6qE,EAAK13F,KAAK69B,EAAO45D,GAAQ,WACnC,GAAqB,YAAjB,OAAQ5qE,GAAmB,OAAOA,EACtC,MAAM,IAAIvsB,UAAU,+CACtB,CACA,OAAiB,WAATm3F,EAAoBrvC,OAASwrB,QAAQ/1C,EAC/C,CDPY,CAAY+5D,EAAK,UAC3B,MAAwB,YAAjB,OAAQx5F,GAAoBA,EAAMgqD,OAAOhqD,EAClD,C,oCELe,SAASK,EAAQsC,GAG9B,OAAOtC,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUmC,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBpC,QAAUoC,EAAElC,cAAgBF,QAAUoC,IAAMpC,OAAOG,UAAY,gBAAkBiC,CACpH,EAAGtC,EAAQsC,EACb,C,+GCPe,SAASV,EAA4BU,EAAGC,GACrD,GAAKD,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAO,OAAiBA,EAAGC,GACtD,IAAIC,EAAI7D,OAAO0B,UAAUoC,SAASlB,KAAKe,GAAGI,MAAM,GAAI,GAEpD,MADU,WAANF,GAAkBF,EAAElC,cAAaoC,EAAIF,EAAElC,YAAYuC,MAC7C,QAANH,GAAqB,QAANA,EAAoB1B,MAAMqB,KAAKG,GACxC,cAANE,GAAqB,2CAA2CI,KAAKJ,IAAW,OAAiBF,EAAGC,QAAxG,CALc,CAMhB,C,uICPiN,SAASjD,IAAI,OAAOA,EAAEX,OAAOqtB,OAAOrtB,OAAOqtB,OAAOzkB,OAAO,SAAS43B,GAAG,IAAI,IAAIz7B,EAAE,EAAEA,EAAEnE,UAAUC,OAAOkE,IAAI,CAAC,IAAIlB,EAAEjD,UAAUmE,GAAG,IAAI,IAAI+jB,KAAKjlB,EAAE7D,OAAO0B,UAAU8qB,eAAe5pB,KAAKiB,EAAEilB,KAAK0X,EAAE1X,GAAGjlB,EAAEilB,GAAG,CAAC,OAAO0X,CAAC,EAAE7/B,EAAEH,MAAM0U,KAAKtU,UAAU,CAAC,SAAS4P,EAAEgwB,GAAG,IAAIz7B,EAAEy7B,GAAG,IAAI38B,EAAE,GAAGilB,EAAE,GAAG,MAAMnlB,EAAEoB,EAAEmB,QAAQ,MAAM,IAAIvC,IAAImlB,EAAE/jB,EAAEhB,MAAMJ,GAAGoB,EAAEA,EAAEhB,MAAM,EAAEJ,IAAI,MAAMsJ,EAAElI,EAAEmB,QAAQ,KAAK,OAAO,IAAI+G,IAAIpJ,EAAEkB,EAAEhB,MAAMkJ,GAAGlI,EAAEA,EAAEhB,MAAM,EAAEkJ,IAAI,CAACghB,SAASlpB,EAAE0oB,OAAO,MAAM5pB,EAAE,GAAGA,EAAE6pB,KAAK,MAAM5E,EAAE,GAAGA,EAAE,CAAC,MAAMpY,EAAE,6BAA6B6gB,EAAEiP,IAAI,GAAG,iBAAiBA,EAAE,OAAO,CAACA,GAAG9vB,EAAEzM,KAAKu8B,GAAX,CAAeA,EAAC,EAAG3lB,EAAE,IAAmG,GAAgB,SAAS4f,EAAE+F,EAAEz7B,EAAkG,IAAkB,IAAIlB,EAAE,IAAI0tB,EAAEiP,GAAG,OAAOA,EAAE,GAAGA,EAAEnb,WAAW,OAAOmb,EAAEnb,WAAW,OAAO,OAAOmb,EAAE,MAAM1X,EAAE,OAAOjlB,EAAE,MAAMkB,EAAEA,EAAE8V,KAAKhX,EAAE,IAAI,MAAM,GAAG,MAAMilB,GAAGA,EAAE8X,SAAS,KAAK9X,EAAE/kB,MAAM,GAAG,GAAG+kB,IAAI0X,EAAEnb,WAAW,KAAKmb,EAAE,IAAIA,KAAK,CAAC,MAAM5f,EAAE4f,GAAG,MAAMA,OAAE,EAAOA,EAAEnb,WAAW,KAA4E4K,EAAE,CAACuQ,EAAEz7B,IAAI,iBAAiBy7B,EAAEA,EAAEjP,EAAEiP,GAAG5f,EAAE4f,GAAG,SAASA,GAAG,MAAMz7B,EAAE01B,EAAE+F,GAAwG,OAAOz7B,CAAC,CAAtI,CAAwIy7B,GAAG,SAASA,EAAEz7B,GAAG,GAAG6b,EAAE4f,GAAG,OAAOA,EAAE,MAAY78B,GAAE,aAAE68B,EAAEz7B,GAAG,OAAuCpB,CAAC,CAA5F,CAA8F68B,EAAEz7B,GAAGy7B,EAAE31B,EAAE,CAAC,KAAK,WAAW,UAAU,eAAe,kBAAkB,cAAc,WAAW,kBAAkB,QAAQ,UAAU,aAA2C,MAAMI,EAAE,CAACiwF,gBAAgB,SAASC,YAAY,SAASC,gBAAgB,QAAQ,SAASzmF,EAAE6rB,GAAgB,OAAO,gBAAgB,WAAE,MAAK,EAAEhT,SAAS3pB,KAAkB,gBAAgB4M,EAAE9P,EAAE,CAAC,EAAE6/B,EAAE,CAAC66D,UAAUx3F,MAAK,CAAC,MAAM4M,UAAU,YAAY,WAAAhP,CAAY++B,GAAG86D,MAAM96D,GAAGtrB,KAAKqmF,gBAAgB,EAAEpG,mBAAmB30D,EAAE00D,UAAUnwF,MAAMmQ,KAAKtT,MAAMw5F,gBAAgB56D,EAAEz7B,GAAG,CAAC+lB,UAAU,CAAC5V,KAAKtT,MAAMkpB,UAAU5V,KAAKtT,MAAMs5F,iBAAiB/6F,OAAO4hE,SAASxyD,KAAK,KAAK/B,MAAM7M,EAAE,CAAC,EAAEuU,KAAKtT,MAAM4L,MAAM0H,KAAKtT,MAAMu5F,cAAc,KAAK,IAAIp2F,GAAE,EAAG,oBAAoBJ,QAAQA,OAAO62F,uBAAuBz2F,GAAE,GAAImQ,KAAKoZ,MAAM,CAACmtE,YAAY12F,GAAGmQ,KAAKwmF,cAAc,KAAKxmF,KAAKymF,UAAUzmF,KAAKymF,UAAU/yF,KAAKsM,KAAK,CAAC,SAAA0mF,GAAY,IAAIp7D,EAAE77B,OAAO6oB,SAASS,SAAStpB,OAAO6oB,SAASC,OAAOvY,KAAKtT,MAAMy5F,WAAWnmF,KAAKtT,MAAMy5F,UAAUptE,WAAWuS,EAAEtrB,KAAKtT,MAAMy5F,UAAUptE,SAAS/Y,KAAKtT,MAAMy5F,UAAU5tE,QAAQ,MAAM1oB,EAAEyL,EAAEyf,EAAE/a,KAAKtT,MAAMqtB,GAAGuR,IAAI38B,EAAEkB,EAAEkpB,SAASlpB,EAAE0oB,OAAO,GAAG+S,IAAI38B,EAAE,OAAO69D,UAAU9M,QAAQ/wD,EAAE,CAAC,oBAAAqkD,GAAuB,IAAIhzC,KAAK2mF,GAAG,OAAO,MAAM9mF,SAASyrB,EAAEkjC,GAAG3+D,GAAGmQ,KAAK2mF,GAAG3mF,KAAKwmF,eAAexmF,KAAKwmF,cAAc7kE,QAAQ2J,EAAEs7D,UAAU/2F,GAAGy7B,EAAE9W,YAAY,CAAC,SAAAiyE,CAAUn7D,GAAGtrB,KAAKtT,MAAMizF,UAAU70F,OAAO0B,UAAU8qB,eAAe5pB,KAAKsS,KAAKtT,MAAMizF,SAAS,WAAW3/E,KAAKtT,MAAMizF,SAAShuC,QAAQrmB,EAAEtrB,KAAKtT,MAAMizF,UAAU3/E,KAAKtT,MAAMizF,SAASr0D,GAAGtrB,KAAKoZ,MAAMmtE,aAAaj7D,IAAItrB,KAAK2mF,GAAG,EAAEr7D,EAAEz7B,KAAK,MAAMlB,EAAE,IAAIc,OAAO62F,sBAAqB33F,IAAIA,EAAE9C,SAAQ8C,IAAI28B,IAAI38B,EAAEnD,QAAQqE,EAAElB,EAAEk4F,gBAAgBl4F,EAAEm4F,kBAAkB,EAAC,GAAE,IAAI,OAAOn4F,EAAE6Z,QAAQ8iB,GAAG,CAACzrB,SAASlR,EAAE6/D,GAAGljC,EAAG,EAAtK,CAAwKA,GAAEA,IAAIA,EAAEtrB,KAAKwmF,cAAcxmF,KAAK0mF,YAAY1mF,KAAKwmF,eAAexmF,KAAKwmF,cAAc7kE,OAAM,IAAI,CAAC,MAAAxV,GAAS,MAAMmf,EAAEtrB,KAAKtT,OAAOqtB,GAAGprB,EAAEkxF,SAASjsE,EAAE5T,KAAKqmF,gBAAgBzL,QAAQ7iF,EAAEk+B,aAAaz6B,EAAE4d,MAAMzT,EAAE3O,QAAQuuB,EAAE4gE,UAAUz6E,GAAG4f,EAAEsE,EAAE,SAAStE,EAAEz7B,GAAG,GAAG,MAAMy7B,EAAE,MAAM,CAAC,EAAE,IAAI38B,EAAEilB,EAAEnlB,EAAE,CAAC,EAAEsJ,EAAEjN,OAAOD,KAAKygC,GAAG,IAAI1X,EAAE,EAAEA,EAAE7b,EAAEpM,OAAOioB,IAAI/jB,EAAEmB,QAAQrC,EAAEoJ,EAAE6b,KAAK,IAAInlB,EAAEE,GAAG28B,EAAE38B,IAAI,OAAOF,CAAC,CAAjI,CAAmI68B,EAAE31B,GAAgN09B,EAAEtY,EAAEpsB,EAAE+c,EAAEqN,UAAU,OAAOsD,EAAEgX,GAAgB,gBAAgB,OAAE5nC,EAAE,CAACsuB,GAAGsZ,EAAEja,MAAMzT,EAAEk6E,SAASjsE,EAAE+rE,SAAS3/E,KAAKymF,UAAUxwD,aAAa3K,IAAI9vB,GAAGA,EAAE8vB,GAAG,MAAMz7B,EAAEyL,EAAE+3B,GAAGm5B,UAAUnH,SAASx1D,EAAEkpB,SAASlpB,EAAE0oB,OAAM,EAAGqiE,QAAQtvD,IAAI,GAAGvzB,GAAGA,EAAEuzB,KAAK,IAAIA,EAAEy2D,QAAQ/hF,KAAKtT,MAAMlB,QAAQ8/B,EAAEw2D,kBAAkBx2D,EAAE02D,SAAS12D,EAAE22D,QAAQ32D,EAAE42D,SAAS52D,EAAE62D,UAAU,CAAC72D,EAAE60D,iBAAiB,IAAItwF,EAAE01B,EAAE,MAAM52B,EAAEuqB,UAAUma,KAAK3nB,EAAEqN,SAAS,kBAAkBwM,GAAG52B,IAAIkB,GAAE,GAAIJ,OAAOi9D,YAAYr5B,EAAE,CAACja,MAAMzT,EAAE3O,QAAQnH,GAAG,CAAC,OAAM,CAAC,GAAI+/B,IAAiB,gBAAgB,IAAInkC,EAAE,CAACgtB,KAAK4a,GAAGzD,GAAG,EAAEr0B,EAAEkc,UAAUhsB,EAAE,CAAC,EAAEsK,EAAE,CAAC6kF,QAAQ,OAAO7gE,GAAG,SAASwhC,WAAWvkD,QAAQ,OAAOoiB,MAAM,WAAiB,cAAa,CAACkS,EAAE38B,IAAiB,gBAAgB8Q,EAAEhU,EAAE,CAACk0F,SAAShxF,GAAG28B,MAAK,MAAM6G,EAAE,CAAC7G,EAAEz7B,KAAKJ,OAAOi9D,YAAY3xC,EAAEuQ,EAAE77B,OAAO6oB,SAASS,UAAUlpB,EAAC,C,kQCA1zI,SAASpB,IAAI,OAAOA,EAAE3D,OAAOqtB,OAAOrtB,OAAOqtB,OAAOzkB,OAAO,SAAS43B,GAAG,IAAI,IAAIz7B,EAAE,EAAEA,EAAEnE,UAAUC,OAAOkE,IAAI,CAAC,IAAIlB,EAAEjD,UAAUmE,GAAG,IAAI,IAAI+jB,KAAKjlB,EAAE7D,OAAO0B,UAAU8qB,eAAe5pB,KAAKiB,EAAEilB,KAAK0X,EAAE1X,GAAGjlB,EAAEilB,GAAG,CAAC,OAAO0X,CAAC,EAAE78B,EAAEnD,MAAM0U,KAAKtU,UAAU,CAAC,MAAM4P,EAAE,IAAI6zB,IAAI9S,EAAE,CAAClqB,IAAIm5B,GAAGhwB,EAAEnJ,IAAIm5B,IAAI,GAAG,GAAA91B,CAAI81B,EAAEz7B,GAAG,MAAMlB,EAAE2M,EAAEnJ,IAAIm5B,IAAI,GAAG38B,EAAEtD,KAAKwE,GAAGyL,EAAE9F,IAAI81B,EAAE38B,EAAE,EAAE,OAAO28B,GAAGhwB,EAAEi2B,OAAOjG,EAAE,GAAGvzB,EAAE,oBAAoBm8D,MAAMA,KAAKtP,qBAAqBsP,KAAKtP,oBAAoBlxD,KAAKjE,SAAS,SAAS67B,GAAG,MAAMz7B,EAAEqqB,KAAKC,MAAM,OAAOhY,YAAW,WAAWmpB,EAAE,CAACy7D,YAAW,EAAGC,cAAc,WAAW,OAAO1wF,KAAKmmB,IAAI,EAAE,IAAIvC,KAAKC,MAAMtqB,GAAG,GAAG,GAAE,EAAE,EAAE,IAAI2L,EAAY8vB,KAAiF9vB,IAAIA,EAAE,CAAC,IAAnFyrF,YAAY,eAAe37D,EAAE47D,KAAK,OAAO57D,EAAE67D,cAAc,kBAA8B,MAAM17F,EAAE,IAAI8H,IAAI,CAAC,MAAM,WAAW,0BAA0B,WAAW,SAAS,YAAYq8B,EAAE,IAAIr8B,IAAIoC,EAAE,IAAIw5B,IAAI,SAASzjB,EAAE7b,GAAgB,OAAO,gBAAgB,WAAE,MAAK,IAAiB,gBAAgB8V,EAAE9V,IAAG,CAAC,SAAS8V,EAAEhX,GAAG,MAAMknD,IAAIv6C,EAAE8rF,SAAS37F,EAAE+P,EAAEyrF,aAAat4F,GAAG,CAAC,GAAGoqB,SAAS6W,IAAG,mBAAI,IAAG,gBAAE,KAAK,IAAItE,EAAE,OAAO7/B,GAAG,KAAK+P,EAAEyrF,YAAY37D,EAAEv1B,EAAEpH,GAAG,MAAM,KAAK6M,EAAE0rF,KAAKnvF,GAAE,KAAKuzB,EAAEv1B,EAAEpH,EAAC,IAAI,MAAM,KAAK6M,EAAE2rF,cAAc,CAAC,MAAM77D,EAAE/vB,EAAE5M,GAAG0tB,EAAE7mB,IAAIo6B,EAAEtE,EAAE,EAAE,MAAM,KAAK,MAAMW,OAAOp8B,EAAEw3F,aAAa14F,EAAE24F,cAAc1zE,GAAG0X,GAAG,CAAC,EAAE38B,IAAI,MAAMkB,GAAGA,EAAEiL,oBAAoB,OAAOnM,IAAIilB,IAAI,MAAM/jB,GAAGA,EAAEiL,oBAAoB,QAAQ8Y,IAAI,MAAM/jB,GAAGA,EAAEqX,QAAO,CAAC,GAAG,IAAIzb,IAAI+P,EAAE2rF,cAAc,CAAC,MAAMt3F,EAAEwjC,EAAE1kC,GAAGilB,EAAErY,EAAE5M,GAAG,MAAM,oBAAoBc,QAAQ4sB,EAAE7mB,IAAIo6B,EAAEhc,GAAgB,gBAAgB,SAAS/jB,EAAEpB,EAAE,CAAC4a,KAAK,iBAAiB,gBAAgB5d,EAAE25D,YAAY,aAAaxxC,EAAE,CAAC+iE,wBAAwB,CAACC,OAAOvjD,EAAE1kC,MAAMF,EAAE,CAAC4a,KAAK,iBAAiBwsC,IAAItwB,EAAEjqB,GAAG,gBAAgB7P,EAAE25D,YAAY,aAAaxxC,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS7d,EAAEu1B,GAAG,MAAMj1B,GAAGxG,EAAEgmD,IAAIlnD,EAAEy4F,SAASxzE,EAAEpY,EAAEyrF,YAAYM,OAAOjsF,EAAE4iC,QAAQ7hB,GAAGiP,GAAG,CAAC,EAAEvzB,EAAElI,GAAGlB,EAAElD,EAAE,CAAC,OAAO,SAASigB,EAAE,CAAC40D,KAAKhlE,EAAEkK,MAAM6W,GAAG,GAAGtkB,EAAE,CAAC,IAAI,MAAMuzB,KAAK7/B,EAAE,GAAG,MAAMigB,GAAGA,EAAE4f,GAAG,CAAC,IAAI3lB,EAAE,MAAM9V,EAAE8F,EAAExD,IAAI4F,IAAI,CAAC,GAAGyvF,UAAU74F,EAAE,KAAK,MAAMkB,OAAE,EAAOA,EAAEy7B,KAAK,CAAC,EAAE,IAAIv1B,EAAEwvB,EAAE52B,EAAEtD,KAAK,MAAMqgB,OAAE,EAAOA,EAAE4f,IAAI,MAAMz7B,GAAG,OAAO8V,EAAE9V,EAAEy7B,KAAK3lB,EAAEu6B,MAAM,MAAMx0B,GAAG,OAAO3V,EAAE2V,EAAE4f,KAAKv1B,EAAErI,KAAKge,EAAE,MAAM7b,GAAG,OAAO01B,EAAE11B,EAAEy7B,SAAI,EAAO/F,EAAE2a,OAAOvqC,EAAEH,IAAIuC,EAAEtJ,EAAE,CAAC,EAAEoB,EAAE,CAAC,CAACy7B,GAAG,CAACk8D,UAAU74F,KAAK,CAAC,GAAGihC,EAAEJ,IAAIz3B,GAAG,OAAO,IAAI,CAAC,MAAM0H,EAAE4zB,EAAE/H,GAAGtX,EAAEzY,EAAE+vB,GAAG/xB,EAAE7J,SAASoB,cAAc,UAAUjB,IAAI0J,EAAElD,GAAGxG,GAAG0J,EAAEkzB,QAAQ26D,SAASxzE,EAAE,IAAI,MAAM0X,EAAEz7B,KAAK/E,OAAOgwB,QAAQ9G,GAAGza,EAAEhB,aAAa+yB,EAAEz7B,GAAG4P,IAAIlG,EAAE8xD,YAAY5rD,GAAG9Q,IAAI4K,EAAEs8C,IAAIlnD,GAAG,MAAM+wF,EAAE,CAAC,EAAE,GAAG3nF,EAAE,CAAC,IAAI,MAAMuzB,KAAK7/B,EAAE,CAAC,MAAMoE,EAAEA,GAAGggC,EAAEhgC,EAAEkI,EAAEuzB,GAAG/xB,EAAE1I,iBAAiBy6B,EAAEz7B,GAAG6vF,EAAE,GAAGp0D,aAAaz7B,CAAC,CAAC+/B,EAAEn8B,IAAIsE,EAAE,CAAC,OAAOrI,SAAS+3F,KAAKjhF,YAAYjN,GAAG,CAAC0yB,OAAO1yB,EAAE8tF,aAAa3H,EAAE2H,aAAaC,cAAc5H,EAAE4H,cAAc,CAAC,SAASj0D,EAAE/H,GAAG,MAAMqrD,wBAAwB9mF,EAAEqK,SAASvL,EAAE,IAAI28B,GAAG,CAAC,GAAGsrD,OAAOhjE,EAAE,IAAI/jB,GAAG,CAAC,EAAE,OAAO+jB,GAAGjlB,CAAC,CAAC,SAAS4M,EAAE+vB,GAAG,MAAMz7B,EAAE,CAAC,EAAE,IAAI,MAAMlB,EAAEilB,KAAK9oB,OAAOgwB,QAAQwQ,GAAG7/B,EAAE+jC,IAAI7gC,KAAKkB,EAAElB,GAAGilB,GAAG,OAAO/jB,CAAC,CAAC,SAAS01B,EAAE+F,GAAG,GAAGA,EAAE,MAAM,4BAA4BhM,mBAAmBgM,IAAI,CAAC,SAASuE,EAAEvE,EAAEz7B,EAAElB,GAAG,MAAMilB,EAAEje,EAAExD,IAAItC,IAAI,CAAC,EAAE,IAAI,MAAMA,KAAK,MAAM+jB,GAAG,OAAOnlB,EAAEmlB,EAAEjlB,SAAI,EAAOF,EAAE+4F,YAAY,GAAG,CAAC,IAAI/4F,EAAEoB,EAAEy7B,EAAE,CAAC31B,EAAEH,IAAI3F,EAAE,CAAC,CAAClB,GAAG,CAACuxC,MAAM5U,IAAI,C","sources":["webpack://product-website-template/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","webpack://product-website-template/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://product-website-template/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://product-website-template/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://product-website-template/./node_modules/axios/index.js","webpack://product-website-template/./node_modules/axios/lib/adapters/xhr.js","webpack://product-website-template/./node_modules/axios/lib/axios.js","webpack://product-website-template/./node_modules/axios/lib/cancel/Cancel.js","webpack://product-website-template/./node_modules/axios/lib/cancel/CancelToken.js","webpack://product-website-template/./node_modules/axios/lib/cancel/isCancel.js","webpack://product-website-template/./node_modules/axios/lib/core/Axios.js","webpack://product-website-template/./node_modules/axios/lib/core/InterceptorManager.js","webpack://product-website-template/./node_modules/axios/lib/core/buildFullPath.js","webpack://product-website-template/./node_modules/axios/lib/core/createError.js","webpack://product-website-template/./node_modules/axios/lib/core/dispatchRequest.js","webpack://product-website-template/./node_modules/axios/lib/core/enhanceError.js","webpack://product-website-template/./node_modules/axios/lib/core/mergeConfig.js","webpack://product-website-template/./node_modules/axios/lib/core/settle.js","webpack://product-website-template/./node_modules/axios/lib/core/transformData.js","webpack://product-website-template/./node_modules/axios/lib/defaults.js","webpack://product-website-template/./node_modules/axios/lib/env/data.js","webpack://product-website-template/./node_modules/axios/lib/helpers/bind.js","webpack://product-website-template/./node_modules/axios/lib/helpers/buildURL.js","webpack://product-website-template/./node_modules/axios/lib/helpers/combineURLs.js","webpack://product-website-template/./node_modules/axios/lib/helpers/cookies.js","webpack://product-website-template/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://product-website-template/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://product-website-template/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://product-website-template/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://product-website-template/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://product-website-template/./node_modules/axios/lib/helpers/spread.js","webpack://product-website-template/./node_modules/axios/lib/helpers/validator.js","webpack://product-website-template/./node_modules/axios/lib/utils.js","webpack://product-website-template/./node_modules/clsx/dist/clsx.m.js","webpack://product-website-template/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://product-website-template/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://product-website-template/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://product-website-template/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://product-website-template/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://product-website-template/./node_modules/lodash.chunk/index.js","webpack://product-website-template/./node_modules/react-fast-compare/index.js","webpack://product-website-template/./node_modules/goober/dist/goober.modern.js","webpack://product-website-template/./node_modules/react-hot-toast/dist/index.mjs","webpack://product-website-template/./node_modules/react-query/devtools/index.js","webpack://product-website-template/./node_modules/react-query/es/core/focusManager.js","webpack://product-website-template/./node_modules/react-query/es/core/logger.js","webpack://product-website-template/./node_modules/react-query/es/core/notifyManager.js","webpack://product-website-template/./node_modules/react-query/es/core/onlineManager.js","webpack://product-website-template/./node_modules/react-query/es/core/query.js","webpack://product-website-template/./node_modules/react-query/es/core/queryCache.js","webpack://product-website-template/./node_modules/react-query/es/core/mutation.js","webpack://product-website-template/./node_modules/react-query/es/core/mutationCache.js","webpack://product-website-template/./node_modules/react-query/es/core/infiniteQueryBehavior.js","webpack://product-website-template/./node_modules/react-query/es/core/queryClient.js","webpack://product-website-template/./node_modules/react-query/es/core/retryer.js","webpack://product-website-template/./node_modules/react-query/es/core/subscribable.js","webpack://product-website-template/./node_modules/react-query/es/core/utils.js","webpack://product-website-template/./node_modules/react-query/es/react/reactBatchedUpdates.js","webpack://product-website-template/./node_modules/react-query/es/react/setBatchUpdatesFn.js","webpack://product-website-template/./node_modules/react-query/es/react/logger.js","webpack://product-website-template/./node_modules/react-query/es/react/setLogger.js","webpack://product-website-template/./node_modules/react-query/es/react/QueryClientProvider.js","webpack://product-website-template/./node_modules/react-query/es/core/queryObserver.js","webpack://product-website-template/./node_modules/react-query/es/react/QueryErrorResetBoundary.js","webpack://product-website-template/./node_modules/react-query/es/react/useQuery.js","webpack://product-website-template/./node_modules/react-query/es/react/useBaseQuery.js","webpack://product-website-template/./node_modules/react-query/es/react/utils.js","webpack://product-website-template/./node_modules/react-side-effect/lib/index.js","webpack://product-website-template/./node_modules/core-js/internals/add-to-unscopables.js","webpack://product-website-template/./node_modules/core-js/internals/get-substitution.js","webpack://product-website-template/./node_modules/core-js/internals/html.js","webpack://product-website-template/./node_modules/core-js/internals/is-regexp.js","webpack://product-website-template/./node_modules/core-js/internals/object-create.js","webpack://product-website-template/./node_modules/core-js/internals/object-define-properties.js","webpack://product-website-template/./node_modules/core-js/internals/object-keys.js","webpack://product-website-template/./node_modules/core-js/internals/regexp-flags.js","webpack://product-website-template/./node_modules/core-js/internals/regexp-get-flags.js","webpack://product-website-template/./node_modules/core-js/internals/to-string.js","webpack://product-website-template/./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack://product-website-template/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://product-website-template/./node_modules/core-js/modules/es.string.replace-all.js","webpack://product-website-template/./node_modules/core-js/modules/esnext.string.replace-all.js","webpack://product-website-template/./node_modules/gatsby-react-router-scroll/index.js","webpack://product-website-template/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://product-website-template/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://product-website-template/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://product-website-template/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://product-website-template/./.cache/api-runner-browser-plugins.js","webpack://product-website-template/./.cache/api-runner-browser.js","webpack://product-website-template/./.cache/emitter.js","webpack://product-website-template/./node_modules/mitt/dist/mitt.es.js","webpack://product-website-template/./.cache/normalize-page-path.js","webpack://product-website-template/./.cache/find-path.js","webpack://product-website-template/./.cache/static-query.js","webpack://product-website-template/./.cache/gatsby-browser-entry.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://product-website-template/./.cache/prefetch.js","webpack://product-website-template/./.cache/loader.js","webpack://product-website-template/./.cache/head/components/fire-callback-in-effect.js","webpack://product-website-template/./.cache/head/constants.js","webpack://product-website-template/./.cache/head/utils.js","webpack://product-website-template/./.cache/head/head-export-handler-for-browser.js","webpack://product-website-template/./.cache/page-renderer.js","webpack://product-website-template/./.cache/route-announcer-props.js","webpack://product-website-template/./.cache/navigation.js","webpack://product-website-template/./node_modules/shallow-compare/es/index.js","webpack://product-website-template/./.cache/ensure-resources.js","webpack://product-website-template/./.cache/production-app.js","webpack://product-website-template/./.cache/public-page-renderer-prod.js","webpack://product-website-template/./.cache/public-page-renderer.js","webpack://product-website-template/./.cache/react-dom-utils.js","webpack://product-website-template/./.cache/react-lifecycles-compat.js","webpack://product-website-template/./.cache/redirect-utils.js","webpack://product-website-template/./.cache/register-service-worker.js","webpack://product-website-template/./.cache/strip-prefix.js","webpack://product-website-template/./gatsby-browser.js","webpack://product-website-template/./node_modules/gatsby-plugin-breadcrumb/components/app-providers.js","webpack://product-website-template/./node_modules/gatsby-plugin-breadcrumb/components/breadcrumb-context.js","webpack://product-website-template/./node_modules/gatsby-plugin-breadcrumb/components/options-context.js","webpack://product-website-template/./node_modules/gatsby-plugin-breadcrumb/gatsby-browser.js","webpack://product-website-template/./node_modules/gatsby-plugin-layout/gatsby-browser.js","webpack://product-website-template/./node_modules/gatsby-plugin-layout/wrap-page.js","webpack://product-website-template/./src/apiService/apiContext.ts","webpack://product-website-template/./src/apiService/resources/gitHub.ts","webpack://product-website-template/./src/apiService/apiService.ts","webpack://product-website-template/./src/hooks/resources/gitHub.ts","webpack://product-website-template/./src/hooks/useGitHubDirectories.ts","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://product-website-template/./node_modules/i18next/dist/esm/i18next.js","webpack://product-website-template/./node_modules/react-i18next/dist/es/unescape.js","webpack://product-website-template/./node_modules/react-i18next/dist/es/context.js","webpack://product-website-template/./src/translations/nl.ts","webpack://product-website-template/./src/translations/i18n.ts","webpack://product-website-template/./src/translations/en.ts","webpack://product-website-template/./src/context/gatsby.ts","webpack://product-website-template/./src/context/global.ts","webpack://product-website-template/./node_modules/react-helmet/es/Helmet.js","webpack://product-website-template/./src/services/getPageTitle.ts","webpack://product-website-template/./src/layout/Head.tsx","webpack://product-website-template/./src/Content.module.css","webpack://product-website-template/./src/assets/svgs/Slack.tsx","webpack://product-website-template/./src/assets/svgs/Github.tsx","webpack://product-website-template/./src/templates/templateParts/footer/FooterTemplate.tsx","webpack://product-website-template/./src/templates/templateParts/footer/FooterTemplate.module.css","webpack://product-website-template/./src/templates/templateParts/header/HeaderTemplate.module.css","webpack://product-website-template/./src/templates/templateParts/topNav/TopNav.tsx","webpack://product-website-template/./src/templates/templateParts/topNav/TopNav.module.css","webpack://product-website-template/./src/templates/templateParts/header/HeaderTemplate.tsx","webpack://product-website-template/./src/Content.tsx","webpack://product-website-template/./src/layout/Layout.tsx","webpack://product-website-template/./src/layout/Layout.module.css","webpack://product-website-template/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://product-website-template/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://product-website-template/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://product-website-template/./node_modules/invariant/browser.js","webpack://product-website-template/./node_modules/lodash/_Symbol.js","webpack://product-website-template/./node_modules/lodash/_arrayMap.js","webpack://product-website-template/./node_modules/lodash/_asciiToArray.js","webpack://product-website-template/./node_modules/lodash/_baseGetTag.js","webpack://product-website-template/./node_modules/lodash/_baseSlice.js","webpack://product-website-template/./node_modules/lodash/_baseToString.js","webpack://product-website-template/./node_modules/lodash/_castSlice.js","webpack://product-website-template/./node_modules/lodash/_createCaseFirst.js","webpack://product-website-template/./node_modules/lodash/_freeGlobal.js","webpack://product-website-template/./node_modules/lodash/_getRawTag.js","webpack://product-website-template/./node_modules/lodash/_hasUnicode.js","webpack://product-website-template/./node_modules/lodash/_objectToString.js","webpack://product-website-template/./node_modules/lodash/_root.js","webpack://product-website-template/./node_modules/lodash/_stringToArray.js","webpack://product-website-template/./node_modules/lodash/_unicodeToArray.js","webpack://product-website-template/./node_modules/lodash/capitalize.js","webpack://product-website-template/./node_modules/lodash/isArray.js","webpack://product-website-template/./node_modules/lodash/isObjectLike.js","webpack://product-website-template/./node_modules/lodash/isSymbol.js","webpack://product-website-template/./node_modules/lodash/last.js","webpack://product-website-template/./node_modules/lodash/toString.js","webpack://product-website-template/./node_modules/lodash/upperFirst.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/createClass.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/extends.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/typeof.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://product-website-template/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://product-website-template/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://product-website-template/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://product-website-template/./node_modules/gatsby-script/dist/index.modern.mjs"],"sourcesContent":["function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n function buildGroups(result, re) {\n var g = _groups.get(re);\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n if (\"function\" == typeof substitution) {\n var _this = this;\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nvar noop = function noop() {};\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid',\n 'fasr': 'regular',\n 'fa-regular': 'regular',\n 'fasl': 'light',\n 'fa-light': 'light'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass',\n 'regular': 'fasr',\n 'light': 'fasl'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid',\n 'fasr': 'fa-regular',\n 'fasl': 'fa-light'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass',\n 'fa-regular': 'fasr',\n 'fa-light': 'fasl'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss|sr|sl)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i;\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass',\n '400': 'fasr',\n '300': 'fasl'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\nvar initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n if (element) {\n return element.getAttribute(attr);\n }\n}\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n var val = coerce(getAttrConfig(attr));\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n -webkit-transition-delay: 0s;\\n transition-delay: 0s;\\n -webkit-transition-duration: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n return s;\n}\nvar _cssInserted = false;\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\nvar functions = [];\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\nvar loaded = false;\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready(fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n}\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n if (shim.prefix) {\n givenPrefix = null;\n }\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n return acc;\n }, emptyCanonicalIcon());\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n return canonical;\n}\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n this.definitions = {};\n }\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n return Library;\n}();\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n _hooks[hook].push(hooks[hook]);\n });\n }\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\nfunction asIcon(_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\nfunction asSymbol(_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n args.children = children;\n args.attributes = attributes;\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n var styles = _objectSpread2({}, extra.styles);\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n var styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n var styleString = joinStyles(extra.styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n var element = null;\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\nvar noop$1 = function noop() {};\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.4.2\\\"\";\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n begin: begin,\n end: end\n};\nvar noop$2 = function noop() {};\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n if (node.parentNode) {\n mutation[1].forEach(function (_abstract) {\n node.parentNode.insertBefore(convertSVG(_abstract), node);\n });\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var _abstract2 = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete _abstract2[0].attributes.id;\n if (_abstract2[0].attributes.class) {\n var splitClasses = _abstract2[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n _abstract2[0].attributes.class = splitClasses.toSvg.join(' ');\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n var newInnerHTML = _abstract2.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\nfunction performOperationSync(op) {\n op();\n}\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n if (!config.observeMutations) {\n return;\n }\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n treeCallback(mutationRecord.target);\n }\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\nfunction styleParser(node) {\n var style = node.getAttribute('style');\n var val = [];\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n return acc;\n }, {});\n }\n return val;\n}\nfunction classParser(node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n if (val.iconName && val.prefix) {\n return val;\n }\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n return val;\n}\nfunction attributesParser(node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n return extraAttributes;\n}\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\nvar styles$2 = namespace.styles;\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n var candidates = [];\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n var nextChild;\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var _abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n element.outerHTML = _abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n rest = parseFloat(rest);\n if (isNaN(rest)) {\n return acc;\n }\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\nfunction fillBlack(_abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (_abstract.attributes && (_abstract.attributes.fill || force)) {\n _abstract.attributes.fill = 'black';\n }\n return _abstract;\n}\nfunction deGroup(_abstract2) {\n if (_abstract2.tag === 'g') {\n return _abstract2.children;\n } else {\n return [_abstract2];\n }\n}\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright Ā© 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\nvar _excluded$1 = [\"style\"];\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof element === 'string') {\n return element;\n }\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n }\n return acc;\n }, {\n attrs: {}\n });\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded$1);\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\nvar PRODUCTION = false;\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\nfunction log() {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n (_console = console).error.apply(_console, arguments);\n }\n}\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\nvar _excluded = [\"forwardedRef\"];\nfunction FontAwesomeIcon(_ref) {\n var forwardedRef = _ref.forwardedRef,\n props = _objectWithoutProperties(_ref, _excluded);\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: forwardedRef\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\nexport { FontAwesomeIcon };","\"use strict\";\n\nexports.__esModule = true;\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n return {\n get location() {\n return location;\n },\n get transitioning() {\n return transitioning;\n },\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\nvar _invariant = require(\"invariant\");\nvar _invariant2 = _interopRequireDefault(_invariant);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n var dynamicMatch = paramRe.exec(routeSegment);\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function (cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || cancel && cancel.type ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function (cancel) {\n if (!token._listeners) return;\n var i;\n var l = token._listeners.length;\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function (onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function (resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n return promise;\n };\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\nmodule.exports = CancelToken;","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n if (!config.url) {\n throw new Error('Provided config url is not valid');\n }\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n var transitional = config.transitional;\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n var promise;\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n return promise;\n }\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n return promise;\n};\nAxios.prototype.getUri = function getUri(config) {\n if (!config.url) {\n throw new Error('Provided config url is not valid');\n }\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = Axios;","'use strict';\n\nvar utils = require('./../utils');\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\nmodule.exports = InterceptorManager;","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(config, config.data, config.headers, config.transformRequest);\n\n // Flatten headers\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(config, reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n return Promise.reject(reason);\n });\n};","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n utils.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);\n });\n return config;\n};","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n return data;\n};","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n return (encoder || JSON.stringify)(rawValue);\n}\nvar defaults = {\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || headers && headers['Content-Type'] === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n if (strictJSONParsing || forcedJSONParsing && utils.isString(data) && data.length) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n return data;\n }],\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n maxBodyLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","module.exports = {\n \"version\": \"0.25.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};","'use strict';\n\nvar utils = require('./../utils');\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n return url;\n};","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","'use strict';\n\nvar utils = require('./../utils');\nmodule.exports = utils.isStandardBrowserEnv() ?\n// Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() :\n// Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n};","'use strict';\n\nvar utils = require('./../utils');\nmodule.exports = utils.isStandardBrowserEnv() ?\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() :\n// Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","'use strict';\n\nvar utils = require('../utils');\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n if (!headers) {\n return parsed;\n }\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function (value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future'));\n }\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge( /* obj1, obj2, obj3, ... */\n) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};","function r(e) {\n var t,\n f,\n n = \"\";\n if (\"string\" == typeof e || \"number\" == typeof e) n += e;else if (\"object\" == typeof e) if (Array.isArray(e)) for (t = 0; t < e.length; t++) e[t] && (f = r(e[t])) && (n && (n += \" \"), n += f);else for (t in e) e[t] && (n && (n += \" \"), n += t);\n return n;\n}\nexport function clsx() {\n for (var e, t, f = 0, n = \"\"; f < arguments.length;) (e = arguments[f++]) && (t = r(e)) && (n && (n += \" \"), n += t);\n return n;\n}\nexport default clsx;","\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\n\n// TODO(v5): Remove legacy setting and default to \"always\"\nconst applyTrailingSlashOption = function (input) {\n let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"legacy\";\n const hasHtmlSuffix = input.endsWith(\".html\");\n const hasXmlSuffix = input.endsWith(\".xml\");\n const hasPdfSuffix = input.endsWith(\".pdf\");\n if (input === \"/\") return input;\n if (hasHtmlSuffix || hasXmlSuffix || hasPdfSuffix) {\n option = \"never\";\n }\n if (option === \"always\") {\n return input.endsWith(\"/\") ? input : \"\".concat(input, \"/\");\n }\n if (option === \"never\") {\n return input.endsWith(\"/\") ? input.slice(0, -1) : input;\n }\n return input;\n};\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nmodule.exports = Object.assign;","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== \"development\") {\n return;\n }\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname)); // Clear scripts after we've used them to avoid leaky behavior\n\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n}; // Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\n\nexports.onInitialClientRender = onInitialClientRender;","\"use strict\";\n\nrequire(\"core-js/modules/es.array.unscopables.flat-map.js\");\nexports.__esModule = true;\nexports.getForwards = getForwards;\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\nvar _integration = require(\"@builder.io/partytown/integration\");\nvar _getForwards = require(\"./get-forwards\");\n\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n const existingSnippet = document.querySelector(\"script[data-partytown]\");\n const existingSandbox = document.querySelector(\"iframe[src*=\\\"~partytown/partytown-sandbox-sw\\\"]\");\n if (existingSnippet) {\n existingSnippet.remove();\n }\n if (existingSandbox) {\n existingSandbox.remove();\n }\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(\"script\");\n snippet.dataset.partytown = \"\";\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if (guard ? isIterateeCall(array, size, guard) : size === undefined) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array ? array.length : 0;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, index += size);\n }\n return result;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = chunk;","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (a[i] !== b[i]) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};","let e = {\n data: \"\"\n },\n t = t => \"object\" == typeof window ? ((t ? t.querySelector(\"#_goober\") : window._goober) || Object.assign((t || document.head).appendChild(document.createElement(\"style\")), {\n innerHTML: \" \",\n id: \"_goober\"\n })).firstChild : t || e,\n r = e => {\n let r = t(e),\n l = r.data;\n return r.data = \"\", l;\n },\n l = /(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,\n a = /\\/\\*[^]*?\\*\\/| +/g,\n n = /\\n+/g,\n o = (e, t) => {\n let r = \"\",\n l = \"\",\n a = \"\";\n for (let n in e) {\n let c = e[n];\n \"@\" == n[0] ? \"i\" == n[1] ? r = n + \" \" + c + \";\" : l += \"f\" == n[1] ? o(c, n) : n + \"{\" + o(c, \"k\" == n[1] ? \"\" : t) + \"}\" : \"object\" == typeof c ? l += o(c, t ? t.replace(/([^,])+/g, e => n.replace(/(^:.*)|([^,])+/g, t => /&/.test(t) ? t.replace(/&/g, e) : e ? e + \" \" + t : t)) : n) : null != c && (n = /^--/.test(n) ? n : n.replace(/[A-Z]/g, \"-$&\").toLowerCase(), a += o.p ? o.p(n, c) : n + \":\" + c + \";\");\n }\n return r + (t && a ? t + \"{\" + a + \"}\" : a) + l;\n },\n c = {},\n s = e => {\n if (\"object\" == typeof e) {\n let t = \"\";\n for (let r in e) t += r + s(e[r]);\n return t;\n }\n return e;\n },\n i = (e, t, r, i, p) => {\n let u = s(e),\n d = c[u] || (c[u] = (e => {\n let t = 0,\n r = 11;\n for (; t < e.length;) r = 101 * r + e.charCodeAt(t++) >>> 0;\n return \"go\" + r;\n })(u));\n if (!c[d]) {\n let t = u !== e ? e : (e => {\n let t,\n r,\n o = [{}];\n for (; t = l.exec(e.replace(a, \"\"));) t[4] ? o.shift() : t[3] ? (r = t[3].replace(n, \" \").trim(), o.unshift(o[0][r] = o[0][r] || {})) : o[0][t[1]] = t[2].replace(n, \" \").trim();\n return o[0];\n })(e);\n c[d] = o(p ? {\n [\"@keyframes \" + d]: t\n } : t, r ? \"\" : \".\" + d);\n }\n let f = r && c.g ? c.g : null;\n return r && (c.g = c[d]), ((e, t, r, l) => {\n l ? t.data = t.data.replace(l, e) : -1 === t.data.indexOf(e) && (t.data = r ? e + t.data : t.data + e);\n })(c[d], t, i, f), d;\n },\n p = (e, t, r) => e.reduce((e, l, a) => {\n let n = t[a];\n if (n && n.call) {\n let e = n(r),\n t = e && e.props && e.props.className || /^go/.test(e) && e;\n n = t ? \".\" + t : e && \"object\" == typeof e ? e.props ? \"\" : o(e, \"\") : !1 === e ? \"\" : e;\n }\n return e + l + (null == n ? \"\" : n);\n }, \"\");\nfunction u(e) {\n let r = this || {},\n l = e.call ? e(r.p) : e;\n return i(l.unshift ? l.raw ? p(l, [].slice.call(arguments, 1), r.p) : l.reduce((e, t) => Object.assign(e, t && t.call ? t(r.p) : t), {}) : l, t(r.target), r.g, r.o, r.k);\n}\nlet d,\n f,\n g,\n b = u.bind({\n g: 1\n }),\n h = u.bind({\n k: 1\n });\nfunction m(e, t, r, l) {\n o.p = t, d = e, f = r, g = l;\n}\nfunction j(e, t) {\n let r = this || {};\n return function () {\n let l = arguments;\n function a(n, o) {\n let c = Object.assign({}, n),\n s = c.className || a.className;\n r.p = Object.assign({\n theme: f && f()\n }, c), r.o = / *go\\d+/.test(s), c.className = u.apply(r, l) + (s ? \" \" + s : \"\"), t && (c.ref = o);\n let i = e;\n return e[0] && (i = c.as || e, delete c.as), g && i[0] && g(c), d(i, c);\n }\n return t ? t(a) : a;\n };\n}\nexport { u as css, r as extractCss, b as glob, h as keyframes, m as setup, j as styled };","\"use client\";\n\nimport _taggedTemplateLiteral from \"/home/runner/work/woo-website-template/woo-website-template/pwa/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\";\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;\nvar W = e => typeof e == \"function\",\n T = (e, t) => W(e) ? e(t) : e;\nvar U = (() => {\n let e = 0;\n return () => (++e).toString();\n })(),\n b = (() => {\n let e;\n return () => {\n if (e === void 0 && typeof window < \"u\") {\n let t = matchMedia(\"(prefers-reduced-motion: reduce)\");\n e = !t || t.matches;\n }\n return e;\n };\n })();\nimport { useEffect as H, useState as j } from \"react\";\nvar Q = 20;\nvar S = new Map(),\n X = 1e3,\n $ = e => {\n if (S.has(e)) return;\n let t = setTimeout(() => {\n S.delete(e), u({\n type: 4,\n toastId: e\n });\n }, X);\n S.set(e, t);\n },\n J = e => {\n let t = S.get(e);\n t && clearTimeout(t);\n },\n v = (e, t) => {\n switch (t.type) {\n case 0:\n return {\n ...e,\n toasts: [t.toast, ...e.toasts].slice(0, Q)\n };\n case 1:\n return t.toast.id && J(t.toast.id), {\n ...e,\n toasts: e.toasts.map(r => r.id === t.toast.id ? {\n ...r,\n ...t.toast\n } : r)\n };\n case 2:\n let {\n toast: o\n } = t;\n return e.toasts.find(r => r.id === o.id) ? v(e, {\n type: 1,\n toast: o\n }) : v(e, {\n type: 0,\n toast: o\n });\n case 3:\n let {\n toastId: s\n } = t;\n return s ? $(s) : e.toasts.forEach(r => {\n $(r.id);\n }), {\n ...e,\n toasts: e.toasts.map(r => r.id === s || s === void 0 ? {\n ...r,\n visible: !1\n } : r)\n };\n case 4:\n return t.toastId === void 0 ? {\n ...e,\n toasts: []\n } : {\n ...e,\n toasts: e.toasts.filter(r => r.id !== t.toastId)\n };\n case 5:\n return {\n ...e,\n pausedAt: t.time\n };\n case 6:\n let a = t.time - (e.pausedAt || 0);\n return {\n ...e,\n pausedAt: void 0,\n toasts: e.toasts.map(r => ({\n ...r,\n pauseDuration: r.pauseDuration + a\n }))\n };\n }\n },\n A = [],\n P = {\n toasts: [],\n pausedAt: void 0\n },\n u = e => {\n P = v(P, e), A.forEach(t => {\n t(P);\n });\n },\n Y = {\n blank: 4e3,\n error: 4e3,\n success: 2e3,\n loading: 1 / 0,\n custom: 4e3\n },\n I = function () {\n let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let [t, o] = j(P);\n H(() => (A.push(o), () => {\n let a = A.indexOf(o);\n a > -1 && A.splice(a, 1);\n }), [t]);\n let s = t.toasts.map(a => {\n var r, c;\n return {\n ...e,\n ...e[a.type],\n ...a,\n duration: a.duration || ((r = e[a.type]) == null ? void 0 : r.duration) || (e == null ? void 0 : e.duration) || Y[a.type],\n style: {\n ...e.style,\n ...((c = e[a.type]) == null ? void 0 : c.style),\n ...a.style\n }\n };\n });\n return {\n ...t,\n toasts: s\n };\n };\nvar G = function (e) {\n let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"blank\";\n let o = arguments.length > 2 ? arguments[2] : undefined;\n return {\n createdAt: Date.now(),\n visible: !0,\n type: t,\n ariaProps: {\n role: \"status\",\n \"aria-live\": \"polite\"\n },\n message: e,\n pauseDuration: 0,\n ...o,\n id: (o == null ? void 0 : o.id) || U()\n };\n },\n h = e => (t, o) => {\n let s = G(t, e, o);\n return u({\n type: 2,\n toast: s\n }), s.id;\n },\n n = (e, t) => h(\"blank\")(e, t);\nn.error = h(\"error\");\nn.success = h(\"success\");\nn.loading = h(\"loading\");\nn.custom = h(\"custom\");\nn.dismiss = e => {\n u({\n type: 3,\n toastId: e\n });\n};\nn.remove = e => u({\n type: 4,\n toastId: e\n});\nn.promise = (e, t, o) => {\n let s = n.loading(t.loading, {\n ...o,\n ...(o == null ? void 0 : o.loading)\n });\n return e.then(a => (n.success(T(t.success, a), {\n id: s,\n ...o,\n ...(o == null ? void 0 : o.success)\n }), a)).catch(a => {\n n.error(T(t.error, a), {\n id: s,\n ...o,\n ...(o == null ? void 0 : o.error)\n });\n }), e;\n};\nimport { useEffect as K, useCallback as L } from \"react\";\nvar Z = (e, t) => {\n u({\n type: 1,\n toast: {\n id: e,\n height: t\n }\n });\n },\n ee = () => {\n u({\n type: 5,\n time: Date.now()\n });\n },\n D = e => {\n let {\n toasts: t,\n pausedAt: o\n } = I(e);\n K(() => {\n if (o) return;\n let r = Date.now(),\n c = t.map(i => {\n if (i.duration === 1 / 0) return;\n let d = (i.duration || 0) + i.pauseDuration - (r - i.createdAt);\n if (d < 0) {\n i.visible && n.dismiss(i.id);\n return;\n }\n return setTimeout(() => n.dismiss(i.id), d);\n });\n return () => {\n c.forEach(i => i && clearTimeout(i));\n };\n }, [t, o]);\n let s = L(() => {\n o && u({\n type: 6,\n time: Date.now()\n });\n }, [o]),\n a = L((r, c) => {\n let {\n reverseOrder: i = !1,\n gutter: d = 8,\n defaultPosition: p\n } = c || {},\n g = t.filter(m => (m.position || p) === (r.position || p) && m.height),\n E = g.findIndex(m => m.id === r.id),\n x = g.filter((m, R) => R < E && m.visible).length;\n return g.filter(m => m.visible).slice(...(i ? [x + 1] : [0, x])).reduce((m, R) => m + (R.height || 0) + d, 0);\n }, [t]);\n return {\n toasts: t,\n handlers: {\n updateHeight: Z,\n startPause: ee,\n endPause: s,\n calculateOffset: a\n }\n };\n };\nimport * as l from \"react\";\nimport { styled as B, keyframes as z } from \"goober\";\nimport * as y from \"react\";\nimport { styled as C, keyframes as me } from \"goober\";\nimport { styled as te, keyframes as k } from \"goober\";\nvar oe = k(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\nfrom {\\n transform: scale(0) rotate(45deg);\\n\\topacity: 0;\\n}\\nto {\\n transform: scale(1) rotate(45deg);\\n opacity: 1;\\n}\"]))),\n re = k(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\nfrom {\\n transform: scale(0);\\n opacity: 0;\\n}\\nto {\\n transform: scale(1);\\n opacity: 1;\\n}\"]))),\n se = k(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\nfrom {\\n transform: scale(0) rotate(90deg);\\n\\topacity: 0;\\n}\\nto {\\n transform: scale(1) rotate(90deg);\\n\\topacity: 1;\\n}\"]))),\n _ = te(\"div\")(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n width: 20px;\\n opacity: 0;\\n height: 20px;\\n border-radius: 10px;\\n background: \", \";\\n position: relative;\\n transform: rotate(45deg);\\n\\n animation: \", \" 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\\n forwards;\\n animation-delay: 100ms;\\n\\n &:after,\\n &:before {\\n content: '';\\n animation: \", \" 0.15s ease-out forwards;\\n animation-delay: 150ms;\\n position: absolute;\\n border-radius: 3px;\\n opacity: 0;\\n background: \", \";\\n bottom: 9px;\\n left: 4px;\\n height: 2px;\\n width: 12px;\\n }\\n\\n &:before {\\n animation: \", \" 0.15s ease-out forwards;\\n animation-delay: 180ms;\\n transform: rotate(90deg);\\n }\\n\"])), e => e.primary || \"#ff4b4b\", oe, re, e => e.secondary || \"#fff\", se);\nimport { styled as ae, keyframes as ie } from \"goober\";\nvar ne = ie(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n from {\\n transform: rotate(0deg);\\n }\\n to {\\n transform: rotate(360deg);\\n }\\n\"]))),\n V = ae(\"div\")(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n width: 12px;\\n height: 12px;\\n box-sizing: border-box;\\n border: 2px solid;\\n border-radius: 100%;\\n border-color: \", \";\\n border-right-color: \", \";\\n animation: \", \" 1s linear infinite;\\n\"])), e => e.secondary || \"#e0e0e0\", e => e.primary || \"#616161\", ne);\nimport { styled as ce, keyframes as N } from \"goober\";\nvar pe = N(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\nfrom {\\n transform: scale(0) rotate(45deg);\\n\\topacity: 0;\\n}\\nto {\\n transform: scale(1) rotate(45deg);\\n\\topacity: 1;\\n}\"]))),\n de = N(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n0% {\\n\\theight: 0;\\n\\twidth: 0;\\n\\topacity: 0;\\n}\\n40% {\\n height: 0;\\n\\twidth: 6px;\\n\\topacity: 1;\\n}\\n100% {\\n opacity: 1;\\n height: 10px;\\n}\"]))),\n w = ce(\"div\")(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n width: 20px;\\n opacity: 0;\\n height: 20px;\\n border-radius: 10px;\\n background: \", \";\\n position: relative;\\n transform: rotate(45deg);\\n\\n animation: \", \" 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\\n forwards;\\n animation-delay: 100ms;\\n &:after {\\n content: '';\\n box-sizing: border-box;\\n animation: \", \" 0.2s ease-out forwards;\\n opacity: 0;\\n animation-delay: 200ms;\\n position: absolute;\\n border-right: 2px solid;\\n border-bottom: 2px solid;\\n border-color: \", \";\\n bottom: 6px;\\n left: 6px;\\n height: 10px;\\n width: 6px;\\n }\\n\"])), e => e.primary || \"#61d345\", pe, de, e => e.secondary || \"#fff\");\nvar ue = C(\"div\")(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n position: absolute;\\n\"]))),\n le = C(\"div\")(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n min-width: 20px;\\n min-height: 20px;\\n\"]))),\n Te = me(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\nfrom {\\n transform: scale(0.6);\\n opacity: 0.4;\\n}\\nto {\\n transform: scale(1);\\n opacity: 1;\\n}\"]))),\n fe = C(\"div\")(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n position: relative;\\n transform: scale(0.6);\\n opacity: 0.4;\\n min-width: 20px;\\n animation: \", \" 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\\n forwards;\\n\"])), Te),\n M = _ref => {\n let {\n toast: e\n } = _ref;\n let {\n icon: t,\n type: o,\n iconTheme: s\n } = e;\n return t !== void 0 ? typeof t == \"string\" ? y.createElement(fe, null, t) : t : o === \"blank\" ? null : y.createElement(le, null, y.createElement(V, {\n ...s\n }), o !== \"loading\" && y.createElement(ue, null, o === \"error\" ? y.createElement(_, {\n ...s\n }) : y.createElement(w, {\n ...s\n })));\n };\nvar ye = e => \"\\n0% {transform: translate3d(0,\".concat(e * -200, \"%,0) scale(.6); opacity:.5;}\\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\\n\"),\n ge = e => \"\\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\\n100% {transform: translate3d(0,\".concat(e * -150, \"%,-1px) scale(.6); opacity:0;}\\n\"),\n he = \"0%{opacity:0;} 100%{opacity:1;}\",\n xe = \"0%{opacity:1;} 100%{opacity:0;}\",\n be = B(\"div\")(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n display: flex;\\n align-items: center;\\n background: #fff;\\n color: #363636;\\n line-height: 1.3;\\n will-change: transform;\\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\\n max-width: 350px;\\n pointer-events: auto;\\n padding: 8px 10px;\\n border-radius: 8px;\\n\"]))),\n Se = B(\"div\")(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n display: flex;\\n justify-content: center;\\n margin: 4px 10px;\\n color: inherit;\\n flex: 1 1 auto;\\n white-space: pre-line;\\n\"]))),\n Ae = (e, t) => {\n let s = e.includes(\"top\") ? 1 : -1,\n [a, r] = b() ? [he, xe] : [ye(s), ge(s)];\n return {\n animation: t ? \"\".concat(z(a), \" 0.35s cubic-bezier(.21,1.02,.73,1) forwards\") : \"\".concat(z(r), \" 0.4s forwards cubic-bezier(.06,.71,.55,1)\")\n };\n },\n F = l.memo(_ref2 => {\n let {\n toast: e,\n position: t,\n style: o,\n children: s\n } = _ref2;\n let a = e.height ? Ae(e.position || t || \"top-center\", e.visible) : {\n opacity: 0\n },\n r = l.createElement(M, {\n toast: e\n }),\n c = l.createElement(Se, {\n ...e.ariaProps\n }, T(e.message, e));\n return l.createElement(be, {\n className: e.className,\n style: {\n ...a,\n ...o,\n ...e.style\n }\n }, typeof s == \"function\" ? s({\n icon: r,\n message: c\n }) : l.createElement(l.Fragment, null, r, c));\n });\nimport { css as Pe, setup as Oe } from \"goober\";\nimport * as f from \"react\";\nOe(f.createElement);\nvar Ee = _ref3 => {\n let {\n id: e,\n className: t,\n style: o,\n onHeightUpdate: s,\n children: a\n } = _ref3;\n let r = f.useCallback(c => {\n if (c) {\n let i = () => {\n let d = c.getBoundingClientRect().height;\n s(e, d);\n };\n i(), new MutationObserver(i).observe(c, {\n subtree: !0,\n childList: !0,\n characterData: !0\n });\n }\n }, [e, s]);\n return f.createElement(\"div\", {\n ref: r,\n className: t,\n style: o\n }, a);\n },\n Re = (e, t) => {\n let o = e.includes(\"top\"),\n s = o ? {\n top: 0\n } : {\n bottom: 0\n },\n a = e.includes(\"center\") ? {\n justifyContent: \"center\"\n } : e.includes(\"right\") ? {\n justifyContent: \"flex-end\"\n } : {};\n return {\n left: 0,\n right: 0,\n display: \"flex\",\n position: \"absolute\",\n transition: b() ? void 0 : \"all 230ms cubic-bezier(.21,1.02,.73,1)\",\n transform: \"translateY(\".concat(t * (o ? 1 : -1), \"px)\"),\n ...s,\n ...a\n };\n },\n ve = Pe(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n z-index: 9999;\\n > * {\\n pointer-events: auto;\\n }\\n\"]))),\n O = 16,\n Ie = _ref4 => {\n let {\n reverseOrder: e,\n position: t = \"top-center\",\n toastOptions: o,\n gutter: s,\n children: a,\n containerStyle: r,\n containerClassName: c\n } = _ref4;\n let {\n toasts: i,\n handlers: d\n } = D(o);\n return f.createElement(\"div\", {\n style: {\n position: \"fixed\",\n zIndex: 9999,\n top: O,\n left: O,\n right: O,\n bottom: O,\n pointerEvents: \"none\",\n ...r\n },\n className: c,\n onMouseEnter: d.startPause,\n onMouseLeave: d.endPause\n }, i.map(p => {\n let g = p.position || t,\n E = d.calculateOffset(p, {\n reverseOrder: e,\n gutter: s,\n defaultPosition: t\n }),\n x = Re(g, E);\n return f.createElement(Ee, {\n id: p.id,\n key: p.id,\n onHeightUpdate: d.updateHeight,\n className: p.visible ? ve : \"\",\n style: x\n }, p.type === \"custom\" ? T(p.message, p) : a ? a(p) : f.createElement(F, {\n toast: p,\n position: g\n }));\n }));\n };\nvar _t = n;\nexport { w as CheckmarkIcon, _ as ErrorIcon, V as LoaderIcon, F as ToastBar, M as ToastIcon, Ie as Toaster, _t as default, T as resolveValue, n as toast, D as useToaster, I as useToasterStore };","if (process.env.NODE_ENV !== 'development') {\n module.exports = {\n ReactQueryDevtools: function () {\n return null;\n },\n ReactQueryDevtoolsPanel: function () {\n return null;\n }\n };\n} else {\n module.exports = require('./development');\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var FocusManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(FocusManager, _Subscribable);\n function FocusManager() {\n var _this;\n _this = _Subscribable.call(this) || this;\n _this.setup = function (onFocus) {\n var _window;\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onFocus();\n }; // Listen to visibillitychange and focus\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n }\n };\n return _this;\n }\n var _proto = FocusManager.prototype;\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (focused) {\n if (typeof focused === 'boolean') {\n _this2.setFocused(focused);\n } else {\n _this2.onFocus();\n }\n });\n };\n _proto.setFocused = function setFocused(focused) {\n this.focused = focused;\n if (focused) {\n this.onFocus();\n }\n };\n _proto.onFocus = function onFocus() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n _proto.isFocused = function isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n if (typeof document === 'undefined') {\n return true;\n }\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n };\n return FocusManager;\n}(Subscribable);\nexport var focusManager = new FocusManager();","// TYPES\n// FUNCTIONS\nvar logger = console;\nexport function getLogger() {\n return logger;\n}\nexport function setLogger(newLogger) {\n logger = newLogger;\n}","import { scheduleMicrotask } from './utils'; // TYPES\n\n// CLASS\nexport var NotifyManager = /*#__PURE__*/function () {\n function NotifyManager() {\n this.queue = [];\n this.transactions = 0;\n this.notifyFn = function (callback) {\n callback();\n };\n this.batchNotifyFn = function (callback) {\n callback();\n };\n }\n var _proto = NotifyManager.prototype;\n _proto.batch = function batch(callback) {\n var result;\n this.transactions++;\n try {\n result = callback();\n } finally {\n this.transactions--;\n if (!this.transactions) {\n this.flush();\n }\n }\n return result;\n };\n _proto.schedule = function schedule(callback) {\n var _this = this;\n if (this.transactions) {\n this.queue.push(callback);\n } else {\n scheduleMicrotask(function () {\n _this.notifyFn(callback);\n });\n }\n }\n /**\n * All calls to the wrapped function will be batched.\n */;\n\n _proto.batchCalls = function batchCalls(callback) {\n var _this2 = this;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2.schedule(function () {\n callback.apply(void 0, args);\n });\n };\n };\n _proto.flush = function flush() {\n var _this3 = this;\n var queue = this.queue;\n this.queue = [];\n if (queue.length) {\n scheduleMicrotask(function () {\n _this3.batchNotifyFn(function () {\n queue.forEach(function (callback) {\n _this3.notifyFn(callback);\n });\n });\n });\n }\n }\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */;\n\n _proto.setNotifyFunction = function setNotifyFunction(fn) {\n this.notifyFn = fn;\n }\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */;\n\n _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) {\n this.batchNotifyFn = fn;\n };\n return NotifyManager;\n}(); // SINGLETON\n\nexport var notifyManager = new NotifyManager();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var OnlineManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(OnlineManager, _Subscribable);\n function OnlineManager() {\n var _this;\n _this = _Subscribable.call(this) || this;\n _this.setup = function (onOnline) {\n var _window;\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onOnline();\n }; // Listen to online\n\n window.addEventListener('online', listener, false);\n window.addEventListener('offline', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', listener);\n window.removeEventListener('offline', listener);\n };\n }\n };\n return _this;\n }\n var _proto = OnlineManager.prototype;\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (online) {\n if (typeof online === 'boolean') {\n _this2.setOnline(online);\n } else {\n _this2.onOnline();\n }\n });\n };\n _proto.setOnline = function setOnline(online) {\n this.online = online;\n if (online) {\n this.onOnline();\n }\n };\n _proto.onOnline = function onOnline() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n _proto.isOnline = function isOnline() {\n if (typeof this.online === 'boolean') {\n return this.online;\n }\n if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n return true;\n }\n return navigator.onLine;\n };\n return OnlineManager;\n}(Subscribable);\nexport var onlineManager = new OnlineManager();","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getAbortController, functionalUpdate, isValidTimeout, noop, replaceEqualDeep, timeUntilStale, ensureQueryKeyArray } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { getLogger } from './logger';\nimport { Retryer, isCancelledError } from './retryer'; // TYPES\n\n// CLASS\nexport var Query = /*#__PURE__*/function () {\n function Query(config) {\n this.abortSignalConsumed = false;\n this.hadObservers = false;\n this.defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.initialState = config.state || this.getDefaultState(this.options);\n this.state = this.initialState;\n this.meta = config.meta;\n this.scheduleGc();\n }\n var _proto = Query.prototype;\n _proto.setOptions = function setOptions(options) {\n var _this$options$cacheTi;\n this.options = _extends({}, this.defaultOptions, options);\n this.meta = options == null ? void 0 : options.meta; // Default to 5 minutes if not cache time is set\n\n this.cacheTime = Math.max(this.cacheTime || 0, (_this$options$cacheTi = this.options.cacheTime) != null ? _this$options$cacheTi : 5 * 60 * 1000);\n };\n _proto.setDefaultOptions = function setDefaultOptions(options) {\n this.defaultOptions = options;\n };\n _proto.scheduleGc = function scheduleGc() {\n var _this = this;\n this.clearGcTimeout();\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(function () {\n _this.optionalRemove();\n }, this.cacheTime);\n }\n };\n _proto.clearGcTimeout = function clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = undefined;\n }\n };\n _proto.optionalRemove = function optionalRemove() {\n if (!this.observers.length) {\n if (this.state.isFetching) {\n if (this.hadObservers) {\n this.scheduleGc();\n }\n } else {\n this.cache.remove(this);\n }\n }\n };\n _proto.setData = function setData(updater, options) {\n var _this$options$isDataE, _this$options;\n var prevData = this.state.data; // Get the new data\n\n var data = functionalUpdate(updater, prevData); // Use prev data if an isDataEqual function is defined and returns `true`\n\n if ((_this$options$isDataE = (_this$options = this.options).isDataEqual) == null ? void 0 : _this$options$isDataE.call(_this$options, prevData, data)) {\n data = prevData;\n } else if (this.options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n data = replaceEqualDeep(prevData, data);\n } // Set data and mark it as cached\n\n this.dispatch({\n data: data,\n type: 'success',\n dataUpdatedAt: options == null ? void 0 : options.updatedAt\n });\n return data;\n };\n _proto.setState = function setState(state, setStateOptions) {\n this.dispatch({\n type: 'setState',\n state: state,\n setStateOptions: setStateOptions\n });\n };\n _proto.cancel = function cancel(options) {\n var _this$retryer;\n var promise = this.promise;\n (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n };\n _proto.destroy = function destroy() {\n this.clearGcTimeout();\n this.cancel({\n silent: true\n });\n };\n _proto.reset = function reset() {\n this.destroy();\n this.setState(this.initialState);\n };\n _proto.isActive = function isActive() {\n return this.observers.some(function (observer) {\n return observer.options.enabled !== false;\n });\n };\n _proto.isFetching = function isFetching() {\n return this.state.isFetching;\n };\n _proto.isStale = function isStale() {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(function (observer) {\n return observer.getCurrentResult().isStale;\n });\n };\n _proto.isStaleByTime = function isStaleByTime(staleTime) {\n if (staleTime === void 0) {\n staleTime = 0;\n }\n return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n };\n _proto.onFocus = function onFocus() {\n var _this$retryer2;\n var observer = this.observers.find(function (x) {\n return x.shouldFetchOnWindowFocus();\n });\n if (observer) {\n observer.refetch();\n } // Continue fetch if currently paused\n\n (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n };\n _proto.onOnline = function onOnline() {\n var _this$retryer3;\n var observer = this.observers.find(function (x) {\n return x.shouldFetchOnReconnect();\n });\n if (observer) {\n observer.refetch();\n } // Continue fetch if currently paused\n\n (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n };\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n this.hadObservers = true; // Stop the query from being garbage collected\n\n this.clearGcTimeout();\n this.cache.notify({\n type: 'observerAdded',\n query: this,\n observer: observer\n });\n }\n };\n _proto.removeObserver = function removeObserver(observer) {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.retryer.isTransportCancelable || this.abortSignalConsumed) {\n this.retryer.cancel({\n revert: true\n });\n } else {\n this.retryer.cancelRetry();\n }\n }\n if (this.cacheTime) {\n this.scheduleGc();\n } else {\n this.cache.remove(this);\n }\n }\n this.cache.notify({\n type: 'observerRemoved',\n query: this,\n observer: observer\n });\n }\n };\n _proto.getObserversCount = function getObserversCount() {\n return this.observers.length;\n };\n _proto.invalidate = function invalidate() {\n if (!this.state.isInvalidated) {\n this.dispatch({\n type: 'invalidate'\n });\n }\n };\n _proto.fetch = function fetch(options, fetchOptions) {\n var _this2 = this,\n _this$options$behavio,\n _context$fetchOptions,\n _abortController$abor;\n if (this.state.isFetching) {\n if (this.state.dataUpdatedAt && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({\n silent: true\n });\n } else if (this.promise) {\n var _this$retryer4;\n\n // make sure that retries that were potentially cancelled due to unmounts can continue\n (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching\n\n return this.promise;\n }\n } // Update config if passed, otherwise the config from the last execution is used\n\n if (options) {\n this.setOptions(options);\n } // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n\n if (!this.options.queryFn) {\n var observer = this.observers.find(function (x) {\n return x.options.queryFn;\n });\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n var queryKey = ensureQueryKeyArray(this.queryKey);\n var abortController = getAbortController(); // Create query function context\n\n var queryFnContext = {\n queryKey: queryKey,\n pageParam: undefined,\n meta: this.meta\n };\n Object.defineProperty(queryFnContext, 'signal', {\n enumerable: true,\n get: function get() {\n if (abortController) {\n _this2.abortSignalConsumed = true;\n return abortController.signal;\n }\n return undefined;\n }\n }); // Create fetch function\n\n var fetchFn = function fetchFn() {\n if (!_this2.options.queryFn) {\n return Promise.reject('Missing queryFn');\n }\n _this2.abortSignalConsumed = false;\n return _this2.options.queryFn(queryFnContext);\n }; // Trigger behavior hook\n\n var context = {\n fetchOptions: fetchOptions,\n options: this.options,\n queryKey: queryKey,\n state: this.state,\n fetchFn: fetchFn,\n meta: this.meta\n };\n if ((_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch) {\n var _this$options$behavio2;\n (_this$options$behavio2 = this.options.behavior) == null ? void 0 : _this$options$behavio2.onFetch(context);\n } // Store state in case the current fetch needs to be reverted\n\n this.revertState = this.state; // Set to fetching state if not already in it\n\n if (!this.state.isFetching || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n var _context$fetchOptions2;\n this.dispatch({\n type: 'fetch',\n meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n });\n } // Try to fetch the data\n\n this.retryer = new Retryer({\n fn: context.fetchFn,\n abort: abortController == null ? void 0 : (_abortController$abor = abortController.abort) == null ? void 0 : _abortController$abor.bind(abortController),\n onSuccess: function onSuccess(data) {\n _this2.setData(data); // Notify cache callback\n\n _this2.cache.config.onSuccess == null ? void 0 : _this2.cache.config.onSuccess(data, _this2); // Remove query after fetching if cache time is 0\n\n if (_this2.cacheTime === 0) {\n _this2.optionalRemove();\n }\n },\n onError: function onError(error) {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n _this2.dispatch({\n type: 'error',\n error: error\n });\n }\n if (!isCancelledError(error)) {\n // Notify cache callback\n _this2.cache.config.onError == null ? void 0 : _this2.cache.config.onError(error, _this2); // Log error\n\n getLogger().error(error);\n } // Remove query after fetching if cache time is 0\n\n if (_this2.cacheTime === 0) {\n _this2.optionalRemove();\n }\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay\n });\n this.promise = this.retryer.promise;\n return this.promise;\n };\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n this.state = this.reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onQueryUpdate(action);\n });\n _this3.cache.notify({\n query: _this3,\n type: 'queryUpdated',\n action: action\n });\n });\n };\n _proto.getDefaultState = function getDefaultState(options) {\n var data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;\n var hasInitialData = typeof options.initialData !== 'undefined';\n var initialDataUpdatedAt = hasInitialData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n var hasData = typeof data !== 'undefined';\n return {\n data: data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchMeta: null,\n isFetching: false,\n isInvalidated: false,\n isPaused: false,\n status: hasData ? 'success' : 'idle'\n };\n };\n _proto.reducer = function reducer(state, action) {\n var _action$meta, _action$dataUpdatedAt;\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n fetchFailureCount: state.fetchFailureCount + 1\n });\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n case 'fetch':\n return _extends({}, state, {\n fetchFailureCount: 0,\n fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n isFetching: true,\n isPaused: false\n }, !state.dataUpdatedAt && {\n error: null,\n status: 'loading'\n });\n case 'success':\n return _extends({}, state, {\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n error: null,\n fetchFailureCount: 0,\n isFetching: false,\n isInvalidated: false,\n isPaused: false,\n status: 'success'\n });\n case 'error':\n var error = action.error;\n if (isCancelledError(error) && error.revert && this.revertState) {\n return _extends({}, this.revertState);\n }\n return _extends({}, state, {\n error: error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n isFetching: false,\n isPaused: false,\n status: 'error'\n });\n case 'invalidate':\n return _extends({}, state, {\n isInvalidated: true\n });\n case 'setState':\n return _extends({}, state, action.state);\n default:\n return state;\n }\n };\n return Query;\n}();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils';\nimport { Query } from './query';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable';\n// CLASS\nexport var QueryCache = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(QueryCache, _Subscribable);\n function QueryCache(config) {\n var _this;\n _this = _Subscribable.call(this) || this;\n _this.config = config || {};\n _this.queries = [];\n _this.queriesMap = {};\n return _this;\n }\n var _proto = QueryCache.prototype;\n _proto.build = function build(client, options, state) {\n var _options$queryHash;\n var queryKey = options.queryKey;\n var queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);\n var query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey: queryKey,\n queryHash: queryHash,\n options: client.defaultQueryOptions(options),\n state: state,\n defaultOptions: client.getQueryDefaults(queryKey),\n meta: options.meta\n });\n this.add(query);\n }\n return query;\n };\n _proto.add = function add(query) {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query;\n this.queries.push(query);\n this.notify({\n type: 'queryAdded',\n query: query\n });\n }\n };\n _proto.remove = function remove(query) {\n var queryInMap = this.queriesMap[query.queryHash];\n if (queryInMap) {\n query.destroy();\n this.queries = this.queries.filter(function (x) {\n return x !== query;\n });\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash];\n }\n this.notify({\n type: 'queryRemoved',\n query: query\n });\n }\n };\n _proto.clear = function clear() {\n var _this2 = this;\n notifyManager.batch(function () {\n _this2.queries.forEach(function (query) {\n _this2.remove(query);\n });\n });\n };\n _proto.get = function get(queryHash) {\n return this.queriesMap[queryHash];\n };\n _proto.getAll = function getAll() {\n return this.queries;\n };\n _proto.find = function find(arg1, arg2) {\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n return this.queries.find(function (query) {\n return matchQuery(filters, query);\n });\n };\n _proto.findAll = function findAll(arg1, arg2) {\n var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs2[0];\n return Object.keys(filters).length > 0 ? this.queries.filter(function (query) {\n return matchQuery(filters, query);\n }) : this.queries;\n };\n _proto.notify = function notify(event) {\n var _this3 = this;\n notifyManager.batch(function () {\n _this3.listeners.forEach(function (listener) {\n listener(event);\n });\n });\n };\n _proto.onFocus = function onFocus() {\n var _this4 = this;\n notifyManager.batch(function () {\n _this4.queries.forEach(function (query) {\n query.onFocus();\n });\n });\n };\n _proto.onOnline = function onOnline() {\n var _this5 = this;\n notifyManager.batch(function () {\n _this5.queries.forEach(function (query) {\n query.onOnline();\n });\n });\n };\n return QueryCache;\n}(Subscribable);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLogger } from './logger';\nimport { notifyManager } from './notifyManager';\nimport { Retryer } from './retryer';\nimport { noop } from './utils'; // TYPES\n\n// CLASS\nexport var Mutation = /*#__PURE__*/function () {\n function Mutation(config) {\n this.options = _extends({}, config.defaultOptions, config.options);\n this.mutationId = config.mutationId;\n this.mutationCache = config.mutationCache;\n this.observers = [];\n this.state = config.state || getDefaultState();\n this.meta = config.meta;\n }\n var _proto = Mutation.prototype;\n _proto.setState = function setState(state) {\n this.dispatch({\n type: 'setState',\n state: state\n });\n };\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n }\n };\n _proto.removeObserver = function removeObserver(observer) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n };\n _proto.cancel = function cancel() {\n if (this.retryer) {\n this.retryer.cancel();\n return this.retryer.promise.then(noop).catch(noop);\n }\n return Promise.resolve();\n };\n _proto.continue = function _continue() {\n if (this.retryer) {\n this.retryer.continue();\n return this.retryer.promise;\n }\n return this.execute();\n };\n _proto.execute = function execute() {\n var _this = this;\n var data;\n var restored = this.state.status === 'loading';\n var promise = Promise.resolve();\n if (!restored) {\n this.dispatch({\n type: 'loading',\n variables: this.options.variables\n });\n promise = promise.then(function () {\n // Notify cache callback\n _this.mutationCache.config.onMutate == null ? void 0 : _this.mutationCache.config.onMutate(_this.state.variables, _this);\n }).then(function () {\n return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables);\n }).then(function (context) {\n if (context !== _this.state.context) {\n _this.dispatch({\n type: 'loading',\n context: context,\n variables: _this.state.variables\n });\n }\n });\n }\n return promise.then(function () {\n return _this.executeMutation();\n }).then(function (result) {\n data = result; // Notify cache callback\n\n _this.mutationCache.config.onSuccess == null ? void 0 : _this.mutationCache.config.onSuccess(data, _this.state.variables, _this.state.context, _this);\n }).then(function () {\n return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'success',\n data: data\n });\n return data;\n }).catch(function (error) {\n // Notify cache callback\n _this.mutationCache.config.onError == null ? void 0 : _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this); // Log error\n\n getLogger().error(error);\n return Promise.resolve().then(function () {\n return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(undefined, error, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'error',\n error: error\n });\n throw error;\n });\n });\n };\n _proto.executeMutation = function executeMutation() {\n var _this2 = this,\n _this$options$retry;\n this.retryer = new Retryer({\n fn: function fn() {\n if (!_this2.options.mutationFn) {\n return Promise.reject('No mutationFn found');\n }\n return _this2.options.mutationFn(_this2.state.variables);\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay\n });\n return this.retryer.promise;\n };\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n this.state = reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onMutationUpdate(action);\n });\n _this3.mutationCache.notify(_this3);\n });\n };\n return Mutation;\n}();\nexport function getDefaultState() {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isPaused: false,\n status: 'idle',\n variables: undefined\n };\n}\nfunction reducer(state, action) {\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n failureCount: state.failureCount + 1\n });\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n case 'loading':\n return _extends({}, state, {\n context: action.context,\n data: undefined,\n error: null,\n isPaused: false,\n status: 'loading',\n variables: action.variables\n });\n case 'success':\n return _extends({}, state, {\n data: action.data,\n error: null,\n status: 'success',\n isPaused: false\n });\n case 'error':\n return _extends({}, state, {\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n isPaused: false,\n status: 'error'\n });\n case 'setState':\n return _extends({}, state, action.state);\n default:\n return state;\n }\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { notifyManager } from './notifyManager';\nimport { Mutation } from './mutation';\nimport { matchMutation, noop } from './utils';\nimport { Subscribable } from './subscribable'; // TYPES\n\n// CLASS\nexport var MutationCache = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(MutationCache, _Subscribable);\n function MutationCache(config) {\n var _this;\n _this = _Subscribable.call(this) || this;\n _this.config = config || {};\n _this.mutations = [];\n _this.mutationId = 0;\n return _this;\n }\n var _proto = MutationCache.prototype;\n _proto.build = function build(client, options, state) {\n var mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state: state,\n defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined,\n meta: options.meta\n });\n this.add(mutation);\n return mutation;\n };\n _proto.add = function add(mutation) {\n this.mutations.push(mutation);\n this.notify(mutation);\n };\n _proto.remove = function remove(mutation) {\n this.mutations = this.mutations.filter(function (x) {\n return x !== mutation;\n });\n mutation.cancel();\n this.notify(mutation);\n };\n _proto.clear = function clear() {\n var _this2 = this;\n notifyManager.batch(function () {\n _this2.mutations.forEach(function (mutation) {\n _this2.remove(mutation);\n });\n });\n };\n _proto.getAll = function getAll() {\n return this.mutations;\n };\n _proto.find = function find(filters) {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n return this.mutations.find(function (mutation) {\n return matchMutation(filters, mutation);\n });\n };\n _proto.findAll = function findAll(filters) {\n return this.mutations.filter(function (mutation) {\n return matchMutation(filters, mutation);\n });\n };\n _proto.notify = function notify(mutation) {\n var _this3 = this;\n notifyManager.batch(function () {\n _this3.listeners.forEach(function (listener) {\n listener(mutation);\n });\n });\n };\n _proto.onFocus = function onFocus() {\n this.resumePausedMutations();\n };\n _proto.onOnline = function onOnline() {\n this.resumePausedMutations();\n };\n _proto.resumePausedMutations = function resumePausedMutations() {\n var pausedMutations = this.mutations.filter(function (x) {\n return x.state.isPaused;\n });\n return notifyManager.batch(function () {\n return pausedMutations.reduce(function (promise, mutation) {\n return promise.then(function () {\n return mutation.continue().catch(noop);\n });\n }, Promise.resolve());\n });\n };\n return MutationCache;\n}(Subscribable);","import { isCancelable } from './retryer';\nimport { getAbortController } from './utils';\nexport function infiniteQueryBehavior() {\n return {\n onFetch: function onFetch(context) {\n context.fetchFn = function () {\n var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n var refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n var fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n var pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n var isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';\n var isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';\n var oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n var oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n var abortController = getAbortController();\n var abortSignal = abortController == null ? void 0 : abortController.signal;\n var newPageParams = oldPageParams;\n var cancelled = false; // Get query function\n\n var queryFn = context.options.queryFn || function () {\n return Promise.reject('Missing queryFn');\n };\n var buildNewPages = function buildNewPages(pages, param, page, previous) {\n newPageParams = previous ? [param].concat(newPageParams) : [].concat(newPageParams, [param]);\n return previous ? [page].concat(pages) : [].concat(pages, [page]);\n }; // Create function to fetch a page\n\n var fetchPage = function fetchPage(pages, manual, param, previous) {\n if (cancelled) {\n return Promise.reject('Cancelled');\n }\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages);\n }\n var queryFnContext = {\n queryKey: context.queryKey,\n signal: abortSignal,\n pageParam: param,\n meta: context.meta\n };\n var queryFnResult = queryFn(queryFnContext);\n var promise = Promise.resolve(queryFnResult).then(function (page) {\n return buildNewPages(pages, param, page, previous);\n });\n if (isCancelable(queryFnResult)) {\n var promiseAsAny = promise;\n promiseAsAny.cancel = queryFnResult.cancel;\n }\n return promise;\n };\n var promise; // Fetch first page?\n\n if (!oldPages.length) {\n promise = fetchPage([]);\n } // Fetch next page?\n else if (isFetchingNextPage) {\n var manual = typeof pageParam !== 'undefined';\n var param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param);\n } // Fetch previous page?\n else if (isFetchingPreviousPage) {\n var _manual = typeof pageParam !== 'undefined';\n var _param = _manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, _manual, _param, true);\n } // Refetch pages\n else {\n (function () {\n newPageParams = [];\n var manual = typeof context.options.getNextPageParam === 'undefined';\n var shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page\n\n promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages\n\n var _loop = function _loop(i) {\n promise = promise.then(function (pages) {\n var shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n if (shouldFetchNextPage) {\n var _param2 = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n return fetchPage(pages, manual, _param2);\n }\n return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n });\n };\n for (var i = 1; i < oldPages.length; i++) {\n _loop(i);\n }\n })();\n }\n var finalPromise = promise.then(function (pages) {\n return {\n pages: pages,\n pageParams: newPageParams\n };\n });\n var finalPromiseAsAny = finalPromise;\n finalPromiseAsAny.cancel = function () {\n cancelled = true;\n abortController == null ? void 0 : abortController.abort();\n if (isCancelable(promise)) {\n promise.cancel();\n }\n };\n return finalPromise;\n };\n }\n };\n}\nexport function getNextPageParam(options, pages) {\n return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nexport function getPreviousPageParam(options, pages) {\n return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasNextPage(options, pages) {\n if (options.getNextPageParam && Array.isArray(pages)) {\n var nextPageParam = getNextPageParam(options, pages);\n return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;\n }\n}\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasPreviousPage(options, pages) {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n var previousPageParam = getPreviousPageParam(options, pages);\n return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { hashQueryKey, noop, parseFilterArgs, parseQueryArgs, partialMatchKey, hashQueryKeyByOptions } from './utils';\nimport { QueryCache } from './queryCache';\nimport { MutationCache } from './mutationCache';\nimport { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { notifyManager } from './notifyManager';\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior';\n// CLASS\nexport var QueryClient = /*#__PURE__*/function () {\n function QueryClient(config) {\n if (config === void 0) {\n config = {};\n }\n this.queryCache = config.queryCache || new QueryCache();\n this.mutationCache = config.mutationCache || new MutationCache();\n this.defaultOptions = config.defaultOptions || {};\n this.queryDefaults = [];\n this.mutationDefaults = [];\n }\n var _proto = QueryClient.prototype;\n _proto.mount = function mount() {\n var _this = this;\n this.unsubscribeFocus = focusManager.subscribe(function () {\n if (focusManager.isFocused() && onlineManager.isOnline()) {\n _this.mutationCache.onFocus();\n _this.queryCache.onFocus();\n }\n });\n this.unsubscribeOnline = onlineManager.subscribe(function () {\n if (focusManager.isFocused() && onlineManager.isOnline()) {\n _this.mutationCache.onOnline();\n _this.queryCache.onOnline();\n }\n });\n };\n _proto.unmount = function unmount() {\n var _this$unsubscribeFocu, _this$unsubscribeOnli;\n (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n };\n _proto.isFetching = function isFetching(arg1, arg2) {\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n filters.fetching = true;\n return this.queryCache.findAll(filters).length;\n };\n _proto.isMutating = function isMutating(filters) {\n return this.mutationCache.findAll(_extends({}, filters, {\n fetching: true\n })).length;\n };\n _proto.getQueryData = function getQueryData(queryKey, filters) {\n var _this$queryCache$find;\n return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n };\n _proto.getQueriesData = function getQueriesData(queryKeyOrFilters) {\n return this.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref) {\n var queryKey = _ref.queryKey,\n state = _ref.state;\n var data = state.data;\n return [queryKey, data];\n });\n };\n _proto.setQueryData = function setQueryData(queryKey, updater, options) {\n var parsedOptions = parseQueryArgs(queryKey);\n var defaultedOptions = this.defaultQueryOptions(parsedOptions);\n return this.queryCache.build(this, defaultedOptions).setData(updater, options);\n };\n _proto.setQueriesData = function setQueriesData(queryKeyOrFilters, updater, options) {\n var _this2 = this;\n return notifyManager.batch(function () {\n return _this2.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref2) {\n var queryKey = _ref2.queryKey;\n return [queryKey, _this2.setQueryData(queryKey, updater, options)];\n });\n });\n };\n _proto.getQueryState = function getQueryState(queryKey, filters) {\n var _this$queryCache$find2;\n return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n };\n _proto.removeQueries = function removeQueries(arg1, arg2) {\n var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs2[0];\n var queryCache = this.queryCache;\n notifyManager.batch(function () {\n queryCache.findAll(filters).forEach(function (query) {\n queryCache.remove(query);\n });\n });\n };\n _proto.resetQueries = function resetQueries(arg1, arg2, arg3) {\n var _this3 = this;\n var _parseFilterArgs3 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs3[0],\n options = _parseFilterArgs3[1];\n var queryCache = this.queryCache;\n var refetchFilters = _extends({}, filters, {\n active: true\n });\n return notifyManager.batch(function () {\n queryCache.findAll(filters).forEach(function (query) {\n query.reset();\n });\n return _this3.refetchQueries(refetchFilters, options);\n });\n };\n _proto.cancelQueries = function cancelQueries(arg1, arg2, arg3) {\n var _this4 = this;\n var _parseFilterArgs4 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs4[0],\n _parseFilterArgs4$ = _parseFilterArgs4[1],\n cancelOptions = _parseFilterArgs4$ === void 0 ? {} : _parseFilterArgs4$;\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true;\n }\n var promises = notifyManager.batch(function () {\n return _this4.queryCache.findAll(filters).map(function (query) {\n return query.cancel(cancelOptions);\n });\n });\n return Promise.all(promises).then(noop).catch(noop);\n };\n _proto.invalidateQueries = function invalidateQueries(arg1, arg2, arg3) {\n var _ref3,\n _filters$refetchActiv,\n _filters$refetchInact,\n _this5 = this;\n var _parseFilterArgs5 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs5[0],\n options = _parseFilterArgs5[1];\n var refetchFilters = _extends({}, filters, {\n // if filters.refetchActive is not provided and filters.active is explicitly false,\n // e.g. invalidateQueries({ active: false }), we don't want to refetch active queries\n active: (_ref3 = (_filters$refetchActiv = filters.refetchActive) != null ? _filters$refetchActiv : filters.active) != null ? _ref3 : true,\n inactive: (_filters$refetchInact = filters.refetchInactive) != null ? _filters$refetchInact : false\n });\n return notifyManager.batch(function () {\n _this5.queryCache.findAll(filters).forEach(function (query) {\n query.invalidate();\n });\n return _this5.refetchQueries(refetchFilters, options);\n });\n };\n _proto.refetchQueries = function refetchQueries(arg1, arg2, arg3) {\n var _this6 = this;\n var _parseFilterArgs6 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs6[0],\n options = _parseFilterArgs6[1];\n var promises = notifyManager.batch(function () {\n return _this6.queryCache.findAll(filters).map(function (query) {\n return query.fetch(undefined, _extends({}, options, {\n meta: {\n refetchPage: filters == null ? void 0 : filters.refetchPage\n }\n }));\n });\n });\n var promise = Promise.all(promises).then(noop);\n if (!(options == null ? void 0 : options.throwOnError)) {\n promise = promise.catch(noop);\n }\n return promise;\n };\n _proto.fetchQuery = function fetchQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n var defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652\n\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false;\n }\n var query = this.queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n };\n _proto.prefetchQuery = function prefetchQuery(arg1, arg2, arg3) {\n return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);\n };\n _proto.fetchInfiniteQuery = function fetchInfiniteQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n parsedOptions.behavior = infiniteQueryBehavior();\n return this.fetchQuery(parsedOptions);\n };\n _proto.prefetchInfiniteQuery = function prefetchInfiniteQuery(arg1, arg2, arg3) {\n return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);\n };\n _proto.cancelMutations = function cancelMutations() {\n var _this7 = this;\n var promises = notifyManager.batch(function () {\n return _this7.mutationCache.getAll().map(function (mutation) {\n return mutation.cancel();\n });\n });\n return Promise.all(promises).then(noop).catch(noop);\n };\n _proto.resumePausedMutations = function resumePausedMutations() {\n return this.getMutationCache().resumePausedMutations();\n };\n _proto.executeMutation = function executeMutation(options) {\n return this.mutationCache.build(this, options).execute();\n };\n _proto.getQueryCache = function getQueryCache() {\n return this.queryCache;\n };\n _proto.getMutationCache = function getMutationCache() {\n return this.mutationCache;\n };\n _proto.getDefaultOptions = function getDefaultOptions() {\n return this.defaultOptions;\n };\n _proto.setDefaultOptions = function setDefaultOptions(options) {\n this.defaultOptions = options;\n };\n _proto.setQueryDefaults = function setQueryDefaults(queryKey, options) {\n var result = this.queryDefaults.find(function (x) {\n return hashQueryKey(queryKey) === hashQueryKey(x.queryKey);\n });\n if (result) {\n result.defaultOptions = options;\n } else {\n this.queryDefaults.push({\n queryKey: queryKey,\n defaultOptions: options\n });\n }\n };\n _proto.getQueryDefaults = function getQueryDefaults(queryKey) {\n var _this$queryDefaults$f;\n return queryKey ? (_this$queryDefaults$f = this.queryDefaults.find(function (x) {\n return partialMatchKey(queryKey, x.queryKey);\n })) == null ? void 0 : _this$queryDefaults$f.defaultOptions : undefined;\n };\n _proto.setMutationDefaults = function setMutationDefaults(mutationKey, options) {\n var result = this.mutationDefaults.find(function (x) {\n return hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey);\n });\n if (result) {\n result.defaultOptions = options;\n } else {\n this.mutationDefaults.push({\n mutationKey: mutationKey,\n defaultOptions: options\n });\n }\n };\n _proto.getMutationDefaults = function getMutationDefaults(mutationKey) {\n var _this$mutationDefault;\n return mutationKey ? (_this$mutationDefault = this.mutationDefaults.find(function (x) {\n return partialMatchKey(mutationKey, x.mutationKey);\n })) == null ? void 0 : _this$mutationDefault.defaultOptions : undefined;\n };\n _proto.defaultQueryOptions = function defaultQueryOptions(options) {\n if (options == null ? void 0 : options._defaulted) {\n return options;\n }\n var defaultedOptions = _extends({}, this.defaultOptions.queries, this.getQueryDefaults(options == null ? void 0 : options.queryKey), options, {\n _defaulted: true\n });\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n }\n return defaultedOptions;\n };\n _proto.defaultQueryObserverOptions = function defaultQueryObserverOptions(options) {\n return this.defaultQueryOptions(options);\n };\n _proto.defaultMutationOptions = function defaultMutationOptions(options) {\n if (options == null ? void 0 : options._defaulted) {\n return options;\n }\n return _extends({}, this.defaultOptions.mutations, this.getMutationDefaults(options == null ? void 0 : options.mutationKey), options, {\n _defaulted: true\n });\n };\n _proto.clear = function clear() {\n this.queryCache.clear();\n this.mutationCache.clear();\n };\n return QueryClient;\n}();","import { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { sleep } from './utils';\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1000 * Math.pow(2, failureCount), 30000);\n}\nexport function isCancelable(value) {\n return typeof (value == null ? void 0 : value.cancel) === 'function';\n}\nexport var CancelledError = function CancelledError(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n};\nexport function isCancelledError(value) {\n return value instanceof CancelledError;\n} // CLASS\n\nexport var Retryer = function Retryer(config) {\n var _this = this;\n var cancelRetry = false;\n var cancelFn;\n var continueFn;\n var promiseResolve;\n var promiseReject;\n this.abort = config.abort;\n this.cancel = function (cancelOptions) {\n return cancelFn == null ? void 0 : cancelFn(cancelOptions);\n };\n this.cancelRetry = function () {\n cancelRetry = true;\n };\n this.continueRetry = function () {\n cancelRetry = false;\n };\n this.continue = function () {\n return continueFn == null ? void 0 : continueFn();\n };\n this.failureCount = 0;\n this.isPaused = false;\n this.isResolved = false;\n this.isTransportCancelable = false;\n this.promise = new Promise(function (outerResolve, outerReject) {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n var resolve = function resolve(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onSuccess == null ? void 0 : config.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n var reject = function reject(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onError == null ? void 0 : config.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n var pause = function pause() {\n return new Promise(function (continueResolve) {\n continueFn = continueResolve;\n _this.isPaused = true;\n config.onPause == null ? void 0 : config.onPause();\n }).then(function () {\n continueFn = undefined;\n _this.isPaused = false;\n config.onContinue == null ? void 0 : config.onContinue();\n });\n }; // Create loop function\n\n var run = function run() {\n // Do nothing if already resolved\n if (_this.isResolved) {\n return;\n }\n var promiseOrValue; // Execute query\n\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n } // Create callback to cancel this fetch\n\n cancelFn = function cancelFn(cancelOptions) {\n if (!_this.isResolved) {\n reject(new CancelledError(cancelOptions));\n _this.abort == null ? void 0 : _this.abort(); // Cancel transport if supported\n\n if (isCancelable(promiseOrValue)) {\n try {\n promiseOrValue.cancel();\n } catch (_unused) {}\n }\n }\n }; // Check if the transport layer support cancellation\n\n _this.isTransportCancelable = isCancelable(promiseOrValue);\n Promise.resolve(promiseOrValue).then(resolve).catch(function (error) {\n var _config$retry, _config$retryDelay;\n\n // Stop if the fetch is already resolved\n if (_this.isResolved) {\n return;\n } // Do we need to retry the request?\n\n var retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n var delay = typeof retryDelay === 'function' ? retryDelay(_this.failureCount, error) : retryDelay;\n var shouldRetry = retry === true || typeof retry === 'number' && _this.failureCount < retry || typeof retry === 'function' && retry(_this.failureCount, error);\n if (cancelRetry || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n }\n _this.failureCount++; // Notify on fail\n\n config.onFail == null ? void 0 : config.onFail(_this.failureCount, error); // Delay\n\n sleep(delay) // Pause if the document is not visible or when the device is offline\n .then(function () {\n if (!focusManager.isFocused() || !onlineManager.isOnline()) {\n return pause();\n }\n }).then(function () {\n if (cancelRetry) {\n reject(error);\n } else {\n run();\n }\n });\n });\n }; // Start loop\n\n run();\n};","export var Subscribable = /*#__PURE__*/function () {\n function Subscribable() {\n this.listeners = [];\n }\n var _proto = Subscribable.prototype;\n _proto.subscribe = function subscribe(listener) {\n var _this = this;\n var callback = listener || function () {\n return undefined;\n };\n this.listeners.push(callback);\n this.onSubscribe();\n return function () {\n _this.listeners = _this.listeners.filter(function (x) {\n return x !== callback;\n });\n _this.onUnsubscribe();\n };\n };\n _proto.hasListeners = function hasListeners() {\n return this.listeners.length > 0;\n };\n _proto.onSubscribe = function onSubscribe() {// Do nothing\n };\n _proto.onUnsubscribe = function onUnsubscribe() {// Do nothing\n };\n return Subscribable;\n}();","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// TYPES\n// UTILS\nexport var isServer = typeof window === 'undefined';\nexport function noop() {\n return undefined;\n}\nexport function functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nexport function isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nexport function ensureQueryKeyArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function difference(array1, array2) {\n return array1.filter(function (x) {\n return array2.indexOf(x) === -1;\n });\n}\nexport function replaceAt(array, index, value) {\n var copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nexport function timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nexport function parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n queryKey: arg1,\n queryFn: arg2\n });\n }\n return _extends({}, arg2, {\n queryKey: arg1\n });\n}\nexport function parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n mutationKey: arg1,\n mutationFn: arg2\n });\n }\n return _extends({}, arg2, {\n mutationKey: arg1\n });\n }\n if (typeof arg1 === 'function') {\n return _extends({}, arg2, {\n mutationFn: arg1\n });\n }\n return _extends({}, arg1);\n}\nexport function parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [_extends({}, arg2, {\n queryKey: arg1\n }), arg3] : [arg1 || {}, arg2];\n}\nexport function parseMutationFilterArgs(arg1, arg2) {\n return isQueryKey(arg1) ? _extends({}, arg2, {\n mutationKey: arg1\n }) : arg1;\n}\nexport function mapQueryStatusFilter(active, inactive) {\n if (active === true && inactive === true || active == null && inactive == null) {\n return 'all';\n } else if (active === false && inactive === false) {\n return 'none';\n } else {\n // At this point, active|inactive can only be true|false or false|true\n // so, when only one value is provided, the missing one has to be the negated value\n var isActive = active != null ? active : !inactive;\n return isActive ? 'active' : 'inactive';\n }\n}\nexport function matchQuery(filters, query) {\n var active = filters.active,\n exact = filters.exact,\n fetching = filters.fetching,\n inactive = filters.inactive,\n predicate = filters.predicate,\n queryKey = filters.queryKey,\n stale = filters.stale;\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n var queryStatusFilter = mapQueryStatusFilter(active, inactive);\n if (queryStatusFilter === 'none') {\n return false;\n } else if (queryStatusFilter !== 'all') {\n var isActive = query.isActive();\n if (queryStatusFilter === 'active' && !isActive) {\n return false;\n }\n if (queryStatusFilter === 'inactive' && isActive) {\n return false;\n }\n }\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false;\n }\n if (typeof fetching === 'boolean' && query.isFetching() !== fetching) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nexport function matchMutation(filters, mutation) {\n var exact = filters.exact,\n fetching = filters.fetching,\n predicate = filters.predicate,\n mutationKey = filters.mutationKey;\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nexport function hashQueryKeyByOptions(queryKey, options) {\n var hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n */\n\nexport function hashQueryKey(queryKey) {\n var asArray = ensureQueryKeyArray(queryKey);\n return stableValueHash(asArray);\n}\n/**\n * Hashes the value into a stable hash.\n */\n\nexport function stableValueHash(value) {\n return JSON.stringify(value, function (_, val) {\n return isPlainObject(val) ? Object.keys(val).sort().reduce(function (result, key) {\n result[key] = val[key];\n return result;\n }, {}) : val;\n });\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nexport function partialMatchKey(a, b) {\n return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b));\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nexport function partialDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some(function (key) {\n return !partialDeepEqual(a[key], b[key]);\n });\n }\n return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nexport function replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n var array = Array.isArray(a) && Array.isArray(b);\n if (array || isPlainObject(a) && isPlainObject(b)) {\n var aSize = array ? a.length : Object.keys(a).length;\n var bItems = array ? b : Object.keys(b);\n var bSize = bItems.length;\n var copy = array ? [] : {};\n var equalItems = 0;\n for (var i = 0; i < bSize; i++) {\n var key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nexport function shallowEqualObjects(a, b) {\n if (a && !b || b && !a) {\n return false;\n }\n for (var key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nexport function isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n var ctor = o.constructor;\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n var prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\nexport function isQueryKey(value) {\n return typeof value === 'string' || Array.isArray(value);\n}\nexport function isError(value) {\n return value instanceof Error;\n}\nexport function sleep(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nexport function scheduleMicrotask(callback) {\n Promise.resolve().then(callback).catch(function (error) {\n return setTimeout(function () {\n throw error;\n });\n });\n}\nexport function getAbortController() {\n if (typeof AbortController === 'function') {\n return new AbortController();\n }\n}","import ReactDOM from 'react-dom';\nexport var unstable_batchedUpdates = ReactDOM.unstable_batchedUpdates;","import { notifyManager } from '../core';\nimport { unstable_batchedUpdates } from './reactBatchedUpdates';\nnotifyManager.setBatchNotifyFunction(unstable_batchedUpdates);","export var logger = console;","import { setLogger } from '../core';\nimport { logger } from './logger';\nsetLogger(logger);","import React from 'react';\nvar defaultContext = /*#__PURE__*/React.createContext(undefined);\nvar QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(contextSharing) {\n if (contextSharing && typeof window !== 'undefined') {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n return window.ReactQueryClientContext;\n }\n return defaultContext;\n}\nexport var useQueryClient = function useQueryClient() {\n var queryClient = React.useContext(getQueryClientContext(React.useContext(QueryClientSharingContext)));\n if (!queryClient) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one');\n }\n return queryClient;\n};\nexport var QueryClientProvider = function QueryClientProvider(_ref) {\n var client = _ref.client,\n _ref$contextSharing = _ref.contextSharing,\n contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing,\n children = _ref.children;\n React.useEffect(function () {\n client.mount();\n return function () {\n client.unmount();\n };\n }, [client]);\n var Context = getQueryClientContext(contextSharing);\n return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {\n value: contextSharing\n }, /*#__PURE__*/React.createElement(Context.Provider, {\n value: client\n }, children));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { isServer, isValidTimeout, noop, replaceEqualDeep, shallowEqualObjects, timeUntilStale } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { focusManager } from './focusManager';\nimport { Subscribable } from './subscribable';\nimport { getLogger } from './logger';\nimport { isCancelledError } from './retryer';\nexport var QueryObserver = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(QueryObserver, _Subscribable);\n function QueryObserver(client, options) {\n var _this;\n _this = _Subscribable.call(this) || this;\n _this.client = client;\n _this.options = options;\n _this.trackedProps = [];\n _this.selectError = null;\n _this.bindMethods();\n _this.setOptions(options);\n return _this;\n }\n var _proto = QueryObserver.prototype;\n _proto.bindMethods = function bindMethods() {\n this.remove = this.remove.bind(this);\n this.refetch = this.refetch.bind(this);\n };\n _proto.onSubscribe = function onSubscribe() {\n if (this.listeners.length === 1) {\n this.currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch();\n }\n this.updateTimers();\n }\n };\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.listeners.length) {\n this.destroy();\n }\n };\n _proto.shouldFetchOnReconnect = function shouldFetchOnReconnect() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);\n };\n _proto.shouldFetchOnWindowFocus = function shouldFetchOnWindowFocus() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);\n };\n _proto.destroy = function destroy() {\n this.listeners = [];\n this.clearTimers();\n this.currentQuery.removeObserver(this);\n };\n _proto.setOptions = function setOptions(options, notifyOptions) {\n var prevOptions = this.options;\n var prevQuery = this.currentQuery;\n this.options = this.client.defaultQueryObserverOptions(options);\n if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {\n throw new Error('Expected enabled to be a boolean');\n } // Keep previous query key if the user does not supply one\n\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey;\n }\n this.updateQuery();\n var mounted = this.hasListeners(); // Fetch if there are subscribers\n\n if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n this.executeFetch();\n } // Update result\n\n this.updateResult(notifyOptions); // Update stale interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n this.updateStaleTimeout();\n }\n var nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {\n this.updateRefetchInterval(nextRefetchInterval);\n }\n };\n _proto.getOptimisticResult = function getOptimisticResult(options) {\n var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n return this.createResult(query, defaultedOptions);\n };\n _proto.getCurrentResult = function getCurrentResult() {\n return this.currentResult;\n };\n _proto.trackResult = function trackResult(result, defaultedOptions) {\n var _this2 = this;\n var trackedResult = {};\n var trackProp = function trackProp(key) {\n if (!_this2.trackedProps.includes(key)) {\n _this2.trackedProps.push(key);\n }\n };\n Object.keys(result).forEach(function (key) {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: function get() {\n trackProp(key);\n return result[key];\n }\n });\n });\n if (defaultedOptions.useErrorBoundary || defaultedOptions.suspense) {\n trackProp('error');\n }\n return trackedResult;\n };\n _proto.getNextResult = function getNextResult(options) {\n var _this3 = this;\n return new Promise(function (resolve, reject) {\n var unsubscribe = _this3.subscribe(function (result) {\n if (!result.isFetching) {\n unsubscribe();\n if (result.isError && (options == null ? void 0 : options.throwOnError)) {\n reject(result.error);\n } else {\n resolve(result);\n }\n }\n });\n });\n };\n _proto.getCurrentQuery = function getCurrentQuery() {\n return this.currentQuery;\n };\n _proto.remove = function remove() {\n this.client.getQueryCache().remove(this.currentQuery);\n };\n _proto.refetch = function refetch(options) {\n return this.fetch(_extends({}, options, {\n meta: {\n refetchPage: options == null ? void 0 : options.refetchPage\n }\n }));\n };\n _proto.fetchOptimistic = function fetchOptimistic(options) {\n var _this4 = this;\n var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n return query.fetch().then(function () {\n return _this4.createResult(query, defaultedOptions);\n });\n };\n _proto.fetch = function fetch(fetchOptions) {\n var _this5 = this;\n return this.executeFetch(fetchOptions).then(function () {\n _this5.updateResult();\n return _this5.currentResult;\n });\n };\n _proto.executeFetch = function executeFetch(fetchOptions) {\n // Make sure we reference the latest query as the current one might have been removed\n this.updateQuery(); // Fetch\n\n var promise = this.currentQuery.fetch(this.options, fetchOptions);\n if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) {\n promise = promise.catch(noop);\n }\n return promise;\n };\n _proto.updateStaleTimeout = function updateStaleTimeout() {\n var _this6 = this;\n this.clearStaleTimeout();\n if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n return;\n }\n var time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n\n var timeout = time + 1;\n this.staleTimeoutId = setTimeout(function () {\n if (!_this6.currentResult.isStale) {\n _this6.updateResult();\n }\n }, timeout);\n };\n _proto.computeRefetchInterval = function computeRefetchInterval() {\n var _this$options$refetch;\n return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;\n };\n _proto.updateRefetchInterval = function updateRefetchInterval(nextInterval) {\n var _this7 = this;\n this.clearRefetchInterval();\n this.currentRefetchInterval = nextInterval;\n if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {\n return;\n }\n this.refetchIntervalId = setInterval(function () {\n if (_this7.options.refetchIntervalInBackground || focusManager.isFocused()) {\n _this7.executeFetch();\n }\n }, this.currentRefetchInterval);\n };\n _proto.updateTimers = function updateTimers() {\n this.updateStaleTimeout();\n this.updateRefetchInterval(this.computeRefetchInterval());\n };\n _proto.clearTimers = function clearTimers() {\n this.clearStaleTimeout();\n this.clearRefetchInterval();\n };\n _proto.clearStaleTimeout = function clearStaleTimeout() {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId);\n this.staleTimeoutId = undefined;\n }\n };\n _proto.clearRefetchInterval = function clearRefetchInterval() {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId);\n this.refetchIntervalId = undefined;\n }\n };\n _proto.createResult = function createResult(query, options) {\n var prevQuery = this.currentQuery;\n var prevOptions = this.options;\n var prevResult = this.currentResult;\n var prevResultState = this.currentResultState;\n var prevResultOptions = this.currentResultOptions;\n var queryChange = query !== prevQuery;\n var queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n var prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n var state = query.state;\n var dataUpdatedAt = state.dataUpdatedAt,\n error = state.error,\n errorUpdatedAt = state.errorUpdatedAt,\n isFetching = state.isFetching,\n status = state.status;\n var isPreviousData = false;\n var isPlaceholderData = false;\n var data; // Optimistically set result in fetching state if needed\n\n if (options.optimisticResults) {\n var mounted = this.hasListeners();\n var fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n var fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n isFetching = true;\n if (!dataUpdatedAt) {\n status = 'loading';\n }\n }\n } // Keep previous data if needed\n\n if (options.keepPreviousData && !state.dataUpdateCount && (prevQueryResult == null ? void 0 : prevQueryResult.isSuccess) && status !== 'error') {\n data = prevQueryResult.data;\n dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n status = prevQueryResult.status;\n isPreviousData = true;\n } // Select data if needed\n else if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {\n data = this.selectResult;\n } else {\n try {\n this.selectFn = options.select;\n data = options.select(state.data);\n if (options.structuralSharing !== false) {\n data = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, data);\n }\n this.selectResult = data;\n this.selectError = null;\n } catch (selectError) {\n getLogger().error(selectError);\n this.selectError = selectError;\n }\n }\n } // Use query data\n else {\n data = state.data;\n } // Show placeholder data if needed\n\n if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && (status === 'loading' || status === 'idle')) {\n var placeholderData; // Memoize placeholder data\n\n if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData);\n if (options.structuralSharing !== false) {\n placeholderData = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, placeholderData);\n }\n this.selectError = null;\n } catch (selectError) {\n getLogger().error(selectError);\n this.selectError = selectError;\n }\n }\n }\n if (typeof placeholderData !== 'undefined') {\n status = 'success';\n data = placeholderData;\n isPlaceholderData = true;\n }\n }\n if (this.selectError) {\n error = this.selectError;\n data = this.selectResult;\n errorUpdatedAt = Date.now();\n status = 'error';\n }\n var result = {\n status: status,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\n isIdle: status === 'idle',\n data: data,\n dataUpdatedAt: dataUpdatedAt,\n error: error,\n errorUpdatedAt: errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching: isFetching,\n isRefetching: isFetching && status !== 'loading',\n isLoadingError: status === 'error' && state.dataUpdatedAt === 0,\n isPlaceholderData: isPlaceholderData,\n isPreviousData: isPreviousData,\n isRefetchError: status === 'error' && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove\n };\n return result;\n };\n _proto.shouldNotifyListeners = function shouldNotifyListeners(result, prevResult) {\n if (!prevResult) {\n return true;\n }\n var _this$options = this.options,\n notifyOnChangeProps = _this$options.notifyOnChangeProps,\n notifyOnChangePropsExclusions = _this$options.notifyOnChangePropsExclusions;\n if (!notifyOnChangeProps && !notifyOnChangePropsExclusions) {\n return true;\n }\n if (notifyOnChangeProps === 'tracked' && !this.trackedProps.length) {\n return true;\n }\n var includedProps = notifyOnChangeProps === 'tracked' ? this.trackedProps : notifyOnChangeProps;\n return Object.keys(result).some(function (key) {\n var typedKey = key;\n var changed = result[typedKey] !== prevResult[typedKey];\n var isIncluded = includedProps == null ? void 0 : includedProps.some(function (x) {\n return x === key;\n });\n var isExcluded = notifyOnChangePropsExclusions == null ? void 0 : notifyOnChangePropsExclusions.some(function (x) {\n return x === key;\n });\n return changed && !isExcluded && (!includedProps || isIncluded);\n });\n };\n _proto.updateResult = function updateResult(notifyOptions) {\n var prevResult = this.currentResult;\n this.currentResult = this.createResult(this.currentQuery, this.options);\n this.currentResultState = this.currentQuery.state;\n this.currentResultOptions = this.options; // Only notify if something has changed\n\n if (shallowEqualObjects(this.currentResult, prevResult)) {\n return;\n } // Determine which callbacks to trigger\n\n var defaultNotifyOptions = {\n cache: true\n };\n if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && this.shouldNotifyListeners(this.currentResult, prevResult)) {\n defaultNotifyOptions.listeners = true;\n }\n this.notify(_extends({}, defaultNotifyOptions, notifyOptions));\n };\n _proto.updateQuery = function updateQuery() {\n var query = this.client.getQueryCache().build(this.client, this.options);\n if (query === this.currentQuery) {\n return;\n }\n var prevQuery = this.currentQuery;\n this.currentQuery = query;\n this.currentQueryInitialState = query.state;\n this.previousQueryResult = this.currentResult;\n if (this.hasListeners()) {\n prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n query.addObserver(this);\n }\n };\n _proto.onQueryUpdate = function onQueryUpdate(action) {\n var notifyOptions = {};\n if (action.type === 'success') {\n notifyOptions.onSuccess = true;\n } else if (action.type === 'error' && !isCancelledError(action.error)) {\n notifyOptions.onError = true;\n }\n this.updateResult(notifyOptions);\n if (this.hasListeners()) {\n this.updateTimers();\n }\n };\n _proto.notify = function notify(notifyOptions) {\n var _this8 = this;\n notifyManager.batch(function () {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n _this8.options.onSuccess == null ? void 0 : _this8.options.onSuccess(_this8.currentResult.data);\n _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(_this8.currentResult.data, null);\n } else if (notifyOptions.onError) {\n _this8.options.onError == null ? void 0 : _this8.options.onError(_this8.currentResult.error);\n _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(undefined, _this8.currentResult.error);\n } // Then trigger the listeners\n\n if (notifyOptions.listeners) {\n _this8.listeners.forEach(function (listener) {\n listener(_this8.currentResult);\n });\n } // Then the cache listeners\n\n if (notifyOptions.cache) {\n _this8.client.getQueryCache().notify({\n query: _this8.currentQuery,\n type: 'observerResultsUpdated'\n });\n }\n });\n };\n return QueryObserver;\n}(Subscribable);\nfunction shouldLoadOnMount(query, options) {\n return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (options.enabled !== false) {\n var value = typeof field === 'function' ? field(query) : field;\n return value === 'always' || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);\n}\nfunction isStale(query, options) {\n return query.isStaleByTime(options.staleTime);\n}","import React from 'react'; // CONTEXT\n\nfunction createValue() {\n var _isReset = false;\n return {\n clearReset: function clearReset() {\n _isReset = false;\n },\n reset: function reset() {\n _isReset = true;\n },\n isReset: function isReset() {\n return _isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = /*#__PURE__*/React.createContext(createValue()); // HOOK\n\nexport var useQueryErrorResetBoundary = function useQueryErrorResetBoundary() {\n return React.useContext(QueryErrorResetBoundaryContext);\n}; // COMPONENT\n\nexport var QueryErrorResetBoundary = function QueryErrorResetBoundary(_ref) {\n var children = _ref.children;\n var value = React.useMemo(function () {\n return createValue();\n }, []);\n return /*#__PURE__*/React.createElement(QueryErrorResetBoundaryContext.Provider, {\n value: value\n }, typeof children === 'function' ? children(value) : children);\n};","import { QueryObserver } from '../core';\nimport { parseQueryArgs } from '../core/utils';\nimport { useBaseQuery } from './useBaseQuery'; // HOOK\n\nexport function useQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n return useBaseQuery(parsedOptions, QueryObserver);\n}","import React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary';\nimport { useQueryClient } from './QueryClientProvider';\nimport { shouldThrowError } from './utils';\nexport function useBaseQuery(options, Observer) {\n var mountedRef = React.useRef(false);\n var _React$useState = React.useState(0),\n forceUpdate = _React$useState[1];\n var queryClient = useQueryClient();\n var errorResetBoundary = useQueryErrorResetBoundary();\n var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options\n\n defaultedOptions.optimisticResults = true; // Include callbacks in batch renders\n\n if (defaultedOptions.onError) {\n defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);\n }\n if (defaultedOptions.onSuccess) {\n defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);\n }\n if (defaultedOptions.onSettled) {\n defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);\n }\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000;\n } // Set cache time to 1 if the option has been set to 0\n // when using suspense to prevent infinite loop of fetches\n\n if (defaultedOptions.cacheTime === 0) {\n defaultedOptions.cacheTime = 1;\n }\n }\n if (defaultedOptions.suspense || defaultedOptions.useErrorBoundary) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n defaultedOptions.retryOnMount = false;\n }\n }\n var _React$useState2 = React.useState(function () {\n return new Observer(queryClient, defaultedOptions);\n }),\n observer = _React$useState2[0];\n var result = observer.getOptimisticResult(defaultedOptions);\n React.useEffect(function () {\n mountedRef.current = true;\n errorResetBoundary.clearReset();\n var unsubscribe = observer.subscribe(notifyManager.batchCalls(function () {\n if (mountedRef.current) {\n forceUpdate(function (x) {\n return x + 1;\n });\n }\n })); // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n\n observer.updateResult();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, [errorResetBoundary, observer]);\n React.useEffect(function () {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, {\n listeners: false\n });\n }, [defaultedOptions, observer]); // Handle suspense\n\n if (defaultedOptions.suspense && result.isLoading) {\n throw observer.fetchOptimistic(defaultedOptions).then(function (_ref) {\n var data = _ref.data;\n defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n }).catch(function (error) {\n errorResetBoundary.clearReset();\n defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);\n });\n } // Handle error boundary\n\n if (result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(defaultedOptions.suspense, defaultedOptions.useErrorBoundary, [result.error, observer.getCurrentQuery()])) {\n throw result.error;\n } // Handle result property usage tracking\n\n if (defaultedOptions.notifyOnChangeProps === 'tracked') {\n result = observer.trackResult(result, defaultedOptions);\n }\n return result;\n}","export function shouldThrowError(suspense, _useErrorBoundary, params) {\n // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n if (typeof _useErrorBoundary === 'function') {\n return _useErrorBoundary.apply(void 0, params);\n } // Allow useErrorBoundary to override suspense's throwing behavior\n\n if (typeof _useErrorBoundary === 'boolean') return _useErrorBoundary; // If suspense is enabled default to throwing errors\n\n return !!suspense;\n}","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\nvar React = require('react');\nvar React__default = _interopDefault(React);\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n var mountedInstances = [];\n var state;\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n var SideEffect = /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n var _proto = SideEffect.prototype;\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n return SideEffect;\n }(React.PureComponent);\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n return SideEffect;\n };\n}\nmodule.exports = withSideEffect;","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (!isNullOrUndefined(searchValue)) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.replace-all');\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\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 = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n\n this._isTicking = false;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth ā€” if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","exports.components = {\n \"component---src-pages-404-tsx\": () => import(\"./../../../src/pages/404.tsx\" /* webpackChunkName: \"component---src-pages-404-tsx\" */),\n \"component---src-pages-index-tsx\": () => import(\"./../../../src/pages/index.tsx\" /* webpackChunkName: \"component---src-pages-index-tsx\" */),\n \"component---src-pages-pages-page-slug-detail-page-slug-detail-page-page-tsx\": () => import(\"./../../../src/pages/pages/[pageSlug]/[detailPageSlug]/DetailPagePage.tsx\" /* webpackChunkName: \"component---src-pages-pages-page-slug-detail-page-slug-detail-page-page-tsx\" */),\n \"component---src-pages-pages-page-slug-detail-page-slug-index-tsx\": () => import(\"./../../../src/pages/pages/[pageSlug]/[detailPageSlug]/index.tsx\" /* webpackChunkName: \"component---src-pages-pages-page-slug-detail-page-slug-index-tsx\" */),\n \"component---src-pages-pages-page-slug-index-tsx\": () => import(\"./../../../src/pages/pages/[pageSlug]/index.tsx\" /* webpackChunkName: \"component---src-pages-pages-page-slug-index-tsx\" */),\n \"component---src-pages-pages-page-slug-page-page-tsx\": () => import(\"./../../../src/pages/pages/[pageSlug]/PagePage.tsx\" /* webpackChunkName: \"component---src-pages-pages-page-slug-page-page-tsx\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-layout/gatsby-browser.js'),\n options: {\"plugins\":[],\"component\":\"/home/runner/work/woo-website-template/woo-website-template/pwa/src/layout/Layout.tsx\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-breadcrumb/gatsby-browser.js'),\n options: {\"plugins\":[],\"useAutoGen\":true,\"exclude\":[\"**/dev-404-page/**\",\"**/404/**\",\"**/404.html\",\"**/offline-plugin-app-shell-fallback/**\"],\"excludeOptions\":{\"separator\":\".\"},\"autoGenHomeLabel\":\"Home\"},\n },{\n plugin: require('../gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst StaticQueryContext = React.createContext({})\nlet StaticQueryServerContext = null\nif (React.createServerContext) {\n StaticQueryServerContext = React.createServerContext(`StaticQuery`, {})\n}\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\n// TODO(v5): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n let context\n\n // Can we get a better check here?\n if (\n StaticQueryServerContext &&\n Object.keys(StaticQueryServerContext._currentValue).length\n ) {\n context = React.useContext(StaticQueryServerContext)\n } else {\n context = React.useContext(StaticQueryContext)\n }\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport {\n StaticQuery,\n StaticQueryContext,\n useStaticQuery,\n StaticQueryServerContext,\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n default as Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport {\n StaticQuery,\n StaticQueryContext,\n useStaticQuery,\n StaticQueryServerContext,\n} from \"./static-query\"\n\nexport * from \"gatsby-script\"\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n let inFlightPromise\n if (global.hasPartialHydration) {\n inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n this.loadPartialHydrationJson(pagePath),\n ]).then(([appData, { payload: pageData }, result]) => {\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n const finalResult = {}\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n const componentChunkPromise = this.loadComponent(\n pageData.componentChunkName,\n `head`\n ).then(head => {\n finalResult.createdAt = new Date()\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appData\n ? appData.webpackCompilationHash\n : ``,\n })\n\n const pageResources = toPageResources(pageData, null, head)\n\n if (result.payload && typeof result.payload === `string`) {\n pageResources.partialHydration = result.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(result.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n }\n\n // undefined if final result is an error\n return pageResources\n })\n\n // Necessary for head component\n const staticQueryBatchPromise = Promise.all(\n (pageData.staticQueryHashes || []).map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = {\n ...pageResources,\n staticQueryResults: staticQueryResults,\n }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n } else {\n inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n const componentChunkPromise = Promise.all([\n this.loadComponent(componentChunkName),\n this.loadComponent(componentChunkName, `head`),\n ]).then(([component, head]) => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component, head)\n }\n // undefined if final result is an error\n return pageResources\n })\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n }\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in head.\n * @param {string} tagName\n */\nexport function warnForInvalidTags(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}`\n\n warnOnce(warning)\n }\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport { VALID_NODE_NAMES } from \"./constants\"\nimport {\n headExportValidator,\n filterHeadProps,\n warnForInvalidTags,\n diffNodes,\n} from \"./utils\"\n\nconst hiddenRoot = document.createElement(`div`)\n\nconst removePrevHeadElements = () => {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nconst onHeadRendered = () => {\n const validHeadNodes = []\n\n const seenIds = new Map()\n for (const node of hiddenRoot.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!VALID_NODE_NAMES.includes(nodeName)) {\n warnForInvalidTags(nodeName)\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // Create an element for scripts to make script work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n const script = document.createElement(`script`)\n for (const attr of clonedNode.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = clonedNode.innerHTML\n clonedNode = script\n }\n\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[indexOfPreviouslyInsertedNode].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n }\n\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // We set up observer to be able to regenerate after react-refresh\n // updates our hidden element.\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const Head = pageComponent.Head\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n \n \n \n \n \n \n ,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n if (pageResources.partialHydration) {\n return (\n \n {children}\n \n )\n } else {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n
\n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","/* global HAS_REACT_18 */\n\nconst map = new WeakMap()\n\n/**\n * Since react 18, render and hydrate moved to react-dom/client\n * returns correct hydrate and render function based on installed react-dom version\n */\n\nexport function reactDOMUtils() {\n let render\n let hydrate\n\n if (HAS_REACT_18) {\n const reactDomClient = require(`react-dom/client`)\n\n render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n } else {\n const reactDomClient = require(`react-dom`)\n render = reactDomClient.render\n hydrate = reactDomClient.hydrate\n }\n\n return { render, hydrate }\n}\n","exports.polyfill = Component => Component\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","import React from \"react\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\nimport { ReactQueryDevtools } from \"react-query/devtools\";\n\nexport const wrapRootElement = ({ element }) => {\n const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n refetchOnmount: false,\n refetchOnReconnect: false,\n retry: 1,\n retryDelay: 2000,\n staleTime: 1000 * 60 * 60, // one hour\n },\n },\n });\n\n return (\n \n {element}\n \n \n );\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.AppProviders = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _breadcrumbContext = require(\"./breadcrumb-context\");\nvar _optionsContext = require(\"./options-context\");\n/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable import/prefer-default-export */\n/* eslint-disable react/prop-types */\n\nvar AppProviders = function AppProviders(_ref) {\n var element = _ref.element,\n pluginOptions = _ref.pluginOptions;\n var defaultCrumb = pluginOptions.defaultCrumb,\n useClassNames = pluginOptions.useClassNames,\n useAutoGen = pluginOptions.useAutoGen,\n usePathPrefix = pluginOptions.usePathPrefix;\n return /*#__PURE__*/_react.default.createElement(_optionsContext.OptionsProvider, {\n useAutoGen: useAutoGen || false,\n useClassNames: useClassNames || false,\n usePathPrefix: usePathPrefix || null\n }, /*#__PURE__*/_react.default.createElement(_breadcrumbContext.BreadcrumbProvider, {\n defaultCrumb: defaultCrumb || null\n }, element));\n};\nexports.AppProviders = AppProviders;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.BreadcrumbConsumer = exports.BreadcrumbProvider = exports.BreadcrumbContext = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n/* eslint-disable import/no-extraneous-dependencies */\n\nvar BreadcrumbContext = /*#__PURE__*/_react.default.createContext('Breadcrumb');\nexports.BreadcrumbContext = BreadcrumbContext;\nvar BreadcrumbProvider = function BreadcrumbProvider(_ref) {\n var children = _ref.children,\n defaultCrumb = _ref.defaultCrumb;\n var _React$useState = _react.default.useState(defaultCrumb ? [(0, _extends2.default)({\n pathname: defaultCrumb.location.pathname\n }, defaultCrumb)] : []),\n crumbs = _React$useState[0],\n setCrumbs = _React$useState[1];\n var updateCrumbs = function updateCrumbs(_ref2) {\n var location = _ref2.location,\n crumbLabel = _ref2.crumbLabel,\n crumbSeparator = _ref2.crumbSeparator,\n crumbStyle = _ref2.crumbStyle,\n crumbActiveStyle = _ref2.crumbActiveStyle;\n // check to see if the path is already in the breadcrumb\n var indexOfFirstOccurrenceOfCurrentPath = crumbs.findIndex(function (crumb) {\n return crumb.pathname === location.pathname;\n });\n\n // when path exists in breadcrumb we need to remove any crumbs after\n // that pathname\n if (indexOfFirstOccurrenceOfCurrentPath > -1 && indexOfFirstOccurrenceOfCurrentPath < crumbs.length - 1) {\n setCrumbs(crumbs.slice(0, indexOfFirstOccurrenceOfCurrentPath));\n }\n\n // when path does not exist we add it to the end of the breadcrumb\n if (indexOfFirstOccurrenceOfCurrentPath === -1) {\n setCrumbs([].concat(crumbs, [(0, _extends2.default)({}, location, {\n crumbLabel: crumbLabel,\n crumbSeparator: crumbSeparator,\n crumbStyle: crumbStyle,\n crumbActiveStyle: crumbActiveStyle\n })]));\n }\n };\n var crumb = {\n crumbs: crumbs,\n updateCrumbs: updateCrumbs\n };\n return /*#__PURE__*/_react.default.createElement(BreadcrumbContext.Provider, {\n value: crumb\n }, children);\n};\nexports.BreadcrumbProvider = BreadcrumbProvider;\nvar BreadcrumbConsumer = BreadcrumbContext.Consumer;\nexports.BreadcrumbConsumer = BreadcrumbConsumer;\nBreadcrumbProvider.defaultProps = {\n defaultCrumb: null\n};\nBreadcrumbProvider.propTypes = {\n children: _propTypes.default.node.isRequired,\n defaultCrumb: _propTypes.default.shape({\n location: _propTypes.default.shape({\n pathname: _propTypes.default.string\n }),\n crumbLabel: _propTypes.default.string,\n crumbSeparator: _propTypes.default.string,\n crumbStyle: _propTypes.default.shape(),\n crumbActiveStyle: _propTypes.default.shape()\n })\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.OptionsConsumer = exports.OptionsProvider = exports.OptionsContext = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n/* eslint-disable import/no-extraneous-dependencies */\n\nvar OptionsContext = /*#__PURE__*/_react.default.createContext('Options');\nexports.OptionsContext = OptionsContext;\nvar OptionsProvider = function OptionsProvider(_ref) {\n var children = _ref.children,\n _ref$useAutoGen = _ref.useAutoGen,\n useAutoGen = _ref$useAutoGen === void 0 ? false : _ref$useAutoGen,\n _ref$usePathPrefix = _ref.usePathPrefix,\n usePathPrefix = _ref$usePathPrefix === void 0 ? null : _ref$usePathPrefix;\n var options = {\n useAutoGen: useAutoGen,\n usePathPrefix: usePathPrefix\n };\n return /*#__PURE__*/_react.default.createElement(OptionsContext.Provider, {\n value: options\n }, children);\n};\nexports.OptionsProvider = OptionsProvider;\nvar OptionsConsumer = OptionsContext.Consumer;\nexports.OptionsConsumer = OptionsConsumer;\nOptionsProvider.defaultProps = {\n useAutoGen: false,\n usePathPrefix: null\n};\nOptionsProvider.propTypes = {\n children: _propTypes.default.node.isRequired,\n useAutoGen: _propTypes.default.bool,\n usePathPrefix: _propTypes.default.string\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.wrapRootElement = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _appProviders = require(\"./components/app-providers\");\n/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable import/prefer-default-export */\n/* eslint-disable react/prop-types */\n\nvar wrapRootElement = function wrapRootElement(_ref, pluginOptions) {\n var element = _ref.element;\n return /*#__PURE__*/_react.default.createElement(_appProviders.AppProviders, {\n element: element,\n pluginOptions: pluginOptions\n });\n};\nexports.wrapRootElement = wrapRootElement;","\"use strict\";\n\nexports.wrapPageElement = require(\"./wrap-page\");","\"use strict\";\n\nvar React = require(\"react\");\n\nvar preferDefault = function preferDefault(m) {\n return m && m.default || m;\n};\n\nvar Layout;\n\ntry {\n Layout = preferDefault(require(GATSBY_LAYOUT_COMPONENT_PATH));\n} catch (e) {\n if (e.toString().indexOf(\"Error: Cannot find module\") !== -1) {\n throw new Error(\"Couldn't find layout component at \\\"\" + GATSBY_LAYOUT_COMPONENT_PATH + \".\\n\\n\" + \"Please create layout component in that location or specify path to layout component in gatsby-config.js\");\n } else {\n // Logging the error for debugging older browsers as there is no way\n // to wrap the thrown error in a try/catch.\n console.error(e);\n throw e;\n }\n} // eslint-disable-next-line react/prop-types,react/display-name\n\n\nmodule.exports = function (_ref) {\n var element = _ref.element,\n props = _ref.props;\n return /*#__PURE__*/React.createElement(Layout, props, element);\n};","import * as React from \"react\";\nimport APIService from \"./apiService\";\n\nconst APIContext = React.createContext(new APIService());\n\nexport const APIProvider = APIContext.Provider;\n\nexport default APIContext;\n","import { TSendFunction } from \"../apiService\";\nimport { AxiosInstance } from \"axios\";\n\nexport default class GitHub {\n private _instance: AxiosInstance;\n private _send: TSendFunction;\n\n constructor(_instance: AxiosInstance, send: TSendFunction) {\n this._instance = _instance;\n this._send = send;\n }\n\n public getContent = async (filePath: string): Promise => {\n const { data } = await this._send(this._instance, \"GET\", filePath);\n\n return data;\n };\n\n public getDirectoryItems = async (directoryPath: string): Promise => {\n const { data } = await this._send(this._instance, \"GET\", directoryPath);\n\n if (!data) return [];\n\n const filteredData = data.filter((item: any) => item.name.includes(\".md\")); // remove all non .md files\n const mappedData = filteredData?.map((item: any) => ({\n href: item.name.replace(\".md\", \"\"),\n name: item.name.replace(\"_\", \" \").replace(\".md\", \"\"),\n }));\n\n return mappedData;\n };\n}\n","import axios, { AxiosInstance, AxiosResponse } from \"axios\";\nimport toast from \"react-hot-toast\";\n\nimport GitHub from \"./resources/gitHub\";\n\ninterface PromiseMessage {\n loading?: string;\n success?: string;\n}\n\nexport type TSendFunction = (\n instance: AxiosInstance,\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\",\n endpoint: string,\n payload?: JSON,\n promiseMessage?: PromiseMessage,\n) => Promise;\n\nexport default class APIService {\n public get gitHubClient(): AxiosInstance {\n return axios.create({\n baseURL: process.env.GATSBY_GITHUB_API_BASE_URL,\n headers: {\n Accept: \"application/vnd.github.html\",\n },\n });\n }\n\n public get GitHub(): GitHub {\n return new GitHub(this.gitHubClient, this.Send);\n }\n\n // Send method\n public Send: TSendFunction = (instance, method, endpoint, payload, promiseMessage) => {\n const _payload = JSON.stringify(payload);\n\n switch (method) {\n case \"GET\":\n const response = instance.get(endpoint);\n\n response.catch((err) => toast.error(err.message));\n\n return response;\n\n case \"POST\":\n return toast.promise(instance.post(endpoint, _payload), {\n loading: promiseMessage?.loading ?? \"Creating item...\",\n success: promiseMessage?.success ?? \"Succesfully created item\",\n error: (err: Error) => err.message,\n });\n\n case \"PUT\":\n return toast.promise(instance.put(endpoint, _payload), {\n loading: promiseMessage?.loading ?? \"Updating item...\",\n success: promiseMessage?.success ?? \"Succesfully updated item\",\n error: (err: Error) => err.message,\n });\n\n case \"DELETE\":\n return toast.promise(instance.delete(endpoint), {\n loading: promiseMessage?.loading ?? \"Deleting item...\",\n success: promiseMessage?.success ?? \"Succesfully deleted item\",\n error: (err: Error) => err.message,\n });\n }\n };\n}\n","import * as React from \"react\";\nimport { useQuery } from \"react-query\";\nimport APIService from \"../../apiService/apiService\";\nimport APIContext from \"../../apiService/apiContext\";\n\nexport const useGitHub = () => {\n const API: APIService | null = React.useContext(APIContext);\n\n const getContent = (filePath: string) =>\n useQuery([\"contents\", filePath], () => API?.GitHub.getContent(filePath), {\n onError: (error) => {\n console.warn(error.message);\n },\n });\n\n const getDirectoryItems = (directoryPath: string) =>\n useQuery([\"directory-items\", directoryPath], () => API?.GitHub.getDirectoryItems(directoryPath), {\n onError: (error) => {\n console.warn(error.message);\n },\n });\n\n return { getContent, getDirectoryItems };\n};\n","import * as React from \"react\";\n\nexport type TGitHubDirectory = {\n name: string;\n location: string;\n};\n\nexport const useGitHubDirectories = () => {\n const [directories, setDirectories] = React.useState([]);\n\n React.useEffect(() => {\n const gitHubDirectoryPathsString: string | undefined = process.env.GATSBY_GITHUB_DOCS_DIRECTORY_PATHS;\n\n if (!gitHubDirectoryPathsString) return;\n\n try {\n const directories = JSON.parse(gitHubDirectoryPathsString);\n\n setDirectories(directories);\n } catch {\n console.warn(\"Something went wrong parsing the GitHub directories.\");\n }\n }, []);\n\n const getSlugFromName = (name: string): string => name.replace(\" \", \"-\");\n const getNameFromSlug = (slug: string): string => slug.replace(\"-\", \" \"); // internal function\n\n const getDirectoryReadMeLocation = (pageSlug: string): string => {\n const directory = directories.find((directory) => directory.name === getNameFromSlug(pageSlug));\n\n if (!directory) return \"\";\n\n return `${directory.location}/README.md`;\n };\n\n const getDetailMdLocation = (pageSlug: string, detailPageSlug: string): string => {\n const directory = directories.find((directory) => directory.name === getNameFromSlug(pageSlug));\n\n if (!directory) return \"\";\n\n return `${directory.location}/${getNameFromSlug(detailPageSlug)}.md`;\n };\n\n return { directories, getSlugFromName, getDirectoryReadMeLocation, getDetailMdLocation };\n};\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Logger);\n this.init(concreteLogger, options);\n }\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n return Logger;\n}();\nvar baseLogger = new Logger();\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n this.observers = {};\n }\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n return EventEmitter;\n}();\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction ownKeys$1(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$1(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$1(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n var _super = _createSuper(ResourceStore);\n function ResourceStore(data) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n _classCallCheck(this, ResourceStore);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n return _this;\n }\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n return ResourceStore;\n}(EventEmitter);\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\nfunction ownKeys$2(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$2(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$2(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper$1(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$1();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$1() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n var _super = _createSuper$1(Translator);\n function Translator(services) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Translator);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n return key;\n }\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n return null;\n }\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n i18nResolved: resolved\n }, options) : options, this);\n }\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n var possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Translator;\n}(EventEmitter);\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n var cleanedLng = _this.formatLanguageCode(code);\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n var lngOnly = _this.getLanguagePartFromCode(code);\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n return LanguageUtil;\n}();\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, PluralResolver);\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n return PluralResolver;\n}();\nfunction ownKeys$3(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$3(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$3(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$3(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Interpolator);\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n this.init(options);\n }\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n var clonedOptions = _objectSpread$3({}, options);\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n }]);\n return Interpolator;\n}();\nfunction ownKeys$4(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$4(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$4(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$4(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Formatter);\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, options);\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val, options.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n var formats = _format.split(this.formatSeparator);\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n if (_this.formats[formatName]) {\n var formatted = mem;\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n return mem;\n }, value);\n return result;\n }\n }]);\n return Formatter;\n}();\nfunction ownKeys$5(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$5(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$5(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$5(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper$2(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$2();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$2() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n var _super = _createSuper$2(Connector);\n function Connector(backend, store, services) {\n var _this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _classCallCheck(this, Connector);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ;else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loaded[l][ns] === undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n this.readingCalls++;\n return this.backend[fcName](lng, ns, function (err, data) {\n _this3.readingCalls--;\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n isUpdate: isUpdate\n }));\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n return Connector;\n}(EventEmitter);\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\nfunction ownKeys$6(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$6(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$6(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$6(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper$3(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$3();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$3() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n var _super = _createSuper$3(I18n);\n function I18n() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n _classCallCheck(this, I18n);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n var defOpts = get();\n this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n var formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n return _this2;\n };\n });\n var deferred = defer();\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n _this4.setResolvedLanguage(l);\n };\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n _this4.translator.changeLanguage(l);\n _this4.isLanguageChangingTo = undefined;\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n var fixedT = function fixedT(key, opts) {\n var options;\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread$6({}, opts);\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n var deferred = defer();\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n isClone: true\n });\n var clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread$6({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n return I18n;\n}(EventEmitter);\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };","var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nvar htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': 'Ā©',\n '©': 'Ā©',\n '®': 'Ā®',\n '®': 'Ā®',\n '…': 'ā€¦',\n '…': 'ā€¦',\n '/': '/',\n '/': '/'\n};\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n return htmlEntities[m];\n};\nexport var unescape = function unescape(text) {\n return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nimport { createContext } from 'react';\nimport { unescape } from './unescape';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape: unescape\n};\nvar i18nInstance;\nexport var I18nContext = createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n this.usedNamespaces = {};\n }\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","export const nl = {\n Login: \"Inloggen\",\n Logout: \"Uitloggen\",\n Translation: \"English\",\n Home: \"Home\",\n \"Footer content\": \"Footer content\",\n Link: \"Link\",\n Welcome: \"Welkom\",\n \"Login with DigiD\": \"Inloggen met DigiD\",\n \"Login with your account\": \"Inloggen met account\",\n \"Oops, something went wrong\": \"Oops, er is iets fout gegaan\",\n Username: \"Gebruikersnaam\",\n Password: \"Wachtwoord\",\n Send: \"Verzenden\",\n};\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport { nl } from \"./nl\";\nimport { en } from \"./en\";\n\nconst resources = {\n en: {\n translation: en,\n },\n nl: {\n translation: nl,\n },\n};\n\ni18n.use(initReactI18next).init({\n resources,\n lng: \"nl\",\n\n interpolation: {\n escapeValue: false,\n },\n});\n\nexport default i18n;\n","export const en = {\n Login: \"Login\",\n Logout: \"Log out\",\n Translation: \"Nederlands\",\n Home: \"Home\",\n \"Footer content\": \"Footer content\",\n Link: \"Link\",\n Welcome: \"Welcome\",\n \"Login with DigiD\": \"Login with DigiD\",\n \"Login with your account\": \"Login with your account\",\n \"Oops, something went wrong\": \"Oops, something went wrong\",\n Username: \"Username\",\n Password: \"Password\",\n Send: \"Send\",\n};\n","import * as React from \"react\";\nimport { GlobalContext } from \"./global\";\n\nexport interface IGatsbyContext {\n pageContext: any;\n location: any;\n}\n\nexport const defaultGatsbyContext: IGatsbyContext = {\n pageContext: null,\n location: null,\n};\n\nexport const useGatsbyContext = () => {\n const [globalContext] = React.useContext(GlobalContext);\n\n const gatsbyContext: IGatsbyContext = globalContext.gatsby;\n\n return { gatsbyContext };\n};\n","import * as React from \"react\";\nimport { defaultGatsbyContext, IGatsbyContext } from \"./gatsby\";\n\nexport interface IGlobalContext {\n initiated: boolean;\n gatsby: IGatsbyContext;\n}\n\nexport const defaultGlobalContext: IGlobalContext = {\n initiated: false,\n gatsby: defaultGatsbyContext,\n};\n\nexport const GlobalContext = React.createContext<\n [IGlobalContext, React.Dispatch>]\n>([defaultGlobalContext, () => null]);\n\nexport const GlobalProvider = GlobalContext.Provider;\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n};\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (encode === false) {\n return String(str);\n }\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n return innermostBaseTag;\n }, []);\n};\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n var value = tag[primaryAttributeKey].toLowerCase();\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n return approvedTags;\n }, []).reverse();\n};\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n return null;\n};\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\nvar _helmetCallback = null;\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n if (!elementTag) {\n return;\n }\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n return true;\n };\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n _this2.warnOnInvalidChildren(child, nestedChildren);\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n var newProps = _extends({}, props);\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n return React.createElement(Component, newProps);\n };\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Donā€™t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n return mappedState;\n }, _temp;\n};\nvar NullComponent = function NullComponent() {\n return null;\n};\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","import _ from \"lodash\";\n\nexport const getPageTitle = (crumbs: any, location: any) => {\n const _pathname = location.pathname.replace(/\\/$/, \"\");\n\n const finalSlashIndex = _pathname.lastIndexOf(\"/\");\n const pathnameTitle = _pathname.substring(finalSlashIndex + 1);\n const headTitle = pathnameTitle.replace(\"_\", \" \").replace(\"-\", \" \");\n\n if (_.last(crumbs as any[]).crumbLabel.includes(\"[\")) return headTitle; // gatsby adds \"[pageSlug]\" to dynamic page titles, we're checking on the \"[\"\n\n return _.capitalize(_.last(crumbs as any[]).crumbLabel);\n};\n","import * as React from \"react\";\nimport _ from \"lodash\";\nimport \"../styling/index.css\";\nimport { Helmet } from \"react-helmet\";\nimport { getPageTitle } from \"../services/getPageTitle\";\nimport { useGatsbyContext } from \"../context/gatsby\";\n\nexport const Head: React.FC = () => {\n const { gatsbyContext } = useGatsbyContext();\n\n return (\n \n {`${process.env.GATSBY_PAGE_TITLE ? `${process.env.GATSBY_PAGE_TITLE}` : \"Product Page\"} | ${\n getPageTitle(gatsbyContext.pageContext?.breadcrumb.crumbs, gatsbyContext.location) ?? \"Error\"\n }`}\n \n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport var container = \"Content-module--container--381a1\";\nexport var header = \"Content-module--header--e181d\";\nexport var pageContent = \"Content-module--pageContent--d314d\";","import * as React from \"react\";\r\n\r\nexport const SlackLogo: React.FC = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import * as React from \"react\";\r\n\r\nexport const GitHubLogo: React.FC = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import * as React from \"react\";\nimport * as styles from \"./FooterTemplate.module.css\";\nimport {\n UnorderedList,\n UnorderedListItem,\n PageFooter,\n PageContent,\n} from \"@utrecht/component-library-react/dist/css-module\";\nimport { navigate } from \"gatsby\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faExternalLinkSquare } from \"@fortawesome/free-solid-svg-icons\";\nimport { SlackLogo } from \"../../../assets/svgs/Slack\";\nimport { GitHubLogo } from \"../../../assets/svgs/Github\";\nimport { useGitHubDirectories } from \"../../../hooks/useGitHubDirectories\";\n\nexport const FooterTemplate: React.FC = () => {\n const { directories, getSlugFromName } = useGitHubDirectories();\n\n return (\n \n \n \n
\n navigate(\"/\")}>Home\n\n {directories?.map((directory, idx) => (\n navigate(`/pages/${getSlugFromName(directory.name)}`)}>\n {directory.name}\n \n ))}\n\n {process.env.GATSBY_READ_THE_DOCS_URL !== \"false\" && (\n open(process.env.GATSBY_READ_THE_DOCS_URL)}>\n Documentation\n \n )}\n\n {process.env.GATSBY_SLACK_URL !== \"false\" && (\n open(process.env.GATSBY_SLACK_URL)}>\n Slack\n \n )}\n\n open(process.env.GATSBY_GITHUB_REPOSITORY_URL)}>\n GitHub\n \n
\n\n
\n open(process.env.GATSBY_FOOTER_LOGO_HREF)}\n src={process.env.GATSBY_FOOTER_LOGO_URL}\n alt={\"Footer-logo\"}\n />\n
\n
\n
\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport var footer = \"FooterTemplate-module--footer--6414a\";\nexport var linksContainer = \"FooterTemplate-module--linksContainer--944dc\";\nexport var list = \"FooterTemplate-module--list--0df1a\";","// extracted by mini-css-extract-plugin\nexport var container = \"HeaderTemplate-module--container--6ef3b\";","import * as React from \"react\";\nimport * as styles from \"./TopNav.module.css\";\nimport { UnorderedList, UnorderedListItem } from \"@utrecht/component-library-react/dist/css-module\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faExternalLinkSquare } from \"@fortawesome/free-solid-svg-icons\";\nimport { navigate } from \"gatsby\";\nimport { useGitHub } from \"../../../hooks/resources/gitHub\";\nimport { GitHubLogo } from \"../../../assets/svgs/Github\";\nimport { SlackLogo } from \"../../../assets/svgs/Slack\";\nimport { TGitHubDirectory, useGitHubDirectories } from \"../../../hooks/useGitHubDirectories\";\n\nexport const TopNav: React.FC = () => {\n const { directories, getSlugFromName } = useGitHubDirectories();\n\n return (\n
\n \n
\n \n
\n navigate(\"/\")}\n src={process.env.GATSBY_NAVBAR_LOGO_URL}\n alt={\"Navbar-logo\"}\n />\n
\n
\n\n navigate(\"/\")}>Home\n\n {directories?.map((directory, idx) => (\n navigate(`/pages/${getSlugFromName(directory.name)}`)}>\n {directory.name}\n\n \n \n ))}\n
\n\n
\n {process.env.GATSBY_READ_THE_DOCS_URL !== \"false\" && (\n open(process.env.GATSBY_READ_THE_DOCS_URL)}>\n Documentation\n \n )}\n\n {process.env.GATSBY_SLACK_URL !== \"false\" && (\n open(process.env.GATSBY_SLACK_URL)}>\n Slack\n \n )}\n\n open(process.env.GATSBY_GITHUB_REPOSITORY_URL)}>\n GitHub\n \n
\n
\n
\n );\n};\n\ninterface DetailPagesDropDownProps {\n directory: TGitHubDirectory;\n}\n\nconst DetailPagesDropDown: React.FC = ({ directory }) => {\n const { getSlugFromName } = useGitHubDirectories();\n const [detailPages, setDetailPages] = React.useState([]);\n const getDetailPages = useGitHub().getDirectoryItems(directory.location);\n\n React.useEffect(() => {\n if (!getDetailPages.data) return;\n\n setDetailPages(getDetailPages.data.filter((detailPage) => detailPage.name !== \"README\"));\n }, [getDetailPages.data]);\n\n const handleClick = (e: React.MouseEvent, target: string) => {\n e.stopPropagation();\n\n navigate(`/pages/${getSlugFromName(directory.name)}/${target}`);\n };\n\n if (!detailPages.length) return <>;\n\n return (\n \n {detailPages.map((detailPage, idx) => (\n handleClick(e, detailPage.href)}>\n {detailPage.name}\n \n ))}\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport var container = \"TopNav-module--container--edbf7\";\nexport var dropDownList = \"TopNav-module--dropDownList--8b08d\";\nexport var image = \"TopNav-module--image--b8c92\";\nexport var imageContainer = \"TopNav-module--imageContainer--aaa02\";\nexport var list = \"TopNav-module--list--7884c\";","import * as React from \"react\";\nimport * as styles from \"./HeaderTemplate.module.css\";\nimport { TopNav } from \"../topNav/TopNav\";\nimport clsx from \"clsx\";\nimport { PageHeader } from \"@utrecht/component-library-react/dist/css-module\";\n\ninterface HeaderTemplateProps {\n layoutClassName?: string;\n}\n\nexport const HeaderTemplate: React.FC = ({ layoutClassName }) => {\n return (\n \n \n \n );\n};\n","import * as React from \"react\";\nimport * as styles from \"./Content.module.css\";\nimport { FooterTemplate } from \"./templates/templateParts/footer/FooterTemplate\";\nimport { HeaderTemplate } from \"./templates/templateParts/header/HeaderTemplate\";\n\ninterface ContentProps {\n children: React.ReactNode;\n}\n\nexport const Content: React.FC = ({ children }) => {\n return (\n
\n \n\n
{children}
\n\n \n
\n );\n};\n","import * as React from \"react\";\nimport * as styles from \"./Layout.module.css\";\nimport \"../translations/i18n\";\nimport APIContext, { APIProvider } from \"../apiService/apiContext\";\nimport APIService from \"../apiService/apiService\";\nimport { defaultGlobalContext, GlobalProvider, IGlobalContext } from \"../context/global\";\nimport { Head } from \"./Head\";\nimport { Content } from \"../Content\";\nimport { Document } from \"@utrecht/component-library-react/dist/css-module\";\nimport { Toaster } from \"react-hot-toast\";\nimport clsx from \"clsx\";\n\ninterface LayoutProps {\n children: React.ReactNode;\n pageContext: any; // Gatsby pageContext\n location: any; // Gatsby location\n}\n\nconst Layout: React.FC = ({ children, pageContext, location }) => {\n const [API, setAPI] = React.useState(React.useContext(APIContext));\n const [globalContext, setGlobalContext] = React.useState(defaultGlobalContext);\n\n React.useEffect(() => {\n setAPI(new APIService());\n }, [pageContext]);\n\n React.useEffect(() => {\n setGlobalContext((context) => ({\n ...context,\n initiated: true,\n gatsby: {\n ...{ pageContext, location, previousPath: location.pathname },\n },\n }));\n }, [pageContext, location]);\n\n if (!globalContext.initiated) return <>;\n\n return (\n <>\n \n \n \n \n \n\n
\n \n
\n
\n
\n
\n \n );\n};\n\nexport default Layout;\n","// extracted by mini-css-extract-plugin\nexport var authenticatedHeader = \"Layout-module--authenticatedHeader--a4670\";\nexport var container = \"Layout-module--container--e5e32\";\nexport var document = \"Layout-module--document--940c1\";\nexport var pageContent = \"Layout-module--pageContent--74fbe\";","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n var dynamicMatch = paramRe.exec(routeSegment);\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n return {\n get location() {\n return location;\n },\n get transitioning() {\n return transitioning;\n },\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext, createContext } from \"react\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(LocationContext.Consumer, null, function (context) {\n return context ? children(context) : React.createElement(LocationProvider, null, children);\n });\n};\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n function LocationProvider() {\n var _temp, _this, _ret;\n _classCallCheck(this, LocationProvider);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: {\n unlisten: null\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n return {\n navigate: navigate,\n location: location\n };\n };\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n _navigate(error.uri, {\n replace: true\n });\n } else {\n throw error;\n }\n };\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n var refs = this.state.refs,\n history = this.props.history;\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return {\n context: _this2.getContext()\n };\n });\n }\n });\n });\n });\n };\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n this.unmounted = true;\n refs.unlisten();\n };\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n return React.createElement(LocationContext.Provider, {\n value: context\n }, typeof children === \"function\" ? children(context) : children || null);\n };\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n return React.createElement(LocationContext.Provider, {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n }, children);\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n});\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n });\n });\n};\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n var match = pick(routes, pathname);\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n location: location,\n primary: primary\n }, element.props.children) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({\n uri: uri,\n location: location,\n component: component\n }, domProps) : domProps;\n return React.createElement(BaseContext.Provider, {\n value: {\n baseuri: uri,\n basepath: basepath,\n navigate: props.navigate\n }\n }, React.createElement(FocusWrapper, wrapperProps, clone));\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n return RouterImpl;\n}(React.PureComponent);\nRouterImpl.defaultProps = {\n primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n return React.createElement(FocusContext.Consumer, null, function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n });\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n _classCallCheck(this, FocusHandlerImpl);\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n var requestFocus = this.props.requestFocus;\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n return React.createElement(Comp, _extends({\n style: _extends({\n outline: \"none\"\n }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps), React.createElement(FocusContext.Provider, {\n value: this.requestFocus\n }, this.props.children));\n };\n return FocusHandlerImpl;\n}(React.Component);\npolyfill(FocusHandlerImpl);\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n return React.createElement(BaseContext.Consumer, null, function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(Location, null, function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({\n isCurrent: isCurrent,\n isPartiallyCurrent: isPartiallyCurrent,\n href: href,\n location: location\n }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n });\n });\n});\nLink.displayName = \"Link\";\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), {\n replace: replace,\n state: state\n });\n });\n };\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n return RedirectImpl;\n}(React.Component);\nvar Redirect = function Redirect(props) {\n return React.createElement(BaseContext.Consumer, null, function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, {\n baseuri: baseuri\n }, props));\n });\n });\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(BaseContext.Consumer, null, function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(Location, null, function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n });\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n return context.location;\n};\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n return context.navigate;\n};\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n var location = useLocation();\n var results = match(context.basepath, location.pathname);\n return results ? results.params : null;\n};\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n var location = useLocation();\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n if (element.props.default) {\n return {\n value: element,\n default: true\n };\n }\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch, resolve , BaseContext };","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}\nmodule.exports = _objectDestructuringEmpty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.5.4 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(w,1e4),e.addEventListener(\\\"pt0\\\",f),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):w())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.5.4\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function w(t,n){for(f(),t=0;t {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the ` \ No newline at end of file +
\ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index cc509629..39bdb277 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"7680fa96cea32cebd0af"} +{"webpackCompilationHash":"6f276f24d5c38c6ea9bd"} diff --git a/pages/[pageSlug]/PagePage/index.html b/pages/[pageSlug]/PagePage/index.html index cd6286c5..4ae4652c 100644 --- a/pages/[pageSlug]/PagePage/index.html +++ b/pages/[pageSlug]/PagePage/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/pages/[pageSlug]/[detailPageSlug]/DetailPagePage/index.html b/pages/[pageSlug]/[detailPageSlug]/DetailPagePage/index.html index fa3e8f82..32a9f73c 100644 --- a/pages/[pageSlug]/[detailPageSlug]/DetailPagePage/index.html +++ b/pages/[pageSlug]/[detailPageSlug]/DetailPagePage/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/pages/[pageSlug]/[detailPageSlug]/index.html b/pages/[pageSlug]/[detailPageSlug]/index.html index de63237b..aaac5e65 100644 --- a/pages/[pageSlug]/[detailPageSlug]/index.html +++ b/pages/[pageSlug]/[detailPageSlug]/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/pages/[pageSlug]/index.html b/pages/[pageSlug]/index.html index 1c45717d..16323639 100644 --- a/pages/[pageSlug]/index.html +++ b/pages/[pageSlug]/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/polyfill-6f359069bdd40accc0ca.js b/polyfill-6f359069bdd40accc0ca.js deleted file mode 100644 index e96a2ac9..00000000 --- a/polyfill-6f359069bdd40accc0ca.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkproduct_website_template=self.webpackChunkproduct_website_template||[]).push([[920],{9483:function(t,e,r){"use strict";var n=r(4411),o=r(6330),i=TypeError;t.exports=function(t){if(n(t))return t;throw i(o(t)+" is not a constructor")}},4411:function(t,e,r){"use strict";var n=r(1702),o=r(7293),i=r(614),a=r(648),c=r(5005),u=r(2788),s=function(){},f=[],l=c("Reflect","construct"),h=/^\s*(?:class|function)\b/,p=n(h.exec),d=!h.exec(s),v=function(t){if(!i(t))return!1;try{return l(s,f,t),!0}catch(e){return!1}},g=function(t){if(!i(t))return!1;switch(a(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!p(h,u(t))}catch(e){return!0}};g.sham=!0,t.exports=!l||o((function(){var t;return v(v.call)||!v(Object)||!v((function(){t=!0}))||t}))?g:v},8523:function(t,e,r){"use strict";var n=r(9662),o=TypeError,i=function(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw o("Bad Promise constructor");e=t,r=n})),this.resolve=n(e),this.reject=n(r)};t.exports.f=function(t){return new i(t)}},2492:function(t,e,r){"use strict";var n=r(7854);t.exports=n.Promise},9478:function(t,e,r){"use strict";var n=r(9670),o=r(111),i=r(8523);t.exports=function(t,e){if(n(t),o(e)&&e.constructor===t)return e;var r=i.f(t);return(0,r.resolve)(e),r.promise}},6707:function(t,e,r){"use strict";var n=r(9670),o=r(9483),i=r(8554),a=r(5112)("species");t.exports=function(t,e){var r,c=n(t).constructor;return void 0===c||i(r=n(c)[a])?e:o(r)}},7727:function(t,e,r){"use strict";var n=r(2109),o=r(1913),i=r(2492),a=r(7293),c=r(5005),u=r(614),s=r(6707),f=r(9478),l=r(8052),h=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){h.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=s(this,c("Promise")),r=u(t);return this.then(r?function(r){return f(e,t()).then((function(){return r}))}:t,r?function(r){return f(e,t()).then((function(){throw r}))}:t)}}),!o&&u(i)){var p=c("Promise").prototype.finally;h.finally!==p&&l(h,"finally",p,{unsafe:!0})}},6077:function(t,e,r){"use strict";r(7927)},7927:function(t,e,r){r(7727),function(){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==r.g?r.g:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var n=function(t){return t&&t.Math==Math&&t},o=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||function(){return this}()||Function("return this")(),i=function(t){try{return!!t()}catch(t){return!0}},a=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),c={}.propertyIsEnumerable,u=Object.getOwnPropertyDescriptor,s=u&&!c.call({1:2},1)?function(t){var e=u(this,t);return!!e&&e.enumerable}:c,f={f:s},l=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},h={}.toString,p=function(t){return h.call(t).slice(8,-1)},d="".split,v=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==p(t)?d.call(t,""):Object(t)}:Object,g=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},y=function(t){return v(g(t))},b=function(t){return"object"==typeof t?null!==t:"function"==typeof t},m=function(t,e){if(!b(t))return t;var r,n;if(e&&"function"==typeof(r=t.toString)&&!b(n=r.call(t)))return n;if("function"==typeof(r=t.valueOf)&&!b(n=r.call(t)))return n;if(!e&&"function"==typeof(r=t.toString)&&!b(n=r.call(t)))return n;throw TypeError("Can't convert object to primitive value")},E={}.hasOwnProperty,S=function(t,e){return E.call(t,e)},w=o.document,T=b(w)&&b(w.createElement),R=function(t){return T?w.createElement(t):{}},O=!a&&!i((function(){return 7!=Object.defineProperty(R("div"),"a",{get:function(){return 7}}).a})),x=Object.getOwnPropertyDescriptor,A={f:a?x:function(t,e){if(t=y(t),e=m(e,!0),O)try{return x(t,e)}catch(t){}if(S(t,e))return l(!f.f.call(t,e),t[e])}},_=function(t){if(!b(t))throw TypeError(String(t)+" is not an object");return t},I=Object.defineProperty,j={f:a?I:function(t,e,r){if(_(t),e=m(e,!0),_(r),O)try{return I(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},P=a?function(t,e,r){return j.f(t,e,l(1,r))}:function(t,e,r){return t[e]=r,t},M=function(t,e){try{P(o,t,e)}catch(n){o[t]=e}return e},N="__core-js_shared__",k=o[N]||M(N,{}),U=Function.toString;"function"!=typeof k.inspectSource&&(k.inspectSource=function(t){return U.call(t)});var L,D,C,F=k.inspectSource,B=o.WeakMap,W="function"==typeof B&&/native code/.test(F(B)),z=!1,G=e((function(t){(t.exports=function(t,e){return k[t]||(k[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.9.0",mode:"global",copyright:"Ā© 2021 Denis Pushkarev (zloirock.ru)"})})),K=0,$=Math.random(),V=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++K+$).toString(36)},q=G("keys"),H=function(t){return q[t]||(q[t]=V(t))},X={};if(W){var Y=k.state||(k.state=new(0,o.WeakMap)),J=Y.get,Q=Y.has,Z=Y.set;L=function(t,e){return e.facade=t,Z.call(Y,t,e),e},D=function(t){return J.call(Y,t)||{}},C=function(t){return Q.call(Y,t)}}else{var tt=H("state");X[tt]=!0,L=function(t,e){return e.facade=t,P(t,tt,e),e},D=function(t){return S(t,tt)?t[tt]:{}},C=function(t){return S(t,tt)}}var et,rt={set:L,get:D,has:C,enforce:function(t){return C(t)?D(t):L(t,{})},getterFor:function(t){return function(e){var r;if(!b(e)||(r=D(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},nt=e((function(t){var e=rt.get,r=rt.enforce,n=String(String).split("String");(t.exports=function(t,e,i,a){var c,u=!!a&&!!a.unsafe,s=!!a&&!!a.enumerable,f=!!a&&!!a.noTargetGet;"function"==typeof i&&("string"!=typeof e||S(i,"name")||P(i,"name",e),(c=r(i)).source||(c.source=n.join("string"==typeof e?e:""))),t!==o?(u?!f&&t[e]&&(s=!0):delete t[e],s?t[e]=i:P(t,e,i)):s?t[e]=i:M(e,i)})(Function.prototype,"toString",(function(){return"function"==typeof this&&e(this).source||F(this)}))})),ot=o,it=function(t){return"function"==typeof t?t:void 0},at=function(t,e){return arguments.length<2?it(ot[t])||it(o[t]):ot[t]&&ot[t][e]||o[t]&&o[t][e]},ct=Math.ceil,ut=Math.floor,st=function(t){return isNaN(t=+t)?0:(t>0?ut:ct)(t)},ft=Math.min,lt=function(t){return t>0?ft(st(t),9007199254740991):0},ht=Math.max,pt=Math.min,dt=function(t,e){var r=st(t);return r<0?ht(r+e,0):pt(r,e)},vt=function(t){return function(e,r,n){var o,i=y(e),a=lt(i.length),c=dt(n,a);if(t&&r!=r){for(;a>c;)if((o=i[c++])!=o)return!0}else for(;a>c;c++)if((t||c in i)&&i[c]===r)return t||c||0;return!t&&-1}},gt={includes:vt(!0),indexOf:vt(!1)},yt=gt.indexOf,bt=function(t,e){var r,n=y(t),o=0,i=[];for(r in n)!S(X,r)&&S(n,r)&&i.push(r);for(;e.length>o;)S(n,r=e[o++])&&(~yt(i,r)||i.push(r));return i},mt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Et=mt.concat("length","prototype"),St={f:Object.getOwnPropertyNames||function(t){return bt(t,Et)}},wt={f:Object.getOwnPropertySymbols},Tt=at("Reflect","ownKeys")||function(t){var e=St.f(_(t)),r=wt.f;return r?e.concat(r(t)):e},Rt=function(t,e){for(var r=Tt(e),n=j.f,o=A.f,i=0;i2?arguments[2]:void 0,c=Ut((void 0===a?n:dt(a,n))-i,n-o),u=1;for(i0;)i in r?r[o]=r[i]:delete r[o],o+=u,i+=u;return r},Dt=!!Object.getOwnPropertySymbols&&!i((function(){return!String(Symbol())})),Ct=Dt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ft=G("wks"),Bt=o.Symbol,Wt=Ct?Bt:Bt&&Bt.withoutSetter||V,zt=function(t){return S(Ft,t)||(Ft[t]=Dt&&S(Bt,t)?Bt[t]:Wt("Symbol."+t)),Ft[t]},Gt=Object.keys||function(t){return bt(t,mt)},Kt=a?Object.defineProperties:function(t,e){_(t);for(var r,n=Gt(e),o=n.length,i=0;o>i;)j.f(t,r=n[i++],e[r]);return t},$t=at("document","documentElement"),Vt=H("IE_PROTO"),qt=function(){},Ht=function(t){return"