├── README.md ├── pub ├── ircp ├── bhqz.yaml ├── ssr.yaml ├── freenode.yaml ├── wxshi.yaml ├── sansor ├── Matsuri ├── shenzo ├── dswang.yaml └── misersun-config003.yaml ├── .gitignore ├── utils ├── temp-requirements.txt ├── proxyUtils.py ├── test.py ├── jiang.py ├── test2.py ├── mattkaydiary.py ├── cfmem.py ├── formatUtils.py └── yamlUtils.py ├── requirements.txt ├── adguard_dns.json ├── localserver ├── package.json ├── index.js ├── yarn.lock └── package-lock.json ├── get_link.py ├── .github ├── workflows │ ├── test.yml │ ├── get_v2.yaml │ ├── grabproxies.yml │ └── test2.yml └── repo-sync.yml ├── get_clash.py └── template.json /README.md: -------------------------------------------------------------------------------- 1 | # get_v2 -------------------------------------------------------------------------------- /pub/ircp: -------------------------------------------------------------------------------- 1 | NDA0OiBOb3QgRm91bmQ= -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | __pycache__ 3 | -------------------------------------------------------------------------------- /utils/temp-requirements.txt: -------------------------------------------------------------------------------- 1 | geoip2==4.4.0 2 | requests==2.26.0 3 | PyYAML==6.0 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | bs4==0.0.1 3 | beautifulsoup4 4 | pyquery==1.4.0 5 | ruamel.yaml==0.16.13 6 | GitPython==3.1.24 7 | Telethon 8 | -------------------------------------------------------------------------------- /utils/proxyUtils.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | 4 | def get_proxy(): 5 | proxies = {} 6 | try: 7 | requests.get("http://localhost:1080") 8 | proxies = { 9 | "http": "http://localhost:1080", 10 | "https": "http://localhost:1080", 11 | } 12 | except Exception as e: 13 | pass 14 | return proxies -------------------------------------------------------------------------------- /utils/test.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import urllib.parse 3 | 4 | url = "https://raw.githubusercontent.com/pojiezhiyuanjun/freev2/master/1020.txt" 5 | host = "http://0.0.0.0:25500" 6 | 7 | url = urllib.parse.quote(url, safe='') 8 | try: 9 | res = requests.get(f'{host}/sub?target=clash&url={url}&insert=false&emoji=true&list=true').text 10 | print(res) 11 | except Exception as e: 12 | print(e) 13 | -------------------------------------------------------------------------------- /adguard_dns.json: -------------------------------------------------------------------------------- 1 | { 2 | "enable": true, 3 | "ipv6": false, 4 | "listen": "180.76.55.43:53", 5 | "enhanced-mode": "redir-host", 6 | "default-nameserver": [ 7 | "119.29.29.29", 8 | "119.28.28.28", 9 | "1.0.0.1", 10 | "208.67.222.222", 11 | "1.2.4.8" 12 | ], 13 | "nameserver": [ 14 | "https://dns.alidns.com/dns-query", 15 | "https://1.1.1.1/dns-query", 16 | "tls://dns.adguard.com:853" 17 | ] 18 | } -------------------------------------------------------------------------------- /utils/jiang.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | from utils.proxyUtils import get_proxy 4 | 5 | 6 | def get_content(): 7 | proxies = get_proxy() 8 | 9 | url = "https://api.dler.io/sub?target=clash&new_name=true&url=https://jiang.netlify.app&insert=false&config=https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online.ini" 10 | file = requests.get(url, proxies=proxies) 11 | with open("pub/jiang.yaml", "wb") as f: 12 | f.write(file.content) 13 | -------------------------------------------------------------------------------- /localserver/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shadowsocks-server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "type": "commonjs", 7 | "scripts": { 8 | "start": "nodemon index.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "cors": "^2.8.5", 15 | "express": "^4.18.1", 16 | "js-base64": "^3.7.2", 17 | "needle": "^3.1.0", 18 | "nodemon": "^2.0.20", 19 | "yarn": "^1.22.19" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /utils/test2.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | local1 = 'http://127.0.0.1:3333' 4 | local2 = 'http://0.0.0.0:3333' 5 | 6 | try: 7 | response1 = requests.get(f'{local1}/get-base64?content=https://raw.githubusercontent.com/MOnday9907/v2ray/main/v2ray.txt').text 8 | except: 9 | pass 10 | try: 11 | response2 = requests.get(f'{local2}/get-base64?content=https://raw.githubusercontent.com/MOnday9907/v2ray/main/v2ray.txt').text 12 | except: 13 | pass 14 | 15 | print(response1) 16 | print('-----------------------------') 17 | print(response2) 18 | -------------------------------------------------------------------------------- /get_link.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from telethon import TelegramClient 4 | 5 | if __name__ == '__main__': 6 | phone = sys.argv[1] 7 | password = sys.argv[2] 8 | api_id = sys.argv[3] 9 | api_hash = sys.argv[4] 10 | useProxy = sys.argv[5] if len(sys.argv) > 5 else None 11 | 12 | proxy = None 13 | if useProxy is not None and useProxy != "false": 14 | print("useProxy is " + useProxy) 15 | host = "127.0.0.1" 16 | port = 1080 17 | proxy = ("socks5", host, port) 18 | 19 | print(proxy) 20 | client = TelegramClient(phone, api_id, api_hash, proxy=proxy).start(phone=phone, password=password) 21 | 22 | channel_username = 'kxswa' 23 | 24 | 25 | async def dow(): 26 | dialog = await client.get_entity(channel_username) 27 | async for msg in client.iter_messages(dialog, limit=1): 28 | with open("订阅链接.txt", "w", encoding="utf8") as f: 29 | f.write(msg.message) 30 | 31 | 32 | client.loop.run_until_complete(dow()) 33 | -------------------------------------------------------------------------------- /pub/bhqz.yaml: -------------------------------------------------------------------------------- 1 | port: 7890 2 | socks-port: 7891 3 | allow-lan: true 4 | mode: Rule 5 | log-level: info 6 | external-controller: 0.0.0.0:9090 7 | proxies: [] 8 | proxy-groups: 9 | - name: 🔰 节点选择 10 | type: select 11 | proxies: 12 | - ♻️ 自动选择 13 | - 🎯 全球直连 14 | - name: ♻️ 自动选择 15 | type: url-test 16 | url: http://www.gstatic.com/generate_204 17 | interval: 300 18 | proxies: [] 19 | - name: 🌍 国外媒体 20 | type: select 21 | proxies: 22 | - 🔰 节点选择 23 | - ♻️ 自动选择 24 | - 🎯 全球直连 25 | - name: 🌏 国内媒体 26 | type: select 27 | proxies: 28 | - 🎯 全球直连 29 | - 🔰 节点选择 30 | - name: 📲 电报信息 31 | type: select 32 | proxies: 33 | - 🔰 节点选择 34 | - 🎯 全球直连 35 | - name: 🍎 苹果服务 36 | type: select 37 | proxies: 38 | - 🔰 节点选择 39 | - 🎯 全球直连 40 | - ♻️ 自动选择 41 | - name: 🎯 全球直连 42 | type: select 43 | proxies: 44 | - DIRECT 45 | - name: 🛑 全球拦截 46 | type: select 47 | proxies: 48 | - REJECT 49 | - DIRECT 50 | - name: 🐟 漏网之鱼 51 | type: select 52 | proxies: 53 | - 🔰 节点选择 54 | - 🎯 全球直连 55 | - ♻️ 自动选择 56 | rules: [] 57 | -------------------------------------------------------------------------------- /pub/ssr.yaml: -------------------------------------------------------------------------------- 1 | port: 7890 2 | socks-port: 7891 3 | allow-lan: true 4 | mode: Rule 5 | log-level: info 6 | external-controller: 0.0.0.0:9090 7 | proxies: [] 8 | proxy-groups: 9 | - name: 🔰 节点选择 10 | type: select 11 | proxies: 12 | - ♻️ 自动选择 13 | - 🎯 全球直连 14 | - name: ♻️ 自动选择 15 | type: url-test 16 | url: http://www.gstatic.com/generate_204 17 | interval: 300 18 | proxies: [] 19 | - name: 🌍 国外媒体 20 | type: select 21 | proxies: 22 | - 🔰 节点选择 23 | - ♻️ 自动选择 24 | - 🎯 全球直连 25 | - name: 🌏 国内媒体 26 | type: select 27 | proxies: 28 | - 🎯 全球直连 29 | - 🔰 节点选择 30 | - name: 📲 电报信息 31 | type: select 32 | proxies: 33 | - 🔰 节点选择 34 | - 🎯 全球直连 35 | - name: 🍎 苹果服务 36 | type: select 37 | proxies: 38 | - 🔰 节点选择 39 | - 🎯 全球直连 40 | - ♻️ 自动选择 41 | - name: 🎯 全球直连 42 | type: select 43 | proxies: 44 | - DIRECT 45 | - name: 🛑 全球拦截 46 | type: select 47 | proxies: 48 | - REJECT 49 | - DIRECT 50 | - name: 🐟 漏网之鱼 51 | type: select 52 | proxies: 53 | - 🔰 节点选择 54 | - 🎯 全球直连 55 | - ♻️ 自动选择 56 | rules: [] 57 | -------------------------------------------------------------------------------- /pub/freenode.yaml: -------------------------------------------------------------------------------- 1 | port: 7890 2 | socks-port: 7891 3 | allow-lan: true 4 | mode: Rule 5 | log-level: info 6 | external-controller: 0.0.0.0:9090 7 | proxies: [] 8 | proxy-groups: 9 | - name: 🔰 节点选择 10 | type: select 11 | proxies: 12 | - ♻️ 自动选择 13 | - 🎯 全球直连 14 | - name: ♻️ 自动选择 15 | type: url-test 16 | url: http://www.gstatic.com/generate_204 17 | interval: 300 18 | proxies: [] 19 | - name: 🌍 国外媒体 20 | type: select 21 | proxies: 22 | - 🔰 节点选择 23 | - ♻️ 自动选择 24 | - 🎯 全球直连 25 | - name: 🌏 国内媒体 26 | type: select 27 | proxies: 28 | - 🎯 全球直连 29 | - 🔰 节点选择 30 | - name: 📲 电报信息 31 | type: select 32 | proxies: 33 | - 🔰 节点选择 34 | - 🎯 全球直连 35 | - name: 🍎 苹果服务 36 | type: select 37 | proxies: 38 | - 🔰 节点选择 39 | - 🎯 全球直连 40 | - ♻️ 自动选择 41 | - name: 🎯 全球直连 42 | type: select 43 | proxies: 44 | - DIRECT 45 | - name: 🛑 全球拦截 46 | type: select 47 | proxies: 48 | - REJECT 49 | - DIRECT 50 | - name: 🐟 漏网之鱼 51 | type: select 52 | proxies: 53 | - 🔰 节点选择 54 | - 🎯 全球直连 55 | - ♻️ 自动选择 56 | rules: [] 57 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: sub_convert 2 | 3 | # 触发条件 4 | on: 5 | workflow_dispatch: 6 | 7 | schedule: 8 | # - cron: '*/5 * * * *' 9 | # 表达式生成 https://crontab.guru/ 10 | - cron: '0 */8 * * *' 11 | 12 | jobs: 13 | deploy: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Checkout 17 | uses: actions/checkout@v2 18 | - name: Install Python 19 | uses: actions/setup-python@v2 20 | with: 21 | python-version: '3.x' 22 | - name: Load Cache 23 | uses: actions/cache@v2 24 | with: 25 | path: ~/.cache/pip 26 | key: ${{ runner.os }}-pip-${{ hashFiles('**/run_in_Actions/requirements.txt') }} 27 | restore-keys: | 28 | ${{ runner.os }}-pip- 29 | - name: Set Timezone 30 | run: sudo timedatectl set-timezone 'Asia/Tehran' 31 | - name: Install Requirements 32 | run: | 33 | pip install -r ./utils/temp-requirements.txt 34 | - name: Running Tasks 35 | run: | 36 | wget -O subconverter.tar.gz https://github.com/tindy2013/subconverter/releases/download/v0.7.2/subconverter_linux64.tar.gz 37 | tar -zxvf subconverter.tar.gz -C ./ 38 | chmod +x ./subconverter/subconverter && nohup ./subconverter/subconverter >./subconverter.log 2>&1 & 39 | python ./utils/test.py 40 | 41 | -------------------------------------------------------------------------------- /utils/mattkaydiary.py: -------------------------------------------------------------------------------- 1 | import re 2 | import json 3 | import requests 4 | from bs4 import BeautifulSoup 5 | from pyquery import PyQuery 6 | 7 | from utils.proxyUtils import get_proxy 8 | 9 | 10 | def get_content(): 11 | url = "https://www.mattkaydiary.com/" 12 | proxies = get_proxy() 13 | 14 | data = requests.get(url, proxies=proxies) 15 | text = data.text 16 | soup = BeautifulSoup(text, "lxml") 17 | div_list = soup.findAll( 18 | name="a", 19 | attrs={"href": re.compile(r"https?:\/\/www\.mattkaydiary\.com\S+?\.html")}, 20 | ) 21 | a_list = [] 22 | p = re.compile(r"\d{4}年\d{2}月\d{2}日更新") 23 | for val in div_list[:10]: 24 | if p.search(val.text): 25 | a_list.append(val.get("href")) 26 | new_v2ray_url = a_list[0] 27 | new_v2ray_data = requests.get(new_v2ray_url, proxies=proxies) 28 | new_v2ray_data_html = new_v2ray_data.text 29 | doc = PyQuery(new_v2ray_data_html) 30 | urls = re.findall( 31 | "https?://drive.google.com/uc\Sexport=download&id=\S+", doc.text() 32 | ) 33 | for url in urls: 34 | file = requests.get(url, proxies=proxies) 35 | headers = json.dumps(dict(file.headers)) 36 | if "yaml" in headers: 37 | with open("pub/mattkaydiary.yaml", "wb") as f: 38 | f.write(file.content) 39 | -------------------------------------------------------------------------------- /.github/workflows/get_v2.yaml: -------------------------------------------------------------------------------- 1 | name: 获取V2ray订阅 2 | on: 3 | schedule: 4 | - cron: '0 */2 * * *' 5 | workflow_dispatch: 6 | 7 | jobs: 8 | get_v2ray: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v2 13 | - name: 'Set up Python' 14 | uses: actions/setup-python@v1 15 | with: 16 | python-version: 3.11 17 | - name: 'Install requests' 18 | run: | 19 | pip install -r requirements.txt 20 | - name: 设置githup信息 21 | env: 22 | email: ${{ secrets.EMAIL }} 23 | username: ${{ secrets.USERNAME }} 24 | run: | 25 | git config --global user.name "$username" 26 | git config --global user.email "$email" 27 | 28 | - name: Run python script 29 | run: | 30 | python3 get_clash.py 31 | - name: commit 32 | run: | 33 | git config --local user.email "actions@github.com" 34 | git config --local user.name "GitHub Actions" 35 | git pull origin main 36 | git add ./pub/* 37 | git commit -m "$(date '+%Y-%m-%d %H:%M:%S')筛选节点" 38 | - name: 推送更改 39 | uses: ad-m/github-push-action@master 40 | with: 41 | # github_token: ${{ secrets.TOKEN }} 42 | branch: main 43 | -------------------------------------------------------------------------------- /.github/workflows/grabproxies.yml: -------------------------------------------------------------------------------- 1 | name: grabproxies 2 | 3 | # 触发条件 4 | on: 5 | workflow_dispatch: 6 | 7 | schedule: 8 | - cron: '30 */4 * * *' 9 | 10 | jobs: 11 | deploy: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: 迁出代码 15 | uses: actions/checkout@v2 16 | - name: 安装Python 17 | uses: actions/setup-python@v2 18 | with: 19 | python-version: '3.x' 20 | - name: 加载缓存 21 | uses: actions/cache@v2 22 | with: 23 | path: ~/.cache/pip 24 | key: ${{ runner.os }}-pip-${{ hashFiles('**/run_in_Actions/requirements.txt') }} 25 | restore-keys: | 26 | ${{ runner.os }}-pip- 27 | - name: 设置时区 28 | run: sudo timedatectl set-timezone 'Asia/Shanghai' 29 | - name: 安装依赖 30 | run: | 31 | pip install -r ./requirements.txt 32 | - name: grabproxiesprogress 33 | run: | 34 | python ./get_clash.py 35 | - name: commit 36 | run: | 37 | git config --local user.email "actions@github.com" 38 | git config --local user.name "GitHub Actions" 39 | git pull origin master 40 | git add ./pub/* 41 | git commit -m "$(date '+%Y-%m-%d %H:%M:%S')筛选节点" 42 | - name: 推送更改 43 | uses: ad-m/github-push-action@master 44 | with: 45 | # github_token: ${{ secrets.TOKEN }} 46 | branch: main 47 | 48 | -------------------------------------------------------------------------------- /localserver/index.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const needle = require("needle"); 3 | const { Base64 } = require("js-base64"); 4 | // const constant = require("./constant"); 5 | const cors = require("cors"); 6 | 7 | const app = express(); 8 | app.use( 9 | cors({ 10 | origin: "*", 11 | credentials: true, 12 | }) 13 | ); 14 | 15 | // app.get("/get-lite-config", async (req, res) => { 16 | // needle.get( 17 | // constant.lite_config, 18 | // { 19 | // headers: { 20 | // Authorization: constant.token, 21 | // }, 22 | // }, 23 | // (err, result, body) => { 24 | // res.status(200).send(result.body); 25 | // } 26 | // ); 27 | // }); 28 | 29 | app.get("/get-base64", async (req, res) => { 30 | try { 31 | const { content } = req.query; 32 | needle.get( 33 | content, 34 | { 35 | timeout: 60000, 36 | }, 37 | (err, result, body) => { 38 | if (err) { 39 | res.status(400).send(err); 40 | return; 41 | } 42 | res.status(200).send(Base64.toBase64(body)); 43 | } 44 | ); 45 | } catch (error) { 46 | res.status(400).send(error); 47 | } 48 | }); 49 | 50 | let port = process.env.PORT || 3333; 51 | app.listen(port, () => { 52 | console.log(`successfuly running on port ${port}`); 53 | }); 54 | -------------------------------------------------------------------------------- /pub/wxshi.yaml: -------------------------------------------------------------------------------- 1 | proxies: 2 | - {"name":"🇮🇩 ID_102 TG@peekfun","server":"id2-trojan.bonds.id","port":443,"type":"trojan","country":"🇮🇩 ID","password":"8d4ab0f0-79be-11eb-be0b-1239d0255272","skip-cert-verify":true,"udp":true} 3 | - {"name":"🇮🇹 IT_103 TG@peekfun","server":"ca-trojan.bonds.id","port":443,"type":"trojan","country":"🇮🇹 IT","password":"YWVzLTI1Ni1nY206WWd1c0gyTVdBOFBXYzNwac5a3ef0-b4ab-11eb-b65e-1239d0255272","skip-cert-verify":true,"udp":true} 4 | - {"name":"🇮🇹 IT_104 TG@peekfun","server":"hk-gz-hk-hkt-tr-b.cdn.savoy.click","port":889,"type":"trojan","country":"🇮🇹 IT","password":"kFyvvCcvMXQKFcJZWuxcdTZOFummlVbf","skip-cert-verify":true,"udp":true} 5 | - {"name":"🇰🇷 KR_131 TG@peekfun","server":"jgw3.gaox.ml","port":443,"type":"trojan","country":"🇰🇷 KR","password":"a1718180-d616-4b71-9bb6-3e96ba20f921","skip-cert-verify":true,"udp":true} 6 | - {"name":"🇳🇴 NO_133 TG@peekfun","server":"138.124.183.226","port":443,"type":"trojan","country":"🇳🇴 NO","password":"xxoo","skip-cert-verify":true,"udp":true} 7 | - {"name":"🇷🇴 RO_134 TG@peekfun","server":"185.126.116.235","port":443,"type":"trojan","country":"🇷🇴 RO","password":"a3fa58b581353bb375d2ddad0f327938","skip-cert-verify":true,"udp":true} 8 | - {"name":"🇷🇴 RO_135 TG@peekfun","server":"185.126.116.235","port":443,"type":"trojan","country":"🇷🇴 RO","password":"36ebef7d1b1d6205fd0c55f28800e674","skip-cert-verify":true,"udp":true} 9 | - {"name":"🇷🇴 RO_136 TG@peekfun","server":"185.126.116.235","port":443,"type":"trojan","country":"🇷🇴 RO","password":"28d98f761aca9d636f44db62544628eb","skip-cert-verify":true,"udp":true} 10 | - {"name":"🏁 ZZ_181 TG@peekfun","server":"103.173.155.72","port":28443,"type":"trojan","country":"🏁 ZZ","password":"6f6ae34d-fe7f-4ca1-a912-ecc01386bdc4","skip-cert-verify":true,"udp":true} 11 | -------------------------------------------------------------------------------- /utils/cfmem.py: -------------------------------------------------------------------------------- 1 | import re 2 | import requests 3 | from bs4 import BeautifulSoup 4 | from pyquery import PyQuery 5 | from ruamel import yaml 6 | 7 | from utils.formatUtils import reset_yaml_stream 8 | from utils.proxyUtils import get_proxy 9 | 10 | 11 | def get_content(): 12 | url = "https://www.cfmem.com/search/label/free" 13 | proxies = get_proxy() 14 | 15 | data = requests.get(url, proxies=proxies) 16 | text = data.text 17 | soup = BeautifulSoup(text, "lxml") 18 | div_list = soup.findAll( 19 | name="a", 20 | attrs={"href": re.compile(r"https?://www\.cfmem\.com/\d{4}/\d{2}/\S+v2rayclash-vpn.html")}, 21 | ) 22 | 23 | try: 24 | a_list = [] 25 | p = re.compile(r"\d{4}年\d+月\d{2}日\S*更新") 26 | for val in div_list[:1]: 27 | print(val.text) 28 | if p.search(val.text): 29 | a_list.append(val.get("href")) 30 | 31 | new_v2ray_url = a_list[0] 32 | new_v2ray_data = requests.get(new_v2ray_url, proxies=proxies) 33 | new_v2ray_data_html = new_v2ray_data.text 34 | doc = PyQuery(new_v2ray_data_html) 35 | print(new_v2ray_url) 36 | urls = re.findall( 37 | "clash订阅链接:https://tt.vg/\S+", doc.text() 38 | ) 39 | for url in urls: 40 | print(url) 41 | file = requests.get(url.replace('clash订阅链接:', ''), proxies=proxies, stream=True) 42 | yml = yaml.YAML() 43 | yml.indent(mapping=2, sequence=4, offset=2) 44 | with open("pub/cfmem.yaml", "w+", encoding="utf8") as outfile: 45 | yml.dump(reset_yaml_stream(file.content), outfile) 46 | except Exception as e: 47 | print(e) 48 | pass 49 | 50 | 51 | if __name__ == '__main__': 52 | get_content() 53 | -------------------------------------------------------------------------------- /.github/workflows/test2.yml: -------------------------------------------------------------------------------- 1 | name: localserver 2 | 3 | # 触发条件 4 | on: 5 | workflow_dispatch: 6 | 7 | schedule: 8 | # - cron: '*/5 * * * *' 9 | # 表达式生成 https://crontab.guru/ 10 | - cron: '0 */8 * * *' 11 | 12 | jobs: 13 | deploy: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Checkout 17 | uses: actions/checkout@v2 18 | - name: Setup Node.js environment 19 | uses: actions/setup-node@v3.5.1 20 | with: 21 | node-version: '18.x' 22 | #- name: npm/yarn/pnpm install 23 | # uses: Jaid/action-npm-install@v1.2.4 24 | - name: NPM or Yarn install with caching 25 | uses: bahmutov/npm-install@v1.6.0 26 | with: 27 | working-directory: ./localserver 28 | - name: Install Python 29 | uses: actions/setup-python@v4.3.0 30 | with: 31 | python-version: '3.x' 32 | - name: Load Cache 33 | uses: actions/cache@v2 34 | with: 35 | path: ~/.cache/pip 36 | key: ${{ runner.os }}-pip-${{ hashFiles('**/run_in_Actions/requirements.txt') }} 37 | restore-keys: | 38 | ${{ runner.os }}-pip- 39 | - name: Set Timezone 40 | run: sudo timedatectl set-timezone 'Asia/Tehran' 41 | - name: Install Requirements 42 | run: | 43 | pip install -r ./utils/temp-requirements.txt 44 | - name: Running Tasks 45 | run: | 46 | # wget -O subconverter.tar.gz https://github.com/tindy2013/subconverter/releases/download/v0.7.2/subconverter_linux64.tar.gz 47 | # tar -zxvf subconverter.tar.gz -C ./ 48 | # chmod +x ./subconverter/subconverter && nohup ./subconverter/subconverter >./subconverter.log 2>&1 & 49 | # python ./utils/test.py 50 | node ./localserver/index.js & 51 | sleep 2 52 | python ./utils/test2.py 53 | cd ~/.cache 54 | ls 55 | -------------------------------------------------------------------------------- /.github/repo-sync.yml: -------------------------------------------------------------------------------- 1 | name: 同步订阅 2 | on: 3 | schedule: 4 | - cron: "*/30 * * * *" 5 | workflow_dispatch: 6 | watch: 7 | types: started 8 | repository_dispatch: 9 | types: repo-sync 10 | jobs: 11 | repo-sync: 12 | name: 创建脚本 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: 设置githup信息 16 | env: 17 | email: ${{ secrets.EMAIL }} 18 | username: ${{ secrets.USERNAME }} 19 | run: | 20 | git config --global user.name "$username" 21 | git config --global user.email "$email" 22 | - name: 设置SSH私钥信息 23 | env: 24 | token_Private_Keys: ${{ secrets.token_Private_Keys }} 25 | run: | 26 | mkdir -p ~/.ssh/ 27 | echo "$token_Private_Keys" > ~/.ssh/id_rsa 28 | chmod 600 ~/.ssh/id_rsa 29 | eval "$(ssh-agent -s)" 30 | ssh-add ~/.ssh/id_rsa 31 | - name: 获取订阅 32 | run: | 33 | shopt -s extglob 34 | git clone -b master https://github.com/pojiezhiyuanjun/freev2.git freev2 35 | git clone -b main git@github.com:ronghuaxueleng/get_v2.git free 36 | cp free/codecheck.sh freev2/ 37 | cd freev2 38 | bash -x codecheck.sh 39 | cp -rf clash.yml ../free/ 40 | cp -rf v2.txt ../free/ 41 | cd ../free 42 | git add . 43 | git commit --allow-empty -m "up" 44 | git push 45 | git checkout Free-Node-Merge 46 | rm -rf !(.git | .githup) 47 | cd .. 48 | git clone https://github.com/vpei/Free-Node-Merge.git Free-Node-Merge 49 | cd Free-Node-Merge 50 | rm -rf .git 51 | rm -rf .gitignore 52 | cd .. 53 | cp -rf ./Free-Node-Merge/. ./free 54 | cd free 55 | git add . 56 | git commit --allow-empty -m "up" 57 | git push 58 | - name: 同步到gitee 59 | uses: Yikun/hub-mirror-action@master 60 | with: 61 | src: github/ronghuaxueleng 62 | dst: gitee/getready 63 | static_list: "get_v2" 64 | dst_key: ${{ secrets.GITEE_PRIVATE_KEY }} 65 | dst_token: ${{ secrets.GITEE_TOKEN }} 66 | - name: 删除过多的workflows 67 | uses: Mattraks/delete-workflow-runs@main 68 | with: 69 | token: ${{ secrets.AUTH_PAT }} 70 | repository: ${{ github.repository }} 71 | retain_days: 1 72 | -------------------------------------------------------------------------------- /pub/sansor: -------------------------------------------------------------------------------- 1 | dmxlc3M6Ly83ZDNiOTQ1ZC0wZjIzLTQ3MTktOWZhZS01MDAzMzI1MWUyZmRAS09TZU1BREFSLVBVQkxJU0hFUi5kZG5zLm5ldDo0NDM/c25pPXE3N2dwdWN1b250eHQ0aGtiZGc4Lmtob2RhdmFraWxpLmJ1enomaG9zdD1kbC5raG9kYXZha2lsaS5idXp6JnR5cGU9d3Mmc2VjdXJpdHk9dGxzJnBhdGg9JTJGa29zX21hZGFyX3B1Ymxpc2hlciZlbmNyeXB0aW9uPW5vbmUjc2VydmVyICAxDQp2bGVzczovLzdkM2I5NDVkLTBmMjMtNDcxOS05ZmFlLTUwMDMzMjUxZTJmZEAwOTMwMzU4MjMwMy5kZG5zLm5ldDo0NDM/c25pPTRuNWM3am8wbGNhM2czdXBpdmhqLmtob2RhdmFraWxpLmJ1enomaG9zdD1kbC5raG9kYXZha2lsaS5idXp6JnR5cGU9d3Mmc2VjdXJpdHk9dGxzJnBhdGg9JTJGa29zX21hZGFyX3B1Ymxpc2hlciZlbmNyeXB0aW9uPW5vbmUjc2VydmVyICAyDQp2bGVzczovLzdkM2I5NDVkLTBmMjMtNDcxOS05ZmFlLTUwMDMzMjUxZTJmZEBjZi5uYWl4aWkudG9wOjQ0Mz9zbmk9djZnaW5jdTB3cThkMHhueGQxdmQua2hvZGF2YWtpbGkudG9wJmhvc3Q9ZGwua2hvZGF2YWtpbGkudG9wJnR5cGU9d3Mmc2VjdXJpdHk9dGxzJnBhdGg9JTJGa29zX21hZGFyX3B1Ymxpc2hlciZlbmNyeXB0aW9uPW5vbmUjc2VydmVyICAzDQp2bGVzczovLzdkM2I5NDVkLTBmMjMtNDcxOS05ZmFlLTUwMDMzMjUxZTJmZEBpcjguc2VlYi5zaG9wOjQ0Mz9zbmk9OXBnY242OXh5N2k1Mzl0MXd0bGkua2hvZGF2YWtpbGkuYnV6eiZob3N0PWRsLmtob2RhdmFraWxpLmJ1enomdHlwZT13cyZzZWN1cml0eT10bHMmcGF0aD0lMkZrb3NfbWFkYXJfcHVibGlzaGVyJmVuY3J5cHRpb249bm9uZSNzZXJ2ZXIgIDQNCnZsZXNzOi8vN2QzYjk0NWQtMGYyMy00NzE5LTlmYWUtNTAwMzMyNTFlMmZkQHVzYW1kLnB0dXUuZ3E6NDQzP3NuaT1xaTc5Y3Job2x0YzZxZ2Q2eTluNi5raG9kYXZha2lsaS50b3AmaG9zdD1kbC5raG9kYXZha2lsaS50b3AmdHlwZT13cyZzZWN1cml0eT10bHMmcGF0aD0lMkZrb3NfbWFkYXJfcHVibGlzaGVyJmVuY3J5cHRpb249bm9uZSNzZXJ2ZXIgIDUNCnZsZXNzOi8vN2QzYjk0NWQtMGYyMy00NzE5LTlmYWUtNTAwMzMyNTFlMmZkQGkuYmFkYm95cy5ncToyMDUzP3NuaT1kbDIua2hvZGF2YWtpbGkubG9sJnR5cGU9Z3JwYyZtb2RlPWd1biZhbHBuPWgyJnNlcnZpY2VOYW1lPWtvc19tYWRhcl9wdWJsaXNoZXImc2VjdXJpdHk9dGxzJmVuY3J5cHRpb249bm9uZSNzZXJ2ZXIgbXRuIDYNCnZsZXNzOi8vN2QzYjk0NWQtMGYyMy00NzE5LTlmYWUtNTAwMzMyNTFlMmZkQG10bi5hbmFoaWQuYmVhdXR5OjIwNTM/c25pPWRsMi5raG9kYXZha2lsaS5sb2wmdHlwZT1ncnBjJm1vZGU9Z3VuJmFscG49aDImc2VydmljZU5hbWU9a29zX21hZGFyX3B1Ymxpc2hlciZzZWN1cml0eT10bHMmZW5jcnlwdGlvbj1ub25lI3NlcnZlciBtdG4gNw0Kdmxlc3M6Ly83ZDNiOTQ1ZC0wZjIzLTQ3MTktOWZhZS01MDAzMzI1MWUyZmRAbmlhYS5kZG5zLm5ldDoyMDUzP3NuaT1kbDIua2hvZGF2YWtpbGkubG9sJnR5cGU9Z3JwYyZtb2RlPWd1biZhbHBuPWgyJnNlcnZpY2VOYW1lPWtvc19tYWRhcl9wdWJsaXNoZXImc2VjdXJpdHk9dGxzJmVuY3J5cHRpb249bm9uZSNzZXJ2ZXIgbXRuIDgNCnZsZXNzOi8vN2QzYjk0NWQtMGYyMy00NzE5LTlmYWUtNTAwMzMyNTFlMmZkQGlyOC5zZWViLnNob3A6MjA1Mz9zbmk9ZGwyLmtob2RhdmFraWxpLmxvbCZ0eXBlPWdycGMmbW9kZT1ndW4mYWxwbj1oMiZzZXJ2aWNlTmFtZT1rb3NfbWFkYXJfcHVibGlzaGVyJnNlY3VyaXR5PXRscyZlbmNyeXB0aW9uPW5vbmUjc2VydmVyIG10biA5DQp2bGVzczovLzdkM2I5NDVkLTBmMjMtNDcxOS05ZmFlLTUwMDMzMjUxZTJmZEB3d3cuc3BlZWR0ZXN0Lm5ldDo0NDM/c25pPXF3aHRubnJnb3A3Y2pwMDVwMnEwLmtob2RhdmFraWxpLmJ1enomaG9zdD1kbC5raG9kYXZha2lsaS5idXp6JnR5cGU9d3Mmc2VjdXJpdHk9dGxzJnBhdGg9JTJGa29zX21hZGFyX3B1Ymxpc2hlciZlbmNyeXB0aW9uPW5vbmUjc2VydmVyICAxMA0Kdmxlc3M6Ly83ZDNiOTQ1ZC0wZjIzLTQ3MTktOWZhZS01MDAzMzI1MWUyZmRAbWNpLnRhaGVybW9sbGFlaS5wdzo0NDM/c25pPTV0dXQxMTdxYzJnNm5yYzE5ajU2Lmtob2RhdmFraWxpLmJ1enomaG9zdD1kbC5raG9kYXZha2lsaS5idXp6JnR5cGU9d3Mmc2VjdXJpdHk9dGxzJnBhdGg9JTJGa29zX21hZGFyX3B1Ymxpc2hlciZlbmNyeXB0aW9uPW5vbmUjc2VydmVyICAxMQ0Kdmxlc3M6Ly83ZDNiOTQ1ZC0wZjIzLTQ3MTktOWZhZS01MDAzMzI1MWUyZmRAY2xvdWRmbGFyZS5xdWVzdDo0NDM/c25pPWNuZGI5d2ppbjJpN3ZhYjV2dmNnLmtob2RhdmFraWxpLnRvcCZob3N0PWRsLmtob2RhdmFraWxpLnRvcCZ0eXBlPXdzJnNlY3VyaXR5PXRscyZwYXRoPSUyRmtvc19tYWRhcl9wdWJsaXNoZXImZW5jcnlwdGlvbj1ub25lI3NlcnZlciAgMTINCnZsZXNzOi8vN2QzYjk0NWQtMGYyMy00NzE5LTlmYWUtNTAwMzMyNTFlMmZkQGNtLmRiLWxpbmsuaW46NDQzP3NuaT0weGp3anU5d2dueHhiN3g2Y2s1OS5raG9kYXZha2lsaS5idXp6Jmhvc3Q9ZGwua2hvZGF2YWtpbGkuYnV6eiZ0eXBlPXdzJnNlY3VyaXR5PXRscyZwYXRoPSUyRmtvc19tYWRhcl9wdWJsaXNoZXImZW5jcnlwdGlvbj1ub25lI3NlcnZlciAgMTM= -------------------------------------------------------------------------------- /utils/formatUtils.py: -------------------------------------------------------------------------------- 1 | import copy 2 | import hashlib 3 | import json 4 | import time 5 | import uuid 6 | 7 | from ruamel import yaml 8 | 9 | 10 | def reset_yaml_file(yaml_path): 11 | with open(yaml_path, "r", encoding="utf8") as yaml_file: 12 | yaml_obj = yaml.safe_load(yaml_file) 13 | return reset_yaml_content(yaml_obj) 14 | 15 | 16 | def reset_yaml_stream(yaml_stream): 17 | try: 18 | yaml_obj = yaml.safe_load(bytes(yaml_stream)) 19 | return reset_yaml_content(yaml_obj) 20 | except Exception as e: 21 | print(e) 22 | 23 | 24 | def reset_yaml_content(yaml_obj): 25 | filtered_rules = list() 26 | proxies_md5_dict = dict() 27 | proxies_md5_name_dict = dict() 28 | proxy_names_set = set() 29 | proxy_group_names = set() 30 | proxy_groups_test_set = set() 31 | proxy_groups = dict() 32 | 33 | with open("template.json", "r", encoding="utf8") as template_file: 34 | template = json.load(template_file) 35 | 36 | rules = yaml_obj.get("rules") 37 | proxies = yaml_obj.get("proxies") 38 | filtered_rules.extend(rules) 39 | merged_proxy = dict() 40 | for proxy in proxies: 41 | proxy["port"] = int(proxy.get("port")) 42 | proxy_copy = copy.deepcopy(proxy) 43 | proxy_copy.pop("name") 44 | data_md5 = hashlib.md5( 45 | json.dumps(proxy_copy, sort_keys=True).encode( 46 | "utf-8" 47 | ) 48 | ).hexdigest() 49 | if data_md5 not in proxies_md5_dict: 50 | if proxy.get("name") in proxy_names_set: 51 | proxy["name"] = ( 52 | proxy.get("name") 53 | + "_" 54 | + str(round(time.time() * 1000)) 55 | + str(uuid.uuid4()) 56 | ) 57 | proxy_names_set.add(proxy.get("name")) 58 | proxies_md5_dict[data_md5] = proxy 59 | proxies_md5_name_dict[ 60 | data_md5 61 | ] = proxy.get("name") 62 | merged_proxy[ 63 | proxy.get("name") 64 | ] = proxies_md5_name_dict.get(data_md5) 65 | template_proxy_groups = yaml_obj.get("proxy-groups") 66 | 67 | for index, group in enumerate(template_proxy_groups): 68 | group_name = group.get("name") 69 | proxy_group_names.add(group_name) 70 | if group.get("type") == "url-test": 71 | proxy_groups_test_set.add(group_name) 72 | group["name"] = "♻️ 自动选择" 73 | template_proxy_groups[index] = group 74 | 75 | for group in template_proxy_groups: 76 | group_name = group.get("name") 77 | proxy_group_names.add(group_name) 78 | saved_group = proxy_groups.get(group_name, dict()) 79 | saved_proxies = saved_group.get("proxies", list()) 80 | proxies = group.get("proxies") 81 | for proxy in proxies: 82 | if ( 83 | proxy not in saved_proxies 84 | and proxy in proxy_names_set 85 | ): 86 | for one in proxy_groups_test_set: 87 | proxy = proxy.replace(one, "♻️ 自动选择") 88 | saved_proxies.append( 89 | merged_proxy.get(proxy, proxy) 90 | ) 91 | group["proxies"] = ( 92 | saved_proxies 93 | if len(saved_proxies) > 0 94 | else ["DIRECT", "REJECT"] 95 | ) 96 | proxy_groups[group_name] = group 97 | 98 | if len(proxy_groups) > 0: 99 | template["proxy-groups"] = list(proxy_groups.values()) 100 | 101 | filtered_rules_set = set() 102 | for item in filtered_rules: 103 | for one_group in proxy_group_names: 104 | if one_group in item: 105 | filtered_rules_set.add(item) 106 | for one in proxy_groups_test_set: 107 | filtered_rules_set.add(item.replace(one, "♻️ 自动选择")) 108 | 109 | template["proxies"] = list(proxies_md5_dict.values()) 110 | template["rules"] = list(filtered_rules_set) 111 | 112 | return template 113 | -------------------------------------------------------------------------------- /pub/Matsuri: -------------------------------------------------------------------------------- 1 | dHJvamFuOi8vZmM0MTdkMTQtZjM5YS00N2I3LTllOTEtZWQ3OTgyNTMxNWIzQHo2LmdvemFyZ2FoLm9uZTo0NDMvP3R5cGU9dGNwJnNlY3VyaXR5PXRscyZzbmk9ejYuZ296YXJnYWgub25lJmFscG49aHR0cCUyRjEuMSMlRjAlOUYlODclQTklRjAlOUYlODclQUElMjBHZXJtYW55JTIwLSUyMEhldHpuZXIlMjAtJTIwMQp0cm9qYW46Ly9iY2Y5NmM5Yi0zMGJmLTRhYjAtYmMyOC02MDc2MjE4ZjJhMTRAejkuZ296YXJnYWgub25lOjQ0My8/dHlwZT10Y3Amc2VjdXJpdHk9dGxzJnNuaT16OS5nb3phcmdhaC5vbmUjJUYwJTlGJTg3JUE5JUYwJTlGJTg3JUFBJTIwR2VybWFueSUyMC0lMjBIZXR6bmVyJTIwLSUyMDIKdmxlc3M6Ly83NTBjODM2OC1kNDQ3LTI0MGMtZGY0MC04YjMxYjgxZjBmZTRAMTcyLjY0LjE0NC45NDo0NDMvP2VuY3J5cHRpb249bm9uZSZ0eXBlPXdzJmhvc3Q9c2FkZGF5Ny5vbmxpbmUmcGF0aD0lMkZobnR5d3Mmc2VjdXJpdHk9dGxzJnNuaT1zYWRkYXk3Lm9ubGluZSMlRjAlOUYlODclQTklRjAlOUYlODclQUElMjBHZXJtYW55JTIwLSUyMDEKdmxlc3M6Ly8xNDM5MzZmNi1hMDI2LWMzMTktMTFlMy03NmY4NTM2MzYxN2VAZ29vZGZhbWlseTguc2l0ZTo0NDMvP2VuY3J5cHRpb249bm9uZSZ0eXBlPXdzJmhvc3Q9Z29vZGZhbWlseTguc2l0ZSZwYXRoPSUyRmRieHh3cyZzZWN1cml0eT10bHMmc25pPWdvb2RmYW1pbHk4LnNpdGUjJUYwJTlGJTg3JUE5JUYwJTlGJTg3JUFBJTIwR2VybWFueSUyMC0lMjAyCnZtZXNzOi8vZXdvZ0lDSjJJam9nTWl3S0lDQWljSE1pT2lBaVZWTkJJUENmaDdyd240ZTRJRWhoY25KcGMySjFjbWNnSWl3S0lDQWlZV1JrSWpvZ0lqSXpMakl6Tnk0ek15NHhNRFlpTEFvZ0lDSndiM0owSWpvZ05EUXpMQW9nSUNKcFpDSTZJQ0l4TnpaaU5UazRaaTAwTkRWaUxUUXhZV010T1dReVlTMDBNekJqTldNMFpHWXlObUVpTEFvZ0lDSmhhV1FpT2lBd0xBb2dJQ0p1WlhRaU9pQWlkM01pTEFvZ0lDSm9iM04wSWpvZ0ltTnNZWE5vTVM1MGNuVnRjREl3TWpNdWJtVjBJaXdLSUNBaWNHRjBhQ0k2SUNJdlpHOXVaM1JoYVhkaGJtY3VZMjl0SWl3S0lDQWlkSGx3WlNJNklDSWlMQW9nSUNKMGJITWlPaUFpZEd4eklpd0tJQ0FpYzI1cElqb2dJbU5zWVhOb01TNTBjblZ0Y0RJd01qTXVibVYwSWl3S0lDQWljMk41SWpvZ0ltRjFkRzhpQ24wPQp2bWVzczovL2V3b2dJQ0oySWpvZ01pd0tJQ0FpY0hNaU9pQWk4SitIcWZDZmg2b2dSMlZ5YldGdWVTQXRJRU5zYjNWa1pteGhjbVVnSWl3S0lDQWlZV1JrSWpvZ0lqRTNNaTQyTnk0eE56Z3VOVFVpTEFvZ0lDSndiM0owSWpvZ05EUXpMQW9nSUNKcFpDSTZJQ0l3TVRRMVltWmxaaTFoWVRVekxUUXhObVl0T1RCa05DMDROak0wTWprMVpHRmlOVGNpTEFvZ0lDSmhhV1FpT2lBd0xBb2dJQ0p1WlhRaU9pQWlkM01pTEFvZ0lDSm9iM04wSWpvZ0luZDNkeTVoYjI5d2JXbHpjeTVqWmlJc0NpQWdJbkJoZEdnaU9pQWlMMnhwZG1VaUxBb2dJQ0owZVhCbElqb2dJaUlzQ2lBZ0luUnNjeUk2SUNKMGJITWlMQW9nSUNKemJta2lPaUFpZDNkM0xtRnZiM0J0YVhOekxtTm1JaXdLSUNBaWMyTjVJam9nSW1GMWRHOGlDbjA9CnZtZXNzOi8vZXdvZ0lDSjJJam9nTWl3S0lDQWljSE1pT2lBaVZWTkJJUENmaDdyd240ZTRJRXh2Y3lCQmJtZGxiR1Z6SUNJc0NpQWdJbUZrWkNJNklDSXpPQzQzTW1sdFp5NTRlWG9pTEFvZ0lDSndiM0owSWpvZ05EUXpMQW9nSUNKcFpDSTZJQ0k0TVdRNU0yWTJNaTB4TldFeUxUUTVPVFF0WVdSaU9TMHdZalZrT1RBMllXRmpOMlVpTEFvZ0lDSmhhV1FpT2lBd0xBb2dJQ0p1WlhRaU9pQWlkM01pTEFvZ0lDSm9iM04wSWpvZ0lpSXNDaUFnSW5CaGRHZ2lPaUFpTHlJc0NpQWdJblI1Y0dVaU9pQWlJaXdLSUNBaWRHeHpJam9nSW5Sc2N5SXNDaUFnSW5OdWFTSTZJQ0lpTEFvZ0lDSnpZM2tpT2lBaVlYVjBieUlLZlE9PQp2bWVzczovL2V3b2dJQ0oySWpvZ01pd0tJQ0FpY0hNaU9pQWk4SitIdGZDZmg3RWdVRzlzWVc1a0lDSXNDaUFnSW1Ga1pDSTZJQ0kzTUM0ek5DNHlOVEl1TVRjMklpd0tJQ0FpY0c5eWRDSTZJRGd3T0RFc0NpQWdJbWxrSWpvZ0lqazROR1ptTWpSbExUSmlZbUl0TkRRMk1TMWhOell4TFdKbU9HTmpZamMzWWpnd1pDSXNDaUFnSW1GcFpDSTZJREFzQ2lBZ0ltNWxkQ0k2SUNKM2N5SXNDaUFnSW1odmMzUWlPaUFpSWl3S0lDQWljR0YwYUNJNklDSXZJaXdLSUNBaWRIbHdaU0k2SUNJaUxBb2dJQ0owYkhNaU9pQWlJaXdLSUNBaWMyNXBJam9nSWlJc0NpQWdJbk5qZVNJNklDSmhkWFJ2SWdwOQpzczovL1lXVnpMVEkxTmkxblkyMDZWa3AzTUdWb2NuSmxid0A5OC4xNDIuMTQxLjE5ODoxNjIxOSNVU0ElMjAlRjAlOUYlODclQkElRjAlOUYlODclQjglMjBDbG91ZGZsYXJlJTIwCnNzOi8vWVdWekxUSTFOaTFuWTIwNk1USXpAMTA0LjE2OC4xMTcuMTU5OjgzODAjVVNBJTIwJUYwJTlGJTg3JUJBJUYwJTlGJTg3JUI4JTIwQ29sbyUyMENyb3NzaW5nCnZtZXNzOi8vZXdvZ0lDSjJJam9nTWl3S0lDQWljSE1pT2lBaVZWTkJJUENmaDdyd240ZTRJRU5oYkdsbWIzSnVhV0VnSWl3S0lDQWlZV1JrSWpvZ0luWjFjekl1TUdKaFpDNWpiMjBpTEFvZ0lDSndiM0owSWpvZ05EUXpMQW9nSUNKcFpDSTZJQ0k1TWpjd09UUmtNeTFrTmpjNExUUTNOak10T0RVNU1TMWxNalF3WkRCaVkyRmxPRGNpTEFvZ0lDSmhhV1FpT2lBd0xBb2dJQ0p1WlhRaU9pQWlkM01pTEFvZ0lDSm9iM04wSWpvZ0lpSXNDaUFnSW5CaGRHZ2lPaUFpTDJOb1lYUWlMQW9nSUNKMGVYQmxJam9nSWlJc0NpQWdJblJzY3lJNklDSjBiSE1pTEFvZ0lDSnpibWtpT2lBaUlpd0tJQ0FpYzJONUlqb2dJbUYxZEc4aUNuMD0KdHJvamFuOi8vZGE3NzdhYWUtZGVmYi00MWQwLWExODMtMmMyN2RhMmI0Njc3QGpnd2RqMy5nYW94Lm1sOjQ0My8/dHlwZT10Y3Amc2VjdXJpdHk9dGxzIyVGMCU5RiU4NyVBRiVGMCU5RiU4NyVCNSUyMEphcGFuJTIwLSUyME9yYWNsZSUyMENsb3VkJTIwLSUyMDEKdm1lc3M6Ly9ld29nSUNKMklqb2dNaXdLSUNBaWNITWlPaUFpOEorSHIvQ2ZoN1VnU21Gd1lXNGdMU0JQY21GamJHVWdRMnh2ZFdRZ0xTQXlJaXdLSUNBaVlXUmtJam9nSW1wd05DNXRZWGxoWVM1alppSXNDaUFnSW5CdmNuUWlPaUEwTkRNc0NpQWdJbWxrSWpvZ0lqRmtNMlEzTTJZekxUSTBNMk10TkdJME9DMWlNR0k1TFdJMk9Ua3pNVFJoTlRrd1l5SXNDaUFnSW1GcFpDSTZJREFzQ2lBZ0ltNWxkQ0k2SUNKM2N5SXNDaUFnSW1odmMzUWlPaUFpSWl3S0lDQWljR0YwYUNJNklDSXZaSE5oWkhaamVIWmplQ0lzQ2lBZ0luUjVjR1VpT2lBaUlpd0tJQ0FpZEd4eklqb2dJblJzY3lJc0NpQWdJbk51YVNJNklDSWlMQW9nSUNKelkza2lPaUFpWVhWMGJ5SUtmUT09 -------------------------------------------------------------------------------- /get_clash.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | import shutil 4 | import requests 5 | import base64 6 | from requests.adapters import HTTPAdapter 7 | import json 8 | import re 9 | from shutil import copyfile 10 | from utils.yamlUtils import YamlUtils 11 | from utils.jiang import get_content as jiang_content 12 | from utils.cfmem import get_content as cfmem_content 13 | from utils.mattkaydiary import get_content as mattkaydiary_content 14 | 15 | 16 | try: 17 | response = requests.get("https://vpn.fail/free-proxy/type/v2ray").text 18 | 19 | ips = re.findall(" 50, parts)) 72 | 73 | base64_content = base64.b64encode( 74 | "\n".join(real_parts).encode('utf-8')).decode('ascii') 75 | with open("pub/Matsuri", 'w') as output: 76 | output.write(base64_content) 77 | except: 78 | pass 79 | 80 | try: 81 | s = requests.Session() 82 | s.mount('http://', HTTPAdapter(max_retries=2)) 83 | s.mount('https://', HTTPAdapter(max_retries=2)) 84 | s.get('https://free.dswang.ga/clash/proxies', timeout=10) 85 | source5 = s.get('https://free.dswang.ga/clash/proxies', timeout=10).text 86 | with open("pub/dswang.yaml", 'w') as output: 87 | output.write(source5) 88 | except: 89 | pass 90 | 91 | try: 92 | source6 = requests.get('https://raw.githubusercontent.com/MrPooyaX/SansorchiFucker/main/data.txt').text 93 | with open("pub/sansor", 'w') as output: 94 | output.write(source6) 95 | except: 96 | pass 97 | 98 | try: 99 | source7 = requests.get('https://raw.githubusercontent.com/MrPooyaX/VpnsFucking/main/Shenzo.txt').text 100 | with open("pub/shenzo", 'w') as output: 101 | output.write(source7) 102 | except: 103 | pass 104 | 105 | 106 | try: 107 | source8 = requests.get('https://raw.githubusercontent.com/IranianCypherpunks/sub/main/config').text 108 | real_lines = list(filter(lambda x: x != '', source8.split('\n'))) 109 | 110 | base64_content = base64.b64encode( 111 | "\n".join(real_lines).encode('utf-8')).decode('ascii') 112 | with open("pub/ircp", 'w') as output: 113 | output.write(base64_content) 114 | except: 115 | pass 116 | 117 | bhqz = os.path.join("bhqz") 118 | yamlUtils = YamlUtils(bhqz) 119 | yamlUtils.clone_repo("https://github.com/bhqz/bhqz.git") 120 | yamlUtils.make_template_dict() 121 | yamlUtils.save_file("pub/bhqz.yaml") 122 | shutil.rmtree(bhqz) 123 | 124 | freenode = os.path.join("freenode") 125 | yamlUtils = YamlUtils(freenode) 126 | yamlUtils.clone_repo("https://github.com/adiwzx/freenode.git", "main") 127 | yamlUtils.make_template_dict("adidesign.c") 128 | yamlUtils.save_file("pub/freenode.yaml") 129 | shutil.rmtree(freenode) 130 | 131 | ssr = os.path.join("ssr") 132 | yamlUtils = YamlUtils(ssr) 133 | yamlUtils.clone_repo("https://github.com/ssrsub/ssr.git", "master") 134 | yamlUtils.make_template_dict("yml") 135 | yamlUtils.save_file("pub/ssr.yaml") 136 | shutil.rmtree(ssr) 137 | 138 | jiang_content() 139 | cfmem_content() 140 | mattkaydiary_content() 141 | 142 | 143 | pub = os.path.join("pub") 144 | yamlUtils = YamlUtils(pub) 145 | yamlUtils.make_template( 146 | ["jiang.yaml", "mattkaydiary.yaml", "freenode.yaml", "bhqz.yaml", "ssr.yaml", "cfmem.yaml"] 147 | ) 148 | yamlUtils.save_file("pub/combine.yaml") 149 | -------------------------------------------------------------------------------- /template.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": 7890, 3 | "socks-port": 7891, 4 | "allow-lan": true, 5 | "mode": "Rule", 6 | "log-level": "info", 7 | "external-controller": "0.0.0.0:9090", 8 | "proxies": [], 9 | "proxy-groups": [{ 10 | "name": "🔰 节点选择", 11 | "type": "select", 12 | "proxies": [ 13 | "♻️ 自动选择", 14 | "🎯 全球直连" 15 | ] 16 | }, 17 | { 18 | "name": "♻️ 自动选择", 19 | "type": "url-test", 20 | "url": "http://www.gstatic.com/generate_204", 21 | "interval": 300, 22 | "proxies": [] 23 | }, 24 | { 25 | "name": "🌍 国外媒体", 26 | "type": "select", 27 | "proxies": [ 28 | "🔰 节点选择", 29 | "♻️ 自动选择", 30 | "🎯 全球直连" 31 | ] 32 | }, 33 | { 34 | "name": "🌏 国内媒体", 35 | "type": "select", 36 | "proxies": [ 37 | "🎯 全球直连", 38 | "🔰 节点选择" 39 | ] 40 | }, 41 | { 42 | "name": "📲 电报信息", 43 | "type": "select", 44 | "proxies": [ 45 | "🔰 节点选择", 46 | "🎯 全球直连" 47 | ] 48 | }, 49 | { 50 | "name": "🍎 苹果服务", 51 | "type": "select", 52 | "proxies": [ 53 | "🔰 节点选择", 54 | "🎯 全球直连", 55 | "♻️ 自动选择" 56 | ] 57 | }, 58 | { 59 | "name": "🎯 全球直连", 60 | "type": "select", 61 | "proxies": [ 62 | "DIRECT" 63 | ] 64 | }, 65 | { 66 | "name": "🛑 全球拦截", 67 | "type": "select", 68 | "proxies": [ 69 | "REJECT", 70 | "DIRECT" 71 | ] 72 | }, 73 | { 74 | "name": "🐟 漏网之鱼", 75 | "type": "select", 76 | "proxies": [ 77 | "🔰 节点选择", 78 | "🎯 全球直连", 79 | "♻️ 自动选择" 80 | ] 81 | } 82 | ], 83 | "rules": [], 84 | "rule-providers": { 85 | "AntiAd": { 86 | "type": "http", 87 | "behavior": "domain", 88 | "url": "https://raw.fastgit.org/privacy-protection-tools/anti-AD/master/anti-ad-clash.yaml", 89 | "path": "./ruleset/AntiAd.yaml", 90 | "interval": 86400 91 | }, 92 | "reject": { 93 | "type": "http", 94 | "behavior": "domain", 95 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt", 96 | "path": "./ruleset/reject.yaml", 97 | "interval": 86400 98 | }, 99 | "icloud": { 100 | "type": "http", 101 | "behavior": "domain", 102 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt", 103 | "path": "./ruleset/icloud.yaml", 104 | "interval": 86400 105 | }, 106 | "apple": { 107 | "type": "http", 108 | "behavior": "domain", 109 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt", 110 | "path": "./ruleset/apple.yaml", 111 | "interval": 86400 112 | }, 113 | "google": { 114 | "type": "http", 115 | "behavior": "domain", 116 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt", 117 | "path": "./ruleset/google.yaml", 118 | "interval": 86400 119 | }, 120 | "proxy": { 121 | "type": "http", 122 | "behavior": "domain", 123 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt", 124 | "path": "./ruleset/proxy.yaml", 125 | "interval": 86400 126 | }, 127 | "direct": { 128 | "type": "http", 129 | "behavior": "domain", 130 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt", 131 | "path": "./ruleset/direct.yaml", 132 | "interval": 86400 133 | }, 134 | "private": { 135 | "type": "http", 136 | "behavior": "domain", 137 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt", 138 | "path": "./ruleset/private.yaml", 139 | "interval": 86400 140 | }, 141 | "gfw": { 142 | "type": "http", 143 | "behavior": "domain", 144 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt", 145 | "path": "./ruleset/gfw.yaml", 146 | "interval": 86400 147 | }, 148 | "greatfire": { 149 | "type": "http", 150 | "behavior": "domain", 151 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/greatfire.txt", 152 | "path": "./ruleset/greatfire.yaml", 153 | "interval": 86400 154 | }, 155 | "tld-not-cn": { 156 | "type": "http", 157 | "behavior": "domain", 158 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt", 159 | "path": "./ruleset/tld-not-cn.yaml", 160 | "interval": 86400 161 | }, 162 | "telegramcidr": { 163 | "type": "http", 164 | "behavior": "ipcidr", 165 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt", 166 | "path": "./ruleset/telegramcidr.yaml", 167 | "interval": 86400 168 | }, 169 | "cncidr": { 170 | "type": "http", 171 | "behavior": "ipcidr", 172 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt", 173 | "path": "./ruleset/cncidr.yaml", 174 | "interval": 86400 175 | }, 176 | "lancidr": { 177 | "type": "http", 178 | "behavior": "ipcidr", 179 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt", 180 | "path": "./ruleset/lancidr.yaml", 181 | "interval": 86400 182 | }, 183 | "applications": { 184 | "type": "http", 185 | "behavior": "classical", 186 | "url": "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/applications.txt", 187 | "path": "./ruleset/applications.yaml", 188 | "interval": 86400 189 | } 190 | } 191 | } -------------------------------------------------------------------------------- /pub/shenzo: -------------------------------------------------------------------------------- 1 | dm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVJDMUNVazlYVGkweE1ESTFJaXdpWVdSa0lqb2lNVFUzTGpJME5TNDBMakUzTUNJc0luQnZjblFpT2lJNE9EZ3hJaXdpYVdRaU9pSmtZalZoWm1GbE5DMWhZekl6TFRReFlUWXRPRE0zT0MxbU16QTNZVGxoTkRjME16WWlMQ0poYVdRaU9pSXdJaXdpYzJONUlqb2lZWFYwYnlJc0ltNWxkQ0k2SW5SamNDSXNJblI1Y0dVaU9pSm9kSFJ3SWl3aWFHOXpkQ0k2SW0xcGFHRnVkMlZpYUc5emRDNWpiMjBpTENKd1lYUm9Jam9pTHlJc0luUnNjeUk2SW01dmJtVWlMQ0p6Ym1raU9pSWlMQ0poYkhCdUlqb2lJbjA9CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lXVVZGV1RVM01USWlMQ0poWkdRaU9pSXhOekF1TVRnM0xqRTJNeTQ0T1NJc0luQnZjblFpT2lJNE9EZ3hJaXdpYVdRaU9pSmtZalZoWm1GbE5DMWhZekl6TFRReFlUWXRPRE0zT0MxbU16QTNZVGxoTkRjME16WWlMQ0poYVdRaU9pSXdJaXdpYzJONUlqb2lZWFYwYnlJc0ltNWxkQ0k2SW5SamNDSXNJblI1Y0dVaU9pSm9kSFJ3SWl3aWFHOXpkQ0k2SW0xcGFHRnVkMlZpYUc5emRDNWpiMjBpTENKd1lYUm9Jam9pTHlJc0luUnNjeUk2SW01dmJtVWlMQ0p6Ym1raU9pSWlMQ0poYkhCdUlqb2lJbjA9CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lSQzFYU1U1SFJVUXRNalV6TnlJc0ltRmtaQ0k2SWpFMU9TNHlNRE11TVRFMExqSXlNaUlzSW5CdmNuUWlPaUk0T0RneElpd2lhV1FpT2lKa1lqVmhabUZsTkMxaFl6SXpMVFF4WVRZdE9ETTNPQzFtTXpBM1lUbGhORGMwTXpZaUxDSmhhV1FpT2lJd0lpd2ljMk41SWpvaVlYVjBieUlzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKb2RIUndJaXdpYUc5emRDSTZJbTFwYUdGdWQyVmlhRzl6ZEM1amIyMGlMQ0p3WVhSb0lqb2lMeUlzSW5Sc2N5STZJbTV2Ym1VaUxDSnpibWtpT2lJaUxDSmhiSEJ1SWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVJDMUdUMWd0TWpBNE9DSXNJbUZrWkNJNklqRXpPQzR4T1RjdU1TNHlNaklpTENKd2IzSjBJam9pT0RnNE1TSXNJbWxrSWpvaVpHSTFZV1poWlRRdFlXTXlNeTAwTVdFMkxUZ3pOemd0WmpNd04yRTVZVFEzTkRNMklpd2lZV2xrSWpvaU1DSXNJbk5qZVNJNkltRjFkRzhpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWFIUjBjQ0lzSW1odmMzUWlPaUp0YjJrdWFYSWlMQ0p3WVhSb0lqb2lMeUlzSW5Sc2N5STZJbTV2Ym1VaUxDSnpibWtpT2lJaUxDSmhiSEJ1SWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVJDMUNVazlYVGkwNE1qVTRJaXdpWVdSa0lqb2lNVFUzTGpJME5TNDBMalV5SWl3aWNHOXlkQ0k2SWpnNE9ERWlMQ0pwWkNJNkltUmlOV0ZtWVdVMExXRmpNak10TkRGaE5pMDRNemM0TFdZek1EZGhPV0UwTnpRek5pSXNJbUZwWkNJNklqQWlMQ0p6WTNraU9pSmhkWFJ2SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltaDBkSEFpTENKb2IzTjBJam9pYldsb1lXNTNaV0pvYjNOMExtTnZiU0lzSW5CaGRHZ2lPaUl2SWl3aWRHeHpJam9pYm05dVpTSXNJbk51YVNJNklpSXNJbUZzY0c0aU9pSWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lSQzFaUlV4TVQxY3RORE0wSWl3aVlXUmtJam9pTVRVNUxqWTFMalEwTGprNElpd2ljRzl5ZENJNklqZzRPREVpTENKcFpDSTZJbVJpTldGbVlXVTBMV0ZqTWpNdE5ERmhOaTA0TXpjNExXWXpNRGRoT1dFME56UXpOaUlzSW1GcFpDSTZJakFpTENKelkza2lPaUpoZFhSdklpd2libVYwSWpvaWRHTndJaXdpZEhsd1pTSTZJbWgwZEhBaUxDSm9iM04wSWpvaWJXbG9ZVzUzWldKb2IzTjBMbU52YlNJc0luQmhkR2dpT2lJdklpd2lkR3h6SWpvaWJtOXVaU0lzSW5OdWFTSTZJaUlzSW1Gc2NHNGlPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pUkMxR1FVbFVTQzB6TkRJMUlpd2lZV1JrSWpvaU1UUXlMamt6TGpZNExqRTBOeUlzSW5CdmNuUWlPaUk0T0RneElpd2lhV1FpT2lKa1lqVmhabUZsTkMxaFl6SXpMVFF4WVRZdE9ETTNPQzFtTXpBM1lUbGhORGMwTXpZaUxDSmhhV1FpT2lJd0lpd2ljMk41SWpvaVlYVjBieUlzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKb2RIUndJaXdpYUc5emRDSTZJbTFwYUdGdWQyVmlhRzl6ZEM1amIyMGlMQ0p3WVhSb0lqb2lMeUlzSW5Sc2N5STZJbTV2Ym1VaUxDSnpibWtpT2lJaUxDSmhiSEJ1SWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVJDMUdUMWd0T1RneE1pSXNJbUZrWkNJNklqRTJOUzR5TWpjdU5qVXVOREFpTENKd2IzSjBJam9pT0RnNE1TSXNJbWxrSWpvaVpHSTFZV1poWlRRdFlXTXlNeTAwTVdFMkxUZ3pOemd0WmpNd04yRTVZVFEzTkRNMklpd2lZV2xrSWpvaU1DSXNJbk5qZVNJNkltRjFkRzhpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWFIUjBjQ0lzSW1odmMzUWlPaUp0YVdoaGJuZGxZbWh2YzNRdVkyOXRJaXdpY0dGMGFDSTZJaThpTENKMGJITWlPaUp1YjI1bElpd2ljMjVwSWpvaUlpd2lZV3h3YmlJNklpSjkKdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVJDMUNVazlYVGkweE1ESTFJaXdpWVdSa0lqb2lNVFUzTGpJME5TNDBMakUzTUNJc0luQnZjblFpT2lJNE9EZ3hJaXdpYVdRaU9pSmtZalZoWm1GbE5DMWhZekl6TFRReFlUWXRPRE0zT0MxbU16QTNZVGxoTkRjME16WWlMQ0poYVdRaU9pSXdJaXdpYzJONUlqb2lZWFYwYnlJc0ltNWxkQ0k2SW5SamNDSXNJblI1Y0dVaU9pSm9kSFJ3SWl3aWFHOXpkQ0k2SW0xdmFTNXBjaUlzSW5CaGRHZ2lPaUl2SWl3aWRHeHpJam9pYm05dVpTSXNJbk51YVNJNklpSXNJbUZzY0c0aU9pSWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lRWEpuYjI5dU9EYzJOaUlzSW1Ga1pDSTZJakUwTXk0ME1pNDNMall6SWl3aWNHOXlkQ0k2SWpnNE9ERWlMQ0pwWkNJNkltUmlOV0ZtWVdVMExXRmpNak10TkRGaE5pMDRNemM0TFdZek1EZGhPV0UwTnpRek5pSXNJbUZwWkNJNklqQWlMQ0p6WTNraU9pSmhkWFJ2SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltaDBkSEFpTENKb2IzTjBJam9pYldsb1lXNTNaV0pvYjNOMExtTnZiU0lzSW5CaGRHZ2lPaUl2SWl3aWRHeHpJam9pYm05dVpTSXNJbk51YVNJNklpSXNJbUZzY0c0aU9pSWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lSQzFHUVVsVVNDMDJNakkzSWl3aVlXUmtJam9pTVRZM0xqY3hMakkxTUM0eE1UVWlMQ0p3YjNKMElqb2lPRGc0TVNJc0ltbGtJam9pWkdJMVlXWmhaVFF0WVdNeU15MDBNV0UyTFRnek56Z3Raak13TjJFNVlUUTNORE0ySWl3aVlXbGtJam9pTUNJc0luTmplU0k2SW1GMWRHOGlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYUhSMGNDSXNJbWh2YzNRaU9pSnRiMmt1YVhJaUxDSndZWFJvSWpvaUx5SXNJblJzY3lJNkltNXZibVVpTENKemJta2lPaUlpTENKaGJIQnVJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pUkMxQ1NVY3ROVGMyTlNJc0ltRmtaQ0k2SWpFMk55NHhOekl1TVRVNExqRXdNQ0lzSW5CdmNuUWlPaUk0T0RneElpd2lhV1FpT2lKa1lqVmhabUZsTkMxaFl6SXpMVFF4WVRZdE9ETTNPQzFtTXpBM1lUbGhORGMwTXpZaUxDSmhhV1FpT2lJd0lpd2ljMk41SWpvaVlYVjBieUlzSW01bGRDSTZJblJqY0NJc0luUjVjR1VpT2lKb2RIUndJaXdpYUc5emRDSTZJbTF2YVM1cGNpSXNJbkJoZEdnaU9pSXZJaXdpZEd4eklqb2libTl1WlNJc0luTnVhU0k2SWlJc0ltRnNjRzRpT2lJaWZRPT0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVJDMUNURlZGTFRnMk9Ua2lMQ0poWkdRaU9pSXhNemd1TVRrM0xqa3VNVEUxSWl3aWNHOXlkQ0k2SWpnNE9ERWlMQ0pwWkNJNkltUmlOV0ZtWVdVMExXRmpNak10TkRGaE5pMDRNemM0TFdZek1EZGhPV0UwTnpRek5pSXNJbUZwWkNJNklqQWlMQ0p6WTNraU9pSmhkWFJ2SWl3aWJtVjBJam9pZEdOd0lpd2lkSGx3WlNJNkltaDBkSEFpTENKb2IzTjBJam9pYldsb1lXNTNaV0pvYjNOMExtTnZiU0lzSW5CaGRHZ2lPaUl2SWl3aWRHeHpJam9pYm05dVpTSXNJbk51YVNJNklpSXNJbUZzY0c0aU9pSWlmUT09CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lSQzFHUVVsVVNDMHpOREkxSWl3aVlXUmtJam9pTVRReUxqa3pMalk0TGpFME55SXNJbkJ2Y25RaU9pSTRPRGd4SWl3aWFXUWlPaUprWWpWaFptRmxOQzFoWXpJekxUUXhZVFl0T0RNM09DMW1NekEzWVRsaE5EYzBNellpTENKaGFXUWlPaUl3SWl3aWMyTjVJam9pWVhWMGJ5SXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUpvZEhSd0lpd2lhRzl6ZENJNkltMXZhUzVwY2lJc0luQmhkR2dpT2lJdklpd2lkR3h6SWpvaWJtOXVaU0lzSW5OdWFTSTZJaUlzSW1Gc2NHNGlPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pUkMxQ1VrOVhUaTA1TnpVMElpd2lZV1JrSWpvaU1qQTVMamszTGpFMU5DNHlOREVpTENKd2IzSjBJam9pT0RnNE1TSXNJbWxrSWpvaVpHSTFZV1poWlRRdFlXTXlNeTAwTVdFMkxUZ3pOemd0WmpNd04yRTVZVFEzTkRNMklpd2lZV2xrSWpvaU1DSXNJbk5qZVNJNkltRjFkRzhpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWFIUjBjQ0lzSW1odmMzUWlPaUp0YjJrdWFYSWlMQ0p3WVhSb0lqb2lMeUlzSW5Sc2N5STZJbTV2Ym1VaUxDSnpibWtpT2lJaUxDSmhiSEJ1SWpvaUluMD0Kdm1lc3M6Ly9leUoySWpvaU1pSXNJbkJ6SWpvaVJDMVhSVUZNVkVndE1qTTROaUlzSW1Ga1pDSTZJakUwTXk0eE9UZ3VNVGd1TXpVaUxDSndiM0owSWpvaU9EZzRNU0lzSW1sa0lqb2laR0kxWVdaaFpUUXRZV015TXkwME1XRTJMVGd6TnpndFpqTXdOMkU1WVRRM05ETTJJaXdpWVdsa0lqb2lNQ0lzSW5OamVTSTZJbUYxZEc4aUxDSnVaWFFpT2lKMFkzQWlMQ0owZVhCbElqb2lhSFIwY0NJc0ltaHZjM1FpT2lKdGIya3VhWElpTENKd1lYUm9Jam9pTHlJc0luUnNjeUk2SW01dmJtVWlMQ0p6Ym1raU9pSWlMQ0poYkhCdUlqb2lJbjA9CnZtZXNzOi8vZXlKMklqb2lNaUlzSW5Ceklqb2lSQzFaUlV4TVQxY3RORGszTmlJc0ltRmtaQ0k2SWpFMk5TNHlNaTQwTnk0Mk1pSXNJbkJ2Y25RaU9pSTRPRGd4SWl3aWFXUWlPaUprWWpWaFptRmxOQzFoWXpJekxUUXhZVFl0T0RNM09DMW1NekEzWVRsaE5EYzBNellpTENKaGFXUWlPaUl3SWl3aWMyTjVJam9pWVhWMGJ5SXNJbTVsZENJNkluUmpjQ0lzSW5SNWNHVWlPaUpvZEhSd0lpd2lhRzl6ZENJNkltMXZhUzVwY2lJc0luQmhkR2dpT2lJdklpd2lkR3h6SWpvaWJtOXVaU0lzSW5OdWFTSTZJaUlzSW1Gc2NHNGlPaUlpZlE9PQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pUkMxR1QxZ3RNakEwSWl3aVlXUmtJam9pTVRZMUxqSXlOeTQyTlM0eE5UZ2lMQ0p3YjNKMElqb2lPRGc0TVNJc0ltbGtJam9pWkdJMVlXWmhaVFF0WVdNeU15MDBNV0UyTFRnek56Z3Raak13TjJFNVlUUTNORE0ySWl3aVlXbGtJam9pTUNJc0luTmplU0k2SW1GMWRHOGlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYUhSMGNDSXNJbWh2YzNRaU9pSnRiMmt1YVhJaUxDSndZWFJvSWpvaUx5SXNJblJzY3lJNkltNXZibVVpTENKemJta2lPaUlpTENKaGJIQnVJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pUkMxR1QxZ3RPVGd4TWlJc0ltRmtaQ0k2SWpFMk5TNHlNamN1TmpVdU5EQWlMQ0p3YjNKMElqb2lPRGc0TVNJc0ltbGtJam9pWkdJMVlXWmhaVFF0WVdNeU15MDBNV0UyTFRnek56Z3Raak13TjJFNVlUUTNORE0ySWl3aVlXbGtJam9pTUNJc0luTmplU0k2SW1GMWRHOGlMQ0p1WlhRaU9pSjBZM0FpTENKMGVYQmxJam9pYUhSMGNDSXNJbWh2YzNRaU9pSnRiMmt1YVhJaUxDSndZWFJvSWpvaUx5SXNJblJzY3lJNkltNXZibVVpTENKemJta2lPaUlpTENKaGJIQnVJam9pSW4wPQp2bWVzczovL2V5SjJJam9pTWlJc0luQnpJam9pUkMxQ1VrOVhUaTB6TWpneElpd2lZV1JrSWpvaU1UWTNMakUzTWk0eU16SXVOak1pTENKd2IzSjBJam9pT0RnNE1TSXNJbWxrSWpvaVpHSTFZV1poWlRRdFlXTXlNeTAwTVdFMkxUZ3pOemd0WmpNd04yRTVZVFEzTkRNMklpd2lZV2xrSWpvaU1DSXNJbk5qZVNJNkltRjFkRzhpTENKdVpYUWlPaUowWTNBaUxDSjBlWEJsSWpvaWFIUjBjQ0lzSW1odmMzUWlPaUp0YVdoaGJuZGxZbWh2YzNRdVkyOXRJaXdpY0dGMGFDSTZJaThpTENKMGJITWlPaUp1YjI1bElpd2ljMjVwSWpvaUlpd2lZV3h3YmlJNklpSjkK -------------------------------------------------------------------------------- /pub/dswang.yaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | dswang.ga 8 | 275 | 276 | 277 | 278 |
279 | 280 | 281 | 302 | 303 | 304 | 305 |
306 | 307 | Buy this domain. 308 | 309 |
310 |
311 | 312 |
313 | 314 |
315 | 316 | 321 | 322 | 323 | -------------------------------------------------------------------------------- /utils/yamlUtils.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | import time 4 | import copy 5 | import hashlib 6 | import uuid 7 | 8 | from ruamel import yaml 9 | 10 | from git.repo import Repo 11 | from git.repo.fun import is_git_dir 12 | 13 | 14 | class YamlUtils: 15 | def __init__(self, local_path="./", template_path="template.json", adguard_dns_path="adguard_dns.json"): 16 | self.local_path = local_path 17 | self.not_support_ciphers = ["chacha20", "rc4", "none"] 18 | self.not_support_alterIds = ["undefined"] 19 | self.not_support_type = ["vless"] 20 | self.network = ["grpc", "h2"] 21 | 22 | self.proxies_md5_dict = dict() 23 | self.proxies_md5_name_dict = dict() 24 | self.filtered_rules = list() 25 | self.proxy_names_set = set() 26 | self.proxy_groups = dict() 27 | self.proxy_group_names = set() 28 | self.proxy_groups_test_set = set() 29 | with open(template_path, "r", encoding="utf8") as template_file: 30 | self.template = json.load(template_file) 31 | with open(adguard_dns_path, "r", encoding="utf8") as template_file: 32 | self.adguard_dns = json.load(template_file) 33 | 34 | def clone_repo(self, repo_url, branch=None, depth=1): 35 | git_local_path = os.path.join(self.local_path, ".git") 36 | if not is_git_dir(git_local_path): 37 | Repo.clone_from(repo_url, to_path=self.local_path, branch=branch, depth=depth) 38 | else: 39 | self.pull() 40 | 41 | def pull(self): 42 | repo = Repo(self.local_path) 43 | repo.git.pull() 44 | 45 | def make_template_dict(self, keyword="yaml", dirname=None): 46 | if not os.path.exists(self.local_path): 47 | os.makedirs(self.local_path) 48 | repo = Repo(self.local_path) 49 | # 2 days ago 50 | # git log --since='date -d "yesterday" +%Y.%m.%d' --name-only --pretty=format:"" 51 | commit_log = repo.git.log( 52 | "--since='date -d \"yesterday\" +%Y.%m.%d'", 53 | "--name-only", 54 | '--pretty=format:""', 55 | ) 56 | log_list = commit_log.split("\n") 57 | self.make_template(log_list, keyword, dirname) 58 | 59 | def make_template(self, filelist, keyword="yaml", dirname=None): 60 | def check_proxy(proxy): 61 | return ( 62 | "server" in proxy 63 | and proxy.get("cipher") not in self.not_support_ciphers 64 | and proxy.get("alterId") is not None 65 | and proxy.get("alterId") not in self.not_support_alterIds 66 | and proxy.get("type") not in self.not_support_type 67 | and type(proxy.get("port") == int) 68 | and proxy.get("port") > 0 69 | ) 70 | 71 | for item in filelist: 72 | if (dirname is None or dirname in item) and keyword in item: 73 | try: 74 | file_path = os.path.join(self.local_path, item) 75 | if os.path.exists(file_path) and os.path.isfile(file_path): 76 | with open(file_path, "r", encoding="utf8") as yaml_file: 77 | yaml_obj = yaml.safe_load(yaml_file) 78 | rules = yaml_obj.get("rules") 79 | proxies = yaml_obj.get("proxies") 80 | self.filtered_rules.extend(rules) 81 | merged_proxy = dict() 82 | deleted_proxy = list() 83 | for proxy in proxies: 84 | if check_proxy(proxy): 85 | if proxy.get( 86 | "network" 87 | ) in self.network and not proxy.get("tls"): 88 | deleted_proxy.append(proxy.get("name")) 89 | continue 90 | proxy["port"] = int(proxy.get("port")) 91 | proxy_copy = copy.deepcopy(proxy) 92 | proxy_copy.pop("name") 93 | data_md5 = hashlib.md5( 94 | json.dumps(proxy_copy, sort_keys=True).encode( 95 | "utf-8" 96 | ) 97 | ).hexdigest() 98 | if data_md5 not in self.proxies_md5_dict: 99 | if proxy.get("name") in self.proxy_names_set: 100 | proxy["name"] = ( 101 | proxy.get("name") 102 | + "_" 103 | + item 104 | + "_" 105 | + str(round(time.time() * 1000)) 106 | + uuid.uuid4() 107 | ) 108 | self.proxy_names_set.add(proxy.get("name")) 109 | self.proxies_md5_dict[data_md5] = proxy 110 | self.proxies_md5_name_dict[ 111 | data_md5 112 | ] = proxy.get("name") 113 | merged_proxy[ 114 | proxy.get("name") 115 | ] = self.proxies_md5_name_dict.get(data_md5) 116 | else: 117 | deleted_proxy.append(proxy.get("name")) 118 | proxy_groups = yaml_obj.get("proxy-groups") 119 | 120 | for index, group in enumerate(proxy_groups): 121 | group_name = group.get("name") 122 | self.proxy_group_names.add(group_name) 123 | if group.get("type") == "url-test": 124 | self.proxy_groups_test_set.add(group_name) 125 | group["name"] = "♻️ 自动选择" 126 | proxy_groups[index] = group 127 | 128 | for group in proxy_groups: 129 | group_name = group.get("name") 130 | self.proxy_group_names.add(group_name) 131 | saved_group = self.proxy_groups.get(group_name, dict()) 132 | saved_proxies = saved_group.get("proxies", list()) 133 | proxies = group.get("proxies") 134 | for proxy in proxies: 135 | if ( 136 | proxy not in deleted_proxy 137 | and proxy not in saved_proxies 138 | and proxy in self.proxy_names_set 139 | ): 140 | for one in self.proxy_groups_test_set: 141 | proxy = proxy.replace(one, "♻️ 自动选择") 142 | saved_proxies.append( 143 | merged_proxy.get(proxy, proxy) 144 | ) 145 | group["proxies"] = ( 146 | saved_proxies 147 | if len(saved_proxies) > 0 148 | else ["DIRECT", "REJECT"] 149 | ) 150 | self.proxy_groups[group_name] = group 151 | except Exception as e: 152 | pass 153 | if len(self.proxy_groups) > 0: 154 | self.template["proxy-groups"] = list(self.proxy_groups.values()) 155 | 156 | filtered_rules_set = set() 157 | for item in self.filtered_rules: 158 | for one_group in self.proxy_group_names: 159 | if one_group in item: 160 | filtered_rules_set.add(item) 161 | for one in self.proxy_groups_test_set: 162 | filtered_rules_set.add(item.replace(one, "♻️ 自动选择")) 163 | 164 | self.template["proxies"] = list(self.proxies_md5_dict.values()) 165 | self.template["rules"] = list(filtered_rules_set) 166 | 167 | def get_template_dict(self): 168 | return self.template 169 | 170 | def save_file(self, savepath="clash.yaml", with_adguard_dns=False): 171 | if savepath is not None: 172 | template = copy.deepcopy(self.template) 173 | template.pop("rule-providers") 174 | if with_adguard_dns: 175 | template["dns"] = self.adguard_dns 176 | yml = yaml.YAML() 177 | yml.indent(mapping=2, sequence=4, offset=2) 178 | with open(savepath, "w+", encoding="utf8") as outfile: 179 | yml.dump(template, outfile) 180 | 181 | def save_file_without_providers( 182 | self, savepath="clash_without_providers.yaml", with_adguard_dns=False 183 | ): 184 | if savepath is not None: 185 | template = copy.deepcopy(self.template) 186 | template.pop("rule-providers") 187 | if with_adguard_dns: 188 | template["dns"] = self.adguard_dns 189 | yml = yaml.YAML() 190 | yml.indent(mapping=2, sequence=4, offset=2) 191 | with open(savepath, "w+", encoding="utf8") as outfile: 192 | yml.dump(template, outfile) 193 | -------------------------------------------------------------------------------- /localserver/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "abbrev@1": 6 | "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 7 | "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" 8 | "version" "1.1.1" 9 | 10 | "accepts@~1.3.8": 11 | "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" 12 | "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" 13 | "version" "1.3.8" 14 | dependencies: 15 | "mime-types" "~2.1.34" 16 | "negotiator" "0.6.3" 17 | 18 | "anymatch@~3.1.2": 19 | "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" 20 | "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" 21 | "version" "3.1.2" 22 | dependencies: 23 | "normalize-path" "^3.0.0" 24 | "picomatch" "^2.0.4" 25 | 26 | "array-flatten@1.1.1": 27 | "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 28 | "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" 29 | "version" "1.1.1" 30 | 31 | "balanced-match@^1.0.0": 32 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 33 | "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 34 | "version" "1.0.2" 35 | 36 | "binary-extensions@^2.0.0": 37 | "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 38 | "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" 39 | "version" "2.2.0" 40 | 41 | "body-parser@1.20.0": 42 | "integrity" "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==" 43 | "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" 44 | "version" "1.20.0" 45 | dependencies: 46 | "bytes" "3.1.2" 47 | "content-type" "~1.0.4" 48 | "debug" "2.6.9" 49 | "depd" "2.0.0" 50 | "destroy" "1.2.0" 51 | "http-errors" "2.0.0" 52 | "iconv-lite" "0.4.24" 53 | "on-finished" "2.4.1" 54 | "qs" "6.10.3" 55 | "raw-body" "2.5.1" 56 | "type-is" "~1.6.18" 57 | "unpipe" "1.0.0" 58 | 59 | "brace-expansion@^1.1.7": 60 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" 61 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 62 | "version" "1.1.11" 63 | dependencies: 64 | "balanced-match" "^1.0.0" 65 | "concat-map" "0.0.1" 66 | 67 | "braces@~3.0.2": 68 | "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" 69 | "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" 70 | "version" "3.0.2" 71 | dependencies: 72 | "fill-range" "^7.0.1" 73 | 74 | "bytes@3.1.2": 75 | "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 76 | "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" 77 | "version" "3.1.2" 78 | 79 | "call-bind@^1.0.0": 80 | "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" 81 | "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" 82 | "version" "1.0.2" 83 | dependencies: 84 | "function-bind" "^1.1.1" 85 | "get-intrinsic" "^1.0.2" 86 | 87 | "chokidar@^3.5.2": 88 | "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" 89 | "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" 90 | "version" "3.5.3" 91 | dependencies: 92 | "anymatch" "~3.1.2" 93 | "braces" "~3.0.2" 94 | "glob-parent" "~5.1.2" 95 | "is-binary-path" "~2.1.0" 96 | "is-glob" "~4.0.1" 97 | "normalize-path" "~3.0.0" 98 | "readdirp" "~3.6.0" 99 | optionalDependencies: 100 | "fsevents" "~2.3.2" 101 | 102 | "concat-map@0.0.1": 103 | "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 104 | "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 105 | "version" "0.0.1" 106 | 107 | "content-disposition@0.5.4": 108 | "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" 109 | "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" 110 | "version" "0.5.4" 111 | dependencies: 112 | "safe-buffer" "5.2.1" 113 | 114 | "content-type@~1.0.4": 115 | "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 116 | "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" 117 | "version" "1.0.4" 118 | 119 | "cookie-signature@1.0.6": 120 | "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 121 | "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" 122 | "version" "1.0.6" 123 | 124 | "cookie@0.5.0": 125 | "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 126 | "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" 127 | "version" "0.5.0" 128 | 129 | "cors@^2.8.5": 130 | "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" 131 | "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" 132 | "version" "2.8.5" 133 | dependencies: 134 | "object-assign" "^4" 135 | "vary" "^1" 136 | 137 | "debug@^3.2.6": 138 | "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" 139 | "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" 140 | "version" "3.2.7" 141 | dependencies: 142 | "ms" "^2.1.1" 143 | 144 | "debug@^3.2.7": 145 | "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" 146 | "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" 147 | "version" "3.2.7" 148 | dependencies: 149 | "ms" "^2.1.1" 150 | 151 | "debug@2.6.9": 152 | "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" 153 | "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 154 | "version" "2.6.9" 155 | dependencies: 156 | "ms" "2.0.0" 157 | 158 | "depd@2.0.0": 159 | "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 160 | "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" 161 | "version" "2.0.0" 162 | 163 | "destroy@1.2.0": 164 | "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 165 | "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" 166 | "version" "1.2.0" 167 | 168 | "ee-first@1.1.1": 169 | "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 170 | "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" 171 | "version" "1.1.1" 172 | 173 | "encodeurl@~1.0.2": 174 | "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 175 | "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" 176 | "version" "1.0.2" 177 | 178 | "escape-html@~1.0.3": 179 | "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 180 | "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" 181 | "version" "1.0.3" 182 | 183 | "etag@~1.8.1": 184 | "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 185 | "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" 186 | "version" "1.8.1" 187 | 188 | "express@^4.18.1": 189 | "integrity" "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==" 190 | "resolved" "https://registry.npmjs.org/express/-/express-4.18.1.tgz" 191 | "version" "4.18.1" 192 | dependencies: 193 | "accepts" "~1.3.8" 194 | "array-flatten" "1.1.1" 195 | "body-parser" "1.20.0" 196 | "content-disposition" "0.5.4" 197 | "content-type" "~1.0.4" 198 | "cookie" "0.5.0" 199 | "cookie-signature" "1.0.6" 200 | "debug" "2.6.9" 201 | "depd" "2.0.0" 202 | "encodeurl" "~1.0.2" 203 | "escape-html" "~1.0.3" 204 | "etag" "~1.8.1" 205 | "finalhandler" "1.2.0" 206 | "fresh" "0.5.2" 207 | "http-errors" "2.0.0" 208 | "merge-descriptors" "1.0.1" 209 | "methods" "~1.1.2" 210 | "on-finished" "2.4.1" 211 | "parseurl" "~1.3.3" 212 | "path-to-regexp" "0.1.7" 213 | "proxy-addr" "~2.0.7" 214 | "qs" "6.10.3" 215 | "range-parser" "~1.2.1" 216 | "safe-buffer" "5.2.1" 217 | "send" "0.18.0" 218 | "serve-static" "1.15.0" 219 | "setprototypeof" "1.2.0" 220 | "statuses" "2.0.1" 221 | "type-is" "~1.6.18" 222 | "utils-merge" "1.0.1" 223 | "vary" "~1.1.2" 224 | 225 | "fill-range@^7.0.1": 226 | "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" 227 | "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" 228 | "version" "7.0.1" 229 | dependencies: 230 | "to-regex-range" "^5.0.1" 231 | 232 | "finalhandler@1.2.0": 233 | "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" 234 | "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" 235 | "version" "1.2.0" 236 | dependencies: 237 | "debug" "2.6.9" 238 | "encodeurl" "~1.0.2" 239 | "escape-html" "~1.0.3" 240 | "on-finished" "2.4.1" 241 | "parseurl" "~1.3.3" 242 | "statuses" "2.0.1" 243 | "unpipe" "~1.0.0" 244 | 245 | "forwarded@0.2.0": 246 | "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 247 | "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" 248 | "version" "0.2.0" 249 | 250 | "fresh@0.5.2": 251 | "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 252 | "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" 253 | "version" "0.5.2" 254 | 255 | "function-bind@^1.1.1": 256 | "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 257 | "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 258 | "version" "1.1.1" 259 | 260 | "get-intrinsic@^1.0.2": 261 | "integrity" "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" 262 | "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" 263 | "version" "1.1.3" 264 | dependencies: 265 | "function-bind" "^1.1.1" 266 | "has" "^1.0.3" 267 | "has-symbols" "^1.0.3" 268 | 269 | "glob-parent@~5.1.2": 270 | "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" 271 | "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 272 | "version" "5.1.2" 273 | dependencies: 274 | "is-glob" "^4.0.1" 275 | 276 | "has-flag@^3.0.0": 277 | "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 278 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 279 | "version" "3.0.0" 280 | 281 | "has-symbols@^1.0.3": 282 | "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 283 | "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" 284 | "version" "1.0.3" 285 | 286 | "has@^1.0.3": 287 | "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" 288 | "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 289 | "version" "1.0.3" 290 | dependencies: 291 | "function-bind" "^1.1.1" 292 | 293 | "http-errors@2.0.0": 294 | "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" 295 | "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" 296 | "version" "2.0.0" 297 | dependencies: 298 | "depd" "2.0.0" 299 | "inherits" "2.0.4" 300 | "setprototypeof" "1.2.0" 301 | "statuses" "2.0.1" 302 | "toidentifier" "1.0.1" 303 | 304 | "iconv-lite@^0.6.3": 305 | "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" 306 | "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" 307 | "version" "0.6.3" 308 | dependencies: 309 | "safer-buffer" ">= 2.1.2 < 3.0.0" 310 | 311 | "iconv-lite@0.4.24": 312 | "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" 313 | "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" 314 | "version" "0.4.24" 315 | dependencies: 316 | "safer-buffer" ">= 2.1.2 < 3" 317 | 318 | "ignore-by-default@^1.0.1": 319 | "integrity" "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" 320 | "resolved" "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" 321 | "version" "1.0.1" 322 | 323 | "inherits@2.0.4": 324 | "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 325 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 326 | "version" "2.0.4" 327 | 328 | "ipaddr.js@1.9.1": 329 | "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 330 | "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" 331 | "version" "1.9.1" 332 | 333 | "is-binary-path@~2.1.0": 334 | "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" 335 | "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 336 | "version" "2.1.0" 337 | dependencies: 338 | "binary-extensions" "^2.0.0" 339 | 340 | "is-extglob@^2.1.1": 341 | "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 342 | "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 343 | "version" "2.1.1" 344 | 345 | "is-glob@^4.0.1", "is-glob@~4.0.1": 346 | "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" 347 | "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 348 | "version" "4.0.3" 349 | dependencies: 350 | "is-extglob" "^2.1.1" 351 | 352 | "is-number@^7.0.0": 353 | "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 354 | "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 355 | "version" "7.0.0" 356 | 357 | "js-base64@^3.7.2": 358 | "integrity" "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" 359 | "resolved" "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz" 360 | "version" "3.7.2" 361 | 362 | "media-typer@0.3.0": 363 | "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 364 | "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" 365 | "version" "0.3.0" 366 | 367 | "merge-descriptors@1.0.1": 368 | "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 369 | "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" 370 | "version" "1.0.1" 371 | 372 | "methods@~1.1.2": 373 | "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 374 | "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" 375 | "version" "1.1.2" 376 | 377 | "mime-db@1.52.0": 378 | "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 379 | "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" 380 | "version" "1.52.0" 381 | 382 | "mime-types@~2.1.24", "mime-types@~2.1.34": 383 | "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" 384 | "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 385 | "version" "2.1.35" 386 | dependencies: 387 | "mime-db" "1.52.0" 388 | 389 | "mime@1.6.0": 390 | "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 391 | "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" 392 | "version" "1.6.0" 393 | 394 | "minimatch@^3.1.2": 395 | "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" 396 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 397 | "version" "3.1.2" 398 | dependencies: 399 | "brace-expansion" "^1.1.7" 400 | 401 | "ms@^2.1.1": 402 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 403 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 404 | "version" "2.1.3" 405 | 406 | "ms@2.0.0": 407 | "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 408 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 409 | "version" "2.0.0" 410 | 411 | "ms@2.1.3": 412 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 413 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 414 | "version" "2.1.3" 415 | 416 | "needle@^3.1.0": 417 | "integrity" "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==" 418 | "resolved" "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz" 419 | "version" "3.1.0" 420 | dependencies: 421 | "debug" "^3.2.6" 422 | "iconv-lite" "^0.6.3" 423 | "sax" "^1.2.4" 424 | 425 | "negotiator@0.6.3": 426 | "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 427 | "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" 428 | "version" "0.6.3" 429 | 430 | "nodemon@^2.0.20": 431 | "integrity" "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==" 432 | "resolved" "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz" 433 | "version" "2.0.20" 434 | dependencies: 435 | "chokidar" "^3.5.2" 436 | "debug" "^3.2.7" 437 | "ignore-by-default" "^1.0.1" 438 | "minimatch" "^3.1.2" 439 | "pstree.remy" "^1.1.8" 440 | "semver" "^5.7.1" 441 | "simple-update-notifier" "^1.0.7" 442 | "supports-color" "^5.5.0" 443 | "touch" "^3.1.0" 444 | "undefsafe" "^2.0.5" 445 | 446 | "nopt@~1.0.10": 447 | "integrity" "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==" 448 | "resolved" "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" 449 | "version" "1.0.10" 450 | dependencies: 451 | "abbrev" "1" 452 | 453 | "normalize-path@^3.0.0", "normalize-path@~3.0.0": 454 | "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 455 | "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 456 | "version" "3.0.0" 457 | 458 | "object-assign@^4": 459 | "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 460 | "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 461 | "version" "4.1.1" 462 | 463 | "object-inspect@^1.9.0": 464 | "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 465 | "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" 466 | "version" "1.12.2" 467 | 468 | "on-finished@2.4.1": 469 | "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" 470 | "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" 471 | "version" "2.4.1" 472 | dependencies: 473 | "ee-first" "1.1.1" 474 | 475 | "parseurl@~1.3.3": 476 | "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 477 | "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" 478 | "version" "1.3.3" 479 | 480 | "path-to-regexp@0.1.7": 481 | "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 482 | "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" 483 | "version" "0.1.7" 484 | 485 | "picomatch@^2.0.4", "picomatch@^2.2.1": 486 | "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 487 | "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 488 | "version" "2.3.1" 489 | 490 | "proxy-addr@~2.0.7": 491 | "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" 492 | "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" 493 | "version" "2.0.7" 494 | dependencies: 495 | "forwarded" "0.2.0" 496 | "ipaddr.js" "1.9.1" 497 | 498 | "pstree.remy@^1.1.8": 499 | "integrity" "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" 500 | "resolved" "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" 501 | "version" "1.1.8" 502 | 503 | "qs@6.10.3": 504 | "integrity" "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==" 505 | "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" 506 | "version" "6.10.3" 507 | dependencies: 508 | "side-channel" "^1.0.4" 509 | 510 | "range-parser@~1.2.1": 511 | "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 512 | "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" 513 | "version" "1.2.1" 514 | 515 | "raw-body@2.5.1": 516 | "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" 517 | "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" 518 | "version" "2.5.1" 519 | dependencies: 520 | "bytes" "3.1.2" 521 | "http-errors" "2.0.0" 522 | "iconv-lite" "0.4.24" 523 | "unpipe" "1.0.0" 524 | 525 | "readdirp@~3.6.0": 526 | "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" 527 | "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" 528 | "version" "3.6.0" 529 | dependencies: 530 | "picomatch" "^2.2.1" 531 | 532 | "safe-buffer@5.2.1": 533 | "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 534 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 535 | "version" "5.2.1" 536 | 537 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": 538 | "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 539 | "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 540 | "version" "2.1.2" 541 | 542 | "sax@^1.2.4": 543 | "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 544 | "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" 545 | "version" "1.2.4" 546 | 547 | "semver@^5.7.1": 548 | "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 549 | "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" 550 | "version" "5.7.1" 551 | 552 | "semver@~7.0.0": 553 | "integrity" "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" 554 | "resolved" "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" 555 | "version" "7.0.0" 556 | 557 | "send@0.18.0": 558 | "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" 559 | "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" 560 | "version" "0.18.0" 561 | dependencies: 562 | "debug" "2.6.9" 563 | "depd" "2.0.0" 564 | "destroy" "1.2.0" 565 | "encodeurl" "~1.0.2" 566 | "escape-html" "~1.0.3" 567 | "etag" "~1.8.1" 568 | "fresh" "0.5.2" 569 | "http-errors" "2.0.0" 570 | "mime" "1.6.0" 571 | "ms" "2.1.3" 572 | "on-finished" "2.4.1" 573 | "range-parser" "~1.2.1" 574 | "statuses" "2.0.1" 575 | 576 | "serve-static@1.15.0": 577 | "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" 578 | "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" 579 | "version" "1.15.0" 580 | dependencies: 581 | "encodeurl" "~1.0.2" 582 | "escape-html" "~1.0.3" 583 | "parseurl" "~1.3.3" 584 | "send" "0.18.0" 585 | 586 | "setprototypeof@1.2.0": 587 | "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 588 | "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" 589 | "version" "1.2.0" 590 | 591 | "side-channel@^1.0.4": 592 | "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" 593 | "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" 594 | "version" "1.0.4" 595 | dependencies: 596 | "call-bind" "^1.0.0" 597 | "get-intrinsic" "^1.0.2" 598 | "object-inspect" "^1.9.0" 599 | 600 | "simple-update-notifier@^1.0.7": 601 | "integrity" "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==" 602 | "resolved" "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz" 603 | "version" "1.0.7" 604 | dependencies: 605 | "semver" "~7.0.0" 606 | 607 | "statuses@2.0.1": 608 | "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 609 | "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" 610 | "version" "2.0.1" 611 | 612 | "supports-color@^5.5.0": 613 | "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" 614 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 615 | "version" "5.5.0" 616 | dependencies: 617 | "has-flag" "^3.0.0" 618 | 619 | "to-regex-range@^5.0.1": 620 | "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" 621 | "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 622 | "version" "5.0.1" 623 | dependencies: 624 | "is-number" "^7.0.0" 625 | 626 | "toidentifier@1.0.1": 627 | "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 628 | "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" 629 | "version" "1.0.1" 630 | 631 | "touch@^3.1.0": 632 | "integrity" "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==" 633 | "resolved" "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" 634 | "version" "3.1.0" 635 | dependencies: 636 | "nopt" "~1.0.10" 637 | 638 | "type-is@~1.6.18": 639 | "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" 640 | "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" 641 | "version" "1.6.18" 642 | dependencies: 643 | "media-typer" "0.3.0" 644 | "mime-types" "~2.1.24" 645 | 646 | "undefsafe@^2.0.5": 647 | "integrity" "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" 648 | "resolved" "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" 649 | "version" "2.0.5" 650 | 651 | "unpipe@~1.0.0", "unpipe@1.0.0": 652 | "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 653 | "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" 654 | "version" "1.0.0" 655 | 656 | "utils-merge@1.0.1": 657 | "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 658 | "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" 659 | "version" "1.0.1" 660 | 661 | "vary@^1", "vary@~1.1.2": 662 | "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 663 | "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" 664 | "version" "1.1.2" 665 | 666 | "yarn@^1.22.19": 667 | "integrity" "sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==" 668 | "resolved" "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz" 669 | "version" "1.22.19" 670 | -------------------------------------------------------------------------------- /pub/misersun-config003.yaml: -------------------------------------------------------------------------------- 1 | proxies: 2 | - name: 3.05| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶111CDN 3 | server: 141.101.114.30 4 | port: 443 5 | type: vmess 6 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 7 | alterId: 0 8 | cipher: auto 9 | tls: true 10 | network: ws 11 | ws-opts: 12 | path: /ECTCJ0DF 13 | headers: 14 | Host: lg1.trump2023.us 15 | - name: 2.99| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶12CDN 16 | server: 188.114.99.9 17 | port: 443 18 | type: vmess 19 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 20 | alterId: 0 21 | cipher: auto 22 | tls: true 23 | network: ws 24 | ws-opts: 25 | path: /ECTCJ0DF 26 | headers: 27 | Host: lg1.trump2023.us 28 | - name: 2.89| httpsgithubcomAlvin9999newpacwiki clash ip6 洛杉矶112CDN 2 29 | server: 203.30.191.19 30 | port: 443 31 | type: vmess 32 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 33 | alterId: 0 34 | cipher: auto 35 | tls: true 36 | network: ws 37 | ws-opts: 38 | path: /dongtaiwang.com 39 | headers: 40 | Host: clash6.ssr-free.xyz 41 | - name: 2.82| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶413 42 | server: 185.162.228.229 43 | port: 443 44 | type: vmess 45 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 46 | alterId: 0 47 | cipher: auto 48 | tls: true 49 | network: ws 50 | ws-opts: 51 | path: /AUIKN8AU 52 | headers: 53 | Host: oplg1.cfcdn2.xyz 54 | - name: 2.78|USyoutube资源分享师76 55 | type: vmess 56 | server: oplg1.cfcdn2.xyz 57 | port: 443 58 | cipher: auto 59 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 60 | alterId: 0 61 | tls: true 62 | skip-cert-verify: true 63 | network: ws 64 | ws-opts: 65 | path: /AUIKN8AU 66 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfNzYiLCJhZGQiOiJvcGxnMS5jZmNkbjIueHl6IiwicG9ydCI6NDQzLCJpZCI6ImM1YTJkN2I4LWJmODQtNGY5Ny04NTc3LWI5Yjg3ZjJiYWFmNyIsImFpZCI6MCwic2N5IjoiemVybyIsIm5ldCI6IndzIiwicGF0aCI6Ii9BVUlLTjhBVSIsInRscyI6InRscyJ9 67 | - name: 2.67| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶46 68 | server: 23.227.38.23 69 | port: 443 70 | type: vmess 71 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 72 | alterId: 0 73 | cipher: auto 74 | tls: true 75 | network: ws 76 | ws-opts: 77 | path: /AUIKN8AU 78 | headers: 79 | Host: oplg1.cfcdn2.xyz 80 | - name: 2.63|USyoutube资源分享师112 81 | server: 172.67.169.131 82 | port: 443 83 | type: vmess 84 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 85 | alterId: 0 86 | cipher: auto 87 | tls: true 88 | skip-cert-verify: true 89 | network: ws 90 | ws-path: /AUIKN8AU 91 | ws-headers: 92 | Host: oplg1.cfcdn2.xyz 93 | udp: true 94 | - name: 2.56| githubcomfreefq 美国RF Engineering 6 95 | server: 141.193.213.20 96 | port: 443 97 | type: vmess 98 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 99 | alterId: 0 100 | cipher: auto 101 | tls: true 102 | network: ws 103 | ws-path: /5QNROSRV 104 | ws-headers: 105 | Host: oplg1.zhujicn2.com 106 | - name: 2.56| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶19CDN 107 | server: 185.162.228.228 108 | port: 443 109 | type: vmess 110 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 111 | alterId: 0 112 | cipher: auto 113 | tls: true 114 | network: ws 115 | ws-opts: 116 | path: /ECTCJ0DF 117 | headers: 118 | Host: lg1.trump2023.us 119 | - name: 2.44| httpsgithubcomAlvin9999newpacwiki clash ip6 洛杉矶12CDN 120 | server: 141.101.114.150 121 | port: 443 122 | type: vmess 123 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 124 | alterId: 0 125 | cipher: auto 126 | tls: true 127 | network: ws 128 | ws-opts: 129 | path: /dongtaiwang.com 130 | headers: 131 | Host: clash6.ssr-free.xyz 132 | - name: 2.39|UShttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 26 133 | server: 172.64.154.155 134 | port: 443 135 | type: vmess 136 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 137 | alterId: 0 138 | cipher: auto 139 | tls: true 140 | skip-cert-verify: true 141 | network: ws 142 | ws-opts: 143 | path: /dongtaiwang.com 144 | headers: 145 | Host: clash6.ssr-free.xyz 146 | udp: true 147 | - name: 2.38| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶211CDN 148 | server: 141.101.114.31 149 | port: 443 150 | type: vmess 151 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 152 | alterId: 0 153 | cipher: auto 154 | tls: true 155 | network: ws 156 | ws-opts: 157 | path: /5QNROSRV 158 | headers: 159 | Host: oplg1.zhujicn2.com 160 | - name: 2.35| httpsgithubcomAlvin9999newpacwiki clash ip6 洛杉矶113CDN 2 161 | server: 203.30.191.18 162 | port: 443 163 | type: vmess 164 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 165 | alterId: 0 166 | cipher: auto 167 | tls: true 168 | network: ws 169 | ws-opts: 170 | path: /dongtaiwang.com 171 | headers: 172 | Host: clash6.ssr-free.xyz 173 | - name: 2.33| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶14CDN 174 | server: 203.30.190.190 175 | port: 443 176 | type: vmess 177 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 178 | alterId: 0 179 | cipher: auto 180 | tls: true 181 | network: ws 182 | ws-opts: 183 | path: /ECTCJ0DF 184 | headers: 185 | Host: lg1.trump2023.us 186 | - name: 2.33| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶16CDN 187 | server: 203.30.188.188 188 | port: 443 189 | type: vmess 190 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 191 | alterId: 0 192 | cipher: auto 193 | tls: true 194 | network: ws 195 | ws-opts: 196 | path: /ECTCJ0DF 197 | headers: 198 | Host: lg1.trump2023.us 199 | - name: 2.25| v2rayfreeeuorg 美国RF Engineering 11 200 | server: news.microsoft.com 201 | port: 443 202 | type: vmess 203 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 204 | alterId: 0 205 | cipher: auto 206 | tls: true 207 | network: ws 208 | ws-path: /5QNROSRV 209 | ws-headers: 210 | Host: oplg1.zhujicn2.com 211 | - name: 2.22| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶19 212 | server: 203.30.191.9 213 | port: 443 214 | type: vmess 215 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 216 | alterId: 0 217 | cipher: auto 218 | tls: true 219 | network: ws 220 | ws-opts: 221 | path: /AUIKN8AU 222 | headers: 223 | Host: oplg1.cfcdn2.xyz 224 | - name: 2.21| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶114CDN 225 | server: 190.93.246.2 226 | port: 443 227 | type: vmess 228 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 229 | alterId: 0 230 | cipher: auto 231 | tls: true 232 | network: ws 233 | ws-opts: 234 | path: /ECTCJ0DF 235 | headers: 236 | Host: lg1.trump2023.us 237 | - name: 2.20| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶112CDN 238 | server: 190.93.244.2 239 | port: 443 240 | type: vmess 241 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 242 | alterId: 0 243 | cipher: auto 244 | tls: true 245 | network: ws 246 | ws-opts: 247 | path: /ECTCJ0DF 248 | headers: 249 | Host: lg1.trump2023.us 250 | - name: 2.19|美国youtube资源分享师230 251 | type: vmess 252 | server: 172.64.153.155 253 | port: 443 254 | cipher: auto 255 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 256 | alterId: 0 257 | tls: true 258 | skip-cert-verify: true 259 | network: ws 260 | ws-opts: 261 | path: /dongtaiwang.com 262 | headers: 263 | host: clash6.ssr-free.xyz 264 | - name: 2.17|USyoutube资源分享师22 265 | type: vmess 266 | server: cf-lt-dns.sharecentre.online 267 | port: 443 268 | cipher: auto 269 | uuid: 20e92881-5fb4-4b05-bc77-57929476dc69 270 | alterId: 0 271 | tls: true 272 | skip-cert-verify: true 273 | network: ws 274 | ws-opts: 275 | path: /shirker 276 | headers: 277 | host: uk-2.sharecentre.online 278 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMjIiLCJhZGQiOiJjZi1sdC1kbnMuc2hhcmVjZW50cmUub25saW5lIiwicG9ydCI6NDQzLCJpZCI6IjIwZTkyODgxLTVmYjQtNGIwNS1iYzc3LTU3OTI5NDc2ZGM2OSIsImFpZCI6MCwic2N5IjoiemVybyIsIm5ldCI6IndzIiwiaG9zdCI6InVrLTIuc2hhcmVjZW50cmUub25saW5lIiwicGF0aCI6Ii9zaGlya2VyIiwidGxzIjoidGxzIn0= 279 | - name: 2.14| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶47 280 | server: 23.227.38.22 281 | port: 443 282 | type: vmess 283 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 284 | alterId: 0 285 | cipher: auto 286 | tls: true 287 | network: ws 288 | ws-opts: 289 | path: /AUIKN8AU 290 | headers: 291 | Host: oplg1.cfcdn2.xyz 292 | - name: 2.13|UShttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 15 293 | server: v2ray.online 294 | port: 443 295 | type: vmess 296 | uuid: 00BBF5B8-173E-6818-9927-5AD1AA073C7D 297 | alterId: 0 298 | cipher: auto 299 | tls: true 300 | skip-cert-verify: true 301 | network: ws 302 | ws-opts: 303 | path: /speedtest 304 | headers: 305 | Host: Kansas.v2ray.online 306 | udp: true 307 | - name: 2.12|美国youtube资源分享师228 308 | type: vmess 309 | server: 103.21.244.70 310 | port: 8443 311 | cipher: auto 312 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 313 | alterId: 0 314 | tls: true 315 | skip-cert-verify: true 316 | network: ws 317 | ws-opts: 318 | path: /8cda48b3 319 | headers: 320 | host: IN-92-99.shoptunnel.live 321 | - name: 2.12| githubcomfreefq 美国CloudFlare公司CDN节点 12 322 | server: oplg1.zhujicn2.com 323 | port: 443 324 | type: vmess 325 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 326 | alterId: 0 327 | cipher: auto 328 | tls: true 329 | network: ws 330 | ws-path: /5QNROSRV 331 | ws-headers: 332 | Host: oplg1.zhujicn2.com 333 | - name: 2.12| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶213CDN 334 | server: 190.93.245.3 335 | port: 443 336 | type: vmess 337 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 338 | alterId: 0 339 | cipher: auto 340 | tls: true 341 | network: ws 342 | ws-opts: 343 | path: /5QNROSRV 344 | headers: 345 | Host: oplg1.zhujicn2.com 346 | - name: 2.09| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶49 347 | server: 23.227.38.20 348 | port: 443 349 | type: vmess 350 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 351 | alterId: 0 352 | cipher: auto 353 | tls: true 354 | network: ws 355 | ws-opts: 356 | path: /AUIKN8AU 357 | headers: 358 | Host: oplg1.cfcdn2.xyz 359 | - name: 2.03| httpsgithubcomAlvin9999newpacwiki clash ip6 洛杉矶111CDN 2 360 | server: 203.30.191.20 361 | port: 443 362 | type: vmess 363 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 364 | alterId: 0 365 | cipher: auto 366 | tls: true 367 | network: ws 368 | ws-opts: 369 | path: /dongtaiwang.com 370 | headers: 371 | Host: clash6.ssr-free.xyz 372 | - name: 2.02| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶110CDN 373 | server: 141.101.115.30 374 | port: 443 375 | type: vmess 376 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 377 | alterId: 0 378 | cipher: auto 379 | tls: true 380 | network: ws 381 | ws-opts: 382 | path: /ECTCJ0DF 383 | headers: 384 | Host: lg1.trump2023.us 385 | - name: 1.99|美国youtube资源分享师252 386 | type: vmess 387 | server: 103.21.244.227 388 | port: 8443 389 | cipher: auto 390 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 391 | alterId: 0 392 | tls: true 393 | skip-cert-verify: true 394 | network: ws 395 | ws-opts: 396 | path: /8cda48b3 397 | headers: 398 | host: IN-92-99.shoptunnel.live 399 | - name: 1.97|法国youtube资源分享师246 400 | type: vmess 401 | server: 173.245.49.238 402 | port: 8443 403 | cipher: auto 404 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 405 | alterId: 0 406 | tls: true 407 | skip-cert-verify: true 408 | network: ws 409 | ws-opts: 410 | path: /8cda48b3 411 | headers: 412 | host: IN-92-99.shoptunnel.live 413 | - name: 1.97| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶5 414 | server: 203.30.191.6 415 | port: 443 416 | type: vmess 417 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 418 | alterId: 0 419 | cipher: auto 420 | tls: true 421 | network: ws 422 | ws-opts: 423 | path: /AUIKN8AU 424 | headers: 425 | Host: oplg1.cfcdn2.xyz 426 | - name: 1.93| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶7 427 | server: 203.30.191.4 428 | port: 443 429 | type: vmess 430 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 431 | alterId: 0 432 | cipher: auto 433 | tls: true 434 | network: ws 435 | ws-opts: 436 | path: /AUIKN8AU 437 | headers: 438 | Host: oplg1.cfcdn2.xyz 439 | - name: 1.93|美国youtube资源分享师46 440 | type: vmess 441 | server: 103.21.244.187 442 | port: 8443 443 | cipher: auto 444 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 445 | alterId: 0 446 | tls: true 447 | skip-cert-verify: true 448 | network: ws 449 | ws-opts: 450 | path: /8cda48b3 451 | headers: 452 | host: IN-92-99.shoptunnel.live 453 | - name: 1.92| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶416 454 | server: 203.30.191.191 455 | port: 443 456 | type: vmess 457 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 458 | alterId: 0 459 | cipher: auto 460 | tls: true 461 | network: ws 462 | ws-opts: 463 | path: /AUIKN8AU 464 | headers: 465 | Host: oplg1.cfcdn2.xyz 466 | - name: 1.89|美国youtube资源分享师30 467 | type: vmess 468 | server: 172.67.115.249 469 | port: 8443 470 | cipher: auto 471 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 472 | alterId: 0 473 | tls: true 474 | skip-cert-verify: true 475 | network: ws 476 | ws-opts: 477 | path: /8cda48b3 478 | headers: 479 | host: IN-92-99.shoptunnel.live 480 | - name: 1.89|美国youtube资源分享师243 481 | type: vmess 482 | server: 103.21.244.127 483 | port: 8443 484 | cipher: auto 485 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 486 | alterId: 0 487 | tls: true 488 | skip-cert-verify: true 489 | network: ws 490 | ws-opts: 491 | path: /8cda48b3 492 | headers: 493 | host: IN-92-99.shoptunnel.live 494 | - name: 1.88|USyoutube资源分享师195 495 | server: vmess.woiden.yuji2022.gq 496 | port: 8880 497 | type: vmess 498 | uuid: 4b5e4565-322f-4223-a891-78a84f189726 499 | alterId: 0 500 | cipher: auto 501 | tls: false 502 | skip-cert-verify: true 503 | network: ws 504 | ws-path: /E86414F638E11 505 | ws-headers: 506 | Host: vmess.woiden.yuji2022.gq 507 | udp: true 508 | - name: 1.88|法国youtube资源分享师229 509 | type: vmess 510 | server: 173.245.49.111 511 | port: 8443 512 | cipher: auto 513 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 514 | alterId: 0 515 | tls: true 516 | skip-cert-verify: true 517 | network: ws 518 | ws-opts: 519 | path: /8cda48b3 520 | headers: 521 | host: IN-92-99.shoptunnel.live 522 | - name: 1.87|美国youtube资源分享师233 523 | type: vmess 524 | server: 172.67.27.213 525 | port: 8443 526 | cipher: auto 527 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 528 | alterId: 0 529 | tls: true 530 | skip-cert-verify: true 531 | network: ws 532 | ws-opts: 533 | path: /8cda48b3 534 | headers: 535 | host: IN-92-99.shoptunnel.live 536 | - name: 1.85| githubcomfreefq 美国CloudFlare节点 19 537 | server: 172.67.199.34 538 | port: 443 539 | type: vmess 540 | uuid: 20e92881-5fb4-4b05-bc77-57929476dc69 541 | alterId: 0 542 | cipher: auto 543 | tls: true 544 | network: ws 545 | ws-path: /shirker 546 | ws-headers: 547 | Host: lu.sharecentre.online 548 | - name: 1.82|USyoutube资源分享师16 549 | type: vmess 550 | server: cf-lt.sharecentre.online 551 | port: 443 552 | cipher: auto 553 | uuid: 20e92881-5fb4-4b05-bc77-57929476dc69 554 | alterId: 0 555 | tls: true 556 | skip-cert-verify: true 557 | network: ws 558 | ws-opts: 559 | path: /shirker 560 | headers: 561 | host: uk-2.sharecentre.online 562 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMTYiLCJhZGQiOiJjZi1sdC5zaGFyZWNlbnRyZS5vbmxpbmUiLCJwb3J0Ijo0NDMsImlkIjoiMjBlOTI4ODEtNWZiNC00YjA1LWJjNzctNTc5Mjk0NzZkYzY5IiwiYWlkIjowLCJzY3kiOiJ6ZXJvIiwibmV0Ijoid3MiLCJob3N0IjoidWstMi5zaGFyZWNlbnRyZS5vbmxpbmUiLCJwYXRoIjoiL3NoaXJrZXIiLCJ0bHMiOiJ0bHMifQ== 563 | - name: 1.78|法国youtube资源分享师221 564 | type: vmess 565 | server: 173.245.49.10 566 | port: 8443 567 | cipher: auto 568 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 569 | alterId: 0 570 | tls: true 571 | skip-cert-verify: true 572 | network: ws 573 | ws-opts: 574 | path: /8cda48b3 575 | headers: 576 | host: IN-92-99.shoptunnel.live 577 | - name: 1.76|美国youtube资源分享师225 578 | type: vmess 579 | server: 103.21.244.249 580 | port: 8443 581 | cipher: auto 582 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 583 | alterId: 0 584 | tls: true 585 | skip-cert-verify: true 586 | network: ws 587 | ws-opts: 588 | path: /8cda48b3 589 | headers: 590 | host: IN-92-99.shoptunnel.live 591 | - name: 1.76|USyoutube资源分享师20 592 | type: vmess 593 | server: 172.64.154.102 594 | port: 443 595 | cipher: auto 596 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 597 | alterId: 0 598 | tls: true 599 | skip-cert-verify: true 600 | network: ws 601 | ws-opts: 602 | path: /dongtaiwang.com 603 | headers: 604 | host: clash6.ssr-free.xyz 605 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMjAiLCJhZGQiOiIxNzIuNjQuMTU0LjEwMiIsInBvcnQiOjQ0MywiaWQiOiI1ZjY0ZmE2NS03YjE0LTQ5YzUtOTU0ZC1hYTE1YzZiZmNhY2QiLCJhaWQiOjAsInNjeSI6Inplcm8iLCJuZXQiOiJ3cyIsImhvc3QiOiJjbGFzaDYuc3NyLWZyZWUueHl6IiwicGF0aCI6Ii9kb25ndGFpd2FuZy5jb20iLCJ0bHMiOiJ0bHMifQ== 606 | - name: 1.71|USyoutube资源分享师149 607 | type: vmess 608 | server: cvywfavasdc.cymlr.xyz 609 | port: 443 610 | cipher: auto 611 | uuid: 23f4bc80-3b0a-4aa3-cbe5-b8be4e8c32fc 612 | alterId: 0 613 | tls: true 614 | skip-cert-verify: true 615 | network: ws 616 | ws-opts: 617 | path: /ksebupo 618 | headers: 619 | host: cvywfavasdc.cymlr.xyz 620 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMTQ5IiwiYWRkIjoiY3Z5d2ZhdmFzZGMuY3ltbHIueHl6IiwicG9ydCI6NDQzLCJpZCI6IjIzZjRiYzgwLTNiMGEtNGFhMy1jYmU1LWI4YmU0ZThjMzJmYyIsImFpZCI6MCwic2N5IjoiemVybyIsIm5ldCI6IndzIiwiaG9zdCI6ImN2eXdmYXZhc2RjLmN5bWxyLnh5eiIsInBhdGgiOiIva3NlYnVwbyIsInRscyI6InRscyJ9 621 | - name: 1.71| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶8 622 | server: 203.30.191.3 623 | port: 443 624 | type: vmess 625 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 626 | alterId: 0 627 | cipher: auto 628 | tls: true 629 | network: ws 630 | ws-opts: 631 | path: /AUIKN8AU 632 | headers: 633 | Host: oplg1.cfcdn2.xyz 634 | - name: 1.71| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶28CDN 635 | server: 66.235.200.21 636 | port: 443 637 | type: vmess 638 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 639 | alterId: 0 640 | cipher: auto 641 | tls: true 642 | network: ws 643 | ws-opts: 644 | path: /5QNROSRV 645 | headers: 646 | Host: oplg1.zhujicn2.com 647 | - name: 1.71| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶24CDN 648 | server: 203.30.190.191 649 | port: 443 650 | type: vmess 651 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 652 | alterId: 0 653 | cipher: auto 654 | tls: true 655 | network: ws 656 | ws-opts: 657 | path: /5QNROSRV 658 | headers: 659 | Host: oplg1.zhujicn2.com 660 | - name: 1.70|法国youtube资源分享师255 661 | type: vmess 662 | server: 173.245.49.55 663 | port: 8443 664 | cipher: auto 665 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 666 | alterId: 0 667 | tls: true 668 | skip-cert-verify: true 669 | network: ws 670 | ws-opts: 671 | path: /8cda48b3 672 | headers: 673 | host: IN-92-99.shoptunnel.live 674 | - name: 1.70|undefinedyoutube资源分享师108 675 | type: vmess 676 | server: cf.fovi.tk 677 | port: 2053 678 | cipher: auto 679 | uuid: bf67437e-6c90-45ca-abc2-c7240a5ce2aa 680 | alterId: 0 681 | tls: true 682 | skip-cert-verify: true 683 | network: ws 684 | ws-opts: 685 | path: /eisasqa 686 | headers: 687 | host: foxpol2.fovi.tk 688 | origin: vmess://eyJ2IjoiMiIsInBzIjoidW5kZWZpbmVkX3lvdXR1YmVA6LWE5rqQ5YiG5Lqr5biIXzEwOCIsImFkZCI6ImNmLmZvdmkudGsiLCJwb3J0IjoyMDUzLCJpZCI6ImJmNjc0MzdlLTZjOTAtNDVjYS1hYmMyLWM3MjQwYTVjZTJhYSIsImFpZCI6MCwic2N5IjoiemVybyIsIm5ldCI6IndzIiwiaG9zdCI6ImZveHBvbDIuZm92aS50ayIsInBhdGgiOiIvZWlzYXNxYSIsInRscyI6InRscyJ9 689 | - name: 1.69| githubcomfreefq 美国CloudFlare公司CDN节点 14 690 | server: six.r33.fun 691 | port: 443 692 | type: vmess 693 | uuid: 9bb0e2e3-c5b9-4606-9cbb-a3c36f2d01d7 694 | alterId: 0 695 | cipher: auto 696 | tls: true 697 | network: ws 698 | ws-path: /racevpn 699 | ws-headers: 700 | Host: fr2-full.privateip.net 701 | - name: 1.67| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶214CDN 702 | server: 190.93.246.3 703 | port: 443 704 | type: vmess 705 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 706 | alterId: 0 707 | cipher: auto 708 | tls: true 709 | network: ws 710 | ws-opts: 711 | path: /5QNROSRV 712 | headers: 713 | Host: oplg1.zhujicn2.com 714 | - name: 1.64| httpsgithubcomAlvin9999newpacwiki clash ip6 洛杉矶16CDN 715 | server: 141.101.114.120 716 | port: 443 717 | type: vmess 718 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 719 | alterId: 0 720 | cipher: auto 721 | tls: true 722 | network: ws 723 | ws-opts: 724 | path: /dongtaiwang.com 725 | headers: 726 | Host: clash6.ssr-free.xyz 727 | - name: 1.63| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶212CDN 728 | server: 190.93.244.3 729 | port: 443 730 | type: vmess 731 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 732 | alterId: 0 733 | cipher: auto 734 | tls: true 735 | network: ws 736 | ws-opts: 737 | path: /5QNROSRV 738 | headers: 739 | Host: oplg1.zhujicn2.com 740 | - name: 1.63| httpsgithubcomAlvin9999newpacwiki clash ip6 洛杉矶13CDN 741 | server: 141.101.115.120 742 | port: 443 743 | type: vmess 744 | uuid: 5f64fa65-7b14-49c5-954d-aa15c6bfcacd 745 | alterId: 0 746 | cipher: auto 747 | tls: true 748 | network: ws 749 | ws-opts: 750 | path: /dongtaiwang.com 751 | headers: 752 | Host: clash6.ssr-free.xyz 753 | - name: 1.63| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶113CDN 754 | server: 190.93.245.2 755 | port: 443 756 | type: vmess 757 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 758 | alterId: 0 759 | cipher: auto 760 | tls: true 761 | network: ws 762 | ws-opts: 763 | path: /ECTCJ0DF 764 | headers: 765 | Host: lg1.trump2023.us 766 | - name: 1.63|US美国6 767 | type: vmess 768 | server: cooing-luxuriant-blue.glitch.me 769 | port: 443 770 | cipher: auto 771 | uuid: 80e7dd59-b1fc-45a0-98be-1478a9af89f2 772 | alterId: 0 773 | tls: true 774 | skip-cert-verify: true 775 | network: ws 776 | ws-opts: 777 | path: /api 778 | - name: 1.62| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶2 779 | server: 203.30.191.10 780 | port: 443 781 | type: vmess 782 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 783 | alterId: 0 784 | cipher: auto 785 | tls: true 786 | network: ws 787 | ws-opts: 788 | path: /AUIKN8AU 789 | headers: 790 | Host: oplg1.cfcdn2.xyz 791 | - name: 1.61| githubcomfreefq 美国Linode数据中心 7 792 | server: vus2.0bad.com 793 | port: 443 794 | type: vmess 795 | uuid: 927094d3-d678-4763-8591-e240d0bcae87 796 | alterId: 0 797 | cipher: auto 798 | tls: true 799 | network: ws 800 | ws-path: /chat 801 | ws-headers: 802 | Host: vus2.0bad.com 803 | - name: 1.59|USyoutube资源分享师208 804 | type: vmess 805 | server: de.woiden.yuji2022.gq 806 | port: 80 807 | cipher: auto 808 | uuid: 4b5e4565-322f-4223-a891-78a84f189726 809 | alterId: 0 810 | tls: false 811 | skip-cert-verify: true 812 | network: ws 813 | ws-opts: 814 | path: /XQ2WCa29jfDMGBcbnQ 815 | headers: 816 | host: de.woiden.yuji2022.gq 817 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMjA4IiwiYWRkIjoiZGUud29pZGVuLnl1amkyMDIyLmdxIiwicG9ydCI6ODAsImlkIjoiNGI1ZTQ1NjUtMzIyZi00MjIzLWE4OTEtNzhhODRmMTg5NzI2IiwiYWlkIjowLCJzY3kiOiJ6ZXJvIiwibmV0Ijoid3MiLCJob3N0IjoiZGUud29pZGVuLnl1amkyMDIyLmdxIiwicGF0aCI6Ii9YUTJXQ2EyOWpmRE1HQmNiblEiLCJ0bHMiOiIifQ== 818 | - name: 1.59| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶15 819 | server: 185.162.228.110 820 | port: 443 821 | type: vmess 822 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 823 | alterId: 0 824 | cipher: auto 825 | tls: true 826 | network: ws 827 | ws-opts: 828 | path: /AUIKN8AU 829 | headers: 830 | Host: oplg1.cfcdn2.xyz 831 | - name: 1.58| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶37CDN 832 | server: 203.24.108.10 833 | port: 443 834 | type: vmess 835 | uuid: 17b2a313-37a0-4945-a8e4-e63375506b4a 836 | alterId: 0 837 | cipher: auto 838 | tls: true 839 | network: ws 840 | ws-opts: 841 | path: /A2DJOPFT 842 | headers: 843 | Host: lg10.cfcdn1.xyz 844 | - name: 1.57| githubcomfreefq 美国Linode数据中心 41 845 | server: vuk1.0bad.com 846 | port: 443 847 | type: vmess 848 | uuid: 927094d3-d678-4763-8591-e240d0bcae87 849 | alterId: 0 850 | cipher: auto 851 | tls: true 852 | network: ws 853 | ws-path: /chat 854 | ws-headers: 855 | Host: vuk1.0bad.com 856 | - name: 1.57| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶15CDN 857 | server: 203.30.189.189 858 | port: 443 859 | type: vmess 860 | uuid: 40d496a6-ceeb-4096-baeb-4cc52b205621 861 | alterId: 0 862 | cipher: auto 863 | tls: true 864 | network: ws 865 | ws-opts: 866 | path: /ECTCJ0DF 867 | headers: 868 | Host: lg1.trump2023.us 869 | - name: 1.53| v2rayfreeeuorg 美国CloudFlare节点 23 870 | server: v2ray.ibgfw.top 871 | port: 2083 872 | type: vmess 873 | uuid: c28ba523-64d3-4059-a9b7-a5f0f74527f7 874 | alterId: 0 875 | cipher: auto 876 | tls: true 877 | network: ws 878 | ws-path: /5rtP40gj/ 879 | ws-headers: 880 | Host: v2ray.ibgfw.top 881 | - name: 1.51| githubcomfreefq 美国CloudFlare节点 15 882 | server: go.aidapp.sbs 883 | port: 443 884 | type: vmess 885 | uuid: 1a4254b4-829c-4bf4-901b-bf8172c301fd 886 | alterId: 0 887 | cipher: auto 888 | tls: true 889 | network: ws 890 | ws-path: /aidapp.sbsvws 891 | ws-headers: 892 | Host: hstr1675889106043.aidapp.sbs 893 | - name: 1.49| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶35CDN 894 | server: 203.30.189.191 895 | port: 443 896 | type: vmess 897 | uuid: 17b2a313-37a0-4945-a8e4-e63375506b4a 898 | alterId: 0 899 | cipher: auto 900 | tls: true 901 | network: ws 902 | ws-opts: 903 | path: /A2DJOPFT 904 | headers: 905 | Host: lg10.cfcdn1.xyz 906 | - name: 1.49| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶39CDN 907 | server: 185.162.228.230 908 | port: 443 909 | type: vmess 910 | uuid: 17b2a313-37a0-4945-a8e4-e63375506b4a 911 | alterId: 0 912 | cipher: auto 913 | tls: true 914 | network: ws 915 | ws-opts: 916 | path: /A2DJOPFT 917 | headers: 918 | Host: lg10.cfcdn1.xyz 919 | - name: 1.49| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶25CDN 920 | server: 203.30.189.190 921 | port: 443 922 | type: vmess 923 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 924 | alterId: 0 925 | cipher: auto 926 | tls: true 927 | network: ws 928 | ws-opts: 929 | path: /5QNROSRV 930 | headers: 931 | Host: oplg1.zhujicn2.com 932 | - type: vmess 933 | name: 1.47|TWyoutube资源分享师156 934 | http-opts: 935 | path: 936 | - / 937 | server: 45.121.51.103 938 | port: '20715' 939 | uuid: f6406b6d-5487-46da-f793-46611269a306 940 | alterId: '0' 941 | cipher: auto 942 | network: http 943 | - name: 1.46| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶38CDN 944 | server: 66.235.200.22 945 | port: 443 946 | type: vmess 947 | uuid: 17b2a313-37a0-4945-a8e4-e63375506b4a 948 | alterId: 0 949 | cipher: auto 950 | tls: true 951 | network: ws 952 | ws-opts: 953 | path: /A2DJOPFT 954 | headers: 955 | Host: lg10.cfcdn1.xyz 956 | - name: 1.41| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶36CDN 957 | server: 203.30.188.190 958 | port: 443 959 | type: vmess 960 | uuid: 17b2a313-37a0-4945-a8e4-e63375506b4a 961 | alterId: 0 962 | cipher: auto 963 | tls: true 964 | network: ws 965 | ws-opts: 966 | path: /A2DJOPFT 967 | headers: 968 | Host: lg10.cfcdn1.xyz 969 | - name: 1.39| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶3 970 | server: 203.30.191.7 971 | port: 443 972 | type: vmess 973 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 974 | alterId: 0 975 | cipher: auto 976 | tls: true 977 | network: ws 978 | ws-opts: 979 | path: /AUIKN8AU 980 | headers: 981 | Host: oplg1.cfcdn2.xyz 982 | - type: vmess 983 | name: 1.34|INyoutube资源分享师226 984 | ws-opts: 985 | path: /chat 986 | headers: 987 | host: vin1.0bad.com 988 | server: vin1.0bad.com 989 | port: '443' 990 | uuid: 927094d3-d678-4763-8591-e240d0bcae87 991 | alterId: '0' 992 | cipher: auto 993 | network: ws 994 | tls: true 995 | - name: 1.30|USyoutube资源分享师159 996 | type: vmess 997 | server: 172.67.135.57 998 | port: 443 999 | cipher: auto 1000 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1001 | alterId: 0 1002 | tls: true 1003 | skip-cert-verify: true 1004 | network: ws 1005 | ws-opts: 1006 | path: /AUIKN8AU 1007 | headers: 1008 | host: oplg1.cfcdn2.xyz 1009 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMTU5IiwiYWRkIjoiMTcyLjY3LjEzNS41NyIsInBvcnQiOjQ0MywiaWQiOiJjNWEyZDdiOC1iZjg0LTRmOTctODU3Ny1iOWI4N2YyYmFhZjciLCJhaWQiOjAsInNjeSI6Inplcm8iLCJuZXQiOiJ3cyIsImhvc3QiOiJvcGxnMS5jZmNkbjIueHl6IiwicGF0aCI6Ii9BVUlLTjhBVSIsInRscyI6InRscyJ9 1010 | - name: 1.28|US美国3 1011 | type: vmess 1012 | server: mncc.cf 1013 | port: 443 1014 | cipher: auto 1015 | uuid: 20e92881-5fb4-4b05-bc77-57929476dc69 1016 | alterId: 0 1017 | tls: true 1018 | skip-cert-verify: true 1019 | network: ws 1020 | ws-opts: 1021 | path: /shirker 1022 | headers: 1023 | host: mncc.cf 1024 | - name: 1.25| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶48 1025 | server: 23.227.38.21 1026 | port: 443 1027 | type: vmess 1028 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1029 | alterId: 0 1030 | cipher: auto 1031 | tls: true 1032 | network: ws 1033 | ws-opts: 1034 | path: /AUIKN8AU 1035 | headers: 1036 | Host: oplg1.cfcdn2.xyz 1037 | - name: 1.23| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶417 1038 | server: 198.41.212.12 1039 | port: 443 1040 | type: vmess 1041 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1042 | alterId: 0 1043 | cipher: auto 1044 | tls: true 1045 | network: ws 1046 | ws-opts: 1047 | path: /AUIKN8AU 1048 | headers: 1049 | Host: oplg1.cfcdn2.xyz 1050 | - name: 1.21|USyoutube资源分享师146 1051 | type: vmess 1052 | server: vde2.0bad.com 1053 | port: 443 1054 | cipher: auto 1055 | uuid: 927094d3-d678-4763-8591-e240d0bcae87 1056 | alterId: 0 1057 | tls: true 1058 | skip-cert-verify: true 1059 | network: ws 1060 | ws-opts: 1061 | path: /chat 1062 | headers: 1063 | host: vde2.0bad.com 1064 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMTQ2IiwiYWRkIjoidmRlMi4wYmFkLmNvbSIsInBvcnQiOjQ0MywiaWQiOiI5MjcwOTRkMy1kNjc4LTQ3NjMtODU5MS1lMjQwZDBiY2FlODciLCJhaWQiOjAsInNjeSI6Inplcm8iLCJuZXQiOiJ3cyIsImhvc3QiOiJ2ZGUyLjBiYWQuY29tIiwicGF0aCI6Ii9jaGF0IiwidGxzIjoidGxzIn0= 1065 | - name: 1.20| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶44 1066 | server: 23.227.38.25 1067 | port: 443 1068 | type: vmess 1069 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1070 | alterId: 0 1071 | cipher: auto 1072 | tls: true 1073 | network: ws 1074 | ws-opts: 1075 | path: /AUIKN8AU 1076 | headers: 1077 | Host: oplg1.cfcdn2.xyz 1078 | - name: 1.19| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶22CDN 1079 | server: 188.114.99.10 1080 | port: 443 1081 | type: vmess 1082 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 1083 | alterId: 0 1084 | cipher: auto 1085 | tls: true 1086 | network: ws 1087 | ws-opts: 1088 | path: /5QNROSRV 1089 | headers: 1090 | Host: oplg1.zhujicn2.com 1091 | - name: 1.19|UShttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 34 1092 | server: vus3.0bad.com 1093 | port: 443 1094 | type: vmess 1095 | uuid: 927094d3-d678-4763-8591-e240d0bcae87 1096 | alterId: 0 1097 | cipher: auto 1098 | tls: true 1099 | skip-cert-verify: true 1100 | network: ws 1101 | ws-opts: 1102 | path: /chat 1103 | headers: 1104 | Host: vus3.0bad.com 1105 | udp: true 1106 | - name: 1.18|US美国httpsawkjcfky 注册体验流媒体机场youtube阿伟科技 1107 | server: 172.67.145.166 1108 | port: 443 1109 | type: vmess 1110 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1111 | alterId: 0 1112 | cipher: auto 1113 | tls: true 1114 | skip-cert-verify: true 1115 | network: ws 1116 | ws-opts: 1117 | path: /AUIKN8AU 1118 | headers: 1119 | Host: oplg1.cfcdn2.xyz 1120 | udp: true 1121 | - name: 1.18| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶27CDN 1122 | server: 203.24.108.9 1123 | port: 443 1124 | type: vmess 1125 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 1126 | alterId: 0 1127 | cipher: auto 1128 | tls: true 1129 | network: ws 1130 | ws-opts: 1131 | path: /5QNROSRV 1132 | headers: 1133 | Host: oplg1.zhujicn2.com 1134 | - name: 1.12|USyoutube资源分享师122 1135 | type: vmess 1136 | server: 172.67.70.22 1137 | port: 443 1138 | cipher: auto 1139 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1140 | alterId: 0 1141 | tls: true 1142 | skip-cert-verify: true 1143 | network: ws 1144 | ws-opts: 1145 | path: /AUIKN8AU 1146 | headers: 1147 | host: oplg1.cfcdn2.xyz 1148 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMTIyIiwiYWRkIjoiMTcyLjY3LjcwLjIyIiwicG9ydCI6NDQzLCJpZCI6ImM1YTJkN2I4LWJmODQtNGY5Ny04NTc3LWI5Yjg3ZjJiYWFmNyIsImFpZCI6MCwic2N5IjoiemVybyIsIm5ldCI6IndzIiwiaG9zdCI6Im9wbGcxLmNmY2RuMi54eXoiLCJwYXRoIjoiL0FVSUtOOEFVIiwidGxzIjoidGxzIn0= 1149 | - name: 1.11| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶45 1150 | server: 23.227.38.24 1151 | port: 443 1152 | type: vmess 1153 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1154 | alterId: 0 1155 | cipher: auto 1156 | tls: true 1157 | network: ws 1158 | ws-opts: 1159 | path: /AUIKN8AU 1160 | headers: 1161 | Host: oplg1.cfcdn2.xyz 1162 | - name: 1.09| githubcomfreefq 法国OVH SAS 21 1163 | server: france.oneusernm.xyz 1164 | port: 443 1165 | type: trojan 1166 | password: d0dab49e1e 1167 | sni: france.oneusernm.xyz 1168 | - name: 1.09|美国youtube资源分享师191 1169 | type: vmess 1170 | server: 103.21.244.226 1171 | port: 8443 1172 | cipher: auto 1173 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 1174 | alterId: 0 1175 | tls: true 1176 | skip-cert-verify: true 1177 | network: ws 1178 | ws-opts: 1179 | path: /8cda48b3 1180 | headers: 1181 | host: IN-92-99.shoptunnel.live 1182 | - name: 1.04| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶23CDN 1183 | server: 23.227.38.39 1184 | port: 443 1185 | type: vmess 1186 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 1187 | alterId: 0 1188 | cipher: auto 1189 | tls: true 1190 | network: ws 1191 | ws-opts: 1192 | path: /5QNROSRV 1193 | headers: 1194 | Host: oplg1.zhujicn2.com 1195 | - name: 1.04| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶34CDN 1196 | server: 203.30.190.192 1197 | port: 443 1198 | type: vmess 1199 | uuid: 17b2a313-37a0-4945-a8e4-e63375506b4a 1200 | alterId: 0 1201 | cipher: auto 1202 | tls: true 1203 | network: ws 1204 | ws-opts: 1205 | path: /A2DJOPFT 1206 | headers: 1207 | Host: lg10.cfcdn1.xyz 1208 | - name: 1.04| githubcomfreefq 美国 4 1209 | server: 152.70.103.195 1210 | port: 37206 1211 | type: vmess 1212 | uuid: ff3fd078-99b5-46b6-8cd5-d48ff271719a 1213 | alterId: 64 1214 | cipher: auto 1215 | tls: false 1216 | network: ws 1217 | ws-path: / 1218 | ws-headers: 1219 | Host: 152.70.103.195 1220 | - name: 1.03|CAhttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 1221 | server: ca-ls03.nb1.fr 1222 | port: 64443 1223 | type: vmess 1224 | uuid: cb7001c7-e495-41ac-b942-f25f60523414 1225 | alterId: 0 1226 | cipher: auto 1227 | tls: true 1228 | skip-cert-verify: true 1229 | network: ws 1230 | ws-opts: 1231 | path: /clientarea 1232 | headers: 1233 | Host: ca-ls03.nb1.fr 1234 | udp: true 1235 | - name: 1.03|美国youtube资源分享师144 1236 | type: vmess 1237 | server: 103.21.244.219 1238 | port: 8443 1239 | cipher: auto 1240 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 1241 | alterId: 0 1242 | tls: true 1243 | skip-cert-verify: true 1244 | network: ws 1245 | ws-opts: 1246 | path: /8cda48b3 1247 | headers: 1248 | host: IN-92-99.shoptunnel.live 1249 | - name: 0.95| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶410 1250 | server: 23.227.38.27 1251 | port: 443 1252 | type: vmess 1253 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1254 | alterId: 0 1255 | cipher: auto 1256 | tls: true 1257 | network: ws 1258 | ws-opts: 1259 | path: /AUIKN8AU 1260 | headers: 1261 | Host: oplg1.cfcdn2.xyz 1262 | - name: 0.93|UShttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 5 1263 | server: 172.67.135.55 1264 | port: 443 1265 | type: vmess 1266 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1267 | alterId: 0 1268 | cipher: auto 1269 | tls: true 1270 | skip-cert-verify: true 1271 | network: ws 1272 | ws-opts: 1273 | path: /AUIKN8AU 1274 | headers: 1275 | Host: oplg1.cfcdn2.xyz 1276 | udp: true 1277 | - name: 0.88| githubcomfreefq 美国 1 1278 | server: 138.2.52.176 1279 | port: 24429 1280 | type: vmess 1281 | uuid: 8d5ca59e-8e3e-4a10-e023-53cfcd87a72b 1282 | alterId: 0 1283 | cipher: auto 1284 | tls: false 1285 | network: ws 1286 | ws-path: / 1287 | ws-headers: 1288 | Host: 138.2.52.176 1289 | - name: 0.87|USyoutube资源分享师136 1290 | type: vmess 1291 | server: 172.67.203.162 1292 | port: 443 1293 | cipher: auto 1294 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1295 | alterId: 0 1296 | tls: true 1297 | skip-cert-verify: true 1298 | network: ws 1299 | ws-opts: 1300 | path: /AUIKN8AU 1301 | headers: 1302 | host: oplg1.cfcdn2.xyz 1303 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMTM2IiwiYWRkIjoiMTcyLjY3LjIwMy4xNjIiLCJwb3J0Ijo0NDMsImlkIjoiYzVhMmQ3YjgtYmY4NC00Zjk3LTg1NzctYjliODdmMmJhYWY3IiwiYWlkIjowLCJzY3kiOiJ6ZXJvIiwibmV0Ijoid3MiLCJob3N0Ijoib3BsZzEuY2ZjZG4yLnh5eiIsInBhdGgiOiIvQVVJS044QVUiLCJ0bHMiOiJ0bHMifQ== 1304 | - name: 0.87| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶6 1305 | server: 203.30.191.5 1306 | port: 443 1307 | type: vmess 1308 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1309 | alterId: 0 1310 | cipher: auto 1311 | tls: true 1312 | network: ws 1313 | ws-opts: 1314 | path: /AUIKN8AU 1315 | headers: 1316 | Host: oplg1.cfcdn2.xyz 1317 | - name: 0.83|JPhttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 10 1318 | server: ming2.kiwireich.com 1319 | port: 443 1320 | type: vmess 1321 | uuid: 18e5f40f-bda6-4c15-9334-e87cda6047af 1322 | alterId: 0 1323 | cipher: auto 1324 | tls: true 1325 | skip-cert-verify: true 1326 | network: ws 1327 | ws-opts: 1328 | path: /ray 1329 | headers: 1330 | Host: ming2.kiwireich.com 1331 | udp: true 1332 | - name: 0.79|USyoutube资源分享师56 1333 | server: 172.67.164.125 1334 | port: 443 1335 | type: vmess 1336 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1337 | alterId: 0 1338 | cipher: auto 1339 | tls: true 1340 | skip-cert-verify: true 1341 | network: ws 1342 | ws-path: /AUIKN8AU 1343 | ws-headers: 1344 | Host: oplg1.cfcdn2.xyz 1345 | udp: true 1346 | - name: 0.78| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶21CDN 1347 | server: 203.30.191.192 1348 | port: 443 1349 | type: vmess 1350 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 1351 | alterId: 0 1352 | cipher: auto 1353 | tls: true 1354 | network: ws 1355 | ws-opts: 1356 | path: /5QNROSRV 1357 | headers: 1358 | Host: oplg1.zhujicn2.com 1359 | - name: 0.73|USyoutube资源分享师73 1360 | type: vmess 1361 | server: new3.hucloud-dns.xyz 1362 | port: 443 1363 | cipher: auto 1364 | uuid: 2926bbcf-eef0-4d0d-d8a7-400e417608aa 1365 | alterId: 0 1366 | tls: true 1367 | skip-cert-verify: true 1368 | network: ws 1369 | ws-opts: 1370 | path: / 1371 | headers: 1372 | host: new3.hucloud-dns.xyz 1373 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfNzMiLCJhZGQiOiJuZXczLmh1Y2xvdWQtZG5zLnh5eiIsInBvcnQiOjQ0MywiaWQiOiIyOTI2YmJjZi1lZWYwLTRkMGQtZDhhNy00MDBlNDE3NjA4YWEiLCJhaWQiOjAsInNjeSI6Inplcm8iLCJuZXQiOiJ3cyIsImhvc3QiOiJuZXczLmh1Y2xvdWQtZG5zLnh5eiIsInBhdGgiOiIvIiwidGxzIjoidGxzIn0= 1374 | - name: 0.72| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶33CDN 1375 | server: 23.227.38.40 1376 | port: 443 1377 | type: vmess 1378 | uuid: 17b2a313-37a0-4945-a8e4-e63375506b4a 1379 | alterId: 0 1380 | cipher: auto 1381 | tls: true 1382 | network: ws 1383 | ws-opts: 1384 | path: /A2DJOPFT 1385 | headers: 1386 | Host: lg10.cfcdn1.xyz 1387 | - name: 0.69|美国youtube资源分享师109 1388 | type: vmess 1389 | server: 172.64.156.232 1390 | port: 8443 1391 | cipher: auto 1392 | uuid: a6a37e04-5e81-44c9-be53-baa3ff46eb8b 1393 | alterId: 0 1394 | tls: true 1395 | skip-cert-verify: true 1396 | network: ws 1397 | ws-opts: 1398 | path: /8cda48b3 1399 | headers: 1400 | host: IN-92-99.shoptunnel.live 1401 | - name: 0.69| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶26CDN 1402 | server: 203.30.188.189 1403 | port: 443 1404 | type: vmess 1405 | uuid: 56a2188b-2ab7-402c-b9b8-34847fdf0958 1406 | alterId: 0 1407 | cipher: auto 1408 | tls: true 1409 | network: ws 1410 | ws-opts: 1411 | path: /5QNROSRV 1412 | headers: 1413 | Host: oplg1.zhujicn2.com 1414 | - name: 0.62|USyoutube资源分享师120 1415 | type: vmess 1416 | server: ovh-3.555530.xyz 1417 | port: 80 1418 | cipher: auto 1419 | uuid: 000fe881-b655-4212-b804-b00f9970d5aa 1420 | alterId: 0 1421 | tls: false 1422 | skip-cert-verify: true 1423 | network: ws 1424 | ws-opts: 1425 | path: /happy 1426 | headers: 1427 | host: ovh-3.555530.xyz 1428 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMTIwIiwiYWRkIjoib3ZoLTMuNTU1NTMwLnh5eiIsInBvcnQiOjgwLCJpZCI6IjAwMGZlODgxLWI2NTUtNDIxMi1iODA0LWIwMGY5OTcwZDVhYSIsImFpZCI6MCwic2N5IjoiemVybyIsIm5ldCI6IndzIiwiaG9zdCI6Im92aC0zLjU1NTUzMC54eXoiLCJwYXRoIjoiL2hhcHB5IiwidGxzIjoiIn0= 1429 | - name: 0.60| githubcomfreefq 美国CloudFlare节点 18 1430 | server: 172.66.44.197 1431 | port: 443 1432 | type: vmess 1433 | uuid: fa4cb529-3ac9-4268-bb04-ed4253813508 1434 | alterId: 0 1435 | cipher: auto 1436 | tls: true 1437 | network: ws 1438 | ws-path: /mR17oBKzZ7 1439 | ws-headers: 1440 | Host: d.pgypgykmoljklj.xyz 1441 | - name: 0.58|SSRSUBV51付费推荐suoytssrsub 1442 | server: cf-lt.sharecentre.online 1443 | port: 80 1444 | type: vmess 1445 | uuid: 6c46e17d-4f90-4fda-8484-98f192524bc7 1446 | alterId: 0 1447 | cipher: auto 1448 | tls: false 1449 | network: ws 1450 | ws-path: /api/v3/download.getFile 1451 | ws-headers: 1452 | Host: ssrsub.v10.asuka.buzz 1453 | - name: 0.57| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶414 1454 | server: 203.24.108.8 1455 | port: 443 1456 | type: vmess 1457 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1458 | alterId: 0 1459 | cipher: auto 1460 | tls: true 1461 | network: ws 1462 | ws-opts: 1463 | path: /AUIKN8AU 1464 | headers: 1465 | Host: oplg1.cfcdn2.xyz 1466 | - name: 0.57|v2rayfreeeuorg 欧盟 7 1467 | server: de1.trojan-lite.com 1468 | port: 443 1469 | type: trojan 1470 | password: bs6KJkPBW9MP74uHEa 1471 | sni: de1.trojan-lite.com 1472 | - name: 0.57|UShttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 7 1473 | server: 172.67.201.14 1474 | port: 443 1475 | type: vmess 1476 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1477 | alterId: 0 1478 | cipher: auto 1479 | tls: true 1480 | skip-cert-verify: true 1481 | network: ws 1482 | ws-opts: 1483 | path: /AUIKN8AU 1484 | headers: 1485 | Host: oplg1.cfcdn2.xyz 1486 | udp: true 1487 | - name: 0.57|UShttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 21 1488 | server: 172.67.207.209 1489 | port: 2082 1490 | type: vmess 1491 | uuid: 082122a2-8479-4089-82f0-f32ba5fc5426 1492 | alterId: 0 1493 | cipher: auto 1494 | tls: false 1495 | skip-cert-verify: true 1496 | network: ws 1497 | ws-opts: 1498 | path: /bb 1499 | headers: 1500 | Host: hao.huaqian.icu 1501 | udp: true 1502 | - name: 0.56| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶411 1503 | server: 23.227.38.26 1504 | port: 443 1505 | type: vmess 1506 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1507 | alterId: 0 1508 | cipher: auto 1509 | tls: true 1510 | network: ws 1511 | ws-opts: 1512 | path: /AUIKN8AU 1513 | headers: 1514 | Host: oplg1.cfcdn2.xyz 1515 | - name: 0.55| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶1 1516 | server: 203.30.188.121 1517 | port: 443 1518 | type: vmess 1519 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1520 | alterId: 0 1521 | cipher: auto 1522 | tls: true 1523 | network: ws 1524 | ws-opts: 1525 | path: /AUIKN8AU 1526 | headers: 1527 | Host: oplg1.cfcdn2.xyz 1528 | - name: 0.55|JPhttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 13 1529 | server: vjp1.0bad.com 1530 | port: 443 1531 | type: vmess 1532 | uuid: 927094d3-d678-4763-8591-e240d0bcae87 1533 | alterId: 0 1534 | cipher: auto 1535 | tls: true 1536 | skip-cert-verify: true 1537 | network: ws 1538 | ws-opts: 1539 | path: /chat 1540 | headers: 1541 | Host: vjp1.0bad.com 1542 | udp: true 1543 | - name: 0.54| httpsgithubcomAlvin9999newpacwiki clash ip3 洛杉矶9 1544 | server: 203.30.191.2 1545 | port: 443 1546 | type: vmess 1547 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1548 | alterId: 0 1549 | cipher: auto 1550 | tls: true 1551 | network: ws 1552 | ws-opts: 1553 | path: /AUIKN8AU 1554 | headers: 1555 | Host: oplg1.cfcdn2.xyz 1556 | - name: 0.54| githubcomfreefq 俄罗斯莫斯科JustHost 17 1557 | server: v12a.toddns.tk 1558 | port: 80 1559 | type: vmess 1560 | uuid: a25881f3-967f-3265-bc7f-9e66857b016b 1561 | alterId: 0 1562 | cipher: auto 1563 | tls: false 1564 | network: ws 1565 | ws-path: /fr-111unlimitxxx 1566 | ws-headers: 1567 | Host: v12a.toddns.tk 1568 | - name: 0.51| httpsgithubcomAlvin9999newpacwiki clash ip1 洛杉矶415 1569 | server: 23.227.38.38 1570 | port: 443 1571 | type: vmess 1572 | uuid: c5a2d7b8-bf84-4f97-8577-b9b87f2baaf7 1573 | alterId: 0 1574 | cipher: auto 1575 | tls: true 1576 | network: ws 1577 | ws-opts: 1578 | path: /AUIKN8AU 1579 | headers: 1580 | Host: oplg1.cfcdn2.xyz 1581 | - name: 0.51|UShttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 49 1582 | server: 172.67.178.127 1583 | port: 443 1584 | type: vmess 1585 | uuid: 26b5fbcf-d199-407e-e8bf-96d7489d247d 1586 | alterId: 0 1587 | cipher: auto 1588 | tls: true 1589 | skip-cert-verify: true 1590 | network: ws 1591 | ws-opts: 1592 | path: /123 1593 | headers: 1594 | Host: en1.wanwushenghua.me 1595 | udp: true 1596 | - name: 0.51|FRhttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 5 1597 | server: 141.193.213.21 1598 | port: 443 1599 | type: vmess 1600 | uuid: 2b214122-1906-428a-bbb7-a039cbb7cd5c 1601 | alterId: 0 1602 | cipher: auto 1603 | tls: true 1604 | skip-cert-verify: true 1605 | network: ws 1606 | ws-opts: 1607 | path: /9JZFDTKE 1608 | headers: 1609 | Host: fr1.trump2023.org 1610 | udp: true 1611 | - name: 0.50|httpsawkjcfky 注册体验流媒体机场youtube阿伟科技8 1612 | server: sg-am3.eqsunshine.com 1613 | port: 32001 1614 | type: ssr 1615 | cipher: aes-256-cfb 1616 | password: 3g0dHlKME 1617 | protocol: origin 1618 | obfs: tls1.2_ticket_auth 1619 | protocol-param: '' 1620 | obfs-param: '' 1621 | udp: true 1622 | - name: 0.49|UShttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 1623 | server: khvwycch.cymlr.xyz 1624 | port: 443 1625 | type: vmess 1626 | uuid: db39ef95-4245-418a-84c0-14c202f29bc6 1627 | alterId: 0 1628 | cipher: auto 1629 | tls: true 1630 | skip-cert-verify: true 1631 | network: ws 1632 | ws-opts: 1633 | path: /videnset 1634 | headers: 1635 | Host: khvwycch.cymlr.xyz 1636 | udp: true 1637 | - name: 0.49|USyoutube资源分享师158 1638 | type: vmess 1639 | server: vde1.0bad.com 1640 | port: 443 1641 | cipher: auto 1642 | uuid: 927094d3-d678-4763-8591-e240d0bcae87 1643 | alterId: 0 1644 | tls: true 1645 | skip-cert-verify: true 1646 | network: ws 1647 | ws-opts: 1648 | path: /chat 1649 | headers: 1650 | host: vde1.0bad.com 1651 | origin: vmess://eyJ2IjoiMiIsInBzIjoiVVNfeW91dHViZUDotYTmupDliIbkuqvluIhfMTU4IiwiYWRkIjoidmRlMS4wYmFkLmNvbSIsInBvcnQiOjQ0MywiaWQiOiI5MjcwOTRkMy1kNjc4LTQ3NjMtODU5MS1lMjQwZDBiY2FlODciLCJhaWQiOjAsInNjeSI6Inplcm8iLCJuZXQiOiJ3cyIsImhvc3QiOiJ2ZGUxLjBiYWQuY29tIiwicGF0aCI6Ii9jaGF0IiwidGxzIjoidGxzIn0= 1652 | - name: 0.46|KR韩国2 1653 | type: vmess 1654 | server: 152.69.230.170 1655 | port: 80 1656 | cipher: auto 1657 | uuid: 6aa24ded-5f15-48c7-8cba-3e2a159d6b77 1658 | alterId: 0 1659 | tls: false 1660 | skip-cert-verify: true 1661 | network: ws 1662 | ws-opts: 1663 | path: / 1664 | - name: 0.37|JPhttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 21 1665 | server: 172.67.132.15 1666 | port: 443 1667 | type: vmess 1668 | uuid: 18e5f40f-bda6-4c15-9334-e87cda6047af 1669 | alterId: 0 1670 | cipher: auto 1671 | tls: true 1672 | skip-cert-verify: true 1673 | network: ws 1674 | ws-opts: 1675 | path: /ray 1676 | headers: 1677 | Host: ming2.kiwireich.com 1678 | udp: true 1679 | - name: 0.35|SG新加坡2 1680 | type: vmess 1681 | server: 174.138.25.187 1682 | port: 8880 1683 | cipher: auto 1684 | uuid: a5c804aa-8a4d-4fd2-97a1-4f0cc1384953 1685 | alterId: 0 1686 | tls: false 1687 | skip-cert-verify: true 1688 | network: ws 1689 | ws-opts: 1690 | path: /hkaa0 1691 | - name: 0.33| githubcomfreefq 美国CloudFlare公司CDN节点 3 1692 | server: get.tech 1693 | port: 80 1694 | type: vmess 1695 | uuid: 8763e625-929a-43da-b7bf-7e7bc2e57615 1696 | alterId: 0 1697 | cipher: auto 1698 | tls: false 1699 | network: ws 1700 | ws-path: /shared 1701 | ws-headers: 1702 | Host: lv.awsbest.com 1703 | - name: 0.32|GByoutube资源分享师68 1704 | type: vmess 1705 | server: gb-ls03.nb1.fr 1706 | port: 64443 1707 | cipher: auto 1708 | uuid: cb7001c7-e495-41ac-b942-f25f60523414 1709 | alterId: 0 1710 | tls: true 1711 | skip-cert-verify: true 1712 | network: ws 1713 | ws-opts: 1714 | path: /clientarea 1715 | origin: vmess://eyJ2IjoiMiIsInBzIjoiR0JfeW91dHViZUDotYTmupDliIbkuqvluIhfNjgiLCJhZGQiOiJnYi1sczAzLm5iMS5mciIsInBvcnQiOjY0NDQzLCJpZCI6ImNiNzAwMWM3LWU0OTUtNDFhYy1iOTQyLWYyNWY2MDUyMzQxNCIsImFpZCI6MCwic2N5IjoiemVybyIsIm5ldCI6IndzIiwicGF0aCI6Ii9jbGllbnRhcmVhIiwidGxzIjoidGxzIn0= 1716 | - name: 0.26| v2rayfreeeuorg 法国OVH机房SAS硬盘BGP主机 29 1717 | server: upload.soft98.download 1718 | port: 443 1719 | type: trojan 1720 | password: a2c8194b-fcfd-4c39-a6bd-31ea9f4ea671 1721 | sni: upload.soft98.download 1722 | - type: vmess 1723 | name: 0.18|USyoutube资源分享师82 1724 | ws-opts: 1725 | path: /shirker 1726 | headers: 1727 | host: sg-gcore.sharecentre.online 1728 | server: 172.67.205.70 1729 | port: '443' 1730 | uuid: 20e92881-5fb4-4b05-bc77-57929476dc69 1731 | alterId: '0' 1732 | cipher: auto 1733 | network: ws 1734 | tls: true 1735 | - name: 0.17|httpsawkjcfky 注册体验流媒体机场youtube阿伟科技3 1736 | server: z0115.security-cloudfront-cdn.com 1737 | port: 42833 1738 | type: ssr 1739 | cipher: aes-256-cfb 1740 | password: YpX2opBbrfqJzzMs 1741 | protocol: origin 1742 | obfs: http_simple 1743 | protocol-param: '' 1744 | obfs-param: '' 1745 | udp: true 1746 | - name: 0.15|FRhttpsawkjcfky 注册体验流媒体机场youtube阿伟科技 14 1747 | server: 172.67.77.95 1748 | port: 443 1749 | type: vmess 1750 | uuid: 1bff15f1-a71d-4f07-b8bf-9471708eff8b 1751 | alterId: 0 1752 | cipher: auto 1753 | tls: true 1754 | skip-cert-verify: true 1755 | network: ws 1756 | ws-opts: 1757 | path: /fthe4gsefgtdu 1758 | headers: 1759 | Host: nat.998808.xyz 1760 | udp: true 1761 | -------------------------------------------------------------------------------- /localserver/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shadowsocks-server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "shadowsocks-server", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "cors": "^2.8.5", 13 | "express": "^4.18.1", 14 | "js-base64": "^3.7.2", 15 | "needle": "^3.1.0", 16 | "nodemon": "^2.0.20", 17 | "yarn": "^1.22.19" 18 | } 19 | }, 20 | "node_modules/abbrev": { 21 | "version": "1.1.1", 22 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 23 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 24 | }, 25 | "node_modules/accepts": { 26 | "version": "1.3.8", 27 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 28 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 29 | "dependencies": { 30 | "mime-types": "~2.1.34", 31 | "negotiator": "0.6.3" 32 | }, 33 | "engines": { 34 | "node": ">= 0.6" 35 | } 36 | }, 37 | "node_modules/anymatch": { 38 | "version": "3.1.2", 39 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 40 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 41 | "dependencies": { 42 | "normalize-path": "^3.0.0", 43 | "picomatch": "^2.0.4" 44 | }, 45 | "engines": { 46 | "node": ">= 8" 47 | } 48 | }, 49 | "node_modules/array-flatten": { 50 | "version": "1.1.1", 51 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 52 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 53 | }, 54 | "node_modules/balanced-match": { 55 | "version": "1.0.2", 56 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 57 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 58 | }, 59 | "node_modules/binary-extensions": { 60 | "version": "2.2.0", 61 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 62 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 63 | "engines": { 64 | "node": ">=8" 65 | } 66 | }, 67 | "node_modules/body-parser": { 68 | "version": "1.20.0", 69 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", 70 | "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", 71 | "dependencies": { 72 | "bytes": "3.1.2", 73 | "content-type": "~1.0.4", 74 | "debug": "2.6.9", 75 | "depd": "2.0.0", 76 | "destroy": "1.2.0", 77 | "http-errors": "2.0.0", 78 | "iconv-lite": "0.4.24", 79 | "on-finished": "2.4.1", 80 | "qs": "6.10.3", 81 | "raw-body": "2.5.1", 82 | "type-is": "~1.6.18", 83 | "unpipe": "1.0.0" 84 | }, 85 | "engines": { 86 | "node": ">= 0.8", 87 | "npm": "1.2.8000 || >= 1.4.16" 88 | } 89 | }, 90 | "node_modules/brace-expansion": { 91 | "version": "1.1.11", 92 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 93 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 94 | "dependencies": { 95 | "balanced-match": "^1.0.0", 96 | "concat-map": "0.0.1" 97 | } 98 | }, 99 | "node_modules/braces": { 100 | "version": "3.0.2", 101 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 102 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 103 | "dependencies": { 104 | "fill-range": "^7.0.1" 105 | }, 106 | "engines": { 107 | "node": ">=8" 108 | } 109 | }, 110 | "node_modules/bytes": { 111 | "version": "3.1.2", 112 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 113 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 114 | "engines": { 115 | "node": ">= 0.8" 116 | } 117 | }, 118 | "node_modules/call-bind": { 119 | "version": "1.0.2", 120 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 121 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 122 | "dependencies": { 123 | "function-bind": "^1.1.1", 124 | "get-intrinsic": "^1.0.2" 125 | }, 126 | "funding": { 127 | "url": "https://github.com/sponsors/ljharb" 128 | } 129 | }, 130 | "node_modules/chokidar": { 131 | "version": "3.5.3", 132 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 133 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 134 | "funding": [ 135 | { 136 | "type": "individual", 137 | "url": "https://paulmillr.com/funding/" 138 | } 139 | ], 140 | "dependencies": { 141 | "anymatch": "~3.1.2", 142 | "braces": "~3.0.2", 143 | "glob-parent": "~5.1.2", 144 | "is-binary-path": "~2.1.0", 145 | "is-glob": "~4.0.1", 146 | "normalize-path": "~3.0.0", 147 | "readdirp": "~3.6.0" 148 | }, 149 | "engines": { 150 | "node": ">= 8.10.0" 151 | }, 152 | "optionalDependencies": { 153 | "fsevents": "~2.3.2" 154 | } 155 | }, 156 | "node_modules/concat-map": { 157 | "version": "0.0.1", 158 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 159 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 160 | }, 161 | "node_modules/content-disposition": { 162 | "version": "0.5.4", 163 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 164 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 165 | "dependencies": { 166 | "safe-buffer": "5.2.1" 167 | }, 168 | "engines": { 169 | "node": ">= 0.6" 170 | } 171 | }, 172 | "node_modules/content-type": { 173 | "version": "1.0.4", 174 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 175 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 176 | "engines": { 177 | "node": ">= 0.6" 178 | } 179 | }, 180 | "node_modules/cookie": { 181 | "version": "0.5.0", 182 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 183 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 184 | "engines": { 185 | "node": ">= 0.6" 186 | } 187 | }, 188 | "node_modules/cookie-signature": { 189 | "version": "1.0.6", 190 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 191 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 192 | }, 193 | "node_modules/cors": { 194 | "version": "2.8.5", 195 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 196 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 197 | "dependencies": { 198 | "object-assign": "^4", 199 | "vary": "^1" 200 | }, 201 | "engines": { 202 | "node": ">= 0.10" 203 | } 204 | }, 205 | "node_modules/debug": { 206 | "version": "2.6.9", 207 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 208 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 209 | "dependencies": { 210 | "ms": "2.0.0" 211 | } 212 | }, 213 | "node_modules/depd": { 214 | "version": "2.0.0", 215 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 216 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 217 | "engines": { 218 | "node": ">= 0.8" 219 | } 220 | }, 221 | "node_modules/destroy": { 222 | "version": "1.2.0", 223 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 224 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 225 | "engines": { 226 | "node": ">= 0.8", 227 | "npm": "1.2.8000 || >= 1.4.16" 228 | } 229 | }, 230 | "node_modules/ee-first": { 231 | "version": "1.1.1", 232 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 233 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 234 | }, 235 | "node_modules/encodeurl": { 236 | "version": "1.0.2", 237 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 238 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 239 | "engines": { 240 | "node": ">= 0.8" 241 | } 242 | }, 243 | "node_modules/escape-html": { 244 | "version": "1.0.3", 245 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 246 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 247 | }, 248 | "node_modules/etag": { 249 | "version": "1.8.1", 250 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 251 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 252 | "engines": { 253 | "node": ">= 0.6" 254 | } 255 | }, 256 | "node_modules/express": { 257 | "version": "4.18.1", 258 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", 259 | "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", 260 | "dependencies": { 261 | "accepts": "~1.3.8", 262 | "array-flatten": "1.1.1", 263 | "body-parser": "1.20.0", 264 | "content-disposition": "0.5.4", 265 | "content-type": "~1.0.4", 266 | "cookie": "0.5.0", 267 | "cookie-signature": "1.0.6", 268 | "debug": "2.6.9", 269 | "depd": "2.0.0", 270 | "encodeurl": "~1.0.2", 271 | "escape-html": "~1.0.3", 272 | "etag": "~1.8.1", 273 | "finalhandler": "1.2.0", 274 | "fresh": "0.5.2", 275 | "http-errors": "2.0.0", 276 | "merge-descriptors": "1.0.1", 277 | "methods": "~1.1.2", 278 | "on-finished": "2.4.1", 279 | "parseurl": "~1.3.3", 280 | "path-to-regexp": "0.1.7", 281 | "proxy-addr": "~2.0.7", 282 | "qs": "6.10.3", 283 | "range-parser": "~1.2.1", 284 | "safe-buffer": "5.2.1", 285 | "send": "0.18.0", 286 | "serve-static": "1.15.0", 287 | "setprototypeof": "1.2.0", 288 | "statuses": "2.0.1", 289 | "type-is": "~1.6.18", 290 | "utils-merge": "1.0.1", 291 | "vary": "~1.1.2" 292 | }, 293 | "engines": { 294 | "node": ">= 0.10.0" 295 | } 296 | }, 297 | "node_modules/fill-range": { 298 | "version": "7.0.1", 299 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 300 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 301 | "dependencies": { 302 | "to-regex-range": "^5.0.1" 303 | }, 304 | "engines": { 305 | "node": ">=8" 306 | } 307 | }, 308 | "node_modules/finalhandler": { 309 | "version": "1.2.0", 310 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 311 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 312 | "dependencies": { 313 | "debug": "2.6.9", 314 | "encodeurl": "~1.0.2", 315 | "escape-html": "~1.0.3", 316 | "on-finished": "2.4.1", 317 | "parseurl": "~1.3.3", 318 | "statuses": "2.0.1", 319 | "unpipe": "~1.0.0" 320 | }, 321 | "engines": { 322 | "node": ">= 0.8" 323 | } 324 | }, 325 | "node_modules/forwarded": { 326 | "version": "0.2.0", 327 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 328 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 329 | "engines": { 330 | "node": ">= 0.6" 331 | } 332 | }, 333 | "node_modules/fresh": { 334 | "version": "0.5.2", 335 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 336 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 337 | "engines": { 338 | "node": ">= 0.6" 339 | } 340 | }, 341 | "node_modules/fsevents": { 342 | "version": "2.3.2", 343 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 344 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 345 | "hasInstallScript": true, 346 | "optional": true, 347 | "os": [ 348 | "darwin" 349 | ], 350 | "engines": { 351 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 352 | } 353 | }, 354 | "node_modules/function-bind": { 355 | "version": "1.1.1", 356 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 357 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 358 | }, 359 | "node_modules/get-intrinsic": { 360 | "version": "1.1.3", 361 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 362 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 363 | "dependencies": { 364 | "function-bind": "^1.1.1", 365 | "has": "^1.0.3", 366 | "has-symbols": "^1.0.3" 367 | }, 368 | "funding": { 369 | "url": "https://github.com/sponsors/ljharb" 370 | } 371 | }, 372 | "node_modules/glob-parent": { 373 | "version": "5.1.2", 374 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 375 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 376 | "dependencies": { 377 | "is-glob": "^4.0.1" 378 | }, 379 | "engines": { 380 | "node": ">= 6" 381 | } 382 | }, 383 | "node_modules/has": { 384 | "version": "1.0.3", 385 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 386 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 387 | "dependencies": { 388 | "function-bind": "^1.1.1" 389 | }, 390 | "engines": { 391 | "node": ">= 0.4.0" 392 | } 393 | }, 394 | "node_modules/has-flag": { 395 | "version": "3.0.0", 396 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 397 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 398 | "engines": { 399 | "node": ">=4" 400 | } 401 | }, 402 | "node_modules/has-symbols": { 403 | "version": "1.0.3", 404 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 405 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 406 | "engines": { 407 | "node": ">= 0.4" 408 | }, 409 | "funding": { 410 | "url": "https://github.com/sponsors/ljharb" 411 | } 412 | }, 413 | "node_modules/http-errors": { 414 | "version": "2.0.0", 415 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 416 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 417 | "dependencies": { 418 | "depd": "2.0.0", 419 | "inherits": "2.0.4", 420 | "setprototypeof": "1.2.0", 421 | "statuses": "2.0.1", 422 | "toidentifier": "1.0.1" 423 | }, 424 | "engines": { 425 | "node": ">= 0.8" 426 | } 427 | }, 428 | "node_modules/iconv-lite": { 429 | "version": "0.4.24", 430 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 431 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 432 | "dependencies": { 433 | "safer-buffer": ">= 2.1.2 < 3" 434 | }, 435 | "engines": { 436 | "node": ">=0.10.0" 437 | } 438 | }, 439 | "node_modules/ignore-by-default": { 440 | "version": "1.0.1", 441 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 442 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" 443 | }, 444 | "node_modules/inherits": { 445 | "version": "2.0.4", 446 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 447 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 448 | }, 449 | "node_modules/ipaddr.js": { 450 | "version": "1.9.1", 451 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 452 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 453 | "engines": { 454 | "node": ">= 0.10" 455 | } 456 | }, 457 | "node_modules/is-binary-path": { 458 | "version": "2.1.0", 459 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 460 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 461 | "dependencies": { 462 | "binary-extensions": "^2.0.0" 463 | }, 464 | "engines": { 465 | "node": ">=8" 466 | } 467 | }, 468 | "node_modules/is-extglob": { 469 | "version": "2.1.1", 470 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 471 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 472 | "engines": { 473 | "node": ">=0.10.0" 474 | } 475 | }, 476 | "node_modules/is-glob": { 477 | "version": "4.0.3", 478 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 479 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 480 | "dependencies": { 481 | "is-extglob": "^2.1.1" 482 | }, 483 | "engines": { 484 | "node": ">=0.10.0" 485 | } 486 | }, 487 | "node_modules/is-number": { 488 | "version": "7.0.0", 489 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 490 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 491 | "engines": { 492 | "node": ">=0.12.0" 493 | } 494 | }, 495 | "node_modules/js-base64": { 496 | "version": "3.7.2", 497 | "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", 498 | "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" 499 | }, 500 | "node_modules/media-typer": { 501 | "version": "0.3.0", 502 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 503 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 504 | "engines": { 505 | "node": ">= 0.6" 506 | } 507 | }, 508 | "node_modules/merge-descriptors": { 509 | "version": "1.0.1", 510 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 511 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 512 | }, 513 | "node_modules/methods": { 514 | "version": "1.1.2", 515 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 516 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 517 | "engines": { 518 | "node": ">= 0.6" 519 | } 520 | }, 521 | "node_modules/mime": { 522 | "version": "1.6.0", 523 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 524 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 525 | "bin": { 526 | "mime": "cli.js" 527 | }, 528 | "engines": { 529 | "node": ">=4" 530 | } 531 | }, 532 | "node_modules/mime-db": { 533 | "version": "1.52.0", 534 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 535 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 536 | "engines": { 537 | "node": ">= 0.6" 538 | } 539 | }, 540 | "node_modules/mime-types": { 541 | "version": "2.1.35", 542 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 543 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 544 | "dependencies": { 545 | "mime-db": "1.52.0" 546 | }, 547 | "engines": { 548 | "node": ">= 0.6" 549 | } 550 | }, 551 | "node_modules/minimatch": { 552 | "version": "3.1.2", 553 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 554 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 555 | "dependencies": { 556 | "brace-expansion": "^1.1.7" 557 | }, 558 | "engines": { 559 | "node": "*" 560 | } 561 | }, 562 | "node_modules/ms": { 563 | "version": "2.0.0", 564 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 565 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 566 | }, 567 | "node_modules/needle": { 568 | "version": "3.1.0", 569 | "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", 570 | "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", 571 | "dependencies": { 572 | "debug": "^3.2.6", 573 | "iconv-lite": "^0.6.3", 574 | "sax": "^1.2.4" 575 | }, 576 | "bin": { 577 | "needle": "bin/needle" 578 | }, 579 | "engines": { 580 | "node": ">= 4.4.x" 581 | } 582 | }, 583 | "node_modules/needle/node_modules/debug": { 584 | "version": "3.2.7", 585 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 586 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 587 | "dependencies": { 588 | "ms": "^2.1.1" 589 | } 590 | }, 591 | "node_modules/needle/node_modules/iconv-lite": { 592 | "version": "0.6.3", 593 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 594 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 595 | "dependencies": { 596 | "safer-buffer": ">= 2.1.2 < 3.0.0" 597 | }, 598 | "engines": { 599 | "node": ">=0.10.0" 600 | } 601 | }, 602 | "node_modules/needle/node_modules/ms": { 603 | "version": "2.1.3", 604 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 605 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 606 | }, 607 | "node_modules/negotiator": { 608 | "version": "0.6.3", 609 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 610 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 611 | "engines": { 612 | "node": ">= 0.6" 613 | } 614 | }, 615 | "node_modules/nodemon": { 616 | "version": "2.0.20", 617 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", 618 | "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", 619 | "dependencies": { 620 | "chokidar": "^3.5.2", 621 | "debug": "^3.2.7", 622 | "ignore-by-default": "^1.0.1", 623 | "minimatch": "^3.1.2", 624 | "pstree.remy": "^1.1.8", 625 | "semver": "^5.7.1", 626 | "simple-update-notifier": "^1.0.7", 627 | "supports-color": "^5.5.0", 628 | "touch": "^3.1.0", 629 | "undefsafe": "^2.0.5" 630 | }, 631 | "bin": { 632 | "nodemon": "bin/nodemon.js" 633 | }, 634 | "engines": { 635 | "node": ">=8.10.0" 636 | }, 637 | "funding": { 638 | "type": "opencollective", 639 | "url": "https://opencollective.com/nodemon" 640 | } 641 | }, 642 | "node_modules/nodemon/node_modules/debug": { 643 | "version": "3.2.7", 644 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 645 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 646 | "dependencies": { 647 | "ms": "^2.1.1" 648 | } 649 | }, 650 | "node_modules/nodemon/node_modules/ms": { 651 | "version": "2.1.3", 652 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 653 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 654 | }, 655 | "node_modules/nopt": { 656 | "version": "1.0.10", 657 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 658 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", 659 | "dependencies": { 660 | "abbrev": "1" 661 | }, 662 | "bin": { 663 | "nopt": "bin/nopt.js" 664 | }, 665 | "engines": { 666 | "node": "*" 667 | } 668 | }, 669 | "node_modules/normalize-path": { 670 | "version": "3.0.0", 671 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 672 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 673 | "engines": { 674 | "node": ">=0.10.0" 675 | } 676 | }, 677 | "node_modules/object-assign": { 678 | "version": "4.1.1", 679 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 680 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 681 | "engines": { 682 | "node": ">=0.10.0" 683 | } 684 | }, 685 | "node_modules/object-inspect": { 686 | "version": "1.12.2", 687 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 688 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 689 | "funding": { 690 | "url": "https://github.com/sponsors/ljharb" 691 | } 692 | }, 693 | "node_modules/on-finished": { 694 | "version": "2.4.1", 695 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 696 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 697 | "dependencies": { 698 | "ee-first": "1.1.1" 699 | }, 700 | "engines": { 701 | "node": ">= 0.8" 702 | } 703 | }, 704 | "node_modules/parseurl": { 705 | "version": "1.3.3", 706 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 707 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 708 | "engines": { 709 | "node": ">= 0.8" 710 | } 711 | }, 712 | "node_modules/path-to-regexp": { 713 | "version": "0.1.7", 714 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 715 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 716 | }, 717 | "node_modules/picomatch": { 718 | "version": "2.3.1", 719 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 720 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 721 | "engines": { 722 | "node": ">=8.6" 723 | }, 724 | "funding": { 725 | "url": "https://github.com/sponsors/jonschlinkert" 726 | } 727 | }, 728 | "node_modules/proxy-addr": { 729 | "version": "2.0.7", 730 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 731 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 732 | "dependencies": { 733 | "forwarded": "0.2.0", 734 | "ipaddr.js": "1.9.1" 735 | }, 736 | "engines": { 737 | "node": ">= 0.10" 738 | } 739 | }, 740 | "node_modules/pstree.remy": { 741 | "version": "1.1.8", 742 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 743 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" 744 | }, 745 | "node_modules/qs": { 746 | "version": "6.10.3", 747 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 748 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 749 | "dependencies": { 750 | "side-channel": "^1.0.4" 751 | }, 752 | "engines": { 753 | "node": ">=0.6" 754 | }, 755 | "funding": { 756 | "url": "https://github.com/sponsors/ljharb" 757 | } 758 | }, 759 | "node_modules/range-parser": { 760 | "version": "1.2.1", 761 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 762 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 763 | "engines": { 764 | "node": ">= 0.6" 765 | } 766 | }, 767 | "node_modules/raw-body": { 768 | "version": "2.5.1", 769 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 770 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 771 | "dependencies": { 772 | "bytes": "3.1.2", 773 | "http-errors": "2.0.0", 774 | "iconv-lite": "0.4.24", 775 | "unpipe": "1.0.0" 776 | }, 777 | "engines": { 778 | "node": ">= 0.8" 779 | } 780 | }, 781 | "node_modules/readdirp": { 782 | "version": "3.6.0", 783 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 784 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 785 | "dependencies": { 786 | "picomatch": "^2.2.1" 787 | }, 788 | "engines": { 789 | "node": ">=8.10.0" 790 | } 791 | }, 792 | "node_modules/safe-buffer": { 793 | "version": "5.2.1", 794 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 795 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 796 | "funding": [ 797 | { 798 | "type": "github", 799 | "url": "https://github.com/sponsors/feross" 800 | }, 801 | { 802 | "type": "patreon", 803 | "url": "https://www.patreon.com/feross" 804 | }, 805 | { 806 | "type": "consulting", 807 | "url": "https://feross.org/support" 808 | } 809 | ] 810 | }, 811 | "node_modules/safer-buffer": { 812 | "version": "2.1.2", 813 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 814 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 815 | }, 816 | "node_modules/sax": { 817 | "version": "1.2.4", 818 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 819 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 820 | }, 821 | "node_modules/semver": { 822 | "version": "5.7.1", 823 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 824 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 825 | "bin": { 826 | "semver": "bin/semver" 827 | } 828 | }, 829 | "node_modules/send": { 830 | "version": "0.18.0", 831 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 832 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 833 | "dependencies": { 834 | "debug": "2.6.9", 835 | "depd": "2.0.0", 836 | "destroy": "1.2.0", 837 | "encodeurl": "~1.0.2", 838 | "escape-html": "~1.0.3", 839 | "etag": "~1.8.1", 840 | "fresh": "0.5.2", 841 | "http-errors": "2.0.0", 842 | "mime": "1.6.0", 843 | "ms": "2.1.3", 844 | "on-finished": "2.4.1", 845 | "range-parser": "~1.2.1", 846 | "statuses": "2.0.1" 847 | }, 848 | "engines": { 849 | "node": ">= 0.8.0" 850 | } 851 | }, 852 | "node_modules/send/node_modules/ms": { 853 | "version": "2.1.3", 854 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 855 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 856 | }, 857 | "node_modules/serve-static": { 858 | "version": "1.15.0", 859 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 860 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 861 | "dependencies": { 862 | "encodeurl": "~1.0.2", 863 | "escape-html": "~1.0.3", 864 | "parseurl": "~1.3.3", 865 | "send": "0.18.0" 866 | }, 867 | "engines": { 868 | "node": ">= 0.8.0" 869 | } 870 | }, 871 | "node_modules/setprototypeof": { 872 | "version": "1.2.0", 873 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 874 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 875 | }, 876 | "node_modules/side-channel": { 877 | "version": "1.0.4", 878 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 879 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 880 | "dependencies": { 881 | "call-bind": "^1.0.0", 882 | "get-intrinsic": "^1.0.2", 883 | "object-inspect": "^1.9.0" 884 | }, 885 | "funding": { 886 | "url": "https://github.com/sponsors/ljharb" 887 | } 888 | }, 889 | "node_modules/simple-update-notifier": { 890 | "version": "1.0.7", 891 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", 892 | "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", 893 | "dependencies": { 894 | "semver": "~7.0.0" 895 | }, 896 | "engines": { 897 | "node": ">=8.10.0" 898 | } 899 | }, 900 | "node_modules/simple-update-notifier/node_modules/semver": { 901 | "version": "7.0.0", 902 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 903 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", 904 | "bin": { 905 | "semver": "bin/semver.js" 906 | } 907 | }, 908 | "node_modules/statuses": { 909 | "version": "2.0.1", 910 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 911 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 912 | "engines": { 913 | "node": ">= 0.8" 914 | } 915 | }, 916 | "node_modules/supports-color": { 917 | "version": "5.5.0", 918 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 919 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 920 | "dependencies": { 921 | "has-flag": "^3.0.0" 922 | }, 923 | "engines": { 924 | "node": ">=4" 925 | } 926 | }, 927 | "node_modules/to-regex-range": { 928 | "version": "5.0.1", 929 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 930 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 931 | "dependencies": { 932 | "is-number": "^7.0.0" 933 | }, 934 | "engines": { 935 | "node": ">=8.0" 936 | } 937 | }, 938 | "node_modules/toidentifier": { 939 | "version": "1.0.1", 940 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 941 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 942 | "engines": { 943 | "node": ">=0.6" 944 | } 945 | }, 946 | "node_modules/touch": { 947 | "version": "3.1.0", 948 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 949 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 950 | "dependencies": { 951 | "nopt": "~1.0.10" 952 | }, 953 | "bin": { 954 | "nodetouch": "bin/nodetouch.js" 955 | } 956 | }, 957 | "node_modules/type-is": { 958 | "version": "1.6.18", 959 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 960 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 961 | "dependencies": { 962 | "media-typer": "0.3.0", 963 | "mime-types": "~2.1.24" 964 | }, 965 | "engines": { 966 | "node": ">= 0.6" 967 | } 968 | }, 969 | "node_modules/undefsafe": { 970 | "version": "2.0.5", 971 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", 972 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" 973 | }, 974 | "node_modules/unpipe": { 975 | "version": "1.0.0", 976 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 977 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 978 | "engines": { 979 | "node": ">= 0.8" 980 | } 981 | }, 982 | "node_modules/utils-merge": { 983 | "version": "1.0.1", 984 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 985 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 986 | "engines": { 987 | "node": ">= 0.4.0" 988 | } 989 | }, 990 | "node_modules/vary": { 991 | "version": "1.1.2", 992 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 993 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 994 | "engines": { 995 | "node": ">= 0.8" 996 | } 997 | }, 998 | "node_modules/yarn": { 999 | "version": "1.22.19", 1000 | "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz", 1001 | "integrity": "sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==", 1002 | "hasInstallScript": true, 1003 | "bin": { 1004 | "yarn": "bin/yarn.js", 1005 | "yarnpkg": "bin/yarn.js" 1006 | }, 1007 | "engines": { 1008 | "node": ">=4.0.0" 1009 | } 1010 | } 1011 | }, 1012 | "dependencies": { 1013 | "abbrev": { 1014 | "version": "1.1.1", 1015 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 1016 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 1017 | }, 1018 | "accepts": { 1019 | "version": "1.3.8", 1020 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1021 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 1022 | "requires": { 1023 | "mime-types": "~2.1.34", 1024 | "negotiator": "0.6.3" 1025 | } 1026 | }, 1027 | "anymatch": { 1028 | "version": "3.1.2", 1029 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 1030 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 1031 | "requires": { 1032 | "normalize-path": "^3.0.0", 1033 | "picomatch": "^2.0.4" 1034 | } 1035 | }, 1036 | "array-flatten": { 1037 | "version": "1.1.1", 1038 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 1039 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 1040 | }, 1041 | "balanced-match": { 1042 | "version": "1.0.2", 1043 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1044 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1045 | }, 1046 | "binary-extensions": { 1047 | "version": "2.2.0", 1048 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1049 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 1050 | }, 1051 | "body-parser": { 1052 | "version": "1.20.0", 1053 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", 1054 | "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", 1055 | "requires": { 1056 | "bytes": "3.1.2", 1057 | "content-type": "~1.0.4", 1058 | "debug": "2.6.9", 1059 | "depd": "2.0.0", 1060 | "destroy": "1.2.0", 1061 | "http-errors": "2.0.0", 1062 | "iconv-lite": "0.4.24", 1063 | "on-finished": "2.4.1", 1064 | "qs": "6.10.3", 1065 | "raw-body": "2.5.1", 1066 | "type-is": "~1.6.18", 1067 | "unpipe": "1.0.0" 1068 | } 1069 | }, 1070 | "brace-expansion": { 1071 | "version": "1.1.11", 1072 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1073 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1074 | "requires": { 1075 | "balanced-match": "^1.0.0", 1076 | "concat-map": "0.0.1" 1077 | } 1078 | }, 1079 | "braces": { 1080 | "version": "3.0.2", 1081 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1082 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1083 | "requires": { 1084 | "fill-range": "^7.0.1" 1085 | } 1086 | }, 1087 | "bytes": { 1088 | "version": "3.1.2", 1089 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1090 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 1091 | }, 1092 | "call-bind": { 1093 | "version": "1.0.2", 1094 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1095 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1096 | "requires": { 1097 | "function-bind": "^1.1.1", 1098 | "get-intrinsic": "^1.0.2" 1099 | } 1100 | }, 1101 | "chokidar": { 1102 | "version": "3.5.3", 1103 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1104 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1105 | "requires": { 1106 | "anymatch": "~3.1.2", 1107 | "braces": "~3.0.2", 1108 | "fsevents": "~2.3.2", 1109 | "glob-parent": "~5.1.2", 1110 | "is-binary-path": "~2.1.0", 1111 | "is-glob": "~4.0.1", 1112 | "normalize-path": "~3.0.0", 1113 | "readdirp": "~3.6.0" 1114 | } 1115 | }, 1116 | "concat-map": { 1117 | "version": "0.0.1", 1118 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1119 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 1120 | }, 1121 | "content-disposition": { 1122 | "version": "0.5.4", 1123 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1124 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1125 | "requires": { 1126 | "safe-buffer": "5.2.1" 1127 | } 1128 | }, 1129 | "content-type": { 1130 | "version": "1.0.4", 1131 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1132 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 1133 | }, 1134 | "cookie": { 1135 | "version": "0.5.0", 1136 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1137 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 1138 | }, 1139 | "cookie-signature": { 1140 | "version": "1.0.6", 1141 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1142 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 1143 | }, 1144 | "cors": { 1145 | "version": "2.8.5", 1146 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 1147 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 1148 | "requires": { 1149 | "object-assign": "^4", 1150 | "vary": "^1" 1151 | } 1152 | }, 1153 | "debug": { 1154 | "version": "2.6.9", 1155 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1156 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1157 | "requires": { 1158 | "ms": "2.0.0" 1159 | } 1160 | }, 1161 | "depd": { 1162 | "version": "2.0.0", 1163 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1164 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1165 | }, 1166 | "destroy": { 1167 | "version": "1.2.0", 1168 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1169 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 1170 | }, 1171 | "ee-first": { 1172 | "version": "1.1.1", 1173 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1174 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 1175 | }, 1176 | "encodeurl": { 1177 | "version": "1.0.2", 1178 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1179 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 1180 | }, 1181 | "escape-html": { 1182 | "version": "1.0.3", 1183 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1184 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 1185 | }, 1186 | "etag": { 1187 | "version": "1.8.1", 1188 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1189 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 1190 | }, 1191 | "express": { 1192 | "version": "4.18.1", 1193 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", 1194 | "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", 1195 | "requires": { 1196 | "accepts": "~1.3.8", 1197 | "array-flatten": "1.1.1", 1198 | "body-parser": "1.20.0", 1199 | "content-disposition": "0.5.4", 1200 | "content-type": "~1.0.4", 1201 | "cookie": "0.5.0", 1202 | "cookie-signature": "1.0.6", 1203 | "debug": "2.6.9", 1204 | "depd": "2.0.0", 1205 | "encodeurl": "~1.0.2", 1206 | "escape-html": "~1.0.3", 1207 | "etag": "~1.8.1", 1208 | "finalhandler": "1.2.0", 1209 | "fresh": "0.5.2", 1210 | "http-errors": "2.0.0", 1211 | "merge-descriptors": "1.0.1", 1212 | "methods": "~1.1.2", 1213 | "on-finished": "2.4.1", 1214 | "parseurl": "~1.3.3", 1215 | "path-to-regexp": "0.1.7", 1216 | "proxy-addr": "~2.0.7", 1217 | "qs": "6.10.3", 1218 | "range-parser": "~1.2.1", 1219 | "safe-buffer": "5.2.1", 1220 | "send": "0.18.0", 1221 | "serve-static": "1.15.0", 1222 | "setprototypeof": "1.2.0", 1223 | "statuses": "2.0.1", 1224 | "type-is": "~1.6.18", 1225 | "utils-merge": "1.0.1", 1226 | "vary": "~1.1.2" 1227 | } 1228 | }, 1229 | "fill-range": { 1230 | "version": "7.0.1", 1231 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1232 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1233 | "requires": { 1234 | "to-regex-range": "^5.0.1" 1235 | } 1236 | }, 1237 | "finalhandler": { 1238 | "version": "1.2.0", 1239 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 1240 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 1241 | "requires": { 1242 | "debug": "2.6.9", 1243 | "encodeurl": "~1.0.2", 1244 | "escape-html": "~1.0.3", 1245 | "on-finished": "2.4.1", 1246 | "parseurl": "~1.3.3", 1247 | "statuses": "2.0.1", 1248 | "unpipe": "~1.0.0" 1249 | } 1250 | }, 1251 | "forwarded": { 1252 | "version": "0.2.0", 1253 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 1254 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 1255 | }, 1256 | "fresh": { 1257 | "version": "0.5.2", 1258 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1259 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 1260 | }, 1261 | "fsevents": { 1262 | "version": "2.3.2", 1263 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1264 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1265 | "optional": true 1266 | }, 1267 | "function-bind": { 1268 | "version": "1.1.1", 1269 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1270 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1271 | }, 1272 | "get-intrinsic": { 1273 | "version": "1.1.3", 1274 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 1275 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 1276 | "requires": { 1277 | "function-bind": "^1.1.1", 1278 | "has": "^1.0.3", 1279 | "has-symbols": "^1.0.3" 1280 | } 1281 | }, 1282 | "glob-parent": { 1283 | "version": "5.1.2", 1284 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1285 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1286 | "requires": { 1287 | "is-glob": "^4.0.1" 1288 | } 1289 | }, 1290 | "has": { 1291 | "version": "1.0.3", 1292 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1293 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1294 | "requires": { 1295 | "function-bind": "^1.1.1" 1296 | } 1297 | }, 1298 | "has-flag": { 1299 | "version": "3.0.0", 1300 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1301 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1302 | }, 1303 | "has-symbols": { 1304 | "version": "1.0.3", 1305 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1306 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1307 | }, 1308 | "http-errors": { 1309 | "version": "2.0.0", 1310 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1311 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1312 | "requires": { 1313 | "depd": "2.0.0", 1314 | "inherits": "2.0.4", 1315 | "setprototypeof": "1.2.0", 1316 | "statuses": "2.0.1", 1317 | "toidentifier": "1.0.1" 1318 | } 1319 | }, 1320 | "iconv-lite": { 1321 | "version": "0.4.24", 1322 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1323 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1324 | "requires": { 1325 | "safer-buffer": ">= 2.1.2 < 3" 1326 | } 1327 | }, 1328 | "ignore-by-default": { 1329 | "version": "1.0.1", 1330 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1331 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" 1332 | }, 1333 | "inherits": { 1334 | "version": "2.0.4", 1335 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1336 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1337 | }, 1338 | "ipaddr.js": { 1339 | "version": "1.9.1", 1340 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1341 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1342 | }, 1343 | "is-binary-path": { 1344 | "version": "2.1.0", 1345 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1346 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1347 | "requires": { 1348 | "binary-extensions": "^2.0.0" 1349 | } 1350 | }, 1351 | "is-extglob": { 1352 | "version": "2.1.1", 1353 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1354 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 1355 | }, 1356 | "is-glob": { 1357 | "version": "4.0.3", 1358 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1359 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1360 | "requires": { 1361 | "is-extglob": "^2.1.1" 1362 | } 1363 | }, 1364 | "is-number": { 1365 | "version": "7.0.0", 1366 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1367 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1368 | }, 1369 | "js-base64": { 1370 | "version": "3.7.2", 1371 | "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", 1372 | "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" 1373 | }, 1374 | "media-typer": { 1375 | "version": "0.3.0", 1376 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1377 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 1378 | }, 1379 | "merge-descriptors": { 1380 | "version": "1.0.1", 1381 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1382 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 1383 | }, 1384 | "methods": { 1385 | "version": "1.1.2", 1386 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1387 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 1388 | }, 1389 | "mime": { 1390 | "version": "1.6.0", 1391 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1392 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1393 | }, 1394 | "mime-db": { 1395 | "version": "1.52.0", 1396 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1397 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1398 | }, 1399 | "mime-types": { 1400 | "version": "2.1.35", 1401 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1402 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1403 | "requires": { 1404 | "mime-db": "1.52.0" 1405 | } 1406 | }, 1407 | "minimatch": { 1408 | "version": "3.1.2", 1409 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1410 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1411 | "requires": { 1412 | "brace-expansion": "^1.1.7" 1413 | } 1414 | }, 1415 | "ms": { 1416 | "version": "2.0.0", 1417 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1418 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1419 | }, 1420 | "needle": { 1421 | "version": "3.1.0", 1422 | "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", 1423 | "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", 1424 | "requires": { 1425 | "debug": "^3.2.6", 1426 | "iconv-lite": "^0.6.3", 1427 | "sax": "^1.2.4" 1428 | }, 1429 | "dependencies": { 1430 | "debug": { 1431 | "version": "3.2.7", 1432 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1433 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1434 | "requires": { 1435 | "ms": "^2.1.1" 1436 | } 1437 | }, 1438 | "iconv-lite": { 1439 | "version": "0.6.3", 1440 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1441 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1442 | "requires": { 1443 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1444 | } 1445 | }, 1446 | "ms": { 1447 | "version": "2.1.3", 1448 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1449 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1450 | } 1451 | } 1452 | }, 1453 | "negotiator": { 1454 | "version": "0.6.3", 1455 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1456 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1457 | }, 1458 | "nodemon": { 1459 | "version": "2.0.20", 1460 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", 1461 | "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", 1462 | "requires": { 1463 | "chokidar": "^3.5.2", 1464 | "debug": "^3.2.7", 1465 | "ignore-by-default": "^1.0.1", 1466 | "minimatch": "^3.1.2", 1467 | "pstree.remy": "^1.1.8", 1468 | "semver": "^5.7.1", 1469 | "simple-update-notifier": "^1.0.7", 1470 | "supports-color": "^5.5.0", 1471 | "touch": "^3.1.0", 1472 | "undefsafe": "^2.0.5" 1473 | }, 1474 | "dependencies": { 1475 | "debug": { 1476 | "version": "3.2.7", 1477 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1478 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1479 | "requires": { 1480 | "ms": "^2.1.1" 1481 | } 1482 | }, 1483 | "ms": { 1484 | "version": "2.1.3", 1485 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1486 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1487 | } 1488 | } 1489 | }, 1490 | "nopt": { 1491 | "version": "1.0.10", 1492 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 1493 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", 1494 | "requires": { 1495 | "abbrev": "1" 1496 | } 1497 | }, 1498 | "normalize-path": { 1499 | "version": "3.0.0", 1500 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1501 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1502 | }, 1503 | "object-assign": { 1504 | "version": "4.1.1", 1505 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1506 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1507 | }, 1508 | "object-inspect": { 1509 | "version": "1.12.2", 1510 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 1511 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 1512 | }, 1513 | "on-finished": { 1514 | "version": "2.4.1", 1515 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1516 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1517 | "requires": { 1518 | "ee-first": "1.1.1" 1519 | } 1520 | }, 1521 | "parseurl": { 1522 | "version": "1.3.3", 1523 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1524 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1525 | }, 1526 | "path-to-regexp": { 1527 | "version": "0.1.7", 1528 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1529 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 1530 | }, 1531 | "picomatch": { 1532 | "version": "2.3.1", 1533 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1534 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1535 | }, 1536 | "proxy-addr": { 1537 | "version": "2.0.7", 1538 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1539 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1540 | "requires": { 1541 | "forwarded": "0.2.0", 1542 | "ipaddr.js": "1.9.1" 1543 | } 1544 | }, 1545 | "pstree.remy": { 1546 | "version": "1.1.8", 1547 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 1548 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" 1549 | }, 1550 | "qs": { 1551 | "version": "6.10.3", 1552 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 1553 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 1554 | "requires": { 1555 | "side-channel": "^1.0.4" 1556 | } 1557 | }, 1558 | "range-parser": { 1559 | "version": "1.2.1", 1560 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1561 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1562 | }, 1563 | "raw-body": { 1564 | "version": "2.5.1", 1565 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 1566 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 1567 | "requires": { 1568 | "bytes": "3.1.2", 1569 | "http-errors": "2.0.0", 1570 | "iconv-lite": "0.4.24", 1571 | "unpipe": "1.0.0" 1572 | } 1573 | }, 1574 | "readdirp": { 1575 | "version": "3.6.0", 1576 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1577 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1578 | "requires": { 1579 | "picomatch": "^2.2.1" 1580 | } 1581 | }, 1582 | "safe-buffer": { 1583 | "version": "5.2.1", 1584 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1585 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1586 | }, 1587 | "safer-buffer": { 1588 | "version": "2.1.2", 1589 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1590 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1591 | }, 1592 | "sax": { 1593 | "version": "1.2.4", 1594 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 1595 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 1596 | }, 1597 | "semver": { 1598 | "version": "5.7.1", 1599 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1600 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1601 | }, 1602 | "send": { 1603 | "version": "0.18.0", 1604 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1605 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 1606 | "requires": { 1607 | "debug": "2.6.9", 1608 | "depd": "2.0.0", 1609 | "destroy": "1.2.0", 1610 | "encodeurl": "~1.0.2", 1611 | "escape-html": "~1.0.3", 1612 | "etag": "~1.8.1", 1613 | "fresh": "0.5.2", 1614 | "http-errors": "2.0.0", 1615 | "mime": "1.6.0", 1616 | "ms": "2.1.3", 1617 | "on-finished": "2.4.1", 1618 | "range-parser": "~1.2.1", 1619 | "statuses": "2.0.1" 1620 | }, 1621 | "dependencies": { 1622 | "ms": { 1623 | "version": "2.1.3", 1624 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1625 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1626 | } 1627 | } 1628 | }, 1629 | "serve-static": { 1630 | "version": "1.15.0", 1631 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1632 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 1633 | "requires": { 1634 | "encodeurl": "~1.0.2", 1635 | "escape-html": "~1.0.3", 1636 | "parseurl": "~1.3.3", 1637 | "send": "0.18.0" 1638 | } 1639 | }, 1640 | "setprototypeof": { 1641 | "version": "1.2.0", 1642 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1643 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1644 | }, 1645 | "side-channel": { 1646 | "version": "1.0.4", 1647 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1648 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1649 | "requires": { 1650 | "call-bind": "^1.0.0", 1651 | "get-intrinsic": "^1.0.2", 1652 | "object-inspect": "^1.9.0" 1653 | } 1654 | }, 1655 | "simple-update-notifier": { 1656 | "version": "1.0.7", 1657 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", 1658 | "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", 1659 | "requires": { 1660 | "semver": "~7.0.0" 1661 | }, 1662 | "dependencies": { 1663 | "semver": { 1664 | "version": "7.0.0", 1665 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 1666 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" 1667 | } 1668 | } 1669 | }, 1670 | "statuses": { 1671 | "version": "2.0.1", 1672 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1673 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1674 | }, 1675 | "supports-color": { 1676 | "version": "5.5.0", 1677 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1678 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1679 | "requires": { 1680 | "has-flag": "^3.0.0" 1681 | } 1682 | }, 1683 | "to-regex-range": { 1684 | "version": "5.0.1", 1685 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1686 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1687 | "requires": { 1688 | "is-number": "^7.0.0" 1689 | } 1690 | }, 1691 | "toidentifier": { 1692 | "version": "1.0.1", 1693 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1694 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1695 | }, 1696 | "touch": { 1697 | "version": "3.1.0", 1698 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 1699 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 1700 | "requires": { 1701 | "nopt": "~1.0.10" 1702 | } 1703 | }, 1704 | "type-is": { 1705 | "version": "1.6.18", 1706 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1707 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1708 | "requires": { 1709 | "media-typer": "0.3.0", 1710 | "mime-types": "~2.1.24" 1711 | } 1712 | }, 1713 | "undefsafe": { 1714 | "version": "2.0.5", 1715 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", 1716 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" 1717 | }, 1718 | "unpipe": { 1719 | "version": "1.0.0", 1720 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1721 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 1722 | }, 1723 | "utils-merge": { 1724 | "version": "1.0.1", 1725 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1726 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 1727 | }, 1728 | "vary": { 1729 | "version": "1.1.2", 1730 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1731 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 1732 | }, 1733 | "yarn": { 1734 | "version": "1.22.19", 1735 | "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz", 1736 | "integrity": "sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==" 1737 | } 1738 | } 1739 | } 1740 | --------------------------------------------------------------------------------