├── .gitignore
├── Makefile
├── README.md
├── backend
├── .Dockerignore
├── Dockerfile
├── Dockerfile-ci
├── api
│ ├── api.go
│ └── routes.go
├── cache
│ └── cache.go
├── db
│ ├── db.go
│ ├── mongo.go
│ └── schemas.go
├── go.mod
├── go.sum
├── main.go
└── security
│ ├── encrypt.go
│ └── hash.go
└── frontend
├── .babelrc
├── .gitignore
├── package.json
├── public
└── favicon.png
├── src
├── components
│ ├── Common
│ │ ├── Button.js
│ │ ├── Input.js
│ │ └── mixins.js
│ ├── Err.js
│ ├── Footer.js
│ ├── Inputs
│ │ ├── Code.js
│ │ ├── Dropdown.js
│ │ ├── Password.js
│ │ ├── Text.js
│ │ └── index.js
│ ├── NextHead.js
│ ├── Options.js
│ ├── PasteInfo.js
│ ├── Watermark.js
│ ├── decorators
│ │ ├── CharLimit.js
│ │ └── Labelled.js
│ ├── modals
│ │ ├── PasswordModal.js
│ │ ├── PasteModal.js
│ │ └── shared.js
│ └── renderers
│ │ ├── Code.js
│ │ ├── InlineCode.js
│ │ ├── Latex.js
│ │ ├── Markdown.js
│ │ └── RenderDispatch.js
├── http
│ ├── resolvePaste.js
│ └── shared.js
├── pages
│ ├── [hash].js
│ ├── _app.js
│ ├── _document.js
│ ├── index.js
│ └── raw
│ │ └── [hash].js
└── theme
│ ├── GlobalStyle.js
│ └── ThemeProvider.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | backend/.env
2 | .idea
3 | .DS_Store
4 |
5 | frontend/node_modules
6 | frontend/build
7 | frontend/.pnp
8 | frontend/.next
9 | .pnp.js
10 |
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | .DEFAULT_GOAL := help
2 |
3 | help: ## Show all Makefile targets
4 | @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
5 |
6 | run: ## Start backend
7 | cd backend && go run .
8 | lint: ## Lint backend
9 | cd backend && golangci-lint run
10 | docker-build: ## Docker build backend
11 | docker build -t ctrl-v:latest ./backend
12 | docker-run: docker-build ## Start dockerized backend
13 | docker run -p 8080:8080 ctrl-v:latest
14 |
15 | fe-run: ## Start Frontend
16 | cd frontend && yarn start
17 | fe-build: ## Productionize Frontend
18 | cd frontend && yarn build
19 | dev: ## Start backend and frontend
20 | make -j 2 run fe-run
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ctrl-v
2 | ### A modern, open-source pastebin with latex and markdown rendering support
3 | Frontend is in React + Next.js and backend is in Go. Deployed via Vercel and Google Cloud Run.
4 |
5 | 
6 | 
7 | 
8 | 
9 |
10 | ## Public API
11 | The ctrl-v API is provided for free for other developers to easily develop on top of it. It can be reached at `https://api.ctrl-v.app/`.
12 |
13 | ### `GET /health`
14 | ```bash
15 | # get the health of the API
16 | curl https://api.ctrl-v.app/health
17 |
18 | # 200 OK
19 | # > "status ok"
20 | ```
21 |
22 | ### `POST /api`
23 | ```bash
24 | # create a new paste
25 | curl -L -X POST 'https://api.ctrl-v.app/api' \
26 | -F 'expiry=2021-03-09T01:02:43.082Z' \
27 | -F 'content=print(\"test content\")' \
28 | -F 'title=test paste' \
29 | -F 'language=python'
30 |
31 | # or with a password
32 | curl -L -X POST 'https://api.ctrl-v.app/api' \
33 | -F 'expiry=2021-03-09T01:02:43.082Z' \
34 | -F 'content=print(\"test content\")' \
35 | -F 'title=test paste' \
36 | -F 'language=python' \
37 | -F 'password=hunter2'
38 |
39 | # 200 OK
40 | # > { "hash": "6Z7NVVv" }
41 |
42 | # 400 BAD_REQUEST
43 | # happens when title/body is too long, password couldnt
44 | # be hashed, or expiry is not in RFC3339 format
45 | ```
46 | ### `GET /api/{hash}`
47 | ```bash
48 | # get unprotected hash
49 | curl https://api.ctrl-v.app/api/1t9UybX
50 |
51 | # 200 OK
52 | # > {
53 | # > "content": "print(\"test content\")",
54 | # > "expiry": "2021-03-09T01:02:43.082Z",
55 | # > "language": "python",
56 | # > "timestamp": "2021-03-02T01:06:16.209501971Z",
57 | # > "title": "test paste"
58 | # > }
59 |
60 | # 401 BAD_REQUEST
61 | # happens when paste is password protected. when this happens, try the authenticated alternative using POST
62 | # 404 NOT_FOUND
63 | # no paste with that ID found
64 | ```
65 |
66 | ### `POST /api/{hash}`
67 | ```bash
68 | # get unprotected hash
69 | curl -L -X POST 'https://api.ctrl-v.app/api/1t9UybX' \
70 | -F 'password=hunter2'
71 |
72 | # 200 OK
73 | # > {
74 | # > "content": "print(\"test content\")",
75 | # > "expiry": "2021-03-09T01:02:43.082Z",
76 | # > "language": "python",
77 | # > "timestamp": "2021-03-02T01:06:16.209501971Z",
78 | # > "title": "test paste"
79 | # > }
80 |
81 | # 401 BAD_REQUEST
82 | # wrong password
83 | # 404 NOT_FOUND
84 | # no paste with that ID found
85 | ```
86 |
87 | ## Developing
88 | when doing local backend development, make sure you change the backend address to be localhost. You can find this on Line 4 of `frontend/src/http/shared.js`
89 |
90 | ### Common
91 | `make dev` — starts React development server on `:3000` and backend on `:8080`
92 |
93 | ### Frontend
94 | `make fe-run` — starts React development server on `:3000`
95 |
96 | `make fe-build` — builds development release of frontend in `frontend/build`
97 |
98 | ### Backend
99 | `make run` — starts backend on `:8080`
100 |
101 | `make lint` — lints all Go files
102 |
103 | `make docker-build` — builds Docker image of current backend
104 |
105 | `make docker-run` — runs built Docker image on `:8080`
--------------------------------------------------------------------------------
/backend/.Dockerignore:
--------------------------------------------------------------------------------
1 | frontend
--------------------------------------------------------------------------------
/backend/Dockerfile:
--------------------------------------------------------------------------------
1 | ## Build stage
2 | FROM golang:alpine AS builder
3 | ENV GO111MODULE=on
4 |
5 | # Copy files to image
6 | COPY . /app/src
7 | WORKDIR /app/src
8 |
9 | RUN apk add git ca-certificates
10 |
11 | # Build image
12 | RUN CGO_ENABLED=0 GOOS=linux go build -o /go/bin/app
13 |
14 | ## Image creation stage
15 | FROM scratch
16 |
17 | # Copy app
18 | COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
19 | COPY --from=builder /go/bin/app ./
20 | COPY .env ./
21 |
22 | # Expose ports, change port to whatever you need to expose
23 | EXPOSE 8080
24 |
25 | # Run app
26 | ENTRYPOINT ["./app"]
--------------------------------------------------------------------------------
/backend/Dockerfile-ci:
--------------------------------------------------------------------------------
1 | FROM golang:alpine AS builder
2 | ENV GO111MODULE=on
3 | COPY . /app/src
4 | WORKDIR /app/src
5 | RUN apk add git ca-certificates
6 | RUN CGO_ENABLED=0 GOOS=linux go build -o /go/bin/app
7 |
8 | FROM scratch
9 | COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
10 | COPY --from=builder /go/bin/app ./
11 | ENTRYPOINT ["./app"]
--------------------------------------------------------------------------------
/backend/api/api.go:
--------------------------------------------------------------------------------
1 | package api
2 |
3 | import (
4 | "context"
5 | "net/http"
6 | "os"
7 | "os/signal"
8 | "strconv"
9 | "syscall"
10 | "time"
11 |
12 | mux "github.com/gorilla/mux"
13 | log "github.com/sirupsen/logrus"
14 | "github.com/jackyzha0/ctrl-v/db"
15 | )
16 |
17 | func cleanup() {
18 | ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
19 | defer cancel()
20 | if err := db.Client.Disconnect(ctx); err != nil {
21 | panic(err)
22 | }
23 | log.Print("Shutting down server...")
24 | }
25 |
26 | // Define router and start server
27 | func Serve(port int) {
28 | // Sigint trapper
29 | c := make(chan os.Signal)
30 | signal.Notify(c, os.Interrupt, syscall.SIGTERM)
31 | go func() {
32 | <-c
33 | cleanup()
34 | os.Exit(0)
35 | }()
36 |
37 | // Define Mux Router
38 | r := mux.NewRouter()
39 | r.HandleFunc("/health", healthCheckFunc)
40 | r.HandleFunc("/api", insertFunc).Methods("POST", "OPTIONS")
41 | r.HandleFunc("/api/{hash}", getPasteFunc).Methods("GET", "OPTIONS")
42 | r.HandleFunc("/api/{hash}", getPasteWithPasswordFunc).Methods("POST", "OPTIONS")
43 |
44 | http.Handle("/", r)
45 |
46 | // Start HTTP server
47 | server := newServer(":"+strconv.Itoa(port), r)
48 | log.Printf("Starting server on %d", port)
49 |
50 | defer cleanup()
51 | err := server.ListenAndServe()
52 | if err != nil {
53 | log.Fatal(err)
54 | }
55 | }
56 |
57 | // Function to create new HTTP server
58 | func newServer(addr string, router http.Handler) *http.Server {
59 | return &http.Server{
60 | Addr: addr,
61 | Handler: router,
62 | ReadTimeout: time.Second * 30,
63 | WriteTimeout: time.Second * 30,
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/backend/api/routes.go:
--------------------------------------------------------------------------------
1 | package api
2 |
3 | import (
4 | "encoding/json"
5 | "fmt"
6 | "net/http"
7 | "time"
8 |
9 | "github.com/jackyzha0/ctrl-v/security"
10 |
11 | "github.com/gorilla/mux"
12 | "github.com/jackyzha0/ctrl-v/cache"
13 | "github.com/jackyzha0/ctrl-v/db"
14 | )
15 |
16 | func healthCheckFunc(w http.ResponseWriter, r *http.Request) {
17 | fmt.Fprint(w, "status ok")
18 | }
19 |
20 | func insertFunc(w http.ResponseWriter, r *http.Request) {
21 |
22 | // Allow CORS
23 | w.Header().Set("Access-Control-Allow-Origin", "*")
24 |
25 | // get content
26 | _ = r.ParseMultipartForm(0)
27 | expiry := r.FormValue("expiry")
28 | content := r.FormValue("content")
29 | title := r.FormValue("title")
30 | password := r.FormValue("password")
31 | lang := r.FormValue("language")
32 |
33 | // insert content
34 | hash, err := db.New(content, expiry, title, password, lang)
35 | if err != nil {
36 | w.WriteHeader(http.StatusBadRequest)
37 | fmt.Fprintf(w, "%s", err.Error())
38 | return
39 | }
40 |
41 | // if successful return paste hash
42 | w.Header().Set("Content-Type", "application/json")
43 | pasteMap := map[string]interface{}{
44 | "hash": hash,
45 | }
46 |
47 | jsonData, _ := json.Marshal(pasteMap)
48 | fmt.Fprintf(w, "%+v", string(jsonData))
49 | }
50 |
51 | func getPasteFunc(w http.ResponseWriter, r *http.Request) {
52 | // no password given for get
53 | handleGetPaste(w, r, "")
54 | }
55 |
56 | func getPasteWithPasswordFunc(w http.ResponseWriter, r *http.Request) {
57 | // get password from form
58 | _ = r.ParseMultipartForm(0)
59 | parsedPassword := r.FormValue("password")
60 |
61 | handleGetPaste(w, r, parsedPassword)
62 |
63 | }
64 |
65 | func handleGetPaste(w http.ResponseWriter, r *http.Request, parsedPassword string) {
66 | // Allow CORS
67 | w.Header().Set("Access-Control-Allow-Origin", "*")
68 |
69 | hash := mux.Vars(r)["hash"]
70 | paste, err := cache.C.Get(hash, parsedPassword)
71 |
72 | // if hash was not found
73 | if err == cache.PasteNotFound {
74 | w.WriteHeader(http.StatusNotFound)
75 | fmt.Fprintf(w, "%s", err)
76 | return
77 | }
78 |
79 | // if paste is password protected
80 | if err == cache.UserUnauthorized {
81 | w.WriteHeader(http.StatusUnauthorized)
82 | fmt.Fprintf(w, "%s", err)
83 | return
84 | }
85 |
86 | // if internal error with encryption
87 | if err == security.EncryptionError {
88 | w.WriteHeader(http.StatusInternalServerError)
89 | fmt.Fprintf(w, "%s", err)
90 | return
91 | }
92 |
93 | // otherwise, return paste content, title, and current time
94 | w.Header().Set("Content-Type", "application/json")
95 | pasteMap := map[string]interface{}{
96 | "timestamp": time.Now(),
97 | "title": paste.Title,
98 | "content": paste.Content,
99 | "expiry": paste.Expiry,
100 | "language": paste.Language,
101 | }
102 |
103 | jsonData, _ := json.Marshal(pasteMap)
104 | fmt.Fprintf(w, "%+v", string(jsonData))
105 | }
106 |
--------------------------------------------------------------------------------
/backend/cache/cache.go:
--------------------------------------------------------------------------------
1 | package cache
2 |
3 | import (
4 | "errors"
5 | "sync"
6 | "time"
7 |
8 | "github.com/jackyzha0/ctrl-v/security"
9 |
10 | "github.com/jackyzha0/ctrl-v/db"
11 | )
12 |
13 | type Cache struct {
14 | m map[string]db.Paste
15 | lock sync.RWMutex
16 | }
17 |
18 | var C *Cache
19 |
20 | var PasteNotFound = errors.New("could not find a paste with that hash")
21 | var UserUnauthorized = errors.New("paste is password protected")
22 |
23 | func init() {
24 | C = &Cache{
25 | m: map[string]db.Paste{},
26 | }
27 | }
28 |
29 | func (c *Cache) Get(hash, userPassword string) (db.Paste, error) {
30 | c.lock.RLock()
31 |
32 | // check if hash in cache
33 | p, ok := c.m[hash]
34 | c.lock.RUnlock()
35 |
36 | // if it doesnt, lookup from db
37 | if !ok {
38 | var err error
39 |
40 | p, err = db.Lookup(hash)
41 | if err != nil {
42 | return db.Paste{}, PasteNotFound
43 | }
44 |
45 | c.add(p)
46 | }
47 |
48 | // check if expired
49 | if time.Now().After(p.Expiry) {
50 | c.evict(p)
51 | return db.Paste{}, PasteNotFound
52 | }
53 |
54 | // if there is a password, check the provided one against it
55 | if p.Password != "" {
56 | // if passwords do not match, the user is unauthorized
57 | if !security.PasswordsEqual(p.Password, userPassword) {
58 | return db.Paste{}, UserUnauthorized
59 | }
60 |
61 | // if password matches, decrypt content
62 | key, _, err := security.DeriveKey(userPassword, p.Salt)
63 | if err != nil {
64 | return db.Paste{}, security.EncryptionError
65 | }
66 |
67 | decryptedContent, err := security.Decrypt(key, p.Content)
68 | if err != nil {
69 | return db.Paste{}, security.EncryptionError
70 | }
71 |
72 | p.Content = decryptedContent
73 | }
74 |
75 | return p, nil
76 | }
77 |
78 | func (c *Cache) add(p db.Paste) {
79 | c.lock.Lock()
80 | defer c.lock.Unlock()
81 |
82 | c.m[p.Hash] = p
83 | }
84 |
85 | func (c *Cache) evict(p db.Paste) {
86 | c.lock.Lock()
87 | defer c.lock.Unlock()
88 |
89 | delete(c.m, p.Hash)
90 | }
91 |
--------------------------------------------------------------------------------
/backend/db/db.go:
--------------------------------------------------------------------------------
1 | package db
2 |
3 | import (
4 | "fmt"
5 | "os"
6 | "time"
7 |
8 | "github.com/jackyzha0/ctrl-v/security"
9 | "github.com/joho/godotenv"
10 | log "github.com/sirupsen/logrus"
11 | )
12 |
13 | func init() {
14 | // load .env file
15 | err := godotenv.Load()
16 | if err != nil {
17 | log.Warnf("Error loading .env file: %s", err.Error())
18 | log.Warn("Falling back on env vars...")
19 | }
20 |
21 | mUser := os.Getenv("MONGO_USER")
22 | mPass := os.Getenv("MONGO_PASS")
23 | mIP := os.Getenv("MONGO_SHARD_URL")
24 |
25 | initSessions(mUser, mPass, mIP)
26 | }
27 |
28 | const TitleLimit = 100
29 | const ContentLimit = 100000
30 |
31 | // creates a new paste with title, content and hash, returns the hash of the created paste
32 | func New(content, expiry, title, password, lang string) (string, error) {
33 | // generate hash from ip
34 | hash := security.GenerateURI(content)
35 |
36 | // check for size of title and content
37 | errs := checkLengths(title, content)
38 | if errs != nil {
39 | return "", errs
40 | }
41 |
42 | // create new struct
43 | new := Paste{
44 | Hash: hash,
45 | Content: content,
46 | Title: title,
47 | Language: lang,
48 | }
49 |
50 | // if there is a password, encrypt content and hash the password
51 | if password != "" {
52 | // use pass to encrypt content
53 | key, salt, err := security.DeriveKey(password, nil)
54 | if err != nil {
55 | return "", fmt.Errorf("could not generate key: %s", err.Error())
56 | }
57 | new.Salt = salt
58 |
59 | encryptedContent, err := security.Encrypt(key, new.Content)
60 | if err != nil {
61 | return "", fmt.Errorf("could not encrypt content: %s", err.Error())
62 | }
63 |
64 | new.Content = encryptedContent
65 |
66 | // hash given password
67 | hashedPass, err := security.HashPassword(password)
68 | if err != nil {
69 | return "", fmt.Errorf("could not hash password: %s", err.Error())
70 | }
71 | new.Password = hashedPass
72 | }
73 |
74 | // check if expiry
75 | if expiry != "" {
76 | t, err := time.Parse(time.RFC3339, expiry)
77 |
78 | // if time format not current
79 | if err != nil {
80 | return "", err
81 | }
82 |
83 | // time is in the past
84 | if time.Now().After(t) {
85 | return "", fmt.Errorf("time %s is in the past", t.String())
86 | }
87 |
88 | new.Expiry = t
89 |
90 | } else {
91 | // 5 year expiry
92 | new.Expiry = time.Now().Add(time.Hour * 43800)
93 | }
94 |
95 | // insert struct
96 | log.Infof("create new paste with hash %s", hash)
97 | insertErr := insert(new)
98 | return hash, insertErr
99 | }
100 |
101 | func checkLengths(title string, content string) error {
102 | if len(title) > TitleLimit {
103 | return fmt.Errorf("title is longer than character limit of %d\n", TitleLimit)
104 | }
105 | if len(content) > ContentLimit {
106 | return fmt.Errorf("content is longer than character limit of %d\n", ContentLimit)
107 | }
108 |
109 | return nil
110 | }
111 |
112 | // lookup
113 | func Lookup(hash string) (Paste, error) {
114 | return fetch(hash)
115 | }
116 |
--------------------------------------------------------------------------------
/backend/db/mongo.go:
--------------------------------------------------------------------------------
1 | package db
2 |
3 | import (
4 | "context"
5 | "crypto/tls"
6 | "fmt"
7 | "time"
8 |
9 | log "github.com/sirupsen/logrus"
10 | "go.mongodb.org/mongo-driver/bson"
11 | "go.mongodb.org/mongo-driver/mongo"
12 | "go.mongodb.org/mongo-driver/mongo/options"
13 | "go.mongodb.org/mongo-driver/mongo/readpref"
14 | )
15 |
16 | var Client *mongo.Client
17 | var Session *mongo.Session
18 | var pastes *mongo.Collection
19 |
20 | func initSessions(user, pass, ip string) {
21 | log.Infof("attempting connection to %s", ip)
22 |
23 | // build uri string
24 | URIfmt := "mongodb://%s:%s@%s:27017"
25 | mongoURI := fmt.Sprintf(URIfmt, user, pass, ip)
26 |
27 | ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
28 | defer cancel()
29 | c, err := mongo.Connect(ctx, options.Client().ApplyURI(mongoURI).SetTLSConfig(&tls.Config{}))
30 | Client = c
31 | if err != nil {
32 | log.Fatalf("error establishing connection to mongo: %s", err.Error())
33 | }
34 | err = Client.Ping(ctx, readpref.Primary())
35 | if err != nil {
36 | log.Fatalf("error pinging mongo: %s", err.Error())
37 | }
38 |
39 | // ensure expiry check
40 | expiryIndex := options.Index().SetExpireAfterSeconds(0)
41 | sessionTTL := mongo.IndexModel{
42 | Keys: []string{"expiry"},
43 | Options: expiryIndex,
44 | }
45 |
46 | // ensure hashes are unique
47 | uniqueIndex := options.Index().SetUnique(true)
48 | uniqueHashes := mongo.IndexModel{
49 | Keys: []string{"hash"},
50 | Options: uniqueIndex,
51 | }
52 |
53 | // Define connection to Databases
54 | pastes = Client.Database("main").Collection("pastes")
55 | _, _ = pastes.Indexes().CreateOne(ctx, sessionTTL)
56 | _, _ = pastes.Indexes().CreateOne(ctx, uniqueHashes)
57 | }
58 |
59 | func insert(new Paste) error {
60 | ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
61 | defer cancel()
62 | _, err := pastes.InsertOne(ctx, new)
63 | return err
64 | }
65 |
66 | func fetch(hash string) (Paste, error) {
67 | p := Paste{}
68 | q := bson.M{"hash": hash}
69 | ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
70 | defer cancel()
71 | err := pastes.FindOne(ctx, q).Decode(&p)
72 | return p, err
73 | }
74 |
--------------------------------------------------------------------------------
/backend/db/schemas.go:
--------------------------------------------------------------------------------
1 | package db
2 |
3 | import (
4 | "time"
5 |
6 | "go.mongodb.org/mongo-driver/bson/primitive"
7 | )
8 |
9 | // Paste represents a single paste
10 | type Paste struct {
11 | ID primitive.ObjectID `bson:"_id,omitempty"`
12 | Hash string
13 | Title string
14 | Content string
15 | Language string
16 | Password string
17 | Expiry time.Time `bson:"expiry"`
18 | Salt []byte
19 | }
20 |
--------------------------------------------------------------------------------
/backend/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/jackyzha0/ctrl-v
2 |
3 | go 1.13
4 |
5 | require (
6 | github.com/gorilla/mux v1.7.4
7 | github.com/joho/godotenv v1.3.0
8 | github.com/kr/pretty v0.2.0 // indirect
9 | github.com/sirupsen/logrus v1.6.0
10 | go.mongodb.org/mongo-driver v1.12.0
11 | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d
12 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect
13 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
14 | )
15 |
--------------------------------------------------------------------------------
/backend/go.sum:
--------------------------------------------------------------------------------
1 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2 | github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
3 | github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
4 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
5 | github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc=
6 | github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
7 | github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
8 | github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
9 | github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
10 | github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
11 | github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
12 | github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
13 | github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
14 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
15 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
16 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
17 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
18 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
19 | github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
20 | github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
21 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
22 | github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
23 | github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
24 | github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
25 | github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
26 | github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
27 | github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
28 | github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
29 | github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
30 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
31 | go.mongodb.org/mongo-driver v1.12.0 h1:aPx33jmn/rQuJXPQLZQ8NtfPQG8CaqgLThFtqRb0PiE=
32 | go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0=
33 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
34 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
35 | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY=
36 | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
37 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
38 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
39 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
40 | golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
41 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
42 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
43 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
44 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
45 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
46 | golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
47 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
48 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
49 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
50 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
51 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
52 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
53 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
54 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
55 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
56 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
57 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
58 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
59 | golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
60 | golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
61 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
62 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
63 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
64 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
65 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
66 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
67 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
68 |
--------------------------------------------------------------------------------
/backend/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "github.com/jackyzha0/ctrl-v/api"
5 | _ "github.com/jackyzha0/ctrl-v/cache" // setup cache
6 | _ "github.com/jackyzha0/ctrl-v/db" // setup db
7 | )
8 |
9 | func main() {
10 | api.Serve(8080)
11 | }
12 |
--------------------------------------------------------------------------------
/backend/security/encrypt.go:
--------------------------------------------------------------------------------
1 | package security
2 |
3 | import (
4 | "crypto/aes"
5 | "crypto/cipher"
6 | "crypto/rand"
7 | "errors"
8 | "golang.org/x/crypto/scrypt"
9 | )
10 |
11 | var EncryptionError = errors.New("could not encrypt the given content")
12 |
13 | func Encrypt(key, data string) (string, error) {
14 | // initialize aes block cipher with given key
15 | blockCipher, err := aes.NewCipher([]byte(key))
16 | if err != nil {
17 | return "", err
18 | }
19 |
20 | // wrap block cipher with Galois Counter Mode and standard nonce length
21 | gcm, err := cipher.NewGCM(blockCipher)
22 | if err != nil {
23 | return "", err
24 | }
25 |
26 | // generate nonce (number once used) unique to the given key
27 | nonce := make([]byte, gcm.NonceSize())
28 | if _, err = rand.Read(nonce); err != nil {
29 | return "", err
30 | }
31 |
32 | // seal nonce with data to use during decryption
33 | cipherText := gcm.Seal(nonce, nonce, []byte(data), nil)
34 |
35 | return string(cipherText), nil
36 | }
37 |
38 | func Decrypt(key, data string) (string, error) {
39 | // similar to encrypt, create cipher and wrap with GCM
40 | blockCipher, err := aes.NewCipher([]byte(key))
41 | if err != nil {
42 | return "", err
43 | }
44 |
45 | gcm, err := cipher.NewGCM(blockCipher)
46 | if err != nil {
47 | return "", err
48 | }
49 |
50 | // extract the nonce from the data
51 | nonce, cipherText := data[:gcm.NonceSize()], data[gcm.NonceSize():]
52 |
53 | // use nonce to decrypt the data
54 | plaintext, err := gcm.Open(nil, []byte(nonce), []byte(cipherText), nil)
55 | if err != nil {
56 | return "", err
57 | }
58 |
59 | return string(plaintext), nil
60 | }
61 |
62 | const keyBytes = 16
63 | const iterations = 16384
64 | const relativeMemoryCost = 8
65 | const relativeCPUCost = 1
66 |
67 | func DeriveKey(password string, salt []byte) (string, []byte, error) {
68 | if salt == nil {
69 | salt = make([]byte, keyBytes)
70 | if _, err := rand.Read(salt); err != nil {
71 | return "", nil, err
72 | }
73 | }
74 |
75 | key, err := scrypt.Key([]byte(password), salt, iterations, relativeMemoryCost, relativeCPUCost, keyBytes)
76 | if err != nil {
77 | return "", nil, err
78 | }
79 |
80 | return string(key), salt, nil
81 | }
82 |
--------------------------------------------------------------------------------
/backend/security/hash.go:
--------------------------------------------------------------------------------
1 | package security
2 |
3 | import (
4 | "crypto/md5"
5 | "encoding/hex"
6 | "golang.org/x/crypto/bcrypt"
7 | "math/big"
8 | "time"
9 | )
10 |
11 | const UrlLength = 7
12 |
13 | // GenerateURI creates a unique identifier for a paste based on ip and timestamp
14 | func GenerateURI(content string) string {
15 | timeStamp := time.Now().String()
16 | return hashString(content + timeStamp)[:UrlLength]
17 | }
18 |
19 | // hashes using MD5 and then converts to base 62
20 | func hashString(text string) string {
21 | hash := md5.Sum([]byte(text))
22 | hexStr := hex.EncodeToString(hash[:])
23 |
24 | bi := big.NewInt(0)
25 | bi.SetString(hexStr, 16)
26 | return bi.Text(62)
27 | }
28 |
29 | func HashPassword(password string) (string, error) {
30 | hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
31 | return string(hashedPassword), err
32 | }
33 |
34 | func PasswordsEqual(dbPassword, parsedPassword string) bool {
35 | dbPassBytes := []byte(dbPassword)
36 | parsedPassBytes := []byte(parsedPassword)
37 | compErr := bcrypt.CompareHashAndPassword(dbPassBytes, parsedPassBytes)
38 |
39 | // if comparison error, the given password is not valid
40 | return compErr == nil
41 | }
--------------------------------------------------------------------------------
/frontend/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "next/babel"
4 | ],
5 | "plugins": [
6 | [
7 | "styled-components",
8 | {
9 | "ssr": true,
10 | "displayName": true,
11 | "preprocess": false
12 | }
13 | ]
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | firebase-debug.log*
8 |
9 | # Firebase cache
10 | .firebase/
11 |
12 | # Firebase config
13 |
14 | # Uncomment this if you'd like others to create their own Firebase project.
15 | # For a team working on the same Firebase project(s), it is recommended to leave
16 | # it commented so all members can deploy to the same project(s) in .firebaserc.
17 | # .firebaserc
18 |
19 | # Runtime data
20 | pids
21 | *.pid
22 | *.seed
23 | *.pid.lock
24 |
25 | # Directory for instrumented libs generated by jscoverage/JSCover
26 | lib-cov
27 |
28 | # Coverage directory used by tools like istanbul
29 | coverage
30 |
31 | # nyc test coverage
32 | .nyc_output
33 |
34 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
35 | .grunt
36 |
37 | # Bower dependency directory (https://bower.io/)
38 | bower_components
39 |
40 | # node-waf configuration
41 | .lock-wscript
42 |
43 | # Compiled binary addons (http://nodejs.org/api/addons.html)
44 | build/Release
45 |
46 | # Dependency directories
47 | node_modules/
48 |
49 | # Optional npm cache directory
50 | .npm
51 |
52 | # Optional eslint cache
53 | .eslintcache
54 |
55 | # Optional REPL history
56 | .node_repl_history
57 |
58 | # Output of 'npm pack'
59 | *.tgz
60 |
61 | # Yarn Integrity file
62 | .yarn-integrity
63 |
64 | # dotenv environment variables file
65 | .env
66 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "axios": "^0.21.1",
7 | "next": "^10.1.3",
8 | "react": "^16.13.1",
9 | "react-dom": "^16.13.1",
10 | "react-dropdown": "^1.7.0",
11 | "react-katex": "^2.0.2",
12 | "react-markdown": "^4.3.1",
13 | "react-modal": "^3.11.2",
14 | "react-simple-code-editor": "^0.11.0",
15 | "react-syntax-highlighter": "^12.2.1",
16 | "react-syntax-highlighter-virtualized-renderer": "^1.1.0",
17 | "styled-components": "^5.1.0",
18 | "use-clipboard-copy": "^0.1.2"
19 | },
20 | "scripts": {
21 | "dev": "next dev",
22 | "start": "next start",
23 | "build": "next build"
24 | },
25 | "eslintConfig": {
26 | "extends": "react-app"
27 | },
28 | "browserslist": {
29 | "production": [
30 | ">0.2%",
31 | "not dead",
32 | "not op_mini all"
33 | ],
34 | "development": [
35 | "last 1 chrome version",
36 | "last 1 firefox version",
37 | "last 1 safari version"
38 | ]
39 | },
40 | "devDependencies": {
41 | "babel-plugin-styled-components": "^1.12.0"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/frontend/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jackyzha0/ctrl-v/9853ff01573b9495da848e09a62cd11add19e4bf/frontend/public/favicon.png
--------------------------------------------------------------------------------
/frontend/src/components/Common/Button.js:
--------------------------------------------------------------------------------
1 | import styled, {css} from 'styled-components'
2 | import {Border, ButtonLike, DropShadow, Rounded} from "./mixins";
3 |
4 | const Base = css`
5 | ${DropShadow}
6 | ${Rounded}
7 | ${ButtonLike}
8 | margin-right: 2em;
9 | height: calc(16px + 1.4em);
10 | cursor: pointer;
11 | `
12 |
13 | const Primary = css`
14 | ${Base};
15 | border: none;
16 | color: ${p => p.theme.colors.background};
17 | background-color: ${p => p.theme.colors.text};
18 | `
19 | const Secondary = css`
20 | ${Base};
21 | ${Border};
22 | color: ${p => p.theme.colors.text};
23 | background-color: ${p => p.theme.colors.background};
24 | `
25 |
26 | export const Button = styled.button`
27 | ${p => p.secondary ? css`${Secondary}` : css`${Primary}` }
28 | `
29 |
30 | export const SubmitButton = styled.input`
31 | ${Primary}
32 | `
--------------------------------------------------------------------------------
/frontend/src/components/Common/Input.js:
--------------------------------------------------------------------------------
1 | import styled from 'styled-components'
2 | import {Border, DropShadow, InputLike, Rounded} from "./mixins";
3 |
4 | export const Input = styled.input`
5 | ${Border}
6 | ${Rounded}
7 | ${DropShadow}
8 | ${InputLike}
9 | `
--------------------------------------------------------------------------------
/frontend/src/components/Common/mixins.js:
--------------------------------------------------------------------------------
1 | import {css} from 'styled-components';
2 |
3 | export const DropShadow = css`
4 | box-shadow: 0 14px 28px rgba(27, 33, 48,0.06), 0 10px 10px rgba(27, 33, 48,0.02);
5 | `
6 |
7 | export const Hover = css`
8 | opacity: 0.5;
9 | transition: all 0.5s cubic-bezier(.25,.8,.25,1);
10 |
11 | & ~ pre {
12 | transition: all 0.5s cubic-bezier(.25,.8,.25,1);
13 | opacity: 0.5;
14 | }
15 |
16 | &:focus, &:hover, &:focus span, &:focus ~ pre {
17 | opacity: 1;
18 | }
19 | `
20 |
21 | export const Rounded = css`
22 | border-radius: 3px;
23 | `
24 |
25 | export const Border = css`
26 | border: 1px solid ${p => p.theme.colors.border};
27 | `
28 |
29 | export const InputLike = css`
30 | ${Hover}
31 | font-family: 'JetBrains Mono', monospace;
32 | width: 100%;
33 | font-size: 0.8em;
34 | padding: 0.6em;
35 | outline: none;
36 | margin: 1.7em 0;
37 | `
38 |
39 | export const CodeLike = css`
40 | font-family: JetBrains Mono !important;
41 | font-size: 13px !important;
42 | line-height: 1.6em !important;
43 | `
44 |
45 | export const ButtonLike = css`
46 | font-family: 'JetBrains Mono', serif;
47 | font-weight: 700;
48 | padding: 0.6em 1.5em;
49 | margin: 2em 0;
50 | outline: 0;
51 | `
52 |
--------------------------------------------------------------------------------
/frontend/src/components/Err.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styled, { css } from 'styled-components'
3 |
4 | export const ErrMsg = styled.p`
5 | display: inline;
6 | font-weight: 700;
7 | color: #ff3333;
8 | opacity: 0;
9 | transition: opacity 0.3s cubic-bezier(.25,.8,.25,1);
10 |
11 | ${props =>
12 | (props.active) && css`
13 | opacity: 1
14 | `
15 | };
16 | `
17 |
18 | class Error extends React.Component {
19 |
20 | constructor(props) {
21 | super(props);
22 |
23 | this.state = {
24 | active: false,
25 | msg: ' ',
26 | };
27 |
28 | this.showMessage = this.showMessage.bind(this);
29 | }
30 |
31 | showMessage(msg, duration = 3000) {
32 | this.setState({
33 | active: true,
34 | msg: msg
35 | })
36 |
37 | // fadeout after duration ms if duration != -1
38 | if (duration !== -1) {
39 | setTimeout(() => {
40 | this.setState({ active: false })
41 | }, duration);
42 | }
43 | }
44 |
45 | render() {
46 | const msg = this.state.msg.toString().toLowerCase()
47 | return (
48 | {msg}
49 | );
50 | }
51 | }
52 |
53 | export default Error
--------------------------------------------------------------------------------
/frontend/src/components/Footer.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 |
4 | const SpacedFooter = styled.div`
5 | & > p {
6 | font-size: 0.8em;
7 | }
8 | & a {
9 | color: ${(p) => p.theme.colors.text};
10 | }
11 | `;
12 |
13 | const Link = (props) => {
14 | return (
15 |
16 | {props.name}
17 |
18 | );
19 | };
20 |
21 | const Footer = () => {
22 | return (
23 |
24 |
25 | (c) 2022 // ,{" "}
26 |
27 |
28 |
29 | );
30 | };
31 |
32 | export default Footer;
33 |
--------------------------------------------------------------------------------
/frontend/src/components/Inputs/Code.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from 'styled-components'
3 | import CharLimit from "../decorators/CharLimit";
4 | import Editor from 'react-simple-code-editor';
5 | import {Highlighter} from "../renderers/Code";
6 | import {CodeLike, Hover} from "../Common/mixins";
7 |
8 | const Wrapper = styled.div`
9 | display: block;
10 | position: relative;
11 | width: calc(100%);
12 | `
13 |
14 | const EditorWrapper = styled(Editor)`
15 | overflow: visible !important;
16 | position: relative;
17 |
18 | & > * {
19 | padding: 0 !important;
20 | width: 100%;
21 | }
22 |
23 | & pre, & code, & > textarea {
24 | ${CodeLike}
25 | min-height: 40vh;
26 | }
27 |
28 | & pre {
29 | z-index: -1 !important;
30 | }
31 |
32 | & > textarea {
33 | ${Hover}
34 | padding: 0.6em !important;
35 | outline: none !important;
36 | }
37 | `
38 |
39 | export const Code = ({content, id, readOnly, setContentCallback, ...props}) => {
40 | return (
41 |
42 | {code} }
50 | onValueChange={code => setContentCallback(code)}
51 | padding={15}
52 | />
53 |
56 |
57 | );
58 | }
--------------------------------------------------------------------------------
/frontend/src/components/Inputs/Dropdown.js:
--------------------------------------------------------------------------------
1 | import Dropdown from "react-dropdown";
2 | import React from "react";
3 | import styled from 'styled-components';
4 | import {LANGS, THEMES} from "../renderers/Code";
5 | import {Labelled} from "../decorators/Labelled";
6 | import {Border, DropShadow, InputLike, Rounded} from "../Common/mixins";
7 |
8 | const StyledDropdown = styled(Dropdown)`
9 | ${Border}
10 | ${Rounded}
11 | ${DropShadow}
12 | ${InputLike}
13 | cursor: pointer;
14 |
15 | & .Dropdown-root {
16 | cursor: pointer;
17 |
18 | &:hover, &.is-open {
19 | opacity: 1;
20 | }
21 | }
22 |
23 | & .Dropdown-placeholder {
24 | width: 5.5em;
25 | }
26 |
27 | & .Dropdown-menu {
28 | border-top: 1px solid ${p => p.theme.colors.text};
29 | margin-top: 0.5em;
30 | bottom: auto;
31 | }
32 |
33 | & .Dropdown-option {
34 | margin-top: 0.5em;
35 | transition: all 0.5s cubic-bezier(.25,.8,.25,1);
36 |
37 | &:hover {
38 | font-weight: 700;
39 | opacity: 0.4;
40 | }
41 | }
42 | `
43 |
44 | const GenericDropdown = (props) => {
45 | function _onSelect(option) {
46 | props.onChange({
47 | target: {
48 | name: props.label,
49 | value: option.label
50 | }
51 | });
52 | }
53 |
54 | return (
55 |
59 |
65 |
66 | );
67 | }
68 |
69 | export const Expiry = (props) => {
70 | const options = [
71 | '5 years',
72 | '1 year',
73 | '1 month',
74 | '1 week',
75 | '1 day',
76 | '1 hour',
77 | '10 min',
78 | ];
79 |
80 | return (
81 |
87 | );
88 | }
89 |
90 | export const Language = (props) => {
91 | const options = Object.entries(LANGS).map((key, _) => ({
92 | 'value': key[1],
93 | 'label': key[0]
94 | }))
95 |
96 | return (
97 |
103 | );
104 | }
105 |
106 | export const Theme = (props) => {
107 | const options = Object.entries(THEMES).map((key) => ({
108 | 'value': key[1],
109 | 'label': key[0]
110 | }))
111 |
112 | return (
113 |
119 | );
120 | }
--------------------------------------------------------------------------------
/frontend/src/components/Inputs/Password.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Labelled } from "../decorators/Labelled";
3 | import { Input } from "../Common/Input";
4 |
5 | export const Password = (props) => (
6 |
7 |
16 |
17 | );
18 |
--------------------------------------------------------------------------------
/frontend/src/components/Inputs/Text.js:
--------------------------------------------------------------------------------
1 | import CharLimit from "../decorators/CharLimit";
2 | import React from "react";
3 | import {Labelled} from "../decorators/Labelled";
4 | import {Input} from "../Common/Input";
5 |
6 | export const Text = React.forwardRef(({label, id, readOnly, onChange, value, maxLength, autoFocus}, ref) => {
7 | return (
8 |
9 |
20 |
23 |
24 | );
25 | })
--------------------------------------------------------------------------------
/frontend/src/components/Inputs/index.js:
--------------------------------------------------------------------------------
1 | import {Code} from './Code';
2 | import {Expiry, Language, Theme} from "./Dropdown";
3 | import {Password} from "./Password";
4 | import {Text} from "./Text";
5 |
6 | export {Code, Expiry, Language, Theme, Password, Text};
--------------------------------------------------------------------------------
/frontend/src/components/NextHead.js:
--------------------------------------------------------------------------------
1 | import Head from 'next/head'
2 |
3 | const NextHead = ({data}) => {
4 | const title = data.title || "untitled paste"
5 | const description = `${data.content.slice(0, 100)}... expires: ${data.expiry}`
6 | return (
7 | ctrl-v | {title}
8 |
9 |
10 |
11 |
12 |
13 | )
14 | }
15 |
16 | export default NextHead
--------------------------------------------------------------------------------
/frontend/src/components/Options.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styled from "styled-components";
3 | import { Password, Expiry, Language } from "./Inputs";
4 |
5 | const Flex = styled.div`
6 | float: right;
7 | display: flex;
8 | flex-direction: row;
9 | transform: translateY(0.2em);
10 |
11 | @media (min-width: 650px) {
12 | & > *:not(:first-child) {
13 | margin-left: 2em;
14 | }
15 | }
16 |
17 | @media (max-width: 650px) {
18 | position: relative;
19 | float: none !important;
20 | flex-direction: column;
21 | }
22 | `;
23 |
24 | const OptionsContainer = ({
25 | pass,
26 | lang,
27 | expiry,
28 | onPassChange,
29 | onLangChange,
30 | onExpiryChange,
31 | }) => {
32 | return (
33 |
34 |
35 |
36 |
37 |
38 | );
39 | };
40 |
41 | export default OptionsContainer;
42 |
--------------------------------------------------------------------------------
/frontend/src/components/PasteInfo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styled from 'styled-components'
3 | import { Theme } from './Inputs'
4 | import {Button} from "./Common/Button";
5 | import {useRouter} from "next/router";
6 | import {ErrMsg} from "./Err";
7 |
8 | const Bold = styled.span`
9 | font-weight: 700
10 | `
11 |
12 | const StyledDiv = styled.div`
13 | display: inline-block;
14 | margin: 2em 0;
15 | `
16 |
17 | const ShiftedButton = styled(Button)`
18 | margin-top: 1.6em !important;
19 | `
20 |
21 | const SpacedText = styled.span`
22 | margin-right: 1em;
23 | `
24 |
25 | const Flex = styled.div`
26 | float: right;
27 | display: flex;
28 | flex-direction: row;
29 | `
30 |
31 | const PasteInfo = ({hash, lang, theme, expiry, toggleRenderCallback, isRenderMode, onChange, err}) => {
32 | const router = useRouter()
33 | const redirRaw = () => {
34 | const redirUrl = `/raw/${hash}`
35 | router.push(redirUrl);
36 | }
37 |
38 | const renderable = () => {
39 | const buttonTxt = isRenderMode ? 'text' : 'render'
40 | if (lang === 'latex' || lang === 'markdown') {
41 | return (
42 |
46 | {buttonTxt}
47 |
48 | );
49 | }
50 | }
51 |
52 | return (
53 |
54 |
55 |
59 | view raw
60 |
61 | {renderable()}
62 |
66 |
67 |
68 | {err ?
69 | {err} :
70 | <>
71 |
72 | language: {lang}
73 |
74 |
75 | expires: {expiry}
76 |
77 | >
78 | }
79 |
80 |
81 | );
82 | }
83 |
84 | export default PasteInfo
--------------------------------------------------------------------------------
/frontend/src/components/Watermark.js:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 | import React from "react";
3 | import Footer from "./Footer";
4 |
5 | const Logo = styled.div`
6 | position: fixed;
7 | bottom: 1em;
8 | left: 2em;
9 | opacity: 0.3;
10 | transition: opacity 0.5s cubic-bezier(0.25, 0.8, 0.25, 1);
11 |
12 | &:hover {
13 | opacity: 1;
14 | }
15 |
16 | & > h1 {
17 | font-size: 50px;
18 | margin: 0 0;
19 |
20 | & > a {
21 | text-decoration: none;
22 | position: relative;
23 | color: ${(p) => p.theme.colors.text};
24 | }
25 | }
26 |
27 | @media (max-width: 960px) {
28 | position: relative;
29 | display: grid;
30 | left: -6em;
31 | font-size: 10px;
32 | }
33 | `;
34 | export const Watermark = () => (
35 |
36 |
39 |
40 |
41 | );
42 |
--------------------------------------------------------------------------------
/frontend/src/components/decorators/CharLimit.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styled from 'styled-components'
3 |
4 | // show char limit if length > half of max
5 | const Chars = styled.p`
6 | color: #11111100;
7 | position: absolute;
8 | font-size: 0.8em;
9 | writing-mode: vertical-rl;
10 | top: 50%;
11 | transform: translate(4em, -50%);
12 | right: 0;
13 | transition: all 0.5s cubic-bezier(.25,.8,.25,1);
14 |
15 | ${p => ((p.content.length / p.maxLength) > 0.5) && ` color: ${p.theme.colors.text}; `};
16 | ${p => ((p.content.length / p.maxLength) > 1) && ` color: ${p.theme.colors.error}; `};
17 | `;
18 |
19 | const CharLimit = (props) => {
20 | return (
21 | {props.maxLength - props.content.length}/{props.maxLength}
22 | );
23 | }
24 |
25 | export default CharLimit
--------------------------------------------------------------------------------
/frontend/src/components/decorators/Labelled.js:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 | import React from "react";
3 |
4 | const StyledLabel = styled.label`
5 | position: relative;
6 | & > div:first-child {
7 | position: absolute;
8 | }
9 | & > div > span {
10 | display: block;
11 | transform: translateY(-0.2em);
12 | font-weight: 700;
13 | font-size: 1em;
14 | opacity: 0.5;
15 | transition: opacity 0.5s cubic-bezier(.25,.8,.25,1);
16 | }
17 |
18 | &:hover > span {
19 | opacity: 1;
20 | }
21 | `
22 |
23 | const FloatingLabel = (props) =>
24 | {props.children}
25 |
26 |
27 |
28 | export const Labelled = ({label, value, children}) =>
29 |
30 | {label}
31 |
32 | {children}
33 |
--------------------------------------------------------------------------------
/frontend/src/components/modals/PasswordModal.js:
--------------------------------------------------------------------------------
1 | import React, { useRef } from 'react';
2 | import Modal from 'react-modal';
3 | import { Password } from '../Inputs'
4 | import {ModalHeader, modalStyles, Form} from './shared'
5 | import Error from '../Err';
6 | import {SubmitButton} from "../Common/Button";
7 |
8 | const PasswordModal = (props) => {
9 | const ErrorLabel = useRef(null);
10 | Modal.setAppElement('body');
11 |
12 | function submitPassword(e) {
13 | e.preventDefault();
14 | const password = props.value
15 | props.validateCallback(password, ErrorLabel.current.showMessage)
16 | }
17 |
18 | return(
19 |
24 |
33 |
34 | );
35 | }
36 |
37 | export default PasswordModal
--------------------------------------------------------------------------------
/frontend/src/components/modals/PasteModal.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Modal from 'react-modal';
3 | import {Form, ModalHeader, modalStyles} from './shared'
4 | import { useRouter } from 'next/router'
5 | import { Text } from '../Inputs'
6 | import { useClipboard } from 'use-clipboard-copy';
7 | import {Button} from "../Common/Button";
8 |
9 | const PasteModal = (props) => {
10 | const fullURL = `https://ctrl-v.app/${props.hash}`;
11 | const clipboard = useClipboard({ copiedTimeout: 3000 });
12 | Modal.setAppElement('body');
13 | const router = useRouter()
14 |
15 | const redir = (e) => {
16 | e.preventDefault();
17 | const redirUrl = `/${props.hash}`
18 | router.push(redirUrl);
19 | }
20 |
21 | return (
22 |
27 |
48 |
49 | );
50 | }
51 |
52 | export default PasteModal
--------------------------------------------------------------------------------
/frontend/src/components/modals/shared.js:
--------------------------------------------------------------------------------
1 | import styled from 'styled-components'
2 |
3 | export const modalStyles = {
4 | content: {
5 | top: '50%',
6 | left: '50%',
7 | transform: 'translate(-50%, -50%)',
8 | width: '500px',
9 | height: '250px',
10 | border: '1px solid #11111188',
11 | },
12 | };
13 |
14 | export const Form = styled.form`
15 | margin: 2em;
16 | margin-right: 3em;
17 | `
18 |
19 | export const ModalHeader = styled.h3`
20 | font-weight: 700
21 | `
--------------------------------------------------------------------------------
/frontend/src/components/renderers/Code.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SyntaxHighlighter from 'react-syntax-highlighter';
3 | import virtualizedRenderer from 'react-syntax-highlighter-virtualized-renderer';
4 | import { atomOneLight, ascetic, atomOneDark, dracula, ocean } from 'react-syntax-highlighter/dist/cjs/styles/hljs';
5 | import styled from 'styled-components'
6 | import {Border, CodeLike, DropShadow, Rounded} from "../Common/mixins";
7 |
8 | export const THEMES = Object.freeze({
9 | 'atom': atomOneLight,
10 | 'atom dark': atomOneDark,
11 | 'plain': ascetic,
12 | 'dracula': dracula,
13 | 'ocean': ocean,
14 | })
15 |
16 | export const LANGS = Object.freeze({
17 | 'latex': 'latex',
18 | 'markdown': 'markdown',
19 | 'detect': 'text',
20 | })
21 |
22 | export const StyledPre = styled.pre`
23 | ${Rounded};
24 | ${Border};
25 | ${DropShadow};
26 | width: calc(100%);
27 | padding: calc(0.6em - 1px) !important;
28 | margin: 1.7em 0;
29 | position: relative;
30 | outline: none;
31 |
32 | & code {
33 | ${CodeLike}
34 | }
35 |
36 | & code:first-child:not(:only-of-type) {
37 | margin-right: 10px !important;
38 | border-radius: 0 !important;
39 | border-right: 1px solid #11111155 !important;
40 | }
41 | `
42 |
43 | const PreWithBr = (props) => (
44 |
45 | {props.children}
46 |
47 | )
48 |
49 | export const Highlighter = ({language, lineNumbers, theme, pre = StyledPre, children}) =>
54 | {children}
55 |
56 |
57 | const CodeRenderer = (props) => {
58 | return (
64 | {props.content}
65 | )
66 | };
67 |
68 | export default CodeRenderer
69 |
--------------------------------------------------------------------------------
/frontend/src/components/renderers/InlineCode.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SyntaxHighlighter from 'react-syntax-highlighter';
3 | import { atomOneDark } from 'react-syntax-highlighter/dist/cjs/styles/hljs';
4 | import { LANGS } from './Code'
5 |
6 | const MarkdownCodeRenderer = ({language, value}) => {
7 |
8 | return (
9 |
12 | {value ?? ''}
13 |
14 | );
15 | };
16 |
17 | export default MarkdownCodeRenderer;
--------------------------------------------------------------------------------
/frontend/src/components/renderers/Latex.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { BlockMath, InlineMath } from 'react-katex';
3 | import 'katex/dist/katex.min.css';
4 | import styled from 'styled-components'
5 |
6 | const StyledInlineLatex = styled.div`
7 | display: block;
8 | margin-bottom: 1em;
9 | `
10 |
11 | const Latex = (props) => {
12 | // split by \begin{...} and \end{...} flags
13 | const els = props.content.split(/(\\begin\{.*\}[\s\S]*?\\end\{.*\})/gm).map(line => {
14 | // line doesnt start with \begin{...}, safe to split on \\
15 | if (!line.match(/^(\\begin\{.*\})/)) {
16 | return line.split("\\\\")
17 | } else {
18 | return line
19 | }
20 | }).flat()
21 |
22 | // if <=1 lines, just render block
23 | if (els.length <= 1) {
24 | return (
25 |
26 | {props.content}
27 |
28 | );
29 | } else {
30 | // new inline block for every line
31 | const blocks = els.map(line =>
32 |
33 |
34 | {line}
35 |
36 |
37 | )
38 |
39 | return blocks;
40 | }
41 | }
42 |
43 | const StyledLatex = styled(Latex)`
44 | /* fix weird symbol height in render mode */
45 | .large-op {
46 | transform: translateY(-0.55em);
47 | }
48 |
49 | .small-op {
50 | transform: translateY(-0.1em);
51 | }
52 | `
53 |
54 | export default StyledLatex
--------------------------------------------------------------------------------
/frontend/src/components/renderers/Markdown.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactMarkdown from 'react-markdown';
3 | import styled from 'styled-components'
4 | import MarkdownCodeRenderer from './InlineCode'
5 |
6 | const Content = styled.div`
7 | max-width: 100%;
8 | overflow-wrap: anywhere;
9 | img {
10 | max-width: 100%;
11 | }
12 |
13 | h3 {
14 | font-weight: bold;
15 | }
16 |
17 | hr {
18 | border-top: 1px solid ${p => p.theme.colors.text};
19 | border-style: solid;
20 | }
21 |
22 | code {
23 | background: ${p => p.theme.colors.codeHighlight};
24 | font-size: 0.8em;
25 | }
26 |
27 | pre {
28 | padding: 0.7em;
29 | background: ${p => p.theme.colors.codeHighlight};
30 | }
31 |
32 | pre > code {
33 | background: none;
34 | }
35 |
36 | table {
37 | width: 100%;
38 | }
39 |
40 | code, pre {
41 | background: none;
42 | font-family: 'JetBrains Mono', monospace;
43 | padding: initial;
44 | border-radius: 3px;
45 | outline: none;
46 | }
47 | `
48 | const Markdown = ({content}) => {
49 | return
50 |
57 | ;
58 | }
59 |
60 | export default Markdown
--------------------------------------------------------------------------------
/frontend/src/components/renderers/RenderDispatch.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styled from 'styled-components'
3 | import Latex from './Latex'
4 | import Markdown from './Markdown'
5 | import CodeRenderer from './Code'
6 |
7 | const RenderWrapper = styled.div`
8 | padding: 1em;
9 | `
10 |
11 | const RenderDispatch = (props) => {
12 | switch (props.language) {
13 | case 'latex':
14 | return (
15 |
16 |
17 | )
18 | case 'markdown':
19 | return (
20 |
21 |
22 | )
23 | default:
24 | return (
25 | )
30 | }
31 | };
32 |
33 | export default RenderDispatch
--------------------------------------------------------------------------------
/frontend/src/http/resolvePaste.js:
--------------------------------------------------------------------------------
1 | import {useEffect, useState} from 'react'
2 | import {fetchPaste, fmtDateStr} from './shared'
3 | import {LANGS} from "../components/renderers/Code";
4 |
5 | export const defaultResponse = {
6 | data: {
7 | title: '',
8 | content: '',
9 | language: LANGS.detect,
10 | expiry: '',
11 | },
12 | unauthorized: false,
13 | error: '',
14 | }
15 |
16 | const resolvePaste = async (id, password = "") => {
17 | const response = {...defaultResponse}
18 | try {
19 | return await fetchPaste(id, password)
20 | .then(resp => {
21 | const data = resp.data
22 | response.data = {
23 | ...data,
24 | expiry: fmtDateStr(data.expiry)
25 | }
26 | return response
27 | })
28 | } catch (err) {
29 | const resp = err.response
30 | if (!resp) {
31 | response.error = 'network error'
32 | return response
33 | }
34 |
35 | if (resp.status === 401) {
36 | response.error = 'unauthorized'
37 | response.unauthorized = true
38 | return response
39 | }
40 |
41 | response.error = `${resp.status}: ${resp.data}`
42 | return response
43 | }
44 | }
45 |
46 | export default resolvePaste
--------------------------------------------------------------------------------
/frontend/src/http/shared.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 |
3 | // uncomment for local dev
4 | // const base = `http://localhost:8080/api`
5 | const base = `https://api.ctrl-v.app/api`
6 | export function fetchPaste(hash, pass = "") {
7 | const serverURL = `${base}/${hash}`
8 |
9 | if (pass === "") {
10 | return axios.get(serverURL)
11 | } else {
12 | const bodyFormData = new FormData();
13 | bodyFormData.set('password', pass);
14 | return axios({
15 | method: 'post',
16 | url: `${base}/${hash}`,
17 | data: bodyFormData,
18 | headers: { 'Content-Type': 'multipart/form-data' },
19 | })
20 | }
21 | }
22 |
23 | export function newPaste(paste) {
24 | const {title, content, language, pass, expiry} = paste
25 | const bodyFormData = new FormData();
26 | bodyFormData.set('title', title);
27 | bodyFormData.set('content', content);
28 | bodyFormData.set('language', language);
29 | bodyFormData.set('password', pass);
30 | bodyFormData.set('expiry', parseExpiry(expiry));
31 |
32 | return axios({
33 | method: 'post',
34 | url: base,
35 | data: bodyFormData,
36 | headers: { 'Content-Type': 'multipart/form-data' },
37 | })
38 | }
39 |
40 | export function parseExpiry(e) {
41 | var cur = new Date();
42 | var inSeconds = 0
43 | switch (e) {
44 | case '5 years':
45 | inSeconds = 600 * 6 * 24 * 7 * 4 * 12 * 5
46 | break;
47 | case '1 year':
48 | inSeconds = 600 * 6 * 24 * 7 * 4 * 12
49 | break;
50 | case '1 month':
51 | inSeconds = 600 * 6 * 24 * 7 * 4
52 | break;
53 | case '1 day':
54 | inSeconds = 600 * 6 * 24
55 | break;
56 | case '1 hour':
57 | inSeconds = 600 * 6
58 | break;
59 | case '10 min':
60 | inSeconds = 600
61 | break;
62 | case '1 week':
63 | default:
64 | inSeconds = 600 * 6 * 24 * 7
65 | break;
66 | }
67 | return new Date(cur.getTime() + inSeconds * 1000).toISOString();
68 | }
69 |
70 | export function fmtDateStr(dateString) {
71 | const d = new Date(dateString)
72 | const options = { hour: '2-digit', minute: '2-digit', year: 'numeric', month: 'long', day: 'numeric' }
73 | return d.toLocaleDateString("en-US", options).toLocaleLowerCase()
74 | }
--------------------------------------------------------------------------------
/frontend/src/pages/[hash].js:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from 'react';
2 | import { Text } from '../components/Inputs';
3 | import CodeRenderer from '../components/renderers/Code'
4 | import PasteInfo from '../components/PasteInfo';
5 | import PasswordModal from '../components/modals/PasswordModal'
6 | import RenderDispatch from '../components/renderers/RenderDispatch'
7 | import {Watermark} from "../components/Watermark";
8 | import { useRouter } from 'next/router'
9 | import resolvePaste from "../http/resolvePaste";
10 | import NextHead from "../components/NextHead";
11 |
12 | export async function getServerSideProps(ctx) {
13 | const data = await resolvePaste(ctx.params.hash)
14 | return { props: { ...data } }
15 | }
16 |
17 | const ViewPaste = ({data, unauthorized, error}) => {
18 | const router = useRouter()
19 | const { hash } = router.query
20 | const [theme, setTheme] = useState('atom');
21 | const [isRenderMode, setIsRenderMode] = useState(false);
22 | const [enteredPass, setEnteredPass] = useState('');
23 | const [correctPass, setCorrectPass] = useState(!unauthorized);
24 | const [clientData, setClientData] = useState(data)
25 | const {content, language, expiry, title} = clientData;
26 |
27 | const getWithPassword = (password, errorCallback) => {
28 | resolvePaste(hash, password)
29 | .then(resp => {
30 | setCorrectPass(true)
31 | setClientData(resp.data)
32 | })
33 | .catch(e => errorCallback(e.response.data))
34 | }
35 |
36 | useEffect(() => {
37 | setIsRenderMode(language === 'latex' || language === 'markdown')
38 | }, [language])
39 |
40 | function getDisplay() {
41 | return isRenderMode ? :
49 | }
50 |
51 | return (
52 |
53 | {!error &&
}
54 |
setEnteredPass(e.target.value)}
59 | validateCallback={getWithPassword} />
60 |
65 | {getDisplay()}
66 | setIsRenderMode(!isRenderMode)}
72 | isRenderMode={isRenderMode}
73 | onChange={(e) => setTheme(e.target.value)}
74 | err={unauthorized ? '' : error}
75 | />
76 |
77 |
78 | );
79 | }
80 |
81 | export default ViewPaste
--------------------------------------------------------------------------------
/frontend/src/pages/_app.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ThemeProvider from "../theme/ThemeProvider";
3 | import GlobalStyle from "../theme/GlobalStyle";
4 | import styled from "styled-components";
5 | import Head from "next/head";
6 |
7 | const Main = styled.div`
8 | margin-top: 10vh;
9 | padding: 0 20vw 30px 20vw;
10 | `
11 |
12 | const App = ({ Component, pageProps }) => (
13 |
14 |
15 |
16 |
17 |
18 |
19 |
23 |
24 |
25 |
27 | ctrl-v | a modern, open-source pastebin
28 |
29 |
39 |
40 |
41 |
42 |
43 |
44 | )
45 |
46 | export default App
--------------------------------------------------------------------------------
/frontend/src/pages/_document.js:
--------------------------------------------------------------------------------
1 | import Document from 'next/document'
2 | import { ServerStyleSheet } from 'styled-components'
3 |
4 | export default class StyledDocument extends Document {
5 | static async getInitialProps(ctx) {
6 | const sheet = new ServerStyleSheet()
7 | const originalRenderPage = ctx.renderPage
8 |
9 | try {
10 | ctx.renderPage = () =>
11 | originalRenderPage({
12 | enhanceApp: (App) => (props) =>
13 | sheet.collectStyles(),
14 | })
15 |
16 | const initialProps = await Document.getInitialProps(ctx)
17 | return {
18 | ...initialProps,
19 | styles: (
20 | <>
21 | {initialProps.styles}
22 | {sheet.getStyleElement()}
23 | >
24 | ),
25 | }
26 | } finally {
27 | sheet.seal()
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/frontend/src/pages/index.js:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState, useRef } from 'react';
2 | import { Text, Code } from '../components/Inputs'
3 | import OptionsContainer from '../components/Options'
4 | import Error from '../components/Err'
5 | import PasteModal from '../components/modals/PasteModal'
6 | import styled from 'styled-components'
7 | import CodeRenderer from '../components/renderers/Code'
8 | import Latex from '../components/renderers/Latex'
9 | import Markdown from '../components/renderers/Markdown'
10 | import {Button, SubmitButton} from "../components/Common/Button";
11 | import {newPaste} from "../http/shared";
12 | import {Watermark} from "../components/Watermark";
13 | import {Labelled} from "../components/decorators/Labelled";
14 |
15 | const Container = styled.form`
16 | width: 100%;
17 | `
18 |
19 | const Flex = styled.div`
20 | display: flex;
21 | flex-direction: row;
22 | `
23 |
24 | const FlexLeft = styled.div`
25 | flex: 0 0 calc(50% - 1em - 2px);
26 | `
27 |
28 | const FlexRight = styled.div`
29 | flex: 0 0 50%;
30 | max-width: calc(50% - 1em + 2px);
31 | margin-left: 2em;
32 | `
33 |
34 | const PreviewWrapper = styled.div`
35 | margin: 2em;
36 | `
37 |
38 | const NewPaste = () => {
39 | const [title, setTitle] = useState('');
40 | const [content, setContent] = useState('');
41 | const [pass, setPass] = useState('');
42 | const [language, setLanguage] = useState('detect');
43 | const [expiry, setExpiry] = useState('');
44 | const [hash, setHash] = useState('');
45 | const [isPreview, setIsPreview] = useState(false);
46 | const ErrorLabel = useRef(null);
47 |
48 | useEffect(() => {
49 | document.title = title === "" ? `ctrl-v` : `ctrl-v | ${title}`;
50 | }, [title])
51 |
52 | function handleSubmit(e) {
53 | e.preventDefault();
54 |
55 | // prevent resubmission
56 | if (!hash) {
57 | newPaste({title, content, language, pass, expiry})
58 | .then(resp => {setHash(resp.data.hash)})
59 | .catch((error) => {
60 | const resp = error.response
61 |
62 | // some weird err (e.g. network)
63 | if (!resp) {
64 | ErrorLabel.current.showMessage(error)
65 | return
66 | }
67 |
68 | // some weird err
69 | const errTxt = `${resp.status}: ${resp.data}`
70 | ErrorLabel.current.showMessage(errTxt)
71 | });
72 | }
73 | }
74 |
75 | function renderPreview() {
76 | const pasteInput =
80 |
81 | if (isPreview) {
82 | var preview
83 | switch (language) {
84 | case 'latex':
85 | preview =
86 |
87 |
89 |
90 | break
91 | case 'markdown':
92 | preview =
93 |
94 |
96 |
97 | break
98 | default:
99 | preview =
100 |
104 | }
105 |
106 | return (
107 |
108 |
109 |
110 | {pasteInput}
111 |
112 |
113 |
114 |
115 | {preview}
116 |
117 |
118 |
119 | );
120 | } else {
121 | return (
122 |
123 | {pasteInput}
124 |
125 | );
126 | }
127 | }
128 |
129 | return (
130 |
131 |
132 | {setTitle(e.target.value)}}
135 | value={title}
136 | autoFocus
137 | maxLength="100"
138 | id="titleInput" />
139 | {renderPreview()}
140 | { setPass(e.target.value) }}
145 | onLangChange={(e) => { setLanguage(e.target.value) }}
146 | onExpiryChange={(e) => { setExpiry(e.target.value) }} />
147 |
148 |
149 | {language !== 'detect' && }
155 |
156 |
157 |
158 |
159 |
160 | );
161 | }
162 |
163 | export default NewPaste
--------------------------------------------------------------------------------
/frontend/src/pages/raw/[hash].js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import resolvePaste from "../../http/resolvePaste";
3 | import {CodeLike} from "../../components/Common/mixins";
4 | import styled from 'styled-components'
5 | import NextHead from "../../components/NextHead";
6 |
7 | const RawText = styled.pre`
8 | ${CodeLike}
9 | padding: 0 1em;
10 | `
11 |
12 | export async function getServerSideProps(ctx) {
13 | const data = await resolvePaste(ctx.params.hash)
14 | return { props: { ...data } }
15 | }
16 |
17 | const Raw = ({error, data}) => {
18 | return <>
19 | {!error && }
20 |
21 | {data?.content || error}
22 |
23 | >
24 | }
25 |
26 | export default Raw
--------------------------------------------------------------------------------
/frontend/src/theme/GlobalStyle.js:
--------------------------------------------------------------------------------
1 | import { createGlobalStyle } from 'styled-components'
2 |
3 | export default createGlobalStyle`
4 | body {
5 | margin: 0;
6 | padding: 0;
7 | background: ${(p) => p.theme.colors.background};
8 | font-family: 'JetBrains Mono', monospace;
9 | color: ${(p) => p.theme.colors.text};
10 | }
11 |
12 | @media all and (max-width: 1000px) {
13 | .lt-content-column {
14 | padding: 0 calc(5vw + 1em) 0 5vw !important;
15 | }
16 | }
17 | `
--------------------------------------------------------------------------------
/frontend/src/theme/ThemeProvider.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { ThemeProvider } from 'styled-components'
3 |
4 | const theme = {
5 | colors: {
6 | background: '#faf9f5',
7 | codeHighlight: '#00000008',
8 | border: '#565656',
9 | text: '#111111',
10 | error: '#ee1111',
11 | },
12 | }
13 |
14 | const Provider = ({ children }) => {children}
15 |
16 | export default Provider
--------------------------------------------------------------------------------
/frontend/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@7.12.11":
6 | version "7.12.11"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
9 | dependencies:
10 | "@babel/highlight" "^7.10.4"
11 |
12 | "@babel/code-frame@^7.10.1":
13 | version "7.10.1"
14 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff"
15 | integrity sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==
16 | dependencies:
17 | "@babel/highlight" "^7.10.1"
18 |
19 | "@babel/generator@^7.10.1":
20 | version "7.10.1"
21 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.1.tgz#4d14458e539bcb04ffe34124143f5c489f2dbca9"
22 | integrity sha512-AT0YPLQw9DI21tliuJIdplVfLHya6mcGa8ctkv7n4Qv+hYacJrKmNWIteAK1P9iyLikFIAkwqJ7HAOqIDLFfgA==
23 | dependencies:
24 | "@babel/types" "^7.10.1"
25 | jsesc "^2.5.1"
26 | lodash "^4.17.13"
27 | source-map "^0.5.0"
28 |
29 | "@babel/helper-annotate-as-pure@^7.0.0":
30 | version "7.10.1"
31 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268"
32 | integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==
33 | dependencies:
34 | "@babel/types" "^7.10.1"
35 |
36 | "@babel/helper-function-name@^7.10.1":
37 | version "7.10.1"
38 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz#92bd63829bfc9215aca9d9defa85f56b539454f4"
39 | integrity sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==
40 | dependencies:
41 | "@babel/helper-get-function-arity" "^7.10.1"
42 | "@babel/template" "^7.10.1"
43 | "@babel/types" "^7.10.1"
44 |
45 | "@babel/helper-get-function-arity@^7.10.1":
46 | version "7.10.1"
47 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d"
48 | integrity sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==
49 | dependencies:
50 | "@babel/types" "^7.10.1"
51 |
52 | "@babel/helper-module-imports@^7.0.0":
53 | version "7.10.1"
54 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876"
55 | integrity sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==
56 | dependencies:
57 | "@babel/types" "^7.10.1"
58 |
59 | "@babel/helper-split-export-declaration@^7.10.1":
60 | version "7.10.1"
61 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f"
62 | integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==
63 | dependencies:
64 | "@babel/types" "^7.10.1"
65 |
66 | "@babel/helper-validator-identifier@^7.10.1":
67 | version "7.10.1"
68 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz#5770b0c1a826c4f53f5ede5e153163e0318e94b5"
69 | integrity sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==
70 |
71 | "@babel/helper-validator-identifier@^7.12.11":
72 | version "7.12.11"
73 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
74 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
75 |
76 | "@babel/highlight@^7.10.1":
77 | version "7.10.1"
78 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.1.tgz#841d098ba613ba1a427a2b383d79e35552c38ae0"
79 | integrity sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==
80 | dependencies:
81 | "@babel/helper-validator-identifier" "^7.10.1"
82 | chalk "^2.0.0"
83 | js-tokens "^4.0.0"
84 |
85 | "@babel/highlight@^7.10.4":
86 | version "7.13.10"
87 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1"
88 | integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==
89 | dependencies:
90 | "@babel/helper-validator-identifier" "^7.12.11"
91 | chalk "^2.0.0"
92 | js-tokens "^4.0.0"
93 |
94 | "@babel/parser@^7.10.1":
95 | version "7.10.1"
96 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.1.tgz#2e142c27ca58aa2c7b119d09269b702c8bbad28c"
97 | integrity sha512-AUTksaz3FqugBkbTZ1i+lDLG5qy8hIzCaAxEtttU6C0BtZZU9pkNZtWSVAht4EW9kl46YBiyTGMp9xTTGqViNg==
98 |
99 | "@babel/runtime@7.12.5":
100 | version "7.12.5"
101 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
102 | integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
103 | dependencies:
104 | regenerator-runtime "^0.13.4"
105 |
106 | "@babel/runtime@^7.3.1", "@babel/runtime@^7.7.2":
107 | version "7.10.1"
108 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.1.tgz#b6eb75cac279588d3100baecd1b9894ea2840822"
109 | integrity sha512-nQbbCbQc9u/rpg1XCxoMYQTbSMVZjCDxErQ1ClCn9Pvcmv1lGads19ep0a2VsEiIJeHqjZley6EQGEC3Yo1xMA==
110 | dependencies:
111 | regenerator-runtime "^0.13.4"
112 |
113 | "@babel/runtime@^7.8.7":
114 | version "7.13.9"
115 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.9.tgz#97dbe2116e2630c489f22e0656decd60aaa1fcee"
116 | integrity sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==
117 | dependencies:
118 | regenerator-runtime "^0.13.4"
119 |
120 | "@babel/template@^7.10.1":
121 | version "7.10.1"
122 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811"
123 | integrity sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==
124 | dependencies:
125 | "@babel/code-frame" "^7.10.1"
126 | "@babel/parser" "^7.10.1"
127 | "@babel/types" "^7.10.1"
128 |
129 | "@babel/traverse@^7.4.5":
130 | version "7.10.1"
131 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27"
132 | integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==
133 | dependencies:
134 | "@babel/code-frame" "^7.10.1"
135 | "@babel/generator" "^7.10.1"
136 | "@babel/helper-function-name" "^7.10.1"
137 | "@babel/helper-split-export-declaration" "^7.10.1"
138 | "@babel/parser" "^7.10.1"
139 | "@babel/types" "^7.10.1"
140 | debug "^4.1.0"
141 | globals "^11.1.0"
142 | lodash "^4.17.13"
143 |
144 | "@babel/types@7.8.3":
145 | version "7.8.3"
146 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c"
147 | integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==
148 | dependencies:
149 | esutils "^2.0.2"
150 | lodash "^4.17.13"
151 | to-fast-properties "^2.0.0"
152 |
153 | "@babel/types@^7.10.1":
154 | version "7.10.1"
155 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.1.tgz#6886724d31c8022160a7db895e6731ca33483921"
156 | integrity sha512-L2yqUOpf3tzlW9GVuipgLEcZxnO+96SzR6fjXMuxxNkIgFJ5+07mHCZ+HkHqaeZu8+3LKnNJJ1bKbjBETQAsrA==
157 | dependencies:
158 | "@babel/helper-validator-identifier" "^7.10.1"
159 | lodash "^4.17.13"
160 | to-fast-properties "^2.0.0"
161 |
162 | "@emotion/is-prop-valid@^0.8.8":
163 | version "0.8.8"
164 | resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a"
165 | integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==
166 | dependencies:
167 | "@emotion/memoize" "0.7.4"
168 |
169 | "@emotion/memoize@0.7.4":
170 | version "0.7.4"
171 | resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb"
172 | integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==
173 |
174 | "@emotion/stylis@^0.8.4":
175 | version "0.8.5"
176 | resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04"
177 | integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==
178 |
179 | "@emotion/unitless@^0.7.4":
180 | version "0.7.5"
181 | resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
182 | integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
183 |
184 | "@hapi/accept@5.0.1":
185 | version "5.0.1"
186 | resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.1.tgz#068553e867f0f63225a506ed74e899441af53e10"
187 | integrity sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q==
188 | dependencies:
189 | "@hapi/boom" "9.x.x"
190 | "@hapi/hoek" "9.x.x"
191 |
192 | "@hapi/boom@9.x.x":
193 | version "9.1.2"
194 | resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.2.tgz#48bd41d67437164a2d636e3b5bc954f8c8dc5e38"
195 | integrity sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q==
196 | dependencies:
197 | "@hapi/hoek" "9.x.x"
198 |
199 | "@hapi/hoek@9.x.x":
200 | version "9.1.1"
201 | resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa"
202 | integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw==
203 |
204 | "@next/env@10.1.3":
205 | version "10.1.3"
206 | resolved "https://registry.yarnpkg.com/@next/env/-/env-10.1.3.tgz#29e5d62919b4a7b1859f8d36169848dc3f5ddebe"
207 | integrity sha512-q7z7NvmRs66lCQmVJtKjDxVtMTjSwP6ExVzaH46pbTH60MHgzEJ9H4jXrFLTihPmCIvpAv6Ai04jbS8dcg1ZMQ==
208 |
209 | "@next/polyfill-module@10.1.3":
210 | version "10.1.3"
211 | resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.1.3.tgz#beafe89bc4235d436fa0ed02c9d2a5d311fb0238"
212 | integrity sha512-1DtUVcuoBJAn5IrxIZQjUG1KTPkiXMYloykPSkRxawimgvG9dRj2kscU+4KGNSFxHoxW9c68VRCb+7MDz5aGGw==
213 |
214 | "@next/react-dev-overlay@10.1.3":
215 | version "10.1.3"
216 | resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.1.3.tgz#ee1c6033b29be9b383e061bd9705021d131ea445"
217 | integrity sha512-vIgUah3bR9+MKzwU1Ni5ONfYM0VdI42i7jZ+Ei1c0wjwkG9anVnDqhSQ3mVg62GP2nt7ExaaFyf9THbsw5KYXg==
218 | dependencies:
219 | "@babel/code-frame" "7.12.11"
220 | anser "1.4.9"
221 | chalk "4.0.0"
222 | classnames "2.2.6"
223 | css.escape "1.5.1"
224 | data-uri-to-buffer "3.0.1"
225 | platform "1.3.6"
226 | shell-quote "1.7.2"
227 | source-map "0.8.0-beta.0"
228 | stacktrace-parser "0.1.10"
229 | strip-ansi "6.0.0"
230 |
231 | "@next/react-refresh-utils@10.1.3":
232 | version "10.1.3"
233 | resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.1.3.tgz#65b3e1b9846c02452787fde1d54ad9c54b506dbd"
234 | integrity sha512-P4GJZuLKfD/o42JvGZ/xP4Hxg68vd3NeZxOLqIuQKFjjaYgC2IrO+lE5PTwGmRkytjfprJC+9j7Jss/xQAS6QA==
235 |
236 | "@opentelemetry/api@0.14.0":
237 | version "0.14.0"
238 | resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae"
239 | integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ==
240 | dependencies:
241 | "@opentelemetry/context-base" "^0.14.0"
242 |
243 | "@opentelemetry/context-base@^0.14.0":
244 | version "0.14.0"
245 | resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001"
246 | integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw==
247 |
248 | "@types/node@*":
249 | version "14.14.37"
250 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e"
251 | integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==
252 |
253 | anser@1.4.9:
254 | version "1.4.9"
255 | resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760"
256 | integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA==
257 |
258 | ansi-regex@^5.0.0:
259 | version "5.0.0"
260 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
261 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
262 |
263 | ansi-styles@^3.2.1:
264 | version "3.2.1"
265 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
266 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
267 | dependencies:
268 | color-convert "^1.9.0"
269 |
270 | ansi-styles@^4.1.0:
271 | version "4.3.0"
272 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
273 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
274 | dependencies:
275 | color-convert "^2.0.1"
276 |
277 | anymatch@~3.1.1:
278 | version "3.1.2"
279 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
280 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
281 | dependencies:
282 | normalize-path "^3.0.0"
283 | picomatch "^2.0.4"
284 |
285 | array-filter@^1.0.0:
286 | version "1.0.0"
287 | resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
288 | integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
289 |
290 | asn1.js@^5.2.0:
291 | version "5.4.1"
292 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
293 | integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
294 | dependencies:
295 | bn.js "^4.0.0"
296 | inherits "^2.0.1"
297 | minimalistic-assert "^1.0.0"
298 | safer-buffer "^2.1.0"
299 |
300 | assert@2.0.0:
301 | version "2.0.0"
302 | resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32"
303 | integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==
304 | dependencies:
305 | es6-object-assign "^1.1.0"
306 | is-nan "^1.2.1"
307 | object-is "^1.0.1"
308 | util "^0.12.0"
309 |
310 | assert@^1.1.1:
311 | version "1.5.0"
312 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
313 | integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
314 | dependencies:
315 | object-assign "^4.1.1"
316 | util "0.10.3"
317 |
318 | ast-types@0.13.2:
319 | version "0.13.2"
320 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48"
321 | integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==
322 |
323 | available-typed-arrays@^1.0.2:
324 | version "1.0.2"
325 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5"
326 | integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==
327 | dependencies:
328 | array-filter "^1.0.0"
329 |
330 | axios@^0.21.1:
331 | version "0.21.1"
332 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8"
333 | integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==
334 | dependencies:
335 | follow-redirects "^1.10.0"
336 |
337 | "babel-plugin-styled-components@>= 1":
338 | version "1.10.7"
339 | resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz#3494e77914e9989b33cc2d7b3b29527a949d635c"
340 | integrity sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg==
341 | dependencies:
342 | "@babel/helper-annotate-as-pure" "^7.0.0"
343 | "@babel/helper-module-imports" "^7.0.0"
344 | babel-plugin-syntax-jsx "^6.18.0"
345 | lodash "^4.17.11"
346 |
347 | babel-plugin-styled-components@^1.12.0:
348 | version "1.12.0"
349 | resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz#1dec1676512177de6b827211e9eda5a30db4f9b9"
350 | integrity sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==
351 | dependencies:
352 | "@babel/helper-annotate-as-pure" "^7.0.0"
353 | "@babel/helper-module-imports" "^7.0.0"
354 | babel-plugin-syntax-jsx "^6.18.0"
355 | lodash "^4.17.11"
356 |
357 | babel-plugin-syntax-jsx@6.18.0, babel-plugin-syntax-jsx@^6.18.0:
358 | version "6.18.0"
359 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
360 | integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
361 |
362 | babel-runtime@^6.18.0:
363 | version "6.26.0"
364 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
365 | integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
366 | dependencies:
367 | core-js "^2.4.0"
368 | regenerator-runtime "^0.11.0"
369 |
370 | bail@^1.0.0:
371 | version "1.0.5"
372 | resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
373 | integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==
374 |
375 | base64-js@^1.0.2:
376 | version "1.5.1"
377 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
378 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
379 |
380 | big.js@^5.2.2:
381 | version "5.2.2"
382 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
383 | integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
384 |
385 | binary-extensions@^2.0.0:
386 | version "2.2.0"
387 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
388 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
389 |
390 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
391 | version "4.12.0"
392 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
393 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
394 |
395 | bn.js@^5.0.0, bn.js@^5.1.1:
396 | version "5.2.0"
397 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
398 | integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
399 |
400 | braces@~3.0.2:
401 | version "3.0.2"
402 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
403 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
404 | dependencies:
405 | fill-range "^7.0.1"
406 |
407 | brorand@^1.0.1, brorand@^1.1.0:
408 | version "1.1.0"
409 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
410 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
411 |
412 | browserify-aes@^1.0.0, browserify-aes@^1.0.4:
413 | version "1.2.0"
414 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
415 | integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
416 | dependencies:
417 | buffer-xor "^1.0.3"
418 | cipher-base "^1.0.0"
419 | create-hash "^1.1.0"
420 | evp_bytestokey "^1.0.3"
421 | inherits "^2.0.1"
422 | safe-buffer "^5.0.1"
423 |
424 | browserify-cipher@^1.0.0:
425 | version "1.0.1"
426 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
427 | integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
428 | dependencies:
429 | browserify-aes "^1.0.4"
430 | browserify-des "^1.0.0"
431 | evp_bytestokey "^1.0.0"
432 |
433 | browserify-des@^1.0.0:
434 | version "1.0.2"
435 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
436 | integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
437 | dependencies:
438 | cipher-base "^1.0.1"
439 | des.js "^1.0.0"
440 | inherits "^2.0.1"
441 | safe-buffer "^5.1.2"
442 |
443 | browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
444 | version "4.1.0"
445 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
446 | integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
447 | dependencies:
448 | bn.js "^5.0.0"
449 | randombytes "^2.0.1"
450 |
451 | browserify-sign@^4.0.0:
452 | version "4.2.1"
453 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3"
454 | integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
455 | dependencies:
456 | bn.js "^5.1.1"
457 | browserify-rsa "^4.0.1"
458 | create-hash "^1.2.0"
459 | create-hmac "^1.1.7"
460 | elliptic "^6.5.3"
461 | inherits "^2.0.4"
462 | parse-asn1 "^5.1.5"
463 | readable-stream "^3.6.0"
464 | safe-buffer "^5.2.0"
465 |
466 | browserify-zlib@0.2.0, browserify-zlib@^0.2.0:
467 | version "0.2.0"
468 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
469 | integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
470 | dependencies:
471 | pako "~1.0.5"
472 |
473 | browserslist@4.16.1:
474 | version "4.16.1"
475 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766"
476 | integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==
477 | dependencies:
478 | caniuse-lite "^1.0.30001173"
479 | colorette "^1.2.1"
480 | electron-to-chromium "^1.3.634"
481 | escalade "^3.1.1"
482 | node-releases "^1.1.69"
483 |
484 | buffer-xor@^1.0.3:
485 | version "1.0.3"
486 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
487 | integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
488 |
489 | buffer@5.6.0:
490 | version "5.6.0"
491 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786"
492 | integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==
493 | dependencies:
494 | base64-js "^1.0.2"
495 | ieee754 "^1.1.4"
496 |
497 | buffer@^4.3.0:
498 | version "4.9.2"
499 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
500 | integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
501 | dependencies:
502 | base64-js "^1.0.2"
503 | ieee754 "^1.1.4"
504 | isarray "^1.0.0"
505 |
506 | builtin-status-codes@^3.0.0:
507 | version "3.0.0"
508 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
509 | integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
510 |
511 | bytes@3.1.0:
512 | version "3.1.0"
513 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
514 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
515 |
516 | call-bind@^1.0.0, call-bind@^1.0.2:
517 | version "1.0.2"
518 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
519 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
520 | dependencies:
521 | function-bind "^1.1.1"
522 | get-intrinsic "^1.0.2"
523 |
524 | camelize@^1.0.0:
525 | version "1.0.0"
526 | resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b"
527 | integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=
528 |
529 | caniuse-lite@^1.0.30001173, caniuse-lite@^1.0.30001179:
530 | version "1.0.30001208"
531 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9"
532 | integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA==
533 |
534 | chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.2:
535 | version "2.4.2"
536 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
537 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
538 | dependencies:
539 | ansi-styles "^3.2.1"
540 | escape-string-regexp "^1.0.5"
541 | supports-color "^5.3.0"
542 |
543 | chalk@4.0.0:
544 | version "4.0.0"
545 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72"
546 | integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==
547 | dependencies:
548 | ansi-styles "^4.1.0"
549 | supports-color "^7.1.0"
550 |
551 | character-entities-legacy@^1.0.0:
552 | version "1.1.4"
553 | resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
554 | integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==
555 |
556 | character-entities@^1.0.0:
557 | version "1.2.4"
558 | resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b"
559 | integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==
560 |
561 | character-reference-invalid@^1.0.0:
562 | version "1.1.4"
563 | resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
564 | integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
565 |
566 | chokidar@3.5.1:
567 | version "3.5.1"
568 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
569 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
570 | dependencies:
571 | anymatch "~3.1.1"
572 | braces "~3.0.2"
573 | glob-parent "~5.1.0"
574 | is-binary-path "~2.1.0"
575 | is-glob "~4.0.1"
576 | normalize-path "~3.0.0"
577 | readdirp "~3.5.0"
578 | optionalDependencies:
579 | fsevents "~2.3.1"
580 |
581 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
582 | version "1.0.4"
583 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
584 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
585 | dependencies:
586 | inherits "^2.0.1"
587 | safe-buffer "^5.0.1"
588 |
589 | classnames@2.2.6, classnames@^2.2.3:
590 | version "2.2.6"
591 | resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
592 | integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
593 |
594 | clipboard-copy@^3.0.0:
595 | version "3.1.0"
596 | resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-3.1.0.tgz#4c59030a43d4988990564a664baeafba99f78ca4"
597 | integrity sha512-Xsu1NddBXB89IUauda5BIq3Zq73UWkjkaQlPQbLNvNsd5WBMnTWPNKYR6HGaySOxGYZ+BKxP2E9X4ElnI3yiPA==
598 |
599 | clipboard@^2.0.0:
600 | version "2.0.6"
601 | resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376"
602 | integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==
603 | dependencies:
604 | good-listener "^1.2.2"
605 | select "^1.1.2"
606 | tiny-emitter "^2.0.0"
607 |
608 | clsx@^1.0.4:
609 | version "1.1.1"
610 | resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
611 | integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
612 |
613 | collapse-white-space@^1.0.2:
614 | version "1.0.6"
615 | resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
616 | integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==
617 |
618 | color-convert@^1.9.0:
619 | version "1.9.3"
620 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
621 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
622 | dependencies:
623 | color-name "1.1.3"
624 |
625 | color-convert@^2.0.1:
626 | version "2.0.1"
627 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
628 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
629 | dependencies:
630 | color-name "~1.1.4"
631 |
632 | color-name@1.1.3:
633 | version "1.1.3"
634 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
635 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
636 |
637 | color-name@~1.1.4:
638 | version "1.1.4"
639 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
640 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
641 |
642 | colorette@^1.2.1:
643 | version "1.2.2"
644 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
645 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
646 |
647 | comma-separated-tokens@^1.0.0:
648 | version "1.0.8"
649 | resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
650 | integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
651 |
652 | commondir@^1.0.1:
653 | version "1.0.1"
654 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
655 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
656 |
657 | console-browserify@^1.1.0:
658 | version "1.2.0"
659 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
660 | integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
661 |
662 | constants-browserify@1.0.0, constants-browserify@^1.0.0:
663 | version "1.0.0"
664 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
665 | integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
666 |
667 | convert-source-map@1.7.0:
668 | version "1.7.0"
669 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
670 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
671 | dependencies:
672 | safe-buffer "~5.1.1"
673 |
674 | core-js@^2.4.0:
675 | version "2.6.11"
676 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
677 | integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
678 |
679 | core-util-is@~1.0.0:
680 | version "1.0.2"
681 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
682 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
683 |
684 | create-ecdh@^4.0.0:
685 | version "4.0.4"
686 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
687 | integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
688 | dependencies:
689 | bn.js "^4.1.0"
690 | elliptic "^6.5.3"
691 |
692 | create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
693 | version "1.2.0"
694 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
695 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
696 | dependencies:
697 | cipher-base "^1.0.1"
698 | inherits "^2.0.1"
699 | md5.js "^1.3.4"
700 | ripemd160 "^2.0.1"
701 | sha.js "^2.4.0"
702 |
703 | create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
704 | version "1.1.7"
705 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
706 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
707 | dependencies:
708 | cipher-base "^1.0.3"
709 | create-hash "^1.1.0"
710 | inherits "^2.0.1"
711 | ripemd160 "^2.0.0"
712 | safe-buffer "^5.0.1"
713 | sha.js "^2.4.8"
714 |
715 | crypto-browserify@3.12.0, crypto-browserify@^3.11.0:
716 | version "3.12.0"
717 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
718 | integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
719 | dependencies:
720 | browserify-cipher "^1.0.0"
721 | browserify-sign "^4.0.0"
722 | create-ecdh "^4.0.0"
723 | create-hash "^1.1.0"
724 | create-hmac "^1.1.0"
725 | diffie-hellman "^5.0.0"
726 | inherits "^2.0.1"
727 | pbkdf2 "^3.0.3"
728 | public-encrypt "^4.0.0"
729 | randombytes "^2.0.0"
730 | randomfill "^1.0.3"
731 |
732 | css-color-keywords@^1.0.0:
733 | version "1.0.0"
734 | resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
735 | integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=
736 |
737 | css-to-react-native@^3.0.0:
738 | version "3.0.0"
739 | resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756"
740 | integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==
741 | dependencies:
742 | camelize "^1.0.0"
743 | css-color-keywords "^1.0.0"
744 | postcss-value-parser "^4.0.2"
745 |
746 | css.escape@1.5.1:
747 | version "1.5.1"
748 | resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
749 | integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
750 |
751 | cssnano-preset-simple@1.2.2:
752 | version "1.2.2"
753 | resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.2.tgz#c631bf79ffec7fdfc4069e2f2da3ca67d99d8413"
754 | integrity sha512-gtvrcRSGtP3hA/wS8mFVinFnQdEsEpm3v4I/s/KmNjpdWaThV/4E5EojAzFXxyT5OCSRPLlHR9iQexAqKHlhGQ==
755 | dependencies:
756 | caniuse-lite "^1.0.30001179"
757 | postcss "^7.0.32"
758 |
759 | cssnano-simple@1.2.2:
760 | version "1.2.2"
761 | resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.2.tgz#72c2c3970e67123c3b4130894a30dc1050267007"
762 | integrity sha512-4slyYc1w4JhSbhVX5xi9G0aQ42JnRyPg+7l7cqoNyoIDzfWx40Rq3JQZnoAWDu60A4AvKVp9ln/YSUOdhDX68g==
763 | dependencies:
764 | cssnano-preset-simple "1.2.2"
765 | postcss "^7.0.32"
766 |
767 | csstype@^3.0.2:
768 | version "3.0.7"
769 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b"
770 | integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==
771 |
772 | data-uri-to-buffer@3.0.1:
773 | version "3.0.1"
774 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636"
775 | integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==
776 |
777 | debug@2:
778 | version "2.6.9"
779 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
780 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
781 | dependencies:
782 | ms "2.0.0"
783 |
784 | debug@^4.1.0:
785 | version "4.1.1"
786 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
787 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
788 | dependencies:
789 | ms "^2.1.1"
790 |
791 | define-properties@^1.1.3:
792 | version "1.1.3"
793 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
794 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
795 | dependencies:
796 | object-keys "^1.0.12"
797 |
798 | delegate@^3.1.2:
799 | version "3.2.0"
800 | resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
801 | integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
802 |
803 | depd@~1.1.2:
804 | version "1.1.2"
805 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
806 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
807 |
808 | des.js@^1.0.0:
809 | version "1.0.1"
810 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
811 | integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
812 | dependencies:
813 | inherits "^2.0.1"
814 | minimalistic-assert "^1.0.0"
815 |
816 | diffie-hellman@^5.0.0:
817 | version "5.0.3"
818 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
819 | integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
820 | dependencies:
821 | bn.js "^4.1.0"
822 | miller-rabin "^4.0.0"
823 | randombytes "^2.0.0"
824 |
825 | dom-helpers@^5.1.3:
826 | version "5.2.0"
827 | resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b"
828 | integrity sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==
829 | dependencies:
830 | "@babel/runtime" "^7.8.7"
831 | csstype "^3.0.2"
832 |
833 | dom-serializer@^1.0.1:
834 | version "1.0.1"
835 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.0.1.tgz#79695eb49af3cd8abc8d93a73da382deb1ca0795"
836 | integrity sha512-1Aj1Qy3YLbdslkI75QEOfdp9TkQ3o8LRISAzxOibjBs/xWwr1WxZFOQphFkZuepHFGo+kB8e5FVJSS0faAJ4Rw==
837 | dependencies:
838 | domelementtype "^2.0.1"
839 | domhandler "^3.0.0"
840 | entities "^2.0.0"
841 |
842 | domain-browser@4.19.0:
843 | version "4.19.0"
844 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1"
845 | integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==
846 |
847 | domain-browser@^1.1.1:
848 | version "1.2.0"
849 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
850 | integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
851 |
852 | domelementtype@^2.0.1:
853 | version "2.0.1"
854 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
855 | integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==
856 |
857 | domhandler@^3.0, domhandler@^3.0.0:
858 | version "3.0.0"
859 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9"
860 | integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==
861 | dependencies:
862 | domelementtype "^2.0.1"
863 |
864 | domutils@^2.0.0:
865 | version "2.2.0"
866 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.2.0.tgz#f3ce1610af5c30280bde1b71f84b018b958f32cf"
867 | integrity sha512-0haAxVr1PR0SqYwCH7mxMpHZUwjih9oPPedqpR/KufsnxPyZ9dyVw1R5093qnJF3WXSbjBkdzRWLw/knJV/fAg==
868 | dependencies:
869 | dom-serializer "^1.0.1"
870 | domelementtype "^2.0.1"
871 | domhandler "^3.0.0"
872 |
873 | electron-to-chromium@^1.3.634:
874 | version "1.3.712"
875 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.712.tgz#ae467ffe5f95961c6d41ceefe858fc36eb53b38f"
876 | integrity sha512-3kRVibBeCM4vsgoHHGKHmPocLqtFAGTrebXxxtgKs87hNUzXrX2NuS3jnBys7IozCnw7viQlozxKkmty2KNfrw==
877 |
878 | elliptic@^6.5.3:
879 | version "6.5.4"
880 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
881 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
882 | dependencies:
883 | bn.js "^4.11.9"
884 | brorand "^1.1.0"
885 | hash.js "^1.0.0"
886 | hmac-drbg "^1.0.1"
887 | inherits "^2.0.4"
888 | minimalistic-assert "^1.0.1"
889 | minimalistic-crypto-utils "^1.0.1"
890 |
891 | emojis-list@^2.0.0:
892 | version "2.1.0"
893 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
894 | integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
895 |
896 | encoding@0.1.13:
897 | version "0.1.13"
898 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
899 | integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
900 | dependencies:
901 | iconv-lite "^0.6.2"
902 |
903 | entities@^2.0.0:
904 | version "2.0.2"
905 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436"
906 | integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==
907 |
908 | es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2:
909 | version "1.18.0"
910 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4"
911 | integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==
912 | dependencies:
913 | call-bind "^1.0.2"
914 | es-to-primitive "^1.2.1"
915 | function-bind "^1.1.1"
916 | get-intrinsic "^1.1.1"
917 | has "^1.0.3"
918 | has-symbols "^1.0.2"
919 | is-callable "^1.2.3"
920 | is-negative-zero "^2.0.1"
921 | is-regex "^1.1.2"
922 | is-string "^1.0.5"
923 | object-inspect "^1.9.0"
924 | object-keys "^1.1.1"
925 | object.assign "^4.1.2"
926 | string.prototype.trimend "^1.0.4"
927 | string.prototype.trimstart "^1.0.4"
928 | unbox-primitive "^1.0.0"
929 |
930 | es-to-primitive@^1.2.1:
931 | version "1.2.1"
932 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
933 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
934 | dependencies:
935 | is-callable "^1.1.4"
936 | is-date-object "^1.0.1"
937 | is-symbol "^1.0.2"
938 |
939 | es6-object-assign@^1.1.0:
940 | version "1.1.0"
941 | resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
942 | integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
943 |
944 | escalade@^3.1.1:
945 | version "3.1.1"
946 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
947 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
948 |
949 | escape-string-regexp@^1.0.5:
950 | version "1.0.5"
951 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
952 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
953 |
954 | esutils@^2.0.2:
955 | version "2.0.3"
956 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
957 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
958 |
959 | etag@1.8.1:
960 | version "1.8.1"
961 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
962 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
963 |
964 | events@^3.0.0:
965 | version "3.3.0"
966 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
967 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
968 |
969 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
970 | version "1.0.3"
971 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
972 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
973 | dependencies:
974 | md5.js "^1.3.4"
975 | safe-buffer "^5.1.1"
976 |
977 | exenv@^1.2.0:
978 | version "1.2.2"
979 | resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
980 | integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=
981 |
982 | extend@^3.0.0:
983 | version "3.0.2"
984 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
985 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
986 |
987 | fault@^1.0.2:
988 | version "1.0.4"
989 | resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13"
990 | integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==
991 | dependencies:
992 | format "^0.2.0"
993 |
994 | fill-range@^7.0.1:
995 | version "7.0.1"
996 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
997 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
998 | dependencies:
999 | to-regex-range "^5.0.1"
1000 |
1001 | find-cache-dir@3.3.1:
1002 | version "3.3.1"
1003 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
1004 | integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
1005 | dependencies:
1006 | commondir "^1.0.1"
1007 | make-dir "^3.0.2"
1008 | pkg-dir "^4.1.0"
1009 |
1010 | find-up@^4.0.0:
1011 | version "4.1.0"
1012 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1013 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
1014 | dependencies:
1015 | locate-path "^5.0.0"
1016 | path-exists "^4.0.0"
1017 |
1018 | follow-redirects@^1.10.0:
1019 | version "1.13.1"
1020 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7"
1021 | integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==
1022 |
1023 | foreach@^2.0.5:
1024 | version "2.0.5"
1025 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
1026 | integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
1027 |
1028 | format@^0.2.0:
1029 | version "0.2.2"
1030 | resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
1031 | integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
1032 |
1033 | fsevents@~2.3.1:
1034 | version "2.3.2"
1035 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
1036 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
1037 |
1038 | function-bind@^1.1.1:
1039 | version "1.1.1"
1040 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1041 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
1042 |
1043 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.1:
1044 | version "1.1.1"
1045 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
1046 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
1047 | dependencies:
1048 | function-bind "^1.1.1"
1049 | has "^1.0.3"
1050 | has-symbols "^1.0.1"
1051 |
1052 | get-orientation@1.1.2:
1053 | version "1.1.2"
1054 | resolved "https://registry.yarnpkg.com/get-orientation/-/get-orientation-1.1.2.tgz#20507928951814f8a91ded0a0e67b29dfab98947"
1055 | integrity sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ==
1056 | dependencies:
1057 | stream-parser "^0.3.1"
1058 |
1059 | glob-parent@~5.1.0:
1060 | version "5.1.2"
1061 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1062 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1063 | dependencies:
1064 | is-glob "^4.0.1"
1065 |
1066 | glob-to-regexp@^0.4.1:
1067 | version "0.4.1"
1068 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
1069 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
1070 |
1071 | globals@^11.1.0:
1072 | version "11.12.0"
1073 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
1074 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
1075 |
1076 | good-listener@^1.2.2:
1077 | version "1.2.2"
1078 | resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
1079 | integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=
1080 | dependencies:
1081 | delegate "^3.1.2"
1082 |
1083 | graceful-fs@^4.1.2:
1084 | version "4.2.6"
1085 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
1086 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
1087 |
1088 | has-bigints@^1.0.1:
1089 | version "1.0.1"
1090 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
1091 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
1092 |
1093 | has-flag@^3.0.0:
1094 | version "3.0.0"
1095 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1096 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
1097 |
1098 | has-flag@^4.0.0:
1099 | version "4.0.0"
1100 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1101 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1102 |
1103 | has-symbols@^1.0.1, has-symbols@^1.0.2:
1104 | version "1.0.2"
1105 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
1106 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
1107 |
1108 | has@^1.0.3:
1109 | version "1.0.3"
1110 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1111 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1112 | dependencies:
1113 | function-bind "^1.1.1"
1114 |
1115 | hash-base@^3.0.0:
1116 | version "3.1.0"
1117 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
1118 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
1119 | dependencies:
1120 | inherits "^2.0.4"
1121 | readable-stream "^3.6.0"
1122 | safe-buffer "^5.2.0"
1123 |
1124 | hash.js@^1.0.0, hash.js@^1.0.3:
1125 | version "1.1.7"
1126 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
1127 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
1128 | dependencies:
1129 | inherits "^2.0.3"
1130 | minimalistic-assert "^1.0.1"
1131 |
1132 | hast-util-parse-selector@^2.0.0:
1133 | version "2.2.4"
1134 | resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974"
1135 | integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA==
1136 |
1137 | hastscript@^5.0.0:
1138 | version "5.1.2"
1139 | resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a"
1140 | integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==
1141 | dependencies:
1142 | comma-separated-tokens "^1.0.0"
1143 | hast-util-parse-selector "^2.0.0"
1144 | property-information "^5.0.0"
1145 | space-separated-tokens "^1.0.0"
1146 |
1147 | he@1.2.0:
1148 | version "1.2.0"
1149 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
1150 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
1151 |
1152 | highlight.js@~9.12.0:
1153 | version "9.12.0"
1154 | resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e"
1155 | integrity sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=
1156 |
1157 | highlight.js@~9.15.0, highlight.js@~9.15.1:
1158 | version "9.15.10"
1159 | resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2"
1160 | integrity sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==
1161 |
1162 | hmac-drbg@^1.0.1:
1163 | version "1.0.1"
1164 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
1165 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
1166 | dependencies:
1167 | hash.js "^1.0.3"
1168 | minimalistic-assert "^1.0.0"
1169 | minimalistic-crypto-utils "^1.0.1"
1170 |
1171 | hoist-non-react-statics@^3.0.0:
1172 | version "3.3.2"
1173 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
1174 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
1175 | dependencies:
1176 | react-is "^16.7.0"
1177 |
1178 | html-to-react@^1.3.4:
1179 | version "1.4.3"
1180 | resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.3.tgz#1430a1cb581ef29533892ec70a2fdc4554b17ffd"
1181 | integrity sha512-txe09A3vxW8yEZGJXJ1is5gGDfBEVACmZDSgwDyH5EsfRdOubBwBCg63ZThZP0xBn0UE4FyvMXZXmohusCxDcg==
1182 | dependencies:
1183 | domhandler "^3.0"
1184 | htmlparser2 "^4.1.0"
1185 | lodash.camelcase "^4.3.0"
1186 | ramda "^0.27"
1187 |
1188 | htmlparser2@^4.1.0:
1189 | version "4.1.0"
1190 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78"
1191 | integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==
1192 | dependencies:
1193 | domelementtype "^2.0.1"
1194 | domhandler "^3.0.0"
1195 | domutils "^2.0.0"
1196 | entities "^2.0.0"
1197 |
1198 | http-errors@1.7.3:
1199 | version "1.7.3"
1200 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
1201 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
1202 | dependencies:
1203 | depd "~1.1.2"
1204 | inherits "2.0.4"
1205 | setprototypeof "1.1.1"
1206 | statuses ">= 1.5.0 < 2"
1207 | toidentifier "1.0.0"
1208 |
1209 | https-browserify@1.0.0, https-browserify@^1.0.0:
1210 | version "1.0.0"
1211 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
1212 | integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
1213 |
1214 | iconv-lite@0.4.24:
1215 | version "0.4.24"
1216 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
1217 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
1218 | dependencies:
1219 | safer-buffer ">= 2.1.2 < 3"
1220 |
1221 | iconv-lite@^0.6.2:
1222 | version "0.6.2"
1223 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01"
1224 | integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==
1225 | dependencies:
1226 | safer-buffer ">= 2.1.2 < 3.0.0"
1227 |
1228 | ieee754@^1.1.4:
1229 | version "1.2.1"
1230 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
1231 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
1232 |
1233 | inherits@2.0.1:
1234 | version "2.0.1"
1235 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
1236 | integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
1237 |
1238 | inherits@2.0.3:
1239 | version "2.0.3"
1240 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1241 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
1242 |
1243 | inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
1244 | version "2.0.4"
1245 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1246 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1247 |
1248 | is-alphabetical@^1.0.0:
1249 | version "1.0.4"
1250 | resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
1251 | integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
1252 |
1253 | is-alphanumerical@^1.0.0:
1254 | version "1.0.4"
1255 | resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
1256 | integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==
1257 | dependencies:
1258 | is-alphabetical "^1.0.0"
1259 | is-decimal "^1.0.0"
1260 |
1261 | is-arguments@^1.0.4:
1262 | version "1.1.0"
1263 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
1264 | integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
1265 | dependencies:
1266 | call-bind "^1.0.0"
1267 |
1268 | is-bigint@^1.0.1:
1269 | version "1.0.1"
1270 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2"
1271 | integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==
1272 |
1273 | is-binary-path@~2.1.0:
1274 | version "2.1.0"
1275 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
1276 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
1277 | dependencies:
1278 | binary-extensions "^2.0.0"
1279 |
1280 | is-boolean-object@^1.1.0:
1281 | version "1.1.0"
1282 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0"
1283 | integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==
1284 | dependencies:
1285 | call-bind "^1.0.0"
1286 |
1287 | is-buffer@^1.1.4:
1288 | version "1.1.6"
1289 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
1290 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
1291 |
1292 | is-callable@^1.1.4, is-callable@^1.2.3:
1293 | version "1.2.3"
1294 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
1295 | integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
1296 |
1297 | is-date-object@^1.0.1:
1298 | version "1.0.2"
1299 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
1300 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
1301 |
1302 | is-decimal@^1.0.0:
1303 | version "1.0.4"
1304 | resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
1305 | integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==
1306 |
1307 | is-extglob@^2.1.1:
1308 | version "2.1.1"
1309 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1310 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
1311 |
1312 | is-generator-function@^1.0.7:
1313 | version "1.0.8"
1314 | resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b"
1315 | integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==
1316 |
1317 | is-glob@^4.0.1, is-glob@~4.0.1:
1318 | version "4.0.1"
1319 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
1320 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
1321 | dependencies:
1322 | is-extglob "^2.1.1"
1323 |
1324 | is-hexadecimal@^1.0.0:
1325 | version "1.0.4"
1326 | resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
1327 | integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
1328 |
1329 | is-nan@^1.2.1:
1330 | version "1.3.2"
1331 | resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d"
1332 | integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==
1333 | dependencies:
1334 | call-bind "^1.0.0"
1335 | define-properties "^1.1.3"
1336 |
1337 | is-negative-zero@^2.0.1:
1338 | version "2.0.1"
1339 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
1340 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
1341 |
1342 | is-number-object@^1.0.4:
1343 | version "1.0.4"
1344 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
1345 | integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
1346 |
1347 | is-number@^7.0.0:
1348 | version "7.0.0"
1349 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1350 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1351 |
1352 | is-plain-obj@^1.1.0:
1353 | version "1.1.0"
1354 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
1355 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
1356 |
1357 | is-regex@^1.1.2:
1358 | version "1.1.2"
1359 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251"
1360 | integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==
1361 | dependencies:
1362 | call-bind "^1.0.2"
1363 | has-symbols "^1.0.1"
1364 |
1365 | is-string@^1.0.5:
1366 | version "1.0.5"
1367 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
1368 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
1369 |
1370 | is-symbol@^1.0.2, is-symbol@^1.0.3:
1371 | version "1.0.3"
1372 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
1373 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
1374 | dependencies:
1375 | has-symbols "^1.0.1"
1376 |
1377 | is-typed-array@^1.1.3:
1378 | version "1.1.5"
1379 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e"
1380 | integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==
1381 | dependencies:
1382 | available-typed-arrays "^1.0.2"
1383 | call-bind "^1.0.2"
1384 | es-abstract "^1.18.0-next.2"
1385 | foreach "^2.0.5"
1386 | has-symbols "^1.0.1"
1387 |
1388 | is-whitespace-character@^1.0.0:
1389 | version "1.0.4"
1390 | resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
1391 | integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==
1392 |
1393 | is-word-character@^1.0.0:
1394 | version "1.0.4"
1395 | resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230"
1396 | integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==
1397 |
1398 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
1399 | version "1.0.0"
1400 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1401 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
1402 |
1403 | isobject@^2.0.0:
1404 | version "2.1.0"
1405 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1406 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
1407 | dependencies:
1408 | isarray "1.0.0"
1409 |
1410 | jest-worker@27.0.0-next.5:
1411 | version "27.0.0-next.5"
1412 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.0-next.5.tgz#5985ee29b12a4e191f4aae4bb73b97971d86ec28"
1413 | integrity sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g==
1414 | dependencies:
1415 | "@types/node" "*"
1416 | merge-stream "^2.0.0"
1417 | supports-color "^8.0.0"
1418 |
1419 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
1420 | version "4.0.0"
1421 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1422 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1423 |
1424 | jsesc@^2.5.1:
1425 | version "2.5.2"
1426 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
1427 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
1428 |
1429 | json5@^1.0.1:
1430 | version "1.0.1"
1431 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
1432 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
1433 | dependencies:
1434 | minimist "^1.2.0"
1435 |
1436 | katex@^0.9.0:
1437 | version "0.9.0"
1438 | resolved "https://registry.yarnpkg.com/katex/-/katex-0.9.0.tgz#26a7d082c21d53725422d2d71da9b2d8455fbd4a"
1439 | integrity sha512-lp3x90LT1tDZBW2tjLheJ98wmRMRjUHwk4QpaswT9bhqoQZ+XA4cPcjcQBxgOQNwaOSt6ZeL/a6GKQ1of3LFxQ==
1440 | dependencies:
1441 | match-at "^0.1.1"
1442 |
1443 | line-column@^1.0.2:
1444 | version "1.0.2"
1445 | resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2"
1446 | integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI=
1447 | dependencies:
1448 | isarray "^1.0.0"
1449 | isobject "^2.0.0"
1450 |
1451 | loader-utils@1.2.3:
1452 | version "1.2.3"
1453 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
1454 | integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
1455 | dependencies:
1456 | big.js "^5.2.2"
1457 | emojis-list "^2.0.0"
1458 | json5 "^1.0.1"
1459 |
1460 | locate-path@^5.0.0:
1461 | version "5.0.0"
1462 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
1463 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
1464 | dependencies:
1465 | p-locate "^4.1.0"
1466 |
1467 | lodash.camelcase@^4.3.0:
1468 | version "4.3.0"
1469 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
1470 | integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
1471 |
1472 | lodash.sortby@^4.7.0:
1473 | version "4.7.0"
1474 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
1475 | integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
1476 |
1477 | lodash@^4.17.11, lodash@^4.17.13:
1478 | version "4.17.15"
1479 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
1480 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
1481 |
1482 | loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
1483 | version "1.4.0"
1484 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
1485 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
1486 | dependencies:
1487 | js-tokens "^3.0.0 || ^4.0.0"
1488 |
1489 | lowlight@1.12.1:
1490 | version "1.12.1"
1491 | resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.12.1.tgz#014acf8dd73a370e02ff1cc61debcde3bb1681eb"
1492 | integrity sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w==
1493 | dependencies:
1494 | fault "^1.0.2"
1495 | highlight.js "~9.15.0"
1496 |
1497 | lowlight@~1.9.1:
1498 | version "1.9.2"
1499 | resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.9.2.tgz#0b9127e3cec2c3021b7795dd81005c709a42fdd1"
1500 | integrity sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q==
1501 | dependencies:
1502 | fault "^1.0.2"
1503 | highlight.js "~9.12.0"
1504 |
1505 | make-dir@^3.0.2:
1506 | version "3.1.0"
1507 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
1508 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
1509 | dependencies:
1510 | semver "^6.0.0"
1511 |
1512 | markdown-escapes@^1.0.0:
1513 | version "1.0.4"
1514 | resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535"
1515 | integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==
1516 |
1517 | match-at@^0.1.1:
1518 | version "0.1.1"
1519 | resolved "https://registry.yarnpkg.com/match-at/-/match-at-0.1.1.tgz#25d040d291777704d5e6556bbb79230ec2de0540"
1520 | integrity sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q==
1521 |
1522 | md5.js@^1.3.4:
1523 | version "1.3.5"
1524 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
1525 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
1526 | dependencies:
1527 | hash-base "^3.0.0"
1528 | inherits "^2.0.1"
1529 | safe-buffer "^5.1.2"
1530 |
1531 | mdast-add-list-metadata@1.0.1:
1532 | version "1.0.1"
1533 | resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf"
1534 | integrity sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA==
1535 | dependencies:
1536 | unist-util-visit-parents "1.1.2"
1537 |
1538 | merge-stream@^2.0.0:
1539 | version "2.0.0"
1540 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1541 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1542 |
1543 | miller-rabin@^4.0.0:
1544 | version "4.0.1"
1545 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
1546 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
1547 | dependencies:
1548 | bn.js "^4.0.0"
1549 | brorand "^1.0.1"
1550 |
1551 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
1552 | version "1.0.1"
1553 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
1554 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
1555 |
1556 | minimalistic-crypto-utils@^1.0.1:
1557 | version "1.0.1"
1558 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
1559 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
1560 |
1561 | minimist@^1.2.0:
1562 | version "1.2.5"
1563 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1564 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
1565 |
1566 | ms@2.0.0:
1567 | version "2.0.0"
1568 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1569 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
1570 |
1571 | ms@^2.1.1:
1572 | version "2.1.2"
1573 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1574 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1575 |
1576 | nanoid@^3.1.16:
1577 | version "3.1.22"
1578 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844"
1579 | integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==
1580 |
1581 | native-url@0.3.4:
1582 | version "0.3.4"
1583 | resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.3.4.tgz#29c943172aed86c63cee62c8c04db7f5756661f8"
1584 | integrity sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==
1585 | dependencies:
1586 | querystring "^0.2.0"
1587 |
1588 | next@^10.1.3:
1589 | version "10.1.3"
1590 | resolved "https://registry.yarnpkg.com/next/-/next-10.1.3.tgz#e26e8371343a42bc2ba9be5cb253a7d324d03673"
1591 | integrity sha512-8Jf38F+s0YcXXkJGF5iUxOqSmbHrey0fX5Epc43L0uwDKmN2jK9vhc2ihCwXC1pmu8d2m/8wfTiXRJKGti55yw==
1592 | dependencies:
1593 | "@babel/runtime" "7.12.5"
1594 | "@hapi/accept" "5.0.1"
1595 | "@next/env" "10.1.3"
1596 | "@next/polyfill-module" "10.1.3"
1597 | "@next/react-dev-overlay" "10.1.3"
1598 | "@next/react-refresh-utils" "10.1.3"
1599 | "@opentelemetry/api" "0.14.0"
1600 | assert "2.0.0"
1601 | ast-types "0.13.2"
1602 | browserify-zlib "0.2.0"
1603 | browserslist "4.16.1"
1604 | buffer "5.6.0"
1605 | caniuse-lite "^1.0.30001179"
1606 | chalk "2.4.2"
1607 | chokidar "3.5.1"
1608 | constants-browserify "1.0.0"
1609 | crypto-browserify "3.12.0"
1610 | cssnano-simple "1.2.2"
1611 | domain-browser "4.19.0"
1612 | encoding "0.1.13"
1613 | etag "1.8.1"
1614 | find-cache-dir "3.3.1"
1615 | get-orientation "1.1.2"
1616 | https-browserify "1.0.0"
1617 | jest-worker "27.0.0-next.5"
1618 | native-url "0.3.4"
1619 | node-fetch "2.6.1"
1620 | node-html-parser "1.4.9"
1621 | node-libs-browser "^2.2.1"
1622 | os-browserify "0.3.0"
1623 | p-limit "3.1.0"
1624 | path-browserify "1.0.1"
1625 | pnp-webpack-plugin "1.6.4"
1626 | postcss "8.1.7"
1627 | process "0.11.10"
1628 | prop-types "15.7.2"
1629 | querystring-es3 "0.2.1"
1630 | raw-body "2.4.1"
1631 | react-is "16.13.1"
1632 | react-refresh "0.8.3"
1633 | stream-browserify "3.0.0"
1634 | stream-http "3.1.1"
1635 | string_decoder "1.3.0"
1636 | styled-jsx "3.3.2"
1637 | timers-browserify "2.0.12"
1638 | tty-browserify "0.0.1"
1639 | use-subscription "1.5.1"
1640 | util "0.12.3"
1641 | vm-browserify "1.1.2"
1642 | watchpack "2.1.1"
1643 |
1644 | node-fetch@2.6.1:
1645 | version "2.6.1"
1646 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
1647 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
1648 |
1649 | node-html-parser@1.4.9:
1650 | version "1.4.9"
1651 | resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c"
1652 | integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==
1653 | dependencies:
1654 | he "1.2.0"
1655 |
1656 | node-libs-browser@^2.2.1:
1657 | version "2.2.1"
1658 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
1659 | integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
1660 | dependencies:
1661 | assert "^1.1.1"
1662 | browserify-zlib "^0.2.0"
1663 | buffer "^4.3.0"
1664 | console-browserify "^1.1.0"
1665 | constants-browserify "^1.0.0"
1666 | crypto-browserify "^3.11.0"
1667 | domain-browser "^1.1.1"
1668 | events "^3.0.0"
1669 | https-browserify "^1.0.0"
1670 | os-browserify "^0.3.0"
1671 | path-browserify "0.0.1"
1672 | process "^0.11.10"
1673 | punycode "^1.2.4"
1674 | querystring-es3 "^0.2.0"
1675 | readable-stream "^2.3.3"
1676 | stream-browserify "^2.0.1"
1677 | stream-http "^2.7.2"
1678 | string_decoder "^1.0.0"
1679 | timers-browserify "^2.0.4"
1680 | tty-browserify "0.0.0"
1681 | url "^0.11.0"
1682 | util "^0.11.0"
1683 | vm-browserify "^1.0.1"
1684 |
1685 | node-releases@^1.1.69:
1686 | version "1.1.71"
1687 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
1688 | integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
1689 |
1690 | normalize-path@^3.0.0, normalize-path@~3.0.0:
1691 | version "3.0.0"
1692 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1693 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1694 |
1695 | object-assign@^4.1.1:
1696 | version "4.1.1"
1697 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1698 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1699 |
1700 | object-inspect@^1.9.0:
1701 | version "1.9.0"
1702 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
1703 | integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
1704 |
1705 | object-is@^1.0.1:
1706 | version "1.1.5"
1707 | resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
1708 | integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
1709 | dependencies:
1710 | call-bind "^1.0.2"
1711 | define-properties "^1.1.3"
1712 |
1713 | object-keys@^1.0.12, object-keys@^1.1.1:
1714 | version "1.1.1"
1715 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1716 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1717 |
1718 | object.assign@^4.1.2:
1719 | version "4.1.2"
1720 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
1721 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
1722 | dependencies:
1723 | call-bind "^1.0.0"
1724 | define-properties "^1.1.3"
1725 | has-symbols "^1.0.1"
1726 | object-keys "^1.1.1"
1727 |
1728 | os-browserify@0.3.0, os-browserify@^0.3.0:
1729 | version "0.3.0"
1730 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
1731 | integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
1732 |
1733 | p-limit@3.1.0:
1734 | version "3.1.0"
1735 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1736 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1737 | dependencies:
1738 | yocto-queue "^0.1.0"
1739 |
1740 | p-limit@^2.2.0:
1741 | version "2.3.0"
1742 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1743 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1744 | dependencies:
1745 | p-try "^2.0.0"
1746 |
1747 | p-locate@^4.1.0:
1748 | version "4.1.0"
1749 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
1750 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1751 | dependencies:
1752 | p-limit "^2.2.0"
1753 |
1754 | p-try@^2.0.0:
1755 | version "2.2.0"
1756 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1757 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1758 |
1759 | pako@~1.0.5:
1760 | version "1.0.11"
1761 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
1762 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
1763 |
1764 | parse-asn1@^5.0.0, parse-asn1@^5.1.5:
1765 | version "5.1.6"
1766 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
1767 | integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
1768 | dependencies:
1769 | asn1.js "^5.2.0"
1770 | browserify-aes "^1.0.0"
1771 | evp_bytestokey "^1.0.0"
1772 | pbkdf2 "^3.0.3"
1773 | safe-buffer "^5.1.1"
1774 |
1775 | parse-entities@^1.1.0, parse-entities@^1.1.2:
1776 | version "1.2.2"
1777 | resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50"
1778 | integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==
1779 | dependencies:
1780 | character-entities "^1.0.0"
1781 | character-entities-legacy "^1.0.0"
1782 | character-reference-invalid "^1.0.0"
1783 | is-alphanumerical "^1.0.0"
1784 | is-decimal "^1.0.0"
1785 | is-hexadecimal "^1.0.0"
1786 |
1787 | path-browserify@0.0.1:
1788 | version "0.0.1"
1789 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
1790 | integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
1791 |
1792 | path-browserify@1.0.1:
1793 | version "1.0.1"
1794 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
1795 | integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
1796 |
1797 | path-exists@^4.0.0:
1798 | version "4.0.0"
1799 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1800 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1801 |
1802 | pbkdf2@^3.0.3:
1803 | version "3.1.2"
1804 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
1805 | integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
1806 | dependencies:
1807 | create-hash "^1.1.2"
1808 | create-hmac "^1.1.4"
1809 | ripemd160 "^2.0.1"
1810 | safe-buffer "^5.0.1"
1811 | sha.js "^2.4.8"
1812 |
1813 | picomatch@^2.0.4, picomatch@^2.2.1:
1814 | version "2.2.3"
1815 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d"
1816 | integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==
1817 |
1818 | pkg-dir@^4.1.0:
1819 | version "4.2.0"
1820 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
1821 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1822 | dependencies:
1823 | find-up "^4.0.0"
1824 |
1825 | platform@1.3.6:
1826 | version "1.3.6"
1827 | resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7"
1828 | integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
1829 |
1830 | pnp-webpack-plugin@1.6.4:
1831 | version "1.6.4"
1832 | resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149"
1833 | integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==
1834 | dependencies:
1835 | ts-pnp "^1.1.6"
1836 |
1837 | postcss-value-parser@^4.0.2:
1838 | version "4.1.0"
1839 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
1840 | integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
1841 |
1842 | postcss@8.1.7:
1843 | version "8.1.7"
1844 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.7.tgz#ff6a82691bd861f3354fd9b17b2332f88171233f"
1845 | integrity sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ==
1846 | dependencies:
1847 | colorette "^1.2.1"
1848 | line-column "^1.0.2"
1849 | nanoid "^3.1.16"
1850 | source-map "^0.6.1"
1851 |
1852 | postcss@^7.0.32:
1853 | version "7.0.35"
1854 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
1855 | integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
1856 | dependencies:
1857 | chalk "^2.4.2"
1858 | source-map "^0.6.1"
1859 | supports-color "^6.1.0"
1860 |
1861 | prismjs@^1.8.4:
1862 | version "1.20.0"
1863 | resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.20.0.tgz#9b685fc480a3514ee7198eac6a3bf5024319ff03"
1864 | integrity sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==
1865 | optionalDependencies:
1866 | clipboard "^2.0.0"
1867 |
1868 | prismjs@~1.17.0:
1869 | version "1.17.1"
1870 | resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be"
1871 | integrity sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==
1872 | optionalDependencies:
1873 | clipboard "^2.0.0"
1874 |
1875 | process-nextick-args@~2.0.0:
1876 | version "2.0.1"
1877 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
1878 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
1879 |
1880 | process@0.11.10, process@^0.11.10:
1881 | version "0.11.10"
1882 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
1883 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
1884 |
1885 | prop-types@15.7.2, prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2:
1886 | version "15.7.2"
1887 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
1888 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
1889 | dependencies:
1890 | loose-envify "^1.4.0"
1891 | object-assign "^4.1.1"
1892 | react-is "^16.8.1"
1893 |
1894 | property-information@^5.0.0:
1895 | version "5.5.0"
1896 | resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943"
1897 | integrity sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA==
1898 | dependencies:
1899 | xtend "^4.0.0"
1900 |
1901 | public-encrypt@^4.0.0:
1902 | version "4.0.3"
1903 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
1904 | integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
1905 | dependencies:
1906 | bn.js "^4.1.0"
1907 | browserify-rsa "^4.0.0"
1908 | create-hash "^1.1.0"
1909 | parse-asn1 "^5.0.0"
1910 | randombytes "^2.0.1"
1911 | safe-buffer "^5.1.2"
1912 |
1913 | punycode@1.3.2:
1914 | version "1.3.2"
1915 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
1916 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
1917 |
1918 | punycode@^1.2.4:
1919 | version "1.4.1"
1920 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1921 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
1922 |
1923 | punycode@^2.1.0:
1924 | version "2.1.1"
1925 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1926 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1927 |
1928 | querystring-es3@0.2.1, querystring-es3@^0.2.0:
1929 | version "0.2.1"
1930 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
1931 | integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
1932 |
1933 | querystring@0.2.0:
1934 | version "0.2.0"
1935 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
1936 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
1937 |
1938 | querystring@^0.2.0:
1939 | version "0.2.1"
1940 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd"
1941 | integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==
1942 |
1943 | ramda@^0.27:
1944 | version "0.27.1"
1945 | resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9"
1946 | integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==
1947 |
1948 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
1949 | version "2.1.0"
1950 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1951 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1952 | dependencies:
1953 | safe-buffer "^5.1.0"
1954 |
1955 | randomfill@^1.0.3:
1956 | version "1.0.4"
1957 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
1958 | integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
1959 | dependencies:
1960 | randombytes "^2.0.5"
1961 | safe-buffer "^5.1.0"
1962 |
1963 | raw-body@2.4.1:
1964 | version "2.4.1"
1965 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c"
1966 | integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==
1967 | dependencies:
1968 | bytes "3.1.0"
1969 | http-errors "1.7.3"
1970 | iconv-lite "0.4.24"
1971 | unpipe "1.0.0"
1972 |
1973 | react-dom@^16.13.1:
1974 | version "16.13.1"
1975 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f"
1976 | integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==
1977 | dependencies:
1978 | loose-envify "^1.1.0"
1979 | object-assign "^4.1.1"
1980 | prop-types "^15.6.2"
1981 | scheduler "^0.19.1"
1982 |
1983 | react-dropdown@^1.7.0:
1984 | version "1.7.0"
1985 | resolved "https://registry.yarnpkg.com/react-dropdown/-/react-dropdown-1.7.0.tgz#20287aafabdece49a6595ebe40e3fa1a37c26456"
1986 | integrity sha512-zFZ73pgLA32hArpE4j/7DtOEhOMg240XG5QvbAb0/VinGekkHDVIakMyAFUKC5jDz8jqXEltgriqFW9R5iCtPQ==
1987 | dependencies:
1988 | classnames "^2.2.3"
1989 |
1990 | react-is@16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6:
1991 | version "16.13.1"
1992 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
1993 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
1994 |
1995 | react-katex@^2.0.2:
1996 | version "2.0.2"
1997 | resolved "https://registry.yarnpkg.com/react-katex/-/react-katex-2.0.2.tgz#0cb9559a4f30cb18f808006922b116c06e8b0ae9"
1998 | integrity sha512-mk1ezfUF4mBIstjvpfELf9g1rWF1Y1+idXMiOvkFvCLi0JFZDCQdui59VqQcI2ynOpb0jj52TM4kyBjKG+qEBg==
1999 | dependencies:
2000 | katex "^0.9.0"
2001 |
2002 | react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4:
2003 | version "3.0.4"
2004 | resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
2005 | integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
2006 |
2007 | react-markdown@^4.3.1:
2008 | version "4.3.1"
2009 | resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-4.3.1.tgz#39f0633b94a027445b86c9811142d05381300f2f"
2010 | integrity sha512-HQlWFTbDxTtNY6bjgp3C3uv1h2xcjCSi1zAEzfBW9OwJJvENSYiLXWNXN5hHLsoqai7RnZiiHzcnWdXk2Splzw==
2011 | dependencies:
2012 | html-to-react "^1.3.4"
2013 | mdast-add-list-metadata "1.0.1"
2014 | prop-types "^15.7.2"
2015 | react-is "^16.8.6"
2016 | remark-parse "^5.0.0"
2017 | unified "^6.1.5"
2018 | unist-util-visit "^1.3.0"
2019 | xtend "^4.0.1"
2020 |
2021 | react-modal@^3.11.2:
2022 | version "3.11.2"
2023 | resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.11.2.tgz#bad911976d4add31aa30dba8a41d11e21c4ac8a4"
2024 | integrity sha512-o8gvvCOFaG1T7W6JUvsYjRjMVToLZgLIsi5kdhFIQCtHxDkA47LznX62j+l6YQkpXDbvQegsDyxe/+JJsFQN7w==
2025 | dependencies:
2026 | exenv "^1.2.0"
2027 | prop-types "^15.5.10"
2028 | react-lifecycles-compat "^3.0.0"
2029 | warning "^4.0.3"
2030 |
2031 | react-refresh@0.8.3:
2032 | version "0.8.3"
2033 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
2034 | integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
2035 |
2036 | react-simple-code-editor@^0.11.0:
2037 | version "0.11.0"
2038 | resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.11.0.tgz#bb57c7c29b570f2ab229872599eac184f5bc673c"
2039 | integrity sha512-xGfX7wAzspl113ocfKQAR8lWPhavGWHL3xSzNLeseDRHysT+jzRBi/ExdUqevSMos+7ZtdfeuBOXtgk9HTwsrw==
2040 |
2041 | react-syntax-highlighter-virtualized-renderer@^1.1.0:
2042 | version "1.1.0"
2043 | resolved "https://registry.yarnpkg.com/react-syntax-highlighter-virtualized-renderer/-/react-syntax-highlighter-virtualized-renderer-1.1.0.tgz#7536d9f18f9cce736fac15031a891b8cbaabe90b"
2044 | integrity sha1-dTbZ8Y+cznNvrBUDGokbjLqr6Qs=
2045 | dependencies:
2046 | react-syntax-highlighter "^5.1.2"
2047 | react-virtualized "^9.3.0"
2048 |
2049 | react-syntax-highlighter@^12.2.1:
2050 | version "12.2.1"
2051 | resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz#14d78352da1c1c3f93c6698b70ec7c706b83493e"
2052 | integrity sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA==
2053 | dependencies:
2054 | "@babel/runtime" "^7.3.1"
2055 | highlight.js "~9.15.1"
2056 | lowlight "1.12.1"
2057 | prismjs "^1.8.4"
2058 | refractor "^2.4.1"
2059 |
2060 | react-syntax-highlighter@^5.1.2:
2061 | version "5.8.0"
2062 | resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-5.8.0.tgz#a220c010fd0641751d93532509ba7159cc3a4383"
2063 | integrity sha512-+FolT9NhFBqE4SsZDelSzsYJJS/JCnQqo4+GxLrFPoML548uvr8f4Eh5nnd5o6ERKFW7ryiygOX9SPnxdnlpkg==
2064 | dependencies:
2065 | babel-runtime "^6.18.0"
2066 | highlight.js "~9.12.0"
2067 | lowlight "~1.9.1"
2068 |
2069 | react-virtualized@^9.3.0:
2070 | version "9.22.3"
2071 | resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.22.3.tgz#f430f16beb0a42db420dbd4d340403c0de334421"
2072 | integrity sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==
2073 | dependencies:
2074 | "@babel/runtime" "^7.7.2"
2075 | clsx "^1.0.4"
2076 | dom-helpers "^5.1.3"
2077 | loose-envify "^1.4.0"
2078 | prop-types "^15.7.2"
2079 | react-lifecycles-compat "^3.0.4"
2080 |
2081 | react@^16.13.1:
2082 | version "16.13.1"
2083 | resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e"
2084 | integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==
2085 | dependencies:
2086 | loose-envify "^1.1.0"
2087 | object-assign "^4.1.1"
2088 | prop-types "^15.6.2"
2089 |
2090 | readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6:
2091 | version "2.3.7"
2092 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
2093 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
2094 | dependencies:
2095 | core-util-is "~1.0.0"
2096 | inherits "~2.0.3"
2097 | isarray "~1.0.0"
2098 | process-nextick-args "~2.0.0"
2099 | safe-buffer "~5.1.1"
2100 | string_decoder "~1.1.1"
2101 | util-deprecate "~1.0.1"
2102 |
2103 | readable-stream@^3.5.0, readable-stream@^3.6.0:
2104 | version "3.6.0"
2105 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
2106 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
2107 | dependencies:
2108 | inherits "^2.0.3"
2109 | string_decoder "^1.1.1"
2110 | util-deprecate "^1.0.1"
2111 |
2112 | readdirp@~3.5.0:
2113 | version "3.5.0"
2114 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
2115 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
2116 | dependencies:
2117 | picomatch "^2.2.1"
2118 |
2119 | refractor@^2.4.1:
2120 | version "2.10.1"
2121 | resolved "https://registry.yarnpkg.com/refractor/-/refractor-2.10.1.tgz#166c32f114ed16fd96190ad21d5193d3afc7d34e"
2122 | integrity sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw==
2123 | dependencies:
2124 | hastscript "^5.0.0"
2125 | parse-entities "^1.1.2"
2126 | prismjs "~1.17.0"
2127 |
2128 | regenerator-runtime@^0.11.0:
2129 | version "0.11.1"
2130 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
2131 | integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
2132 |
2133 | regenerator-runtime@^0.13.4:
2134 | version "0.13.5"
2135 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
2136 | integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
2137 |
2138 | remark-parse@^5.0.0:
2139 | version "5.0.0"
2140 | resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95"
2141 | integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==
2142 | dependencies:
2143 | collapse-white-space "^1.0.2"
2144 | is-alphabetical "^1.0.0"
2145 | is-decimal "^1.0.0"
2146 | is-whitespace-character "^1.0.0"
2147 | is-word-character "^1.0.0"
2148 | markdown-escapes "^1.0.0"
2149 | parse-entities "^1.1.0"
2150 | repeat-string "^1.5.4"
2151 | state-toggle "^1.0.0"
2152 | trim "0.0.1"
2153 | trim-trailing-lines "^1.0.0"
2154 | unherit "^1.0.4"
2155 | unist-util-remove-position "^1.0.0"
2156 | vfile-location "^2.0.0"
2157 | xtend "^4.0.1"
2158 |
2159 | repeat-string@^1.5.4:
2160 | version "1.6.1"
2161 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
2162 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
2163 |
2164 | replace-ext@1.0.0:
2165 | version "1.0.0"
2166 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
2167 | integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
2168 |
2169 | ripemd160@^2.0.0, ripemd160@^2.0.1:
2170 | version "2.0.2"
2171 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
2172 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
2173 | dependencies:
2174 | hash-base "^3.0.0"
2175 | inherits "^2.0.1"
2176 |
2177 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
2178 | version "5.2.1"
2179 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2180 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2181 |
2182 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
2183 | version "5.1.2"
2184 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
2185 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
2186 |
2187 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0:
2188 | version "2.1.2"
2189 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2190 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
2191 |
2192 | scheduler@^0.19.1:
2193 | version "0.19.1"
2194 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196"
2195 | integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==
2196 | dependencies:
2197 | loose-envify "^1.1.0"
2198 | object-assign "^4.1.1"
2199 |
2200 | select@^1.1.2:
2201 | version "1.1.2"
2202 | resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
2203 | integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=
2204 |
2205 | semver@^6.0.0:
2206 | version "6.3.0"
2207 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
2208 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
2209 |
2210 | setimmediate@^1.0.4:
2211 | version "1.0.5"
2212 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
2213 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
2214 |
2215 | setprototypeof@1.1.1:
2216 | version "1.1.1"
2217 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
2218 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
2219 |
2220 | sha.js@^2.4.0, sha.js@^2.4.8:
2221 | version "2.4.11"
2222 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
2223 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
2224 | dependencies:
2225 | inherits "^2.0.1"
2226 | safe-buffer "^5.0.1"
2227 |
2228 | shallowequal@^1.1.0:
2229 | version "1.1.0"
2230 | resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
2231 | integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
2232 |
2233 | shell-quote@1.7.2:
2234 | version "1.7.2"
2235 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
2236 | integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
2237 |
2238 | source-map@0.7.3:
2239 | version "0.7.3"
2240 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
2241 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
2242 |
2243 | source-map@0.8.0-beta.0:
2244 | version "0.8.0-beta.0"
2245 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11"
2246 | integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==
2247 | dependencies:
2248 | whatwg-url "^7.0.0"
2249 |
2250 | source-map@^0.5.0:
2251 | version "0.5.7"
2252 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
2253 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
2254 |
2255 | source-map@^0.6.1:
2256 | version "0.6.1"
2257 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2258 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2259 |
2260 | space-separated-tokens@^1.0.0:
2261 | version "1.1.5"
2262 | resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899"
2263 | integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==
2264 |
2265 | stacktrace-parser@0.1.10:
2266 | version "0.1.10"
2267 | resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a"
2268 | integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==
2269 | dependencies:
2270 | type-fest "^0.7.1"
2271 |
2272 | state-toggle@^1.0.0:
2273 | version "1.0.3"
2274 | resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe"
2275 | integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==
2276 |
2277 | "statuses@>= 1.5.0 < 2":
2278 | version "1.5.0"
2279 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
2280 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
2281 |
2282 | stream-browserify@3.0.0:
2283 | version "3.0.0"
2284 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f"
2285 | integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==
2286 | dependencies:
2287 | inherits "~2.0.4"
2288 | readable-stream "^3.5.0"
2289 |
2290 | stream-browserify@^2.0.1:
2291 | version "2.0.2"
2292 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
2293 | integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
2294 | dependencies:
2295 | inherits "~2.0.1"
2296 | readable-stream "^2.0.2"
2297 |
2298 | stream-http@3.1.1:
2299 | version "3.1.1"
2300 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564"
2301 | integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==
2302 | dependencies:
2303 | builtin-status-codes "^3.0.0"
2304 | inherits "^2.0.4"
2305 | readable-stream "^3.6.0"
2306 | xtend "^4.0.2"
2307 |
2308 | stream-http@^2.7.2:
2309 | version "2.8.3"
2310 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
2311 | integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
2312 | dependencies:
2313 | builtin-status-codes "^3.0.0"
2314 | inherits "^2.0.1"
2315 | readable-stream "^2.3.6"
2316 | to-arraybuffer "^1.0.0"
2317 | xtend "^4.0.0"
2318 |
2319 | stream-parser@^0.3.1:
2320 | version "0.3.1"
2321 | resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773"
2322 | integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=
2323 | dependencies:
2324 | debug "2"
2325 |
2326 | string-hash@1.1.3:
2327 | version "1.1.3"
2328 | resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
2329 | integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
2330 |
2331 | string.prototype.trimend@^1.0.4:
2332 | version "1.0.4"
2333 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
2334 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
2335 | dependencies:
2336 | call-bind "^1.0.2"
2337 | define-properties "^1.1.3"
2338 |
2339 | string.prototype.trimstart@^1.0.4:
2340 | version "1.0.4"
2341 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
2342 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
2343 | dependencies:
2344 | call-bind "^1.0.2"
2345 | define-properties "^1.1.3"
2346 |
2347 | string_decoder@1.3.0, string_decoder@^1.0.0, string_decoder@^1.1.1:
2348 | version "1.3.0"
2349 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
2350 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
2351 | dependencies:
2352 | safe-buffer "~5.2.0"
2353 |
2354 | string_decoder@~1.1.1:
2355 | version "1.1.1"
2356 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
2357 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
2358 | dependencies:
2359 | safe-buffer "~5.1.0"
2360 |
2361 | strip-ansi@6.0.0:
2362 | version "6.0.0"
2363 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
2364 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
2365 | dependencies:
2366 | ansi-regex "^5.0.0"
2367 |
2368 | styled-components@^5.1.0:
2369 | version "5.1.1"
2370 | resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.1.1.tgz#96dfb02a8025794960863b9e8e365e3b6be5518d"
2371 | integrity sha512-1ps8ZAYu2Husx+Vz8D+MvXwEwvMwFv+hqqUwhNlDN5ybg6A+3xyW1ECrAgywhvXapNfXiz79jJyU0x22z0FFTg==
2372 | dependencies:
2373 | "@babel/helper-module-imports" "^7.0.0"
2374 | "@babel/traverse" "^7.4.5"
2375 | "@emotion/is-prop-valid" "^0.8.8"
2376 | "@emotion/stylis" "^0.8.4"
2377 | "@emotion/unitless" "^0.7.4"
2378 | babel-plugin-styled-components ">= 1"
2379 | css-to-react-native "^3.0.0"
2380 | hoist-non-react-statics "^3.0.0"
2381 | shallowequal "^1.1.0"
2382 | supports-color "^5.5.0"
2383 |
2384 | styled-jsx@3.3.2:
2385 | version "3.3.2"
2386 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.2.tgz#2474601a26670a6049fb4d3f94bd91695b3ce018"
2387 | integrity sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g==
2388 | dependencies:
2389 | "@babel/types" "7.8.3"
2390 | babel-plugin-syntax-jsx "6.18.0"
2391 | convert-source-map "1.7.0"
2392 | loader-utils "1.2.3"
2393 | source-map "0.7.3"
2394 | string-hash "1.1.3"
2395 | stylis "3.5.4"
2396 | stylis-rule-sheet "0.0.10"
2397 |
2398 | stylis-rule-sheet@0.0.10:
2399 | version "0.0.10"
2400 | resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
2401 | integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==
2402 |
2403 | stylis@3.5.4:
2404 | version "3.5.4"
2405 | resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
2406 | integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==
2407 |
2408 | supports-color@^5.3.0, supports-color@^5.5.0:
2409 | version "5.5.0"
2410 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2411 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
2412 | dependencies:
2413 | has-flag "^3.0.0"
2414 |
2415 | supports-color@^6.1.0:
2416 | version "6.1.0"
2417 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
2418 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
2419 | dependencies:
2420 | has-flag "^3.0.0"
2421 |
2422 | supports-color@^7.1.0:
2423 | version "7.2.0"
2424 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2425 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2426 | dependencies:
2427 | has-flag "^4.0.0"
2428 |
2429 | supports-color@^8.0.0:
2430 | version "8.1.1"
2431 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2432 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2433 | dependencies:
2434 | has-flag "^4.0.0"
2435 |
2436 | timers-browserify@2.0.12, timers-browserify@^2.0.4:
2437 | version "2.0.12"
2438 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
2439 | integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
2440 | dependencies:
2441 | setimmediate "^1.0.4"
2442 |
2443 | tiny-emitter@^2.0.0:
2444 | version "2.1.0"
2445 | resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
2446 | integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
2447 |
2448 | to-arraybuffer@^1.0.0:
2449 | version "1.0.1"
2450 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
2451 | integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
2452 |
2453 | to-fast-properties@^2.0.0:
2454 | version "2.0.0"
2455 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
2456 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
2457 |
2458 | to-regex-range@^5.0.1:
2459 | version "5.0.1"
2460 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2461 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2462 | dependencies:
2463 | is-number "^7.0.0"
2464 |
2465 | toidentifier@1.0.0:
2466 | version "1.0.0"
2467 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
2468 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
2469 |
2470 | tr46@^1.0.1:
2471 | version "1.0.1"
2472 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
2473 | integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
2474 | dependencies:
2475 | punycode "^2.1.0"
2476 |
2477 | trim-trailing-lines@^1.0.0:
2478 | version "1.1.3"
2479 | resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94"
2480 | integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==
2481 |
2482 | trim@0.0.1:
2483 | version "0.0.1"
2484 | resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
2485 | integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0=
2486 |
2487 | trough@^1.0.0:
2488 | version "1.0.5"
2489 | resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
2490 | integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
2491 |
2492 | ts-pnp@^1.1.6:
2493 | version "1.2.0"
2494 | resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
2495 | integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
2496 |
2497 | tty-browserify@0.0.0:
2498 | version "0.0.0"
2499 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
2500 | integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
2501 |
2502 | tty-browserify@0.0.1:
2503 | version "0.0.1"
2504 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
2505 | integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==
2506 |
2507 | type-fest@^0.7.1:
2508 | version "0.7.1"
2509 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
2510 | integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
2511 |
2512 | unbox-primitive@^1.0.0:
2513 | version "1.0.1"
2514 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
2515 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
2516 | dependencies:
2517 | function-bind "^1.1.1"
2518 | has-bigints "^1.0.1"
2519 | has-symbols "^1.0.2"
2520 | which-boxed-primitive "^1.0.2"
2521 |
2522 | unherit@^1.0.4:
2523 | version "1.1.3"
2524 | resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22"
2525 | integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==
2526 | dependencies:
2527 | inherits "^2.0.0"
2528 | xtend "^4.0.0"
2529 |
2530 | unified@^6.1.5:
2531 | version "6.2.0"
2532 | resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba"
2533 | integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==
2534 | dependencies:
2535 | bail "^1.0.0"
2536 | extend "^3.0.0"
2537 | is-plain-obj "^1.1.0"
2538 | trough "^1.0.0"
2539 | vfile "^2.0.0"
2540 | x-is-string "^0.1.0"
2541 |
2542 | unist-util-is@^3.0.0:
2543 | version "3.0.0"
2544 | resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd"
2545 | integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==
2546 |
2547 | unist-util-remove-position@^1.0.0:
2548 | version "1.1.4"
2549 | resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020"
2550 | integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==
2551 | dependencies:
2552 | unist-util-visit "^1.1.0"
2553 |
2554 | unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1:
2555 | version "1.1.2"
2556 | resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6"
2557 | integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==
2558 |
2559 | unist-util-visit-parents@1.1.2:
2560 | version "1.1.2"
2561 | resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz#f6e3afee8bdbf961c0e6f028ea3c0480028c3d06"
2562 | integrity sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q==
2563 |
2564 | unist-util-visit-parents@^2.0.0:
2565 | version "2.1.2"
2566 | resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9"
2567 | integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==
2568 | dependencies:
2569 | unist-util-is "^3.0.0"
2570 |
2571 | unist-util-visit@^1.1.0, unist-util-visit@^1.3.0:
2572 | version "1.4.1"
2573 | resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3"
2574 | integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==
2575 | dependencies:
2576 | unist-util-visit-parents "^2.0.0"
2577 |
2578 | unpipe@1.0.0:
2579 | version "1.0.0"
2580 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2581 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
2582 |
2583 | url@^0.11.0:
2584 | version "0.11.0"
2585 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
2586 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
2587 | dependencies:
2588 | punycode "1.3.2"
2589 | querystring "0.2.0"
2590 |
2591 | use-clipboard-copy@^0.1.2:
2592 | version "0.1.2"
2593 | resolved "https://registry.yarnpkg.com/use-clipboard-copy/-/use-clipboard-copy-0.1.2.tgz#83b16292dfa8ea262be714252022a8b4ad1c28c5"
2594 | integrity sha512-EkauxqyX+us4+Mfif/f61ew89EAOWIArqFpHR0jSG4SwwuDZzDAOeqO7gkK0vi+DQVADeB1RB3xqU3U0oOO3NQ==
2595 | dependencies:
2596 | clipboard-copy "^3.0.0"
2597 |
2598 | use-subscription@1.5.1:
2599 | version "1.5.1"
2600 | resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1"
2601 | integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==
2602 | dependencies:
2603 | object-assign "^4.1.1"
2604 |
2605 | util-deprecate@^1.0.1, util-deprecate@~1.0.1:
2606 | version "1.0.2"
2607 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2608 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
2609 |
2610 | util@0.10.3:
2611 | version "0.10.3"
2612 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
2613 | integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
2614 | dependencies:
2615 | inherits "2.0.1"
2616 |
2617 | util@0.12.3, util@^0.12.0:
2618 | version "0.12.3"
2619 | resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888"
2620 | integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==
2621 | dependencies:
2622 | inherits "^2.0.3"
2623 | is-arguments "^1.0.4"
2624 | is-generator-function "^1.0.7"
2625 | is-typed-array "^1.1.3"
2626 | safe-buffer "^5.1.2"
2627 | which-typed-array "^1.1.2"
2628 |
2629 | util@^0.11.0:
2630 | version "0.11.1"
2631 | resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
2632 | integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
2633 | dependencies:
2634 | inherits "2.0.3"
2635 |
2636 | vfile-location@^2.0.0:
2637 | version "2.0.6"
2638 | resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e"
2639 | integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==
2640 |
2641 | vfile-message@^1.0.0:
2642 | version "1.1.1"
2643 | resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1"
2644 | integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==
2645 | dependencies:
2646 | unist-util-stringify-position "^1.1.1"
2647 |
2648 | vfile@^2.0.0:
2649 | version "2.3.0"
2650 | resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a"
2651 | integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==
2652 | dependencies:
2653 | is-buffer "^1.1.4"
2654 | replace-ext "1.0.0"
2655 | unist-util-stringify-position "^1.0.0"
2656 | vfile-message "^1.0.0"
2657 |
2658 | vm-browserify@1.1.2, vm-browserify@^1.0.1:
2659 | version "1.1.2"
2660 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
2661 | integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
2662 |
2663 | warning@^4.0.3:
2664 | version "4.0.3"
2665 | resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
2666 | integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
2667 | dependencies:
2668 | loose-envify "^1.0.0"
2669 |
2670 | watchpack@2.1.1:
2671 | version "2.1.1"
2672 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7"
2673 | integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==
2674 | dependencies:
2675 | glob-to-regexp "^0.4.1"
2676 | graceful-fs "^4.1.2"
2677 |
2678 | webidl-conversions@^4.0.2:
2679 | version "4.0.2"
2680 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
2681 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
2682 |
2683 | whatwg-url@^7.0.0:
2684 | version "7.1.0"
2685 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
2686 | integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
2687 | dependencies:
2688 | lodash.sortby "^4.7.0"
2689 | tr46 "^1.0.1"
2690 | webidl-conversions "^4.0.2"
2691 |
2692 | which-boxed-primitive@^1.0.2:
2693 | version "1.0.2"
2694 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
2695 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
2696 | dependencies:
2697 | is-bigint "^1.0.1"
2698 | is-boolean-object "^1.1.0"
2699 | is-number-object "^1.0.4"
2700 | is-string "^1.0.5"
2701 | is-symbol "^1.0.3"
2702 |
2703 | which-typed-array@^1.1.2:
2704 | version "1.1.4"
2705 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff"
2706 | integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==
2707 | dependencies:
2708 | available-typed-arrays "^1.0.2"
2709 | call-bind "^1.0.0"
2710 | es-abstract "^1.18.0-next.1"
2711 | foreach "^2.0.5"
2712 | function-bind "^1.1.1"
2713 | has-symbols "^1.0.1"
2714 | is-typed-array "^1.1.3"
2715 |
2716 | x-is-string@^0.1.0:
2717 | version "0.1.0"
2718 | resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
2719 | integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
2720 |
2721 | xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2:
2722 | version "4.0.2"
2723 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
2724 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
2725 |
2726 | yocto-queue@^0.1.0:
2727 | version "0.1.0"
2728 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2729 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2730 |
--------------------------------------------------------------------------------