The code and data behind xeiaso.net
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

Move to Kubernetes (#853)

* start to lift-and-shift to k8s

Signed-off-by: Xe Iaso <me@xeiaso.net>

* manifest/xesite: properly configure pod disruption budget, hostmount for xesite as a hack

Signed-off-by: Xe Iaso <me@xeiaso.net>

* properly slonk readiness

Signed-off-by: Xe Iaso <me@xeiaso.net>

* manifest: move to aeacus

Signed-off-by: Xe Iaso <me@xeiaso.net>

* internal: add OnionLocation middleware

Signed-off-by: Xe Iaso <me@xeiaso.net>

* internal/lume: jettison serving from the zipfile

Signed-off-by: Xe Iaso <me@xeiaso.net>

* yolo deploy to prod

Signed-off-by: Xe Iaso <me@xeiaso.net>

* okay use a machineproxy here

Signed-off-by: Xe Iaso <me@xeiaso.net>

* test CI/CD

Signed-off-by: Xe Iaso <me@xeiaso.net>

* try civo route

Signed-off-by: Xe Iaso <me@xeiaso.net>

* lol

Signed-off-by: Xe Iaso <me@xeiaso.net>

* plan c?

Signed-off-by: Xe Iaso <me@xeiaso.net>

* specify the region

Signed-off-by: Xe Iaso <me@xeiaso.net>

* lol

Signed-off-by: Xe Iaso <me@xeiaso.net>

* blog: hello again kubernetes!

Signed-off-by: Xe Iaso <me@xeiaso.net>

---------

Signed-off-by: Xe Iaso <me@xeiaso.net>

authored by

Xe Iaso and committed by
GitHub
20d07c70 2b349f56

+2986 -2205
+2 -1
.dockerignore
··· 1 1 backend 2 2 frontend 3 3 .env 4 - .git 4 + .git 5 + manifest
+19 -33
.github/workflows/earthly.yml
··· 46 46 id: build 47 47 run: | 48 48 earthly --org me-2625 --sat alpha --ci +all 49 - 50 - deploy-patreon: 51 - name: "Deploy patreon-saasproxy" 52 - needs: build 53 - runs-on: ubuntu-latest 54 - permissions: 55 - contents: read 56 - if: github.ref == 'refs/heads/main' 57 - 58 - steps: 59 - - uses: actions/checkout@v4 60 - - uses: superfly/flyctl-actions/setup-flyctl@master 61 - - uses: dorny/paths-filter@v3 62 - id: changes 63 - with: 64 - filters: | 65 - src: 66 - - 'cmd/patreon-saasproxy/*.go' 67 - - 'internal/**/*.go' 68 - - 'go.mod' 69 - - 'go.sum' 70 - - 'Earthfile' 71 - - if: steps.changes.outputs.src == 'true' 72 - run: flyctl deploy --remote-only -c ./fly/patreon-saasproxy/fly.toml 73 - env: 74 - FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} 75 49 76 - deploy-xesite: 50 + deploy: 77 51 name: "Deploy xesite" 78 52 needs: build 79 53 runs-on: ubuntu-latest ··· 83 57 84 58 steps: 85 59 - uses: actions/checkout@v4 86 - - uses: superfly/flyctl-actions/setup-flyctl@master 60 + - uses: azure/setup-kubectl@v4 61 + - name: Save Civo kubeconfig 62 + run: | 63 + curl -sL https://civo.com/get | sh 64 + civo apikey add default $CIVO_TOKEN 65 + civo apikey current default 66 + civo kubernetes config --region phx1 aeacus --save --switch 67 + env: 68 + CIVO_TOKEN: ${{ secrets.CIVO_TOKEN }} 87 69 - uses: dorny/paths-filter@v3 88 70 id: changes 89 71 with: 90 72 filters: | 91 73 src: 92 - - 'cmd/xesite/*.go' 74 + - 'cmd/**/*.go' 93 75 - 'internal/**/*.go' 76 + - 'pb/*' 77 + - 'pb/**/*' 94 78 - 'go.mod' 95 79 - 'go.sum' 96 80 - 'Earthfile' 97 - - if: steps.changes.outputs.src == 'true' 98 - run: flyctl deploy --remote-only -c ./fly/xesite/fly.toml 99 - env: 100 - FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} 81 + - 'manifest/**/*.yaml' 82 + - name: "Deploy" 83 + if: steps.changes.outputs.src == 'true' 84 + run: | 85 + kubectl apply -k manifest 86 + kubectl rollout restart -n default deploy/xesite
+1 -1
Earthfile
··· 74 74 75 75 LABEL org.opencontainers.image.source="https://github.com/Xe/site" 76 76 77 - SAVE IMAGE --push ghcr.io/xe/site/bin:earthly 77 + SAVE IMAGE --push ghcr.io/xe/site/bin:latest 78 78 79 79 all: 80 80 BUILD --platform=linux/amd64 +xesite
+125
cmd/hydrate/main.go
··· 1 + package main 2 + 3 + import ( 4 + "embed" 5 + "flag" 6 + "fmt" 7 + "log" 8 + "os" 9 + "os/exec" 10 + "path/filepath" 11 + "strconv" 12 + "strings" 13 + "text/template" 14 + "time" 15 + ) 16 + 17 + var ( 18 + //go:embed templates/*.tmpl 19 + templates embed.FS 20 + 21 + date = flag.String("date", time.Now().Format(time.DateOnly), "Publication date of the post") 22 + 23 + routing = map[string]string{ 24 + "blog": "lume/src/blog", 25 + "linkpost": "lume/src/blog", 26 + "note": "lume/src/notes", 27 + "talk": "lume/src/talks", 28 + "xecast": "lume/src/xecast", 29 + } 30 + ) 31 + 32 + // go run ./cmd/hydrate <kind> <slug> 33 + 34 + func init() { 35 + flag.Usage = func() { 36 + fmt.Fprintf(os.Stderr, "Usage: %s [flags] <kind> <slug>\n\n", filepath.Base(os.Args[0])) 37 + fmt.Fprintln(os.Stderr, "Available kinds:") 38 + 39 + templs, err := templates.ReadDir("templates") 40 + if err != nil { 41 + log.Panicf("can't read templates: %v", err) 42 + } 43 + 44 + for _, tmpl := range templs { 45 + kind, ok := strings.CutSuffix(tmpl.Name(), filepath.Ext(tmpl.Name())) 46 + if !ok { 47 + log.Panicf("can't cut extension from %q", tmpl.Name()) 48 + } 49 + fmt.Fprintln(os.Stderr, " *", kind) 50 + } 51 + 52 + fmt.Fprintln(os.Stderr) 53 + fmt.Fprintln(os.Stderr, "Flags:") 54 + 55 + flag.PrintDefaults() 56 + 57 + os.Exit(2) 58 + } 59 + } 60 + 61 + func main() { 62 + tmpl, err := template.ParseFS(templates, "templates/*.tmpl") 63 + if err != nil { 64 + log.Fatalf("can't parse templates: %v", err) 65 + } 66 + 67 + flag.Parse() 68 + 69 + if flag.NArg() != 2 { 70 + flag.Usage() 71 + } 72 + 73 + kind := flag.Arg(0) 74 + slug := flag.Arg(1) 75 + 76 + year, err := yearOf(*date) 77 + if err != nil { 78 + log.Fatalf("can't parse year in %s: %v", *date, year) 79 + } 80 + 81 + foutName := filepath.Join(routing[kind], year, slug+".mdx") 82 + 83 + if _, err := os.Stat(foutName); !os.IsNotExist(err) { 84 + log.Printf("Potential error when trying to verify %s doesn't exist: %v", foutName, err) 85 + log.Println("Does the file already exist?") 86 + os.Exit(1) 87 + } 88 + 89 + fout, err := os.Create(foutName) 90 + if err != nil { 91 + log.Fatalf("can't create %s: %v", foutName, err) 92 + } 93 + 94 + if err := tmpl.ExecuteTemplate(fout, kind+".tmpl", struct { 95 + Date string 96 + }{ 97 + Date: *date, 98 + }); err != nil { 99 + log.Fatalf("error writing template: %v", err) 100 + } 101 + 102 + if err := fout.Close(); err != nil { 103 + log.Fatalf("error closing output file: %v", err) 104 + } 105 + 106 + codePath, err := exec.LookPath("code") 107 + if err != nil { 108 + log.Println("hint: control shift p -> install code command") 109 + log.Fatalf("can't find code command in $PATH: %v", err) 110 + } 111 + 112 + if err := exec.Command(codePath, foutName).Run(); err != nil { 113 + log.Fatalf("can't open %s in VS Code: %v", foutName, err) 114 + } 115 + 116 + } 117 + 118 + func yearOf(date string) (string, error) { 119 + t, err := time.Parse(time.DateOnly, date) 120 + if err != nil { 121 + return "", err 122 + } 123 + 124 + return strconv.Itoa(t.Year()), nil 125 + }
+10
cmd/hydrate/templates/blog.tmpl
··· 1 + --- 2 + title: "" 3 + desc: "" 4 + date: {{.Date}} 5 + hero: 6 + ai: "" 7 + file: "" 8 + prompt: "" 9 + social: false 10 + ---
+5
cmd/hydrate/templates/linkpost.tmpl
··· 1 + --- 2 + title: "" 3 + date: {{.Date}} 4 + redirect_to: "" 5 + ---
+5
cmd/hydrate/templates/note.tmpl
··· 1 + --- 2 + title: "" 3 + desc: "" 4 + date: {{.Date}} 5 + ---
cmd/hydrate/templates/talk.tmpl

This is a binary file and will not be displayed.

cmd/hydrate/templates/xecast.tmpl

This is a binary file and will not be displayed.

+14 -33
cmd/patreon-saasproxy/main.go
··· 2 2 3 3 import ( 4 4 "context" 5 - "encoding/base64" 6 5 "flag" 6 + "fmt" 7 7 "log" 8 8 "log/slog" 9 9 "net" 10 10 "net/http" 11 11 "os" 12 - "path/filepath" 13 12 14 13 "github.com/facebookgo/flagenv" 15 14 _ "github.com/joho/godotenv/autoload" ··· 20 19 "gopkg.in/mxpv/patreon-go.v1" 21 20 "xeiaso.net/v4/internal" 22 21 "xeiaso.net/v4/internal/adminpb" 22 + "xeiaso.net/v4/internal/k8s" 23 23 ) 24 24 25 25 var ( 26 - bind = flag.String("bind", ":80", "HTTP bind addr") 27 - clientID = flag.String("client-id", "", "Patreon client ID") 28 - clientSecret = flag.String("client-secret", "", "Patreon client secret") 29 - dataDir = flag.String("data-dir", "./var", "Directory to store data in") 26 + bind = flag.String("bind", ":80", "HTTP bind addr") 27 + clientID = flag.String("client-id", "", "Patreon client ID") 28 + clientSecret = flag.String("client-secret", "", "Patreon client secret") 29 + dataDir = flag.String("data-dir", "./var", "Directory to store data in") 30 + k8sNamespace = flag.String("kubernetes-namespace", "default", "Kubernetes namespace this app is running in") 31 + k8sSecretName = flag.String("kubernetes-secret-name", "xesite-patreon-saasproxy-state", "Kubernetes secret to store state data in") 30 32 ) 31 33 32 34 func main() { ··· 46 48 Scopes: []string{"users", "pledges-to-me", "my-campaign"}, 47 49 } 48 50 49 - if !internal.FileExists(filepath.Join(*dataDir, "patreon-token.json")) { 50 - val, ok := os.LookupEnv("PATREON_TOKEN_JSON_B64") 51 - if !ok { 52 - log.Fatal("PATREON_TOKEN_JSON_B64 not set") 53 - } 54 - 55 - fout, err := os.Create(filepath.Join(*dataDir, "patreon-token.json")) 56 - if err != nil { 57 - log.Fatal(err) 58 - } 59 - defer fout.Close() 60 - 61 - decoded, err := base64.StdEncoding.DecodeString(val) 62 - if err != nil { 63 - slog.Error("can't decode token", "err", err, "val", val) 64 - log.Fatal(err) 65 - } 66 - 67 - if _, err := fout.Write(decoded); err != nil { 68 - log.Fatal(err) 69 - } 70 - } 71 - 72 - token, err := internal.ReadToken(filepath.Join(*dataDir, "patreon-token.json")) 51 + cts, err := k8s.TokenSource(*k8sNamespace, *k8sSecretName, &config) 73 52 if err != nil { 74 - log.Fatalf("error reading token: %v", err) 53 + log.Fatalf("error making token source: %v", err) 75 54 } 76 55 77 - cts := internal.CachingTokenSource(filepath.Join(*dataDir, "patreon-token.json"), &config, token) 78 - 79 56 s := &Server{ 80 57 cts: cts, 81 58 } 82 59 83 60 ph := adminpb.NewPatreonServer(s) 84 61 http.Handle(adminpb.PatreonPathPrefix, ph) 62 + 63 + http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { 64 + fmt.Fprintln(w, "OK") 65 + }) 85 66 86 67 ln, err := net.Listen("tcp", *bind) 87 68 if err != nil {
+4
cmd/xesite/internalapi.go
··· 3 3 import ( 4 4 "context" 5 5 "expvar" 6 + "fmt" 6 7 "log" 7 8 "net" 8 9 "net/http" ··· 23 24 mux := http.NewServeMux() 24 25 25 26 mux.Handle("/debug/vars", expvar.Handler()) 27 + mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { 28 + fmt.Fprintln(w, "OK") 29 + }) 26 30 27 31 mux.HandleFunc("/rebuild", func(w http.ResponseWriter, r *http.Request) { 28 32 go fs.Update(context.Background())
+1
cmd/xesite/main.go
··· 126 126 h = internal.AcceptEncodingMiddleware(h) 127 127 h = internal.RefererMiddleware(h) 128 128 h = internal.DomainRedirect(h, *devel) 129 + h = internal.OnionLocation(h) 129 130 130 131 slog.Info("starting server", "bind", *bind) 131 132 log.Fatal(http.Serve(ln, h))
+30
go.mod
··· 20 20 google.golang.org/protobuf v1.34.2 21 21 gopkg.in/fsnotify.v1 v1.4.7 22 22 gopkg.in/mxpv/patreon-go.v1 v1.0.0-20171031001022-1d2f253ac700 23 + k8s.io/apimachinery v0.31.2 24 + k8s.io/client-go v0.31.2 23 25 tailscale.com v1.70.0 24 26 within.website/x v1.10.0 25 27 ) ··· 47 49 github.com/cloudflare/circl v1.3.7 // indirect 48 50 github.com/cyphar/filepath-securejoin v0.2.4 // indirect 49 51 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect 52 + github.com/emicklei/go-restful/v3 v3.11.2 // indirect 50 53 github.com/emirpasic/gods v1.18.1 // indirect 51 54 github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect 52 55 github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect 56 + github.com/fxamacker/cbor/v2 v2.7.0 // indirect 53 57 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect 54 58 github.com/go-git/go-billy/v5 v5.5.0 // indirect 59 + github.com/go-logr/logr v1.4.2 // indirect 55 60 github.com/go-openapi/jsonpointer v0.21.0 // indirect 61 + github.com/go-openapi/jsonreference v0.20.4 // indirect 56 62 github.com/go-openapi/swag v0.23.0 // indirect 63 + github.com/gogo/protobuf v1.3.2 // indirect 57 64 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect 65 + github.com/golang/protobuf v1.5.4 // indirect 66 + github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect 67 + github.com/google/go-cmp v0.6.0 // indirect 68 + github.com/google/gofuzz v1.2.0 // indirect 69 + github.com/google/uuid v1.6.0 // indirect 70 + github.com/imdario/mergo v0.3.16 // indirect 58 71 github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect 59 72 github.com/josharian/intern v1.0.0 // indirect 73 + github.com/json-iterator/go v1.1.12 // indirect 60 74 github.com/kevinburke/ssh_config v1.2.0 // indirect 61 75 github.com/mailru/easyjson v0.7.7 // indirect 76 + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect 77 + github.com/modern-go/reflect2 v1.0.2 // indirect 62 78 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect 79 + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect 63 80 github.com/perimeterx/marshmallow v1.1.5 // indirect 64 81 github.com/pjbgf/sha1cd v0.3.0 // indirect 65 82 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect 66 83 github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect 67 84 github.com/skeema/knownhosts v1.2.2 // indirect 85 + github.com/spf13/pflag v1.0.5 // indirect 86 + github.com/x448/float16 v0.8.4 // indirect 68 87 github.com/xanzy/ssh-agent v0.3.3 // indirect 69 88 go4.org/mem v0.0.0-20220726221520-4f986261bf13 // indirect 70 89 golang.org/x/crypto v0.24.0 // indirect ··· 72 91 golang.org/x/net v0.26.0 // indirect 73 92 golang.org/x/sync v0.7.0 // indirect 74 93 golang.org/x/sys v0.21.0 // indirect 94 + golang.org/x/term v0.21.0 // indirect 75 95 golang.org/x/text v0.16.0 // indirect 96 + golang.org/x/time v0.5.0 // indirect 76 97 golang.org/x/tools v0.22.0 // indirect 98 + gopkg.in/inf.v0 v0.9.1 // indirect 77 99 gopkg.in/warnings.v0 v0.1.2 // indirect 100 + gopkg.in/yaml.v2 v2.4.0 // indirect 78 101 gopkg.in/yaml.v3 v3.0.1 // indirect 102 + k8s.io/api v0.31.2 // indirect 103 + k8s.io/klog/v2 v2.130.1 // indirect 104 + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect 105 + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect 106 + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect 107 + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect 108 + sigs.k8s.io/yaml v1.4.0 // indirect 79 109 )
+86
go.sum
··· 61 61 github.com/donatj/hmacsig v1.1.0/go.mod h1:rh/7q72Fo5oYc7bcKgvGHWsfHcs8jKhJdFgCZcvZ/G0= 62 62 github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= 63 63 github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= 64 + github.com/emicklei/go-restful/v3 v3.11.2 h1:1onLa9DcsMYO9P+CXaL0dStDqQ2EHHXLiz+BtnqkLAU= 65 + github.com/emicklei/go-restful/v3 v3.11.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= 64 66 github.com/emicklei/proto v1.13.2 h1:z/etSFO3uyXeuEsVPzfl56WNgzcvIr42aQazXaQmFZY= 65 67 github.com/emicklei/proto v1.13.2/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= 66 68 github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= ··· 75 77 github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= 76 78 github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 77 79 github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 80 + github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= 81 + github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= 78 82 github.com/getkin/kin-openapi v0.120.0 h1:MqJcNJFrMDFNc07iwE8iFC5eT2k/NPUFDIpNeiZv8Jg= 79 83 github.com/getkin/kin-openapi v0.120.0/go.mod h1:PCWw/lfBrJY4HcdqE3jj+QFkaFK8ABoqo7PvqVhXXqw= 80 84 github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= ··· 91 95 github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= 92 96 github.com/go-json-experiment/json v0.0.0-20231102232822-2e55bd4e08b0 h1:ymLjT4f35nQbASLnvxEde4XOBL+Sn7rFuV+FOJqkljg= 93 97 github.com/go-json-experiment/json v0.0.0-20231102232822-2e55bd4e08b0/go.mod h1:6daplAwHHGbUGib4990V3Il26O0OC4aRyvewaaAihaA= 98 + github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= 99 + github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= 94 100 github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= 95 101 github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= 102 + github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= 103 + github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= 96 104 github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= 97 105 github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= 106 + github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= 107 + github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= 98 108 github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= 99 109 github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= 110 + github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= 111 + github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= 100 112 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= 101 113 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 114 + github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= 115 + github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= 116 + github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU= 117 + github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M= 118 + github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 102 119 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= 103 120 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 121 + github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 122 + github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= 123 + github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 124 + github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2Rrd27c3VGxi6a/6HNq8QmHRKM= 125 + github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= 126 + github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= 127 + github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 128 + github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= 129 + github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= 104 130 github.com/invopop/yaml v0.3.1 h1:f0+ZpmhfBSS4MhG+4HYseMdJhoeeopbSKbq5Rpeelso= 105 131 github.com/invopop/yaml v0.3.1/go.mod h1:PMOp3nn4/12yEZUFfmOuNHJsZToEEOwoWsT+D81KkeA= 106 132 github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= ··· 109 135 github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= 110 136 github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= 111 137 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= 138 + github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= 139 + github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= 112 140 github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= 113 141 github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= 142 + github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= 143 + github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= 114 144 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 115 145 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= 116 146 github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= ··· 120 150 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 121 151 github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= 122 152 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= 153 + github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 154 + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 155 + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 156 + github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= 157 + github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= 123 158 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= 124 159 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= 160 + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= 161 + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 162 + github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= 163 + github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= 125 164 github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= 126 165 github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= 127 166 github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= ··· 140 179 github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= 141 180 github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= 142 181 github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= 182 + github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 183 + github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 143 184 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 144 185 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 186 + github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 145 187 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 146 188 github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 147 189 github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= ··· 149 191 github.com/twitchtv/twirp v8.1.3+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= 150 192 github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= 151 193 github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= 194 + github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= 195 + github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= 152 196 github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= 153 197 github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= 198 + github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 199 + github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 154 200 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 155 201 go4.org/mem v0.0.0-20220726221520-4f986261bf13 h1:CbZeCBZ0aZj8EfVgnqQcYZgf0lpZ3H9rmp5nkDTAst8= 156 202 go4.org/mem v0.0.0-20220726221520-4f986261bf13/go.mod h1:reUoABIJ9ikfM5sgtSF3Wushcza7+WeD01VB9Lirh3g= 157 203 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 204 + golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 205 + golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 158 206 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 159 207 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 160 208 golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= 161 209 golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= 162 210 golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= 163 211 golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= 212 + golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 213 + golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 164 214 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 165 215 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 166 216 golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= 167 217 golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 218 + golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 168 219 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 220 + golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 221 + golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= 169 222 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 170 223 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 171 224 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= ··· 177 230 golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= 178 231 golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 179 232 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 233 + golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 234 + golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 180 235 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 181 236 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 182 237 golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= 183 238 golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 184 239 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 240 + golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 185 241 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 242 + golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 186 243 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 187 244 golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 188 245 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ··· 212 269 golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 213 270 golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= 214 271 golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= 272 + golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= 273 + golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 215 274 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 216 275 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 276 + golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 277 + golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= 217 278 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 218 279 golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 219 280 golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= 220 281 golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= 221 282 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 283 + golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 284 + golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 285 + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 222 286 google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= 223 287 google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= 224 288 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= ··· 227 291 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= 228 292 gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= 229 293 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= 294 + gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= 295 + gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= 230 296 gopkg.in/mxpv/patreon-go.v1 v1.0.0-20171031001022-1d2f253ac700 h1:ymnLBRNALxuok6al+nlPJxfSa3yc2SZc5N21svHQtys= 231 297 gopkg.in/mxpv/patreon-go.v1 v1.0.0-20171031001022-1d2f253ac700/go.mod h1:IZaw6NfbSsGszLfPbo9LLlxLIx17eMHWe4cxpM8wUMk= 232 298 gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= 233 299 gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= 234 300 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 301 + gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 302 + gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 235 303 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 236 304 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 237 305 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 306 + k8s.io/api v0.31.2 h1:3wLBbL5Uom/8Zy98GRPXpJ254nEFpl+hwndmk9RwmL0= 307 + k8s.io/api v0.31.2/go.mod h1:bWmGvrGPssSK1ljmLzd3pwCQ9MgoTsRCuK35u6SygUk= 308 + k8s.io/apimachinery v0.31.2 h1:i4vUt2hPK56W6mlT7Ry+AO8eEsyxMD1U44NR22CLTYw= 309 + k8s.io/apimachinery v0.31.2/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= 310 + k8s.io/client-go v0.31.2 h1:Y2F4dxU5d3AQj+ybwSMqQnpZH9F30//1ObxOKlTI9yc= 311 + k8s.io/client-go v0.31.2/go.mod h1:NPa74jSVR/+eez2dFsEIHNa+3o09vtNaWwWwb1qSxSs= 312 + k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= 313 + k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= 314 + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= 315 + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= 316 + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= 317 + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 318 + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= 319 + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= 320 + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= 321 + sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= 322 + sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= 323 + sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= 238 324 tailscale.com v1.70.0 h1:SW7mxDepkXBv2iKITeyFDEfHCJBfOeHM+U79lQ0d5zQ= 239 325 tailscale.com v1.70.0/go.mod h1:a5yWox+uO5CI4tCB9ot0ZPMdQMiC+Pis9mudVaYETIo= 240 326 within.website/x v1.10.0 h1:VbwiIHoz0NFyQTq0mIJA1k99kUsCuZkGGo0zIpuI9Go=
+3
internal/cached_token_source.go
··· 3 3 import ( 4 4 "context" 5 5 "encoding/json" 6 + "errors" 6 7 "expvar" 7 8 "fmt" 8 9 "os" ··· 13 14 14 15 var ( 15 16 tokenRefreshCount = expvar.NewInt("gauge_xesite_token_refresh_count") 17 + 18 + ErrSecretValueDoesntExist = errors.New("internal: can't find oauth2-token in secret") 16 19 ) 17 20 18 21 type cachingTokenSource struct {
+9 -2
internal/domain_redirect.go
··· 4 4 "flag" 5 5 "fmt" 6 6 "net/http" 7 + "strings" 7 8 ) 8 9 9 10 var ( ··· 28 29 } 29 30 30 31 if r.Host != *redirectDomain { 31 - http.Redirect(w, r, fmt.Sprintf("https://%s%s", *redirectDomain, r.RequestURI), http.StatusMovedPermanently) 32 - return 32 + if !strings.HasSuffix(r.Host, ".onion") { 33 + if r.Method != "GET" { 34 + http.Error(w, fmt.Sprintf("go to https://%s%s and try your request again", *redirectDomain, r.RequestURI), http.StatusMisdirectedRequest) 35 + return 36 + } 37 + http.Redirect(w, r, fmt.Sprintf("https://%s%s", *redirectDomain, r.RequestURI), http.StatusMovedPermanently) 38 + return 39 + } 33 40 } 34 41 35 42 next.ServeHTTP(w, r)
+133
internal/k8s/k8s.go
··· 1 + package k8s 2 + 3 + import ( 4 + "context" 5 + "encoding/json" 6 + "errors" 7 + "expvar" 8 + "fmt" 9 + "os" 10 + "path/filepath" 11 + "time" 12 + 13 + "golang.org/x/oauth2" 14 + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" 15 + "k8s.io/client-go/kubernetes" 16 + "k8s.io/client-go/rest" 17 + "k8s.io/client-go/tools/clientcmd" 18 + ) 19 + 20 + const secretValue = "oauth2-token" 21 + 22 + var ( 23 + tokenRefreshCount = expvar.NewInt("gauge_xesite_k8s_token_refresh_count") 24 + 25 + ErrSecretValueDoesntExist = errors.New("internal: can't find oauth2-token in secret") 26 + ) 27 + 28 + type tokenSource struct { 29 + secretName string 30 + namespace string 31 + base oauth2.TokenSource 32 + clientSet kubernetes.Interface 33 + } 34 + 35 + func (kts *tokenSource) Token() (tok *oauth2.Token, err error) { 36 + tok, _ = loadTokenFromK8s(context.Background(), kts.clientSet, kts.namespace, kts.secretName) 37 + 38 + if tok != nil && tok.Expiry.After(time.Now()) { 39 + return tok, nil 40 + } 41 + 42 + if tok, err = kts.base.Token(); err != nil { 43 + return nil, err 44 + } 45 + 46 + tokenRefreshCount.Add(1) 47 + 48 + if err := kts.saveToken(tok); err != nil { 49 + return nil, err 50 + } 51 + 52 + return tok, err 53 + } 54 + 55 + func (kts *tokenSource) saveToken(tok *oauth2.Token) error { 56 + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) 57 + defer cancel() 58 + 59 + sec, err := kts.clientSet.CoreV1().Secrets(kts.namespace).Get(ctx, kts.secretName, v1.GetOptions{}) 60 + if err != nil { 61 + return fmt.Errorf("can't get secret %s::%s: %w", kts.namespace, kts.secretName, err) 62 + } 63 + 64 + data, err := json.Marshal(tok) 65 + if err != nil { 66 + return fmt.Errorf("can't marshal json: %w", err) 67 + } 68 + 69 + sec.Data[secretValue] = data 70 + 71 + if _, err := kts.clientSet.CoreV1().Secrets(kts.namespace).Update(ctx, sec, v1.UpdateOptions{}); err != nil { 72 + return fmt.Errorf("can't update secret %s::%s: %w", kts.namespace, kts.secretName, err) 73 + } 74 + 75 + return nil 76 + } 77 + 78 + func loadTokenFromK8s(ctx context.Context, cs kubernetes.Interface, ns, secretName string) (*oauth2.Token, error) { 79 + sec, err := cs.CoreV1().Secrets(ns).Get(ctx, secretName, v1.GetOptions{}) 80 + if err != nil { 81 + return nil, fmt.Errorf("can't get secret %s::%s: %w", ns, secretName, err) 82 + } 83 + 84 + data, ok := sec.Data[secretValue] 85 + if !ok { 86 + return nil, ErrSecretValueDoesntExist 87 + } 88 + 89 + var tok oauth2.Token 90 + if err := json.Unmarshal(data, &tok); err != nil { 91 + return nil, fmt.Errorf("can't unmarshal oauth2-token in %s::%s: %w", ns, secretName, err) 92 + } 93 + 94 + return &tok, nil 95 + } 96 + 97 + func TokenSource(namespace string, secretName string, config *oauth2.Config) (oauth2.TokenSource, error) { 98 + cs, err := getClientSet() 99 + if err != nil { 100 + return nil, fmt.Errorf("can't get client set: %w", err) 101 + } 102 + 103 + tok, err := loadTokenFromK8s(context.Background(), cs, namespace, secretName) 104 + if err != nil { 105 + return nil, err 106 + } 107 + 108 + orig := config.TokenSource(context.Background(), tok) 109 + 110 + return oauth2.ReuseTokenSource(nil, &tokenSource{ 111 + secretName: secretName, 112 + namespace: namespace, 113 + base: orig, 114 + clientSet: cs, 115 + }), nil 116 + } 117 + 118 + func getClientSet() (kubernetes.Interface, error) { 119 + config, err := rest.InClusterConfig() 120 + if err != nil { 121 + config, err = clientcmd.BuildConfigFromFlags("", filepath.Join(os.Getenv("HOME"), ".kube", "config")) 122 + if err != nil { 123 + return nil, err 124 + } 125 + } 126 + 127 + clientSet, err := kubernetes.NewForConfig(config) 128 + if err != nil { 129 + return nil, err 130 + } 131 + 132 + return clientSet, nil 133 + }
+2 -8
internal/lume/lume.go
··· 1 1 package lume 2 2 3 3 import ( 4 - "archive/zip" 5 4 "bytes" 6 5 "context" 7 6 "encoding/json" ··· 359 358 360 359 zipLoc := filepath.Join(f.opt.DataDir, "site.zip") 361 360 362 - if err := ZipFolder(filepath.Join(cmd.Dir, "_site"), zipLoc); err != nil { 361 + if err := ZipFolder(destDir, zipLoc); err != nil { 363 362 return fmt.Errorf("lume: can't compress site folder: %w", err) 364 363 } 365 364 ··· 369 368 } 370 369 } 371 370 372 - fs, err := zip.OpenReader(zipLoc) 373 - if err != nil { 374 - return fmt.Errorf("lume: can't open zip with site content: %w", err) 375 - } 376 - 377 - f.fs = fs 371 + f.fs = os.DirFS(destDir) 378 372 379 373 return nil 380 374 }
+36
internal/onion_location.go
··· 1 + package internal 2 + 3 + import ( 4 + "flag" 5 + "log/slog" 6 + "net/http" 7 + "net/url" 8 + ) 9 + 10 + var ( 11 + onionDomain = flag.String("onion-domain", "", "The Tor hidden service domain that this website uses") 12 + ) 13 + 14 + func OnionLocation(next http.Handler) http.Handler { 15 + if *onionDomain == "" { 16 + slog.Debug("no onion domain defined, ignoring OnionLocation middleware") 17 + return next 18 + } 19 + 20 + slog.Debug("OnionLocation middleware enabled", "onion-domain", *onionDomain) 21 + 22 + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 23 + u, err := url.Parse(r.URL.String()) 24 + if err != nil { 25 + slog.Error("[unexpected] can't parse url", "err", err, "url", r.URL.String()) 26 + next.ServeHTTP(w, r) 27 + return 28 + } 29 + 30 + u.Scheme = "http" 31 + u.Host = *onionDomain 32 + w.Header().Add("Onion-Location", u.String()) 33 + 34 + next.ServeHTTP(w, r) 35 + }) 36 + }
+1999 -2127
lume/deno.lock
··· 1 1 { 2 - "version": "3", 3 - "packages": { 4 - "specifiers": { 5 - "jsr:@std/assert@^0.224.0": "jsr:@std/assert@0.224.0", 6 - "jsr:@std/assert@^0.225.1": "jsr:@std/assert@0.225.3", 7 - "jsr:@std/assert@^0.225.2": "jsr:@std/assert@0.225.3", 8 - "jsr:@std/assert@^0.225.3": "jsr:@std/assert@0.225.3", 9 - "jsr:@std/cli@0.224.2": "jsr:@std/cli@0.224.2", 10 - "jsr:@std/cli@^0.224.0": "jsr:@std/cli@0.224.2", 11 - "jsr:@std/collections@^0.224.0": "jsr:@std/collections@0.224.2", 12 - "jsr:@std/crypto@0.224.0": "jsr:@std/crypto@0.224.0", 13 - "jsr:@std/encoding@0.224.1": "jsr:@std/encoding@0.224.1", 14 - "jsr:@std/encoding@^0.224.0": "jsr:@std/encoding@0.224.1", 15 - "jsr:@std/fmt@0.225.1": "jsr:@std/fmt@0.225.1", 16 - "jsr:@std/fmt@^0.224.0": "jsr:@std/fmt@0.224.0", 17 - "jsr:@std/fmt@^0.225.0": "jsr:@std/fmt@0.225.1", 18 - "jsr:@std/front-matter@0.224.0": "jsr:@std/front-matter@0.224.0", 19 - "jsr:@std/fs@0.229.1": "jsr:@std/fs@0.229.1", 20 - "jsr:@std/fs@^0.229.0": "jsr:@std/fs@0.229.1", 21 - "jsr:@std/http@0.224.0": "jsr:@std/http@0.224.0", 22 - "jsr:@std/io@^0.224.0": "jsr:@std/io@0.224.0", 23 - "jsr:@std/jsonc@0.224.0": "jsr:@std/jsonc@0.224.0", 24 - "jsr:@std/log@0.224.1": "jsr:@std/log@0.224.1", 25 - "jsr:@std/media-types@^0.224.0": "jsr:@std/media-types@0.224.1", 26 - "jsr:@std/path@0.225.1": "jsr:@std/path@0.225.1", 27 - "jsr:@std/path@^0.224.0": "jsr:@std/path@0.224.0", 28 - "jsr:@std/path@^0.225.1": "jsr:@std/path@0.225.1", 29 - "jsr:@std/streams@^0.224.0": "jsr:@std/streams@0.224.1", 30 - "jsr:@std/toml@0.224.0": "jsr:@std/toml@0.224.0", 31 - "jsr:@std/toml@^0.224.0": "jsr:@std/toml@0.224.0", 32 - "jsr:@std/yaml@0.224.0": "jsr:@std/yaml@0.224.0", 33 - "jsr:@std/yaml@^0.224.0": "jsr:@std/yaml@0.224.0", 34 - "npm:@js-temporal/polyfill@0.4.4": "npm:@js-temporal/polyfill@0.4.4", 35 - "npm:@mdx-js/mdx@3.0.1": "npm:@mdx-js/mdx@3.0.1", 36 - "npm:@tailwindcss/forms": "npm:@tailwindcss/forms@0.5.7_tailwindcss@3.4.3__postcss@8.4.38", 37 - "npm:@tailwindcss/typography": "npm:@tailwindcss/typography@0.5.13_tailwindcss@3.4.3__postcss@8.4.38", 38 - "npm:@types/estree@1.0.5": "npm:@types/estree@1.0.5", 39 - "npm:@types/nunjucks@3.2.6": "npm:@types/nunjucks@3.2.6", 40 - "npm:autoprefixer@10.4.19": "npm:autoprefixer@10.4.19_postcss@8.4.38", 41 - "npm:date-fns@3.6.0": "npm:date-fns@3.6.0", 42 - "npm:estree-walker@3.0.3": "npm:estree-walker@3.0.3", 43 - "npm:hls.js": "npm:hls.js@1.5.8", 44 - "npm:js-sha256": "npm:js-sha256@0.11.0", 45 - "npm:lucide-react": "npm:lucide-react@0.397.0_react@18.3.1", 46 - "npm:markdown-it-attrs@4.1.6": "npm:markdown-it-attrs@4.1.6_markdown-it@14.1.0", 47 - "npm:markdown-it-deflist@3.0.0": "npm:markdown-it-deflist@3.0.0", 48 - "npm:markdown-it@14.1.0": "npm:markdown-it@14.1.0", 49 - "npm:meriyah@4.4.0": "npm:meriyah@4.4.0", 50 - "npm:nunjucks@3.2.4": "npm:nunjucks@3.2.4", 51 - "npm:postcss-import@16.1.0": "npm:postcss-import@16.1.0_postcss@8.4.38", 52 - "npm:postcss@8.4.38": "npm:postcss@8.4.38", 53 - "npm:preact": "npm:preact@10.22.0", 54 - "npm:preact-render-to-string@6.4.2": "npm:preact-render-to-string@6.4.2_preact@10.22.0", 55 - "npm:preact@10.22.0": "npm:preact@10.22.0", 56 - "npm:rehype-prism-plus": "npm:rehype-prism-plus@2.0.0", 57 - "npm:remark-gfm@4.0.0": "npm:remark-gfm@4.0.0", 58 - "npm:tailwindcss@3.4.3": "npm:tailwindcss@3.4.3_postcss@8.4.38" 2 + "version": "4", 3 + "specifiers": { 4 + "jsr:@std/assert@0.224": "0.224.0", 5 + "jsr:@std/assert@~0.225.1": "0.225.3", 6 + "jsr:@std/assert@~0.225.2": "0.225.3", 7 + "jsr:@std/assert@~0.225.3": "0.225.3", 8 + "jsr:@std/cli@0.224": "0.224.2", 9 + "jsr:@std/cli@0.224.2": "0.224.2", 10 + "jsr:@std/collections@0.224": "0.224.2", 11 + "jsr:@std/crypto@0.224.0": "0.224.0", 12 + "jsr:@std/encoding@0.224": "0.224.1", 13 + "jsr:@std/encoding@0.224.1": "0.224.1", 14 + "jsr:@std/fmt@0.224": "0.224.0", 15 + "jsr:@std/fmt@0.225": "0.225.1", 16 + "jsr:@std/fmt@0.225.1": "0.225.1", 17 + "jsr:@std/front-matter@0.224.0": "0.224.0", 18 + "jsr:@std/fs@0.229": "0.229.1", 19 + "jsr:@std/fs@0.229.1": "0.229.1", 20 + "jsr:@std/http@0.224.0": "0.224.0", 21 + "jsr:@std/io@0.224": "0.224.0", 22 + "jsr:@std/jsonc@0.224.0": "0.224.0", 23 + "jsr:@std/log@0.224.1": "0.224.1", 24 + "jsr:@std/media-types@0.224": "0.224.1", 25 + "jsr:@std/path@0.224": "0.224.0", 26 + "jsr:@std/path@0.225.1": "0.225.1", 27 + "jsr:@std/path@~0.225.1": "0.225.1", 28 + "jsr:@std/streams@0.224": "0.224.1", 29 + "jsr:@std/toml@0.224": "0.224.0", 30 + "jsr:@std/toml@0.224.0": "0.224.0", 31 + "jsr:@std/yaml@0.224": "0.224.0", 32 + "jsr:@std/yaml@0.224.0": "0.224.0", 33 + "npm:@js-temporal/polyfill@0.4.4": "0.4.4", 34 + "npm:@mdx-js/mdx@3.0.1": "3.0.1", 35 + "npm:@tailwindcss/forms@*": "0.5.7_tailwindcss@3.4.3__postcss@8.4.38", 36 + "npm:@tailwindcss/typography@*": "0.5.13_tailwindcss@3.4.3__postcss@8.4.38", 37 + "npm:@types/estree@1.0.5": "1.0.5", 38 + "npm:@types/nunjucks@3.2.6": "3.2.6", 39 + "npm:autoprefixer@10.4.19": "10.4.19_postcss@8.4.38", 40 + "npm:date-fns@3.6.0": "3.6.0", 41 + "npm:estree-walker@3.0.3": "3.0.3", 42 + "npm:hls.js@*": "1.5.8", 43 + "npm:js-sha256@*": "0.11.0", 44 + "npm:lucide-react@*": "0.397.0_react@18.3.1", 45 + "npm:markdown-it-attrs@4.1.6": "4.1.6_markdown-it@14.1.0", 46 + "npm:markdown-it-deflist@3.0.0": "3.0.0", 47 + "npm:markdown-it@14.1.0": "14.1.0", 48 + "npm:meriyah@4.4.0": "4.4.0", 49 + "npm:nunjucks@3.2.4": "3.2.4", 50 + "npm:postcss-import@16.1.0": "16.1.0_postcss@8.4.38", 51 + "npm:postcss@8.4.38": "8.4.38", 52 + "npm:preact-render-to-string@6.4.2": "6.4.2_preact@10.22.0", 53 + "npm:preact@*": "10.22.0", 54 + "npm:preact@10.22.0": "10.22.0", 55 + "npm:rehype-prism-plus@*": "2.0.0", 56 + "npm:remark-gfm@4.0.0": "4.0.0", 57 + "npm:tailwindcss@3.4.3": "3.4.3_postcss@8.4.38" 58 + }, 59 + "jsr": { 60 + "@std/assert@0.224.0": { 61 + "integrity": "8643233ec7aec38a940a8264a6e3eed9bfa44e7a71cc6b3c8874213ff401967f" 59 62 }, 60 - "jsr": { 61 - "@std/assert@0.224.0": { 62 - "integrity": "8643233ec7aec38a940a8264a6e3eed9bfa44e7a71cc6b3c8874213ff401967f" 63 - }, 64 - "@std/assert@0.225.3": { 65 - "integrity": "b3c2847aecf6955b50644cdb9cf072004ea3d1998dd7579fc0acb99dbb23bd4f" 66 - }, 67 - "@std/cli@0.224.2": { 68 - "integrity": "be330ce49928db596338b411037b082d8f8f218b34f8095bcad382fb0c3d6b31", 69 - "dependencies": [ 70 - "jsr:@std/assert@^0.225.2" 71 - ] 72 - }, 73 - "@std/collections@0.224.2": { 74 - "integrity": "e77819455294e92d4e7ddad1dbfd46f94174c09318e541e6621fac4a4d0ab326" 75 - }, 76 - "@std/crypto@0.224.0": { 77 - "integrity": "154ef3ff08ef535562ef1a718718c5b2c5fc3808f0f9100daad69e829bfcdf2d", 78 - "dependencies": [ 79 - "jsr:@std/assert@^0.224.0", 80 - "jsr:@std/encoding@^0.224.0" 81 - ] 82 - }, 83 - "@std/encoding@0.224.1": { 84 - "integrity": "13fbec556c53de1d7bf8c8661ac6d79de7dbc175376ed00e8270369ebc28721f" 85 - }, 86 - "@std/fmt@0.224.0": { 87 - "integrity": "e20e9a2312a8b5393272c26191c0a68eda8d2c4b08b046bad1673148f1d69851" 88 - }, 89 - "@std/fmt@0.225.1": { 90 - "integrity": "44a8cb375d7344adb3cb0208b85ea0bde7cdc15224c11188c85e733834ffe356" 91 - }, 92 - "@std/front-matter@0.224.0": { 93 - "integrity": "b5e7c40989cb7894058f8f8c35f935e2fc19423b280a1e2ee960c967b6da6a2a", 94 - "dependencies": [ 95 - "jsr:@std/toml@^0.224.0", 96 - "jsr:@std/yaml@^0.224.0" 97 - ] 98 - }, 99 - "@std/fs@0.229.1": { 100 - "integrity": "38d3fb31f0ca0a8c1118e039939188f32e291a3f7f17dc0868fec22024bdfadd", 101 - "dependencies": [ 102 - "jsr:@std/assert@^0.225.2", 103 - "jsr:@std/path@^0.225.1" 104 - ] 105 - }, 106 - "@std/http@0.224.0": { 107 - "integrity": "fde48c9133d1d7bb94c134d8f0f01c1a737e6e3879f52580e9ca92217a011e82", 108 - "dependencies": [ 109 - "jsr:@std/cli@^0.224.0", 110 - "jsr:@std/encoding@^0.224.0", 111 - "jsr:@std/fmt@^0.224.0", 112 - "jsr:@std/media-types@^0.224.0", 113 - "jsr:@std/path@^0.224.0", 114 - "jsr:@std/streams@^0.224.0" 115 - ] 116 - }, 117 - "@std/io@0.224.0": { 118 - "integrity": "0aff885d21d829c050b8a08b1d71b54aed5841aecf227f8d77e99ec529a11e8e" 119 - }, 120 - "@std/jsonc@0.224.0": { 121 - "integrity": "673ad766f32c73359e338dc1c4caf5227ac9b75cc029b925e11680cd8831148b", 122 - "dependencies": [ 123 - "jsr:@std/assert@^0.224.0" 124 - ] 125 - }, 126 - "@std/log@0.224.1": { 127 - "integrity": "243688532289298670034915da5e2987cc544938c566c7d508afb7e06ec3fe9d", 128 - "dependencies": [ 129 - "jsr:@std/assert@^0.225.1", 130 - "jsr:@std/fmt@^0.225.0", 131 - "jsr:@std/fs@^0.229.0", 132 - "jsr:@std/io@^0.224.0" 133 - ] 134 - }, 135 - "@std/media-types@0.224.1": { 136 - "integrity": "9e69a5daed37c5b5c6d3ce4731dc191f80e67f79bed392b0957d1d03b87f11e1" 137 - }, 138 - "@std/path@0.224.0": { 139 - "integrity": "55bca6361e5a6d158b9380e82d4981d82d338ec587de02951e2b7c3a24910ee6", 140 - "dependencies": [ 141 - "jsr:@std/assert@^0.224.0" 142 - ] 143 - }, 144 - "@std/path@0.225.1": { 145 - "integrity": "8c3220635a73730eb51fe43de9e10b79e2724a5bb8638b9355d35ae012fd9429", 146 - "dependencies": [ 147 - "jsr:@std/assert@^0.225.2" 148 - ] 149 - }, 150 - "@std/streams@0.224.1": { 151 - "integrity": "e8565a376ae3888f60770cd09e480952ec7c349007aed81b8f7165424ce2195f", 152 - "dependencies": [ 153 - "jsr:@std/assert@^0.225.3" 154 - ] 155 - }, 156 - "@std/toml@0.224.0": { 157 - "integrity": "15a60eb5eac12d8a81a48d99cb1aaed60a21c67dc94c2def696a7c39b815c74f", 158 - "dependencies": [ 159 - "jsr:@std/collections@^0.224.0" 160 - ] 161 - }, 162 - "@std/yaml@0.224.0": { 163 - "integrity": "9bd99c6beb4d2db98de81c50853f15e68d4c95f38d737934b0e909bbeeff2b6d" 164 - } 63 + "@std/assert@0.225.3": { 64 + "integrity": "b3c2847aecf6955b50644cdb9cf072004ea3d1998dd7579fc0acb99dbb23bd4f" 165 65 }, 166 - "npm": { 167 - "@alloc/quick-lru@5.2.0": { 168 - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", 169 - "dependencies": {} 170 - }, 171 - "@isaacs/cliui@8.0.2": { 172 - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 173 - "dependencies": { 174 - "string-width": "string-width@5.1.2", 175 - "string-width-cjs": "string-width@4.2.3", 176 - "strip-ansi": "strip-ansi@7.1.0", 177 - "strip-ansi-cjs": "strip-ansi@6.0.1", 178 - "wrap-ansi": "wrap-ansi@8.1.0", 179 - "wrap-ansi-cjs": "wrap-ansi@7.0.0" 180 - } 181 - }, 182 - "@jridgewell/gen-mapping@0.3.5": { 183 - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 184 - "dependencies": { 185 - "@jridgewell/set-array": "@jridgewell/set-array@1.2.1", 186 - "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15", 187 - "@jridgewell/trace-mapping": "@jridgewell/trace-mapping@0.3.25" 188 - } 189 - }, 190 - "@jridgewell/resolve-uri@3.1.2": { 191 - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 192 - "dependencies": {} 193 - }, 194 - "@jridgewell/set-array@1.2.1": { 195 - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 196 - "dependencies": {} 197 - }, 198 - "@jridgewell/sourcemap-codec@1.4.15": { 199 - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 200 - "dependencies": {} 201 - }, 202 - "@jridgewell/trace-mapping@0.3.25": { 203 - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 204 - "dependencies": { 205 - "@jridgewell/resolve-uri": "@jridgewell/resolve-uri@3.1.2", 206 - "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15" 207 - } 208 - }, 209 - "@js-temporal/polyfill@0.4.4": { 210 - "integrity": "sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==", 211 - "dependencies": { 212 - "jsbi": "jsbi@4.3.0", 213 - "tslib": "tslib@2.6.2" 214 - } 215 - }, 216 - "@mdx-js/mdx@3.0.1": { 217 - "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", 218 - "dependencies": { 219 - "@types/estree": "@types/estree@1.0.5", 220 - "@types/estree-jsx": "@types/estree-jsx@1.0.5", 221 - "@types/hast": "@types/hast@3.0.4", 222 - "@types/mdx": "@types/mdx@2.0.13", 223 - "collapse-white-space": "collapse-white-space@2.1.0", 224 - "devlop": "devlop@1.1.0", 225 - "estree-util-build-jsx": "estree-util-build-jsx@3.0.1", 226 - "estree-util-is-identifier-name": "estree-util-is-identifier-name@3.0.0", 227 - "estree-util-to-js": "estree-util-to-js@2.0.0", 228 - "estree-walker": "estree-walker@3.0.3", 229 - "hast-util-to-estree": "hast-util-to-estree@3.1.0", 230 - "hast-util-to-jsx-runtime": "hast-util-to-jsx-runtime@2.3.0", 231 - "markdown-extensions": "markdown-extensions@2.0.0", 232 - "periscopic": "periscopic@3.1.0", 233 - "remark-mdx": "remark-mdx@3.0.1", 234 - "remark-parse": "remark-parse@11.0.0", 235 - "remark-rehype": "remark-rehype@11.1.0", 236 - "source-map": "source-map@0.7.4", 237 - "unified": "unified@11.0.4", 238 - "unist-util-position-from-estree": "unist-util-position-from-estree@2.0.0", 239 - "unist-util-stringify-position": "unist-util-stringify-position@4.0.0", 240 - "unist-util-visit": "unist-util-visit@5.0.0", 241 - "vfile": "vfile@6.0.1" 242 - } 243 - }, 244 - "@nodelib/fs.scandir@2.1.5": { 245 - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 246 - "dependencies": { 247 - "@nodelib/fs.stat": "@nodelib/fs.stat@2.0.5", 248 - "run-parallel": "run-parallel@1.2.0" 249 - } 250 - }, 251 - "@nodelib/fs.stat@2.0.5": { 252 - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 253 - "dependencies": {} 254 - }, 255 - "@nodelib/fs.walk@1.2.8": { 256 - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 257 - "dependencies": { 258 - "@nodelib/fs.scandir": "@nodelib/fs.scandir@2.1.5", 259 - "fastq": "fastq@1.17.1" 260 - } 261 - }, 262 - "@pkgjs/parseargs@0.11.0": { 263 - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 264 - "dependencies": {} 265 - }, 266 - "@tailwindcss/forms@0.5.7_tailwindcss@3.4.3__postcss@8.4.38": { 267 - "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==", 268 - "dependencies": { 269 - "mini-svg-data-uri": "mini-svg-data-uri@1.4.4", 270 - "tailwindcss": "tailwindcss@3.4.3_postcss@8.4.38" 271 - } 272 - }, 273 - "@tailwindcss/typography@0.5.13_tailwindcss@3.4.3__postcss@8.4.38": { 274 - "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==", 275 - "dependencies": { 276 - "lodash.castarray": "lodash.castarray@4.4.0", 277 - "lodash.isplainobject": "lodash.isplainobject@4.0.6", 278 - "lodash.merge": "lodash.merge@4.6.2", 279 - "postcss-selector-parser": "postcss-selector-parser@6.0.10", 280 - "tailwindcss": "tailwindcss@3.4.3_postcss@8.4.38" 281 - } 282 - }, 283 - "@types/acorn@4.0.6": { 284 - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", 285 - "dependencies": { 286 - "@types/estree": "@types/estree@1.0.5" 287 - } 288 - }, 289 - "@types/debug@4.1.12": { 290 - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", 291 - "dependencies": { 292 - "@types/ms": "@types/ms@0.7.34" 293 - } 294 - }, 295 - "@types/estree-jsx@1.0.5": { 296 - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", 297 - "dependencies": { 298 - "@types/estree": "@types/estree@1.0.5" 299 - } 300 - }, 301 - "@types/estree@1.0.5": { 302 - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 303 - "dependencies": {} 304 - }, 305 - "@types/hast@2.3.10": { 306 - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", 307 - "dependencies": { 308 - "@types/unist": "@types/unist@2.0.10" 309 - } 310 - }, 311 - "@types/hast@3.0.4": { 312 - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", 313 - "dependencies": { 314 - "@types/unist": "@types/unist@3.0.2" 315 - } 316 - }, 317 - "@types/mdast@4.0.4": { 318 - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", 319 - "dependencies": { 320 - "@types/unist": "@types/unist@3.0.2" 321 - } 322 - }, 323 - "@types/mdx@2.0.13": { 324 - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", 325 - "dependencies": {} 326 - }, 327 - "@types/ms@0.7.34": { 328 - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", 329 - "dependencies": {} 330 - }, 331 - "@types/nunjucks@3.2.6": { 332 - "integrity": "sha512-pHiGtf83na1nCzliuAdq8GowYiXvH5l931xZ0YEHaLMNFgynpEqx+IPStlu7UaDkehfvl01e4x/9Tpwhy7Ue3w==", 333 - "dependencies": {} 334 - }, 335 - "@types/prismjs@1.26.4": { 336 - "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==", 337 - "dependencies": {} 338 - }, 339 - "@types/unist@2.0.10": { 340 - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", 341 - "dependencies": {} 342 - }, 343 - "@types/unist@3.0.2": { 344 - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", 345 - "dependencies": {} 346 - }, 347 - "@ungap/structured-clone@1.2.0": { 348 - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 349 - "dependencies": {} 350 - }, 351 - "a-sync-waterfall@1.0.1": { 352 - "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", 353 - "dependencies": {} 354 - }, 355 - "acorn-jsx@5.3.2_acorn@8.11.3": { 356 - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 357 - "dependencies": { 358 - "acorn": "acorn@8.11.3" 359 - } 360 - }, 361 - "acorn@8.11.3": { 362 - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 363 - "dependencies": {} 364 - }, 365 - "ansi-regex@5.0.1": { 366 - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 367 - "dependencies": {} 368 - }, 369 - "ansi-regex@6.0.1": { 370 - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 371 - "dependencies": {} 372 - }, 373 - "ansi-styles@4.3.0": { 374 - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 375 - "dependencies": { 376 - "color-convert": "color-convert@2.0.1" 377 - } 378 - }, 379 - "ansi-styles@6.2.1": { 380 - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 381 - "dependencies": {} 382 - }, 383 - "any-promise@1.3.0": { 384 - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 385 - "dependencies": {} 386 - }, 387 - "anymatch@3.1.3": { 388 - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 389 - "dependencies": { 390 - "normalize-path": "normalize-path@3.0.0", 391 - "picomatch": "picomatch@2.3.1" 392 - } 393 - }, 394 - "arg@5.0.2": { 395 - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 396 - "dependencies": {} 397 - }, 398 - "argparse@2.0.1": { 399 - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 400 - "dependencies": {} 401 - }, 402 - "asap@2.0.6": { 403 - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", 404 - "dependencies": {} 405 - }, 406 - "astring@1.8.6": { 407 - "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", 408 - "dependencies": {} 409 - }, 410 - "autoprefixer@10.4.19_postcss@8.4.38": { 411 - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", 412 - "dependencies": { 413 - "browserslist": "browserslist@4.23.0", 414 - "caniuse-lite": "caniuse-lite@1.0.30001621", 415 - "fraction.js": "fraction.js@4.3.7", 416 - "normalize-range": "normalize-range@0.1.2", 417 - "picocolors": "picocolors@1.0.1", 418 - "postcss": "postcss@8.4.38", 419 - "postcss-value-parser": "postcss-value-parser@4.2.0" 420 - } 421 - }, 422 - "bail@2.0.2": { 423 - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", 424 - "dependencies": {} 425 - }, 426 - "balanced-match@1.0.2": { 427 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 428 - "dependencies": {} 429 - }, 430 - "binary-extensions@2.3.0": { 431 - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 432 - "dependencies": {} 433 - }, 434 - "brace-expansion@2.0.1": { 435 - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 436 - "dependencies": { 437 - "balanced-match": "balanced-match@1.0.2" 438 - } 439 - }, 440 - "braces@3.0.3": { 441 - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 442 - "dependencies": { 443 - "fill-range": "fill-range@7.1.1" 444 - } 445 - }, 446 - "browserslist@4.23.0": { 447 - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", 448 - "dependencies": { 449 - "caniuse-lite": "caniuse-lite@1.0.30001621", 450 - "electron-to-chromium": "electron-to-chromium@1.4.783", 451 - "node-releases": "node-releases@2.0.14", 452 - "update-browserslist-db": "update-browserslist-db@1.0.16_browserslist@4.23.0" 453 - } 454 - }, 455 - "camelcase-css@2.0.1": { 456 - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 457 - "dependencies": {} 458 - }, 459 - "caniuse-lite@1.0.30001621": { 460 - "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", 461 - "dependencies": {} 462 - }, 463 - "ccount@2.0.1": { 464 - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", 465 - "dependencies": {} 466 - }, 467 - "character-entities-html4@2.1.0": { 468 - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", 469 - "dependencies": {} 470 - }, 471 - "character-entities-legacy@3.0.0": { 472 - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", 473 - "dependencies": {} 474 - }, 475 - "character-entities@2.0.2": { 476 - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", 477 - "dependencies": {} 478 - }, 479 - "character-reference-invalid@2.0.1": { 480 - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", 481 - "dependencies": {} 482 - }, 483 - "chokidar@3.6.0": { 484 - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 485 - "dependencies": { 486 - "anymatch": "anymatch@3.1.3", 487 - "braces": "braces@3.0.3", 488 - "fsevents": "fsevents@2.3.3", 489 - "glob-parent": "glob-parent@5.1.2", 490 - "is-binary-path": "is-binary-path@2.1.0", 491 - "is-glob": "is-glob@4.0.3", 492 - "normalize-path": "normalize-path@3.0.0", 493 - "readdirp": "readdirp@3.6.0" 494 - } 495 - }, 496 - "collapse-white-space@2.1.0": { 497 - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", 498 - "dependencies": {} 499 - }, 500 - "color-convert@2.0.1": { 501 - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 502 - "dependencies": { 503 - "color-name": "color-name@1.1.4" 504 - } 505 - }, 506 - "color-name@1.1.4": { 507 - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 508 - "dependencies": {} 509 - }, 510 - "comma-separated-tokens@2.0.3": { 511 - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", 512 - "dependencies": {} 513 - }, 514 - "commander@4.1.1": { 515 - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 516 - "dependencies": {} 517 - }, 518 - "commander@5.1.0": { 519 - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", 520 - "dependencies": {} 521 - }, 522 - "cross-spawn@7.0.3": { 523 - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 524 - "dependencies": { 525 - "path-key": "path-key@3.1.1", 526 - "shebang-command": "shebang-command@2.0.0", 527 - "which": "which@2.0.2" 528 - } 529 - }, 530 - "cssesc@3.0.0": { 531 - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 532 - "dependencies": {} 533 - }, 534 - "date-fns@3.6.0": { 535 - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", 536 - "dependencies": {} 537 - }, 538 - "debug@4.3.4": { 539 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 540 - "dependencies": { 541 - "ms": "ms@2.1.2" 542 - } 543 - }, 544 - "decode-named-character-reference@1.0.2": { 545 - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", 546 - "dependencies": { 547 - "character-entities": "character-entities@2.0.2" 548 - } 549 - }, 550 - "dequal@2.0.3": { 551 - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 552 - "dependencies": {} 553 - }, 554 - "devlop@1.1.0": { 555 - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", 556 - "dependencies": { 557 - "dequal": "dequal@2.0.3" 558 - } 559 - }, 560 - "didyoumean@1.2.2": { 561 - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 562 - "dependencies": {} 563 - }, 564 - "dlv@1.1.3": { 565 - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 566 - "dependencies": {} 567 - }, 568 - "eastasianwidth@0.2.0": { 569 - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 570 - "dependencies": {} 571 - }, 572 - "electron-to-chromium@1.4.783": { 573 - "integrity": "sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==", 574 - "dependencies": {} 575 - }, 576 - "emoji-regex@8.0.0": { 577 - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 578 - "dependencies": {} 579 - }, 580 - "emoji-regex@9.2.2": { 581 - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 582 - "dependencies": {} 583 - }, 584 - "entities@4.5.0": { 585 - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 586 - "dependencies": {} 587 - }, 588 - "escalade@3.1.2": { 589 - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 590 - "dependencies": {} 591 - }, 592 - "escape-string-regexp@5.0.0": { 593 - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", 594 - "dependencies": {} 595 - }, 596 - "estree-util-attach-comments@3.0.0": { 597 - "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", 598 - "dependencies": { 599 - "@types/estree": "@types/estree@1.0.5" 600 - } 601 - }, 602 - "estree-util-build-jsx@3.0.1": { 603 - "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", 604 - "dependencies": { 605 - "@types/estree-jsx": "@types/estree-jsx@1.0.5", 606 - "devlop": "devlop@1.1.0", 607 - "estree-util-is-identifier-name": "estree-util-is-identifier-name@3.0.0", 608 - "estree-walker": "estree-walker@3.0.3" 609 - } 610 - }, 611 - "estree-util-is-identifier-name@3.0.0": { 612 - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", 613 - "dependencies": {} 614 - }, 615 - "estree-util-to-js@2.0.0": { 616 - "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", 617 - "dependencies": { 618 - "@types/estree-jsx": "@types/estree-jsx@1.0.5", 619 - "astring": "astring@1.8.6", 620 - "source-map": "source-map@0.7.4" 621 - } 622 - }, 623 - "estree-util-visit@2.0.0": { 624 - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", 625 - "dependencies": { 626 - "@types/estree-jsx": "@types/estree-jsx@1.0.5", 627 - "@types/unist": "@types/unist@3.0.2" 628 - } 629 - }, 630 - "estree-walker@3.0.3": { 631 - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 632 - "dependencies": { 633 - "@types/estree": "@types/estree@1.0.5" 634 - } 635 - }, 636 - "extend@3.0.2": { 637 - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 638 - "dependencies": {} 639 - }, 640 - "fast-glob@3.3.2": { 641 - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 642 - "dependencies": { 643 - "@nodelib/fs.stat": "@nodelib/fs.stat@2.0.5", 644 - "@nodelib/fs.walk": "@nodelib/fs.walk@1.2.8", 645 - "glob-parent": "glob-parent@5.1.2", 646 - "merge2": "merge2@1.4.1", 647 - "micromatch": "micromatch@4.0.7" 648 - } 649 - }, 650 - "fastq@1.17.1": { 651 - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 652 - "dependencies": { 653 - "reusify": "reusify@1.0.4" 654 - } 655 - }, 656 - "fill-range@7.1.1": { 657 - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 658 - "dependencies": { 659 - "to-regex-range": "to-regex-range@5.0.1" 660 - } 661 - }, 662 - "foreground-child@3.1.1": { 663 - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", 664 - "dependencies": { 665 - "cross-spawn": "cross-spawn@7.0.3", 666 - "signal-exit": "signal-exit@4.1.0" 667 - } 668 - }, 669 - "fraction.js@4.3.7": { 670 - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", 671 - "dependencies": {} 672 - }, 673 - "fsevents@2.3.3": { 674 - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 675 - "dependencies": {} 676 - }, 677 - "function-bind@1.1.2": { 678 - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 679 - "dependencies": {} 680 - }, 681 - "glob-parent@5.1.2": { 682 - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 683 - "dependencies": { 684 - "is-glob": "is-glob@4.0.3" 685 - } 686 - }, 687 - "glob-parent@6.0.2": { 688 - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 689 - "dependencies": { 690 - "is-glob": "is-glob@4.0.3" 691 - } 692 - }, 693 - "glob@10.4.1": { 694 - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", 695 - "dependencies": { 696 - "foreground-child": "foreground-child@3.1.1", 697 - "jackspeak": "jackspeak@3.1.2", 698 - "minimatch": "minimatch@9.0.4", 699 - "minipass": "minipass@7.1.2", 700 - "path-scurry": "path-scurry@1.11.1" 701 - } 702 - }, 703 - "hasown@2.0.2": { 704 - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 705 - "dependencies": { 706 - "function-bind": "function-bind@1.1.2" 707 - } 708 - }, 709 - "hast-util-from-html@2.0.1": { 710 - "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", 711 - "dependencies": { 712 - "@types/hast": "@types/hast@3.0.4", 713 - "devlop": "devlop@1.1.0", 714 - "hast-util-from-parse5": "hast-util-from-parse5@8.0.1", 715 - "parse5": "parse5@7.1.2", 716 - "vfile": "vfile@6.0.1", 717 - "vfile-message": "vfile-message@4.0.2" 718 - } 719 - }, 720 - "hast-util-from-parse5@8.0.1": { 721 - "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", 722 - "dependencies": { 723 - "@types/hast": "@types/hast@3.0.4", 724 - "@types/unist": "@types/unist@3.0.2", 725 - "devlop": "devlop@1.1.0", 726 - "hastscript": "hastscript@8.0.0", 727 - "property-information": "property-information@6.5.0", 728 - "vfile": "vfile@6.0.1", 729 - "vfile-location": "vfile-location@5.0.2", 730 - "web-namespaces": "web-namespaces@2.0.1" 731 - } 732 - }, 733 - "hast-util-parse-selector@3.1.1": { 734 - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", 735 - "dependencies": { 736 - "@types/hast": "@types/hast@2.3.10" 737 - } 738 - }, 739 - "hast-util-parse-selector@4.0.0": { 740 - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", 741 - "dependencies": { 742 - "@types/hast": "@types/hast@3.0.4" 743 - } 744 - }, 745 - "hast-util-to-estree@3.1.0": { 746 - "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", 747 - "dependencies": { 748 - "@types/estree": "@types/estree@1.0.5", 749 - "@types/estree-jsx": "@types/estree-jsx@1.0.5", 750 - "@types/hast": "@types/hast@3.0.4", 751 - "comma-separated-tokens": "comma-separated-tokens@2.0.3", 752 - "devlop": "devlop@1.1.0", 753 - "estree-util-attach-comments": "estree-util-attach-comments@3.0.0", 754 - "estree-util-is-identifier-name": "estree-util-is-identifier-name@3.0.0", 755 - "hast-util-whitespace": "hast-util-whitespace@3.0.0", 756 - "mdast-util-mdx-expression": "mdast-util-mdx-expression@2.0.0", 757 - "mdast-util-mdx-jsx": "mdast-util-mdx-jsx@3.1.2", 758 - "mdast-util-mdxjs-esm": "mdast-util-mdxjs-esm@2.0.1", 759 - "property-information": "property-information@6.5.0", 760 - "space-separated-tokens": "space-separated-tokens@2.0.2", 761 - "style-to-object": "style-to-object@0.4.4", 762 - "unist-util-position": "unist-util-position@5.0.0", 763 - "zwitch": "zwitch@2.0.4" 764 - } 765 - }, 766 - "hast-util-to-jsx-runtime@2.3.0": { 767 - "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", 768 - "dependencies": { 769 - "@types/estree": "@types/estree@1.0.5", 770 - "@types/hast": "@types/hast@3.0.4", 771 - "@types/unist": "@types/unist@3.0.2", 772 - "comma-separated-tokens": "comma-separated-tokens@2.0.3", 773 - "devlop": "devlop@1.1.0", 774 - "estree-util-is-identifier-name": "estree-util-is-identifier-name@3.0.0", 775 - "hast-util-whitespace": "hast-util-whitespace@3.0.0", 776 - "mdast-util-mdx-expression": "mdast-util-mdx-expression@2.0.0", 777 - "mdast-util-mdx-jsx": "mdast-util-mdx-jsx@3.1.2", 778 - "mdast-util-mdxjs-esm": "mdast-util-mdxjs-esm@2.0.1", 779 - "property-information": "property-information@6.5.0", 780 - "space-separated-tokens": "space-separated-tokens@2.0.2", 781 - "style-to-object": "style-to-object@1.0.6", 782 - "unist-util-position": "unist-util-position@5.0.0", 783 - "vfile-message": "vfile-message@4.0.2" 784 - } 785 - }, 786 - "hast-util-to-string@3.0.0": { 787 - "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", 788 - "dependencies": { 789 - "@types/hast": "@types/hast@3.0.4" 790 - } 791 - }, 792 - "hast-util-whitespace@3.0.0": { 793 - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", 794 - "dependencies": { 795 - "@types/hast": "@types/hast@3.0.4" 796 - } 797 - }, 798 - "hastscript@7.2.0": { 799 - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", 800 - "dependencies": { 801 - "@types/hast": "@types/hast@2.3.10", 802 - "comma-separated-tokens": "comma-separated-tokens@2.0.3", 803 - "hast-util-parse-selector": "hast-util-parse-selector@3.1.1", 804 - "property-information": "property-information@6.5.0", 805 - "space-separated-tokens": "space-separated-tokens@2.0.2" 806 - } 807 - }, 808 - "hastscript@8.0.0": { 809 - "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", 810 - "dependencies": { 811 - "@types/hast": "@types/hast@3.0.4", 812 - "comma-separated-tokens": "comma-separated-tokens@2.0.3", 813 - "hast-util-parse-selector": "hast-util-parse-selector@4.0.0", 814 - "property-information": "property-information@6.5.0", 815 - "space-separated-tokens": "space-separated-tokens@2.0.2" 816 - } 817 - }, 818 - "hls.js@1.5.8": { 819 - "integrity": "sha512-hJYMPfLhWO7/7+n4f9pn6bOheCGx0WgvVz7k3ouq3Pp1bja48NN+HeCQu3XCGYzqWQF/wo7Sk6dJAyWVJD8ECA==", 820 - "dependencies": {} 821 - }, 822 - "inline-style-parser@0.1.1": { 823 - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", 824 - "dependencies": {} 825 - }, 826 - "inline-style-parser@0.2.3": { 827 - "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==", 828 - "dependencies": {} 829 - }, 830 - "is-alphabetical@2.0.1": { 831 - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", 832 - "dependencies": {} 833 - }, 834 - "is-alphanumerical@2.0.1": { 835 - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", 836 - "dependencies": { 837 - "is-alphabetical": "is-alphabetical@2.0.1", 838 - "is-decimal": "is-decimal@2.0.1" 839 - } 840 - }, 841 - "is-binary-path@2.1.0": { 842 - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 843 - "dependencies": { 844 - "binary-extensions": "binary-extensions@2.3.0" 845 - } 846 - }, 847 - "is-core-module@2.13.1": { 848 - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", 849 - "dependencies": { 850 - "hasown": "hasown@2.0.2" 851 - } 852 - }, 853 - "is-decimal@2.0.1": { 854 - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", 855 - "dependencies": {} 856 - }, 857 - "is-extglob@2.1.1": { 858 - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 859 - "dependencies": {} 860 - }, 861 - "is-fullwidth-code-point@3.0.0": { 862 - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 863 - "dependencies": {} 864 - }, 865 - "is-glob@4.0.3": { 866 - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 867 - "dependencies": { 868 - "is-extglob": "is-extglob@2.1.1" 869 - } 870 - }, 871 - "is-hexadecimal@2.0.1": { 872 - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", 873 - "dependencies": {} 874 - }, 875 - "is-number@7.0.0": { 876 - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 877 - "dependencies": {} 878 - }, 879 - "is-plain-obj@4.1.0": { 880 - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", 881 - "dependencies": {} 882 - }, 883 - "is-reference@3.0.2": { 884 - "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", 885 - "dependencies": { 886 - "@types/estree": "@types/estree@1.0.5" 887 - } 888 - }, 889 - "isexe@2.0.0": { 890 - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 891 - "dependencies": {} 892 - }, 893 - "jackspeak@3.1.2": { 894 - "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", 895 - "dependencies": { 896 - "@isaacs/cliui": "@isaacs/cliui@8.0.2", 897 - "@pkgjs/parseargs": "@pkgjs/parseargs@0.11.0" 898 - } 899 - }, 900 - "jiti@1.21.0": { 901 - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", 902 - "dependencies": {} 903 - }, 904 - "js-sha256@0.11.0": { 905 - "integrity": "sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==", 906 - "dependencies": {} 907 - }, 908 - "js-tokens@4.0.0": { 909 - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 910 - "dependencies": {} 911 - }, 912 - "jsbi@4.3.0": { 913 - "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==", 914 - "dependencies": {} 915 - }, 916 - "lilconfig@2.1.0": { 917 - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 918 - "dependencies": {} 919 - }, 920 - "lilconfig@3.1.1": { 921 - "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", 922 - "dependencies": {} 923 - }, 924 - "lines-and-columns@1.2.4": { 925 - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 926 - "dependencies": {} 927 - }, 928 - "linkify-it@5.0.0": { 929 - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", 930 - "dependencies": { 931 - "uc.micro": "uc.micro@2.1.0" 932 - } 933 - }, 934 - "lodash.castarray@4.4.0": { 935 - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", 936 - "dependencies": {} 937 - }, 938 - "lodash.isplainobject@4.0.6": { 939 - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", 940 - "dependencies": {} 941 - }, 942 - "lodash.merge@4.6.2": { 943 - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 944 - "dependencies": {} 945 - }, 946 - "longest-streak@3.1.0": { 947 - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", 948 - "dependencies": {} 949 - }, 950 - "loose-envify@1.4.0": { 951 - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 952 - "dependencies": { 953 - "js-tokens": "js-tokens@4.0.0" 954 - } 955 - }, 956 - "lru-cache@10.2.2": { 957 - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", 958 - "dependencies": {} 959 - }, 960 - "lucide-react@0.397.0_react@18.3.1": { 961 - "integrity": "sha512-rUcbRY5jFP/4za/OJvaRUUmdPsPb940Tw9zE1ehrRZmr9JnkDcW8OV3POR3XfEAAMDkssiTc5IWBFv8Y//pkDQ==", 962 - "dependencies": { 963 - "react": "react@18.3.1" 964 - } 965 - }, 966 - "markdown-extensions@2.0.0": { 967 - "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", 968 - "dependencies": {} 969 - }, 970 - "markdown-it-attrs@4.1.6_markdown-it@14.1.0": { 971 - "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", 972 - "dependencies": { 973 - "markdown-it": "markdown-it@14.1.0" 974 - } 975 - }, 976 - "markdown-it-deflist@3.0.0": { 977 - "integrity": "sha512-OxPmQ/keJZwbubjiQWOvKLHwpV2wZ5I3Smc81OjhwbfJsjdRrvD5aLTQxmZzzePeO0kbGzAo3Krk4QLgA8PWLg==", 978 - "dependencies": {} 979 - }, 980 - "markdown-it@14.1.0": { 981 - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", 982 - "dependencies": { 983 - "argparse": "argparse@2.0.1", 984 - "entities": "entities@4.5.0", 985 - "linkify-it": "linkify-it@5.0.0", 986 - "mdurl": "mdurl@2.0.0", 987 - "punycode.js": "punycode.js@2.3.1", 988 - "uc.micro": "uc.micro@2.1.0" 989 - } 990 - }, 991 - "markdown-table@3.0.3": { 992 - "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", 993 - "dependencies": {} 994 - }, 995 - "mdast-util-find-and-replace@3.0.1": { 996 - "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", 997 - "dependencies": { 998 - "@types/mdast": "@types/mdast@4.0.4", 999 - "escape-string-regexp": "escape-string-regexp@5.0.0", 1000 - "unist-util-is": "unist-util-is@6.0.0", 1001 - "unist-util-visit-parents": "unist-util-visit-parents@6.0.1" 1002 - } 1003 - }, 1004 - "mdast-util-from-markdown@2.0.0": { 1005 - "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", 1006 - "dependencies": { 1007 - "@types/mdast": "@types/mdast@4.0.4", 1008 - "@types/unist": "@types/unist@3.0.2", 1009 - "decode-named-character-reference": "decode-named-character-reference@1.0.2", 1010 - "devlop": "devlop@1.1.0", 1011 - "mdast-util-to-string": "mdast-util-to-string@4.0.0", 1012 - "micromark": "micromark@4.0.0", 1013 - "micromark-util-decode-numeric-character-reference": "micromark-util-decode-numeric-character-reference@2.0.1", 1014 - "micromark-util-decode-string": "micromark-util-decode-string@2.0.0", 1015 - "micromark-util-normalize-identifier": "micromark-util-normalize-identifier@2.0.0", 1016 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1017 - "micromark-util-types": "micromark-util-types@2.0.0", 1018 - "unist-util-stringify-position": "unist-util-stringify-position@4.0.0" 1019 - } 1020 - }, 1021 - "mdast-util-gfm-autolink-literal@2.0.0": { 1022 - "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", 1023 - "dependencies": { 1024 - "@types/mdast": "@types/mdast@4.0.4", 1025 - "ccount": "ccount@2.0.1", 1026 - "devlop": "devlop@1.1.0", 1027 - "mdast-util-find-and-replace": "mdast-util-find-and-replace@3.0.1", 1028 - "micromark-util-character": "micromark-util-character@2.1.0" 1029 - } 1030 - }, 1031 - "mdast-util-gfm-footnote@2.0.0": { 1032 - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", 1033 - "dependencies": { 1034 - "@types/mdast": "@types/mdast@4.0.4", 1035 - "devlop": "devlop@1.1.0", 1036 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1037 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0", 1038 - "micromark-util-normalize-identifier": "micromark-util-normalize-identifier@2.0.0" 1039 - } 1040 - }, 1041 - "mdast-util-gfm-strikethrough@2.0.0": { 1042 - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", 1043 - "dependencies": { 1044 - "@types/mdast": "@types/mdast@4.0.4", 1045 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1046 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0" 1047 - } 1048 - }, 1049 - "mdast-util-gfm-table@2.0.0": { 1050 - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", 1051 - "dependencies": { 1052 - "@types/mdast": "@types/mdast@4.0.4", 1053 - "devlop": "devlop@1.1.0", 1054 - "markdown-table": "markdown-table@3.0.3", 1055 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1056 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0" 1057 - } 1058 - }, 1059 - "mdast-util-gfm-task-list-item@2.0.0": { 1060 - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", 1061 - "dependencies": { 1062 - "@types/mdast": "@types/mdast@4.0.4", 1063 - "devlop": "devlop@1.1.0", 1064 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1065 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0" 1066 - } 1067 - }, 1068 - "mdast-util-gfm@3.0.0": { 1069 - "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", 1070 - "dependencies": { 1071 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1072 - "mdast-util-gfm-autolink-literal": "mdast-util-gfm-autolink-literal@2.0.0", 1073 - "mdast-util-gfm-footnote": "mdast-util-gfm-footnote@2.0.0", 1074 - "mdast-util-gfm-strikethrough": "mdast-util-gfm-strikethrough@2.0.0", 1075 - "mdast-util-gfm-table": "mdast-util-gfm-table@2.0.0", 1076 - "mdast-util-gfm-task-list-item": "mdast-util-gfm-task-list-item@2.0.0", 1077 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0" 1078 - } 1079 - }, 1080 - "mdast-util-mdx-expression@2.0.0": { 1081 - "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", 1082 - "dependencies": { 1083 - "@types/estree-jsx": "@types/estree-jsx@1.0.5", 1084 - "@types/hast": "@types/hast@3.0.4", 1085 - "@types/mdast": "@types/mdast@4.0.4", 1086 - "devlop": "devlop@1.1.0", 1087 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1088 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0" 1089 - } 1090 - }, 1091 - "mdast-util-mdx-jsx@3.1.2": { 1092 - "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", 1093 - "dependencies": { 1094 - "@types/estree-jsx": "@types/estree-jsx@1.0.5", 1095 - "@types/hast": "@types/hast@3.0.4", 1096 - "@types/mdast": "@types/mdast@4.0.4", 1097 - "@types/unist": "@types/unist@3.0.2", 1098 - "ccount": "ccount@2.0.1", 1099 - "devlop": "devlop@1.1.0", 1100 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1101 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0", 1102 - "parse-entities": "parse-entities@4.0.1", 1103 - "stringify-entities": "stringify-entities@4.0.4", 1104 - "unist-util-remove-position": "unist-util-remove-position@5.0.0", 1105 - "unist-util-stringify-position": "unist-util-stringify-position@4.0.0", 1106 - "vfile-message": "vfile-message@4.0.2" 1107 - } 1108 - }, 1109 - "mdast-util-mdx@3.0.0": { 1110 - "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", 1111 - "dependencies": { 1112 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1113 - "mdast-util-mdx-expression": "mdast-util-mdx-expression@2.0.0", 1114 - "mdast-util-mdx-jsx": "mdast-util-mdx-jsx@3.1.2", 1115 - "mdast-util-mdxjs-esm": "mdast-util-mdxjs-esm@2.0.1", 1116 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0" 1117 - } 1118 - }, 1119 - "mdast-util-mdxjs-esm@2.0.1": { 1120 - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", 1121 - "dependencies": { 1122 - "@types/estree-jsx": "@types/estree-jsx@1.0.5", 1123 - "@types/hast": "@types/hast@3.0.4", 1124 - "@types/mdast": "@types/mdast@4.0.4", 1125 - "devlop": "devlop@1.1.0", 1126 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1127 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0" 1128 - } 1129 - }, 1130 - "mdast-util-phrasing@4.1.0": { 1131 - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", 1132 - "dependencies": { 1133 - "@types/mdast": "@types/mdast@4.0.4", 1134 - "unist-util-is": "unist-util-is@6.0.0" 1135 - } 1136 - }, 1137 - "mdast-util-to-hast@13.1.0": { 1138 - "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", 1139 - "dependencies": { 1140 - "@types/hast": "@types/hast@3.0.4", 1141 - "@types/mdast": "@types/mdast@4.0.4", 1142 - "@ungap/structured-clone": "@ungap/structured-clone@1.2.0", 1143 - "devlop": "devlop@1.1.0", 1144 - "micromark-util-sanitize-uri": "micromark-util-sanitize-uri@2.0.0", 1145 - "trim-lines": "trim-lines@3.0.1", 1146 - "unist-util-position": "unist-util-position@5.0.0", 1147 - "unist-util-visit": "unist-util-visit@5.0.0", 1148 - "vfile": "vfile@6.0.1" 1149 - } 1150 - }, 1151 - "mdast-util-to-markdown@2.1.0": { 1152 - "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", 1153 - "dependencies": { 1154 - "@types/mdast": "@types/mdast@4.0.4", 1155 - "@types/unist": "@types/unist@3.0.2", 1156 - "longest-streak": "longest-streak@3.1.0", 1157 - "mdast-util-phrasing": "mdast-util-phrasing@4.1.0", 1158 - "mdast-util-to-string": "mdast-util-to-string@4.0.0", 1159 - "micromark-util-decode-string": "micromark-util-decode-string@2.0.0", 1160 - "unist-util-visit": "unist-util-visit@5.0.0", 1161 - "zwitch": "zwitch@2.0.4" 1162 - } 1163 - }, 1164 - "mdast-util-to-string@4.0.0": { 1165 - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", 1166 - "dependencies": { 1167 - "@types/mdast": "@types/mdast@4.0.4" 1168 - } 1169 - }, 1170 - "mdurl@2.0.0": { 1171 - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", 1172 - "dependencies": {} 1173 - }, 1174 - "merge2@1.4.1": { 1175 - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1176 - "dependencies": {} 1177 - }, 1178 - "meriyah@4.4.0": { 1179 - "integrity": "sha512-loEeDY1+BXyAlTsksyoqv0mtEAA6Tb9xTxq/Qo/J8CxR6Ap81Q/Dej4S6XWX1OFTQJZ/zILPHnvULB+gjtTs8A==", 1180 - "dependencies": {} 1181 - }, 1182 - "micromark-core-commonmark@2.0.1": { 1183 - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", 1184 - "dependencies": { 1185 - "decode-named-character-reference": "decode-named-character-reference@1.0.2", 1186 - "devlop": "devlop@1.1.0", 1187 - "micromark-factory-destination": "micromark-factory-destination@2.0.0", 1188 - "micromark-factory-label": "micromark-factory-label@2.0.0", 1189 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1190 - "micromark-factory-title": "micromark-factory-title@2.0.0", 1191 - "micromark-factory-whitespace": "micromark-factory-whitespace@2.0.0", 1192 - "micromark-util-character": "micromark-util-character@2.1.0", 1193 - "micromark-util-chunked": "micromark-util-chunked@2.0.0", 1194 - "micromark-util-classify-character": "micromark-util-classify-character@2.0.0", 1195 - "micromark-util-html-tag-name": "micromark-util-html-tag-name@2.0.0", 1196 - "micromark-util-normalize-identifier": "micromark-util-normalize-identifier@2.0.0", 1197 - "micromark-util-resolve-all": "micromark-util-resolve-all@2.0.0", 1198 - "micromark-util-subtokenize": "micromark-util-subtokenize@2.0.1", 1199 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1200 - "micromark-util-types": "micromark-util-types@2.0.0" 1201 - } 1202 - }, 1203 - "micromark-extension-gfm-autolink-literal@2.0.0": { 1204 - "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", 1205 - "dependencies": { 1206 - "micromark-util-character": "micromark-util-character@2.1.0", 1207 - "micromark-util-sanitize-uri": "micromark-util-sanitize-uri@2.0.0", 1208 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1209 - "micromark-util-types": "micromark-util-types@2.0.0" 1210 - } 1211 - }, 1212 - "micromark-extension-gfm-footnote@2.0.0": { 1213 - "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", 1214 - "dependencies": { 1215 - "devlop": "devlop@1.1.0", 1216 - "micromark-core-commonmark": "micromark-core-commonmark@2.0.1", 1217 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1218 - "micromark-util-character": "micromark-util-character@2.1.0", 1219 - "micromark-util-normalize-identifier": "micromark-util-normalize-identifier@2.0.0", 1220 - "micromark-util-sanitize-uri": "micromark-util-sanitize-uri@2.0.0", 1221 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1222 - "micromark-util-types": "micromark-util-types@2.0.0" 1223 - } 1224 - }, 1225 - "micromark-extension-gfm-strikethrough@2.0.0": { 1226 - "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", 1227 - "dependencies": { 1228 - "devlop": "devlop@1.1.0", 1229 - "micromark-util-chunked": "micromark-util-chunked@2.0.0", 1230 - "micromark-util-classify-character": "micromark-util-classify-character@2.0.0", 1231 - "micromark-util-resolve-all": "micromark-util-resolve-all@2.0.0", 1232 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1233 - "micromark-util-types": "micromark-util-types@2.0.0" 1234 - } 1235 - }, 1236 - "micromark-extension-gfm-table@2.0.0": { 1237 - "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", 1238 - "dependencies": { 1239 - "devlop": "devlop@1.1.0", 1240 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1241 - "micromark-util-character": "micromark-util-character@2.1.0", 1242 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1243 - "micromark-util-types": "micromark-util-types@2.0.0" 1244 - } 1245 - }, 1246 - "micromark-extension-gfm-tagfilter@2.0.0": { 1247 - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", 1248 - "dependencies": { 1249 - "micromark-util-types": "micromark-util-types@2.0.0" 1250 - } 1251 - }, 1252 - "micromark-extension-gfm-task-list-item@2.0.1": { 1253 - "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", 1254 - "dependencies": { 1255 - "devlop": "devlop@1.1.0", 1256 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1257 - "micromark-util-character": "micromark-util-character@2.1.0", 1258 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1259 - "micromark-util-types": "micromark-util-types@2.0.0" 1260 - } 1261 - }, 1262 - "micromark-extension-gfm@3.0.0": { 1263 - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", 1264 - "dependencies": { 1265 - "micromark-extension-gfm-autolink-literal": "micromark-extension-gfm-autolink-literal@2.0.0", 1266 - "micromark-extension-gfm-footnote": "micromark-extension-gfm-footnote@2.0.0", 1267 - "micromark-extension-gfm-strikethrough": "micromark-extension-gfm-strikethrough@2.0.0", 1268 - "micromark-extension-gfm-table": "micromark-extension-gfm-table@2.0.0", 1269 - "micromark-extension-gfm-tagfilter": "micromark-extension-gfm-tagfilter@2.0.0", 1270 - "micromark-extension-gfm-task-list-item": "micromark-extension-gfm-task-list-item@2.0.1", 1271 - "micromark-util-combine-extensions": "micromark-util-combine-extensions@2.0.0", 1272 - "micromark-util-types": "micromark-util-types@2.0.0" 1273 - } 1274 - }, 1275 - "micromark-extension-mdx-expression@3.0.0": { 1276 - "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", 1277 - "dependencies": { 1278 - "@types/estree": "@types/estree@1.0.5", 1279 - "devlop": "devlop@1.1.0", 1280 - "micromark-factory-mdx-expression": "micromark-factory-mdx-expression@2.0.1", 1281 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1282 - "micromark-util-character": "micromark-util-character@2.1.0", 1283 - "micromark-util-events-to-acorn": "micromark-util-events-to-acorn@2.0.2", 1284 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1285 - "micromark-util-types": "micromark-util-types@2.0.0" 1286 - } 1287 - }, 1288 - "micromark-extension-mdx-jsx@3.0.0": { 1289 - "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", 1290 - "dependencies": { 1291 - "@types/acorn": "@types/acorn@4.0.6", 1292 - "@types/estree": "@types/estree@1.0.5", 1293 - "devlop": "devlop@1.1.0", 1294 - "estree-util-is-identifier-name": "estree-util-is-identifier-name@3.0.0", 1295 - "micromark-factory-mdx-expression": "micromark-factory-mdx-expression@2.0.1", 1296 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1297 - "micromark-util-character": "micromark-util-character@2.1.0", 1298 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1299 - "micromark-util-types": "micromark-util-types@2.0.0", 1300 - "vfile-message": "vfile-message@4.0.2" 1301 - } 1302 - }, 1303 - "micromark-extension-mdx-md@2.0.0": { 1304 - "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", 1305 - "dependencies": { 1306 - "micromark-util-types": "micromark-util-types@2.0.0" 1307 - } 1308 - }, 1309 - "micromark-extension-mdxjs-esm@3.0.0": { 1310 - "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", 1311 - "dependencies": { 1312 - "@types/estree": "@types/estree@1.0.5", 1313 - "devlop": "devlop@1.1.0", 1314 - "micromark-core-commonmark": "micromark-core-commonmark@2.0.1", 1315 - "micromark-util-character": "micromark-util-character@2.1.0", 1316 - "micromark-util-events-to-acorn": "micromark-util-events-to-acorn@2.0.2", 1317 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1318 - "micromark-util-types": "micromark-util-types@2.0.0", 1319 - "unist-util-position-from-estree": "unist-util-position-from-estree@2.0.0", 1320 - "vfile-message": "vfile-message@4.0.2" 1321 - } 1322 - }, 1323 - "micromark-extension-mdxjs@3.0.0_acorn@8.11.3": { 1324 - "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", 1325 - "dependencies": { 1326 - "acorn": "acorn@8.11.3", 1327 - "acorn-jsx": "acorn-jsx@5.3.2_acorn@8.11.3", 1328 - "micromark-extension-mdx-expression": "micromark-extension-mdx-expression@3.0.0", 1329 - "micromark-extension-mdx-jsx": "micromark-extension-mdx-jsx@3.0.0", 1330 - "micromark-extension-mdx-md": "micromark-extension-mdx-md@2.0.0", 1331 - "micromark-extension-mdxjs-esm": "micromark-extension-mdxjs-esm@3.0.0", 1332 - "micromark-util-combine-extensions": "micromark-util-combine-extensions@2.0.0", 1333 - "micromark-util-types": "micromark-util-types@2.0.0" 1334 - } 1335 - }, 1336 - "micromark-factory-destination@2.0.0": { 1337 - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", 1338 - "dependencies": { 1339 - "micromark-util-character": "micromark-util-character@2.1.0", 1340 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1341 - "micromark-util-types": "micromark-util-types@2.0.0" 1342 - } 1343 - }, 1344 - "micromark-factory-label@2.0.0": { 1345 - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", 1346 - "dependencies": { 1347 - "devlop": "devlop@1.1.0", 1348 - "micromark-util-character": "micromark-util-character@2.1.0", 1349 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1350 - "micromark-util-types": "micromark-util-types@2.0.0" 1351 - } 1352 - }, 1353 - "micromark-factory-mdx-expression@2.0.1": { 1354 - "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", 1355 - "dependencies": { 1356 - "@types/estree": "@types/estree@1.0.5", 1357 - "devlop": "devlop@1.1.0", 1358 - "micromark-util-character": "micromark-util-character@2.1.0", 1359 - "micromark-util-events-to-acorn": "micromark-util-events-to-acorn@2.0.2", 1360 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1361 - "micromark-util-types": "micromark-util-types@2.0.0", 1362 - "unist-util-position-from-estree": "unist-util-position-from-estree@2.0.0", 1363 - "vfile-message": "vfile-message@4.0.2" 1364 - } 1365 - }, 1366 - "micromark-factory-space@2.0.0": { 1367 - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", 1368 - "dependencies": { 1369 - "micromark-util-character": "micromark-util-character@2.1.0", 1370 - "micromark-util-types": "micromark-util-types@2.0.0" 1371 - } 1372 - }, 1373 - "micromark-factory-title@2.0.0": { 1374 - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", 1375 - "dependencies": { 1376 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1377 - "micromark-util-character": "micromark-util-character@2.1.0", 1378 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1379 - "micromark-util-types": "micromark-util-types@2.0.0" 1380 - } 1381 - }, 1382 - "micromark-factory-whitespace@2.0.0": { 1383 - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", 1384 - "dependencies": { 1385 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1386 - "micromark-util-character": "micromark-util-character@2.1.0", 1387 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1388 - "micromark-util-types": "micromark-util-types@2.0.0" 1389 - } 1390 - }, 1391 - "micromark-util-character@2.1.0": { 1392 - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", 1393 - "dependencies": { 1394 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1395 - "micromark-util-types": "micromark-util-types@2.0.0" 1396 - } 1397 - }, 1398 - "micromark-util-chunked@2.0.0": { 1399 - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", 1400 - "dependencies": { 1401 - "micromark-util-symbol": "micromark-util-symbol@2.0.0" 1402 - } 1403 - }, 1404 - "micromark-util-classify-character@2.0.0": { 1405 - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", 1406 - "dependencies": { 1407 - "micromark-util-character": "micromark-util-character@2.1.0", 1408 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1409 - "micromark-util-types": "micromark-util-types@2.0.0" 1410 - } 1411 - }, 1412 - "micromark-util-combine-extensions@2.0.0": { 1413 - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", 1414 - "dependencies": { 1415 - "micromark-util-chunked": "micromark-util-chunked@2.0.0", 1416 - "micromark-util-types": "micromark-util-types@2.0.0" 1417 - } 1418 - }, 1419 - "micromark-util-decode-numeric-character-reference@2.0.1": { 1420 - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", 1421 - "dependencies": { 1422 - "micromark-util-symbol": "micromark-util-symbol@2.0.0" 1423 - } 1424 - }, 1425 - "micromark-util-decode-string@2.0.0": { 1426 - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", 1427 - "dependencies": { 1428 - "decode-named-character-reference": "decode-named-character-reference@1.0.2", 1429 - "micromark-util-character": "micromark-util-character@2.1.0", 1430 - "micromark-util-decode-numeric-character-reference": "micromark-util-decode-numeric-character-reference@2.0.1", 1431 - "micromark-util-symbol": "micromark-util-symbol@2.0.0" 1432 - } 1433 - }, 1434 - "micromark-util-encode@2.0.0": { 1435 - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", 1436 - "dependencies": {} 1437 - }, 1438 - "micromark-util-events-to-acorn@2.0.2": { 1439 - "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", 1440 - "dependencies": { 1441 - "@types/acorn": "@types/acorn@4.0.6", 1442 - "@types/estree": "@types/estree@1.0.5", 1443 - "@types/unist": "@types/unist@3.0.2", 1444 - "devlop": "devlop@1.1.0", 1445 - "estree-util-visit": "estree-util-visit@2.0.0", 1446 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1447 - "micromark-util-types": "micromark-util-types@2.0.0", 1448 - "vfile-message": "vfile-message@4.0.2" 1449 - } 1450 - }, 1451 - "micromark-util-html-tag-name@2.0.0": { 1452 - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", 1453 - "dependencies": {} 1454 - }, 1455 - "micromark-util-normalize-identifier@2.0.0": { 1456 - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", 1457 - "dependencies": { 1458 - "micromark-util-symbol": "micromark-util-symbol@2.0.0" 1459 - } 1460 - }, 1461 - "micromark-util-resolve-all@2.0.0": { 1462 - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", 1463 - "dependencies": { 1464 - "micromark-util-types": "micromark-util-types@2.0.0" 1465 - } 1466 - }, 1467 - "micromark-util-sanitize-uri@2.0.0": { 1468 - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", 1469 - "dependencies": { 1470 - "micromark-util-character": "micromark-util-character@2.1.0", 1471 - "micromark-util-encode": "micromark-util-encode@2.0.0", 1472 - "micromark-util-symbol": "micromark-util-symbol@2.0.0" 1473 - } 1474 - }, 1475 - "micromark-util-subtokenize@2.0.1": { 1476 - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", 1477 - "dependencies": { 1478 - "devlop": "devlop@1.1.0", 1479 - "micromark-util-chunked": "micromark-util-chunked@2.0.0", 1480 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1481 - "micromark-util-types": "micromark-util-types@2.0.0" 1482 - } 1483 - }, 1484 - "micromark-util-symbol@2.0.0": { 1485 - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", 1486 - "dependencies": {} 1487 - }, 1488 - "micromark-util-types@2.0.0": { 1489 - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", 1490 - "dependencies": {} 1491 - }, 1492 - "micromark@4.0.0": { 1493 - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", 1494 - "dependencies": { 1495 - "@types/debug": "@types/debug@4.1.12", 1496 - "debug": "debug@4.3.4", 1497 - "decode-named-character-reference": "decode-named-character-reference@1.0.2", 1498 - "devlop": "devlop@1.1.0", 1499 - "micromark-core-commonmark": "micromark-core-commonmark@2.0.1", 1500 - "micromark-factory-space": "micromark-factory-space@2.0.0", 1501 - "micromark-util-character": "micromark-util-character@2.1.0", 1502 - "micromark-util-chunked": "micromark-util-chunked@2.0.0", 1503 - "micromark-util-combine-extensions": "micromark-util-combine-extensions@2.0.0", 1504 - "micromark-util-decode-numeric-character-reference": "micromark-util-decode-numeric-character-reference@2.0.1", 1505 - "micromark-util-encode": "micromark-util-encode@2.0.0", 1506 - "micromark-util-normalize-identifier": "micromark-util-normalize-identifier@2.0.0", 1507 - "micromark-util-resolve-all": "micromark-util-resolve-all@2.0.0", 1508 - "micromark-util-sanitize-uri": "micromark-util-sanitize-uri@2.0.0", 1509 - "micromark-util-subtokenize": "micromark-util-subtokenize@2.0.1", 1510 - "micromark-util-symbol": "micromark-util-symbol@2.0.0", 1511 - "micromark-util-types": "micromark-util-types@2.0.0" 1512 - } 1513 - }, 1514 - "micromatch@4.0.7": { 1515 - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 1516 - "dependencies": { 1517 - "braces": "braces@3.0.3", 1518 - "picomatch": "picomatch@2.3.1" 1519 - } 1520 - }, 1521 - "mini-svg-data-uri@1.4.4": { 1522 - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", 1523 - "dependencies": {} 1524 - }, 1525 - "minimatch@9.0.4": { 1526 - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", 1527 - "dependencies": { 1528 - "brace-expansion": "brace-expansion@2.0.1" 1529 - } 1530 - }, 1531 - "minipass@7.1.2": { 1532 - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1533 - "dependencies": {} 1534 - }, 1535 - "ms@2.1.2": { 1536 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1537 - "dependencies": {} 1538 - }, 1539 - "mz@2.7.0": { 1540 - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 1541 - "dependencies": { 1542 - "any-promise": "any-promise@1.3.0", 1543 - "object-assign": "object-assign@4.1.1", 1544 - "thenify-all": "thenify-all@1.6.0" 1545 - } 1546 - }, 1547 - "nanoid@3.3.7": { 1548 - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 1549 - "dependencies": {} 1550 - }, 1551 - "node-releases@2.0.14": { 1552 - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", 1553 - "dependencies": {} 1554 - }, 1555 - "normalize-path@3.0.0": { 1556 - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1557 - "dependencies": {} 1558 - }, 1559 - "normalize-range@0.1.2": { 1560 - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", 1561 - "dependencies": {} 1562 - }, 1563 - "nunjucks@3.2.4": { 1564 - "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", 1565 - "dependencies": { 1566 - "a-sync-waterfall": "a-sync-waterfall@1.0.1", 1567 - "asap": "asap@2.0.6", 1568 - "commander": "commander@5.1.0" 1569 - } 1570 - }, 1571 - "object-assign@4.1.1": { 1572 - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1573 - "dependencies": {} 1574 - }, 1575 - "object-hash@3.0.0": { 1576 - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 1577 - "dependencies": {} 1578 - }, 1579 - "parse-entities@4.0.1": { 1580 - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", 1581 - "dependencies": { 1582 - "@types/unist": "@types/unist@2.0.10", 1583 - "character-entities": "character-entities@2.0.2", 1584 - "character-entities-legacy": "character-entities-legacy@3.0.0", 1585 - "character-reference-invalid": "character-reference-invalid@2.0.1", 1586 - "decode-named-character-reference": "decode-named-character-reference@1.0.2", 1587 - "is-alphanumerical": "is-alphanumerical@2.0.1", 1588 - "is-decimal": "is-decimal@2.0.1", 1589 - "is-hexadecimal": "is-hexadecimal@2.0.1" 1590 - } 1591 - }, 1592 - "parse-numeric-range@1.3.0": { 1593 - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", 1594 - "dependencies": {} 1595 - }, 1596 - "parse5@7.1.2": { 1597 - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", 1598 - "dependencies": { 1599 - "entities": "entities@4.5.0" 1600 - } 1601 - }, 1602 - "path-key@3.1.1": { 1603 - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1604 - "dependencies": {} 1605 - }, 1606 - "path-parse@1.0.7": { 1607 - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1608 - "dependencies": {} 1609 - }, 1610 - "path-scurry@1.11.1": { 1611 - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1612 - "dependencies": { 1613 - "lru-cache": "lru-cache@10.2.2", 1614 - "minipass": "minipass@7.1.2" 1615 - } 1616 - }, 1617 - "periscopic@3.1.0": { 1618 - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", 1619 - "dependencies": { 1620 - "@types/estree": "@types/estree@1.0.5", 1621 - "estree-walker": "estree-walker@3.0.3", 1622 - "is-reference": "is-reference@3.0.2" 1623 - } 1624 - }, 1625 - "picocolors@1.0.1": { 1626 - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", 1627 - "dependencies": {} 1628 - }, 1629 - "picomatch@2.3.1": { 1630 - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1631 - "dependencies": {} 1632 - }, 1633 - "pify@2.3.0": { 1634 - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 1635 - "dependencies": {} 1636 - }, 1637 - "pirates@4.0.6": { 1638 - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 1639 - "dependencies": {} 1640 - }, 1641 - "postcss-import@15.1.0_postcss@8.4.38": { 1642 - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", 1643 - "dependencies": { 1644 - "postcss": "postcss@8.4.38", 1645 - "postcss-value-parser": "postcss-value-parser@4.2.0", 1646 - "read-cache": "read-cache@1.0.0", 1647 - "resolve": "resolve@1.22.8" 1648 - } 1649 - }, 1650 - "postcss-import@16.1.0_postcss@8.4.38": { 1651 - "integrity": "sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==", 1652 - "dependencies": { 1653 - "postcss": "postcss@8.4.38", 1654 - "postcss-value-parser": "postcss-value-parser@4.2.0", 1655 - "read-cache": "read-cache@1.0.0", 1656 - "resolve": "resolve@1.22.8" 1657 - } 1658 - }, 1659 - "postcss-js@4.0.1_postcss@8.4.38": { 1660 - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", 1661 - "dependencies": { 1662 - "camelcase-css": "camelcase-css@2.0.1", 1663 - "postcss": "postcss@8.4.38" 1664 - } 1665 - }, 1666 - "postcss-load-config@4.0.2_postcss@8.4.38": { 1667 - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", 1668 - "dependencies": { 1669 - "lilconfig": "lilconfig@3.1.1", 1670 - "postcss": "postcss@8.4.38", 1671 - "yaml": "yaml@2.4.2" 1672 - } 1673 - }, 1674 - "postcss-nested@6.0.1_postcss@8.4.38": { 1675 - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", 1676 - "dependencies": { 1677 - "postcss": "postcss@8.4.38", 1678 - "postcss-selector-parser": "postcss-selector-parser@6.1.0" 1679 - } 1680 - }, 1681 - "postcss-selector-parser@6.0.10": { 1682 - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 1683 - "dependencies": { 1684 - "cssesc": "cssesc@3.0.0", 1685 - "util-deprecate": "util-deprecate@1.0.2" 1686 - } 1687 - }, 1688 - "postcss-selector-parser@6.1.0": { 1689 - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", 1690 - "dependencies": { 1691 - "cssesc": "cssesc@3.0.0", 1692 - "util-deprecate": "util-deprecate@1.0.2" 1693 - } 1694 - }, 1695 - "postcss-value-parser@4.2.0": { 1696 - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 1697 - "dependencies": {} 1698 - }, 1699 - "postcss@8.4.38": { 1700 - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", 1701 - "dependencies": { 1702 - "nanoid": "nanoid@3.3.7", 1703 - "picocolors": "picocolors@1.0.1", 1704 - "source-map-js": "source-map-js@1.2.0" 1705 - } 1706 - }, 1707 - "preact-render-to-string@6.4.2_preact@10.22.0": { 1708 - "integrity": "sha512-Sio5SvlyZSAXHuvnMgYzVQd67lNIuQe4uSjJ+2gfpJNC6L8zoHQR5xV7B/EjIqrAYWVyJ2eACkTCxVrIzZi6Vw==", 1709 - "dependencies": { 1710 - "preact": "preact@10.22.0", 1711 - "pretty-format": "pretty-format@3.8.0" 1712 - } 1713 - }, 1714 - "preact@10.22.0": { 1715 - "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==", 1716 - "dependencies": {} 1717 - }, 1718 - "pretty-format@3.8.0": { 1719 - "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==", 1720 - "dependencies": {} 1721 - }, 1722 - "property-information@6.5.0": { 1723 - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", 1724 - "dependencies": {} 1725 - }, 1726 - "punycode.js@2.3.1": { 1727 - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", 1728 - "dependencies": {} 1729 - }, 1730 - "queue-microtask@1.2.3": { 1731 - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1732 - "dependencies": {} 1733 - }, 1734 - "react@18.3.1": { 1735 - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", 1736 - "dependencies": { 1737 - "loose-envify": "loose-envify@1.4.0" 1738 - } 1739 - }, 1740 - "read-cache@1.0.0": { 1741 - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 1742 - "dependencies": { 1743 - "pify": "pify@2.3.0" 1744 - } 1745 - }, 1746 - "readdirp@3.6.0": { 1747 - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1748 - "dependencies": { 1749 - "picomatch": "picomatch@2.3.1" 1750 - } 1751 - }, 1752 - "refractor@4.8.1": { 1753 - "integrity": "sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==", 1754 - "dependencies": { 1755 - "@types/hast": "@types/hast@2.3.10", 1756 - "@types/prismjs": "@types/prismjs@1.26.4", 1757 - "hastscript": "hastscript@7.2.0", 1758 - "parse-entities": "parse-entities@4.0.1" 1759 - } 1760 - }, 1761 - "rehype-parse@9.0.0": { 1762 - "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", 1763 - "dependencies": { 1764 - "@types/hast": "@types/hast@3.0.4", 1765 - "hast-util-from-html": "hast-util-from-html@2.0.1", 1766 - "unified": "unified@11.0.4" 1767 - } 1768 - }, 1769 - "rehype-prism-plus@2.0.0": { 1770 - "integrity": "sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==", 1771 - "dependencies": { 1772 - "hast-util-to-string": "hast-util-to-string@3.0.0", 1773 - "parse-numeric-range": "parse-numeric-range@1.3.0", 1774 - "refractor": "refractor@4.8.1", 1775 - "rehype-parse": "rehype-parse@9.0.0", 1776 - "unist-util-filter": "unist-util-filter@5.0.1", 1777 - "unist-util-visit": "unist-util-visit@5.0.0" 1778 - } 1779 - }, 1780 - "remark-gfm@4.0.0": { 1781 - "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", 1782 - "dependencies": { 1783 - "@types/mdast": "@types/mdast@4.0.4", 1784 - "mdast-util-gfm": "mdast-util-gfm@3.0.0", 1785 - "micromark-extension-gfm": "micromark-extension-gfm@3.0.0", 1786 - "remark-parse": "remark-parse@11.0.0", 1787 - "remark-stringify": "remark-stringify@11.0.0", 1788 - "unified": "unified@11.0.4" 1789 - } 1790 - }, 1791 - "remark-mdx@3.0.1": { 1792 - "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", 1793 - "dependencies": { 1794 - "mdast-util-mdx": "mdast-util-mdx@3.0.0", 1795 - "micromark-extension-mdxjs": "micromark-extension-mdxjs@3.0.0_acorn@8.11.3" 1796 - } 1797 - }, 1798 - "remark-parse@11.0.0": { 1799 - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", 1800 - "dependencies": { 1801 - "@types/mdast": "@types/mdast@4.0.4", 1802 - "mdast-util-from-markdown": "mdast-util-from-markdown@2.0.0", 1803 - "micromark-util-types": "micromark-util-types@2.0.0", 1804 - "unified": "unified@11.0.4" 1805 - } 1806 - }, 1807 - "remark-rehype@11.1.0": { 1808 - "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", 1809 - "dependencies": { 1810 - "@types/hast": "@types/hast@3.0.4", 1811 - "@types/mdast": "@types/mdast@4.0.4", 1812 - "mdast-util-to-hast": "mdast-util-to-hast@13.1.0", 1813 - "unified": "unified@11.0.4", 1814 - "vfile": "vfile@6.0.1" 1815 - } 1816 - }, 1817 - "remark-stringify@11.0.0": { 1818 - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", 1819 - "dependencies": { 1820 - "@types/mdast": "@types/mdast@4.0.4", 1821 - "mdast-util-to-markdown": "mdast-util-to-markdown@2.1.0", 1822 - "unified": "unified@11.0.4" 1823 - } 1824 - }, 1825 - "resolve@1.22.8": { 1826 - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 1827 - "dependencies": { 1828 - "is-core-module": "is-core-module@2.13.1", 1829 - "path-parse": "path-parse@1.0.7", 1830 - "supports-preserve-symlinks-flag": "supports-preserve-symlinks-flag@1.0.0" 1831 - } 1832 - }, 1833 - "reusify@1.0.4": { 1834 - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1835 - "dependencies": {} 1836 - }, 1837 - "run-parallel@1.2.0": { 1838 - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1839 - "dependencies": { 1840 - "queue-microtask": "queue-microtask@1.2.3" 1841 - } 1842 - }, 1843 - "shebang-command@2.0.0": { 1844 - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1845 - "dependencies": { 1846 - "shebang-regex": "shebang-regex@3.0.0" 1847 - } 1848 - }, 1849 - "shebang-regex@3.0.0": { 1850 - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1851 - "dependencies": {} 1852 - }, 1853 - "signal-exit@4.1.0": { 1854 - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1855 - "dependencies": {} 1856 - }, 1857 - "source-map-js@1.2.0": { 1858 - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", 1859 - "dependencies": {} 1860 - }, 1861 - "source-map@0.7.4": { 1862 - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", 1863 - "dependencies": {} 1864 - }, 1865 - "space-separated-tokens@2.0.2": { 1866 - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", 1867 - "dependencies": {} 1868 - }, 1869 - "string-width@4.2.3": { 1870 - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1871 - "dependencies": { 1872 - "emoji-regex": "emoji-regex@8.0.0", 1873 - "is-fullwidth-code-point": "is-fullwidth-code-point@3.0.0", 1874 - "strip-ansi": "strip-ansi@6.0.1" 1875 - } 1876 - }, 1877 - "string-width@5.1.2": { 1878 - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1879 - "dependencies": { 1880 - "eastasianwidth": "eastasianwidth@0.2.0", 1881 - "emoji-regex": "emoji-regex@9.2.2", 1882 - "strip-ansi": "strip-ansi@7.1.0" 1883 - } 1884 - }, 1885 - "stringify-entities@4.0.4": { 1886 - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", 1887 - "dependencies": { 1888 - "character-entities-html4": "character-entities-html4@2.1.0", 1889 - "character-entities-legacy": "character-entities-legacy@3.0.0" 1890 - } 1891 - }, 1892 - "strip-ansi@6.0.1": { 1893 - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1894 - "dependencies": { 1895 - "ansi-regex": "ansi-regex@5.0.1" 1896 - } 1897 - }, 1898 - "strip-ansi@7.1.0": { 1899 - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 1900 - "dependencies": { 1901 - "ansi-regex": "ansi-regex@6.0.1" 1902 - } 1903 - }, 1904 - "style-to-object@0.4.4": { 1905 - "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", 1906 - "dependencies": { 1907 - "inline-style-parser": "inline-style-parser@0.1.1" 1908 - } 1909 - }, 1910 - "style-to-object@1.0.6": { 1911 - "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", 1912 - "dependencies": { 1913 - "inline-style-parser": "inline-style-parser@0.2.3" 1914 - } 1915 - }, 1916 - "sucrase@3.35.0": { 1917 - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 1918 - "dependencies": { 1919 - "@jridgewell/gen-mapping": "@jridgewell/gen-mapping@0.3.5", 1920 - "commander": "commander@4.1.1", 1921 - "glob": "glob@10.4.1", 1922 - "lines-and-columns": "lines-and-columns@1.2.4", 1923 - "mz": "mz@2.7.0", 1924 - "pirates": "pirates@4.0.6", 1925 - "ts-interface-checker": "ts-interface-checker@0.1.13" 1926 - } 1927 - }, 1928 - "supports-preserve-symlinks-flag@1.0.0": { 1929 - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1930 - "dependencies": {} 1931 - }, 1932 - "tailwindcss@3.4.3_postcss@8.4.38": { 1933 - "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", 1934 - "dependencies": { 1935 - "@alloc/quick-lru": "@alloc/quick-lru@5.2.0", 1936 - "arg": "arg@5.0.2", 1937 - "chokidar": "chokidar@3.6.0", 1938 - "didyoumean": "didyoumean@1.2.2", 1939 - "dlv": "dlv@1.1.3", 1940 - "fast-glob": "fast-glob@3.3.2", 1941 - "glob-parent": "glob-parent@6.0.2", 1942 - "is-glob": "is-glob@4.0.3", 1943 - "jiti": "jiti@1.21.0", 1944 - "lilconfig": "lilconfig@2.1.0", 1945 - "micromatch": "micromatch@4.0.7", 1946 - "normalize-path": "normalize-path@3.0.0", 1947 - "object-hash": "object-hash@3.0.0", 1948 - "picocolors": "picocolors@1.0.1", 1949 - "postcss": "postcss@8.4.38", 1950 - "postcss-import": "postcss-import@15.1.0_postcss@8.4.38", 1951 - "postcss-js": "postcss-js@4.0.1_postcss@8.4.38", 1952 - "postcss-load-config": "postcss-load-config@4.0.2_postcss@8.4.38", 1953 - "postcss-nested": "postcss-nested@6.0.1_postcss@8.4.38", 1954 - "postcss-selector-parser": "postcss-selector-parser@6.1.0", 1955 - "resolve": "resolve@1.22.8", 1956 - "sucrase": "sucrase@3.35.0" 1957 - } 1958 - }, 1959 - "thenify-all@1.6.0": { 1960 - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 1961 - "dependencies": { 1962 - "thenify": "thenify@3.3.1" 1963 - } 1964 - }, 1965 - "thenify@3.3.1": { 1966 - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 1967 - "dependencies": { 1968 - "any-promise": "any-promise@1.3.0" 1969 - } 1970 - }, 1971 - "to-regex-range@5.0.1": { 1972 - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1973 - "dependencies": { 1974 - "is-number": "is-number@7.0.0" 1975 - } 1976 - }, 1977 - "trim-lines@3.0.1": { 1978 - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", 1979 - "dependencies": {} 1980 - }, 1981 - "trough@2.2.0": { 1982 - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", 1983 - "dependencies": {} 1984 - }, 1985 - "ts-interface-checker@0.1.13": { 1986 - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 1987 - "dependencies": {} 1988 - }, 1989 - "tslib@2.6.2": { 1990 - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 1991 - "dependencies": {} 1992 - }, 1993 - "uc.micro@2.1.0": { 1994 - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", 1995 - "dependencies": {} 1996 - }, 1997 - "unified@11.0.4": { 1998 - "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", 1999 - "dependencies": { 2000 - "@types/unist": "@types/unist@3.0.2", 2001 - "bail": "bail@2.0.2", 2002 - "devlop": "devlop@1.1.0", 2003 - "extend": "extend@3.0.2", 2004 - "is-plain-obj": "is-plain-obj@4.1.0", 2005 - "trough": "trough@2.2.0", 2006 - "vfile": "vfile@6.0.1" 2007 - } 2008 - }, 2009 - "unist-util-filter@5.0.1": { 2010 - "integrity": "sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==", 2011 - "dependencies": { 2012 - "@types/unist": "@types/unist@3.0.2", 2013 - "unist-util-is": "unist-util-is@6.0.0", 2014 - "unist-util-visit-parents": "unist-util-visit-parents@6.0.1" 2015 - } 2016 - }, 2017 - "unist-util-is@6.0.0": { 2018 - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", 2019 - "dependencies": { 2020 - "@types/unist": "@types/unist@3.0.2" 2021 - } 2022 - }, 2023 - "unist-util-position-from-estree@2.0.0": { 2024 - "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", 2025 - "dependencies": { 2026 - "@types/unist": "@types/unist@3.0.2" 2027 - } 2028 - }, 2029 - "unist-util-position@5.0.0": { 2030 - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", 2031 - "dependencies": { 2032 - "@types/unist": "@types/unist@3.0.2" 2033 - } 2034 - }, 2035 - "unist-util-remove-position@5.0.0": { 2036 - "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", 2037 - "dependencies": { 2038 - "@types/unist": "@types/unist@3.0.2", 2039 - "unist-util-visit": "unist-util-visit@5.0.0" 2040 - } 2041 - }, 2042 - "unist-util-stringify-position@4.0.0": { 2043 - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", 2044 - "dependencies": { 2045 - "@types/unist": "@types/unist@3.0.2" 2046 - } 2047 - }, 2048 - "unist-util-visit-parents@6.0.1": { 2049 - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", 2050 - "dependencies": { 2051 - "@types/unist": "@types/unist@3.0.2", 2052 - "unist-util-is": "unist-util-is@6.0.0" 2053 - } 2054 - }, 2055 - "unist-util-visit@5.0.0": { 2056 - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", 2057 - "dependencies": { 2058 - "@types/unist": "@types/unist@3.0.2", 2059 - "unist-util-is": "unist-util-is@6.0.0", 2060 - "unist-util-visit-parents": "unist-util-visit-parents@6.0.1" 2061 - } 2062 - }, 2063 - "update-browserslist-db@1.0.16_browserslist@4.23.0": { 2064 - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", 2065 - "dependencies": { 2066 - "browserslist": "browserslist@4.23.0", 2067 - "escalade": "escalade@3.1.2", 2068 - "picocolors": "picocolors@1.0.1" 2069 - } 2070 - }, 2071 - "util-deprecate@1.0.2": { 2072 - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2073 - "dependencies": {} 2074 - }, 2075 - "vfile-location@5.0.2": { 2076 - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", 2077 - "dependencies": { 2078 - "@types/unist": "@types/unist@3.0.2", 2079 - "vfile": "vfile@6.0.1" 2080 - } 2081 - }, 2082 - "vfile-message@4.0.2": { 2083 - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", 2084 - "dependencies": { 2085 - "@types/unist": "@types/unist@3.0.2", 2086 - "unist-util-stringify-position": "unist-util-stringify-position@4.0.0" 2087 - } 2088 - }, 2089 - "vfile@6.0.1": { 2090 - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", 2091 - "dependencies": { 2092 - "@types/unist": "@types/unist@3.0.2", 2093 - "unist-util-stringify-position": "unist-util-stringify-position@4.0.0", 2094 - "vfile-message": "vfile-message@4.0.2" 2095 - } 2096 - }, 2097 - "web-namespaces@2.0.1": { 2098 - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", 2099 - "dependencies": {} 2100 - }, 2101 - "which@2.0.2": { 2102 - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2103 - "dependencies": { 2104 - "isexe": "isexe@2.0.0" 2105 - } 2106 - }, 2107 - "wrap-ansi@7.0.0": { 2108 - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2109 - "dependencies": { 2110 - "ansi-styles": "ansi-styles@4.3.0", 2111 - "string-width": "string-width@4.2.3", 2112 - "strip-ansi": "strip-ansi@6.0.1" 2113 - } 2114 - }, 2115 - "wrap-ansi@8.1.0": { 2116 - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 2117 - "dependencies": { 2118 - "ansi-styles": "ansi-styles@6.2.1", 2119 - "string-width": "string-width@5.1.2", 2120 - "strip-ansi": "strip-ansi@7.1.0" 2121 - } 2122 - }, 2123 - "yaml@2.4.2": { 2124 - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", 2125 - "dependencies": {} 2126 - }, 2127 - "zwitch@2.0.4": { 2128 - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", 2129 - "dependencies": {} 2130 - } 66 + "@std/cli@0.224.2": { 67 + "integrity": "be330ce49928db596338b411037b082d8f8f218b34f8095bcad382fb0c3d6b31", 68 + "dependencies": [ 69 + "jsr:@std/assert@~0.225.2" 70 + ] 71 + }, 72 + "@std/collections@0.224.2": { 73 + "integrity": "e77819455294e92d4e7ddad1dbfd46f94174c09318e541e6621fac4a4d0ab326" 74 + }, 75 + "@std/crypto@0.224.0": { 76 + "integrity": "154ef3ff08ef535562ef1a718718c5b2c5fc3808f0f9100daad69e829bfcdf2d", 77 + "dependencies": [ 78 + "jsr:@std/assert@0.224", 79 + "jsr:@std/encoding@0.224" 80 + ] 81 + }, 82 + "@std/encoding@0.224.1": { 83 + "integrity": "13fbec556c53de1d7bf8c8661ac6d79de7dbc175376ed00e8270369ebc28721f" 84 + }, 85 + "@std/fmt@0.224.0": { 86 + "integrity": "e20e9a2312a8b5393272c26191c0a68eda8d2c4b08b046bad1673148f1d69851" 87 + }, 88 + "@std/fmt@0.225.1": { 89 + "integrity": "44a8cb375d7344adb3cb0208b85ea0bde7cdc15224c11188c85e733834ffe356" 90 + }, 91 + "@std/front-matter@0.224.0": { 92 + "integrity": "b5e7c40989cb7894058f8f8c35f935e2fc19423b280a1e2ee960c967b6da6a2a", 93 + "dependencies": [ 94 + "jsr:@std/toml@0.224", 95 + "jsr:@std/yaml@0.224" 96 + ] 97 + }, 98 + "@std/fs@0.229.1": { 99 + "integrity": "38d3fb31f0ca0a8c1118e039939188f32e291a3f7f17dc0868fec22024bdfadd", 100 + "dependencies": [ 101 + "jsr:@std/assert@~0.225.2", 102 + "jsr:@std/path@~0.225.1" 103 + ] 104 + }, 105 + "@std/http@0.224.0": { 106 + "integrity": "fde48c9133d1d7bb94c134d8f0f01c1a737e6e3879f52580e9ca92217a011e82", 107 + "dependencies": [ 108 + "jsr:@std/cli@0.224", 109 + "jsr:@std/encoding@0.224", 110 + "jsr:@std/fmt@0.224", 111 + "jsr:@std/media-types", 112 + "jsr:@std/path@0.224", 113 + "jsr:@std/streams" 114 + ] 115 + }, 116 + "@std/io@0.224.0": { 117 + "integrity": "0aff885d21d829c050b8a08b1d71b54aed5841aecf227f8d77e99ec529a11e8e" 118 + }, 119 + "@std/jsonc@0.224.0": { 120 + "integrity": "673ad766f32c73359e338dc1c4caf5227ac9b75cc029b925e11680cd8831148b", 121 + "dependencies": [ 122 + "jsr:@std/assert@0.224" 123 + ] 124 + }, 125 + "@std/log@0.224.1": { 126 + "integrity": "243688532289298670034915da5e2987cc544938c566c7d508afb7e06ec3fe9d", 127 + "dependencies": [ 128 + "jsr:@std/assert@~0.225.1", 129 + "jsr:@std/fmt@0.225", 130 + "jsr:@std/fs@0.229", 131 + "jsr:@std/io" 132 + ] 133 + }, 134 + "@std/media-types@0.224.1": { 135 + "integrity": "9e69a5daed37c5b5c6d3ce4731dc191f80e67f79bed392b0957d1d03b87f11e1" 136 + }, 137 + "@std/path@0.224.0": { 138 + "integrity": "55bca6361e5a6d158b9380e82d4981d82d338ec587de02951e2b7c3a24910ee6", 139 + "dependencies": [ 140 + "jsr:@std/assert@0.224" 141 + ] 142 + }, 143 + "@std/path@0.225.1": { 144 + "integrity": "8c3220635a73730eb51fe43de9e10b79e2724a5bb8638b9355d35ae012fd9429", 145 + "dependencies": [ 146 + "jsr:@std/assert@~0.225.2" 147 + ] 148 + }, 149 + "@std/streams@0.224.1": { 150 + "integrity": "e8565a376ae3888f60770cd09e480952ec7c349007aed81b8f7165424ce2195f", 151 + "dependencies": [ 152 + "jsr:@std/assert@~0.225.3" 153 + ] 154 + }, 155 + "@std/toml@0.224.0": { 156 + "integrity": "15a60eb5eac12d8a81a48d99cb1aaed60a21c67dc94c2def696a7c39b815c74f", 157 + "dependencies": [ 158 + "jsr:@std/collections" 159 + ] 160 + }, 161 + "@std/yaml@0.224.0": { 162 + "integrity": "9bd99c6beb4d2db98de81c50853f15e68d4c95f38d737934b0e909bbeeff2b6d" 163 + } 164 + }, 165 + "npm": { 166 + "@alloc/quick-lru@5.2.0": { 167 + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" 168 + }, 169 + "@isaacs/cliui@8.0.2": { 170 + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 171 + "dependencies": [ 172 + "string-width@5.1.2", 173 + "string-width-cjs@npm:string-width@4.2.3", 174 + "strip-ansi@7.1.0", 175 + "strip-ansi-cjs@npm:strip-ansi@6.0.1", 176 + "wrap-ansi@8.1.0", 177 + "wrap-ansi-cjs@npm:wrap-ansi@7.0.0" 178 + ] 179 + }, 180 + "@jridgewell/gen-mapping@0.3.5": { 181 + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 182 + "dependencies": [ 183 + "@jridgewell/set-array", 184 + "@jridgewell/sourcemap-codec", 185 + "@jridgewell/trace-mapping" 186 + ] 187 + }, 188 + "@jridgewell/resolve-uri@3.1.2": { 189 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" 190 + }, 191 + "@jridgewell/set-array@1.2.1": { 192 + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" 193 + }, 194 + "@jridgewell/sourcemap-codec@1.4.15": { 195 + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" 196 + }, 197 + "@jridgewell/trace-mapping@0.3.25": { 198 + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 199 + "dependencies": [ 200 + "@jridgewell/resolve-uri", 201 + "@jridgewell/sourcemap-codec" 202 + ] 203 + }, 204 + "@js-temporal/polyfill@0.4.4": { 205 + "integrity": "sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==", 206 + "dependencies": [ 207 + "jsbi", 208 + "tslib" 209 + ] 210 + }, 211 + "@mdx-js/mdx@3.0.1": { 212 + "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", 213 + "dependencies": [ 214 + "@types/estree", 215 + "@types/estree-jsx", 216 + "@types/hast@3.0.4", 217 + "@types/mdx", 218 + "collapse-white-space", 219 + "devlop", 220 + "estree-util-build-jsx", 221 + "estree-util-is-identifier-name", 222 + "estree-util-to-js", 223 + "estree-walker", 224 + "hast-util-to-estree", 225 + "hast-util-to-jsx-runtime", 226 + "markdown-extensions", 227 + "periscopic", 228 + "remark-mdx", 229 + "remark-parse", 230 + "remark-rehype", 231 + "source-map", 232 + "unified", 233 + "unist-util-position-from-estree", 234 + "unist-util-stringify-position", 235 + "unist-util-visit", 236 + "vfile" 237 + ] 238 + }, 239 + "@nodelib/fs.scandir@2.1.5": { 240 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 241 + "dependencies": [ 242 + "@nodelib/fs.stat", 243 + "run-parallel" 244 + ] 245 + }, 246 + "@nodelib/fs.stat@2.0.5": { 247 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" 248 + }, 249 + "@nodelib/fs.walk@1.2.8": { 250 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 251 + "dependencies": [ 252 + "@nodelib/fs.scandir", 253 + "fastq" 254 + ] 255 + }, 256 + "@pkgjs/parseargs@0.11.0": { 257 + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" 258 + }, 259 + "@tailwindcss/forms@0.5.7_tailwindcss@3.4.3__postcss@8.4.38": { 260 + "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==", 261 + "dependencies": [ 262 + "mini-svg-data-uri", 263 + "tailwindcss" 264 + ] 265 + }, 266 + "@tailwindcss/typography@0.5.13_tailwindcss@3.4.3__postcss@8.4.38": { 267 + "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==", 268 + "dependencies": [ 269 + "lodash.castarray", 270 + "lodash.isplainobject", 271 + "lodash.merge", 272 + "postcss-selector-parser@6.0.10", 273 + "tailwindcss" 274 + ] 275 + }, 276 + "@types/acorn@4.0.6": { 277 + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", 278 + "dependencies": [ 279 + "@types/estree" 280 + ] 281 + }, 282 + "@types/debug@4.1.12": { 283 + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", 284 + "dependencies": [ 285 + "@types/ms" 286 + ] 287 + }, 288 + "@types/estree-jsx@1.0.5": { 289 + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", 290 + "dependencies": [ 291 + "@types/estree" 292 + ] 293 + }, 294 + "@types/estree@1.0.5": { 295 + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" 296 + }, 297 + "@types/hast@2.3.10": { 298 + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", 299 + "dependencies": [ 300 + "@types/unist@2.0.10" 301 + ] 302 + }, 303 + "@types/hast@3.0.4": { 304 + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", 305 + "dependencies": [ 306 + "@types/unist@3.0.2" 307 + ] 308 + }, 309 + "@types/mdast@4.0.4": { 310 + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", 311 + "dependencies": [ 312 + "@types/unist@3.0.2" 313 + ] 314 + }, 315 + "@types/mdx@2.0.13": { 316 + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" 317 + }, 318 + "@types/ms@0.7.34": { 319 + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" 320 + }, 321 + "@types/nunjucks@3.2.6": { 322 + "integrity": "sha512-pHiGtf83na1nCzliuAdq8GowYiXvH5l931xZ0YEHaLMNFgynpEqx+IPStlu7UaDkehfvl01e4x/9Tpwhy7Ue3w==" 323 + }, 324 + "@types/prismjs@1.26.4": { 325 + "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==" 326 + }, 327 + "@types/unist@2.0.10": { 328 + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" 329 + }, 330 + "@types/unist@3.0.2": { 331 + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" 332 + }, 333 + "@ungap/structured-clone@1.2.0": { 334 + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" 335 + }, 336 + "a-sync-waterfall@1.0.1": { 337 + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" 338 + }, 339 + "acorn-jsx@5.3.2_acorn@8.11.3": { 340 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 341 + "dependencies": [ 342 + "acorn" 343 + ] 344 + }, 345 + "acorn@8.11.3": { 346 + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" 347 + }, 348 + "ansi-regex@5.0.1": { 349 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 350 + }, 351 + "ansi-regex@6.0.1": { 352 + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" 353 + }, 354 + "ansi-styles@4.3.0": { 355 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 356 + "dependencies": [ 357 + "color-convert" 358 + ] 359 + }, 360 + "ansi-styles@6.2.1": { 361 + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" 362 + }, 363 + "any-promise@1.3.0": { 364 + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" 365 + }, 366 + "anymatch@3.1.3": { 367 + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 368 + "dependencies": [ 369 + "normalize-path", 370 + "picomatch" 371 + ] 372 + }, 373 + "arg@5.0.2": { 374 + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" 375 + }, 376 + "argparse@2.0.1": { 377 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 378 + }, 379 + "asap@2.0.6": { 380 + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" 381 + }, 382 + "astring@1.8.6": { 383 + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==" 384 + }, 385 + "autoprefixer@10.4.19_postcss@8.4.38": { 386 + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", 387 + "dependencies": [ 388 + "browserslist", 389 + "caniuse-lite", 390 + "fraction.js", 391 + "normalize-range", 392 + "picocolors", 393 + "postcss", 394 + "postcss-value-parser" 395 + ] 396 + }, 397 + "bail@2.0.2": { 398 + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" 399 + }, 400 + "balanced-match@1.0.2": { 401 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 402 + }, 403 + "binary-extensions@2.3.0": { 404 + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" 405 + }, 406 + "brace-expansion@2.0.1": { 407 + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 408 + "dependencies": [ 409 + "balanced-match" 410 + ] 411 + }, 412 + "braces@3.0.3": { 413 + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 414 + "dependencies": [ 415 + "fill-range" 416 + ] 417 + }, 418 + "browserslist@4.23.0": { 419 + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", 420 + "dependencies": [ 421 + "caniuse-lite", 422 + "electron-to-chromium", 423 + "node-releases", 424 + "update-browserslist-db" 425 + ] 426 + }, 427 + "camelcase-css@2.0.1": { 428 + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" 429 + }, 430 + "caniuse-lite@1.0.30001621": { 431 + "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==" 432 + }, 433 + "ccount@2.0.1": { 434 + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" 435 + }, 436 + "character-entities-html4@2.1.0": { 437 + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" 438 + }, 439 + "character-entities-legacy@3.0.0": { 440 + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" 441 + }, 442 + "character-entities@2.0.2": { 443 + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" 444 + }, 445 + "character-reference-invalid@2.0.1": { 446 + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==" 447 + }, 448 + "chokidar@3.6.0": { 449 + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 450 + "dependencies": [ 451 + "anymatch", 452 + "braces", 453 + "fsevents", 454 + "glob-parent@5.1.2", 455 + "is-binary-path", 456 + "is-glob", 457 + "normalize-path", 458 + "readdirp" 459 + ] 460 + }, 461 + "collapse-white-space@2.1.0": { 462 + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==" 463 + }, 464 + "color-convert@2.0.1": { 465 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 466 + "dependencies": [ 467 + "color-name" 468 + ] 469 + }, 470 + "color-name@1.1.4": { 471 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 472 + }, 473 + "comma-separated-tokens@2.0.3": { 474 + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==" 475 + }, 476 + "commander@4.1.1": { 477 + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" 478 + }, 479 + "commander@5.1.0": { 480 + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" 481 + }, 482 + "cross-spawn@7.0.3": { 483 + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 484 + "dependencies": [ 485 + "path-key", 486 + "shebang-command", 487 + "which" 488 + ] 489 + }, 490 + "cssesc@3.0.0": { 491 + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" 492 + }, 493 + "date-fns@3.6.0": { 494 + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==" 495 + }, 496 + "debug@4.3.4": { 497 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 498 + "dependencies": [ 499 + "ms" 500 + ] 501 + }, 502 + "decode-named-character-reference@1.0.2": { 503 + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", 504 + "dependencies": [ 505 + "character-entities" 506 + ] 507 + }, 508 + "dequal@2.0.3": { 509 + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" 510 + }, 511 + "devlop@1.1.0": { 512 + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", 513 + "dependencies": [ 514 + "dequal" 515 + ] 516 + }, 517 + "didyoumean@1.2.2": { 518 + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" 519 + }, 520 + "dlv@1.1.3": { 521 + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" 522 + }, 523 + "eastasianwidth@0.2.0": { 524 + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" 525 + }, 526 + "electron-to-chromium@1.4.783": { 527 + "integrity": "sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==" 528 + }, 529 + "emoji-regex@8.0.0": { 530 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 531 + }, 532 + "emoji-regex@9.2.2": { 533 + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 534 + }, 535 + "entities@4.5.0": { 536 + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" 537 + }, 538 + "escalade@3.1.2": { 539 + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" 540 + }, 541 + "escape-string-regexp@5.0.0": { 542 + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" 543 + }, 544 + "estree-util-attach-comments@3.0.0": { 545 + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", 546 + "dependencies": [ 547 + "@types/estree" 548 + ] 549 + }, 550 + "estree-util-build-jsx@3.0.1": { 551 + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", 552 + "dependencies": [ 553 + "@types/estree-jsx", 554 + "devlop", 555 + "estree-util-is-identifier-name", 556 + "estree-walker" 557 + ] 558 + }, 559 + "estree-util-is-identifier-name@3.0.0": { 560 + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==" 561 + }, 562 + "estree-util-to-js@2.0.0": { 563 + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", 564 + "dependencies": [ 565 + "@types/estree-jsx", 566 + "astring", 567 + "source-map" 568 + ] 569 + }, 570 + "estree-util-visit@2.0.0": { 571 + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", 572 + "dependencies": [ 573 + "@types/estree-jsx", 574 + "@types/unist@3.0.2" 575 + ] 576 + }, 577 + "estree-walker@3.0.3": { 578 + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 579 + "dependencies": [ 580 + "@types/estree" 581 + ] 582 + }, 583 + "extend@3.0.2": { 584 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 585 + }, 586 + "fast-glob@3.3.2": { 587 + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 588 + "dependencies": [ 589 + "@nodelib/fs.stat", 590 + "@nodelib/fs.walk", 591 + "glob-parent@5.1.2", 592 + "merge2", 593 + "micromatch" 594 + ] 595 + }, 596 + "fastq@1.17.1": { 597 + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 598 + "dependencies": [ 599 + "reusify" 600 + ] 601 + }, 602 + "fill-range@7.1.1": { 603 + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 604 + "dependencies": [ 605 + "to-regex-range" 606 + ] 607 + }, 608 + "foreground-child@3.1.1": { 609 + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", 610 + "dependencies": [ 611 + "cross-spawn", 612 + "signal-exit" 613 + ] 614 + }, 615 + "fraction.js@4.3.7": { 616 + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" 617 + }, 618 + "fsevents@2.3.3": { 619 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" 620 + }, 621 + "function-bind@1.1.2": { 622 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" 623 + }, 624 + "glob-parent@5.1.2": { 625 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 626 + "dependencies": [ 627 + "is-glob" 628 + ] 629 + }, 630 + "glob-parent@6.0.2": { 631 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 632 + "dependencies": [ 633 + "is-glob" 634 + ] 635 + }, 636 + "glob@10.4.1": { 637 + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", 638 + "dependencies": [ 639 + "foreground-child", 640 + "jackspeak", 641 + "minimatch", 642 + "minipass", 643 + "path-scurry" 644 + ] 645 + }, 646 + "hasown@2.0.2": { 647 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 648 + "dependencies": [ 649 + "function-bind" 650 + ] 651 + }, 652 + "hast-util-from-html@2.0.1": { 653 + "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", 654 + "dependencies": [ 655 + "@types/hast@3.0.4", 656 + "devlop", 657 + "hast-util-from-parse5", 658 + "parse5", 659 + "vfile", 660 + "vfile-message" 661 + ] 662 + }, 663 + "hast-util-from-parse5@8.0.1": { 664 + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", 665 + "dependencies": [ 666 + "@types/hast@3.0.4", 667 + "@types/unist@3.0.2", 668 + "devlop", 669 + "hastscript@8.0.0", 670 + "property-information", 671 + "vfile", 672 + "vfile-location", 673 + "web-namespaces" 674 + ] 675 + }, 676 + "hast-util-parse-selector@3.1.1": { 677 + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", 678 + "dependencies": [ 679 + "@types/hast@2.3.10" 680 + ] 681 + }, 682 + "hast-util-parse-selector@4.0.0": { 683 + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", 684 + "dependencies": [ 685 + "@types/hast@3.0.4" 686 + ] 687 + }, 688 + "hast-util-to-estree@3.1.0": { 689 + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", 690 + "dependencies": [ 691 + "@types/estree", 692 + "@types/estree-jsx", 693 + "@types/hast@3.0.4", 694 + "comma-separated-tokens", 695 + "devlop", 696 + "estree-util-attach-comments", 697 + "estree-util-is-identifier-name", 698 + "hast-util-whitespace", 699 + "mdast-util-mdx-expression", 700 + "mdast-util-mdx-jsx", 701 + "mdast-util-mdxjs-esm", 702 + "property-information", 703 + "space-separated-tokens", 704 + "style-to-object@0.4.4", 705 + "unist-util-position", 706 + "zwitch" 707 + ] 708 + }, 709 + "hast-util-to-jsx-runtime@2.3.0": { 710 + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", 711 + "dependencies": [ 712 + "@types/estree", 713 + "@types/hast@3.0.4", 714 + "@types/unist@3.0.2", 715 + "comma-separated-tokens", 716 + "devlop", 717 + "estree-util-is-identifier-name", 718 + "hast-util-whitespace", 719 + "mdast-util-mdx-expression", 720 + "mdast-util-mdx-jsx", 721 + "mdast-util-mdxjs-esm", 722 + "property-information", 723 + "space-separated-tokens", 724 + "style-to-object@1.0.6", 725 + "unist-util-position", 726 + "vfile-message" 727 + ] 728 + }, 729 + "hast-util-to-string@3.0.0": { 730 + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", 731 + "dependencies": [ 732 + "@types/hast@3.0.4" 733 + ] 734 + }, 735 + "hast-util-whitespace@3.0.0": { 736 + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", 737 + "dependencies": [ 738 + "@types/hast@3.0.4" 739 + ] 740 + }, 741 + "hastscript@7.2.0": { 742 + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", 743 + "dependencies": [ 744 + "@types/hast@2.3.10", 745 + "comma-separated-tokens", 746 + "hast-util-parse-selector@3.1.1", 747 + "property-information", 748 + "space-separated-tokens" 749 + ] 750 + }, 751 + "hastscript@8.0.0": { 752 + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", 753 + "dependencies": [ 754 + "@types/hast@3.0.4", 755 + "comma-separated-tokens", 756 + "hast-util-parse-selector@4.0.0", 757 + "property-information", 758 + "space-separated-tokens" 759 + ] 760 + }, 761 + "hls.js@1.5.8": { 762 + "integrity": "sha512-hJYMPfLhWO7/7+n4f9pn6bOheCGx0WgvVz7k3ouq3Pp1bja48NN+HeCQu3XCGYzqWQF/wo7Sk6dJAyWVJD8ECA==" 763 + }, 764 + "inline-style-parser@0.1.1": { 765 + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" 766 + }, 767 + "inline-style-parser@0.2.3": { 768 + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" 769 + }, 770 + "is-alphabetical@2.0.1": { 771 + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==" 772 + }, 773 + "is-alphanumerical@2.0.1": { 774 + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", 775 + "dependencies": [ 776 + "is-alphabetical", 777 + "is-decimal" 778 + ] 779 + }, 780 + "is-binary-path@2.1.0": { 781 + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 782 + "dependencies": [ 783 + "binary-extensions" 784 + ] 785 + }, 786 + "is-core-module@2.13.1": { 787 + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", 788 + "dependencies": [ 789 + "hasown" 790 + ] 791 + }, 792 + "is-decimal@2.0.1": { 793 + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==" 794 + }, 795 + "is-extglob@2.1.1": { 796 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 797 + }, 798 + "is-fullwidth-code-point@3.0.0": { 799 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 800 + }, 801 + "is-glob@4.0.3": { 802 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 803 + "dependencies": [ 804 + "is-extglob" 805 + ] 806 + }, 807 + "is-hexadecimal@2.0.1": { 808 + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" 809 + }, 810 + "is-number@7.0.0": { 811 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 812 + }, 813 + "is-plain-obj@4.1.0": { 814 + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" 815 + }, 816 + "is-reference@3.0.2": { 817 + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", 818 + "dependencies": [ 819 + "@types/estree" 820 + ] 821 + }, 822 + "isexe@2.0.0": { 823 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 824 + }, 825 + "jackspeak@3.1.2": { 826 + "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", 827 + "dependencies": [ 828 + "@isaacs/cliui", 829 + "@pkgjs/parseargs" 830 + ] 831 + }, 832 + "jiti@1.21.0": { 833 + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" 834 + }, 835 + "js-sha256@0.11.0": { 836 + "integrity": "sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==" 837 + }, 838 + "js-tokens@4.0.0": { 839 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 840 + }, 841 + "jsbi@4.3.0": { 842 + "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==" 843 + }, 844 + "lilconfig@2.1.0": { 845 + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" 846 + }, 847 + "lilconfig@3.1.1": { 848 + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==" 849 + }, 850 + "lines-and-columns@1.2.4": { 851 + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 852 + }, 853 + "linkify-it@5.0.0": { 854 + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", 855 + "dependencies": [ 856 + "uc.micro" 857 + ] 858 + }, 859 + "lodash.castarray@4.4.0": { 860 + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" 861 + }, 862 + "lodash.isplainobject@4.0.6": { 863 + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 864 + }, 865 + "lodash.merge@4.6.2": { 866 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 867 + }, 868 + "longest-streak@3.1.0": { 869 + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==" 870 + }, 871 + "loose-envify@1.4.0": { 872 + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 873 + "dependencies": [ 874 + "js-tokens" 875 + ] 876 + }, 877 + "lru-cache@10.2.2": { 878 + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==" 879 + }, 880 + "lucide-react@0.397.0_react@18.3.1": { 881 + "integrity": "sha512-rUcbRY5jFP/4za/OJvaRUUmdPsPb940Tw9zE1ehrRZmr9JnkDcW8OV3POR3XfEAAMDkssiTc5IWBFv8Y//pkDQ==", 882 + "dependencies": [ 883 + "react" 884 + ] 885 + }, 886 + "markdown-extensions@2.0.0": { 887 + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==" 888 + }, 889 + "markdown-it-attrs@4.1.6_markdown-it@14.1.0": { 890 + "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", 891 + "dependencies": [ 892 + "markdown-it" 893 + ] 894 + }, 895 + "markdown-it-deflist@3.0.0": { 896 + "integrity": "sha512-OxPmQ/keJZwbubjiQWOvKLHwpV2wZ5I3Smc81OjhwbfJsjdRrvD5aLTQxmZzzePeO0kbGzAo3Krk4QLgA8PWLg==" 897 + }, 898 + "markdown-it@14.1.0": { 899 + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", 900 + "dependencies": [ 901 + "argparse", 902 + "entities", 903 + "linkify-it", 904 + "mdurl", 905 + "punycode.js", 906 + "uc.micro" 907 + ] 908 + }, 909 + "markdown-table@3.0.3": { 910 + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==" 911 + }, 912 + "mdast-util-find-and-replace@3.0.1": { 913 + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", 914 + "dependencies": [ 915 + "@types/mdast", 916 + "escape-string-regexp", 917 + "unist-util-is", 918 + "unist-util-visit-parents" 919 + ] 920 + }, 921 + "mdast-util-from-markdown@2.0.0": { 922 + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", 923 + "dependencies": [ 924 + "@types/mdast", 925 + "@types/unist@3.0.2", 926 + "decode-named-character-reference", 927 + "devlop", 928 + "mdast-util-to-string", 929 + "micromark", 930 + "micromark-util-decode-numeric-character-reference", 931 + "micromark-util-decode-string", 932 + "micromark-util-normalize-identifier", 933 + "micromark-util-symbol", 934 + "micromark-util-types", 935 + "unist-util-stringify-position" 936 + ] 937 + }, 938 + "mdast-util-gfm-autolink-literal@2.0.0": { 939 + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", 940 + "dependencies": [ 941 + "@types/mdast", 942 + "ccount", 943 + "devlop", 944 + "mdast-util-find-and-replace", 945 + "micromark-util-character" 946 + ] 947 + }, 948 + "mdast-util-gfm-footnote@2.0.0": { 949 + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", 950 + "dependencies": [ 951 + "@types/mdast", 952 + "devlop", 953 + "mdast-util-from-markdown", 954 + "mdast-util-to-markdown", 955 + "micromark-util-normalize-identifier" 956 + ] 957 + }, 958 + "mdast-util-gfm-strikethrough@2.0.0": { 959 + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", 960 + "dependencies": [ 961 + "@types/mdast", 962 + "mdast-util-from-markdown", 963 + "mdast-util-to-markdown" 964 + ] 965 + }, 966 + "mdast-util-gfm-table@2.0.0": { 967 + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", 968 + "dependencies": [ 969 + "@types/mdast", 970 + "devlop", 971 + "markdown-table", 972 + "mdast-util-from-markdown", 973 + "mdast-util-to-markdown" 974 + ] 975 + }, 976 + "mdast-util-gfm-task-list-item@2.0.0": { 977 + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", 978 + "dependencies": [ 979 + "@types/mdast", 980 + "devlop", 981 + "mdast-util-from-markdown", 982 + "mdast-util-to-markdown" 983 + ] 984 + }, 985 + "mdast-util-gfm@3.0.0": { 986 + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", 987 + "dependencies": [ 988 + "mdast-util-from-markdown", 989 + "mdast-util-gfm-autolink-literal", 990 + "mdast-util-gfm-footnote", 991 + "mdast-util-gfm-strikethrough", 992 + "mdast-util-gfm-table", 993 + "mdast-util-gfm-task-list-item", 994 + "mdast-util-to-markdown" 995 + ] 996 + }, 997 + "mdast-util-mdx-expression@2.0.0": { 998 + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", 999 + "dependencies": [ 1000 + "@types/estree-jsx", 1001 + "@types/hast@3.0.4", 1002 + "@types/mdast", 1003 + "devlop", 1004 + "mdast-util-from-markdown", 1005 + "mdast-util-to-markdown" 1006 + ] 1007 + }, 1008 + "mdast-util-mdx-jsx@3.1.2": { 1009 + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", 1010 + "dependencies": [ 1011 + "@types/estree-jsx", 1012 + "@types/hast@3.0.4", 1013 + "@types/mdast", 1014 + "@types/unist@3.0.2", 1015 + "ccount", 1016 + "devlop", 1017 + "mdast-util-from-markdown", 1018 + "mdast-util-to-markdown", 1019 + "parse-entities", 1020 + "stringify-entities", 1021 + "unist-util-remove-position", 1022 + "unist-util-stringify-position", 1023 + "vfile-message" 1024 + ] 1025 + }, 1026 + "mdast-util-mdx@3.0.0": { 1027 + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", 1028 + "dependencies": [ 1029 + "mdast-util-from-markdown", 1030 + "mdast-util-mdx-expression", 1031 + "mdast-util-mdx-jsx", 1032 + "mdast-util-mdxjs-esm", 1033 + "mdast-util-to-markdown" 1034 + ] 1035 + }, 1036 + "mdast-util-mdxjs-esm@2.0.1": { 1037 + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", 1038 + "dependencies": [ 1039 + "@types/estree-jsx", 1040 + "@types/hast@3.0.4", 1041 + "@types/mdast", 1042 + "devlop", 1043 + "mdast-util-from-markdown", 1044 + "mdast-util-to-markdown" 1045 + ] 1046 + }, 1047 + "mdast-util-phrasing@4.1.0": { 1048 + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", 1049 + "dependencies": [ 1050 + "@types/mdast", 1051 + "unist-util-is" 1052 + ] 1053 + }, 1054 + "mdast-util-to-hast@13.1.0": { 1055 + "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", 1056 + "dependencies": [ 1057 + "@types/hast@3.0.4", 1058 + "@types/mdast", 1059 + "@ungap/structured-clone", 1060 + "devlop", 1061 + "micromark-util-sanitize-uri", 1062 + "trim-lines", 1063 + "unist-util-position", 1064 + "unist-util-visit", 1065 + "vfile" 1066 + ] 1067 + }, 1068 + "mdast-util-to-markdown@2.1.0": { 1069 + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", 1070 + "dependencies": [ 1071 + "@types/mdast", 1072 + "@types/unist@3.0.2", 1073 + "longest-streak", 1074 + "mdast-util-phrasing", 1075 + "mdast-util-to-string", 1076 + "micromark-util-decode-string", 1077 + "unist-util-visit", 1078 + "zwitch" 1079 + ] 1080 + }, 1081 + "mdast-util-to-string@4.0.0": { 1082 + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", 1083 + "dependencies": [ 1084 + "@types/mdast" 1085 + ] 1086 + }, 1087 + "mdurl@2.0.0": { 1088 + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" 1089 + }, 1090 + "merge2@1.4.1": { 1091 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 1092 + }, 1093 + "meriyah@4.4.0": { 1094 + "integrity": "sha512-loEeDY1+BXyAlTsksyoqv0mtEAA6Tb9xTxq/Qo/J8CxR6Ap81Q/Dej4S6XWX1OFTQJZ/zILPHnvULB+gjtTs8A==" 1095 + }, 1096 + "micromark-core-commonmark@2.0.1": { 1097 + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", 1098 + "dependencies": [ 1099 + "decode-named-character-reference", 1100 + "devlop", 1101 + "micromark-factory-destination", 1102 + "micromark-factory-label", 1103 + "micromark-factory-space", 1104 + "micromark-factory-title", 1105 + "micromark-factory-whitespace", 1106 + "micromark-util-character", 1107 + "micromark-util-chunked", 1108 + "micromark-util-classify-character", 1109 + "micromark-util-html-tag-name", 1110 + "micromark-util-normalize-identifier", 1111 + "micromark-util-resolve-all", 1112 + "micromark-util-subtokenize", 1113 + "micromark-util-symbol", 1114 + "micromark-util-types" 1115 + ] 1116 + }, 1117 + "micromark-extension-gfm-autolink-literal@2.0.0": { 1118 + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", 1119 + "dependencies": [ 1120 + "micromark-util-character", 1121 + "micromark-util-sanitize-uri", 1122 + "micromark-util-symbol", 1123 + "micromark-util-types" 1124 + ] 1125 + }, 1126 + "micromark-extension-gfm-footnote@2.0.0": { 1127 + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", 1128 + "dependencies": [ 1129 + "devlop", 1130 + "micromark-core-commonmark", 1131 + "micromark-factory-space", 1132 + "micromark-util-character", 1133 + "micromark-util-normalize-identifier", 1134 + "micromark-util-sanitize-uri", 1135 + "micromark-util-symbol", 1136 + "micromark-util-types" 1137 + ] 1138 + }, 1139 + "micromark-extension-gfm-strikethrough@2.0.0": { 1140 + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", 1141 + "dependencies": [ 1142 + "devlop", 1143 + "micromark-util-chunked", 1144 + "micromark-util-classify-character", 1145 + "micromark-util-resolve-all", 1146 + "micromark-util-symbol", 1147 + "micromark-util-types" 1148 + ] 1149 + }, 1150 + "micromark-extension-gfm-table@2.0.0": { 1151 + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", 1152 + "dependencies": [ 1153 + "devlop", 1154 + "micromark-factory-space", 1155 + "micromark-util-character", 1156 + "micromark-util-symbol", 1157 + "micromark-util-types" 1158 + ] 1159 + }, 1160 + "micromark-extension-gfm-tagfilter@2.0.0": { 1161 + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", 1162 + "dependencies": [ 1163 + "micromark-util-types" 1164 + ] 1165 + }, 1166 + "micromark-extension-gfm-task-list-item@2.0.1": { 1167 + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", 1168 + "dependencies": [ 1169 + "devlop", 1170 + "micromark-factory-space", 1171 + "micromark-util-character", 1172 + "micromark-util-symbol", 1173 + "micromark-util-types" 1174 + ] 1175 + }, 1176 + "micromark-extension-gfm@3.0.0": { 1177 + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", 1178 + "dependencies": [ 1179 + "micromark-extension-gfm-autolink-literal", 1180 + "micromark-extension-gfm-footnote", 1181 + "micromark-extension-gfm-strikethrough", 1182 + "micromark-extension-gfm-table", 1183 + "micromark-extension-gfm-tagfilter", 1184 + "micromark-extension-gfm-task-list-item", 1185 + "micromark-util-combine-extensions", 1186 + "micromark-util-types" 1187 + ] 1188 + }, 1189 + "micromark-extension-mdx-expression@3.0.0": { 1190 + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", 1191 + "dependencies": [ 1192 + "@types/estree", 1193 + "devlop", 1194 + "micromark-factory-mdx-expression", 1195 + "micromark-factory-space", 1196 + "micromark-util-character", 1197 + "micromark-util-events-to-acorn", 1198 + "micromark-util-symbol", 1199 + "micromark-util-types" 1200 + ] 1201 + }, 1202 + "micromark-extension-mdx-jsx@3.0.0": { 1203 + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", 1204 + "dependencies": [ 1205 + "@types/acorn", 1206 + "@types/estree", 1207 + "devlop", 1208 + "estree-util-is-identifier-name", 1209 + "micromark-factory-mdx-expression", 1210 + "micromark-factory-space", 1211 + "micromark-util-character", 1212 + "micromark-util-symbol", 1213 + "micromark-util-types", 1214 + "vfile-message" 1215 + ] 1216 + }, 1217 + "micromark-extension-mdx-md@2.0.0": { 1218 + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", 1219 + "dependencies": [ 1220 + "micromark-util-types" 1221 + ] 1222 + }, 1223 + "micromark-extension-mdxjs-esm@3.0.0": { 1224 + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", 1225 + "dependencies": [ 1226 + "@types/estree", 1227 + "devlop", 1228 + "micromark-core-commonmark", 1229 + "micromark-util-character", 1230 + "micromark-util-events-to-acorn", 1231 + "micromark-util-symbol", 1232 + "micromark-util-types", 1233 + "unist-util-position-from-estree", 1234 + "vfile-message" 1235 + ] 1236 + }, 1237 + "micromark-extension-mdxjs@3.0.0_acorn@8.11.3": { 1238 + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", 1239 + "dependencies": [ 1240 + "acorn", 1241 + "acorn-jsx", 1242 + "micromark-extension-mdx-expression", 1243 + "micromark-extension-mdx-jsx", 1244 + "micromark-extension-mdx-md", 1245 + "micromark-extension-mdxjs-esm", 1246 + "micromark-util-combine-extensions", 1247 + "micromark-util-types" 1248 + ] 1249 + }, 1250 + "micromark-factory-destination@2.0.0": { 1251 + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", 1252 + "dependencies": [ 1253 + "micromark-util-character", 1254 + "micromark-util-symbol", 1255 + "micromark-util-types" 1256 + ] 1257 + }, 1258 + "micromark-factory-label@2.0.0": { 1259 + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", 1260 + "dependencies": [ 1261 + "devlop", 1262 + "micromark-util-character", 1263 + "micromark-util-symbol", 1264 + "micromark-util-types" 1265 + ] 1266 + }, 1267 + "micromark-factory-mdx-expression@2.0.1": { 1268 + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", 1269 + "dependencies": [ 1270 + "@types/estree", 1271 + "devlop", 1272 + "micromark-util-character", 1273 + "micromark-util-events-to-acorn", 1274 + "micromark-util-symbol", 1275 + "micromark-util-types", 1276 + "unist-util-position-from-estree", 1277 + "vfile-message" 1278 + ] 1279 + }, 1280 + "micromark-factory-space@2.0.0": { 1281 + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", 1282 + "dependencies": [ 1283 + "micromark-util-character", 1284 + "micromark-util-types" 1285 + ] 1286 + }, 1287 + "micromark-factory-title@2.0.0": { 1288 + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", 1289 + "dependencies": [ 1290 + "micromark-factory-space", 1291 + "micromark-util-character", 1292 + "micromark-util-symbol", 1293 + "micromark-util-types" 1294 + ] 1295 + }, 1296 + "micromark-factory-whitespace@2.0.0": { 1297 + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", 1298 + "dependencies": [ 1299 + "micromark-factory-space", 1300 + "micromark-util-character", 1301 + "micromark-util-symbol", 1302 + "micromark-util-types" 1303 + ] 1304 + }, 1305 + "micromark-util-character@2.1.0": { 1306 + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", 1307 + "dependencies": [ 1308 + "micromark-util-symbol", 1309 + "micromark-util-types" 1310 + ] 1311 + }, 1312 + "micromark-util-chunked@2.0.0": { 1313 + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", 1314 + "dependencies": [ 1315 + "micromark-util-symbol" 1316 + ] 1317 + }, 1318 + "micromark-util-classify-character@2.0.0": { 1319 + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", 1320 + "dependencies": [ 1321 + "micromark-util-character", 1322 + "micromark-util-symbol", 1323 + "micromark-util-types" 1324 + ] 1325 + }, 1326 + "micromark-util-combine-extensions@2.0.0": { 1327 + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", 1328 + "dependencies": [ 1329 + "micromark-util-chunked", 1330 + "micromark-util-types" 1331 + ] 1332 + }, 1333 + "micromark-util-decode-numeric-character-reference@2.0.1": { 1334 + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", 1335 + "dependencies": [ 1336 + "micromark-util-symbol" 1337 + ] 1338 + }, 1339 + "micromark-util-decode-string@2.0.0": { 1340 + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", 1341 + "dependencies": [ 1342 + "decode-named-character-reference", 1343 + "micromark-util-character", 1344 + "micromark-util-decode-numeric-character-reference", 1345 + "micromark-util-symbol" 1346 + ] 1347 + }, 1348 + "micromark-util-encode@2.0.0": { 1349 + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==" 1350 + }, 1351 + "micromark-util-events-to-acorn@2.0.2": { 1352 + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", 1353 + "dependencies": [ 1354 + "@types/acorn", 1355 + "@types/estree", 1356 + "@types/unist@3.0.2", 1357 + "devlop", 1358 + "estree-util-visit", 1359 + "micromark-util-symbol", 1360 + "micromark-util-types", 1361 + "vfile-message" 1362 + ] 1363 + }, 1364 + "micromark-util-html-tag-name@2.0.0": { 1365 + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==" 1366 + }, 1367 + "micromark-util-normalize-identifier@2.0.0": { 1368 + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", 1369 + "dependencies": [ 1370 + "micromark-util-symbol" 1371 + ] 1372 + }, 1373 + "micromark-util-resolve-all@2.0.0": { 1374 + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", 1375 + "dependencies": [ 1376 + "micromark-util-types" 1377 + ] 1378 + }, 1379 + "micromark-util-sanitize-uri@2.0.0": { 1380 + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", 1381 + "dependencies": [ 1382 + "micromark-util-character", 1383 + "micromark-util-encode", 1384 + "micromark-util-symbol" 1385 + ] 1386 + }, 1387 + "micromark-util-subtokenize@2.0.1": { 1388 + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", 1389 + "dependencies": [ 1390 + "devlop", 1391 + "micromark-util-chunked", 1392 + "micromark-util-symbol", 1393 + "micromark-util-types" 1394 + ] 1395 + }, 1396 + "micromark-util-symbol@2.0.0": { 1397 + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==" 1398 + }, 1399 + "micromark-util-types@2.0.0": { 1400 + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==" 1401 + }, 1402 + "micromark@4.0.0": { 1403 + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", 1404 + "dependencies": [ 1405 + "@types/debug", 1406 + "debug", 1407 + "decode-named-character-reference", 1408 + "devlop", 1409 + "micromark-core-commonmark", 1410 + "micromark-factory-space", 1411 + "micromark-util-character", 1412 + "micromark-util-chunked", 1413 + "micromark-util-combine-extensions", 1414 + "micromark-util-decode-numeric-character-reference", 1415 + "micromark-util-encode", 1416 + "micromark-util-normalize-identifier", 1417 + "micromark-util-resolve-all", 1418 + "micromark-util-sanitize-uri", 1419 + "micromark-util-subtokenize", 1420 + "micromark-util-symbol", 1421 + "micromark-util-types" 1422 + ] 1423 + }, 1424 + "micromatch@4.0.7": { 1425 + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 1426 + "dependencies": [ 1427 + "braces", 1428 + "picomatch" 1429 + ] 1430 + }, 1431 + "mini-svg-data-uri@1.4.4": { 1432 + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==" 1433 + }, 1434 + "minimatch@9.0.4": { 1435 + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", 1436 + "dependencies": [ 1437 + "brace-expansion" 1438 + ] 1439 + }, 1440 + "minipass@7.1.2": { 1441 + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" 1442 + }, 1443 + "ms@2.1.2": { 1444 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1445 + }, 1446 + "mz@2.7.0": { 1447 + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 1448 + "dependencies": [ 1449 + "any-promise", 1450 + "object-assign", 1451 + "thenify-all" 1452 + ] 1453 + }, 1454 + "nanoid@3.3.7": { 1455 + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" 1456 + }, 1457 + "node-releases@2.0.14": { 1458 + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" 1459 + }, 1460 + "normalize-path@3.0.0": { 1461 + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1462 + }, 1463 + "normalize-range@0.1.2": { 1464 + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" 1465 + }, 1466 + "nunjucks@3.2.4": { 1467 + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", 1468 + "dependencies": [ 1469 + "a-sync-waterfall", 1470 + "asap", 1471 + "commander@5.1.0" 1472 + ] 1473 + }, 1474 + "object-assign@4.1.1": { 1475 + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1476 + }, 1477 + "object-hash@3.0.0": { 1478 + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" 1479 + }, 1480 + "parse-entities@4.0.1": { 1481 + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", 1482 + "dependencies": [ 1483 + "@types/unist@2.0.10", 1484 + "character-entities", 1485 + "character-entities-legacy", 1486 + "character-reference-invalid", 1487 + "decode-named-character-reference", 1488 + "is-alphanumerical", 1489 + "is-decimal", 1490 + "is-hexadecimal" 1491 + ] 1492 + }, 1493 + "parse-numeric-range@1.3.0": { 1494 + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" 1495 + }, 1496 + "parse5@7.1.2": { 1497 + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", 1498 + "dependencies": [ 1499 + "entities" 1500 + ] 1501 + }, 1502 + "path-key@3.1.1": { 1503 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 1504 + }, 1505 + "path-parse@1.0.7": { 1506 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1507 + }, 1508 + "path-scurry@1.11.1": { 1509 + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1510 + "dependencies": [ 1511 + "lru-cache", 1512 + "minipass" 1513 + ] 1514 + }, 1515 + "periscopic@3.1.0": { 1516 + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", 1517 + "dependencies": [ 1518 + "@types/estree", 1519 + "estree-walker", 1520 + "is-reference" 1521 + ] 1522 + }, 1523 + "picocolors@1.0.1": { 1524 + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" 1525 + }, 1526 + "picomatch@2.3.1": { 1527 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1528 + }, 1529 + "pify@2.3.0": { 1530 + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" 1531 + }, 1532 + "pirates@4.0.6": { 1533 + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" 1534 + }, 1535 + "postcss-import@15.1.0_postcss@8.4.38": { 1536 + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", 1537 + "dependencies": [ 1538 + "postcss", 1539 + "postcss-value-parser", 1540 + "read-cache", 1541 + "resolve" 1542 + ] 1543 + }, 1544 + "postcss-import@16.1.0_postcss@8.4.38": { 1545 + "integrity": "sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==", 1546 + "dependencies": [ 1547 + "postcss", 1548 + "postcss-value-parser", 1549 + "read-cache", 1550 + "resolve" 1551 + ] 1552 + }, 1553 + "postcss-js@4.0.1_postcss@8.4.38": { 1554 + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", 1555 + "dependencies": [ 1556 + "camelcase-css", 1557 + "postcss" 1558 + ] 1559 + }, 1560 + "postcss-load-config@4.0.2_postcss@8.4.38": { 1561 + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", 1562 + "dependencies": [ 1563 + "lilconfig@3.1.1", 1564 + "postcss", 1565 + "yaml" 1566 + ] 1567 + }, 1568 + "postcss-nested@6.0.1_postcss@8.4.38": { 1569 + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", 1570 + "dependencies": [ 1571 + "postcss", 1572 + "postcss-selector-parser@6.1.0" 1573 + ] 1574 + }, 1575 + "postcss-selector-parser@6.0.10": { 1576 + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 1577 + "dependencies": [ 1578 + "cssesc", 1579 + "util-deprecate" 1580 + ] 1581 + }, 1582 + "postcss-selector-parser@6.1.0": { 1583 + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", 1584 + "dependencies": [ 1585 + "cssesc", 1586 + "util-deprecate" 1587 + ] 1588 + }, 1589 + "postcss-value-parser@4.2.0": { 1590 + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" 1591 + }, 1592 + "postcss@8.4.38": { 1593 + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", 1594 + "dependencies": [ 1595 + "nanoid", 1596 + "picocolors", 1597 + "source-map-js" 1598 + ] 1599 + }, 1600 + "preact-render-to-string@6.4.2_preact@10.22.0": { 1601 + "integrity": "sha512-Sio5SvlyZSAXHuvnMgYzVQd67lNIuQe4uSjJ+2gfpJNC6L8zoHQR5xV7B/EjIqrAYWVyJ2eACkTCxVrIzZi6Vw==", 1602 + "dependencies": [ 1603 + "preact", 1604 + "pretty-format" 1605 + ] 1606 + }, 1607 + "preact@10.22.0": { 1608 + "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==" 1609 + }, 1610 + "pretty-format@3.8.0": { 1611 + "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==" 1612 + }, 1613 + "property-information@6.5.0": { 1614 + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==" 1615 + }, 1616 + "punycode.js@2.3.1": { 1617 + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==" 1618 + }, 1619 + "queue-microtask@1.2.3": { 1620 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 1621 + }, 1622 + "react@18.3.1": { 1623 + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", 1624 + "dependencies": [ 1625 + "loose-envify" 1626 + ] 1627 + }, 1628 + "read-cache@1.0.0": { 1629 + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 1630 + "dependencies": [ 1631 + "pify" 1632 + ] 1633 + }, 1634 + "readdirp@3.6.0": { 1635 + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1636 + "dependencies": [ 1637 + "picomatch" 1638 + ] 1639 + }, 1640 + "refractor@4.8.1": { 1641 + "integrity": "sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==", 1642 + "dependencies": [ 1643 + "@types/hast@2.3.10", 1644 + "@types/prismjs", 1645 + "hastscript@7.2.0", 1646 + "parse-entities" 1647 + ] 1648 + }, 1649 + "rehype-parse@9.0.0": { 1650 + "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", 1651 + "dependencies": [ 1652 + "@types/hast@3.0.4", 1653 + "hast-util-from-html", 1654 + "unified" 1655 + ] 1656 + }, 1657 + "rehype-prism-plus@2.0.0": { 1658 + "integrity": "sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==", 1659 + "dependencies": [ 1660 + "hast-util-to-string", 1661 + "parse-numeric-range", 1662 + "refractor", 1663 + "rehype-parse", 1664 + "unist-util-filter", 1665 + "unist-util-visit" 1666 + ] 1667 + }, 1668 + "remark-gfm@4.0.0": { 1669 + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", 1670 + "dependencies": [ 1671 + "@types/mdast", 1672 + "mdast-util-gfm", 1673 + "micromark-extension-gfm", 1674 + "remark-parse", 1675 + "remark-stringify", 1676 + "unified" 1677 + ] 1678 + }, 1679 + "remark-mdx@3.0.1": { 1680 + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", 1681 + "dependencies": [ 1682 + "mdast-util-mdx", 1683 + "micromark-extension-mdxjs" 1684 + ] 1685 + }, 1686 + "remark-parse@11.0.0": { 1687 + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", 1688 + "dependencies": [ 1689 + "@types/mdast", 1690 + "mdast-util-from-markdown", 1691 + "micromark-util-types", 1692 + "unified" 1693 + ] 1694 + }, 1695 + "remark-rehype@11.1.0": { 1696 + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", 1697 + "dependencies": [ 1698 + "@types/hast@3.0.4", 1699 + "@types/mdast", 1700 + "mdast-util-to-hast", 1701 + "unified", 1702 + "vfile" 1703 + ] 1704 + }, 1705 + "remark-stringify@11.0.0": { 1706 + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", 1707 + "dependencies": [ 1708 + "@types/mdast", 1709 + "mdast-util-to-markdown", 1710 + "unified" 1711 + ] 1712 + }, 1713 + "resolve@1.22.8": { 1714 + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 1715 + "dependencies": [ 1716 + "is-core-module", 1717 + "path-parse", 1718 + "supports-preserve-symlinks-flag" 1719 + ] 1720 + }, 1721 + "reusify@1.0.4": { 1722 + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 1723 + }, 1724 + "run-parallel@1.2.0": { 1725 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1726 + "dependencies": [ 1727 + "queue-microtask" 1728 + ] 1729 + }, 1730 + "shebang-command@2.0.0": { 1731 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1732 + "dependencies": [ 1733 + "shebang-regex" 1734 + ] 1735 + }, 1736 + "shebang-regex@3.0.0": { 1737 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 1738 + }, 1739 + "signal-exit@4.1.0": { 1740 + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" 1741 + }, 1742 + "source-map-js@1.2.0": { 1743 + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" 1744 + }, 1745 + "source-map@0.7.4": { 1746 + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" 1747 + }, 1748 + "space-separated-tokens@2.0.2": { 1749 + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==" 1750 + }, 1751 + "string-width@4.2.3": { 1752 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1753 + "dependencies": [ 1754 + "emoji-regex@8.0.0", 1755 + "is-fullwidth-code-point", 1756 + "strip-ansi@6.0.1" 1757 + ] 1758 + }, 1759 + "string-width@5.1.2": { 1760 + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1761 + "dependencies": [ 1762 + "eastasianwidth", 1763 + "emoji-regex@9.2.2", 1764 + "strip-ansi@7.1.0" 1765 + ] 1766 + }, 1767 + "stringify-entities@4.0.4": { 1768 + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", 1769 + "dependencies": [ 1770 + "character-entities-html4", 1771 + "character-entities-legacy" 1772 + ] 1773 + }, 1774 + "strip-ansi@6.0.1": { 1775 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1776 + "dependencies": [ 1777 + "ansi-regex@5.0.1" 1778 + ] 1779 + }, 1780 + "strip-ansi@7.1.0": { 1781 + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 1782 + "dependencies": [ 1783 + "ansi-regex@6.0.1" 1784 + ] 1785 + }, 1786 + "style-to-object@0.4.4": { 1787 + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", 1788 + "dependencies": [ 1789 + "inline-style-parser@0.1.1" 1790 + ] 1791 + }, 1792 + "style-to-object@1.0.6": { 1793 + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", 1794 + "dependencies": [ 1795 + "inline-style-parser@0.2.3" 1796 + ] 1797 + }, 1798 + "sucrase@3.35.0": { 1799 + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 1800 + "dependencies": [ 1801 + "@jridgewell/gen-mapping", 1802 + "commander@4.1.1", 1803 + "glob", 1804 + "lines-and-columns", 1805 + "mz", 1806 + "pirates", 1807 + "ts-interface-checker" 1808 + ] 1809 + }, 1810 + "supports-preserve-symlinks-flag@1.0.0": { 1811 + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" 1812 + }, 1813 + "tailwindcss@3.4.3_postcss@8.4.38": { 1814 + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", 1815 + "dependencies": [ 1816 + "@alloc/quick-lru", 1817 + "arg", 1818 + "chokidar", 1819 + "didyoumean", 1820 + "dlv", 1821 + "fast-glob", 1822 + "glob-parent@6.0.2", 1823 + "is-glob", 1824 + "jiti", 1825 + "lilconfig@2.1.0", 1826 + "micromatch", 1827 + "normalize-path", 1828 + "object-hash", 1829 + "picocolors", 1830 + "postcss", 1831 + "postcss-import@15.1.0_postcss@8.4.38", 1832 + "postcss-js", 1833 + "postcss-load-config", 1834 + "postcss-nested", 1835 + "postcss-selector-parser@6.1.0", 1836 + "resolve", 1837 + "sucrase" 1838 + ] 1839 + }, 1840 + "thenify-all@1.6.0": { 1841 + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 1842 + "dependencies": [ 1843 + "thenify" 1844 + ] 1845 + }, 1846 + "thenify@3.3.1": { 1847 + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 1848 + "dependencies": [ 1849 + "any-promise" 1850 + ] 1851 + }, 1852 + "to-regex-range@5.0.1": { 1853 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1854 + "dependencies": [ 1855 + "is-number" 1856 + ] 1857 + }, 1858 + "trim-lines@3.0.1": { 1859 + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" 1860 + }, 1861 + "trough@2.2.0": { 1862 + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==" 1863 + }, 1864 + "ts-interface-checker@0.1.13": { 1865 + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" 1866 + }, 1867 + "tslib@2.6.2": { 1868 + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" 1869 + }, 1870 + "uc.micro@2.1.0": { 1871 + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" 1872 + }, 1873 + "unified@11.0.4": { 1874 + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", 1875 + "dependencies": [ 1876 + "@types/unist@3.0.2", 1877 + "bail", 1878 + "devlop", 1879 + "extend", 1880 + "is-plain-obj", 1881 + "trough", 1882 + "vfile" 1883 + ] 1884 + }, 1885 + "unist-util-filter@5.0.1": { 1886 + "integrity": "sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==", 1887 + "dependencies": [ 1888 + "@types/unist@3.0.2", 1889 + "unist-util-is", 1890 + "unist-util-visit-parents" 1891 + ] 1892 + }, 1893 + "unist-util-is@6.0.0": { 1894 + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", 1895 + "dependencies": [ 1896 + "@types/unist@3.0.2" 1897 + ] 1898 + }, 1899 + "unist-util-position-from-estree@2.0.0": { 1900 + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", 1901 + "dependencies": [ 1902 + "@types/unist@3.0.2" 1903 + ] 1904 + }, 1905 + "unist-util-position@5.0.0": { 1906 + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", 1907 + "dependencies": [ 1908 + "@types/unist@3.0.2" 1909 + ] 1910 + }, 1911 + "unist-util-remove-position@5.0.0": { 1912 + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", 1913 + "dependencies": [ 1914 + "@types/unist@3.0.2", 1915 + "unist-util-visit" 1916 + ] 1917 + }, 1918 + "unist-util-stringify-position@4.0.0": { 1919 + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", 1920 + "dependencies": [ 1921 + "@types/unist@3.0.2" 1922 + ] 1923 + }, 1924 + "unist-util-visit-parents@6.0.1": { 1925 + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", 1926 + "dependencies": [ 1927 + "@types/unist@3.0.2", 1928 + "unist-util-is" 1929 + ] 1930 + }, 1931 + "unist-util-visit@5.0.0": { 1932 + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", 1933 + "dependencies": [ 1934 + "@types/unist@3.0.2", 1935 + "unist-util-is", 1936 + "unist-util-visit-parents" 1937 + ] 1938 + }, 1939 + "update-browserslist-db@1.0.16_browserslist@4.23.0": { 1940 + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", 1941 + "dependencies": [ 1942 + "browserslist", 1943 + "escalade", 1944 + "picocolors" 1945 + ] 1946 + }, 1947 + "util-deprecate@1.0.2": { 1948 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1949 + }, 1950 + "vfile-location@5.0.2": { 1951 + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", 1952 + "dependencies": [ 1953 + "@types/unist@3.0.2", 1954 + "vfile" 1955 + ] 1956 + }, 1957 + "vfile-message@4.0.2": { 1958 + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", 1959 + "dependencies": [ 1960 + "@types/unist@3.0.2", 1961 + "unist-util-stringify-position" 1962 + ] 1963 + }, 1964 + "vfile@6.0.1": { 1965 + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", 1966 + "dependencies": [ 1967 + "@types/unist@3.0.2", 1968 + "unist-util-stringify-position", 1969 + "vfile-message" 1970 + ] 1971 + }, 1972 + "web-namespaces@2.0.1": { 1973 + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==" 1974 + }, 1975 + "which@2.0.2": { 1976 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1977 + "dependencies": [ 1978 + "isexe" 1979 + ] 1980 + }, 1981 + "wrap-ansi@7.0.0": { 1982 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1983 + "dependencies": [ 1984 + "ansi-styles@4.3.0", 1985 + "string-width@4.2.3", 1986 + "strip-ansi@6.0.1" 1987 + ] 1988 + }, 1989 + "wrap-ansi@8.1.0": { 1990 + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 1991 + "dependencies": [ 1992 + "ansi-styles@6.2.1", 1993 + "string-width@5.1.2", 1994 + "strip-ansi@7.1.0" 1995 + ] 1996 + }, 1997 + "yaml@2.4.2": { 1998 + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==" 1999 + }, 2000 + "zwitch@2.0.4": { 2001 + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==" 2131 2002 } 2132 2003 }, 2133 2004 "redirects": { ··· 2354 2225 "https://deno.land/x/lume@v2.2.0/core/fs.ts": "28adb1bc12e8d4005a1d7a2ff44a6e1d1e805e1d70262299876f6e7343959018", 2355 2226 "https://deno.land/x/lume@v2.2.0/core/loaders/binary.ts": "bb1e1cf3faac49f6007dc6814168dc0f633da17356db18e68862e4b2a87a3f33", 2356 2227 "https://deno.land/x/lume@v2.2.0/core/loaders/json.ts": "632e840340edf7d79091fb37474a1cbf86dd2d218090fb6f6c0420f5f5e9c2ce", 2228 + "https://deno.land/x/lume@v2.2.0/core/loaders/mod.ts": "148404b9a9112361918177fcec1456e3e1ccc59baa3812043b6b3dffebbd958d", 2357 2229 "https://deno.land/x/lume@v2.2.0/core/loaders/module.ts": "abcb210fa6724b83407407cd0f7ef90462b35a2017bc135a3d124dd7f38843f6", 2358 2230 "https://deno.land/x/lume@v2.2.0/core/loaders/text.ts": "42860fc3482651fa6cfba18a734bb548d6e6e1163bf1015c2abc447ab150acbd", 2359 2231 "https://deno.land/x/lume@v2.2.0/core/loaders/toml.ts": "72ddfef2deea62815c28e27faa2c5356e09b3109e9547e47a6defea3d3332452",
+206
lume/src/blog/2024/hello-again-k8s.mdx
··· 1 + --- 2 + title: "Hello again, Kubernetes" 3 + desc: "Yeah, yeah, we know; freight train to mail a letter, etc." 4 + date: 2024-11-09 5 + hero: 6 + ai: "Photo by Xe Iaso, Canon EOS R6 mk ii, slightly broken vintage lens" 7 + file: "woodchips" 8 + prompt: "A bunch of woodchips spread along a path." 9 + social: false 10 + series: site-update 11 + tags: 12 + - kubernetes 13 + - infra 14 + - crimes 15 + - civo 16 + --- 17 + 18 + [Previously on Xesite](/blog/k8s-pondering-2020-12-31/): 19 + 20 + > I think I made a mistake when I decided to put my cards into Kubernetes for my personal setup. It made sense at the time (I was trying to learn Kubernetes and I am cursed into learning by doing), however I don't think it is really the best choice available for my needs. 21 + > 22 + > [...] 23 + > 24 + > My Kubernetes setup is a money pit. I want to prioritize cost reduction as much as possible. 25 + 26 + So after a few years of switching between a Hetzner dedi running NixOS and Docker images on Fly.io, I'm crawling back to Kubernetes for hosting my website. I'm not gonna lie, it will look like massive overkill from the outset, but consider this: Kubernetes is standard at this point. It's the boring, pragmatic choice. 27 + 28 + <Conv name="Cadey" mood="coffee"> 29 + Plus, every massive infrastructure crime and the inevitable ways they go 30 + horribly wrong only really serves to create more "how I thought I was doing 31 + something good but actually really fucked everything up" posts that y'all seem 32 + to like. Win/win. I get to play with fun things, you get to read about why I 33 + thought something would work, how it actually works, and how you make things 34 + meet in the middle. 35 + </Conv> 36 + 37 + I've had a really good experience with Kubernetes in my homelab, and I feel confident enough in my understanding of it to move my most important, most used, most valuable to me service over to a Kubernetes cluster. I changed it over a few days ago without telling anyone (and deploying anything, just in case). Nothing went wrong in the initial testing, so I feel comfortable enough to talk about it now. 38 + 39 + ## Aeacus 40 + 41 + Hi from the cluster Aeacus! My website is running on a managed k3s cluster via [Civo](https://www.civo.com/). The cluster is named after one of the space elevators in an RPG where a guy found a monolith in Kenya, realized it was functionally an infinite battery, made a massive mistake, and then ended up making Welsh catgirls real (among other things). 42 + 43 + If/when I end up making other Kubernetes clusters in the cloud, they'll probably be named Rhadamanthus and Minos (the names of the other space elevators in said world with Welsh catgirls). 44 + 45 + Originally I was going to go with [Vultr](https://www.vultr.com/), but then I did some math on the egress of my website vs the amount of bandwidth I'd get for the cluster and started to raise some eyebrows. I don't do _terrifying_ amounts of egress bandwidth, but sometimes I have months where I'm way more popular than other months and those "good" months would push me over the edge. 46 + 47 + I also got a warning from a friend that Vultr vastly oversubscribes their CPU cores, so you get very, very high levels of CPU steal. Most of the time, my CPU cores are either idle or very close to idle; but when I do a build for my website in prod, the entire website blocks until it's done. 48 + 49 + This is not good for availability. 50 + 51 + <Conv name="Cadey" mood="coffee"> 52 + When I spun up a test cluster on Vultr, I did notice that the k3s nodes they 53 + were using were based on Ubuntu 22.04 instead of 24.04. I get that 24.04 is 54 + kinda new and they haven't moved things over yet, but it was kind of a smell 55 + that something might be up. 56 + </Conv> 57 + 58 + I'm gonna admit, I hadn't heard of Civo cloud until someone in the Kubernetes homelab Discord told me about them, but there's one key thing [in their pricing](https://www.civo.com/pricing) that made me really consider them: 59 + 60 + > At Civo, data transfer is completely free and unlimited - we do not charge for egress or ingress at all. Allowing you to move data freely between Civo and other platforms without any costs or limitations. No caveats, No fineprint. No surprise bills. 61 + 62 + This is basically the entire thing that sold me. I've been really happy with Civo. I haven't had a need to rely on their customer support yet, but I'll report back should I need to. 63 + 64 + Worst case, it's all just Kubernetes, I can [set up a new cluster](/notes/2024/essential-k8s/) and move everything over without too much risk. 65 + 66 + That being said, here's a short list of things that in a perfect world I wish I could either control, influence, or otherwise have power over: 67 + 68 + - I wish I could change the default cluster DNS name to `aeacus.xeserv.us` so that way the DNS names can be globally unique, enabling me to cross-cluster interconnect it with my homelab and potentially other clusters as my cloud needs expand. 69 + - I wish I could change the CIDR ranges for the Pod and Service network ranges so that they don't collide with the CIDR ranges for my homelab cluster. Maybe this is what 4via6 style routing is for? 70 + - I tried their Talos cluster option first but wasn't able to get HTTPS routing working, changing over to the k3s cluster option fixed everything. I'm not sure what's going on, will need to work with their community Slack to try and diagnose it further. 71 + - Civo is IPv4 only. I get why this is (IPv6 kinda sucks from a user education and systems administration standpoint), but I wish I had native dual-stack support on my cluster. 72 + 73 + And here's a few things I learned about my setup in particular that aren't related to Civo cloud, but worth pointing out: 74 + 75 + - I tried to set up a service to point to both my homelab and Civo via [external-dns](https://kubernetes-sigs.github.io/external-dns/v0.15.0/), but it turns out [external-dns doesn't support this kind of round-robin DNS configuration with multiple clusters](https://github.com/kubernetes-sigs/external-dns/issues/1441) and the issue tracking it has been through four generations of stalebot autoclosing the issue. I get why things like stalebot exist, but good god is it a pox on the industry. 76 + - With my homelab, I have Flannel as the Container Networking Interface (CNI). Vultr had Calico. Civo has Cillium. I realize that as far as I care it shouldn't matter that each of these clusters have different CNI implementations, I'm probably gonna have to take some action towards standardizing them in my setup. Might move the homelab over to Cillium or something. I don't know. 77 + 78 + Either way, I moved over [pronouns.within.lgbt](https://pronouns.within.lgbt) to proof-of-concept the cluster beyond a [hello world](https://hello.aeacus.xeserv.us/) test deployment. That worked fine. 79 + 80 + To be sure that things worked, I employed the industry standard "scream test" procedure where you do something that could break, test it to hell on your end, and see if anyone screams about it being down. Coincidentally, a friend was looking through it during the breaking part of the migration (despite my efforts to minimize the breakage) and noticed the downtime. They let me know immediately. I was so close to pulling it off without a hitch. 81 + 82 + ## xesite and its infrastructure consequences have been a disaster for my wildest dreams of digital minimalism 83 + 84 + Like any good abomination, my website has a fair number of moving parts, most of them are things that you don't see. Here's what the infrastructure of my website looks like: 85 + 86 + <Picture 87 + path="blog/2024/hello-again-k8s/after-civo" 88 + desc="A diagram showing how Xesite, Mi, Mimi, patreon-saasproxy, and a bunch of web services work together." 89 + /> 90 + 91 + This looks like a lot, and frankly, it is a lot. Most of this functionality is optional and degrades cleanly too. By default, when I change anything on GitHub (or someone subscribes/unsubscribes on Patreon), I get a webhook that triggers the site to rebuild. The rebuild will trigger fetching data from Patreon, which may trigger fetching an updated token from `patreon-saasproxy`. Once the build is done, a request to announce new posts will be made to Mi. Mi will syndicate any new posts out to Bluesky, Mastodon, Discord, and IRC. 92 + 93 + <Conv name="Mara" mood="hacker"> 94 + The pattern of publishing on your own site and then announcing those posts out 95 + elsewhere is known as [POSSE](https://indieweb.org/POSSE) (Publish On your 96 + Site, Syndicate Elsewhere). It's a pretty neat pattern! 97 + </Conv> 98 + 99 + This, sadly, is an idealized diagram of the world I wish I could have. Here's what the real state of the world looks like: 100 + 101 + <Picture 102 + path="blog/2024/hello-again-k8s/after-civo" 103 + desc="A diagram showing how Xesite relies on patreon-saasproxy hosted on fly.io." 104 + /> 105 + 106 + I have `patreon-saasproxy` still hosted on fly.io. I'm not sure why the version on Aeacus doesn't work, but trying to use it makes it throw an error that I really don't expect to see: 107 + 108 + ```json 109 + { 110 + "time": "2024-11-09T09:12:17.76177-05:00", 111 + "level": "ERROR", 112 + "source": { 113 + "function": "main.main", 114 + "file": "/app/cmd/xesite/main.go", 115 + "line": 54 116 + }, 117 + "msg": "can't create patreon client", 118 + "err": "The server could not verify that you are authorized to access the URL requested. You either supplied the wrong credentials (e.g. a bad password), or your browser doesn't understand how to supply the credentials required." 119 + } 120 + ``` 121 + 122 + I'm gonna need to figure out what's going on later, but I can live with this for now. I connect back to Fly.io using their WireGuard setup with a little sprinkle of userspace WireGuard. It works well enough for my needs. 123 + 124 + ### Xesite over Tor 125 + 126 + In the process of moving things over, I found out that there's [a Tor hidden service operator](https://github.com/bugfest/tor-controller) for Kubernetes. This is really neat and lets me set up a mirror of this website on the darkweb. If you want or need to access my blog over Tor, you can use [gi3bsuc5ci2dr4xbh5b3kja5c6p5zk226ymgszzx7ngmjpc25tmnhaqd.onion](http://gi3bsuc5ci2dr4xbh5b3kja5c6p5zk226ymgszzx7ngmjpc25tmnhaqd.onion/) to do that. You'll be connected directly over Tor. 127 + 128 + I configured this as a non-anonymous hidden service using a setup like this: 129 + 130 + ```yaml 131 + apiVersion: tor.k8s.torproject.org/v1alpha2 132 + kind: OnionService 133 + metadata: 134 + name: xesite 135 + spec: 136 + version: 3 137 + extraConfig: | 138 + HiddenServiceNonAnonymousMode 1 139 + HiddenServiceSingleHopMode 1 140 + rules: 141 + - port: 142 + number: 80 143 + backend: 144 + service: 145 + name: xesite 146 + port: 147 + number: 80 148 + ``` 149 + 150 + This creates an OnionService set up to point directly to the backend that runs this website. Doing this bypasses the request logging that the nginx ingress controller does. I do not log requests made over Tor unless you somehow manage to get one of the things you're requesting to throw an error, even then I'll only log details about the error so I can investigate them later. 151 + 152 + If you're already connected with the Tor browser, you may have noticed the ".onion available" in your address bar. This is because I added a middleware for adding the [`Onion-Location`](https://community.torproject.org/onion-services/advanced/onion-location/) header to every request. The Tor browser listens for this header and will alert you to it. 153 + 154 + I'm not sure how the Tor hidden service will mesh with the ads with Ethical Ads, but I'd imagine that looking at my website over Tor would functionally disable them. 155 + 156 + ### I killed the zipfile 157 + 158 + One of the most controversial things about my website's design is that everything was served out of a `.zip` file full of gzip streams. This was originally done so that I could implement a fastpath hack to serve gzip compressed streams to people directly. This would save a bunch of bandwidth, make things load faster, save christmas from the incoming elf army, etc. 159 + 160 + <Conv name="Cadey" mood="coffee"> 161 + Guess what I never implemented. 162 + </Conv> 163 + 164 + This zipfile strategy worked, for the most part. One of the biggest ways this didn't pan out is that I didn't support [HTTP Range requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests). Normally this isn't an issue, but Slack, LinkedIn, and other web services use them when doing a request to a page to unfurl links posted by users. 165 + 166 + This has been a [known issue](/blog/2024/fixing-rss-mailcap) for a while, but I decided to just fix it forever by making the website serve itself from the generated directory instead of using the zipfile in the line of serving things. I still use the zipfile for [the preview site](/blog/2024/overengineering-preview-site/) (I'm okay with that thing's functionality being weird), but yeah, it's gone. 167 + 168 + If I ever migrate my website to use CI to build the website instead of having prod build it on-demand, I'll likely use the zipfile as a way to ship around the website files. 169 + 170 + ### Crimes with file storage 171 + 172 + Like any good Xe project, I had to commit _some_ crimes somewhere, right? This time I implemented them at the storage layer. My website works by maintaining a git clone of its own repository and then running builds out of it. This is how I'm able to push updates to GitHub and then have it go live in less than a minute. 173 + 174 + The main problem with this is that it can make cold start times long. Very long. Long enough that Kubernetes will think that the website isn't in a cromulent state and then slay it off before it can run the first build. I fixed this by making the readiness check run every 5 seconds for 5 minutes, but I realized there was a way I could do it better: I can cache the website checkout on the underlying node's filesystem. 175 + 176 + So I use a [`hostPath` volume](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath) to do this: 177 + 178 + ```yaml 179 + - name: data 180 + hostPath: 181 + path: /data/xesite 182 + type: DirectoryOrCreate 183 + ``` 184 + 185 + <Conv name="Aoi" mood="wut"> 186 + Isn't this a very bad idea? 187 + 188 + > Using the hostPath volume type presents many security risks. If you can avoid using a hostPath volume, you should. For example, define a local PersistentVolume, and use that instead. 189 + 190 + Shouldn't you use a [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) instead? 191 + 192 + </Conv> 193 + 194 + Normally, yes. This is a bad idea. However, a PersistentVolumeClaim doesn't really work for this due to how the [Civo native Container Storage Interface](https://www.civo.com/docs/kubernetes/kubernetes-volumes) works. They only support the [ReadWriteOnce](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes) access mode, which would mean that I can only have my website running on one Kubernetes node at once. I'd like my website to be more nomadic between nodes, so I need to make it a ReadWriteMany mount so that the same folder can be used on different nodes. 195 + 196 + I'll figure out a better solution eventually, but for now I can get away with just stashing the data in `/data/xesite` on the raw node filesystems and it'll be fine. My website doesn't grow at a rate where this would be a practical issue, and should this turn out to actually be a problem I can always reprovision my nodes as needed. 197 + 198 + ## Declaring success 199 + 200 + I'm pretty sure that this is way more than good enough for now. This should be more than enough for the next few years of infrastructure needs. Worst case though, it's just Kubernetes. I can move it anywhere else that has Kubernetes without too much fuss. 201 + 202 + I'd like to make the Deno cache mounted in [Tigris](https://tigrisdata.com) or something using [csi-s3](https://github.com/yandex-cloud/k8s-csi-s3), but that's not a priority right now. This would only help with cold start latency, and to be honest the cold start latency right now is fine. Not the most ideal, but fine. 203 + 204 + Everything else is just a matter of implementation more than anything at this point. 205 + 206 + Hope this look behind the scenes was interesting! I put this level of thought and care into things so that you don't have to care about how things work.
+5
manifest/kustomization.yaml
··· 1 + resources: 2 + #- patreon-saasproxy 3 + - xesite 4 + 5 + namespace: default
+6
manifest/patreon-saasproxy/1password.yaml
··· 1 + apiVersion: onepassword.com/v1 2 + kind: OnePasswordItem 3 + metadata: 4 + name: xesite-patreon-saasproxy-creds 5 + spec: 6 + itemPath: "vaults/lc5zo4zjz3if3mkeuhufjmgmui/items/itllcfv5jd7qg34zmlnilbzqsa"
+45
manifest/patreon-saasproxy/deployment.yaml
··· 1 + apiVersion: apps/v1 2 + kind: Deployment 3 + metadata: 4 + name: patreon-saasproxy 5 + spec: 6 + selector: 7 + matchLabels: 8 + app.kubernetes.io/name: patreon-saasproxy 9 + template: 10 + metadata: 11 + labels: 12 + app.kubernetes.io/name: patreon-saasproxy 13 + spec: 14 + serviceAccountName: xesite-patreon-saasproxy 15 + containers: 16 + - name: web 17 + image: ghcr.io/xe/site/patreon:latest 18 + imagePullPolicy: Always 19 + resources: 20 + limits: 21 + memory: "128Mi" 22 + cpu: "500m" 23 + env: 24 + - name: "BIND" 25 + value: ":8080" 26 + - name: "KUBERNETES_NAMESPACE" 27 + valueFrom: 28 + fieldRef: 29 + fieldPath: "metadata.namespace" 30 + - name: KUBERNETES_SECRET_NAME 31 + value: "xesite-patreon-saasproxy-state" 32 + envFrom: 33 + - secretRef: 34 + name: xesite-patreon-saasproxy-creds 35 + ports: 36 + - containerPort: 8080 37 + livenessProbe: 38 + httpGet: 39 + path: /healthz 40 + port: 8080 41 + httpHeaders: 42 + - name: X-Kubernetes 43 + value: "Is alright, I guess" 44 + initialDelaySeconds: 3 45 + periodSeconds: 3
+10
manifest/patreon-saasproxy/kustomization.yaml
··· 1 + resources: 2 + - 1password.yaml 3 + - deployment.yaml 4 + - rbac.yaml 5 + - service.yaml 6 + 7 + namespace: default 8 + 9 + commonLabels: 10 + app.kubernetes.io/name: patreon-saasproxy
+30
manifest/patreon-saasproxy/rbac.yaml
··· 1 + apiVersion: rbac.authorization.k8s.io/v1 2 + kind: Role 3 + metadata: 4 + namespace: default 5 + name: xesite-patreon-saasproxy-secret-mutation 6 + rules: 7 + - apiGroups: [""] 8 + resources: ["secrets"] 9 + resourceNames: ["xesite-patreon-saasproxy-state"] 10 + verbs: ["get", "update", "list"] 11 + --- 12 + apiVersion: v1 13 + kind: ServiceAccount 14 + metadata: 15 + name: xesite-patreon-saasproxy 16 + namespace: default 17 + --- 18 + kind: RoleBinding 19 + apiVersion: rbac.authorization.k8s.io/v1 20 + metadata: 21 + name: xesite-patreon-saasproxy 22 + namespace: default 23 + subjects: 24 + - kind: ServiceAccount 25 + name: xesite-patreon-saasproxy 26 + namespace: default 27 + roleRef: 28 + kind: Role 29 + name: xesite-patreon-saasproxy-secret-mutation 30 + apiGroup: rbac.authorization.k8s.io
+14
manifest/patreon-saasproxy/service.yaml
··· 1 + apiVersion: v1 2 + kind: Service 3 + metadata: 4 + name: patreon-saasproxy 5 + labels: 6 + app.kubernetes.io/name: patreon-saasproxy 7 + spec: 8 + selector: 9 + app.kubernetes.io/name: patreon-saasproxy 10 + ports: 11 + - port: 80 12 + targetPort: 8080 13 + protocol: TCP 14 + name: http
+6
manifest/xesite/1password.yaml
··· 1 + apiVersion: onepassword.com/v1 2 + kind: OnePasswordItem 3 + metadata: 4 + name: xesite 5 + spec: 6 + itemPath: "vaults/lc5zo4zjz3if3mkeuhufjmgmui/items/ry2arlgm66sbms3po5s5tbuace"
+13
manifest/xesite/cache-pvc.yaml
··· 1 + apiVersion: v1 2 + kind: PersistentVolumeClaim 3 + metadata: 4 + name: xesite-cache 5 + spec: 6 + storageClassName: tigris 7 + resources: 8 + requests: 9 + storage: 40Gi 10 + volumeMode: Filesystem 11 + accessModes: 12 + - ReadWriteOnce 13 + - ReadWriteMany
+70
manifest/xesite/deployment.yaml
··· 1 + apiVersion: apps/v1 2 + kind: Deployment 3 + metadata: 4 + name: xesite 5 + spec: 6 + selector: 7 + matchLabels: 8 + app.kubernetes.io/name: xesite 9 + template: 10 + metadata: 11 + labels: 12 + app.kubernetes.io/name: xesite 13 + spec: 14 + volumes: 15 + - name: cache 16 + persistentVolumeClaim: 17 + claimName: xesite-cache 18 + - name: data 19 + hostPath: 20 + path: /data/xesite 21 + type: DirectoryOrCreate 22 + containers: 23 + - name: web 24 + image: ghcr.io/xe/site/bin:latest 25 + imagePullPolicy: Always 26 + env: 27 + - name: "BIND" 28 + value: ":3000" 29 + - name: "INTERNAL_API_BIND" 30 + value: ":3001" 31 + - name: "DATA_DIR" 32 + value: "/xe/data" 33 + - name: "SITE_URL" 34 + value: "https://xeiaso.net" 35 + - name: "ONION_DOMAIN" 36 + value: "gi3bsuc5ci2dr4xbh5b3kja5c6p5zk226ymgszzx7ngmjpc25tmnhaqd.onion" 37 + - name: "REDIRECT_DOMAIN" 38 + value: "xeiaso.net" 39 + - name: "PATREON_SAASPROXY_URL" 40 + value: "http://xesite-patreon-saasproxy.default.svc" 41 + envFrom: 42 + - secretRef: 43 + name: xesite 44 + ports: 45 + - containerPort: 3000 46 + name: http 47 + volumeMounts: 48 + - mountPath: "/xe/data" 49 + name: data 50 + #- mountPath: "/root/.cache" 51 + # name: cache 52 + readinessProbe: 53 + httpGet: 54 + path: /healthz 55 + port: 3001 56 + httpHeaders: 57 + - name: X-Kubernetes 58 + value: "Is alright, I guess" 59 + initialDelaySeconds: 60 60 + periodSeconds: 5 61 + failureThreshold: 69 62 + livenessProbe: 63 + httpGet: 64 + path: /healthz 65 + port: 3001 66 + httpHeaders: 67 + - name: X-Kubernetes 68 + value: "Is alright, I guess" 69 + initialDelaySeconds: 30 70 + periodSeconds: 30
+35
manifest/xesite/ingress.yaml
··· 1 + apiVersion: networking.k8s.io/v1 2 + kind: Ingress 3 + metadata: 4 + name: xesite 5 + annotations: 6 + cert-manager.io/cluster-issuer: "letsencrypt-prod" 7 + nginx.ingress.kubernetes.io/ssl-redirect: "true" 8 + spec: 9 + ingressClassName: nginx 10 + tls: 11 + - hosts: 12 + - xeiaso.net 13 + - christine.website 14 + secretName: xeiaso-net-tls 15 + rules: 16 + - host: christine.website 17 + http: 18 + paths: 19 + - path: / 20 + pathType: Prefix 21 + backend: 22 + service: 23 + name: xesite 24 + port: 25 + number: 80 26 + - host: xeiaso.net 27 + http: 28 + paths: 29 + - path: / 30 + pathType: Prefix 31 + backend: 32 + service: 33 + name: xesite 34 + port: 35 + number: 80
+9
manifest/xesite/kustomization.yaml
··· 1 + resources: 2 + - 1password.yaml 3 + - cache-pvc.yaml 4 + - deployment.yaml 5 + - ingress.yaml 6 + - machineproxy.yaml 7 + - onionservice.yaml 8 + - pod-disruption-budget.yaml 9 + - service.yaml
+9
manifest/xesite/machineproxy.yaml
··· 1 + apiVersion: glaceon.friendshipcastle.zip/v1alpha1 2 + kind: MachineProxy 3 + metadata: 4 + name: xesite-patreon-saasproxy 5 + spec: 6 + org: personal 7 + region: sjc 8 + target: http://xesite-patreon-saasproxy.flycast 9 + port: 80
+17
manifest/xesite/onionservice.yaml
··· 1 + apiVersion: tor.k8s.torproject.org/v1alpha2 2 + kind: OnionService 3 + metadata: 4 + name: xesite 5 + spec: 6 + version: 3 7 + extraConfig: | 8 + HiddenServiceNonAnonymousMode 1 9 + HiddenServiceSingleHopMode 1 10 + rules: 11 + - port: 12 + number: 80 13 + backend: 14 + service: 15 + name: xesite 16 + port: 17 + number: 80
+9
manifest/xesite/pod-disruption-budget.yaml
··· 1 + apiVersion: policy/v1 2 + kind: PodDisruptionBudget 3 + metadata: 4 + name: xesite 5 + spec: 6 + minAvailable: 1 7 + selector: 8 + matchLabels: 9 + app.kubernetes.io/name: xesite
+18
manifest/xesite/service.yaml
··· 1 + apiVersion: v1 2 + kind: Service 3 + metadata: 4 + name: xesite 5 + labels: 6 + app.kubernetes.io/name: xesite 7 + spec: 8 + selector: 9 + app.kubernetes.io/name: xesite 10 + ports: 11 + - port: 80 12 + targetPort: 3000 13 + protocol: TCP 14 + name: http 15 + - port: 8080 16 + targetPort: 3001 17 + protocol: TCP 18 + name: internalapi