rishi1985 commited on
Commit
576ab27
0 Parent(s):

Duplicate from rishi1985/chat-6

Browse files
Files changed (13) hide show
  1. .gitattributes +35 -0
  2. Dockerfile +127 -0
  3. README.md +11 -0
  4. app.py +171 -0
  5. config.py +9 -0
  6. geckodriver +3 -0
  7. ml.ipynb +456 -0
  8. package-lock.json +975 -0
  9. package.json +14 -0
  10. pyngrok.yml +1 -0
  11. requirements.txt +90 -0
  12. temp.py +4 -0
  13. web.html +60 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ geckodriver filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Use the official Python 3.9 image as the base image
2
+ FROM python:3.9
3
+
4
+ # Expose the port
5
+ EXPOSE 7860
6
+
7
+ # Keeps Python from generating .pyc files in the container
8
+ ENV PYTHONDONTWRITEBYTECODE=1
9
+
10
+ # Turns off buffering for easier container logging
11
+ ENV PYTHONUNBUFFERED=1
12
+
13
+ # Set the PYNGROK_CONFIG environment variable
14
+ ENV PYNGROK_CONFIG /tmp/pyngrok.yml
15
+
16
+ # Set the NGROK_PATH environment variable to a writable location
17
+ ENV NGROK_PATH /tmp/ngrok
18
+
19
+ # Copy requirements.txt into the container
20
+ COPY requirements.txt .
21
+
22
+ # RUN apt-get update
23
+ # RUN apt-get install -y wget
24
+ # RUN wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
25
+ # RUN apt-get install ./google-chrome-stable_current_amd64.deb -y
26
+
27
+
28
+ RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
29
+ RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
30
+ RUN apt-get -y update
31
+ RUN apt-get install -y google-chrome-stable
32
+
33
+ # install chromedriver
34
+ RUN apt-get install -yqq unzip
35
+ RUN wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
36
+ RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+ # RUN apt install wget -y
55
+ # RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.32.0/geckodriver-v0.32.0-linux64.tar.gz
56
+ # RUN tar -xzvf geckodriver-v0.32.0-linux64.tar.gz -C /usr/local/bin
57
+ # RUN chmod +x /usr/local/bin/geckodriver
58
+ # RUN geckodriver -V
59
+
60
+
61
+ # RUN apt install firefox-esr -y
62
+ # RUN apt-get install firefox-geckodriver
63
+
64
+ # Upgrade pip and install the required packages
65
+ RUN pip install --upgrade pip && \
66
+ pip install -r requirements.txt
67
+
68
+ # Install sudo and create the necessary directories before copying the files
69
+ RUN apt-get update && \
70
+ apt-get install -y sudo && \
71
+ mkdir -p /code/image
72
+
73
+ # Creates a non-root user with an explicit UID and adds permission to access the /code folder
74
+ RUN adduser -u 5678 --disabled-password --gecos "" appuser && \
75
+ usermod -aG sudo appuser && \
76
+ usermod -aG root appuser && \
77
+ chown -R appuser:appuser /code
78
+
79
+ # Create the pyngrok bin directory and set the ownership and permissions for appuser
80
+ RUN mkdir -p /usr/local/lib/python3.9/site-packages/pyngrok/bin && \
81
+ chown -R appuser:appuser /usr/local/lib/python3.9/site-packages/pyngrok/bin && \
82
+ chmod -R 777 /usr/local/lib/python3.9/site-packages/pyngrok/bin
83
+
84
+ RUN mkdir -p /.ngrok2 && \
85
+ chown -R appuser:appuser /.ngrok2 && \
86
+ chmod -R 777 /.ngrok2
87
+
88
+ RUN apt-get update && \
89
+ apt-get install -y curl
90
+
91
+ RUN echo "deb http://deb.debian.org/debian/ unstable main contrib non-free" >> /etc/apt/sources.list.d/debian.list
92
+
93
+
94
+ # RUN apt install firefox-esr && \
95
+ # apt install geckodriver
96
+
97
+ # Set the working directory and copy the files
98
+ WORKDIR /code
99
+
100
+ # Set the ownership and permissions for the /code directory and its contents
101
+ RUN chown -R appuser:appuser /code && \
102
+ chmod -R 777 /code
103
+
104
+ COPY . /code
105
+
106
+ # RUN chown -R appuser:appuser /code/data.csv && \
107
+ # chmod -R 777 /code/data.csv
108
+
109
+ # Copy the pyngrok.yml configuration file
110
+ COPY pyngrok.yml /tmp/pyngrok.yml
111
+
112
+ # Set the TRANSFORMERS_CACHE environment variable to a cache directory inside /tmp
113
+ ENV TRANSFORMERS_CACHE /tmp/transformers_cache
114
+ ENV TORCH_HOME /tmp/torch_cache
115
+
116
+ USER appuser
117
+
118
+ # Start the application using pyngrok
119
+ # CMD python main.py
120
+ # Get the public IP address and display it
121
+ RUN curl -s https://api.ipify.org | xargs echo "Public IP:"
122
+ RUN pip install gunicorn
123
+
124
+ # Start the Uvicorn server
125
+ # ENTRYPOINT ["python", "main.py"]
126
+ # CMD ["sh", "-c", "python main.py & sleep infinity"]
127
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
README.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: chatgpt-1
3
+ emoji: 🦀
4
+ colorFrom: indigo
5
+ colorTo: yellow
6
+ sdk: docker
7
+ pinned: false
8
+ duplicated_from: rishi1985/chat-6
9
+ ---
10
+
11
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import io
3
+ from fastapi import FastAPI, File, UploadFile
4
+
5
+ import subprocess
6
+ import os
7
+ import requests
8
+ import random
9
+
10
+ import shutil
11
+ import json
12
+ # from transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline
13
+ from pydantic import BaseModel
14
+ from typing import Annotated
15
+
16
+ from fastapi import Form
17
+
18
+
19
+ import selenium
20
+
21
+ from selenium import webdriver
22
+ from selenium.webdriver import ChromeOptions
23
+ from selenium.webdriver.chrome.service import Service
24
+ import threading
25
+ import random
26
+ import string
27
+ import time
28
+
29
+
30
+ # from selenium.webdriver.firefox.options import Options
31
+
32
+ # options = FirefoxOptions()
33
+ # options.headless = True
34
+
35
+ # service = Service()
36
+
37
+
38
+ # driver = webdriver.Firefox(options= options,service=service)
39
+ # driver.get("https://yuntian-deng-chatgpt.hf.space/")
40
+
41
+
42
+ options = ChromeOptions()
43
+ options.add_argument('--no-sandbox')
44
+ options.add_argument('-headless')
45
+ service = Service()
46
+
47
+ driver = webdriver.Chrome(options= options,service=service)
48
+
49
+ driver.get("https://yuntian-deng-chatgpt.hf.space/")
50
+
51
+
52
+ class Query(BaseModel):
53
+ text: str
54
+ host:str
55
+
56
+
57
+
58
+
59
+ from fastapi import FastAPI, Request, Depends, UploadFile, File
60
+ from fastapi.exceptions import HTTPException
61
+ from fastapi.middleware.cors import CORSMiddleware
62
+ from fastapi.responses import JSONResponse
63
+
64
+
65
+ app = FastAPI()
66
+
67
+ app.add_middleware(
68
+ CORSMiddleware,
69
+ allow_origins=['*'],
70
+ allow_credentials=True,
71
+ allow_methods=['*'],
72
+ allow_headers=['*'],
73
+ )
74
+
75
+
76
+ # cred = credentials.Certificate('key.json')
77
+ # app1 = firebase_admin.initialize_app(cred)
78
+ # db = firestore.client()
79
+ # data_frame = pd.read_csv('data.csv')
80
+
81
+
82
+
83
+ @app.on_event("startup")
84
+ async def startup_event():
85
+ print("on startup")
86
+
87
+
88
+
89
+ from selenium.webdriver.common.by import By
90
+
91
+ @app.post("/")
92
+ async def get_answer(q: Query ):
93
+
94
+ text = q.text
95
+ host= q.host
96
+
97
+ N = 20
98
+ res = ''.join(random.choices(string.ascii_uppercase +
99
+ string.digits, k=N))
100
+ res= res+ str(time.time())
101
+
102
+ id= res
103
+
104
+ t = threading.Thread(target=do_ML, args=(id,text,host,0))
105
+ t.start()
106
+
107
+
108
+ dict= {"id":id}
109
+
110
+
111
+ return JSONResponse(dict)
112
+
113
+
114
+
115
+
116
+ def do_ML(id:str,text:str,host:str, trycount:int):
117
+ try:
118
+ starttime=time.time()
119
+ driver.get("https://yuntian-deng-chatgpt.hf.space/")
120
+ time.sleep(3+trycount)
121
+ button = driver.find_element(By.ID,"component-23")
122
+ button.click()
123
+ time.sleep(1+trycount)
124
+ alert = driver.switch_to.alert
125
+ alert.accept()
126
+ print("alert accepted")
127
+ time.sleep(1+trycount)
128
+ id_box = driver.find_element(By.XPATH,'//textarea[@data-testid="textbox"]')
129
+ id_box.send_keys(text)
130
+ time.sleep(1+trycount)
131
+ run = driver.find_element(By.ID,"component-9")
132
+ run.click()
133
+ prev =""
134
+ time.sleep(2)
135
+ while True:
136
+ time.sleep(2+trycount)
137
+ currtime= time.time()
138
+ if(currtime>starttime+600):
139
+ data=data={"id":id,"result":"","status":"Error"}
140
+ x= requests.post(host,data= data)
141
+ return
142
+
143
+ div = driver.find_element(By.XPATH,'//div[@class="message bot svelte-a99nd8 latest"]')
144
+ value = div.text
145
+ if prev!="":
146
+ if value==prev:
147
+ data={"id":id,"result":value,"status":"Generated"}
148
+ requests.post(host, data=data)
149
+ break
150
+ prev= value
151
+
152
+ data=data={"id":id,"result":value,"status":"Generating --keep refreshing"}
153
+ x= requests.post(host,data= data)
154
+ print(x.text)
155
+
156
+ except:
157
+ if trycount>3:
158
+ data=data={"id":id,"result":"","status":"Error"}
159
+ x= requests.post(host,data= data)
160
+ return
161
+ do_ML(id,text,host,trycount+1)
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
config.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ from dotenv import load_dotenv
2
+ import os
3
+
4
+ load_dotenv(dotenv_path=".env") # Load environment variables from .env file
5
+
6
+ # DATABASE_URL = os.getenv("DATABASE_URL")
7
+ # OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
8
+ # OCR_API_KEY = os.getenv("OCR_API_KEY")
9
+ NGROK_AUTH_TOKEN = os.getenv("NGROK_AUTH_TOKEN")
geckodriver ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:12994672529413925506cade8dee78d91683015146dac8dab017496f02d7bbb0
3
+ size 9710704
ml.ipynb ADDED
@@ -0,0 +1,456 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 2,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "import pandas as pd \n",
10
+ "import numpy as np\n"
11
+ ]
12
+ },
13
+ {
14
+ "cell_type": "code",
15
+ "execution_count": 30,
16
+ "metadata": {},
17
+ "outputs": [
18
+ {
19
+ "name": "stderr",
20
+ "output_type": "stream",
21
+ "text": [
22
+ "C:\\Users\\user\\AppData\\Local\\Temp\\ipykernel_20744\\3250454216.py:2: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n",
23
+ " df['hour'] = pd.to_datetime(df['time']).dt.hour\n"
24
+ ]
25
+ }
26
+ ],
27
+ "source": [
28
+ "df= pd.read_csv('data.csv')\n",
29
+ "df['hour'] = pd.to_datetime(df['time']).dt.hour\n",
30
+ "df['weekday'] = pd.to_datetime(df['date']).dt.weekday\n",
31
+ "\n"
32
+ ]
33
+ },
34
+ {
35
+ "cell_type": "code",
36
+ "execution_count": 31,
37
+ "metadata": {},
38
+ "outputs": [
39
+ {
40
+ "data": {
41
+ "text/html": [
42
+ "<div>\n",
43
+ "<style scoped>\n",
44
+ " .dataframe tbody tr th:only-of-type {\n",
45
+ " vertical-align: middle;\n",
46
+ " }\n",
47
+ "\n",
48
+ " .dataframe tbody tr th {\n",
49
+ " vertical-align: top;\n",
50
+ " }\n",
51
+ "\n",
52
+ " .dataframe thead th {\n",
53
+ " text-align: right;\n",
54
+ " }\n",
55
+ "</style>\n",
56
+ "<table border=\"1\" class=\"dataframe\">\n",
57
+ " <thead>\n",
58
+ " <tr style=\"text-align: right;\">\n",
59
+ " <th></th>\n",
60
+ " <th>address</th>\n",
61
+ " <th>car_num</th>\n",
62
+ " <th>lat</th>\n",
63
+ " <th>long</th>\n",
64
+ " <th>time</th>\n",
65
+ " <th>date</th>\n",
66
+ " <th>hour</th>\n",
67
+ " <th>weekday</th>\n",
68
+ " </tr>\n",
69
+ " </thead>\n",
70
+ " <tbody>\n",
71
+ " <tr>\n",
72
+ " <th>0</th>\n",
73
+ " <td>40, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
74
+ " <td>jj</td>\n",
75
+ " <td>88.372527</td>\n",
76
+ " <td>22.580441</td>\n",
77
+ " <td>18:48:39</td>\n",
78
+ " <td>2023-05-02</td>\n",
79
+ " <td>18</td>\n",
80
+ " <td>1</td>\n",
81
+ " </tr>\n",
82
+ " <tr>\n",
83
+ " <th>1</th>\n",
84
+ " <td>40, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
85
+ " <td>jj</td>\n",
86
+ " <td>88.372527</td>\n",
87
+ " <td>22.580441</td>\n",
88
+ " <td>18:48:39</td>\n",
89
+ " <td>2023-05-02</td>\n",
90
+ " <td>18</td>\n",
91
+ " <td>1</td>\n",
92
+ " </tr>\n",
93
+ " <tr>\n",
94
+ " <th>2</th>\n",
95
+ " <td>40, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
96
+ " <td>jj</td>\n",
97
+ " <td>88.372527</td>\n",
98
+ " <td>22.580441</td>\n",
99
+ " <td>18:50:15</td>\n",
100
+ " <td>2023-05-02</td>\n",
101
+ " <td>18</td>\n",
102
+ " <td>1</td>\n",
103
+ " </tr>\n",
104
+ " <tr>\n",
105
+ " <th>3</th>\n",
106
+ " <td>40, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
107
+ " <td>jj</td>\n",
108
+ " <td>88.372526</td>\n",
109
+ " <td>22.580458</td>\n",
110
+ " <td>19:16:08</td>\n",
111
+ " <td>2023-05-02</td>\n",
112
+ " <td>19</td>\n",
113
+ " <td>1</td>\n",
114
+ " </tr>\n",
115
+ " <tr>\n",
116
+ " <th>4</th>\n",
117
+ " <td>15, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
118
+ " <td>jj</td>\n",
119
+ " <td>88.372552</td>\n",
120
+ " <td>22.580432</td>\n",
121
+ " <td>19:17:15</td>\n",
122
+ " <td>2023-05-02</td>\n",
123
+ " <td>19</td>\n",
124
+ " <td>1</td>\n",
125
+ " </tr>\n",
126
+ " </tbody>\n",
127
+ "</table>\n",
128
+ "</div>"
129
+ ],
130
+ "text/plain": [
131
+ " address car_num lat \n",
132
+ "0 40, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372527 \\\n",
133
+ "1 40, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372527 \n",
134
+ "2 40, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372527 \n",
135
+ "3 40, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372526 \n",
136
+ "4 15, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372552 \n",
137
+ "\n",
138
+ " long time date hour weekday \n",
139
+ "0 22.580441 18:48:39 2023-05-02 18 1 \n",
140
+ "1 22.580441 18:48:39 2023-05-02 18 1 \n",
141
+ "2 22.580441 18:50:15 2023-05-02 18 1 \n",
142
+ "3 22.580458 19:16:08 2023-05-02 19 1 \n",
143
+ "4 22.580432 19:17:15 2023-05-02 19 1 "
144
+ ]
145
+ },
146
+ "execution_count": 31,
147
+ "metadata": {},
148
+ "output_type": "execute_result"
149
+ }
150
+ ],
151
+ "source": [
152
+ "df.head()"
153
+ ]
154
+ },
155
+ {
156
+ "cell_type": "code",
157
+ "execution_count": 29,
158
+ "metadata": {},
159
+ "outputs": [],
160
+ "source": [
161
+ "# df.drop(['time','date','address','car_num'],axis=1,inplace=True)"
162
+ ]
163
+ },
164
+ {
165
+ "cell_type": "code",
166
+ "execution_count": 32,
167
+ "metadata": {},
168
+ "outputs": [
169
+ {
170
+ "data": {
171
+ "text/html": [
172
+ "<div>\n",
173
+ "<style scoped>\n",
174
+ " .dataframe tbody tr th:only-of-type {\n",
175
+ " vertical-align: middle;\n",
176
+ " }\n",
177
+ "\n",
178
+ " .dataframe tbody tr th {\n",
179
+ " vertical-align: top;\n",
180
+ " }\n",
181
+ "\n",
182
+ " .dataframe thead th {\n",
183
+ " text-align: right;\n",
184
+ " }\n",
185
+ "</style>\n",
186
+ "<table border=\"1\" class=\"dataframe\">\n",
187
+ " <thead>\n",
188
+ " <tr style=\"text-align: right;\">\n",
189
+ " <th></th>\n",
190
+ " <th>address</th>\n",
191
+ " <th>car_num</th>\n",
192
+ " <th>lat</th>\n",
193
+ " <th>long</th>\n",
194
+ " <th>time</th>\n",
195
+ " <th>date</th>\n",
196
+ " <th>hour</th>\n",
197
+ " <th>weekday</th>\n",
198
+ " </tr>\n",
199
+ " </thead>\n",
200
+ " <tbody>\n",
201
+ " <tr>\n",
202
+ " <th>0</th>\n",
203
+ " <td>40, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
204
+ " <td>jj</td>\n",
205
+ " <td>88.372527</td>\n",
206
+ " <td>22.580441</td>\n",
207
+ " <td>18:48:39</td>\n",
208
+ " <td>2023-05-02</td>\n",
209
+ " <td>18</td>\n",
210
+ " <td>1</td>\n",
211
+ " </tr>\n",
212
+ " <tr>\n",
213
+ " <th>1</th>\n",
214
+ " <td>40, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
215
+ " <td>jj</td>\n",
216
+ " <td>88.372527</td>\n",
217
+ " <td>22.580441</td>\n",
218
+ " <td>18:48:39</td>\n",
219
+ " <td>2023-05-02</td>\n",
220
+ " <td>18</td>\n",
221
+ " <td>1</td>\n",
222
+ " </tr>\n",
223
+ " <tr>\n",
224
+ " <th>2</th>\n",
225
+ " <td>40, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
226
+ " <td>jj</td>\n",
227
+ " <td>88.372527</td>\n",
228
+ " <td>22.580441</td>\n",
229
+ " <td>18:50:15</td>\n",
230
+ " <td>2023-05-02</td>\n",
231
+ " <td>18</td>\n",
232
+ " <td>1</td>\n",
233
+ " </tr>\n",
234
+ " <tr>\n",
235
+ " <th>3</th>\n",
236
+ " <td>40, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
237
+ " <td>jj</td>\n",
238
+ " <td>88.372526</td>\n",
239
+ " <td>22.580458</td>\n",
240
+ " <td>19:16:08</td>\n",
241
+ " <td>2023-05-02</td>\n",
242
+ " <td>19</td>\n",
243
+ " <td>1</td>\n",
244
+ " </tr>\n",
245
+ " <tr>\n",
246
+ " <th>4</th>\n",
247
+ " <td>15, Vidyasagar St, Machuabazar, Kolkata, West ...</td>\n",
248
+ " <td>jj</td>\n",
249
+ " <td>88.372552</td>\n",
250
+ " <td>22.580432</td>\n",
251
+ " <td>19:17:15</td>\n",
252
+ " <td>2023-05-02</td>\n",
253
+ " <td>19</td>\n",
254
+ " <td>1</td>\n",
255
+ " </tr>\n",
256
+ " </tbody>\n",
257
+ "</table>\n",
258
+ "</div>"
259
+ ],
260
+ "text/plain": [
261
+ " address car_num lat \n",
262
+ "0 40, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372527 \\\n",
263
+ "1 40, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372527 \n",
264
+ "2 40, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372527 \n",
265
+ "3 40, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372526 \n",
266
+ "4 15, Vidyasagar St, Machuabazar, Kolkata, West ... jj 88.372552 \n",
267
+ "\n",
268
+ " long time date hour weekday \n",
269
+ "0 22.580441 18:48:39 2023-05-02 18 1 \n",
270
+ "1 22.580441 18:48:39 2023-05-02 18 1 \n",
271
+ "2 22.580441 18:50:15 2023-05-02 18 1 \n",
272
+ "3 22.580458 19:16:08 2023-05-02 19 1 \n",
273
+ "4 22.580432 19:17:15 2023-05-02 19 1 "
274
+ ]
275
+ },
276
+ "execution_count": 32,
277
+ "metadata": {},
278
+ "output_type": "execute_result"
279
+ }
280
+ ],
281
+ "source": [
282
+ "df.head()"
283
+ ]
284
+ },
285
+ {
286
+ "cell_type": "code",
287
+ "execution_count": 34,
288
+ "metadata": {},
289
+ "outputs": [],
290
+ "source": [
291
+ "x=df[['lat','long','weekday']]\n",
292
+ "y= df['hour']"
293
+ ]
294
+ },
295
+ {
296
+ "cell_type": "code",
297
+ "execution_count": 35,
298
+ "metadata": {},
299
+ "outputs": [],
300
+ "source": [
301
+ "# adress_map={}\n",
302
+ "# temp=[]\n",
303
+ "# count=0;\n",
304
+ "# for i in x['address']:\n",
305
+ "\n"
306
+ ]
307
+ },
308
+ {
309
+ "cell_type": "code",
310
+ "execution_count": 36,
311
+ "metadata": {},
312
+ "outputs": [
313
+ {
314
+ "data": {
315
+ "text/html": [
316
+ "<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestRegressor(random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestRegressor</label><div class=\"sk-toggleable__content\"><pre>RandomForestRegressor(random_state=0)</pre></div></div></div></div></div>"
317
+ ],
318
+ "text/plain": [
319
+ "RandomForestRegressor(random_state=0)"
320
+ ]
321
+ },
322
+ "execution_count": 36,
323
+ "metadata": {},
324
+ "output_type": "execute_result"
325
+ }
326
+ ],
327
+ "source": [
328
+ "from sklearn.ensemble import RandomForestRegressor\n",
329
+ " \n",
330
+ "# create regressor object\n",
331
+ "regressor = RandomForestRegressor(n_estimators=100, random_state=0)\n",
332
+ "\n",
333
+ "\n",
334
+ " \n",
335
+ "# fit the regressor with x and y data\n",
336
+ "regressor.fit(x, y)"
337
+ ]
338
+ },
339
+ {
340
+ "cell_type": "code",
341
+ "execution_count": 37,
342
+ "metadata": {},
343
+ "outputs": [
344
+ {
345
+ "name": "stdout",
346
+ "output_type": "stream",
347
+ "text": [
348
+ "[18.08 18.08 18.08 18.64 18.97 18.97 18.97 19. 19. 19. 19. 19.\n",
349
+ " 19. 19. 19. 19. 19. 19. 19. 19.89 19.89 16.99]\n",
350
+ "0 18\n",
351
+ "1 18\n",
352
+ "2 18\n",
353
+ "3 19\n",
354
+ "4 19\n",
355
+ "5 19\n",
356
+ "6 19\n",
357
+ "7 19\n",
358
+ "8 19\n",
359
+ "9 19\n",
360
+ "10 19\n",
361
+ "11 19\n",
362
+ "12 19\n",
363
+ "13 19\n",
364
+ "14 19\n",
365
+ "15 19\n",
366
+ "16 19\n",
367
+ "17 19\n",
368
+ "18 19\n",
369
+ "19 20\n",
370
+ "20 20\n",
371
+ "21 16\n",
372
+ "Name: hour, dtype: int32\n"
373
+ ]
374
+ }
375
+ ],
376
+ "source": [
377
+ "print(regressor.predict(x))\n",
378
+ "print(y)\n"
379
+ ]
380
+ },
381
+ {
382
+ "cell_type": "code",
383
+ "execution_count": 43,
384
+ "metadata": {},
385
+ "outputs": [],
386
+ "source": [
387
+ "adress= df['address']\n",
388
+ "lat= df['lat']\n",
389
+ "long= df['long']\n",
390
+ "weekday= df['weekday']\n",
391
+ "\n",
392
+ "a1=[]\n",
393
+ "lat1=[]\n",
394
+ "long1=[]\n",
395
+ "weekday1=[]\n",
396
+ "\n",
397
+ "\n",
398
+ "\n",
399
+ "i =0\n",
400
+ "\n",
401
+ "while i<len(adress):\n",
402
+ " if adress[i] == '40, Vidyasagar St, Machuabazar, Kolkata, West Bengal 700009, India':\n",
403
+ " a1.append(adress[i])\n",
404
+ " lat1.append(lat[i])\n",
405
+ " long1.append(long[i])\n",
406
+ " weekday1.append(weekday[i])\n",
407
+ " break\n",
408
+ " i=i+1\n",
409
+ "\n",
410
+ "df2= pd.DataFrame({'lat':lat1,'long':long1,'weekday':weekday1})\n",
411
+ "\n",
412
+ "\n",
413
+ " "
414
+ ]
415
+ },
416
+ {
417
+ "cell_type": "code",
418
+ "execution_count": 44,
419
+ "metadata": {},
420
+ "outputs": [
421
+ {
422
+ "name": "stdout",
423
+ "output_type": "stream",
424
+ "text": [
425
+ "[18.08]\n"
426
+ ]
427
+ }
428
+ ],
429
+ "source": [
430
+ "print(regressor.predict(df2))"
431
+ ]
432
+ }
433
+ ],
434
+ "metadata": {
435
+ "kernelspec": {
436
+ "display_name": "Python 3",
437
+ "language": "python",
438
+ "name": "python3"
439
+ },
440
+ "language_info": {
441
+ "codemirror_mode": {
442
+ "name": "ipython",
443
+ "version": 3
444
+ },
445
+ "file_extension": ".py",
446
+ "mimetype": "text/x-python",
447
+ "name": "python",
448
+ "nbconvert_exporter": "python",
449
+ "pygments_lexer": "ipython3",
450
+ "version": "3.8.0"
451
+ },
452
+ "orig_nbformat": 4
453
+ },
454
+ "nbformat": 4,
455
+ "nbformat_minor": 2
456
+ }
package-lock.json ADDED
@@ -0,0 +1,975 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "alcohol",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "alcohol",
9
+ "version": "1.0.0",
10
+ "license": "ISC",
11
+ "dependencies": {
12
+ "firebase": "^9.21.0"
13
+ },
14
+ "devDependencies": {}
15
+ },
16
+ "node_modules/@firebase/analytics": {
17
+ "version": "0.10.0",
18
+ "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz",
19
+ "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==",
20
+ "dependencies": {
21
+ "@firebase/component": "0.6.4",
22
+ "@firebase/installations": "0.6.4",
23
+ "@firebase/logger": "0.4.0",
24
+ "@firebase/util": "1.9.3",
25
+ "tslib": "^2.1.0"
26
+ },
27
+ "peerDependencies": {
28
+ "@firebase/app": "0.x"
29
+ }
30
+ },
31
+ "node_modules/@firebase/analytics-compat": {
32
+ "version": "0.2.6",
33
+ "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz",
34
+ "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==",
35
+ "dependencies": {
36
+ "@firebase/analytics": "0.10.0",
37
+ "@firebase/analytics-types": "0.8.0",
38
+ "@firebase/component": "0.6.4",
39
+ "@firebase/util": "1.9.3",
40
+ "tslib": "^2.1.0"
41
+ },
42
+ "peerDependencies": {
43
+ "@firebase/app-compat": "0.x"
44
+ }
45
+ },
46
+ "node_modules/@firebase/analytics-types": {
47
+ "version": "0.8.0",
48
+ "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz",
49
+ "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw=="
50
+ },
51
+ "node_modules/@firebase/app": {
52
+ "version": "0.9.9",
53
+ "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.9.tgz",
54
+ "integrity": "sha512-8jzuHtQ/t9XqK+0IAQ/lpylVYzXGKIUKm6U3v7LWor+MGIm+9Ucn+hbrd2iBjH8qfmNrjnQnmf7sWBbdSa54oA==",
55
+ "dependencies": {
56
+ "@firebase/component": "0.6.4",
57
+ "@firebase/logger": "0.4.0",
58
+ "@firebase/util": "1.9.3",
59
+ "idb": "7.1.1",
60
+ "tslib": "^2.1.0"
61
+ }
62
+ },
63
+ "node_modules/@firebase/app-check": {
64
+ "version": "0.7.0",
65
+ "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.7.0.tgz",
66
+ "integrity": "sha512-y0raLJpEtiL+wonfInFMaSfBV/EDvr356ZHMWbpr5F7fR0/I3cC0h7U6SKpKhrbSHJ0fOYIe0xbih20KTlpcnA==",
67
+ "dependencies": {
68
+ "@firebase/component": "0.6.4",
69
+ "@firebase/logger": "0.4.0",
70
+ "@firebase/util": "1.9.3",
71
+ "tslib": "^2.1.0"
72
+ },
73
+ "peerDependencies": {
74
+ "@firebase/app": "0.x"
75
+ }
76
+ },
77
+ "node_modules/@firebase/app-check-compat": {
78
+ "version": "0.3.6",
79
+ "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.6.tgz",
80
+ "integrity": "sha512-azHAeHi9igoaIo04E6Yfuc7aIbWoWuBXuqjyYyWbeCc8Zz/NfJvIAgmXugN4LdxsHJ7XGlZTvwJ6YaYROdSa7A==",
81
+ "dependencies": {
82
+ "@firebase/app-check": "0.7.0",
83
+ "@firebase/app-check-types": "0.5.0",
84
+ "@firebase/component": "0.6.4",
85
+ "@firebase/logger": "0.4.0",
86
+ "@firebase/util": "1.9.3",
87
+ "tslib": "^2.1.0"
88
+ },
89
+ "peerDependencies": {
90
+ "@firebase/app-compat": "0.x"
91
+ }
92
+ },
93
+ "node_modules/@firebase/app-check-interop-types": {
94
+ "version": "0.2.0",
95
+ "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.2.0.tgz",
96
+ "integrity": "sha512-+3PQIeX6/eiVK+x/yg8r6xTNR97fN7MahFDm+jiQmDjcyvSefoGuTTNQuuMScGyx3vYUBeZn+Cp9kC0yY/9uxQ=="
97
+ },
98
+ "node_modules/@firebase/app-check-types": {
99
+ "version": "0.5.0",
100
+ "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz",
101
+ "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ=="
102
+ },
103
+ "node_modules/@firebase/app-compat": {
104
+ "version": "0.2.9",
105
+ "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.9.tgz",
106
+ "integrity": "sha512-XdnkHNK3XdPrwChmuSJHDA6eYmo2KLAtaAG1SJLGMQ+n+S5/UcufmDkw9GvPh93H1xhPRAwd/vKdjHmE7xp3Zw==",
107
+ "dependencies": {
108
+ "@firebase/app": "0.9.9",
109
+ "@firebase/component": "0.6.4",
110
+ "@firebase/logger": "0.4.0",
111
+ "@firebase/util": "1.9.3",
112
+ "tslib": "^2.1.0"
113
+ }
114
+ },
115
+ "node_modules/@firebase/app-types": {
116
+ "version": "0.9.0",
117
+ "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz",
118
+ "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q=="
119
+ },
120
+ "node_modules/@firebase/auth": {
121
+ "version": "0.23.1",
122
+ "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.23.1.tgz",
123
+ "integrity": "sha512-QubckPA5Ad92HiY20szjdH7EnFxL8gsZzRLyNCmO2oqebVAVuh9pJp6Zb8EA+P/AuMQYMBo6rQ3oIHi9gUCstg==",
124
+ "dependencies": {
125
+ "@firebase/component": "0.6.4",
126
+ "@firebase/logger": "0.4.0",
127
+ "@firebase/util": "1.9.3",
128
+ "node-fetch": "2.6.7",
129
+ "tslib": "^2.1.0"
130
+ },
131
+ "peerDependencies": {
132
+ "@firebase/app": "0.x"
133
+ }
134
+ },
135
+ "node_modules/@firebase/auth-compat": {
136
+ "version": "0.4.1",
137
+ "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.4.1.tgz",
138
+ "integrity": "sha512-wCw+6Jz7zCWzMA2bN8vphqEUmxuIFxHfBJiF3rKFTCEFPPXG4ulIcmMT98uuZVVq4xDPk/hxm105xwHBFAwBng==",
139
+ "dependencies": {
140
+ "@firebase/auth": "0.23.1",
141
+ "@firebase/auth-types": "0.12.0",
142
+ "@firebase/component": "0.6.4",
143
+ "@firebase/util": "1.9.3",
144
+ "node-fetch": "2.6.7",
145
+ "tslib": "^2.1.0"
146
+ },
147
+ "peerDependencies": {
148
+ "@firebase/app-compat": "0.x"
149
+ }
150
+ },
151
+ "node_modules/@firebase/auth-interop-types": {
152
+ "version": "0.2.1",
153
+ "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz",
154
+ "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg=="
155
+ },
156
+ "node_modules/@firebase/auth-types": {
157
+ "version": "0.12.0",
158
+ "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz",
159
+ "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==",
160
+ "peerDependencies": {
161
+ "@firebase/app-types": "0.x",
162
+ "@firebase/util": "1.x"
163
+ }
164
+ },
165
+ "node_modules/@firebase/component": {
166
+ "version": "0.6.4",
167
+ "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz",
168
+ "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==",
169
+ "dependencies": {
170
+ "@firebase/util": "1.9.3",
171
+ "tslib": "^2.1.0"
172
+ }
173
+ },
174
+ "node_modules/@firebase/database": {
175
+ "version": "0.14.4",
176
+ "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.4.tgz",
177
+ "integrity": "sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==",
178
+ "dependencies": {
179
+ "@firebase/auth-interop-types": "0.2.1",
180
+ "@firebase/component": "0.6.4",
181
+ "@firebase/logger": "0.4.0",
182
+ "@firebase/util": "1.9.3",
183
+ "faye-websocket": "0.11.4",
184
+ "tslib": "^2.1.0"
185
+ }
186
+ },
187
+ "node_modules/@firebase/database-compat": {
188
+ "version": "0.3.4",
189
+ "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.4.tgz",
190
+ "integrity": "sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==",
191
+ "dependencies": {
192
+ "@firebase/component": "0.6.4",
193
+ "@firebase/database": "0.14.4",
194
+ "@firebase/database-types": "0.10.4",
195
+ "@firebase/logger": "0.4.0",
196
+ "@firebase/util": "1.9.3",
197
+ "tslib": "^2.1.0"
198
+ }
199
+ },
200
+ "node_modules/@firebase/database-types": {
201
+ "version": "0.10.4",
202
+ "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.4.tgz",
203
+ "integrity": "sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==",
204
+ "dependencies": {
205
+ "@firebase/app-types": "0.9.0",
206
+ "@firebase/util": "1.9.3"
207
+ }
208
+ },
209
+ "node_modules/@firebase/firestore": {
210
+ "version": "3.11.0",
211
+ "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.11.0.tgz",
212
+ "integrity": "sha512-r9qUbjuIKOXAVYwqZaamgXuUJBuV8I2X0Kao5PUxQAPueV2mRapdIlby6awYgjknE8kq1Tlys5Nf5/TV6WtnAg==",
213
+ "dependencies": {
214
+ "@firebase/component": "0.6.4",
215
+ "@firebase/logger": "0.4.0",
216
+ "@firebase/util": "1.9.3",
217
+ "@firebase/webchannel-wrapper": "0.10.0",
218
+ "@grpc/grpc-js": "~1.7.0",
219
+ "@grpc/proto-loader": "^0.6.13",
220
+ "node-fetch": "2.6.7",
221
+ "tslib": "^2.1.0"
222
+ },
223
+ "engines": {
224
+ "node": ">=10.10.0"
225
+ },
226
+ "peerDependencies": {
227
+ "@firebase/app": "0.x"
228
+ }
229
+ },
230
+ "node_modules/@firebase/firestore-compat": {
231
+ "version": "0.3.8",
232
+ "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.8.tgz",
233
+ "integrity": "sha512-VrTckDEVBqFWFsHGVdQgCb0Tht/Rrg/nKFp2aat0FaIjr8A9t4Pfcuu32Py25SbiCnr98pyh3RmVYs0kbF/lCA==",
234
+ "dependencies": {
235
+ "@firebase/component": "0.6.4",
236
+ "@firebase/firestore": "3.11.0",
237
+ "@firebase/firestore-types": "2.5.1",
238
+ "@firebase/util": "1.9.3",
239
+ "tslib": "^2.1.0"
240
+ },
241
+ "peerDependencies": {
242
+ "@firebase/app-compat": "0.x"
243
+ }
244
+ },
245
+ "node_modules/@firebase/firestore-types": {
246
+ "version": "2.5.1",
247
+ "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.1.tgz",
248
+ "integrity": "sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==",
249
+ "peerDependencies": {
250
+ "@firebase/app-types": "0.x",
251
+ "@firebase/util": "1.x"
252
+ }
253
+ },
254
+ "node_modules/@firebase/functions": {
255
+ "version": "0.9.4",
256
+ "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.9.4.tgz",
257
+ "integrity": "sha512-3H2qh6U+q+nepO5Hds+Ddl6J0pS+zisuBLqqQMRBHv9XpWfu0PnDHklNmE8rZ+ccTEXvBj6zjkPfdxt6NisvlQ==",
258
+ "dependencies": {
259
+ "@firebase/app-check-interop-types": "0.2.0",
260
+ "@firebase/auth-interop-types": "0.2.1",
261
+ "@firebase/component": "0.6.4",
262
+ "@firebase/messaging-interop-types": "0.2.0",
263
+ "@firebase/util": "1.9.3",
264
+ "node-fetch": "2.6.7",
265
+ "tslib": "^2.1.0"
266
+ },
267
+ "peerDependencies": {
268
+ "@firebase/app": "0.x"
269
+ }
270
+ },
271
+ "node_modules/@firebase/functions-compat": {
272
+ "version": "0.3.4",
273
+ "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.4.tgz",
274
+ "integrity": "sha512-kxVxTGyLV1MBR3sp3mI+eQ6JBqz0G5bk310F8eX4HzDFk4xjk5xY0KdHktMH+edM2xs1BOg0vwvvsAHczIjB+w==",
275
+ "dependencies": {
276
+ "@firebase/component": "0.6.4",
277
+ "@firebase/functions": "0.9.4",
278
+ "@firebase/functions-types": "0.6.0",
279
+ "@firebase/util": "1.9.3",
280
+ "tslib": "^2.1.0"
281
+ },
282
+ "peerDependencies": {
283
+ "@firebase/app-compat": "0.x"
284
+ }
285
+ },
286
+ "node_modules/@firebase/functions-types": {
287
+ "version": "0.6.0",
288
+ "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz",
289
+ "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw=="
290
+ },
291
+ "node_modules/@firebase/installations": {
292
+ "version": "0.6.4",
293
+ "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.4.tgz",
294
+ "integrity": "sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==",
295
+ "dependencies": {
296
+ "@firebase/component": "0.6.4",
297
+ "@firebase/util": "1.9.3",
298
+ "idb": "7.0.1",
299
+ "tslib": "^2.1.0"
300
+ },
301
+ "peerDependencies": {
302
+ "@firebase/app": "0.x"
303
+ }
304
+ },
305
+ "node_modules/@firebase/installations-compat": {
306
+ "version": "0.2.4",
307
+ "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.4.tgz",
308
+ "integrity": "sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==",
309
+ "dependencies": {
310
+ "@firebase/component": "0.6.4",
311
+ "@firebase/installations": "0.6.4",
312
+ "@firebase/installations-types": "0.5.0",
313
+ "@firebase/util": "1.9.3",
314
+ "tslib": "^2.1.0"
315
+ },
316
+ "peerDependencies": {
317
+ "@firebase/app-compat": "0.x"
318
+ }
319
+ },
320
+ "node_modules/@firebase/installations-types": {
321
+ "version": "0.5.0",
322
+ "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz",
323
+ "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==",
324
+ "peerDependencies": {
325
+ "@firebase/app-types": "0.x"
326
+ }
327
+ },
328
+ "node_modules/@firebase/installations/node_modules/idb": {
329
+ "version": "7.0.1",
330
+ "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz",
331
+ "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg=="
332
+ },
333
+ "node_modules/@firebase/logger": {
334
+ "version": "0.4.0",
335
+ "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz",
336
+ "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==",
337
+ "dependencies": {
338
+ "tslib": "^2.1.0"
339
+ }
340
+ },
341
+ "node_modules/@firebase/messaging": {
342
+ "version": "0.12.4",
343
+ "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.4.tgz",
344
+ "integrity": "sha512-6JLZct6zUaex4g7HI3QbzeUrg9xcnmDAPTWpkoMpd/GoSVWH98zDoWXMGrcvHeCAIsLpFMe4MPoZkJbrPhaASw==",
345
+ "dependencies": {
346
+ "@firebase/component": "0.6.4",
347
+ "@firebase/installations": "0.6.4",
348
+ "@firebase/messaging-interop-types": "0.2.0",
349
+ "@firebase/util": "1.9.3",
350
+ "idb": "7.0.1",
351
+ "tslib": "^2.1.0"
352
+ },
353
+ "peerDependencies": {
354
+ "@firebase/app": "0.x"
355
+ }
356
+ },
357
+ "node_modules/@firebase/messaging-compat": {
358
+ "version": "0.2.4",
359
+ "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.4.tgz",
360
+ "integrity": "sha512-lyFjeUhIsPRYDPNIkYX1LcZMpoVbBWXX4rPl7c/rqc7G+EUea7IEtSt4MxTvh6fDfPuzLn7+FZADfscC+tNMfg==",
361
+ "dependencies": {
362
+ "@firebase/component": "0.6.4",
363
+ "@firebase/messaging": "0.12.4",
364
+ "@firebase/util": "1.9.3",
365
+ "tslib": "^2.1.0"
366
+ },
367
+ "peerDependencies": {
368
+ "@firebase/app-compat": "0.x"
369
+ }
370
+ },
371
+ "node_modules/@firebase/messaging-interop-types": {
372
+ "version": "0.2.0",
373
+ "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz",
374
+ "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ=="
375
+ },
376
+ "node_modules/@firebase/messaging/node_modules/idb": {
377
+ "version": "7.0.1",
378
+ "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz",
379
+ "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg=="
380
+ },
381
+ "node_modules/@firebase/performance": {
382
+ "version": "0.6.4",
383
+ "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.4.tgz",
384
+ "integrity": "sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==",
385
+ "dependencies": {
386
+ "@firebase/component": "0.6.4",
387
+ "@firebase/installations": "0.6.4",
388
+ "@firebase/logger": "0.4.0",
389
+ "@firebase/util": "1.9.3",
390
+ "tslib": "^2.1.0"
391
+ },
392
+ "peerDependencies": {
393
+ "@firebase/app": "0.x"
394
+ }
395
+ },
396
+ "node_modules/@firebase/performance-compat": {
397
+ "version": "0.2.4",
398
+ "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.4.tgz",
399
+ "integrity": "sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==",
400
+ "dependencies": {
401
+ "@firebase/component": "0.6.4",
402
+ "@firebase/logger": "0.4.0",
403
+ "@firebase/performance": "0.6.4",
404
+ "@firebase/performance-types": "0.2.0",
405
+ "@firebase/util": "1.9.3",
406
+ "tslib": "^2.1.0"
407
+ },
408
+ "peerDependencies": {
409
+ "@firebase/app-compat": "0.x"
410
+ }
411
+ },
412
+ "node_modules/@firebase/performance-types": {
413
+ "version": "0.2.0",
414
+ "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz",
415
+ "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA=="
416
+ },
417
+ "node_modules/@firebase/remote-config": {
418
+ "version": "0.4.4",
419
+ "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.4.tgz",
420
+ "integrity": "sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==",
421
+ "dependencies": {
422
+ "@firebase/component": "0.6.4",
423
+ "@firebase/installations": "0.6.4",
424
+ "@firebase/logger": "0.4.0",
425
+ "@firebase/util": "1.9.3",
426
+ "tslib": "^2.1.0"
427
+ },
428
+ "peerDependencies": {
429
+ "@firebase/app": "0.x"
430
+ }
431
+ },
432
+ "node_modules/@firebase/remote-config-compat": {
433
+ "version": "0.2.4",
434
+ "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz",
435
+ "integrity": "sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==",
436
+ "dependencies": {
437
+ "@firebase/component": "0.6.4",
438
+ "@firebase/logger": "0.4.0",
439
+ "@firebase/remote-config": "0.4.4",
440
+ "@firebase/remote-config-types": "0.3.0",
441
+ "@firebase/util": "1.9.3",
442
+ "tslib": "^2.1.0"
443
+ },
444
+ "peerDependencies": {
445
+ "@firebase/app-compat": "0.x"
446
+ }
447
+ },
448
+ "node_modules/@firebase/remote-config-types": {
449
+ "version": "0.3.0",
450
+ "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz",
451
+ "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA=="
452
+ },
453
+ "node_modules/@firebase/storage": {
454
+ "version": "0.11.2",
455
+ "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.11.2.tgz",
456
+ "integrity": "sha512-CtvoFaBI4hGXlXbaCHf8humajkbXhs39Nbh6MbNxtwJiCqxPy9iH3D3CCfXAvP0QvAAwmJUTK3+z9a++Kc4nkA==",
457
+ "dependencies": {
458
+ "@firebase/component": "0.6.4",
459
+ "@firebase/util": "1.9.3",
460
+ "node-fetch": "2.6.7",
461
+ "tslib": "^2.1.0"
462
+ },
463
+ "peerDependencies": {
464
+ "@firebase/app": "0.x"
465
+ }
466
+ },
467
+ "node_modules/@firebase/storage-compat": {
468
+ "version": "0.3.2",
469
+ "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.2.tgz",
470
+ "integrity": "sha512-wvsXlLa9DVOMQJckbDNhXKKxRNNewyUhhbXev3t8kSgoCotd1v3MmqhKKz93ePhDnhHnDs7bYHy+Qa8dRY6BXw==",
471
+ "dependencies": {
472
+ "@firebase/component": "0.6.4",
473
+ "@firebase/storage": "0.11.2",
474
+ "@firebase/storage-types": "0.8.0",
475
+ "@firebase/util": "1.9.3",
476
+ "tslib": "^2.1.0"
477
+ },
478
+ "peerDependencies": {
479
+ "@firebase/app-compat": "0.x"
480
+ }
481
+ },
482
+ "node_modules/@firebase/storage-types": {
483
+ "version": "0.8.0",
484
+ "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.0.tgz",
485
+ "integrity": "sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==",
486
+ "peerDependencies": {
487
+ "@firebase/app-types": "0.x",
488
+ "@firebase/util": "1.x"
489
+ }
490
+ },
491
+ "node_modules/@firebase/util": {
492
+ "version": "1.9.3",
493
+ "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz",
494
+ "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==",
495
+ "dependencies": {
496
+ "tslib": "^2.1.0"
497
+ }
498
+ },
499
+ "node_modules/@firebase/webchannel-wrapper": {
500
+ "version": "0.10.0",
501
+ "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.0.tgz",
502
+ "integrity": "sha512-2I8y+vJVrPfPFJrnRGpao1Qc2Gu7wmYoo5ed2s5zK/DUGgcyY1Yr/xC0YdnKM4pi7rG3HqwW9ehAKUXoTMLdoA=="
503
+ },
504
+ "node_modules/@grpc/grpc-js": {
505
+ "version": "1.7.3",
506
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz",
507
+ "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==",
508
+ "dependencies": {
509
+ "@grpc/proto-loader": "^0.7.0",
510
+ "@types/node": ">=12.12.47"
511
+ },
512
+ "engines": {
513
+ "node": "^8.13.0 || >=10.10.0"
514
+ }
515
+ },
516
+ "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": {
517
+ "version": "0.7.6",
518
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.6.tgz",
519
+ "integrity": "sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw==",
520
+ "dependencies": {
521
+ "@types/long": "^4.0.1",
522
+ "lodash.camelcase": "^4.3.0",
523
+ "long": "^4.0.0",
524
+ "protobufjs": "^7.0.0",
525
+ "yargs": "^16.2.0"
526
+ },
527
+ "bin": {
528
+ "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
529
+ },
530
+ "engines": {
531
+ "node": ">=6"
532
+ }
533
+ },
534
+ "node_modules/@grpc/grpc-js/node_modules/protobufjs": {
535
+ "version": "7.2.3",
536
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz",
537
+ "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==",
538
+ "hasInstallScript": true,
539
+ "dependencies": {
540
+ "@protobufjs/aspromise": "^1.1.2",
541
+ "@protobufjs/base64": "^1.1.2",
542
+ "@protobufjs/codegen": "^2.0.4",
543
+ "@protobufjs/eventemitter": "^1.1.0",
544
+ "@protobufjs/fetch": "^1.1.0",
545
+ "@protobufjs/float": "^1.0.2",
546
+ "@protobufjs/inquire": "^1.1.0",
547
+ "@protobufjs/path": "^1.1.2",
548
+ "@protobufjs/pool": "^1.1.0",
549
+ "@protobufjs/utf8": "^1.1.0",
550
+ "@types/node": ">=13.7.0",
551
+ "long": "^5.0.0"
552
+ },
553
+ "engines": {
554
+ "node": ">=12.0.0"
555
+ }
556
+ },
557
+ "node_modules/@grpc/grpc-js/node_modules/protobufjs/node_modules/long": {
558
+ "version": "5.2.3",
559
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
560
+ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
561
+ },
562
+ "node_modules/@grpc/proto-loader": {
563
+ "version": "0.6.13",
564
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz",
565
+ "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==",
566
+ "dependencies": {
567
+ "@types/long": "^4.0.1",
568
+ "lodash.camelcase": "^4.3.0",
569
+ "long": "^4.0.0",
570
+ "protobufjs": "^6.11.3",
571
+ "yargs": "^16.2.0"
572
+ },
573
+ "bin": {
574
+ "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
575
+ },
576
+ "engines": {
577
+ "node": ">=6"
578
+ }
579
+ },
580
+ "node_modules/@protobufjs/aspromise": {
581
+ "version": "1.1.2",
582
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
583
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
584
+ },
585
+ "node_modules/@protobufjs/base64": {
586
+ "version": "1.1.2",
587
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
588
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
589
+ },
590
+ "node_modules/@protobufjs/codegen": {
591
+ "version": "2.0.4",
592
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
593
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
594
+ },
595
+ "node_modules/@protobufjs/eventemitter": {
596
+ "version": "1.1.0",
597
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
598
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
599
+ },
600
+ "node_modules/@protobufjs/fetch": {
601
+ "version": "1.1.0",
602
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
603
+ "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
604
+ "dependencies": {
605
+ "@protobufjs/aspromise": "^1.1.1",
606
+ "@protobufjs/inquire": "^1.1.0"
607
+ }
608
+ },
609
+ "node_modules/@protobufjs/float": {
610
+ "version": "1.0.2",
611
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
612
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
613
+ },
614
+ "node_modules/@protobufjs/inquire": {
615
+ "version": "1.1.0",
616
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
617
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
618
+ },
619
+ "node_modules/@protobufjs/path": {
620
+ "version": "1.1.2",
621
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
622
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
623
+ },
624
+ "node_modules/@protobufjs/pool": {
625
+ "version": "1.1.0",
626
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
627
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
628
+ },
629
+ "node_modules/@protobufjs/utf8": {
630
+ "version": "1.1.0",
631
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
632
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
633
+ },
634
+ "node_modules/@types/long": {
635
+ "version": "4.0.2",
636
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
637
+ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
638
+ },
639
+ "node_modules/@types/node": {
640
+ "version": "18.16.3",
641
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz",
642
+ "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q=="
643
+ },
644
+ "node_modules/ansi-regex": {
645
+ "version": "5.0.1",
646
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
647
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
648
+ "engines": {
649
+ "node": ">=8"
650
+ }
651
+ },
652
+ "node_modules/ansi-styles": {
653
+ "version": "4.3.0",
654
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
655
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
656
+ "dependencies": {
657
+ "color-convert": "^2.0.1"
658
+ },
659
+ "engines": {
660
+ "node": ">=8"
661
+ },
662
+ "funding": {
663
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
664
+ }
665
+ },
666
+ "node_modules/cliui": {
667
+ "version": "7.0.4",
668
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
669
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
670
+ "dependencies": {
671
+ "string-width": "^4.2.0",
672
+ "strip-ansi": "^6.0.0",
673
+ "wrap-ansi": "^7.0.0"
674
+ }
675
+ },
676
+ "node_modules/color-convert": {
677
+ "version": "2.0.1",
678
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
679
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
680
+ "dependencies": {
681
+ "color-name": "~1.1.4"
682
+ },
683
+ "engines": {
684
+ "node": ">=7.0.0"
685
+ }
686
+ },
687
+ "node_modules/color-name": {
688
+ "version": "1.1.4",
689
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
690
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
691
+ },
692
+ "node_modules/emoji-regex": {
693
+ "version": "8.0.0",
694
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
695
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
696
+ },
697
+ "node_modules/escalade": {
698
+ "version": "3.1.1",
699
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
700
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
701
+ "engines": {
702
+ "node": ">=6"
703
+ }
704
+ },
705
+ "node_modules/faye-websocket": {
706
+ "version": "0.11.4",
707
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
708
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
709
+ "dependencies": {
710
+ "websocket-driver": ">=0.5.1"
711
+ },
712
+ "engines": {
713
+ "node": ">=0.8.0"
714
+ }
715
+ },
716
+ "node_modules/firebase": {
717
+ "version": "9.21.0",
718
+ "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.21.0.tgz",
719
+ "integrity": "sha512-kQpT+YjusVhqj8feSmb+9Fpmyfy7ayGSd6GVk2k0qJjt+AwYgHZ9tuHuIgFdEHGsvqxYRZJpu067ck9ZQwbqQw==",
720
+ "dependencies": {
721
+ "@firebase/analytics": "0.10.0",
722
+ "@firebase/analytics-compat": "0.2.6",
723
+ "@firebase/app": "0.9.9",
724
+ "@firebase/app-check": "0.7.0",
725
+ "@firebase/app-check-compat": "0.3.6",
726
+ "@firebase/app-compat": "0.2.9",
727
+ "@firebase/app-types": "0.9.0",
728
+ "@firebase/auth": "0.23.1",
729
+ "@firebase/auth-compat": "0.4.1",
730
+ "@firebase/database": "0.14.4",
731
+ "@firebase/database-compat": "0.3.4",
732
+ "@firebase/firestore": "3.11.0",
733
+ "@firebase/firestore-compat": "0.3.8",
734
+ "@firebase/functions": "0.9.4",
735
+ "@firebase/functions-compat": "0.3.4",
736
+ "@firebase/installations": "0.6.4",
737
+ "@firebase/installations-compat": "0.2.4",
738
+ "@firebase/messaging": "0.12.4",
739
+ "@firebase/messaging-compat": "0.2.4",
740
+ "@firebase/performance": "0.6.4",
741
+ "@firebase/performance-compat": "0.2.4",
742
+ "@firebase/remote-config": "0.4.4",
743
+ "@firebase/remote-config-compat": "0.2.4",
744
+ "@firebase/storage": "0.11.2",
745
+ "@firebase/storage-compat": "0.3.2",
746
+ "@firebase/util": "1.9.3"
747
+ }
748
+ },
749
+ "node_modules/get-caller-file": {
750
+ "version": "2.0.5",
751
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
752
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
753
+ "engines": {
754
+ "node": "6.* || 8.* || >= 10.*"
755
+ }
756
+ },
757
+ "node_modules/http-parser-js": {
758
+ "version": "0.5.8",
759
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
760
+ "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
761
+ },
762
+ "node_modules/idb": {
763
+ "version": "7.1.1",
764
+ "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
765
+ "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ=="
766
+ },
767
+ "node_modules/is-fullwidth-code-point": {
768
+ "version": "3.0.0",
769
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
770
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
771
+ "engines": {
772
+ "node": ">=8"
773
+ }
774
+ },
775
+ "node_modules/lodash.camelcase": {
776
+ "version": "4.3.0",
777
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
778
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
779
+ },
780
+ "node_modules/long": {
781
+ "version": "4.0.0",
782
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
783
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
784
+ },
785
+ "node_modules/node-fetch": {
786
+ "version": "2.6.7",
787
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
788
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
789
+ "dependencies": {
790
+ "whatwg-url": "^5.0.0"
791
+ },
792
+ "engines": {
793
+ "node": "4.x || >=6.0.0"
794
+ },
795
+ "peerDependencies": {
796
+ "encoding": "^0.1.0"
797
+ },
798
+ "peerDependenciesMeta": {
799
+ "encoding": {
800
+ "optional": true
801
+ }
802
+ }
803
+ },
804
+ "node_modules/protobufjs": {
805
+ "version": "6.11.3",
806
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
807
+ "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==",
808
+ "hasInstallScript": true,
809
+ "dependencies": {
810
+ "@protobufjs/aspromise": "^1.1.2",
811
+ "@protobufjs/base64": "^1.1.2",
812
+ "@protobufjs/codegen": "^2.0.4",
813
+ "@protobufjs/eventemitter": "^1.1.0",
814
+ "@protobufjs/fetch": "^1.1.0",
815
+ "@protobufjs/float": "^1.0.2",
816
+ "@protobufjs/inquire": "^1.1.0",
817
+ "@protobufjs/path": "^1.1.2",
818
+ "@protobufjs/pool": "^1.1.0",
819
+ "@protobufjs/utf8": "^1.1.0",
820
+ "@types/long": "^4.0.1",
821
+ "@types/node": ">=13.7.0",
822
+ "long": "^4.0.0"
823
+ },
824
+ "bin": {
825
+ "pbjs": "bin/pbjs",
826
+ "pbts": "bin/pbts"
827
+ }
828
+ },
829
+ "node_modules/require-directory": {
830
+ "version": "2.1.1",
831
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
832
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
833
+ "engines": {
834
+ "node": ">=0.10.0"
835
+ }
836
+ },
837
+ "node_modules/safe-buffer": {
838
+ "version": "5.2.1",
839
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
840
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
841
+ "funding": [
842
+ {
843
+ "type": "github",
844
+ "url": "https://github.com/sponsors/feross"
845
+ },
846
+ {
847
+ "type": "patreon",
848
+ "url": "https://www.patreon.com/feross"
849
+ },
850
+ {
851
+ "type": "consulting",
852
+ "url": "https://feross.org/support"
853
+ }
854
+ ]
855
+ },
856
+ "node_modules/string-width": {
857
+ "version": "4.2.3",
858
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
859
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
860
+ "dependencies": {
861
+ "emoji-regex": "^8.0.0",
862
+ "is-fullwidth-code-point": "^3.0.0",
863
+ "strip-ansi": "^6.0.1"
864
+ },
865
+ "engines": {
866
+ "node": ">=8"
867
+ }
868
+ },
869
+ "node_modules/strip-ansi": {
870
+ "version": "6.0.1",
871
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
872
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
873
+ "dependencies": {
874
+ "ansi-regex": "^5.0.1"
875
+ },
876
+ "engines": {
877
+ "node": ">=8"
878
+ }
879
+ },
880
+ "node_modules/tr46": {
881
+ "version": "0.0.3",
882
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
883
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
884
+ },
885
+ "node_modules/tslib": {
886
+ "version": "2.5.0",
887
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
888
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
889
+ },
890
+ "node_modules/webidl-conversions": {
891
+ "version": "3.0.1",
892
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
893
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
894
+ },
895
+ "node_modules/websocket-driver": {
896
+ "version": "0.7.4",
897
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
898
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
899
+ "dependencies": {
900
+ "http-parser-js": ">=0.5.1",
901
+ "safe-buffer": ">=5.1.0",
902
+ "websocket-extensions": ">=0.1.1"
903
+ },
904
+ "engines": {
905
+ "node": ">=0.8.0"
906
+ }
907
+ },
908
+ "node_modules/websocket-extensions": {
909
+ "version": "0.1.4",
910
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
911
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
912
+ "engines": {
913
+ "node": ">=0.8.0"
914
+ }
915
+ },
916
+ "node_modules/whatwg-url": {
917
+ "version": "5.0.0",
918
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
919
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
920
+ "dependencies": {
921
+ "tr46": "~0.0.3",
922
+ "webidl-conversions": "^3.0.0"
923
+ }
924
+ },
925
+ "node_modules/wrap-ansi": {
926
+ "version": "7.0.0",
927
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
928
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
929
+ "dependencies": {
930
+ "ansi-styles": "^4.0.0",
931
+ "string-width": "^4.1.0",
932
+ "strip-ansi": "^6.0.0"
933
+ },
934
+ "engines": {
935
+ "node": ">=10"
936
+ },
937
+ "funding": {
938
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
939
+ }
940
+ },
941
+ "node_modules/y18n": {
942
+ "version": "5.0.8",
943
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
944
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
945
+ "engines": {
946
+ "node": ">=10"
947
+ }
948
+ },
949
+ "node_modules/yargs": {
950
+ "version": "16.2.0",
951
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
952
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
953
+ "dependencies": {
954
+ "cliui": "^7.0.2",
955
+ "escalade": "^3.1.1",
956
+ "get-caller-file": "^2.0.5",
957
+ "require-directory": "^2.1.1",
958
+ "string-width": "^4.2.0",
959
+ "y18n": "^5.0.5",
960
+ "yargs-parser": "^20.2.2"
961
+ },
962
+ "engines": {
963
+ "node": ">=10"
964
+ }
965
+ },
966
+ "node_modules/yargs-parser": {
967
+ "version": "20.2.9",
968
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
969
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
970
+ "engines": {
971
+ "node": ">=10"
972
+ }
973
+ }
974
+ }
975
+ }
package.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "alcohol",
3
+ "version": "1.0.0",
4
+ "main": "firebase.js",
5
+ "scripts": {
6
+ "test": "echo \"Error: no test specified\" && exit 1"
7
+ },
8
+ "author": "",
9
+ "license": "ISC",
10
+ "dependencies": {
11
+ "firebase": "^9.21.0"
12
+ },
13
+ "description": ""
14
+ }
pyngrok.yml ADDED
@@ -0,0 +1 @@
 
 
1
+ ngrok_path: /tmp/ngrok
requirements.txt ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ aniso8601
2
+ asttokens
3
+ backcall
4
+ bidict
5
+ blinker
6
+ CacheControl
7
+ cachetools
8
+ certifi
9
+ cffi
10
+ charset-normalizer
11
+ click
12
+ colorama
13
+ comm
14
+ cryptography
15
+ debugpy
16
+ decorator
17
+ dnspython
18
+ docopt
19
+ email-validator
20
+ executing
21
+ grpcio
22
+ grpcio-status
23
+ httplib2
24
+ idna
25
+ importlib-metadata
26
+ ipykernel
27
+ ipython
28
+ itsdangerous
29
+ jedi
30
+ Jinja2
31
+ joblib
32
+ jupyter_client
33
+ jupyter_core
34
+ MarkupSafe
35
+ matplotlib-inline
36
+ mongoengine
37
+ msgpack
38
+ nest-asyncio
39
+ numpy
40
+ packaging
41
+ pandas
42
+ parso
43
+ pickleshare
44
+ pipreqs
45
+ platformdirs
46
+ prompt-toolkit
47
+ proto-plus
48
+ protobuf
49
+ psutil
50
+ pure-eval
51
+ pyasn1
52
+ pyasn1-modules
53
+ pycparser
54
+ pydub
55
+ Pygments
56
+ PyJWT
57
+ pymongo
58
+ pyparsing
59
+ python-dateutil
60
+ python-engineio
61
+ python-socketio
62
+ pytz
63
+ pyzmq
64
+ requests
65
+ rsa
66
+ six
67
+ sockets
68
+ stack-data
69
+ threadpoolctl
70
+ tornado
71
+ traitlets
72
+ typing_extensions
73
+ tzdata
74
+ uritemplate
75
+ urllib3
76
+ wcwidth
77
+ Werkzeug
78
+ WTForms
79
+ yarg
80
+ zipp
81
+ gunicorn
82
+ uvicorn
83
+ fastapi
84
+ pydantic
85
+ python-multipart
86
+ selenium
87
+
88
+
89
+
90
+
temp.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ import pandas as pd
2
+
3
+ pd = pd.DataFrame({'address':[], 'car_num': [], 'lat': [], 'long': [], 'time': [], 'date': []})
4
+ pd.to_csv('data.csv', index=False)
web.html ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>API Demo</title>
5
+ </head>
6
+ <body>
7
+ <h1>API Demo</h1>
8
+ <label for="day">Select a day:</label>
9
+ <select id="day">
10
+ <option value="monday">Monday</option>
11
+ <option value="tuesday">Tuesday</option>
12
+ <option value="wednesday">Wednesday</option>
13
+ <option value="thursday">Thursday</option>
14
+ <option value="friday">Friday</option>
15
+ <option value="saturday">Saturday</option>
16
+ <option value="sunday">Sunday</option>
17
+ </select>
18
+ <label for="data">Select data:</label>
19
+ <select id="data" name="data"></select>
20
+ <br><br>
21
+ <input type="button" value="Submit" onclick="fetchData()">
22
+
23
+ <!-- <br><br>
24
+ <button onclick="fetchAPI()">Submit</button>
25
+ <br><br> -->
26
+ <div id="result"></div>
27
+ <script>
28
+ function fetchData() {
29
+ const day = document.getElementById("day").value;
30
+ const dataSelect = document.getElementById("data");
31
+ const resultDiv = document.getElementById("result");
32
+
33
+ // Clear previous results
34
+ resultDiv.innerHTML = "";
35
+
36
+ // Make API request
37
+ fetch(`https://api.example.com/data/${day}`)
38
+ .then(response => response.json())
39
+ .then(data => {
40
+ // Populate data dropdown
41
+ dataSelect.innerHTML = "";
42
+ data.forEach(item => {
43
+ const option = document.createElement("option");
44
+ option.value = item.value;
45
+ option.textContent = item.label;
46
+ dataSelect.appendChild(option);
47
+ });
48
+
49
+ // Show fetched data
50
+ resultDiv.innerHTML = `Data for ${day}: ${JSON.stringify(data)}`;
51
+ })
52
+ .catch(error => {
53
+ console.error(error);
54
+ resultDiv.innerHTML = "Error fetching data.";
55
+ });
56
+ }
57
+
58
+ </script>
59
+ </body>
60
+ </html>