diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 0cd929d2..d2bf9f7e 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -16,7 +16,6 @@ "@clerk/nextjs": "^5.0.12", "@clickhouse/client": "^1.2.0", "@hookform/resolvers": "^3.3.4", - "@hyperdx/browser": "^0.21.1", "@hyperdx/node-opentelemetry": "^0.8.1", "@openpanel/common": "workspace:^", "@openpanel/constants": "workspace:^", diff --git a/apps/dashboard/src/app/providers.tsx b/apps/dashboard/src/app/providers.tsx index 8f46a3ac..56cfcb91 100644 --- a/apps/dashboard/src/app/providers.tsx +++ b/apps/dashboard/src/app/providers.tsx @@ -1,13 +1,12 @@ 'use client'; -import React, { useEffect, useRef, useState } from 'react'; +import React, { useRef, useState } from 'react'; import { TooltipProvider } from '@/components/ui/tooltip'; import { ModalProvider } from '@/modals'; import type { AppStore } from '@/redux'; import makeStore from '@/redux'; import { api } from '@/trpc/client'; import { ClerkProvider, useAuth } from '@clerk/nextjs'; -import HyperDX from '@hyperdx/browser'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { httpLink } from '@trpc/client'; import { ThemeProvider } from 'next-themes'; @@ -57,19 +56,6 @@ function AllProviders({ children }: { children: React.ReactNode }) { storeRef.current = makeStore(); } - useEffect(() => { - if (process.env.NEXT_PUBLIC_HYPERDX_API_KEY) { - HyperDX.init({ - apiKey: process.env.NEXT_PUBLIC_HYPERDX_API_KEY, - service: 'dashboard-browser', - tracePropagationTargets: [/api.openpanel.dev/i], // Set to link traces from frontend to backend requests - advancedNetworkCapture: true, - consoleCapture: true, - captureConsole: true, - }); - } - }, []); - return ( =6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: false - /@babel/runtime@7.23.9: resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} @@ -4124,16 +4120,6 @@ packages: /@humanwhocodes/object-schema@2.0.2: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - /@hyperdx/browser@0.21.1(zone.js@0.14.10): - resolution: {integrity: sha512-pJGPKP/Ek8nuvpRtoRzUYaM52s9+Om1MPICo4M9FkPKe8m4NkxmmQjXL6kpdkWAsTCa7y+DA/ld67IgvqIkejA==} - dependencies: - '@hyperdx/otel-web': 0.16.2(zone.js@0.14.10) - '@hyperdx/otel-web-session-recorder': 0.16.2(@hyperdx/otel-web@0.16.2) - transitivePeerDependencies: - - supports-color - - zone.js - dev: false - /@hyperdx/instrumentation-exception@0.1.0(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-Jgk7JY5J07Mq9fgXApGVhSkS4+WdzzRcWLReAZhxgo46KShxE6w614mFqUSnuo+z6ghlehsy4ForViUfxrFyew==} peerDependencies: @@ -4210,49 +4196,6 @@ packages: - supports-color dev: false - /@hyperdx/otel-web-session-recorder@0.16.2(@hyperdx/otel-web@0.16.2): - resolution: {integrity: sha512-VbvhLNempi44tbESbfFohSEFgTIRiCXdSd7OiqKPFWQdr9s/VDrNh52S5VEn27AI6wn4xBy+Ird46Rd4gHKwSg==} - peerDependencies: - '@hyperdx/otel-web': ^0.16.2 - dependencies: - '@babel/runtime': 7.18.9 - '@hyperdx/otel-web': 0.16.2(zone.js@0.14.10) - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.8.0) - '@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.8.0) - fflate: 0.7.4 - long: 5.2.3 - protobufjs: 6.11.4 - rrweb: 1.1.3 - type-fest: 4.20.1 - dev: false - - /@hyperdx/otel-web@0.16.2(zone.js@0.14.10): - resolution: {integrity: sha512-ddezDT8WIbSHRqGTRgV/A1ND+tV6FNcPuvjddli/kLnhzHsHOT2pYprlmIONI7gnjQjt0gJ4SHj3fd8psbEw3w==} - dependencies: - '@babel/runtime': 7.23.9 - '@hyperdx/instrumentation-exception': 0.1.0(@opentelemetry/api@1.8.0) - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.8.0) - '@opentelemetry/exporter-trace-otlp-http': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-document-load': 0.38.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-fetch': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-user-interaction': 0.38.0(@opentelemetry/api@1.8.0)(zone.js@0.14.10) - '@opentelemetry/instrumentation-xml-http-request': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.27.0 - json-stringify-safe: 5.0.1 - lodash: 4.17.21 - shimmer: 1.2.1 - web-vitals: 3.5.2 - transitivePeerDependencies: - - supports-color - - zone.js - dev: false - /@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.2.5): resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==} peerDependencies: @@ -5374,22 +5317,6 @@ packages: - supports-color dev: false - /@opentelemetry/instrumentation-document-load@0.38.0(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-X/AOG8sDcVp/bVGRWDDG7MCRjcmuQwZqG2B2C6/oj8V4koXPNRNDvW2GEIGJhF5/WxJxZsTRIGPG+yeJ52QOww==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.27.0 - transitivePeerDependencies: - - supports-color - dev: false - /@opentelemetry/instrumentation-express@0.39.0(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-AG8U7z7D0JcBu/7dDcwb47UMEzj9/FMiJV2iQZqrsZnxR3FjB9J9oIH2iszJYci2eUdp2WbdvtpD9RV/zmME5A==} engines: {node: '>=14'} @@ -5418,21 +5345,6 @@ packages: - supports-color dev: false - /@opentelemetry/instrumentation-fetch@0.51.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-LzciqAnJmmYaXWo2hlrN99NMbYbExo6n6lBKBeMHAi7X/ddhCSOsgSNVbF3kDB7P++PJhjYqLT3hy6SU4AFHcg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 - transitivePeerDependencies: - - supports-color - dev: false - /@opentelemetry/instrumentation-fs@0.12.0(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-Waf+2hekJRxIwq1PmivxOWLdMOtYbY22hKr34gEtfbv2CArSv8FBJH4BmQxB9o5ZcwkdKu589qs009dbuSfNmQ==} engines: {node: '>=14'} @@ -5799,22 +5711,6 @@ packages: - supports-color dev: false - /@opentelemetry/instrumentation-user-interaction@0.38.0(@opentelemetry/api@1.8.0)(zone.js@0.14.10): - resolution: {integrity: sha512-/UZT7zZUpi3WavRW6GmxKSa3d3PQ1ApM9nG9PKq95d4w/zhXBaYiqGT/wzcyXefW4TL2oAq4sjJvt1rZpOlImA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - zone.js: ^0.11.4 || ^0.13.0 || ^0.14.0 - dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) - zone.js: 0.14.10 - transitivePeerDependencies: - - supports-color - dev: false - /@opentelemetry/instrumentation-winston@0.37.0(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-vOx55fxdNjo2XojJf8JN4jP7VVvQCh7UQzzQ2Q2FpGJpt8Z3EErKaY8xOBkOuJH0TtL/Q72rmIn9c+mRG46BxA==} engines: {node: '>=14'} @@ -5828,21 +5724,6 @@ packages: - supports-color dev: false - /@opentelemetry/instrumentation-xml-http-request@0.51.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-CrQZxADNFr9M3aCgjM3/KXDz12lBrZA5LW+btfgNb78hsLNwqxThtFvXOHr86UsOzJt+h9m4yDeH6YLEvCTBbw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 - transitivePeerDependencies: - - supports-color - dev: false - /@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==} engines: {node: '>=14'} @@ -6137,18 +6018,6 @@ packages: semver: 7.6.3 dev: false - /@opentelemetry/sdk-trace-web@1.24.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-0w+aKRai9VREeo3VrtW+hcbrE2Fl/uKL7G+oXgRNf6pI9QLaEGuEzUTX+oxXVPBadzjOd+5dqCHYdX7UeVjzwA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' - dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 - dev: false - /@opentelemetry/semantic-conventions@1.24.1: resolution: {integrity: sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==} engines: {node: '>=14'} @@ -8371,10 +8240,6 @@ packages: '@types/node': 20.14.12 dev: false - /@types/css-font-loading-module@0.0.7: - resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==} - dev: false - /@types/d3-array@3.2.1: resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} dev: false @@ -8735,10 +8600,6 @@ packages: resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} dev: true - /@types/long@4.0.2: - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - dev: false - /@types/mdast@3.0.15: resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} dependencies: @@ -9174,10 +9035,6 @@ packages: engines: {node: '>=10.0.0'} dev: false - /@xstate/fsm@1.6.5: - resolution: {integrity: sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==} - dev: false - /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false @@ -9724,11 +9581,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-arraybuffer@1.0.2: - resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} - engines: {node: '>= 0.6.0'} - dev: false - /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -12548,14 +12400,6 @@ packages: resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==} dev: false - /fflate@0.4.8: - resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} - dev: false - - /fflate@0.7.4: - resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} - dev: false - /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -14656,10 +14500,6 @@ packages: yargs: 15.4.1 dev: false - /long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - dev: false - /long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} dev: false @@ -15808,10 +15648,6 @@ packages: yallist: 4.0.0 dev: false - /mitt@1.2.0: - resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} - dev: false - /mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} dev: false @@ -16000,7 +15836,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /next@14.1.0(react-dom@18.2.0)(react@18.2.0): + /next@14.1.0(@opentelemetry/api@1.8.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} hasBin: true @@ -16016,6 +15852,7 @@ packages: optional: true dependencies: '@next/env': 14.1.0 + '@opentelemetry/api': 1.8.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001596 @@ -17185,26 +17022,6 @@ packages: resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} dev: false - /protobufjs@6.11.4: - resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} - hasBin: true - requiresBuild: true - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 20.14.12 - long: 4.0.0 - dev: false - /protobufjs@7.4.0: resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} engines: {node: '>=12.0.0'} @@ -18268,21 +18085,6 @@ packages: fsevents: 2.3.3 dev: true - /rrweb-snapshot@1.1.14: - resolution: {integrity: sha512-eP5pirNjP5+GewQfcOQY4uBiDnpqxNRc65yKPW0eSoU1XamDfc4M8oqpXGMyUyvLyxFDB0q0+DChuxxiU2FXBQ==} - dev: false - - /rrweb@1.1.3: - resolution: {integrity: sha512-F2qp8LteJLyycsv+lCVJqtVpery63L3U+/ogqMA0da8R7Jx57o6gT+HpjrzdeeGMIBZR7kKNaKyJwDupTTu5KA==} - dependencies: - '@types/css-font-loading-module': 0.0.7 - '@xstate/fsm': 1.6.5 - base64-arraybuffer: 1.0.2 - fflate: 0.4.8 - mitt: 1.2.0 - rrweb-snapshot: 1.1.14 - dev: false - /run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} @@ -19473,11 +19275,6 @@ packages: engines: {node: '>=12.20'} dev: false - /type-fest@4.20.1: - resolution: {integrity: sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==} - engines: {node: '>=16'} - dev: false - /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -19998,10 +19795,6 @@ packages: engines: {node: '>= 8'} dev: false - /web-vitals@3.5.2: - resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} - dev: false - /web-worker@1.3.0: resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} dev: false @@ -20345,10 +20138,6 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - /zone.js@0.14.10: - resolution: {integrity: sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==} - dev: false - /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: false