cnpmcore 4.33.0 → 4.33.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,10 +24,38 @@ See [internal-api.md](docs/internal-api.md) for comprehensive documentation of c
24
24
 
25
25
  See [DEVELOPER.md](DEVELOPER.md)
26
26
 
27
+ The quickest way to get a ready-to-code environment (MySQL + Redis + dev database preconfigured) is GitHub Codespaces:
28
+
29
+ [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/cnpm/cnpmcore)
30
+
31
+ You can also open the repo locally with the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension. See [.devcontainer/README.md](.devcontainer/README.md) for details.
32
+
27
33
  ## How to integrate
28
34
 
29
35
  See [INTEGRATE.md](INTEGRATE.md)
30
36
 
37
+ ## npmmirror.com
38
+
39
+ [npmmirror.com](https://npmmirror.com) is the China NPM mirror hosted by cnpmcore, sponsored by [Alibaba Cloud / 阿里云](https://www.aliyun.com/).
40
+
41
+ npmmirror.com 是由 cnpmcore 驱动的中国 NPM 镜像,由[阿里云](https://www.aliyun.com/)提供基础设施赞助。
42
+
43
+ ### Usage Policy
44
+
45
+ To provide a more stable and reliable service:
46
+
47
+ - Do not abuse the registry with excessive crawling or scraping.
48
+ - Automated access that generates unusually high traffic may be rate-limited without notice.
49
+ - If you have large-scale usage needs or are affected by rate limiting, please open a [GitHub Issue](https://github.com/cnpm/cnpmcore/issues) to contact us.
50
+
51
+ ### 使用须知
52
+
53
+ 为了提供更加稳定可靠的服务:
54
+
55
+ - 请勿滥用 registry,禁止过度爬取或抓取数据。
56
+ - 产生异常高流量的自动化访问可能会被限流,恕不另行通知。
57
+ - 如果您有大规模使用需求,或受到限流策略影响,请通过 [GitHub Issue](https://github.com/cnpm/cnpmcore/issues) 与我们联系。
58
+
31
59
  ## License
32
60
 
33
61
  [MIT](LICENSE)
@@ -7,6 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ import { randomUUID } from 'node:crypto';
10
11
  import { AccessLevel, Inject, SingletonProto } from 'egg';
11
12
  const ONE_DAY = 3600 * 24;
12
13
  let CacheAdapter = class CacheAdapter {
@@ -27,15 +28,19 @@ let CacheAdapter = class CacheAdapter {
27
28
  }
28
29
  async lock(key, seconds) {
29
30
  const lockName = this.getLockName(key);
31
+ const now = Date.now();
30
32
  const existsTimestamp = await this.redis.get(lockName);
31
33
  if (existsTimestamp) {
32
- if (Date.now() - Number.parseInt(existsTimestamp) < seconds * 1000) {
34
+ if (now < Number.parseInt(existsTimestamp)) {
33
35
  return null;
34
36
  }
35
37
  // lock timeout, delete it
36
38
  await this.redis.del(lockName);
37
39
  }
38
- const timestamp = `${Date.now() + seconds * 1000}`;
40
+ // token format: `<expiry>.<uuid>`
41
+ // - keep the numeric expiry prefix so the timeout check above can recover it via Number.parseInt()
42
+ // - append a random uuid so every acquisition gets a unique token, even when now and seconds are identical
43
+ const timestamp = `${now + seconds * 1000}.${randomUUID()}`;
39
44
  const code = await this.redis.setnx(lockName, timestamp);
40
45
  // setnx fail, lock fail
41
46
  if (code === 0)
@@ -77,4 +82,4 @@ CacheAdapter = __decorate([
77
82
  })
78
83
  ], CacheAdapter);
79
84
  export { CacheAdapter };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGVBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvbW1vbi9hZGFwdGVyL0NhY2hlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFLMUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUtuQixJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFZO0lBSXZCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDdkMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQVc7UUFDeEIsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXO1FBQ25CLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFXO1FBQ3RCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLE9BQWU7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELDBCQUEwQjtZQUMxQixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekQsd0JBQXdCO1FBQ3hCLElBQUksSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM1QixTQUFTO1FBQ1QsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0MsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLGFBQXFCO1FBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsZUFBZSxJQUFJLGFBQWEsS0FBSyxlQUFlO1lBQUUsT0FBTztRQUNsRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQUUsSUFBeUI7UUFDckUsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDZixDQUFDO2dCQUFTLENBQUM7WUFDVCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVztRQUM3QixPQUFPLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGLENBQUE7QUE5RGtCO0lBRGhCLE1BQU0sRUFBRTs7MkNBQ3FCO0FBRm5CLFlBQVk7SUFIeEIsY0FBYyxDQUFDO1FBQ2QsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxZQUFZLENBZ0V4QiJ9
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGVBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvbW1vbi9hZGFwdGVyL0NhY2hlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUsxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBS25CLElBQU0sWUFBWSxHQUFsQixNQUFNLFlBQVk7SUFJdkIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUN2QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBVztRQUN4QixPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDakMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVc7UUFDbkIsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVc7UUFDdEIsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FB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
@@ -14,123 +14,134 @@ const DOWNLOAD_HOST = 'https://playwright.azureedge.net/';
14
14
  // https://github.com/playwright-community/playwright-go/blob/56e30d60f8b42785982469eaca6ad969bc2e1946/run.go#L341-L374
15
15
  const PLAYWRIGHT_DRIVER_ARCHS = ['win32_x64', 'mac-arm64', 'mac', 'linux-arm64', 'linux'];
16
16
  // https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/registry/index.ts
17
+ // CFT entries use Chrome for Testing URLs: builds/cft/{browserVersion}/{suffix}
18
+ // (introduced in playwright 1.58.1, see https://github.com/cnpm/cnpmcore/issues/1033)
19
+ const cft = (suffix) => ({ cft: suffix });
17
20
  /* eslint-disable quote-props */
18
21
  const DOWNLOAD_PATHS = {
19
22
  chromium: {
20
23
  '<unknown>': undefined,
21
24
  'ubuntu18.04-x64': undefined,
22
- 'ubuntu20.04-x64': 'builds/chromium/%s/chromium-linux.zip',
23
- 'ubuntu22.04-x64': 'builds/chromium/%s/chromium-linux.zip',
24
- 'ubuntu24.04-x64': 'builds/chromium/%s/chromium-linux.zip',
25
+ 'ubuntu20.04-x64': cft('linux64/chrome-linux64.zip'),
26
+ 'ubuntu22.04-x64': cft('linux64/chrome-linux64.zip'),
27
+ 'ubuntu24.04-x64': cft('linux64/chrome-linux64.zip'),
25
28
  'ubuntu18.04-arm64': undefined,
26
29
  'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
27
30
  'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
28
31
  'ubuntu24.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
29
- 'debian11-x64': 'builds/chromium/%s/chromium-linux.zip',
32
+ 'debian11-x64': cft('linux64/chrome-linux64.zip'),
30
33
  'debian11-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
31
- 'debian12-x64': 'builds/chromium/%s/chromium-linux.zip',
34
+ 'debian12-x64': cft('linux64/chrome-linux64.zip'),
32
35
  'debian12-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
33
- 'mac10.13': 'builds/chromium/%s/chromium-mac.zip',
34
- 'mac10.14': 'builds/chromium/%s/chromium-mac.zip',
35
- 'mac10.15': 'builds/chromium/%s/chromium-mac.zip',
36
- mac11: 'builds/chromium/%s/chromium-mac.zip',
37
- 'mac11-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
38
- mac12: 'builds/chromium/%s/chromium-mac.zip',
39
- 'mac12-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
40
- mac13: 'builds/chromium/%s/chromium-mac.zip',
41
- 'mac13-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
42
- mac14: 'builds/chromium/%s/chromium-mac.zip',
43
- 'mac14-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
44
- mac15: 'builds/chromium/%s/chromium-mac.zip',
45
- 'mac15-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
46
- win64: 'builds/chromium/%s/chromium-win64.zip',
36
+ 'debian13-x64': cft('linux64/chrome-linux64.zip'),
37
+ 'debian13-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
38
+ 'mac10.13': cft('mac-x64/chrome-mac-x64.zip'),
39
+ 'mac10.14': cft('mac-x64/chrome-mac-x64.zip'),
40
+ 'mac10.15': cft('mac-x64/chrome-mac-x64.zip'),
41
+ mac11: cft('mac-x64/chrome-mac-x64.zip'),
42
+ 'mac11-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
43
+ mac12: cft('mac-x64/chrome-mac-x64.zip'),
44
+ 'mac12-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
45
+ mac13: cft('mac-x64/chrome-mac-x64.zip'),
46
+ 'mac13-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
47
+ mac14: cft('mac-x64/chrome-mac-x64.zip'),
48
+ 'mac14-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
49
+ mac15: cft('mac-x64/chrome-mac-x64.zip'),
50
+ 'mac15-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
51
+ win64: cft('win64/chrome-win64.zip'),
47
52
  },
48
53
  'chromium-headless-shell': {
49
54
  '<unknown>': undefined,
50
55
  'ubuntu18.04-x64': undefined,
51
- 'ubuntu20.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
52
- 'ubuntu22.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
53
- 'ubuntu24.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
56
+ 'ubuntu20.04-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
57
+ 'ubuntu22.04-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
58
+ 'ubuntu24.04-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
54
59
  'ubuntu18.04-arm64': undefined,
55
60
  'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
56
61
  'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
57
62
  'ubuntu24.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
58
- 'debian11-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
63
+ 'debian11-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
59
64
  'debian11-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
60
- 'debian12-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
65
+ 'debian12-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
61
66
  'debian12-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
67
+ 'debian13-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
68
+ 'debian13-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
62
69
  'mac10.13': undefined,
63
70
  'mac10.14': undefined,
64
71
  'mac10.15': undefined,
65
- mac11: 'builds/chromium/%s/chromium-headless-shell-mac.zip',
66
- 'mac11-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
67
- mac12: 'builds/chromium/%s/chromium-headless-shell-mac.zip',
68
- 'mac12-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
69
- mac13: 'builds/chromium/%s/chromium-headless-shell-mac.zip',
70
- 'mac13-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
71
- mac14: 'builds/chromium/%s/chromium-headless-shell-mac.zip',
72
- 'mac14-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
73
- mac15: 'builds/chromium/%s/chromium-headless-shell-mac.zip',
74
- 'mac15-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
75
- win64: 'builds/chromium/%s/chromium-headless-shell-win64.zip',
72
+ mac11: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
73
+ 'mac11-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
74
+ mac12: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
75
+ 'mac12-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
76
+ mac13: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
77
+ 'mac13-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
78
+ mac14: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
79
+ 'mac14-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
80
+ mac15: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
81
+ 'mac15-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
82
+ win64: cft('win64/chrome-headless-shell-win64.zip'),
76
83
  },
77
84
  'chromium-tip-of-tree': {
78
85
  '<unknown>': undefined,
79
86
  'ubuntu18.04-x64': undefined,
80
- 'ubuntu20.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
81
- 'ubuntu22.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
82
- 'ubuntu24.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
87
+ 'ubuntu20.04-x64': cft('linux64/chrome-linux64.zip'),
88
+ 'ubuntu22.04-x64': cft('linux64/chrome-linux64.zip'),
89
+ 'ubuntu24.04-x64': cft('linux64/chrome-linux64.zip'),
83
90
  'ubuntu18.04-arm64': undefined,
84
91
  'ubuntu20.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
85
92
  'ubuntu22.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
86
93
  'ubuntu24.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
87
- 'debian11-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
94
+ 'debian11-x64': cft('linux64/chrome-linux64.zip'),
88
95
  'debian11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
89
- 'debian12-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
96
+ 'debian12-x64': cft('linux64/chrome-linux64.zip'),
90
97
  'debian12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
91
- 'mac10.13': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
92
- 'mac10.14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
93
- 'mac10.15': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
94
- mac11: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
95
- 'mac11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
96
- mac12: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
97
- 'mac12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
98
- mac13: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
99
- 'mac13-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
100
- mac14: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
101
- 'mac14-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
102
- mac15: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
103
- 'mac15-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
104
- win64: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-win64.zip',
98
+ 'debian13-x64': cft('linux64/chrome-linux64.zip'),
99
+ 'debian13-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
100
+ 'mac10.13': cft('mac-x64/chrome-mac-x64.zip'),
101
+ 'mac10.14': cft('mac-x64/chrome-mac-x64.zip'),
102
+ 'mac10.15': cft('mac-x64/chrome-mac-x64.zip'),
103
+ mac11: cft('mac-x64/chrome-mac-x64.zip'),
104
+ 'mac11-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
105
+ mac12: cft('mac-x64/chrome-mac-x64.zip'),
106
+ 'mac12-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
107
+ mac13: cft('mac-x64/chrome-mac-x64.zip'),
108
+ 'mac13-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
109
+ mac14: cft('mac-x64/chrome-mac-x64.zip'),
110
+ 'mac14-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
111
+ mac15: cft('mac-x64/chrome-mac-x64.zip'),
112
+ 'mac15-arm64': cft('mac-arm64/chrome-mac-arm64.zip'),
113
+ win64: cft('win64/chrome-win64.zip'),
105
114
  },
106
115
  'chromium-tip-of-tree-headless-shell': {
107
116
  '<unknown>': undefined,
108
117
  'ubuntu18.04-x64': undefined,
109
- 'ubuntu20.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
110
- 'ubuntu22.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
111
- 'ubuntu24.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
118
+ 'ubuntu20.04-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
119
+ 'ubuntu22.04-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
120
+ 'ubuntu24.04-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
112
121
  'ubuntu18.04-arm64': undefined,
113
122
  'ubuntu20.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
114
123
  'ubuntu22.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
115
124
  'ubuntu24.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
116
- 'debian11-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
125
+ 'debian11-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
117
126
  'debian11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
118
- 'debian12-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
127
+ 'debian12-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
119
128
  'debian12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
129
+ 'debian13-x64': cft('linux64/chrome-headless-shell-linux64.zip'),
130
+ 'debian13-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
120
131
  'mac10.13': undefined,
121
132
  'mac10.14': undefined,
122
133
  'mac10.15': undefined,
123
- mac11: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
124
- 'mac11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
125
- mac12: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
126
- 'mac12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
127
- mac13: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
128
- 'mac13-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
129
- mac14: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
130
- 'mac14-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
131
- mac15: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
132
- 'mac15-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
133
- win64: 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-win64.zip',
134
+ mac11: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
135
+ 'mac11-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
136
+ mac12: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
137
+ 'mac12-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
138
+ mac13: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
139
+ 'mac13-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
140
+ mac14: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
141
+ 'mac14-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
142
+ mac15: cft('mac-x64/chrome-headless-shell-mac-x64.zip'),
143
+ 'mac15-arm64': cft('mac-arm64/chrome-headless-shell-mac-arm64.zip'),
144
+ win64: cft('win64/chrome-headless-shell-win64.zip'),
134
145
  },
135
146
  firefox: {
136
147
  '<unknown>': undefined,
@@ -335,6 +346,15 @@ let PlaywrightBinary = class PlaywrightBinary extends AbstractBinary {
335
346
  size: '-',
336
347
  date: nowDateISO,
337
348
  });
349
+ // builds/cft/ holds Chrome for Testing downloads
350
+ // (Playwright 1.58.1+ moved chromium downloads to builds/cft/{browserVersion}/{platform}/)
351
+ buildDirs.push({
352
+ name: 'cft/',
353
+ isDir: true,
354
+ url: '',
355
+ size: '-',
356
+ date: nowDateISO,
357
+ });
338
358
  this.dirItems = {
339
359
  '/': [
340
360
  {
@@ -346,6 +366,7 @@ let PlaywrightBinary = class PlaywrightBinary extends AbstractBinary {
346
366
  },
347
367
  ],
348
368
  '/builds/': buildDirs,
369
+ '/builds/cft/': [],
349
370
  };
350
371
  for (const browserName of Object.keys(DOWNLOAD_PATHS)) {
351
372
  if (browserName === 'chromium-headless-shell' || browserName === 'chromium-tip-of-tree-headless-shell') {
@@ -450,22 +471,59 @@ let PlaywrightBinary = class PlaywrightBinary extends AbstractBinary {
450
471
  browserDirname = 'chromium-tip-of-tree';
451
472
  }
452
473
  for (const [platform, remotePath] of Object.entries(downloadPaths)) {
453
- if (typeof remotePath !== 'string')
474
+ if (!remotePath)
454
475
  continue;
455
476
  const revision = browser.revisionOverrides?.[platform] ?? browser.revision;
456
477
  const itemDate = browser.browserVersion || revision;
457
- const url = DOWNLOAD_HOST + util.format(remotePath, revision);
458
- const name = path.basename(remotePath);
459
- const dir = `/builds/${browserDirname}/${revision}/`;
460
- if (!this.dirItems[dir]) {
461
- this.dirItems[`/builds/${browserDirname}/`].push({
462
- name: `${revision}/`,
463
- isDir: true,
464
- url: '',
465
- size: '-',
466
- date: revision,
467
- });
468
- this.dirItems[dir] = [];
478
+ let url;
479
+ let name;
480
+ let dir;
481
+ if (typeof remotePath === 'string') {
482
+ url = DOWNLOAD_HOST + util.format(remotePath, revision);
483
+ name = path.basename(remotePath);
484
+ dir = `/builds/${browserDirname}/${revision}/`;
485
+ if (!this.dirItems[dir]) {
486
+ this.dirItems[`/builds/${browserDirname}/`].push({
487
+ name: `${revision}/`,
488
+ isDir: true,
489
+ url: '',
490
+ size: '-',
491
+ date: revision,
492
+ });
493
+ this.dirItems[dir] = [];
494
+ }
495
+ }
496
+ else {
497
+ if (!browser.browserVersion)
498
+ continue;
499
+ const cftSuffix = remotePath.cft;
500
+ url = `${DOWNLOAD_HOST}builds/cft/${browser.browserVersion}/${cftSuffix}`;
501
+ name = path.basename(cftSuffix);
502
+ const platformDir = path.dirname(cftSuffix);
503
+ const versionDir = `/builds/cft/${browser.browserVersion}/`;
504
+ dir = `${versionDir}${platformDir}/`;
505
+ if (!this.dirItems[versionDir]) {
506
+ this.dirItems['/builds/cft/'].push({
507
+ name: `${browser.browserVersion}/`,
508
+ isDir: true,
509
+ url: '',
510
+ size: '-',
511
+ date: browser.browserVersion,
512
+ });
513
+ this.dirItems[versionDir] = [];
514
+ }
515
+ if (!this.dirItems[versionDir].some((item) => item.name === `${platformDir}/`)) {
516
+ this.dirItems[versionDir].push({
517
+ name: `${platformDir}/`,
518
+ isDir: true,
519
+ url: '',
520
+ size: '-',
521
+ date: browser.browserVersion,
522
+ });
523
+ }
524
+ if (!this.dirItems[dir]) {
525
+ this.dirItems[dir] = [];
526
+ }
469
527
  }
470
528
  if (!this.dirItems[dir].some((item) => item.name === name)) {
471
529
  this.dirItems[dir].push({
@@ -487,4 +545,4 @@ PlaywrightBinary = __decorate([
487
545
  BinaryAdapter(BinaryType.Playwright)
488
546
  ], PlaywrightBinary);
489
547
  export { PlaywrightBinary };
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheXdyaWdodEJpbmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9jb21tb24vYWRhcHRlci9iaW5hcnkvUGxheXdyaWdodEJpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFxQyxNQUFNLHFCQUFxQixDQUFDO0FBRXZHLE1BQU0sV0FBVyxHQUFHLDRDQUE0QyxDQUFDO0FBQ2pFLE1BQU0sYUFBYSxHQUFHLG1DQUFtQyxDQUFDO0FBQzFELHVIQUF1SDtBQUN2SCxNQUFNLHVCQUF1QixHQUFHLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRTFGLDBHQUEwRztBQUMxRyxnQ0FBZ0M7QUFDaEMsTUFBTSxjQUFjLEdBQUc7SUFDckIsUUFBUSxFQUFFO1FBQ1IsV0FBVyxFQUFFLFNBQVM7UUFDdEIsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixpQkFBaUIsRUFBRSx1Q0FBdUM7UUFDMUQsaUJBQWlCLEVBQUUsdUNBQXVDO1FBQzFELGlCQUFpQixFQUFFLHVDQUF1QztRQUMxRCxtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLG1CQUFtQixFQUFFLDZDQUE2QztRQUNsRSxtQkFBbUIsRUFBRSw2Q0FBNkM7UUFDbEUsbUJBQW1CLEVBQUUsNkNBQTZDO1FBQ2xFLGNBQWMsRUFBRSx1Q0FBdUM7UUFDdkQsZ0JBQWdCLEVBQUUsNkNBQTZDO1FBQy9ELGNBQWMsRUFBRSx1Q0FBdUM7UUFDdkQsZ0JBQWdCLEVBQUUsNkNBQTZDO1FBQy9ELFVBQVUsRUFBRSxxQ0FBcUM7UUFDakQsVUFBVSxFQUFFLHFDQUFxQztRQUNqRCxVQUFVLEVBQUUscUNBQXFDO1FBQ2pELEtBQUssRUFBRSxxQ0FBcUM7UUFDNUMsYUFBYSxFQUFFLDJDQUEyQztRQUMxRCxLQUFLLEVBQUUscUNBQXFDO1FBQzVDLGFBQWEsRUFBRSwyQ0FBMkM7UUFDMUQsS0FBSyxFQUFFLHFDQUFxQztRQUM1QyxhQUFhLEVBQUUsMkNBQTJDO1FBQzFELEtBQUssRUFBRSxxQ0FBcUM7UUFDNUMsYUFBYSxFQUFFLDJDQUEyQztRQUMxRCxLQUFLLEVBQUUscUNBQXFDO1FBQzVDLGFBQWEsRUFBRSwyQ0FBMkM7UUFDMUQsS0FBSyxFQUFFLHVDQUF1QztLQUMvQztJQUNELHlCQUF5QixFQUFFO1FBQ3pCLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGlCQUFpQixFQUFFLFNBQVM7UUFDNUIsaUJBQWlCLEVBQUUsc0RBQXNEO1FBQ3pFLGlCQUFpQixFQUFFLHNEQUFzRDtRQUN6RSxpQkFBaUIsRUFBRSxzREFBc0Q7UUFDekUsbUJBQW1CLEVBQUUsU0FBUztRQUM5QixtQkFBbUIsRUFBRSw0REFBNEQ7UUFDakYsbUJBQW1CLEVBQUUsNERBQTREO1FBQ2pGLG1CQUFtQixFQUFFLDREQUE0RDtRQUNqRixjQUFjLEVBQUUsc0RBQXNEO1FBQ3RFLGdCQUFnQixFQUFFLDREQUE0RDtRQUM5RSxjQUFjLEVBQUUsc0RBQXNEO1FBQ3RFLGdCQUFnQixFQUFFLDREQUE0RDtRQUM5RSxVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixLQUFLLEVBQUUsb0RBQW9EO1FBQzNELGFBQWEsRUFBRSwwREFBMEQ7UUFDekUsS0FBSyxFQUFFLG9EQUFvRDtRQUMzRCxhQUFhLEVBQUUsMERBQTBEO1FBQ3pFLEtBQUssRUFBRSxvREFBb0Q7UUFDM0QsYUFBYSxFQUFFLDBEQUEwRDtRQUN6RSxLQUFLLEVBQUUsb0RBQW9EO1FBQzNELGFBQWEsRUFBRSwwREFBMEQ7UUFDekUsS0FBSyxFQUFFLG9EQUFvRDtRQUMzRCxhQUFhLEVBQUUsMERBQTBEO1FBQ3pFLEtBQUssRUFBRSxzREFBc0Q7S0FDOUQ7SUFDRCxzQkFBc0IsRUFBRTtRQUN0QixXQUFXLEVBQUUsU0FBUztRQUN0QixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLGlCQUFpQixFQUFFLCtEQUErRDtRQUNsRixpQkFBaUIsRUFBRSwrREFBK0Q7UUFDbEYsaUJBQWlCLEVBQUUsK0RBQStEO1FBQ2xGLG1CQUFtQixFQUFFLFNBQVM7UUFDOUIsbUJBQW1CLEVBQUUscUVBQXFFO1FBQzFGLG1CQUFtQixFQUFFLHFFQUFxRTtRQUMxRixtQkFBbUIsRUFBRSxxRUFBcUU7UUFDMUYsY0FBYyxFQUFFLCtEQUErRDtRQUMvRSxnQkFBZ0IsRUFBRSxxRUFBcUU7UUFDdkYsY0FBYyxFQUFFLCtEQUErRDtRQUMvRSxnQkFBZ0IsRUFBRSxxRUFBcUU7UUFDdkYsVUFBVSxFQUFFLDZEQUE2RDtRQUN6RSxVQUFVLEVBQUUsNkRBQTZEO1FBQ3pFLFVBQVUsRUFBRSw2REFBNkQ7UUFDekUsS0FBSyxFQUFFLDZEQUE2RDtRQUNwRSxhQUFhLEVBQUUsbUVBQW1FO1FBQ2xGLEtBQUssRUFBRSw2REFBNkQ7UUFDcEUsYUFBYSxFQUFFLG1FQUFtRTtRQUNsRixLQUFLLEVBQUUsNkRBQTZEO1FBQ3BFLGFBQWEsRUFBRSxtRUFBbUU7UUFDbEYsS0FBSyxFQUFFLDZEQUE2RDtRQUNwRSxhQUFhLEVBQUUsbUVBQW1FO1FBQ2xGLEtBQUssRUFBRSw2REFBNkQ7UUFDcEUsYUFBYSxFQUFFLG1FQUFtRTtRQUNsRixLQUFLLEVBQUUsK0RBQStEO0tBQ3ZFO0lBQ0QscUNBQXFDLEVBQUU7UUFDckMsV0FBVyxFQUFFLFNBQVM7UUFDdEIsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixpQkFBaUIsRUFBRSw4RUFBOEU7UUFDakcsaUJBQWlCLEVBQUUsOEVBQThFO1FBQ2pHLGlCQUFpQixFQUFFLDhFQUE4RTtRQUNqRyxtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLG1CQUFtQixFQUFFLG9GQUFvRjtRQUN6RyxtQkFBbUIsRUFBRSxvRkFBb0Y7UUFDekcsbUJBQW1CLEVBQUUsb0ZBQW9GO1FBQ3pHLGNBQWMsRUFBRSw4RUFBOEU7UUFDOUYsZ0JBQWdCLEVBQUUsb0ZBQW9GO1FBQ3RHLGNBQWMsRUFBRSw4RUFBOEU7UUFDOUYsZ0JBQWdCLEVBQUUsb0ZBQW9GO1FBQ3RHLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLEtBQUssRUFBRSw0RUFBNEU7UUFDbkYsYUFBYSxFQUFFLGtGQUFrRjtRQUNqRyxLQUFLLEVBQUUsNEVBQTRFO1FBQ25GLGFBQWEsRUFBRSxrRkFBa0Y7UUFDakcsS0FBSyxFQUFFLDRFQUE0RTtRQUNuRixhQUFhLEVBQUUsa0ZBQWtGO1FBQ2pHLEtBQUssRUFBRSw0RUFBNEU7UUFDbkYsYUFBYSxFQUFFLGtGQUFrRjtRQUNqRyxLQUFLLEVBQUUsNEVBQTRFO1FBQ25GLGFBQWEsRUFBRSxrRkFBa0Y7UUFDakcsS0FBSyxFQUFFLDhFQUE4RTtLQUN0RjtJQUNELE9BQU8sRUFBRTtRQUNQLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGlCQUFpQixFQUFFLFNBQVM7UUFDNUIsaUJBQWlCLEVBQUUsNENBQTRDO1FBQy9ELGlCQUFpQixFQUFFLDRDQUE0QztRQUMvRCxpQkFBaUIsRUFBRSw0Q0FBNEM7UUFDL0QsbUJBQW1CLEVBQUUsU0FBUztRQUM5QixtQkFBbUIsRUFBRSxrREFBa0Q7UUFDdkUsbUJBQW1CLEVBQUUsa0RBQWtEO1FBQ3ZFLG1CQUFtQixFQUFFLGtEQUFrRDtRQUN2RSxjQUFjLEVBQUUseUNBQXlDO1FBQ3pELGdCQUFnQixFQUFFLCtDQUErQztRQUNqRSxjQUFjLEVBQUUseUNBQXlDO1FBQ3pELGdCQUFnQixFQUFFLCtDQUErQztRQUNqRSxVQUFVLEVBQUUsbUNBQW1DO1FBQy9DLFVBQVUsRUFBRSxtQ0FBbUM7UUFDL0MsVUFBVSxFQUFFLG1DQUFtQztRQUMvQyxLQUFLLEVBQUUsbUNBQW1DO1FBQzFDLGFBQWEsRUFBRSx5Q0FBeUM7UUFDeEQsS0FBSyxFQUFFLG1DQUFtQztRQUMxQyxhQUFhLEVBQUUseUNBQXlDO1FBQ3hELEtBQUssRUFBRSxtQ0FBbUM7UUFDMUMsYUFBYSxFQUFFLHlDQUF5QztRQUN4RCxLQUFLLEVBQUUsbUNBQW1DO1FBQzFDLGFBQWEsRUFBRSx5Q0FBeUM7UUFDeEQsS0FBSyxFQUFFLG1DQUFtQztRQUMxQyxhQUFhLEVBQUUseUNBQXlDO1FBQ3hELEtBQUssRUFBRSxxQ0FBcUM7S0FDN0M7SUFDRCxjQUFjLEVBQUU7UUFDZCxXQUFXLEVBQUUsU0FBUztRQUN0QixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLGlCQUFpQixFQUFFLHNEQUFzRDtRQUN6RSxpQkFBaUIsRUFBRSxzREFBc0Q7UUFDekUsaUJBQWlCLEVBQUUsc0RBQXNEO1FBQ3pFLG1CQUFtQixFQUFFLFNBQVM7UUFDOUIsbUJBQW1CLEVBQUUsU0FBUztRQUM5QixtQkFBbUIsRUFBRSw0REFBNEQ7UUFDakYsbUJBQW1CLEVBQUUsNERBQTREO1FBQ2pGLGNBQWMsRUFBRSxtREFBbUQ7UUFDbkUsZ0JBQWdCLEVBQUUseURBQXlEO1FBQzNFLGNBQWMsRUFBRSxtREFBbUQ7UUFDbkUsZ0JBQWdCLEVBQUUseURBQXlEO1FBQzNFLFVBQVUsRUFBRSw2Q0FBNkM7UUFDekQsVUFBVSxFQUFFLDZDQUE2QztRQUN6RCxVQUFVLEVBQUUsNkNBQTZDO1FBQ3pELEtBQUssRUFBRSw2Q0FBNkM7UUFDcEQsYUFBYSxFQUFFLG1EQUFtRDtRQUNsRSxLQUFLLEVBQUUsNkNBQTZDO1FBQ3BELGFBQWEsRUFBRSxtREFBbUQ7UUFDbEUsS0FBSyxFQUFFLDZDQUE2QztRQUNwRCxhQUFhLEVBQUUsbURBQW1EO1FBQ2xFLEtBQUssRUFBRSw2Q0FBNkM7UUFDcEQsYUFBYSxFQUFFLG1EQUFtRDtRQUNsRSxLQUFLLEVBQUUsNkNBQTZDO1FBQ3BELGFBQWEsRUFBRSxtREFBbUQ7UUFDbEUsS0FBSyxFQUFFLCtDQUErQztLQUN2RDtJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGlCQUFpQixFQUFFLFNBQVM7UUFDNUIsaUJBQWlCLEVBQUUsMENBQTBDO1FBQzdELGlCQUFpQixFQUFFLDBDQUEwQztRQUM3RCxpQkFBaUIsRUFBRSwwQ0FBMEM7UUFDN0QsbUJBQW1CLEVBQUUsU0FBUztRQUM5QixtQkFBbUIsRUFBRSxnREFBZ0Q7UUFDckUsbUJBQW1CLEVBQUUsZ0RBQWdEO1FBQ3JFLG1CQUFtQixFQUFFLGdEQUFnRDtRQUNyRSxjQUFjLEVBQUUsdUNBQXVDO1FBQ3ZELGdCQUFnQixFQUFFLDZDQUE2QztRQUMvRCxjQUFjLEVBQUUsdUNBQXVDO1FBQ3ZELGdCQUFnQixFQUFFLDZDQUE2QztRQUMvRCxVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsdUVBQXVFO1FBQ25GLFVBQVUsRUFBRSx1RUFBdUU7UUFDbkYsS0FBSyxFQUFFLG9DQUFvQztRQUMzQyxhQUFhLEVBQUUsMENBQTBDO1FBQ3pELEtBQUssRUFBRSxvQ0FBb0M7UUFDM0MsYUFBYSxFQUFFLDBDQUEwQztRQUN6RCxLQUFLLEVBQUUsb0NBQW9DO1FBQzNDLGFBQWEsRUFBRSwwQ0FBMEM7UUFDekQsS0FBSyxFQUFFLG9DQUFvQztRQUMzQyxhQUFhLEVBQUUsMENBQTBDO1FBQ3pELEtBQUssRUFBRSxvQ0FBb0M7UUFDM0MsYUFBYSxFQUFFLDBDQUEwQztRQUN6RCxLQUFLLEVBQUUsbUNBQW1DO0tBQzNDO0lBQ0QsTUFBTSxFQUFFO1FBQ04sV0FBVyxFQUFFLFNBQVM7UUFDdEIsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixpQkFBaUIsRUFBRSxtQ0FBbUM7UUFDdEQsaUJBQWlCLEVBQUUsbUNBQW1DO1FBQ3RELGlCQUFpQixFQUFFLG1DQUFtQztRQUN0RCxtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLG1CQUFtQixFQUFFLHlDQUF5QztRQUM5RCxtQkFBbUIsRUFBRSx5Q0FBeUM7UUFDOUQsbUJBQW1CLEVBQUUseUNBQXlDO1FBQzlELGNBQWMsRUFBRSxtQ0FBbUM7UUFDbkQsZ0JBQWdCLEVBQUUseUNBQXlDO1FBQzNELGNBQWMsRUFBRSxtQ0FBbUM7UUFDbkQsZ0JBQWdCLEVBQUUseUNBQXlDO1FBQzNELFVBQVUsRUFBRSxpQ0FBaUM7UUFDN0MsVUFBVSxFQUFFLGlDQUFpQztRQUM3QyxVQUFVLEVBQUUsaUNBQWlDO1FBQzdDLEtBQUssRUFBRSxpQ0FBaUM7UUFDeEMsYUFBYSxFQUFFLHVDQUF1QztRQUN0RCxLQUFLLEVBQUUsaUNBQWlDO1FBQ3hDLGFBQWEsRUFBRSx1Q0FBdUM7UUFDdEQsS0FBSyxFQUFFLGlDQUFpQztRQUN4QyxhQUFhLEVBQUUsdUNBQXVDO1FBQ3RELEtBQUssRUFBRSxpQ0FBaUM7UUFDeEMsYUFBYSxFQUFFLHVDQUF1QztRQUN0RCxLQUFLLEVBQUUsaUNBQWlDO1FBQ3hDLGFBQWEsRUFBRSx1Q0FBdUM7UUFDdEQsS0FBSyxFQUFFLG1DQUFtQztLQUMzQztJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGlCQUFpQixFQUFFLFNBQVM7UUFDNUIsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLGlCQUFpQixFQUFFLFNBQVM7UUFDNUIsbUJBQW1CLEVBQUUsU0FBUztRQUM5QixtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLG1CQUFtQixFQUFFLFNBQVM7UUFDOUIsbUJBQW1CLEVBQUUsU0FBUztRQUM5QixjQUFjLEVBQUUsU0FBUztRQUN6QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLGdCQUFnQixFQUFFLFNBQVM7UUFDM0IsVUFBVSxFQUFFLFNBQVM7UUFDckIsVUFBVSxFQUFFLFNBQVM7UUFDckIsVUFBVSxFQUFFLFNBQVM7UUFDckIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsS0FBSyxFQUFFLG1DQUFtQztLQUMzQztJQUNELE9BQU8sRUFBRTtRQUNQLFdBQVcsRUFBRSwrQkFBK0I7UUFDNUMsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixpQkFBaUIsRUFBRSwrQkFBK0I7UUFDbEQsaUJBQWlCLEVBQUUsK0JBQStCO1FBQ2xELGlCQUFpQixFQUFFLCtCQUErQjtRQUNsRCxtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLG1CQUFtQixFQUFFLCtCQUErQjtRQUNwRCxtQkFBbUIsRUFBRSwrQkFBK0I7UUFDcEQsbUJBQW1CLEVBQUUsK0JBQStCO1FBQ3BELGNBQWMsRUFBRSwrQkFBK0I7UUFDL0MsZ0JBQWdCLEVBQUUsK0JBQStCO1FBQ2pELGNBQWMsRUFBRSwrQkFBK0I7UUFDL0MsZ0JBQWdCLEVBQUUsK0JBQStCO1FBQ2pELFVBQVUsRUFBRSwrQkFBK0I7UUFDM0MsVUFBVSxFQUFFLCtCQUErQjtRQUMzQyxVQUFVLEVBQUUsK0JBQStCO1FBQzNDLEtBQUssRUFBRSwrQkFBK0I7UUFDdEMsYUFBYSxFQUFFLCtCQUErQjtRQUM5QyxLQUFLLEVBQUUsK0JBQStCO1FBQ3RDLGFBQWEsRUFBRSwrQkFBK0I7UUFDOUMsS0FBSyxFQUFFLCtCQUErQjtRQUN0QyxhQUFhLEVBQUUsK0JBQStCO1FBQzlDLEtBQUssRUFBRSwrQkFBK0I7UUFDdEMsYUFBYSxFQUFFLCtCQUErQjtRQUM5QyxLQUFLLEVBQUUsK0JBQStCO1FBQ3RDLGFBQWEsRUFBRSwrQkFBK0I7UUFDOUMsS0FBSyxFQUFFLCtCQUErQjtLQUN2QztDQUNPLENBQUM7QUFJSixJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFpQixTQUFRLGNBQWM7SUFFbEQsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFXO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsTUFBTSxTQUFTLEdBQWlCLEVBQUUsQ0FBQztZQUNuQyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxXQUFXLEtBQUsseUJBQXlCLElBQUksV0FBVyxLQUFLLHFDQUFxQyxFQUFFLENBQUM7b0JBQ3ZHLFNBQVM7Z0JBQ1gsQ0FBQztnQkFDRCxTQUFTLENBQUMsSUFBSSxDQUFDO29CQUNiLElBQUksRUFBRSxHQUFHLFdBQVcsR0FBRztvQkFDdkIsS0FBSyxFQUFFLElBQUk7b0JBQ1gsR0FBRyxFQUFFLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLEdBQUc7b0JBQ1QsSUFBSSxFQUFFLFVBQVU7aUJBQ2pCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxJQUFJO2dCQUNYLEdBQUcsRUFBRSxFQUFFO2dCQUNQLElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRSxVQUFVO2FBQ2pCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEdBQUc7Z0JBQ2QsR0FBRyxFQUFFO29CQUNIO3dCQUNFLElBQUksRUFBRSxTQUFTO3dCQUNmLEtBQUssRUFBRSxJQUFJO3dCQUNYLEdBQUcsRUFBRSxFQUFFO3dCQUNQLElBQUksRUFBRSxHQUFHO3dCQUNULElBQUksRUFBRSxVQUFVO3FCQUNqQjtpQkFDRjtnQkFDRCxVQUFVLEVBQUUsU0FBUzthQUN0QixDQUFDO1lBQ0YsS0FBSyxNQUFNLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELElBQUksV0FBVyxLQUFLLHlCQUF5QixJQUFJLFdBQVcsS0FBSyxxQ0FBcUMsRUFBRSxDQUFDO29CQUN2RyxTQUFTO2dCQUNYLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLFdBQVcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hELENBQUM7WUFFRCxrRkFBa0Y7WUFDbEYsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2lCQUN0RCxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFDeEUsa0NBQWtDO2lCQUNqQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNkLHlCQUF5QjtZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN0RixJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNwQyxJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsSUFBSTtvQkFDWCxHQUFHLEVBQUUsRUFBRTtvQkFDUCxJQUFJLEVBQUUsR0FBRztvQkFDVCxJQUFJLEVBQUUsTUFBTTtpQkFDYixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QyxDQUFDO1lBQ0QsS0FBSyxNQUFNLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDdEMsS0FBSyxNQUFNLElBQUksSUFBSSx1QkFBdUIsRUFBRSxDQUFDO29CQUMzQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNqRCxNQUFNLGNBQWMsR0FBRyxjQUFjLE9BQU8sSUFBSSxJQUFJLE1BQU0sQ0FBQztvQkFDM0QsTUFBTSxTQUFTLEdBQUcsYUFBYTt3QkFDN0IsQ0FBQyxDQUFDLGFBQWEsR0FBRyxzQkFBc0IsY0FBYyxFQUFFO3dCQUN4RCxDQUFDLENBQUMsYUFBYSxHQUFHLGlCQUFpQixjQUFjLEVBQUUsQ0FBQztvQkFDdEQsTUFBTSxVQUFVLEdBQUc7d0JBQ2pCLElBQUksRUFBRSxjQUFjO3dCQUNwQixLQUFLLEVBQUUsS0FBSzt3QkFDWixHQUFHLEVBQUUsU0FBUzt3QkFDZCxJQUFJLEVBQUUsR0FBRzt3QkFDVCxJQUFJLEVBQUUsT0FBTztxQkFDZCxDQUFDO29CQUNGLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO29CQUM3RSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUM7WUFFRCxNQUFNLFFBQVEsR0FLUixFQUFFLENBQUM7WUFDVCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMscUNBQXFDLE9BQU8sZ0JBQWdCLENBQUM7aUJBQzNFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNiLGNBQWM7Z0JBQ2QsTUFBTTtnQkFDTiwwQkFBMEI7Z0JBQzFCLDBCQUEwQjtnQkFDMUIsZ0NBQWdDO2dCQUNoQyx5Q0FBeUM7Z0JBQ3pDLDhCQUE4QjtnQkFDOUIsT0FBTztnQkFDUCxJQUFJO2dCQUNKLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2Qsc0ZBQXNGLEVBQ3RGLE9BQU8sRUFDUCxHQUFHLENBQ0osQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNMLENBQ0YsQ0FBQztZQUNGLDhGQUE4RjtZQUM5RixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7Z0JBQzVFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7Z0JBQ3pFLElBQUk7Z0JBQ0osd0JBQXdCO2dCQUN4Qix3QkFBd0I7Z0JBQ3hCLDhCQUE4QjtnQkFDOUIsc0NBQXNDO2dCQUN0QyxJQUFJO2dCQUNKLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDWixHQUFHLFFBQVE7d0JBQ1gsSUFBSSxFQUFFLHlCQUF5QjtxQkFDaEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBQ0Qsa0lBQWtJO1lBQ2xJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLHFDQUFxQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEYsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLHNCQUFzQixDQUFDLENBQUM7Z0JBQzlGLElBQUksaUJBQWlCLEVBQUUsQ0FBQztvQkFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDWixHQUFHLGlCQUFpQjt3QkFDcEIsSUFBSSxFQUFFLHFDQUFxQztxQkFDNUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBRUQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLGFBQWE7b0JBQUUsU0FBUztnQkFDN0IsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDbEMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7b0JBQy9DLG1EQUFtRDtvQkFDbkQsOEZBQThGO29CQUM5RixjQUFjLEdBQUcsVUFBVSxDQUFDO2dCQUM5QixDQUFDO3FCQUFNLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxxQ0FBcUMsRUFBRSxDQUFDO29CQUNsRSwyRUFBMkU7b0JBQzNFLHNIQUFzSDtvQkFDdEgsY0FBYyxHQUFHLHNCQUFzQixDQUFDO2dCQUMxQyxDQUFDO2dCQUNELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0JBQ25FLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUTt3QkFBRSxTQUFTO29CQUM3QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDO29CQUMzRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLFFBQVEsQ0FBQztvQkFDcEQsTUFBTSxHQUFHLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN2QyxNQUFNLEdBQUcsR0FBRyxXQUFXLGNBQWMsSUFBSSxRQUFRLEdBQUcsQ0FBQztvQkFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDOzRCQUMvQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEdBQUc7NEJBQ3BCLEtBQUssRUFBRSxJQUFJOzRCQUNYLEdBQUcsRUFBRSxFQUFFOzRCQUNQLElBQUksRUFBRSxHQUFHOzRCQUNULElBQUksRUFBRSxRQUFRO3lCQUNmLENBQUMsQ0FBQzt3QkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDMUIsQ0FBQztvQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7NEJBQ3RCLElBQUk7NEJBQ0osS0FBSyxFQUFFLEtBQUs7NEJBQ1osR0FBRzs0QkFDSCxJQUFJLEVBQUUsR0FBRzs0QkFDVCxJQUFJLEVBQUUsUUFBUTt5QkFDZixDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0NBQ0YsQ0FBQTtBQTlMWSxnQkFBZ0I7SUFGNUIsY0FBYyxFQUFFO0lBQ2hCLGFBQWEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0dBQ3hCLGdCQUFnQixDQThMNUIifQ==
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheXdyaWdodEJpbmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9jb21tb24vYWRhcHRlci9iaW5hcnkvUGxheXdyaWdodEJpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFxQyxNQUFNLHFCQUFxQixDQUFDO0FBRXZHLE1BQU0sV0FBVyxHQUFHLDRDQUE0QyxDQUFDO0FBQ2pFLE1BQU0sYUFBYSxHQUFHLG1DQUFtQyxDQUFDO0FBQzFELHVIQUF1SDtBQUN2SCxNQUFNLHVCQUF1QixHQUFHLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRTFGLDBHQUEwRztBQUMxRyxnRkFBZ0Y7QUFDaEYsc0ZBQXNGO0FBQ3RGLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFVLENBQUM7QUFDM0QsZ0NBQWdDO0FBQ2hDLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLFFBQVEsRUFBRTtRQUNSLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLGlCQUFpQixFQUFFLFNBQVM7UUFDNUIsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLDRCQUE0QixDQUFDO1FBQ3BELGlCQUFpQixFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQztRQUNwRCxpQkFBaUIsRUFBRSxHQUFHLENBQUMsNEJBQTRCLENBQUM7UUFDcEQsbUJBQW1CLEVBQUUsU0FBUztRQUM5QixtQkFBbUIsRUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnpmcore",
3
- "version": "4.33.0",
3
+ "version": "4.33.2",
4
4
  "description": "Private NPM Registry for Enterprise",
5
5
  "keywords": [
6
6
  "npm",
@@ -54,11 +54,11 @@
54
54
  "predev": "npm run clean",
55
55
  "dev": "egg-bin dev",
56
56
  "dev:postgresql": "CNPMCORE_DATABASE_TYPE=PostgreSQL egg-bin dev",
57
- "lint": "oxlint --type-aware --type-check",
57
+ "lint": "vp lint",
58
58
  "lint:fix": "npm run lint -- --fix",
59
59
  "typecheck": "tsc --noEmit",
60
- "fmt": "oxfmt",
61
- "fmtcheck": "oxfmt --check",
60
+ "fmt": "vp fmt",
61
+ "fmtcheck": "vp fmt --check",
62
62
  "test:postgresql": "npm run test:local:postgresql",
63
63
  "pretest:local:postgresql": "bash prepare-database-postgresql.sh",
64
64
  "test:local:postgresql": "CNPMCORE_DATABASE_TYPE=PostgreSQL egg-bin test",
@@ -85,7 +85,7 @@
85
85
  "start": "eggctl start --daemon && touch egg.status",
86
86
  "start:foreground": "eggctl start",
87
87
  "stop": "rm -f egg.status && sleep 15 && eggctl stop",
88
- "init-git-hooks": "husky"
88
+ "prepare": "vp config || true"
89
89
  },
90
90
  "dependencies": {
91
91
  "@cnpmjs/packument": "^1.7.0",
@@ -104,30 +104,29 @@
104
104
  "egg-status": "^1.0.0",
105
105
  "egg-view-nunjucks": "^2.3.0",
106
106
  "eggjs-elasticsearch": "^0.0.6",
107
- "fast-xml-parser": "^5.3.2",
107
+ "fast-xml-parser": "^5.8.0",
108
108
  "fs-cnpm": "^2.4.1",
109
109
  "ioredis": "^5.8.2",
110
110
  "leoric": "^2.14.0",
111
111
  "lodash-es": "^4.17.21",
112
112
  "mime-types": "^3.0.2",
113
113
  "mysql2": "^3.15.3",
114
- "node-rsa": "^1.1.1",
115
- "npm-package-arg": "^13.0.2",
114
+ "node-rsa": "^2.0.0",
115
+ "npm-package-arg": "^14.0.0",
116
116
  "oss-cnpm": "^5.0.1",
117
117
  "p-map": "^7.0.4",
118
118
  "pg": "^8.16.3",
119
119
  "read-env-value": "^2.0.2",
120
120
  "semver": "^7.7.3",
121
- "ssri": "^13.0.0",
121
+ "ssri": "^14.0.0",
122
122
  "tar": "^7.5.2",
123
123
  "type-fest": "^5.3.1",
124
124
  "ua-parser-js": "^2.0.7",
125
- "validate-npm-package-name": "^7.0.0"
125
+ "validate-npm-package-name": "^8.0.0"
126
126
  },
127
127
  "devDependencies": {
128
128
  "@eggjs/bin": "^8.0.2-beta.2",
129
129
  "@eggjs/mock": "^7.0.2-beta.2",
130
- "@eggjs/oxlint-config": "^1.0.0",
131
130
  "@eggjs/tsconfig": "^3.1.2-beta.2",
132
131
  "@elastic/elasticsearch-mock": "^2.1.0",
133
132
  "@simplewebauthn/typescript-types": "^7.4.0",
@@ -142,27 +141,26 @@
142
141
  "@types/semver": "^7.7.1",
143
142
  "@types/tar": "^7.0.0",
144
143
  "@types/validate-npm-package-name": "^4.0.2",
144
+ "@vitest/coverage-v8": "4.1.9",
145
145
  "coffee": "^5.5.1",
146
- "husky": "^9.1.7",
147
146
  "ioredis-mock": "^8.13.1",
148
- "lint-staged": "^16.2.7",
149
- "oxfmt": "^0.44.0",
150
- "oxlint": "^1.32.0",
151
- "oxlint-tsgolint": "^0.20.0",
152
- "typescript": "^6.0.0"
147
+ "typescript": "^6.0.0",
148
+ "vite-plus": "0.2.1"
153
149
  },
154
150
  "optionalDependencies": {
155
151
  "s3-cnpmcore": "^1.1.2"
156
152
  },
157
- "lint-staged": {
158
- "*": [
159
- "oxfmt",
160
- "oxlint --type-aware --type-check --fix"
161
- ]
153
+ "overrides": {
154
+ "@aws-sdk/xml-builder": {
155
+ "fast-xml-parser": "$fast-xml-parser"
156
+ },
157
+ "vite": "npm:@voidzero-dev/vite-plus-core@0.2.1",
158
+ "vitest": "4.1.9"
162
159
  },
163
160
  "engines": {
164
161
  "node": "^20.18.0 || ^22.18.0 || ^24.11.0"
165
162
  },
163
+ "packageManager": "npm@11.17.0",
166
164
  "egg": {
167
165
  "typescript": true
168
166
  }