git: 0cdc4e760bce - main - Add net-mgmt/chronograf

From: Li-Wen Hsu <lwhsu_at_FreeBSD.org>
Date: Mon, 24 Jan 2022 16:52:49 UTC
The branch main has been updated by lwhsu:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0cdc4e760bce9992c8bb20dda7ffb353cc7b9bc3

commit 0cdc4e760bce9992c8bb20dda7ffb353cc7b9bc3
Author:     Li-Wen Hsu <lwhsu@FreeBSD.org>
AuthorDate: 2022-01-24 16:49:48 +0000
Commit:     Li-Wen Hsu <lwhsu@FreeBSD.org>
CommitDate: 2022-01-24 16:49:48 +0000

    Add net-mgmt/chronograf
    
    Open source monitoring and visualization UI for the TICK stack
    
    https://www.influxdata.com/time-series-platform/chronograf/
---
 net-mgmt/chronograf/Makefile                    |    95 +
 net-mgmt/chronograf/distinfo                    |     9 +
 net-mgmt/chronograf/files/chronograf.in         |    55 +
 net-mgmt/chronograf/files/patch-package.json    |    12 +
 net-mgmt/chronograf/files/patch-ui_package.json |    13 +
 net-mgmt/chronograf/files/patch-yarn.lock       |   279 +
 net-mgmt/chronograf/files/yarn/package.json     |    29 +
 net-mgmt/chronograf/files/yarn/ui/package.json  |   143 +
 net-mgmt/chronograf/files/yarn/yarn.lock        | 11503 ++++++++++++++++++++++
 net-mgmt/chronograf/pkg-descr                   |     7 +
 10 files changed, 12145 insertions(+)

diff --git a/net-mgmt/chronograf/Makefile b/net-mgmt/chronograf/Makefile
new file mode 100644
index 000000000000..aa67f92809a6
--- /dev/null
+++ b/net-mgmt/chronograf/Makefile
@@ -0,0 +1,95 @@
+PORTNAME=	chronograf
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.9.1
+CATEGORIES=	net-mgmt
+MASTER_SITES+=	https://nodejs.org/download/release/v${NODEJS_VERSION}/:node
+DISTFILES=	yarn-cache-${PKGNAME}.tar.xz:prefetch \
+		node-v${NODEJS_VERSION}-headers.tar.gz:node
+DIST_SUBDIR=	${PORTNAME}
+
+MAINTAINER=	lwhsu@FreeBSD.org
+COMMENT=	Open source monitoring and visualization UI for the TICK stack
+
+LICENSE=	AGPLv3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+FETCH_DEPENDS=	ca_root_nss>0:security/ca_root_nss \
+		yarn:www/yarn-node${NODEJS_VERSION_MAJOR}
+BUILD_DEPENDS=	go-bindata:devel/go-bindata \
+		yarn:www/yarn-node${NODEJS_VERSION_MAJOR}
+
+USES=		gmake go:modules python:build
+
+EXTRACT_ONLY:=	${DISTFILES:C/:[^:]+$//}
+
+GO_MODULE=	github.com/influxdata/${PORTNAME}
+GO_TARGET=	./cmd/chronograf/main.go:chronograf \
+		./cmd/chronoctl:chronoctl
+GO_BUILDFLAGS=	-ldflags "-X main.version=${DISTVERSION}"
+
+NODEJS_VERSION_MAJOR=	14
+#NODEJS_VERSION!=	make -V DISTVERSION -f ${PORTSDIR}/www/node${NODEJS_VERSION_MAJOR}/Makefile
+NODEJS_VERSION=	14.18.1
+
+USE_RC_SUBR=	chronograf
+
+SUB_FILES=	chronograf
+SUB_LIST=	CHRONOGRAF_USER=${CHRONOGRAF_USER} \
+		CHRONOGRAF_GROUP=${CHRONOGRAF_GROUP} \
+		CHRONOGRAF_DBDIR=${CHRONOGRAF_DBDIR} \
+		CHRONOGRAF_LOGDIR=${CHRONOGRAF_LOGDIR}
+PLIST_SUB=	CHRONOGRAF_USER=${CHRONOGRAF_USER} \
+		CHRONOGRAF_GROUP=${CHRONOGRAF_GROUP} \
+		CHRONOGRAF_DBDIR=${CHRONOGRAF_DBDIR} \
+		CHRONOGRAF_LOGDIR=${CHRONOGRAF_LOGDIR}
+
+# Use influxd user as it's aleary present in the ports system
+CHRONOGRAF_USER=	influxd
+CHRONOGRAF_GROUP=	influxd
+
+USERS?=		${CHRONOGRAF_USER}
+GROUPS?=		${CHRONOGRAF_GROUP}
+
+CHRONOGRAF_DBDIR?=	/var/db/${PORTNAME}
+CHRONOGRAF_LOGDIR?=	/var/log/${PORTNAME}
+
+YARN_ENV=	HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache
+YARN_CACHE_FILE=	yarn-cache-${PKGNAME}.tar.xz
+
+PLIST_FILES=	bin/chronoctl \
+		bin/chronograf
+
+.include <bsd.port.pre.mk>
+
+.if !exists(${DISTDIR}/${DIST_SUBDIR}/${YARN_CACHE_FILE})
+pre-fetch:
+	${MKDIR} ${DISTDIR}/${DIST_SUBDIR}
+	${MKDIR} ${WRKDIR}
+	${ECHO_CMD} 'yarn-offline-mirror "./yarn-offline-cache"' >> ${WRKDIR}/.yarnrc
+	${CP} ${FILESDIR}/yarn/package.json ${FILESDIR}/yarn/yarn.lock ${WRKDIR}
+	${MKDIR} ${WRKDIR}/ui
+	${CP} ${FILESDIR}/yarn/ui/package.json ${WRKDIR}/ui
+	cd ${WRKDIR} && ${SETENV} ${YARN_ENV} yarn --frozen-lockfile --ignore-scripts
+	cd ${WRKDIR}/ui && ${SETENV} ${YARN_ENV} yarn --frozen-lockfile --ignore-scripts
+	cd ${WRKDIR} && ${MTREE_CMD} -cbnSp yarn-offline-cache | ${MTREE_CMD} -C | ${SED} \
+		-e 's:time=[0-9.]*:time=0.000000000:' \
+		-e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+		-e 's:flags=.*:flags=none:' \
+		-e 's:^\.:./yarn-offline-cache:' > yarn-offline-cache.mtree
+	cd ${WRKDIR} && ${TAR} cJf ${DISTDIR}/${DIST_SUBDIR}/${YARN_CACHE_FILE} \
+		@yarn-offline-cache.mtree
+	${RM} -r ${WRKDIR}
+.endif
+
+pre-build:
+	${ECHO_CMD} "yarn-offline-mirror \"${WRKDIR}/yarn-offline-cache\"" >> ${WRKDIR}/.yarnrc
+	cd ${WRKDIR} && ${SETENV} ${YARN_ENV} \
+		yarn install --frozen-lockfile --offline
+	cd ${WRKSRC}/ui && ${SETENV} ${YARN_ENV} \
+		PYTHON=${PYTHON_CMD} \
+		npm_config_tarball=${DISTDIR}/${DIST_SUBDIR}/node-v${NODEJS_VERSION}-headers.tar.gz \
+		yarn --frozen-lockfile --offline --no-progress --no-emoji
+	cd ${WRKSRC}/ui && ${SETENV} ${YARN_ENV} yarn run build
+	cd ${WRKSRC} && ${GMAKE} .bindata
+
+.include <bsd.port.post.mk>
diff --git a/net-mgmt/chronograf/distinfo b/net-mgmt/chronograf/distinfo
new file mode 100644
index 000000000000..b7da5a51943b
--- /dev/null
+++ b/net-mgmt/chronograf/distinfo
@@ -0,0 +1,9 @@
+TIMESTAMP = 1642976926
+SHA256 (go/net-mgmt_chronograf/chronograf-v1.9.1/yarn-cache-chronograf-1.9.1.tar.xz) = 8754c6fa93ddc6bf6ec43a5131ee279c613a69e7b91c8d8d297bd5af7ac9ec4a
+SIZE (go/net-mgmt_chronograf/chronograf-v1.9.1/yarn-cache-chronograf-1.9.1.tar.xz) = 54926516
+SHA256 (go/net-mgmt_chronograf/chronograf-v1.9.1/node-v14.18.1-headers.tar.gz) = 3352973a1a737b47f2b1822ab9fd5d401427c7ba3b538ecae9928924d06b60a5
+SIZE (go/net-mgmt_chronograf/chronograf-v1.9.1/node-v14.18.1-headers.tar.gz) = 599969
+SHA256 (go/net-mgmt_chronograf/chronograf-v1.9.1/v1.9.1.mod) = 59f1c3378958c492514d54aad7f959d067beb7826419dc069bba9f3e62db263a
+SIZE (go/net-mgmt_chronograf/chronograf-v1.9.1/v1.9.1.mod) = 5419
+SHA256 (go/net-mgmt_chronograf/chronograf-v1.9.1/v1.9.1.zip) = 5ebeee56e3539f13fd638f13e31c07c4665e80ed3aa972e0e9e0b6b29c8f4111
+SIZE (go/net-mgmt_chronograf/chronograf-v1.9.1/v1.9.1.zip) = 3081960
diff --git a/net-mgmt/chronograf/files/chronograf.in b/net-mgmt/chronograf/files/chronograf.in
new file mode 100644
index 000000000000..6ad6038c66d8
--- /dev/null
+++ b/net-mgmt/chronograf/files/chronograf.in
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# PROVIDE: chronograf
+# REQUIRE: DAEMON NETWORKING
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable chronograf:
+# chronograf_enable="YES"
+#
+# chronograf_enable (bool):	Set to YES to enable chronograf
+#				Default: NO
+# chronograf_flags (str):	Extra flags passed to chronograf
+#				Default: -b %%CHRONOGRAF_DBDIR%%/chronograf-v1.db
+# chronograf_user (str):	chronograf daemon user
+#				Default: %%CHRONOGRAF_USER%%
+# chronograf_group (str):	chronograf daemon group
+#				Default: %%CHRONOGRAF_GROUP%%
+
+. /etc/rc.subr
+
+name=chronograf
+rcvar=chronograf_enable
+desc="Monitoring and visualization UI for the TICK stack"
+
+load_rc_config $name
+
+: ${chronograf_enable:=NO}
+: ${chronograf_flags="-b %%CHRONOGRAF_DBDIR%%/chronograf-v1.db"}
+: ${chronograf_user="%%CHRONOGRAF_USER%%"}
+: ${chronograf_group="%%CHRONOGRAF_GROUP%%"}
+
+start_precmd=chronograf_prestart
+logfile="%%CHRONOGRAF_LOGDIR%%/${name}.log"
+pidfile="/var/run/${name}/${name}.pid"
+command=/usr/sbin/daemon
+command_args="-cfr -P ${pidfile} -o ${logfile} %%PREFIX%%/bin/${name} ${chronograf_flags}"
+
+chronograf_prestart()
+{
+	# Have to empty rc_flags so they don't get passed to daemon(8)
+        rc_flags=""
+
+	if [ ! -d "%%CHRONOGRAF_DBDIR%%" ]; then
+		install -d -o "${chronograf_user}" -g "${chronograf_group}" -m 750 "%%CHRONOGRAF_DBDIR%%"
+	fi
+	if [ ! -d "%%CHRONOGRAF_LOGDIR%%" ]; then
+		install -d -o "${chronograf_user}" -g "${chronograf_group}" -m 750 "%%CHRONOGRAF_LOGDIR%%"
+	fi
+	if [ ! -d "/var/run/chronograf" ]; then
+		install -d -o "${chronograf_user}" -g "${chronograf_group}" -m 755 "/var/run/chronograf"
+	fi
+}
+
+run_rc_command "$1"
diff --git a/net-mgmt/chronograf/files/patch-package.json b/net-mgmt/chronograf/files/patch-package.json
new file mode 100644
index 000000000000..02077db57042
--- /dev/null
+++ b/net-mgmt/chronograf/files/patch-package.json
@@ -0,0 +1,12 @@
+--- package.json.orig	2022-01-17 00:45:48 UTC
++++ package.json
+@@ -22,5 +22,8 @@
+   "author": {
+     "name": "InfluxData"
+   },
+-  "license": "AGPL-3.0"
++  "license": "AGPL-3.0",
++  "resolutions": {
++    "**/node-gyp": "^7.0.0"
++  }
+ }
diff --git a/net-mgmt/chronograf/files/patch-ui_package.json b/net-mgmt/chronograf/files/patch-ui_package.json
new file mode 100644
index 000000000000..6e752b6d1e66
--- /dev/null
+++ b/net-mgmt/chronograf/files/patch-ui_package.json
@@ -0,0 +1,13 @@
+--- ui/package.json.orig	2022-01-21 09:20:33 UTC
++++ ui/package.json
+@@ -9,8 +9,8 @@
+     "url": "github:influxdata/chronograf"
+   },
+   "scripts": {
+-    "start": "GIT_SHA=$(git rev-parse HEAD) node parcel.js",
+-    "build": "GIT_SHA=$(git rev-parse HEAD) parcel build -d build --log-level 2 --no-source-maps --public-url '' src/index.html",
++    "start": "node parcel.js",
++    "build": "parcel build -d build --log-level 2 --no-source-maps --public-url '' src/index.html",
+     "clean": "rm -rf ./build/* && rm -rf ./.cache",
+     "test": "jest",
+     "test:watch": "jest --watch",
diff --git a/net-mgmt/chronograf/files/patch-yarn.lock b/net-mgmt/chronograf/files/patch-yarn.lock
new file mode 100644
index 000000000000..61da6c44f53b
--- /dev/null
+++ b/net-mgmt/chronograf/files/patch-yarn.lock
@@ -0,0 +1,279 @@
+--- yarn.lock.orig	2022-01-17 15:38:04 UTC
++++ yarn.lock
+@@ -2588,13 +2588,6 @@ bindings@^1.5.0:
+   dependencies:
+     file-uri-to-path "1.0.0"
+ 
+-block-stream@*:
+-  version "0.0.9"
+-  resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+-  integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
+-  dependencies:
+-    inherits "~2.0.0"
+-
+ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
+   version "4.12.0"
+   resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
+@@ -3057,6 +3050,11 @@ chokidar@^2.1.5:
+   optionalDependencies:
+     fsevents "^1.2.7"
+ 
++chownr@^2.0.0:
++  version "2.0.0"
++  resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
++  integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
++
+ chroma-js@^1.3.6:
+   version "1.4.1"
+   resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-1.4.1.tgz#eb2d9c4d1ff24616be84b35119f4d26f8205f134"
+@@ -4259,6 +4257,11 @@ entities@~2.1.0:
+   resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
+   integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
+ 
++env-paths@^2.2.0:
++  version "2.2.1"
++  resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
++  integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
++
+ enzyme-adapter-react-16@^1.5.0:
+   version "1.15.6"
+   resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901"
+@@ -5122,6 +5125,13 @@ fresh@0.5.2:
+   resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+   integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+ 
++fs-minipass@^2.0.0:
++  version "2.1.0"
++  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
++  integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
++  dependencies:
++    minipass "^3.0.0"
++
+ fs.realpath@^1.0.0:
+   version "1.0.0"
+   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+@@ -5140,16 +5150,6 @@ fsevents@^2.1.2, fsevents@~2.3.1:
+   resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+   integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+ 
+-fstream@^1.0.0, fstream@^1.0.12:
+-  version "1.0.12"
+-  resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045"
+-  integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==
+-  dependencies:
+-    graceful-fs "^4.1.2"
+-    inherits "~2.0.0"
+-    mkdirp ">=0.5 0"
+-    rimraf "2"
+-
+ function-bind@^1.1.1:
+   version "1.1.1"
+   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+@@ -5346,6 +5346,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^
+   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
+   integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
+ 
++graceful-fs@^4.2.3:
++  version "4.2.9"
++  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
++  integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
++
+ grapheme-breaker@^0.3.2:
+   version "0.3.2"
+   resolved "https://registry.yarnpkg.com/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz#5b9e6b78c3832452d2ba2bb1cb830f96276410ac"
+@@ -5760,7 +5765,7 @@ inflight@^1.0.4:
+     once "^1.3.0"
+     wrappy "1"
+ 
+-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
++inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+   version "2.0.4"
+   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+@@ -7465,6 +7470,21 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, min
+   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+   integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+ 
++minipass@^3.0.0:
++  version "3.1.6"
++  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee"
++  integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==
++  dependencies:
++    yallist "^4.0.0"
++
++minizlib@^2.1.1:
++  version "2.1.2"
++  resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
++  integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
++  dependencies:
++    minipass "^3.0.0"
++    yallist "^4.0.0"
++
+ mixin-deep@^1.2.0:
+   version "1.3.2"
+   resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+@@ -7473,12 +7493,12 @@ mixin-deep@^1.2.0:
+     for-in "^1.0.2"
+     is-extendable "^1.0.1"
+ 
+-mkdirp@1.x, mkdirp@^1.0.4:
++mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
+   version "1.0.4"
+   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+   integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+ 
+-"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
++mkdirp@^0.5.1, mkdirp@~0.5.1:
+   version "0.5.5"
+   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+   integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+@@ -7584,23 +7604,21 @@ node-forge@^0.7.1:
+   resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac"
+   integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==
+ 
+-node-gyp@^3.8.0:
+-  version "3.8.0"
+-  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
+-  integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==
++node-gyp@^3.8.0, node-gyp@^7.0.0:
++  version "7.1.2"
++  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae"
++  integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==
+   dependencies:
+-    fstream "^1.0.0"
+-    glob "^7.0.3"
+-    graceful-fs "^4.1.2"
+-    mkdirp "^0.5.0"
+-    nopt "2 || 3"
+-    npmlog "0 || 1 || 2 || 3 || 4"
+-    osenv "0"
+-    request "^2.87.0"
+-    rimraf "2"
+-    semver "~5.3.0"
+-    tar "^2.0.0"
+-    which "1"
++    env-paths "^2.2.0"
++    glob "^7.1.4"
++    graceful-fs "^4.2.3"
++    nopt "^5.0.0"
++    npmlog "^4.1.2"
++    request "^2.88.2"
++    rimraf "^3.0.2"
++    semver "^7.3.2"
++    tar "^6.0.2"
++    which "^2.0.2"
+ 
+ node-int64@^0.4.0:
+   version "0.4.0"
+@@ -7681,13 +7699,6 @@ node-sass@^4.13.0:
+     stdout-stream "^1.4.0"
+     "true-case-path" "^1.0.2"
+ 
+-"nopt@2 || 3":
+-  version "3.0.6"
+-  resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+-  integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+-  dependencies:
+-    abbrev "1"
+-
+ nopt@^5.0.0:
+   version "5.0.0"
+   resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
+@@ -7741,7 +7752,7 @@ npm-run-path@^4.0.0:
+   dependencies:
+     path-key "^3.0.0"
+ 
+-"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0:
++npmlog@^4.0.0, npmlog@^4.1.2:
+   version "4.1.2"
+   resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+   integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+@@ -7974,24 +7985,6 @@ os-browserify@^0.3.0:
+   resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+   integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+ 
+-os-homedir@^1.0.0:
+-  version "1.0.2"
+-  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+-  integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+-
+-os-tmpdir@^1.0.0:
+-  version "1.0.2"
+-  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+-  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+-
+-osenv@0:
+-  version "0.1.5"
+-  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+-  integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+-  dependencies:
+-    os-homedir "^1.0.0"
+-    os-tmpdir "^1.0.0"
+-
+ p-each-series@^2.1.0:
+   version "2.2.0"
+   resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a"
+@@ -9583,7 +9576,7 @@ request-promise-native@^1.0.5, request-promise-native@
+     stealthy-require "^1.1.1"
+     tough-cookie "^2.3.3"
+ 
+-request@^2.79.0, request@^2.87.0, request@^2.88.0, request@^2.88.2:
++request@^2.79.0, request@^2.88.0, request@^2.88.2:
+   version "2.88.2"
+   resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
+   integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+@@ -9717,7 +9710,7 @@ rgba-regex@^1.0.0:
+   resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
+   integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
+ 
+-rimraf@2, rimraf@^2.6.2:
++rimraf@^2.6.2:
+   version "2.7.1"
+   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+   integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+@@ -9897,11 +9890,6 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6
+   resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+   integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+ 
+-semver@~5.3.0:
+-  version "5.3.0"
+-  resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+-  integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
+-
+ send@0.17.1:
+   version "0.17.1"
+   resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+@@ -10546,14 +10534,17 @@ table@^6.0.4:
+     slice-ansi "^4.0.0"
+     string-width "^4.2.0"
+ 
+-tar@^2.0.0:
+-  version "2.2.2"
+-  resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40"
+-  integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==
++tar@^6.0.2:
++  version "6.1.11"
++  resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
++  integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
+   dependencies:
+-    block-stream "*"
+-    fstream "^1.0.12"
+-    inherits "2"
++    chownr "^2.0.0"
++    fs-minipass "^2.0.0"
++    minipass "^3.0.0"
++    minizlib "^2.1.1"
++    mkdirp "^1.0.3"
++    yallist "^4.0.0"
+ 
+ terminal-link@^2.0.0:
+   version "2.1.1"
+@@ -11339,7 +11330,7 @@ which-module@^2.0.0:
+   resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+   integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+ 
+-which@1, which@^1.2.9:
++which@^1.2.9:
+   version "1.3.1"
+   resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+   integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
diff --git a/net-mgmt/chronograf/files/yarn/package.json b/net-mgmt/chronograf/files/yarn/package.json
new file mode 100644
index 000000000000..507c5181fba7
--- /dev/null
+++ b/net-mgmt/chronograf/files/yarn/package.json
@@ -0,0 +1,29 @@
+{
+  "private": true,
+  "name": "chronograf",
+  "description": "",
+  "workspaces": {
+    "packages": [
+      "ui"
+    ]
+  },
+  "scripts": {
+    "postinstall": "echo \"\" > node_modules/go.mod"
+  },
+  "homepage": "https://github.com/influxdata/chronograf",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/influxdata/chronograf"
+  },
+  "keywords": [
+    "influxdb",
+    "influxdata"
+  ],
+  "author": {
+    "name": "InfluxData"
+  },
+  "license": "AGPL-3.0",
+  "resolutions": {
+    "**/node-gyp": "^7.0.0"
+  }
+}
diff --git a/net-mgmt/chronograf/files/yarn/ui/package.json b/net-mgmt/chronograf/files/yarn/ui/package.json
new file mode 100644
index 000000000000..2037c8a5eadb
--- /dev/null
+++ b/net-mgmt/chronograf/files/yarn/ui/package.json
@@ -0,0 +1,143 @@
+{
+  "name": "chronograf-ui",
+  "version": "1.9.1",
+  "private": true,
+  "license": "AGPL-3.0",
+  "description": "",
+  "repository": {
+    "type": "git",
+    "url": "github:influxdata/chronograf"
+  },
+  "scripts": {
+    "start": "GIT_SHA=$(git rev-parse HEAD) node parcel.js",
+    "build": "GIT_SHA=$(git rev-parse HEAD) parcel build -d build --log-level 2 --no-source-maps --public-url '' src/index.html",
+    "clean": "rm -rf ./build/* && rm -rf ./.cache",
+    "test": "jest",
+    "test:watch": "jest --watch",
+    "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand --watch",
+    "lint": "yarn run eslint; yarn run tsc",
+    "eslint": "eslint src",
+    "eslint:watch": "esw src --watch --cache",
+    "eslint:fix": "eslint src --fix",
+    "tsc": "tsc -p ./tsconfig.json --noEmit --pretty",
+    "tsc:watch": "tsc -p ./tsconfig.json --noEmit --pretty -w",
+    "dev": "yarn clean && yarn start",
+    "postinstall": "echo \"\" > ../node_modules/go.mod"
+  },
+  "author": "",
+  "devDependencies": {
+    "@babel/core": "^7.4.0",
+    "@babel/plugin-proposal-class-properties": "^7.1.0",
+    "@babel/plugin-proposal-decorators": "^7.1.2",
+    "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+    "@babel/plugin-transform-runtime": "^7.1.0",
+    "@babel/preset-env": "^7.13.9",
+    "@babel/preset-react": "^7.0.0",
+    "@types/chroma-js": "^1.3.4",
+    "@types/codemirror": "^0.0.56",
+    "@types/d3-color": "^1.2.1",
+    "@types/d3-scale": "^2.0.1",
+    "@types/dygraphs": "^1.1.6",
+    "@types/enzyme": "^3.1.13",
+    "@types/jest": "^26.0.20",
+    "@types/levelup": "^4.3.3",
+    "@types/lodash": "^4.14.104",
+    "@types/node": "^9.4.6",
+    "@types/papaparse": "^4.1.34",
+    "@types/prop-types": "^15.5.2",
+    "@types/qs": "^6.5.1",
+    "@types/react": "^16.8.23",
+    "@types/react-dnd": "^2.0.36",
+    "@types/react-dnd-html5-backend": "^2.1.9",
+    "@types/react-dom": "^16.8.4",
+    "@types/react-router": "^3.0.15",
+    "@types/react-router-redux": "4",
+    "@types/react-virtualized": "^9.18.3",
+    "@types/text-encoding": "^0.0.32",
+    "@types/uuid": "^3.4.3",
+    "@typescript-eslint/eslint-plugin": "^4.16.1",
+    "@typescript-eslint/parser": "^4.16.1",
+    "autoprefixer": "^6.3.1",
+    "babel-core": "^7.0.0-bridge",
+    "babel-eslint": "^10.0.1",
+    "babel-jest": "^23.6.0",
+    "babel-plugin-lodash": "^3.3.4",
+    "babel-plugin-module-resolver": "^4.1.0",
+    "enzyme": "^3.6.0",
+    "enzyme-adapter-react-16": "^1.5.0",
+    "enzyme-to-json": "^3.3.4",
+    "eslint": "^7.21.0",
+    "eslint-config-prettier": "^8.1.0",
+    "eslint-plugin-babel": "^5.3.1",
+    "eslint-plugin-import": "^2.22.1",
+    "eslint-plugin-jest": "^24.1.8",
+    "eslint-plugin-prefer-arrow": "^1.2.3",
+    "eslint-plugin-prettier": "^3.3.1",
+    "eslint-plugin-react": "^7.22.0",
+    "eslint-watch": "^7.0.0",
+    "express": "^4.14.0",
+    "fake-indexeddb": "^2.0.4",
+    "http-proxy-middleware": "^0.18.0",
+    "identity-obj-proxy": "^3.0.0",
+    "jest": "^26.6.3",
+    "jest-runner-eslint": "^0.10.0",
+    "jsdom": "^9.0.0",
+    "node-sass": "^4.13.0",
+    "parcel": "1.12.3",
+    "prettier": "^2.2.1",
+    "sass": "^1.26.3",
+    "ts-jest": "^26.5.3",
+    "tslib": "^1.9.0",
+    "typescript": "^4.2.2"
+  },
+  "dependencies": {
+    "@babel/runtime": "^7.0.0",
+    "axios": "^0.21.1",
+    "babel-polyfill": "^6.26.0",
+    "bignumber.js": "^4.0.2",
+    "calculate-size": "^1.1.1",
+    "chroma-js": "^1.3.6",
+    "classnames": "^2.2.3",
+    "codemirror": "^5.36.0",
+    "d3-color": "^1.2.0",
+    "d3-scale": "^2.1.0",
+    "dygraphs": "2.1.0",
+    "encoding-down": "^5.0.4",
+    "fast.js": "^0.1.1",
+    "fixed-data-table-2": "^0.8.13",
+    "he": "^1.1.1",
+    "level-js": "^3.0.0",
+    "levelup": "^3.1.1",
+    "lodash": "^4.17.13",
+    "memoize-one": "^4.0.2",
+    "moment": "^2.13.0",
+    "nano-date": "^2.0.1",
+    "papaparse": "^5.3.0",
+    "prop-types": "^15.6.1",
+    "qs": "^6.5.2",
+    "react": "^16.8.6",
+    "react-addons-shallow-compare": "^15.0.2",
+    "react-codemirror2": "^7.2.1",
+    "react-copy-to-clipboard": "^5.0.1",
+    "react-custom-scrollbars": "^4.1.1",
+    "react-dimensions": "^1.2.0",
+    "react-dnd": "^2.6.0",
+    "react-dnd-html5-backend": "^2.6.0",
+    "react-dom": "^16.5.1",
+    "react-grid-layout": "1.2.2",
+    "react-markdown": "^6.0.2",
+    "react-onclickoutside": "^6.10.0",
+    "react-redux": "^7.2.2",
+    "react-resize-detector": "^2.3.0",
+    "react-router": "^3.0.2",
+    "react-router-redux": "^4.0.8",
+    "react-tooltip": "^3.2.1",
+    "react-virtualized": "^9.18.5",
+    "redux": "^3.3.1",
+    "redux-auth-wrapper": "^3.0.0",
+    "redux-thunk": "^1.0.3",
+    "reselect": "^3.0.1",
+    "rome": "^2.1.22",
+    "uuid": "^3.2.1"
+  }
+}
diff --git a/net-mgmt/chronograf/files/yarn/yarn.lock b/net-mgmt/chronograf/files/yarn/yarn.lock
new file mode 100644
index 000000000000..94d41a581339
--- /dev/null
+++ b/net-mgmt/chronograf/files/yarn/yarn.lock
@@ -0,0 +1,11503 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/code-frame@7.12.11":
+  version "7.12.11"
+  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+  integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+  dependencies:
+    "@babel/highlight" "^7.10.4"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
+  integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
+  dependencies:
+    "@babel/highlight" "^7.12.13"
+
+"@babel/code-frame@^7.0.0 <7.4.0":
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
+  integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
+  dependencies:
+    "@babel/highlight" "^7.0.0"
+
+"@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.8":
+  version "7.13.8"
+  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.8.tgz#5b783b9808f15cef71547f1b691f34f8ff6003a6"
+  integrity sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==
+
+"@babel/core@^7.0.0 <7.4.0":
+  version "7.3.4"
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b"
+  integrity sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==
+  dependencies:
+    "@babel/code-frame" "^7.0.0"
+    "@babel/generator" "^7.3.4"
+    "@babel/helpers" "^7.2.0"
+    "@babel/parser" "^7.3.4"
+    "@babel/template" "^7.2.2"
+    "@babel/traverse" "^7.3.4"
+    "@babel/types" "^7.3.4"
+    convert-source-map "^1.1.0"
+    debug "^4.1.0"
+    json5 "^2.1.0"
+    lodash "^4.17.11"
+    resolve "^1.3.2"
+    semver "^5.4.1"
+    source-map "^0.5.0"
+
+"@babel/core@^7.1.0", "@babel/core@^7.4.0", "@babel/core@^7.7.5":
+  version "7.13.8"
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.8.tgz#c191d9c5871788a591d69ea1dc03e5843a3680fb"
+  integrity sha512-oYapIySGw1zGhEFRd6lzWNLWFX2s5dA/jm+Pw/+59ZdXtjyIuwlXbrId22Md0rgZVop+aVoqow2riXhBLNyuQg==
+  dependencies:
+    "@babel/code-frame" "^7.12.13"
+    "@babel/generator" "^7.13.0"
+    "@babel/helper-compilation-targets" "^7.13.8"
+    "@babel/helper-module-transforms" "^7.13.0"
+    "@babel/helpers" "^7.13.0"
+    "@babel/parser" "^7.13.4"
+    "@babel/template" "^7.12.13"
+    "@babel/traverse" "^7.13.0"
+    "@babel/types" "^7.13.0"
+    convert-source-map "^1.7.0"
+    debug "^4.1.0"
+    gensync "^1.0.0-beta.2"
+    json5 "^2.1.2"
+    lodash "^4.17.19"
+    semver "^6.3.0"
+    source-map "^0.5.0"
+
+"@babel/generator@^7.0.0 <7.4.0":
+  version "7.3.4"
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e"
+  integrity sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==
+  dependencies:
+    "@babel/types" "^7.3.4"
+    jsesc "^2.5.1"
+    lodash "^4.17.11"
+    source-map "^0.5.0"
+    trim-right "^1.0.1"
+
+"@babel/generator@^7.13.0", "@babel/generator@^7.3.4":
+  version "7.13.9"
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39"
+  integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==
+  dependencies:
+    "@babel/types" "^7.13.0"
+    jsesc "^2.5.1"
+    source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
+  integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==
+  dependencies:
+    "@babel/types" "^7.12.13"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc"
+  integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==
+  dependencies:
+    "@babel/helper-explode-assignable-expression" "^7.12.13"
+    "@babel/types" "^7.12.13"
+
+"@babel/helper-builder-react-jsx@^7.3.0":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.12.13.tgz#df6a76fb83feb6b8e6dcfb46bb49010098cb51f0"
+  integrity sha512-QN7Z5FByIOFESQXxoNYVPU7xONzrDW2fv7oKKVkj+62N3Dx1IZaVu/RF9QhV9XyCZE/xiYNfuQ1JsiL1jduT1A==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.12.13"
+    "@babel/types" "^7.12.13"
+
+"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.8":
+  version "7.13.8"
+  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz#02bdb22783439afb11b2f009814bdd88384bd468"
+  integrity sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A==
+  dependencies:
+    "@babel/compat-data" "^7.13.8"
+    "@babel/helper-validator-option" "^7.12.17"
+    browserslist "^4.14.5"
+    semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.13.0":
+  version "7.13.8"
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.8.tgz#0367bd0a7505156ce018ca464f7ac91ba58c1a04"
+  integrity sha512-qioaRrKHQbn4hkRKDHbnuQ6kAxmmOF+kzKGnIfxPK4j2rckSJCpKzr/SSTlohSCiE3uAQpNDJ9FIh4baeE8W+w==
+  dependencies:
+    "@babel/helper-function-name" "^7.12.13"
+    "@babel/helper-member-expression-to-functions" "^7.13.0"
+    "@babel/helper-optimise-call-expression" "^7.12.13"
+    "@babel/helper-replace-supers" "^7.13.0"
+    "@babel/helper-split-export-declaration" "^7.12.13"
+
+"@babel/helper-create-regexp-features-plugin@^7.12.13":
+  version "7.12.17"
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7"
+  integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.12.13"
+    regexpu-core "^4.7.1"
+
+"@babel/helper-define-polyfill-provider@^0.1.5":
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e"
+  integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==
+  dependencies:
+    "@babel/helper-compilation-targets" "^7.13.0"
+    "@babel/helper-module-imports" "^7.12.13"
+    "@babel/helper-plugin-utils" "^7.13.0"
+    "@babel/traverse" "^7.13.0"
+    debug "^4.1.1"
+    lodash.debounce "^4.0.8"
+    resolve "^1.14.2"
+    semver "^6.1.2"
+
+"@babel/helper-explode-assignable-expression@^7.12.13":
+  version "7.13.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f"
+  integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==
+  dependencies:
+    "@babel/types" "^7.13.0"
+
+"@babel/helper-function-name@^7.1.0", "@babel/helper-function-name@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
+  integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
+  dependencies:
+    "@babel/helper-get-function-arity" "^7.12.13"
+    "@babel/template" "^7.12.13"
+    "@babel/types" "^7.12.13"
+
+"@babel/helper-get-function-arity@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
+  integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
+  dependencies:
+    "@babel/types" "^7.12.13"
+
+"@babel/helper-hoist-variables@^7.13.0":
+  version "7.13.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8"
+  integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==
+  dependencies:
+    "@babel/traverse" "^7.13.0"
+    "@babel/types" "^7.13.0"
+
+"@babel/helper-member-expression-to-functions@^7.13.0":
+  version "7.13.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091"
+  integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==
+  dependencies:
+    "@babel/types" "^7.13.0"
+
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0"
+  integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==
+  dependencies:
+    "@babel/types" "^7.12.13"
+
+"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.13.0":
+  version "7.13.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1"
+  integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==
+  dependencies:
+    "@babel/helper-module-imports" "^7.12.13"
+    "@babel/helper-replace-supers" "^7.13.0"
+    "@babel/helper-simple-access" "^7.12.13"
+    "@babel/helper-split-export-declaration" "^7.12.13"
+    "@babel/helper-validator-identifier" "^7.12.11"
+    "@babel/template" "^7.12.13"
+    "@babel/traverse" "^7.13.0"
+    "@babel/types" "^7.13.0"
+    lodash "^4.17.19"
+
+"@babel/helper-optimise-call-expression@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
+  integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
+  dependencies:
+    "@babel/types" "^7.12.13"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+  version "7.13.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
+  integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
+
+"@babel/helper-remap-async-to-generator@^7.13.0":
+  version "7.13.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209"
+  integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.12.13"
+    "@babel/helper-wrap-function" "^7.13.0"
+    "@babel/types" "^7.13.0"
+
+"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0":
+  version "7.13.0"
+  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24"
+  integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==
+  dependencies:
+    "@babel/helper-member-expression-to-functions" "^7.13.0"
+    "@babel/helper-optimise-call-expression" "^7.12.13"
+    "@babel/traverse" "^7.13.0"
+    "@babel/types" "^7.13.0"
+
+"@babel/helper-simple-access@^7.1.0", "@babel/helper-simple-access@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4"
+  integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==
+  dependencies:
+    "@babel/types" "^7.12.13"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
+  version "7.12.1"
+  resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
+  integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
+  dependencies:
+    "@babel/types" "^7.12.1"
+
+"@babel/helper-split-export-declaration@^7.0.0", "@babel/helper-split-export-declaration@^7.12.13":
+  version "7.12.13"
+  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
+  integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
+  dependencies:
+    "@babel/types" "^7.12.13"
+
*** 11246 LINES SKIPPED ***