├── .github └── workflows │ └── workflow.yml ├── .gitignore ├── README.md ├── index.js ├── package-lock.json ├── package.json └── static ├── csgo_english.txt ├── items_game.txt ├── items_game_cdn.txt ├── manifestId.txt └── pak01_dir.vpk /.github/workflows/workflow.yml: -------------------------------------------------------------------------------- 1 | name: Download CS Game Files 2 | 3 | on: 4 | schedule: 5 | - cron: "*/15 * * * *" 6 | 7 | workflow_dispatch: 8 | 9 | jobs: 10 | download: 11 | runs-on: ubuntu-latest 12 | 13 | permissions: 14 | # Give the default GITHUB_TOKEN write permission to commit and push the changed files back to the repository. 15 | contents: write 16 | 17 | steps: 18 | - uses: actions/checkout@master 19 | - uses: actions/setup-node@v3 20 | - name: Download new game files 21 | run: npm install && node index.js ${{ secrets.USERNAME }} ${{ secrets.PASSWORD }} 22 | - name: Read manifestId.txt 23 | id: manifestId 24 | uses: juliangruber/read-file-action@v1 25 | with: 26 | path: ./static/manifestId.txt 27 | - name: Commit & push changes 28 | uses: stefanzweifel/git-auto-commit-action@v4 29 | with: 30 | commit_message: "manifest ${{ steps.manifestId.outputs.content }}" 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | node_modules/ 3 | temp/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cs-files 2 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const SteamUser = require('steam-user'); 2 | const fs = require('fs'); 3 | const vpk = require('vpk'); 4 | const iconv = require('iconv-lite'); 5 | const appId = 730; 6 | const depotId = 2347770; 7 | const dir = `./static`; 8 | const temp = "./temp"; 9 | const manifestIdFile = 'manifestId.txt' 10 | 11 | const vpkFiles = [ 12 | 'resource/csgo_english.txt', 13 | 'scripts/items/items_game.txt', 14 | ]; 15 | 16 | async function downloadVPKDir(user, manifest) { 17 | const dirFile = manifest.manifest.files.find((file) => file.filename.endsWith("csgo\\pak01_dir.vpk")); 18 | 19 | console.log(`Downloading vpk dir`) 20 | 21 | await user.downloadFile(appId, depotId, dirFile, `${temp}/pak01_dir.vpk`); 22 | 23 | // Persist in static directory 24 | fs.copyFileSync(`${temp}/pak01_dir.vpk`, `${dir}/pak01_dir.vpk`); 25 | 26 | vpkDir = new vpk(`${temp}/pak01_dir.vpk`); 27 | vpkDir.load(); 28 | 29 | return vpkDir; 30 | } 31 | 32 | function getRequiredVPKFiles(vpkDir) { 33 | const requiredIndices = []; 34 | 35 | for (const fileName of vpkDir.files) { 36 | for (const f of vpkFiles) { 37 | if (fileName.startsWith(f)) { 38 | console.log(`Found vpk for ${f}: ${fileName}`) 39 | 40 | const archiveIndex = vpkDir.tree[fileName].archiveIndex; 41 | 42 | if (!requiredIndices.includes(archiveIndex)) { 43 | requiredIndices.push(archiveIndex); 44 | } 45 | 46 | break; 47 | } 48 | } 49 | } 50 | 51 | return requiredIndices.sort(); 52 | } 53 | 54 | async function downloadVPKArchives(user, manifest, vpkDir) { 55 | const requiredIndices = getRequiredVPKFiles(vpkDir); 56 | 57 | console.log(`Required VPK files ${requiredIndices}`); 58 | 59 | for (let index in requiredIndices) { 60 | index = parseInt(index); 61 | 62 | // pad to 3 zeroes 63 | const archiveIndex = requiredIndices[index]; 64 | const paddedIndex = '0'.repeat(3-archiveIndex.toString().length) + archiveIndex; 65 | const fileName = `pak01_${paddedIndex}.vpk`; 66 | 67 | const file = manifest.manifest.files.find((f) => f.filename.endsWith(fileName)); 68 | const filePath = `${temp}/${fileName}`; 69 | 70 | const status = `[${index+1}/${requiredIndices.length}]`; 71 | 72 | console.log(`${status} Downloading ${fileName}`); 73 | 74 | await user.downloadFile(appId, depotId, file, filePath); 75 | } 76 | } 77 | 78 | function trimBOM(buffer) { 79 | // Check if the Buffer starts with the BOM character 80 | if (buffer.length >= 3 && buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { 81 | // Trim the first two bytes (BOM) 82 | return buffer.slice(3); 83 | } else { 84 | // No BOM, return the original Buffer 85 | return buffer; 86 | } 87 | } 88 | 89 | function extractVPKFiles(vpkDir) { 90 | console.log("Extracting vpk files") 91 | 92 | for (const f of vpkFiles) { 93 | let found = false; 94 | for (const path of vpkDir.files) { 95 | if (path.startsWith(f)) { 96 | let file = vpkDir.getFile(path); 97 | const filepath = f.split('/'); 98 | const fileName = filepath[filepath.length-1]; 99 | 100 | // Remove BOM from file (https://en.wikipedia.org/wiki/Byte_order_mark) 101 | // Convenience so down stream users don't have to worry about decoding with BOM 102 | file = trimBOM(file) 103 | 104 | try { 105 | fs.writeFileSync(`${dir}/${fileName}`, file) 106 | } catch (err) { 107 | throw err; 108 | } 109 | 110 | found = true; 111 | break; 112 | } 113 | } 114 | 115 | if (!found) { 116 | throw `could not find ${f}`; 117 | } 118 | } 119 | } 120 | 121 | if (process.argv.length != 4) { 122 | console.error(`Missing input arguments, expected 4 got ${process.argv.length}`); 123 | process.exit(1); 124 | } 125 | 126 | if (!fs.existsSync(dir)){ 127 | fs.mkdirSync(dir); 128 | } 129 | 130 | if (!fs.existsSync(temp)){ 131 | fs.mkdirSync(temp); 132 | } 133 | 134 | const user = new SteamUser(); 135 | 136 | console.log('Logging into Steam....'); 137 | 138 | user.logOn({ 139 | accountName: process.argv[2], 140 | password: process.argv[3], 141 | rememberPassword: true, 142 | logonID: 2121, 143 | }); 144 | 145 | 146 | user.once('loggedOn', async () => { 147 | const cs = (await user.getProductInfo([appId], [], true)).apps[appId].appinfo; 148 | const commonDepot = cs.depots[depotId]; 149 | const latestManifestId = commonDepot.manifests.public.gid; 150 | 151 | console.log(`Obtained latest manifest ID: ${latestManifestId}`); 152 | 153 | let existingManifestId = ""; 154 | 155 | try { 156 | existingManifestId = fs.readFileSync(`${dir}/${manifestIdFile}`); 157 | } catch (err) { 158 | if (err.code != 'ENOENT') { 159 | throw err; 160 | } 161 | } 162 | 163 | if (existingManifestId == latestManifestId) { 164 | console.log("Latest manifest Id matches existing manifest Id, exiting"); 165 | process.exit(0); 166 | } 167 | 168 | console.log("Latest manifest Id does not match existing manifest Id, downloading game files") 169 | 170 | const manifest = await user.getManifest(appId, depotId, latestManifestId, 'public'); 171 | 172 | const vpkDir = await downloadVPKDir(user, manifest); 173 | await downloadVPKArchives(user, manifest, vpkDir); 174 | extractVPKFiles(vpkDir); 175 | 176 | try { 177 | fs.writeFileSync(`${dir}/${manifestIdFile}`, latestManifestId); 178 | } catch (err) { 179 | throw err; 180 | } 181 | 182 | process.exit(0); 183 | }); 184 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cs-cdn", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "cs-cdn", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "iconv-lite": "^0.6.3", 13 | "steam-totp": "^2.1.2", 14 | "steam-user": "^5.0.1", 15 | "vpk": "^0.2.0" 16 | } 17 | }, 18 | "node_modules/@bbob/parser": { 19 | "version": "2.9.0", 20 | "resolved": "https://registry.npmjs.org/@bbob/parser/-/parser-2.9.0.tgz", 21 | "integrity": "sha512-tldSYsMoEclke/B1nqL7+HbYMWZHTKvpbEHRSHuY+sZvS1o7Jpdfjb+KPpwP9wLI3p3r7GPv69/wGy+Xibs9yA==", 22 | "dependencies": { 23 | "@bbob/plugin-helper": "^2.9.0" 24 | } 25 | }, 26 | "node_modules/@bbob/plugin-helper": { 27 | "version": "2.9.0", 28 | "resolved": "https://registry.npmjs.org/@bbob/plugin-helper/-/plugin-helper-2.9.0.tgz", 29 | "integrity": "sha512-idpUcNQ2co6T1oU/7/DG/ZRfipSSkTn9Ozw9f5vaXH7nzV3qhqZnhFVlHTzGGnRlzKlBwWOBzOdWi4Zeqg1c5A==" 30 | }, 31 | "node_modules/@doctormckay/stdlib": { 32 | "version": "1.16.1", 33 | "resolved": "https://registry.npmjs.org/@doctormckay/stdlib/-/stdlib-1.16.1.tgz", 34 | "integrity": "sha512-XhuUOzElz6fnNdt70IYNKqhPAEpGaL4JHOhAvklRh0hAhVPW+/wLxaWT3DWUbaG5Dta5YvIp7+cZK3GhIpAuug==", 35 | "engines": { 36 | "node": ">=6.0.0" 37 | } 38 | }, 39 | "node_modules/@doctormckay/steam-crypto": { 40 | "version": "1.2.0", 41 | "resolved": "https://registry.npmjs.org/@doctormckay/steam-crypto/-/steam-crypto-1.2.0.tgz", 42 | "integrity": "sha512-lsxgLw640gEdZBOXpVIcYWcYD+V+QbtEsMPzRvjmjz2XXKc7QeEMyHL07yOFRmay+cUwO4ObKTJO0dSInEuq5g==" 43 | }, 44 | "node_modules/@protobufjs/aspromise": { 45 | "version": "1.1.2", 46 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 47 | "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" 48 | }, 49 | "node_modules/@protobufjs/base64": { 50 | "version": "1.1.2", 51 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 52 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" 53 | }, 54 | "node_modules/@protobufjs/codegen": { 55 | "version": "2.0.4", 56 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 57 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" 58 | }, 59 | "node_modules/@protobufjs/eventemitter": { 60 | "version": "1.1.0", 61 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 62 | "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" 63 | }, 64 | "node_modules/@protobufjs/fetch": { 65 | "version": "1.1.0", 66 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 67 | "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", 68 | "dependencies": { 69 | "@protobufjs/aspromise": "^1.1.1", 70 | "@protobufjs/inquire": "^1.1.0" 71 | } 72 | }, 73 | "node_modules/@protobufjs/float": { 74 | "version": "1.0.2", 75 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 76 | "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" 77 | }, 78 | "node_modules/@protobufjs/inquire": { 79 | "version": "1.1.0", 80 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 81 | "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" 82 | }, 83 | "node_modules/@protobufjs/path": { 84 | "version": "1.1.2", 85 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 86 | "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" 87 | }, 88 | "node_modules/@protobufjs/pool": { 89 | "version": "1.1.0", 90 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 91 | "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" 92 | }, 93 | "node_modules/@protobufjs/utf8": { 94 | "version": "1.1.0", 95 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 96 | "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" 97 | }, 98 | "node_modules/@types/long": { 99 | "version": "4.0.2", 100 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", 101 | "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" 102 | }, 103 | "node_modules/@types/node": { 104 | "version": "20.6.2", 105 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz", 106 | "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==" 107 | }, 108 | "node_modules/adm-zip": { 109 | "version": "0.5.10", 110 | "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", 111 | "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", 112 | "engines": { 113 | "node": ">=6.0" 114 | } 115 | }, 116 | "node_modules/agent-base": { 117 | "version": "6.0.2", 118 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 119 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 120 | "dependencies": { 121 | "debug": "4" 122 | }, 123 | "engines": { 124 | "node": ">= 6.0.0" 125 | } 126 | }, 127 | "node_modules/ajv": { 128 | "version": "6.12.6", 129 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 130 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 131 | "dependencies": { 132 | "fast-deep-equal": "^3.1.1", 133 | "fast-json-stable-stringify": "^2.0.0", 134 | "json-schema-traverse": "^0.4.1", 135 | "uri-js": "^4.2.2" 136 | }, 137 | "funding": { 138 | "type": "github", 139 | "url": "https://github.com/sponsors/epoberezkin" 140 | } 141 | }, 142 | "node_modules/asn1": { 143 | "version": "0.2.6", 144 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 145 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 146 | "dependencies": { 147 | "safer-buffer": "~2.1.0" 148 | } 149 | }, 150 | "node_modules/assert-plus": { 151 | "version": "1.0.0", 152 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 153 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 154 | "engines": { 155 | "node": ">=0.8" 156 | } 157 | }, 158 | "node_modules/asynckit": { 159 | "version": "0.4.0", 160 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 161 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 162 | }, 163 | "node_modules/aws-sign2": { 164 | "version": "0.7.0", 165 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 166 | "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", 167 | "engines": { 168 | "node": "*" 169 | } 170 | }, 171 | "node_modules/aws4": { 172 | "version": "1.12.0", 173 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", 174 | "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" 175 | }, 176 | "node_modules/base64-js": { 177 | "version": "1.5.1", 178 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 179 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 180 | "funding": [ 181 | { 182 | "type": "github", 183 | "url": "https://github.com/sponsors/feross" 184 | }, 185 | { 186 | "type": "patreon", 187 | "url": "https://www.patreon.com/feross" 188 | }, 189 | { 190 | "type": "consulting", 191 | "url": "https://feross.org/support" 192 | } 193 | ] 194 | }, 195 | "node_modules/bcrypt-pbkdf": { 196 | "version": "1.0.2", 197 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 198 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 199 | "dependencies": { 200 | "tweetnacl": "^0.14.3" 201 | } 202 | }, 203 | "node_modules/binarykvparser": { 204 | "version": "2.2.0", 205 | "resolved": "https://registry.npmjs.org/binarykvparser/-/binarykvparser-2.2.0.tgz", 206 | "integrity": "sha512-mGBKngQF9ui53THcMjgjd0LrBH/HsI2Vywfjq52udSAmRGG87h0vjhkqun0kF+iC4rQ2jLZqldwJE7YN2ueiWw==", 207 | "bundleDependencies": [ 208 | "long" 209 | ], 210 | "dependencies": { 211 | "long": "^3.2.0" 212 | } 213 | }, 214 | "node_modules/binarykvparser/node_modules/long": { 215 | "version": "3.2.0", 216 | "inBundle": true, 217 | "license": "Apache-2.0", 218 | "engines": { 219 | "node": ">=0.6" 220 | } 221 | }, 222 | "node_modules/buffer": { 223 | "version": "5.7.1", 224 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 225 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 226 | "funding": [ 227 | { 228 | "type": "github", 229 | "url": "https://github.com/sponsors/feross" 230 | }, 231 | { 232 | "type": "patreon", 233 | "url": "https://www.patreon.com/feross" 234 | }, 235 | { 236 | "type": "consulting", 237 | "url": "https://feross.org/support" 238 | } 239 | ], 240 | "dependencies": { 241 | "base64-js": "^1.3.1", 242 | "ieee754": "^1.1.13" 243 | } 244 | }, 245 | "node_modules/bytebuffer": { 246 | "version": "5.0.1", 247 | "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", 248 | "integrity": "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==", 249 | "dependencies": { 250 | "long": "~3" 251 | }, 252 | "engines": { 253 | "node": ">=0.8" 254 | } 255 | }, 256 | "node_modules/caseless": { 257 | "version": "0.12.0", 258 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 259 | "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" 260 | }, 261 | "node_modules/combined-stream": { 262 | "version": "1.0.8", 263 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 264 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 265 | "dependencies": { 266 | "delayed-stream": "~1.0.0" 267 | }, 268 | "engines": { 269 | "node": ">= 0.8" 270 | } 271 | }, 272 | "node_modules/core-util-is": { 273 | "version": "1.0.2", 274 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 275 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" 276 | }, 277 | "node_modules/crc": { 278 | "version": "3.8.0", 279 | "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", 280 | "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", 281 | "dependencies": { 282 | "buffer": "^5.1.0" 283 | } 284 | }, 285 | "node_modules/cuint": { 286 | "version": "0.2.2", 287 | "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", 288 | "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==" 289 | }, 290 | "node_modules/dashdash": { 291 | "version": "1.14.1", 292 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 293 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 294 | "dependencies": { 295 | "assert-plus": "^1.0.0" 296 | }, 297 | "engines": { 298 | "node": ">=0.10" 299 | } 300 | }, 301 | "node_modules/debug": { 302 | "version": "4.3.4", 303 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 304 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 305 | "dependencies": { 306 | "ms": "2.1.2" 307 | }, 308 | "engines": { 309 | "node": ">=6.0" 310 | }, 311 | "peerDependenciesMeta": { 312 | "supports-color": { 313 | "optional": true 314 | } 315 | } 316 | }, 317 | "node_modules/delayed-stream": { 318 | "version": "1.0.0", 319 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 320 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 321 | "engines": { 322 | "node": ">=0.4.0" 323 | } 324 | }, 325 | "node_modules/ecc-jsbn": { 326 | "version": "0.1.2", 327 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 328 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 329 | "dependencies": { 330 | "jsbn": "~0.1.0", 331 | "safer-buffer": "^2.1.0" 332 | } 333 | }, 334 | "node_modules/es6-promise": { 335 | "version": "4.2.8", 336 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 337 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" 338 | }, 339 | "node_modules/extend": { 340 | "version": "3.0.2", 341 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 342 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 343 | }, 344 | "node_modules/extsprintf": { 345 | "version": "1.3.0", 346 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 347 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 348 | "engines": [ 349 | "node >=0.6.0" 350 | ] 351 | }, 352 | "node_modules/fast-deep-equal": { 353 | "version": "3.1.3", 354 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 355 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 356 | }, 357 | "node_modules/fast-json-stable-stringify": { 358 | "version": "2.1.0", 359 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 360 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 361 | }, 362 | "node_modules/file-manager": { 363 | "version": "2.0.1", 364 | "resolved": "https://registry.npmjs.org/file-manager/-/file-manager-2.0.1.tgz", 365 | "integrity": "sha512-y/K/1OCha04OXOxzo3cXJYtIzEk/CUMBb7Okipxueu0u+xCiuoocbwPyh1smUBasOobo4GAYmjgjD9Vh5zI51w==", 366 | "dependencies": { 367 | "@doctormckay/stdlib": "^1.14.1" 368 | }, 369 | "engines": { 370 | "node": ">=8.0.0" 371 | } 372 | }, 373 | "node_modules/forever-agent": { 374 | "version": "0.6.1", 375 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 376 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 377 | "engines": { 378 | "node": "*" 379 | } 380 | }, 381 | "node_modules/form-data": { 382 | "version": "2.3.3", 383 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 384 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 385 | "dependencies": { 386 | "asynckit": "^0.4.0", 387 | "combined-stream": "^1.0.6", 388 | "mime-types": "^2.1.12" 389 | }, 390 | "engines": { 391 | "node": ">= 0.12" 392 | } 393 | }, 394 | "node_modules/getpass": { 395 | "version": "0.1.7", 396 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 397 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 398 | "dependencies": { 399 | "assert-plus": "^1.0.0" 400 | } 401 | }, 402 | "node_modules/har-schema": { 403 | "version": "2.0.0", 404 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 405 | "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", 406 | "engines": { 407 | "node": ">=4" 408 | } 409 | }, 410 | "node_modules/har-validator": { 411 | "version": "5.1.5", 412 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 413 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 414 | "deprecated": "this library is no longer supported", 415 | "dependencies": { 416 | "ajv": "^6.12.3", 417 | "har-schema": "^2.0.0" 418 | }, 419 | "engines": { 420 | "node": ">=6" 421 | } 422 | }, 423 | "node_modules/http-signature": { 424 | "version": "1.2.0", 425 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 426 | "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 427 | "dependencies": { 428 | "assert-plus": "^1.0.0", 429 | "jsprim": "^1.2.2", 430 | "sshpk": "^1.7.0" 431 | }, 432 | "engines": { 433 | "node": ">=0.8", 434 | "npm": ">=1.3.7" 435 | } 436 | }, 437 | "node_modules/iconv-lite": { 438 | "version": "0.6.3", 439 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 440 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 441 | "dependencies": { 442 | "safer-buffer": ">= 2.1.2 < 3.0.0" 443 | }, 444 | "engines": { 445 | "node": ">=0.10.0" 446 | } 447 | }, 448 | "node_modules/ieee754": { 449 | "version": "1.2.1", 450 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 451 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 452 | "funding": [ 453 | { 454 | "type": "github", 455 | "url": "https://github.com/sponsors/feross" 456 | }, 457 | { 458 | "type": "patreon", 459 | "url": "https://www.patreon.com/feross" 460 | }, 461 | { 462 | "type": "consulting", 463 | "url": "https://feross.org/support" 464 | } 465 | ] 466 | }, 467 | "node_modules/ip": { 468 | "version": "2.0.0", 469 | "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", 470 | "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" 471 | }, 472 | "node_modules/is-typedarray": { 473 | "version": "1.0.0", 474 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 475 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" 476 | }, 477 | "node_modules/isstream": { 478 | "version": "0.1.2", 479 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 480 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" 481 | }, 482 | "node_modules/jbinary": { 483 | "version": "2.1.5", 484 | "resolved": "https://registry.npmjs.org/jbinary/-/jbinary-2.1.5.tgz", 485 | "integrity": "sha512-kcCu9qie3SIY/0cq1pC+v4+zOWzGQ3IY5NehqZN8Y4Ji6a2NQRysmegXFSNUlnRmc+PMipOL0pYu2buzlAMIaw==", 486 | "dependencies": { 487 | "es6-promise": "*", 488 | "jdataview": "*", 489 | "request": "*" 490 | } 491 | }, 492 | "node_modules/jdataview": { 493 | "version": "2.5.0", 494 | "resolved": "https://registry.npmjs.org/jdataview/-/jdataview-2.5.0.tgz", 495 | "integrity": "sha512-ZJop3D5nyDcWPBPv4NPnhCvx3HgQNsCXMfw8gpNKY16BobgxmVF+kJ08aHuqk6bJQVeL2mkf6nDCcZPMompalw==" 496 | }, 497 | "node_modules/jsbn": { 498 | "version": "0.1.1", 499 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 500 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" 501 | }, 502 | "node_modules/json-schema": { 503 | "version": "0.4.0", 504 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 505 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" 506 | }, 507 | "node_modules/json-schema-traverse": { 508 | "version": "0.4.1", 509 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 510 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 511 | }, 512 | "node_modules/json-stringify-safe": { 513 | "version": "5.0.1", 514 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 515 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" 516 | }, 517 | "node_modules/jsprim": { 518 | "version": "1.4.2", 519 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 520 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 521 | "dependencies": { 522 | "assert-plus": "1.0.0", 523 | "extsprintf": "1.3.0", 524 | "json-schema": "0.4.0", 525 | "verror": "1.10.0" 526 | }, 527 | "engines": { 528 | "node": ">=0.6.0" 529 | } 530 | }, 531 | "node_modules/kvparser": { 532 | "version": "1.0.2", 533 | "resolved": "https://registry.npmjs.org/kvparser/-/kvparser-1.0.2.tgz", 534 | "integrity": "sha512-5P/5qpTAHjVYWqcI55B3yQwSY2FUrYYrJj5i65V1Wmg7/4W4OnBcaodaEvLyVuugeOnS+BAaKm9LbPazGJcRyA==", 535 | "engines": { 536 | "node": ">=4.0.0" 537 | } 538 | }, 539 | "node_modules/long": { 540 | "version": "3.2.0", 541 | "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", 542 | "integrity": "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==", 543 | "engines": { 544 | "node": ">=0.6" 545 | } 546 | }, 547 | "node_modules/lzma": { 548 | "version": "2.3.2", 549 | "resolved": "https://registry.npmjs.org/lzma/-/lzma-2.3.2.tgz", 550 | "integrity": "sha512-DcfiawQ1avYbW+hsILhF38IKAlnguc/fjHrychs9hdxe4qLykvhT5VTGNs5YRWgaNePh7NTxGD4uv4gKsRomCQ==", 551 | "bin": { 552 | "lzma.js": "bin/lzma.js" 553 | } 554 | }, 555 | "node_modules/mime-db": { 556 | "version": "1.52.0", 557 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 558 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 559 | "engines": { 560 | "node": ">= 0.6" 561 | } 562 | }, 563 | "node_modules/mime-types": { 564 | "version": "2.1.35", 565 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 566 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 567 | "dependencies": { 568 | "mime-db": "1.52.0" 569 | }, 570 | "engines": { 571 | "node": ">= 0.6" 572 | } 573 | }, 574 | "node_modules/ms": { 575 | "version": "2.1.2", 576 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 577 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 578 | }, 579 | "node_modules/node-bignumber": { 580 | "version": "1.2.2", 581 | "resolved": "https://registry.npmjs.org/node-bignumber/-/node-bignumber-1.2.2.tgz", 582 | "integrity": "sha512-VoTZHmdFQpZH1+q1dz2qcHNCwTWsJg2T3PYwlAyDNFOfVhSYUKQBLFcCpCud+wJBGgCttGavZILaIggDIKqEQQ==", 583 | "engines": { 584 | "node": ">=0.4.0" 585 | } 586 | }, 587 | "node_modules/oauth-sign": { 588 | "version": "0.9.0", 589 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 590 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 591 | "engines": { 592 | "node": "*" 593 | } 594 | }, 595 | "node_modules/performance-now": { 596 | "version": "2.1.0", 597 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 598 | "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" 599 | }, 600 | "node_modules/permessage-deflate": { 601 | "version": "0.1.7", 602 | "resolved": "https://registry.npmjs.org/permessage-deflate/-/permessage-deflate-0.1.7.tgz", 603 | "integrity": "sha512-EUNi/RIsyJ1P1u9QHFwMOUWMYetqlE22ZgGbad7YP856WF4BFF0B7DuNy6vEGsgNNud6c/SkdWzkne71hH8MjA==", 604 | "dependencies": { 605 | "safe-buffer": "*" 606 | }, 607 | "engines": { 608 | "node": ">=0.8.0" 609 | } 610 | }, 611 | "node_modules/protobufjs": { 612 | "version": "6.11.4", 613 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", 614 | "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", 615 | "hasInstallScript": true, 616 | "dependencies": { 617 | "@protobufjs/aspromise": "^1.1.2", 618 | "@protobufjs/base64": "^1.1.2", 619 | "@protobufjs/codegen": "^2.0.4", 620 | "@protobufjs/eventemitter": "^1.1.0", 621 | "@protobufjs/fetch": "^1.1.0", 622 | "@protobufjs/float": "^1.0.2", 623 | "@protobufjs/inquire": "^1.1.0", 624 | "@protobufjs/path": "^1.1.2", 625 | "@protobufjs/pool": "^1.1.0", 626 | "@protobufjs/utf8": "^1.1.0", 627 | "@types/long": "^4.0.1", 628 | "@types/node": ">=13.7.0", 629 | "long": "^4.0.0" 630 | }, 631 | "bin": { 632 | "pbjs": "bin/pbjs", 633 | "pbts": "bin/pbts" 634 | } 635 | }, 636 | "node_modules/protobufjs/node_modules/long": { 637 | "version": "4.0.0", 638 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", 639 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" 640 | }, 641 | "node_modules/psl": { 642 | "version": "1.9.0", 643 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 644 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 645 | }, 646 | "node_modules/punycode": { 647 | "version": "2.3.0", 648 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 649 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 650 | "engines": { 651 | "node": ">=6" 652 | } 653 | }, 654 | "node_modules/qs": { 655 | "version": "6.5.3", 656 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 657 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 658 | "engines": { 659 | "node": ">=0.6" 660 | } 661 | }, 662 | "node_modules/request": { 663 | "version": "2.88.2", 664 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 665 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 666 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 667 | "dependencies": { 668 | "aws-sign2": "~0.7.0", 669 | "aws4": "^1.8.0", 670 | "caseless": "~0.12.0", 671 | "combined-stream": "~1.0.6", 672 | "extend": "~3.0.2", 673 | "forever-agent": "~0.6.1", 674 | "form-data": "~2.3.2", 675 | "har-validator": "~5.1.3", 676 | "http-signature": "~1.2.0", 677 | "is-typedarray": "~1.0.0", 678 | "isstream": "~0.1.2", 679 | "json-stringify-safe": "~5.0.1", 680 | "mime-types": "~2.1.19", 681 | "oauth-sign": "~0.9.0", 682 | "performance-now": "^2.1.0", 683 | "qs": "~6.5.2", 684 | "safe-buffer": "^5.1.2", 685 | "tough-cookie": "~2.5.0", 686 | "tunnel-agent": "^0.6.0", 687 | "uuid": "^3.3.2" 688 | }, 689 | "engines": { 690 | "node": ">= 6" 691 | } 692 | }, 693 | "node_modules/safe-buffer": { 694 | "version": "5.2.1", 695 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 696 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 697 | "funding": [ 698 | { 699 | "type": "github", 700 | "url": "https://github.com/sponsors/feross" 701 | }, 702 | { 703 | "type": "patreon", 704 | "url": "https://www.patreon.com/feross" 705 | }, 706 | { 707 | "type": "consulting", 708 | "url": "https://feross.org/support" 709 | } 710 | ] 711 | }, 712 | "node_modules/safer-buffer": { 713 | "version": "2.1.2", 714 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 715 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 716 | }, 717 | "node_modules/smart-buffer": { 718 | "version": "4.2.0", 719 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 720 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 721 | "engines": { 722 | "node": ">= 6.0.0", 723 | "npm": ">= 3.0.0" 724 | } 725 | }, 726 | "node_modules/socks": { 727 | "version": "2.7.1", 728 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", 729 | "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", 730 | "dependencies": { 731 | "ip": "^2.0.0", 732 | "smart-buffer": "^4.2.0" 733 | }, 734 | "engines": { 735 | "node": ">= 10.13.0", 736 | "npm": ">= 3.0.0" 737 | } 738 | }, 739 | "node_modules/socks-proxy-agent": { 740 | "version": "7.0.0", 741 | "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", 742 | "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", 743 | "dependencies": { 744 | "agent-base": "^6.0.2", 745 | "debug": "^4.3.3", 746 | "socks": "^2.6.2" 747 | }, 748 | "engines": { 749 | "node": ">= 10" 750 | } 751 | }, 752 | "node_modules/sshpk": { 753 | "version": "1.18.0", 754 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", 755 | "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", 756 | "dependencies": { 757 | "asn1": "~0.2.3", 758 | "assert-plus": "^1.0.0", 759 | "bcrypt-pbkdf": "^1.0.0", 760 | "dashdash": "^1.12.0", 761 | "ecc-jsbn": "~0.1.1", 762 | "getpass": "^0.1.1", 763 | "jsbn": "~0.1.0", 764 | "safer-buffer": "^2.0.2", 765 | "tweetnacl": "~0.14.0" 766 | }, 767 | "bin": { 768 | "sshpk-conv": "bin/sshpk-conv", 769 | "sshpk-sign": "bin/sshpk-sign", 770 | "sshpk-verify": "bin/sshpk-verify" 771 | }, 772 | "engines": { 773 | "node": ">=0.10.0" 774 | } 775 | }, 776 | "node_modules/steam-appticket": { 777 | "version": "1.0.1", 778 | "resolved": "https://registry.npmjs.org/steam-appticket/-/steam-appticket-1.0.1.tgz", 779 | "integrity": "sha512-oYVInCvJlPPaQPYW1+iGcVP0N0ZvwtWiCDM1Z353XJ8l4DXQI/N+R5yyaRQcHRH5oQv3+BY6gPF40lu7gwEiJw==", 780 | "dependencies": { 781 | "@doctormckay/stdlib": "^1.6.0", 782 | "@doctormckay/steam-crypto": "^1.2.0", 783 | "bytebuffer": "^5.0.1", 784 | "protobufjs": "^6.8.8", 785 | "steamid": "^1.1.0" 786 | }, 787 | "engines": { 788 | "node": ">=4.0.0" 789 | } 790 | }, 791 | "node_modules/steam-session": { 792 | "version": "1.3.4", 793 | "resolved": "https://registry.npmjs.org/steam-session/-/steam-session-1.3.4.tgz", 794 | "integrity": "sha512-gDeDxsLlRyiVg6btEs3O7S5cprrmQfjRsUPihF17w1rzRCycjPX/dSNansUML39weP7/LMGqlXdgYlZ/hoZrzA==", 795 | "dependencies": { 796 | "@doctormckay/stdlib": "^2.4.1", 797 | "debug": "^4.3.4", 798 | "kvparser": "^1.0.1", 799 | "node-bignumber": "^1.2.2", 800 | "protobufjs": "^7.1.0", 801 | "socks-proxy-agent": "^7.0.0", 802 | "steamid": "^2.0.0", 803 | "tiny-typed-emitter": "^2.1.0", 804 | "websocket13": "^4.0.0" 805 | }, 806 | "engines": { 807 | "node": ">=12.22.0" 808 | } 809 | }, 810 | "node_modules/steam-session/node_modules/@doctormckay/stdlib": { 811 | "version": "2.7.1", 812 | "resolved": "https://registry.npmjs.org/@doctormckay/stdlib/-/stdlib-2.7.1.tgz", 813 | "integrity": "sha512-nIs+3jdaL0dtaMEzd6abkOjR7aJTDbusv/kNcxiBk8DKpnWwlhso2EH1C4a+EJwmXozGm/P3XvWtv+f3XNvrEA==", 814 | "dependencies": { 815 | "psl": "^1.9.0" 816 | }, 817 | "engines": { 818 | "node": ">=12.22.0" 819 | } 820 | }, 821 | "node_modules/steam-session/node_modules/long": { 822 | "version": "5.2.3", 823 | "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", 824 | "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" 825 | }, 826 | "node_modules/steam-session/node_modules/protobufjs": { 827 | "version": "7.2.5", 828 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", 829 | "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", 830 | "hasInstallScript": true, 831 | "dependencies": { 832 | "@protobufjs/aspromise": "^1.1.2", 833 | "@protobufjs/base64": "^1.1.2", 834 | "@protobufjs/codegen": "^2.0.4", 835 | "@protobufjs/eventemitter": "^1.1.0", 836 | "@protobufjs/fetch": "^1.1.0", 837 | "@protobufjs/float": "^1.0.2", 838 | "@protobufjs/inquire": "^1.1.0", 839 | "@protobufjs/path": "^1.1.2", 840 | "@protobufjs/pool": "^1.1.0", 841 | "@protobufjs/utf8": "^1.1.0", 842 | "@types/node": ">=13.7.0", 843 | "long": "^5.0.0" 844 | }, 845 | "engines": { 846 | "node": ">=12.0.0" 847 | } 848 | }, 849 | "node_modules/steam-session/node_modules/steamid": { 850 | "version": "2.0.0", 851 | "resolved": "https://registry.npmjs.org/steamid/-/steamid-2.0.0.tgz", 852 | "integrity": "sha512-+BFJMbo+IxzyfovLR37E7APkaNfmrL3S+88T7wTMRHnQ6LBhzEawPnjfWNKM9eUL/dH45j+7vhSX4WaGXoa4/Q==", 853 | "engines": { 854 | "node": ">=12.0.0" 855 | } 856 | }, 857 | "node_modules/steam-totp": { 858 | "version": "2.1.2", 859 | "resolved": "https://registry.npmjs.org/steam-totp/-/steam-totp-2.1.2.tgz", 860 | "integrity": "sha512-bTKlc/NoIUQId+my+O556s55DDsNNXfVIPWFDNVu68beql7AJhV0c+GTjFxfwCDYfdc4NkAme+0WrDdnY2D2VA==", 861 | "engines": { 862 | "node": ">=6.0.0" 863 | } 864 | }, 865 | "node_modules/steam-user": { 866 | "version": "5.0.1", 867 | "resolved": "https://registry.npmjs.org/steam-user/-/steam-user-5.0.1.tgz", 868 | "integrity": "sha512-kH0u0v4qobbnkxDcWyZNoAvOkbCJH9KBbRGRssSfkmAX4fZZQYlJfJwvojL0DIRJr6/3C4tycqXCHYW0+B1Xlg==", 869 | "dependencies": { 870 | "@bbob/parser": "^2.2.0", 871 | "@doctormckay/stdlib": "^2.7.1", 872 | "@doctormckay/steam-crypto": "^1.2.0", 873 | "adm-zip": "^0.5.10", 874 | "binarykvparser": "^2.2.0", 875 | "bytebuffer": "^5.0.0", 876 | "file-manager": "^2.0.0", 877 | "kvparser": "^1.0.1", 878 | "lzma": "^2.3.2", 879 | "protobufjs": "^7.2.4", 880 | "socks-proxy-agent": "^7.0.0", 881 | "steam-appticket": "^1.0.1", 882 | "steam-session": "^1.3.4", 883 | "steam-totp": "^2.0.1", 884 | "steamid": "^2.0.0", 885 | "websocket13": "^4.0.0" 886 | }, 887 | "engines": { 888 | "node": ">=14.0.0" 889 | } 890 | }, 891 | "node_modules/steam-user/node_modules/@doctormckay/stdlib": { 892 | "version": "2.7.1", 893 | "resolved": "https://registry.npmjs.org/@doctormckay/stdlib/-/stdlib-2.7.1.tgz", 894 | "integrity": "sha512-nIs+3jdaL0dtaMEzd6abkOjR7aJTDbusv/kNcxiBk8DKpnWwlhso2EH1C4a+EJwmXozGm/P3XvWtv+f3XNvrEA==", 895 | "dependencies": { 896 | "psl": "^1.9.0" 897 | }, 898 | "engines": { 899 | "node": ">=12.22.0" 900 | } 901 | }, 902 | "node_modules/steam-user/node_modules/long": { 903 | "version": "5.2.3", 904 | "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", 905 | "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" 906 | }, 907 | "node_modules/steam-user/node_modules/protobufjs": { 908 | "version": "7.2.5", 909 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", 910 | "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", 911 | "hasInstallScript": true, 912 | "dependencies": { 913 | "@protobufjs/aspromise": "^1.1.2", 914 | "@protobufjs/base64": "^1.1.2", 915 | "@protobufjs/codegen": "^2.0.4", 916 | "@protobufjs/eventemitter": "^1.1.0", 917 | "@protobufjs/fetch": "^1.1.0", 918 | "@protobufjs/float": "^1.0.2", 919 | "@protobufjs/inquire": "^1.1.0", 920 | "@protobufjs/path": "^1.1.2", 921 | "@protobufjs/pool": "^1.1.0", 922 | "@protobufjs/utf8": "^1.1.0", 923 | "@types/node": ">=13.7.0", 924 | "long": "^5.0.0" 925 | }, 926 | "engines": { 927 | "node": ">=12.0.0" 928 | } 929 | }, 930 | "node_modules/steam-user/node_modules/steamid": { 931 | "version": "2.0.0", 932 | "resolved": "https://registry.npmjs.org/steamid/-/steamid-2.0.0.tgz", 933 | "integrity": "sha512-+BFJMbo+IxzyfovLR37E7APkaNfmrL3S+88T7wTMRHnQ6LBhzEawPnjfWNKM9eUL/dH45j+7vhSX4WaGXoa4/Q==", 934 | "engines": { 935 | "node": ">=12.0.0" 936 | } 937 | }, 938 | "node_modules/steamid": { 939 | "version": "1.1.3", 940 | "resolved": "https://registry.npmjs.org/steamid/-/steamid-1.1.3.tgz", 941 | "integrity": "sha512-t86YjtP1LtPt8D+TaIARm6PtC9tBnF1FhxQeLFs6ohG7vDUfQuy/M8II14rx1TTUkVuYoWHP/7DlvTtoCGULcw==", 942 | "dependencies": { 943 | "cuint": "^0.2.1" 944 | } 945 | }, 946 | "node_modules/tiny-typed-emitter": { 947 | "version": "2.1.0", 948 | "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", 949 | "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" 950 | }, 951 | "node_modules/tough-cookie": { 952 | "version": "2.5.0", 953 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 954 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 955 | "dependencies": { 956 | "psl": "^1.1.28", 957 | "punycode": "^2.1.1" 958 | }, 959 | "engines": { 960 | "node": ">=0.8" 961 | } 962 | }, 963 | "node_modules/tunnel-agent": { 964 | "version": "0.6.0", 965 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 966 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 967 | "dependencies": { 968 | "safe-buffer": "^5.0.1" 969 | }, 970 | "engines": { 971 | "node": "*" 972 | } 973 | }, 974 | "node_modules/tweetnacl": { 975 | "version": "0.14.5", 976 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 977 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" 978 | }, 979 | "node_modules/uri-js": { 980 | "version": "4.4.1", 981 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 982 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 983 | "dependencies": { 984 | "punycode": "^2.1.0" 985 | } 986 | }, 987 | "node_modules/uuid": { 988 | "version": "3.4.0", 989 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 990 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 991 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 992 | "bin": { 993 | "uuid": "bin/uuid" 994 | } 995 | }, 996 | "node_modules/verror": { 997 | "version": "1.10.0", 998 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 999 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 1000 | "engines": [ 1001 | "node >=0.6.0" 1002 | ], 1003 | "dependencies": { 1004 | "assert-plus": "^1.0.0", 1005 | "core-util-is": "1.0.2", 1006 | "extsprintf": "^1.2.0" 1007 | } 1008 | }, 1009 | "node_modules/vpk": { 1010 | "version": "0.2.0", 1011 | "resolved": "https://registry.npmjs.org/vpk/-/vpk-0.2.0.tgz", 1012 | "integrity": "sha512-1PR3qji7UnSlvAnXG8E18+Jm9XgFvTw0h+ukbu0e93QEzm3qXlvW1OJQOEzg8+xXwqOfQF7OeNiG3+E3fl1oFg==", 1013 | "dependencies": { 1014 | "crc": "^3.3.0", 1015 | "jbinary": "^2.1.3" 1016 | } 1017 | }, 1018 | "node_modules/websocket-extensions": { 1019 | "version": "0.1.4", 1020 | "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", 1021 | "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", 1022 | "engines": { 1023 | "node": ">=0.8.0" 1024 | } 1025 | }, 1026 | "node_modules/websocket13": { 1027 | "version": "4.0.0", 1028 | "resolved": "https://registry.npmjs.org/websocket13/-/websocket13-4.0.0.tgz", 1029 | "integrity": "sha512-/ujP9ZfihyAZIXKGxcYpoe7Gj4r5o3WYSfP93o9lVNhhqoBtYba4m1s3mxdjKZu/HOhX5Mcqrt89dv/gC3b06A==", 1030 | "dependencies": { 1031 | "@doctormckay/stdlib": "^2.7.1", 1032 | "bytebuffer": "^5.0.1", 1033 | "permessage-deflate": "^0.1.7", 1034 | "tiny-typed-emitter": "^2.1.0", 1035 | "websocket-extensions": "^0.1.4" 1036 | }, 1037 | "engines": { 1038 | "node": ">=12.22.0" 1039 | } 1040 | }, 1041 | "node_modules/websocket13/node_modules/@doctormckay/stdlib": { 1042 | "version": "2.7.1", 1043 | "resolved": "https://registry.npmjs.org/@doctormckay/stdlib/-/stdlib-2.7.1.tgz", 1044 | "integrity": "sha512-nIs+3jdaL0dtaMEzd6abkOjR7aJTDbusv/kNcxiBk8DKpnWwlhso2EH1C4a+EJwmXozGm/P3XvWtv+f3XNvrEA==", 1045 | "dependencies": { 1046 | "psl": "^1.9.0" 1047 | }, 1048 | "engines": { 1049 | "node": ">=12.22.0" 1050 | } 1051 | } 1052 | } 1053 | } 1054 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cs-cdn", 3 | "version": "1.0.0", 4 | "description": "Fetches items_game.txt and csgo_english.txt from Steam CDN", 5 | "main": "index.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/csfloat/cs-cdn.git" 9 | }, 10 | "author": "", 11 | "license": "MIT", 12 | "dependencies": { 13 | "iconv-lite": "^0.6.3", 14 | "steam-totp": "^2.1.2", 15 | "steam-user": "^5.0.1", 16 | "vpk": "^0.2.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /static/manifestId.txt: -------------------------------------------------------------------------------- 1 | 5023020258185551340 -------------------------------------------------------------------------------- /static/pak01_dir.vpk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csfloat/cs-files/5a09da996eb9add42c8389d4834086fb80e23dfd/static/pak01_dir.vpk --------------------------------------------------------------------------------