Repository: kopia/kopia
Pull request #2922 (2023-04-11 21:43:29)

build(deps-dev): bump electron-builder from 24.0.0 to 24.2.0 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) from 24.0.0 to 24.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/electron-userland/electron-builder/releases">electron-builder's releases</a>.</em></p>
<blockquote>
<h2>v24.2.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: Moved <code>electronLanguages</code> to global config to support win/linux by <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7516">electron-userland/electron-builder#7516</a></li>
<li>chore: updating tests' electron version from 11-&gt;17 and node 14-&gt;18 by <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7522">electron-userland/electron-builder#7522</a></li>
<li>fix: Fix electron-updater error handling when spawning a process asynchronously by <a href="https://github.com/NoahAndrews"><code>@​NoahAndrews</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7524">electron-userland/electron-builder#7524</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/electron-userland/electron-builder/compare/v24.1.3...v24.2.0">https://github.com/electron-userland/electron-builder/compare/v24.1.3...v24.2.0</a></p>
<h2>v24.1.3</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(docs): adding msi and msi-wrapped to documentation site by <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7507">electron-userland/electron-builder#7507</a></li>
<li>fix: &quot;Can't reconcile two non-macho files&quot; due to new &quot;PreGyp Copy&quot; functionality in electron/rebuild integration by <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7519">electron-userland/electron-builder#7519</a></li>
<li>chore(deploy): Release by <a href="https://github.com/github-actions"><code>@​github-actions</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7520">electron-userland/electron-builder#7520</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/electron-userland/electron-builder/compare/v24.1.2...v24.1.3">https://github.com/electron-userland/electron-builder/compare/v24.1.2...v24.1.3</a></p>
<h2>v24.1.2</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(docs): clarify yalc setup instructions by <a href="https://github.com/NoahAndrews"><code>@​NoahAndrews</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7498">electron-userland/electron-builder#7498</a></li>
<li>fix: NsisUpdater - only resolving true if pid !== undefined by <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7503">electron-userland/electron-builder#7503</a></li>
<li>chore(deploy): Release by <a href="https://github.com/github-actions"><code>@​github-actions</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7504">electron-userland/electron-builder#7504</a></li>
<li>chore(deps): Include all DefinitelyTyped packages as dev dependencies by <a href="https://github.com/NoahAndrews"><code>@​NoahAndrews</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7508">electron-userland/electron-builder#7508</a></li>
<li>fix: two-package.json electron version query by <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7511">electron-userland/electron-builder#7511</a></li>
<li>chore(deploy): Release by <a href="https://github.com/github-actions"><code>@​github-actions</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7509">electron-userland/electron-builder#7509</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/NoahAndrews"><code>@​NoahAndrews</code></a> made their first contribution in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7498">electron-userland/electron-builder#7498</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/electron-userland/electron-builder/compare/v24.1.1...v24.1.2">https://github.com/electron-userland/electron-builder/compare/v24.1.1...v24.1.2</a></p>
<h2>v24.1.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: refactored ffmpeg and removed related npm supdependency due to <code>request</code> vulnerability <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7495">electron-userland/electron-builder#7495</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/electron-userland/electron-builder/compare/v24.1.0...v24.1.1">https://github.com/electron-userland/electron-builder/compare/v24.1.0...v24.1.1</a></p>
<h2>v24.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: Adding new downloadAlternateFFmpeg option to download non-proprietary ffmpeg library by <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7477">electron-userland/electron-builder#7477</a></li>
<li>chore(deps): lock file maintenance by <a href="https://github.com/renovate"><code>@​renovate</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7475">electron-userland/electron-builder#7475</a></li>
<li>chore(deps): update actions/labeler digest to ba790c8 by <a href="https://github.com/renovate"><code>@​renovate</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7468">electron-userland/electron-builder#7468</a></li>
<li>fix(arm64): RPM architecture name by <a href="https://github.com/jkroepke"><code>@​jkroepke</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7466">electron-userland/electron-builder#7466</a></li>
<li>fix: updating SignOptions to leverage <code>optionsForFile</code> for entitlements by <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7491">electron-userland/electron-builder#7491</a></li>
<li>fix: Missing quote syntax error in nsis uninstaller by <a href="https://github.com/JamieRuderman"><code>@​JamieRuderman</code></a> in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7490">electron-userland/electron-builder#7490</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jkroepke"><code>@​jkroepke</code></a> made their first contribution in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7466">electron-userland/electron-builder#7466</a></li>
<li><a href="https://github.com/JamieRuderman"><code>@​JamieRuderman</code></a> made their first contribution in <a href="https://redirect.github.com/electron-userland/electron-builder/pull/7490">electron-userland/electron-builder#7490</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/CHANGELOG.md">electron-builder's changelog</a>.</em></p>
<blockquote>
<h2>24.2.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/1533501f999b364b656cdaa2048a1a7fd5e7c361"><code>1533501f</code></a>]:
<ul>
<li>app-builder-lib@24.2.0</li>
<li>dmg-builder@24.2.0</li>
</ul>
</li>
</ul>
<h2>24.1.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a href="https://redirect.github.com/electron-userland/electron-builder/pull/7519">#7519</a> <a href="https://github.com/electron-userland/electron-builder/commit/abf370395f45e4005f12131c532325a1e3232309"><code>abf37039</code></a> Thanks <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a>! - fix: &quot;Can't reconcile two non-macho files&quot; due to <code>disablePreGypCopy</code> functionality in new electron/rebuild integration</p>
</li>
<li>
<p>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/abf370395f45e4005f12131c532325a1e3232309"><code>abf37039</code></a>]:</p>
<ul>
<li>app-builder-lib@24.1.3</li>
<li>dmg-builder@24.1.3</li>
</ul>
</li>
</ul>
<h2>24.1.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a href="https://redirect.github.com/electron-userland/electron-builder/pull/7508">#7508</a> <a href="https://github.com/electron-userland/electron-builder/commit/d4c90b676aa22c745de4129f98453b97f264805c"><code>d4c90b67</code></a> Thanks <a href="https://github.com/NoahAndrews"><code>@​NoahAndrews</code></a>! - Removed DefinitelyTyped dependencies from production dependencies list</p>
</li>
<li>
<p><a href="https://redirect.github.com/electron-userland/electron-builder/pull/7511">#7511</a> <a href="https://github.com/electron-userland/electron-builder/commit/16283ccaf5788b1a60c28f6d1424f72eebecea46"><code>16283cca</code></a> Thanks <a href="https://github.com/mmaietta"><code>@​mmaietta</code></a>! - fix: utilizing frameworkInfo as primary manner of fetching electron version for installation. (fixes: <a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/7494">#7494</a>)</p>
</li>
<li>
<p>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/d4c90b676aa22c745de4129f98453b97f264805c"><code>d4c90b67</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/16283ccaf5788b1a60c28f6d1424f72eebecea46"><code>16283cca</code></a>]:</p>
<ul>
<li>builder-util@24.1.2</li>
<li>app-builder-lib@24.1.2</li>
<li>dmg-builder@24.1.2</li>
</ul>
</li>
</ul>
<h2>24.1.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/91f86aed093a78cd43e60126ebd48fa88ce7727a"><code>91f86aed</code></a>]:
<ul>
<li>app-builder-lib@24.1.1</li>
<li>dmg-builder@24.1.1</li>
</ul>
</li>
</ul>
<h2>24.1.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/2a6662eb9fe5473bc348828a96311978b7c42855"><code>2a6662eb</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/1dd26cc646c1a9708ff880920319bdaad17d20ba"><code>1dd26cc6</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/c1deace1de707faacb02ae49cfaa59d60ab6ac06"><code>c1deace1</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/1342f872f98229cf6c31069253fcf0f435bfd9df"><code>1342f872</code></a>]:
<ul>
<li>app-builder-lib@24.1.0</li>
<li>builder-util@24.1.0</li>
<li>dmg-builder@24.1.0</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/electron-userland/electron-builder/commit/cd7b79f8273a32d3d6a4f4c4a139d847835df637"><code>cd7b79f</code></a> chore(deploy): Release 24.2.0 (electron-updater@6.0.3) (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/7521">#7521</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/63772e1b87f897f8bc834f54e0952aa4506eabd1"><code>63772e1</code></a> chore(deploy): Release 24.1.3 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/7520">#7520</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/abf370395f45e4005f12131c532325a1e3232309"><code>abf3703</code></a> fix: &quot;Can't reconcile two non-macho files&quot; due to new Pre-Gyp-Copy functional...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/ac9c33ce0ffec43ec6cb71053b2177a5b872cb48"><code>ac9c33c</code></a> chore(deploy): Release 24.1.2 (electron-updater@6.0.2) (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/7509">#7509</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/16283ccaf5788b1a60c28f6d1424f72eebecea46"><code>16283cc</code></a> fix: utilizing frameworkInfo as primary manner of fetching electron version f...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/d4c90b676aa22c745de4129f98453b97f264805c"><code>d4c90b6</code></a> chore(deps): Move all DefinitelyTyped packages to dev dependencies (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/7508">#7508</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/a0e09c33d0b9692d10e384a34cf3f2ea6d7ed592"><code>a0e09c3</code></a> chore(deploy): Release 24.1.1 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/7499">#7499</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/b23a9b69ff2138be0ccb60f6454d654771e2da4f"><code>b23a9b6</code></a> chore(deploy): Release 24.1.0 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/7478">#7478</a>)</li>
<li>See full diff in <a href="https://github.com/electron-userland/electron-builder/commits/v24.2.0/packages/electron-builder">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=electron-builder&package-manager=npm_and_yarn&previous-version=24.0.0&new-version=24.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

codecov[bot]: ## [Codecov](https://codecov.io/gh/kopia/kopia/pull/2922?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kopia) Report
Patch and project coverage have no change.
> Comparison is base [(`ac8446b`)](https://codecov.io/gh/kopia/kopia/commit/ac8446b028c299927afaf2ddc3cc21d7ce0ca727?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kopia) 75.28% compared to head [(`48538c1`)](https://codecov.io/gh/kopia/kopia/pull/2922?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kopia) 75.28%.

<details><summary>Additional details and impacted files</summary>


```diff
@@           Coverage Diff           @@
##           master    #2922   +/-   ##
=======================================
  Coverage   75.28%   75.28%           
=======================================
  Files         456      456           
  Lines       36021    36021           
=======================================
  Hits        27118    27118           
  Misses       7001     7001           
  Partials     1902     1902           
```


[see 4 files with indirect coverage changes](https://codecov.io/gh/kopia/kopia/pull/2922/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kopia)

Help us with your feedback. Take ten seconds to tell us [how you rate us](https://about.codecov.io/nps?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kopia). Have a feature suggestion? [Share it here.](https://app.codecov.io/gh/feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kopia)

</details>

[:umbrella: View full report in Codecov by Sentry](https://codecov.io/gh/kopia/kopia/pull/2922?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kopia).   
:loudspeaker: Do you have feedback about the report comment? [Let us know in this issue](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=kopia).


Patch:
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 2fc268ec..565f636a 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -14,10 +14,10 @@ jobs:
   stale:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/stale@v4
+      - uses: actions/stale@v8
         with:
           # process older PRs first
           ascending: true
-          delete-branch: true
           operations-per-run: 100
+          stale-issue-label: 'stale'
           stale-pr-label: 'stale'
diff --git a/app/package-lock.json b/app/package-lock.json
index f43c3dad..5184881c 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -23,7 +23,7 @@
         "concurrently": "^7.6.0",
         "dotenv": "^16.0.3",
         "electron": "^23.1.3",
-        "electron-builder": "^24.0.0",
+        "electron-builder": "^24.2.0",
         "electron-notarize": "^1.2.2",
         "playwright": "^1.32.1",
         "playwright-core": "^1.32.1"
@@ -47,9 +47,9 @@
       }
     },
     "node_modules/@electron/asar": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.3.tgz",
-      "integrity": "sha512-wmOfE6szYyqZhRIiLH+eyZEp+bGcJI0OD/SCvSUrfBE0jvauyGYO2ZhpWxmNCcDojKu5DYrsVqT5BOCZZ01XIg==",
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.4.tgz",
+      "integrity": "sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g==",
       "dev": true,
       "dependencies": {
         "chromium-pickle-js": "^0.2.0",
@@ -62,9 +62,6 @@
       },
       "engines": {
         "node": ">=10.12.0"
-      },
-      "optionalDependencies": {
-        "@types/glob": "^7.1.1"
       }
     },
     "node_modules/@electron/get": {
@@ -260,9 +257,9 @@
       }
     },
     "node_modules/@electron/rebuild/node_modules/semver": {
-      "version": "7.3.8",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+      "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
       "dev": true,
       "dependencies": {
         "lru-cache": "^6.0.0"
@@ -452,9 +449,9 @@
       }
     },
     "node_modules/@npmcli/fs/node_modules/semver": {
-      "version": "7.3.8",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+      "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
       "dev": true,
       "dependencies": {
         "lru-cache": "^6.0.0"
@@ -565,15 +562,6 @@
         "@types/responselike": "^1.0.0"
       }
     },
-    "node_modules/@types/debug": {
-      "version": "4.1.7",
-      "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
-      "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
-      "dev": true,
-      "dependencies": {
-        "@types/ms": "*"
-      }
-    },
     "node_modules/@types/events": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
@@ -581,15 +569,6 @@
       "dev": true,
       "optional": true
     },
-    "node_modules/@types/fs-extra": {
-      "version": "9.0.13",
-      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
-      "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
     "node_modules/@types/glob": {
       "version": "7.1.1",
       "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
@@ -624,12 +603,6 @@
       "dev": true,
       "optional": true
     },
-    "node_modules/@types/ms": {
-      "version": "0.7.31",
-      "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
-      "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==",
-      "dev": true
-    },
     "node_modules/@types/node": {
       "version": "16.11.26",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz",
@@ -668,21 +641,6 @@
       "dev": true,
       "optional": true
     },
-    "node_modules/@types/yargs": {
-      "version": "17.0.22",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz",
-      "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==",
-      "dev": true,
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@types/yargs-parser": {
-      "version": "21.0.0",
-      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
-      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
-      "dev": true
-    },
     "node_modules/@types/yauzl": {
       "version": "2.10.0",
       "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
@@ -800,9 +758,9 @@
       "dev": true
     },
     "node_modules/app-builder-lib": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.0.0.tgz",
-      "integrity": "sha512-S9wBoyXz2aQ7N3nV/SQS8Cg72NyhsIYGu0xm0w8iW+CWHkIOqQrwVd/cyV1iSYt6QntLGvS54j4SpW9OIkUqPw==",
+      "version": "24.2.0",
+      "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.2.0.tgz",
+      "integrity": "sha512-tR/5NAH0twXg9+83+HwqMbHntCFCpnYBYjKn45k8RuMZ2Z+Em4bkTCB0PqPpOyck3HJN2k9tjFtzF6BFjM4yxg==",
       "dev": true,
       "dependencies": {
         "@develar/schema-utils": "~2.6.5",
@@ -814,12 +772,12 @@
         "7zip-bin": "~5.1.1",
         "async-exit-hook": "^2.0.1",
         "bluebird-lst": "^1.0.9",
-        "builder-util": "24.0.0",
+        "builder-util": "24.1.2",
         "builder-util-runtime": "9.2.0",
         "chromium-pickle-js": "^0.2.0",
         "debug": "^4.3.4",
         "ejs": "^3.1.8",
-        "electron-publish": "24.0.0",
+        "electron-publish": "24.1.2",
         "form-data": "^4.0.0",
         "fs-extra": "^10.1.0",
         "hosted-git-info": "^4.1.0",
@@ -899,9 +857,9 @@
       }
     },
     "node_modules/app-builder-lib/node_modules/semver": {
-      "version": "7.3.8",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+      "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
       "dev": true,
       "dependencies": {
         "lru-cache": "^6.0.0"
@@ -1158,13 +1116,11 @@
       "dev": true
     },
     "node_modules/builder-util": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.0.0.tgz",
-      "integrity": "sha512-7UzkO1Uanui9Eyo6X4lM2UjEz6qA7sbZ7bPNsxhIi51nZ95o4EsQxIqIZgQlwM3cPSZba5pnu8oBThsAQVAhEg==",
+      "version": "24.1.2",
+      "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.1.2.tgz",
+      "integrity": "sha512-DLq66sChtOi6+FE8EEMvZ+GA42ssVB65TKtioEhq8mmVRcbDKt/OMfMFDLyCQVw+2HuBr40UtPmojKLYsG0kNQ==",
       "dev": true,
       "dependencies": {
-        "@types/debug": "^4.1.6",
-        "@types/fs-extra": "^9.0.11",
         "7zip-bin": "~5.1.1",
         "app-builder-bin": "4.0.0",
         "bluebird-lst": "^1.0.9",
@@ -1427,9 +1383,9 @@
       }
     },
     "node_modules/cli-spinners": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz",
-      "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==",
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz",
+      "integrity": "sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==",
       "dev": true,
       "engines": {
         "node": ">=6"
@@ -1796,13 +1752,13 @@
       }
     },
     "node_modules/dmg-builder": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.0.0.tgz",
-      "integrity": "sha512-/SWd0gYfn/ddx7mmBeAymOsslyyTNIO0ZFPKMlKcaBELziMqgrc3SX5qEwfPOh2942VgEQZyWzR9FhE+Y9bo6Q==",
+      "version": "24.2.0",
+      "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.2.0.tgz",
+      "integrity": "sha512-AquMbvi/c6+yt6GaTUBlXn9BQlnv5QXT4G6JBuLZiBLxj0AN2uEDih5bYMNXaX22NEbYVfuzm9okmzXOGsHuVw==",
       "dev": true,
       "dependencies": {
-        "app-builder-lib": "24.0.0",
-        "builder-util": "24.0.0",
+        "app-builder-lib": "24.2.0",
+        "builder-util": "24.1.2",
         "builder-util-runtime": "9.2.0",
         "fs-extra": "^10.1.0",
         "iconv-lite": "^0.6.2",
@@ -1935,17 +1891,16 @@
       }
     },
     "node_modules/electron-builder": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.0.0.tgz",
-      "integrity": "sha512-31GXEEi02c0/lJwfs6cX0tQlyFEQOi9ZCCQ5GFyazdhnTlGGxYvVTTQogAG9LPxUGOzRNZiUvhai5KXmMp3a0g==",
+      "version": "24.2.0",
+      "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.2.0.tgz",
+      "integrity": "sha512-DLZJtpk6U9vO1o9uW63J8xalVfhamc4Kbq1eQgTPA5TwYp3KZH+JXubY6lZgld9OgonRmX5Cu7AHXRQzd9mRWg==",
       "dev": true,
       "dependencies": {
-        "@types/yargs": "^17.0.16",
-        "app-builder-lib": "24.0.0",
-        "builder-util": "24.0.0",
+        "app-builder-lib": "24.2.0",
+        "builder-util": "24.1.2",
         "builder-util-runtime": "9.2.0",
         "chalk": "^4.1.2",
-        "dmg-builder": "24.0.0",
+        "dmg-builder": "24.2.0",
         "fs-extra": "^10.1.0",
         "is-ci": "^3.0.0",
         "lazy-val": "^1.0.5",
@@ -2081,13 +2036,12 @@
       }
     },
     "node_modules/electron-publish": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.0.0.tgz",
-      "integrity": "sha512-XY99MVdMXfseO3oBPQ5jdT68DFcUd4eudonbVvqrCBj9qur0w/L80M/fBMmXulokTiwI4L8tIJzcswKE6W0ibA==",
+      "version": "24.1.2",
+      "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.1.2.tgz",
+      "integrity": "sha512-Hxkd+iFSbTvTVgagXzx+RsJOjSRLH1oxu/UNQY9hSqm6WiWvsBjrhNdY2SJqHGB0Jg6bejZdLO6/t3O9OXIAHQ==",
       "dev": true,
       "dependencies": {
-        "@types/fs-extra": "^9.0.11",
-        "builder-util": "24.0.0",
+        "builder-util": "24.1.2",
         "builder-util-runtime": "9.2.0",
         "chalk": "^4.1.2",
         "fs-extra": "^10.1.0",
@@ -3242,9 +3196,9 @@
       }
     },
     "node_modules/node-abi": {
-      "version": "3.33.0",
-      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz",
-      "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==",
+      "version": "3.35.0",
+      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.35.0.tgz",
+      "integrity": "sha512-jAlSOFR1Bls963NmFwxeQkNTzqjUF0NThm8Le7eRIRGzFUVJuMOFZDLv5Y30W/Oaw+KEebEJLAigwO9gQHoEmw==",
       "dev": true,
       "dependencies": {
         "semver": "^7.3.5"
@@ -3254,9 +3208,9 @@
       }
     },
     "node_modules/node-abi/node_modules/semver": {
-      "version": "7.3.8",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+      "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
       "dev": true,
       "dependencies": {
         "lru-cache": "^6.0.0"
@@ -3285,9 +3239,9 @@
       }
     },
     "node_modules/node-api-version/node_modules/semver": {
-      "version": "7.3.8",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+      "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
       "dev": true,
       "dependencies": {
         "lru-cache": "^6.0.0"
@@ -3335,9 +3289,9 @@
       }
     },
     "node_modules/node-gyp/node_modules/semver": {
-      "version": "7.3.8",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+      "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
       "dev": true,
       "dependencies": {
         "lru-cache": "^6.0.0"
@@ -4061,9 +4015,9 @@
       }
     },
     "node_modules/tar/node_modules/minipass": {
-      "version": "4.2.5",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
-      "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
+      "version": "4.2.8",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+      "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
       "dev": true,
       "engines": {
         "node": ">=8"
@@ -4418,12 +4372,11 @@
       }
     },
     "@electron/asar": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.3.tgz",
-      "integrity": "sha512-wmOfE6szYyqZhRIiLH+eyZEp+bGcJI0OD/SCvSUrfBE0jvauyGYO2ZhpWxmNCcDojKu5DYrsVqT5BOCZZ01XIg==",
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.4.tgz",
+      "integrity": "sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g==",
       "dev": true,
       "requires": {
-        "@types/glob": "^7.1.1",
         "chromium-pickle-js": "^0.2.0",
         "commander": "^5.0.0",
         "glob": "^7.1.6",
@@ -4579,9 +4532,9 @@
           }
         },
         "semver": {
-          "version": "7.3.8",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "version": "7.4.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+          "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
@@ -4717,9 +4670,9 @@
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.8",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "version": "7.4.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+          "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
@@ -4796,15 +4749,6 @@
         "@types/responselike": "^1.0.0"
       }
     },
-    "@types/debug": {
-      "version": "4.1.7",
-      "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
-      "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
-      "dev": true,
-      "requires": {
-        "@types/ms": "*"
-      }
-    },
     "@types/events": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
@@ -4812,15 +4756,6 @@
       "dev": true,
       "optional": true
     },
-    "@types/fs-extra": {
-      "version": "9.0.13",
-      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
-      "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
     "@types/glob": {
       "version": "7.1.1",
       "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
@@ -4855,12 +4790,6 @@
       "dev": true,
       "optional": true
     },
-    "@types/ms": {
-      "version": "0.7.31",
-      "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
-      "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==",
-      "dev": true
-    },
     "@types/node": {
       "version": "16.11.26",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz",
@@ -4899,21 +4828,6 @@
       "dev": true,
       "optional": true
     },
-    "@types/yargs": {
-      "version": "17.0.22",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz",
-      "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==",
-      "dev": true,
-      "requires": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "@types/yargs-parser": {
-      "version": "21.0.0",
-      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
-      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
-      "dev": true
-    },
     "@types/yauzl": {
       "version": "2.10.0",
       "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
@@ -5007,9 +4921,9 @@
       "dev": true
     },
     "app-builder-lib": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.0.0.tgz",
-      "integrity": "sha512-S9wBoyXz2aQ7N3nV/SQS8Cg72NyhsIYGu0xm0w8iW+CWHkIOqQrwVd/cyV1iSYt6QntLGvS54j4SpW9OIkUqPw==",
+      "version": "24.2.0",
+      "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.2.0.tgz",
+      "integrity": "sha512-tR/5NAH0twXg9+83+HwqMbHntCFCpnYBYjKn45k8RuMZ2Z+Em4bkTCB0PqPpOyck3HJN2k9tjFtzF6BFjM4yxg==",
       "dev": true,
       "requires": {
         "@develar/schema-utils": "~2.6.5",
@@ -5021,12 +4935,12 @@
         "7zip-bin": "~5.1.1",
         "async-exit-hook": "^2.0.1",
         "bluebird-lst": "^1.0.9",
-        "builder-util": "24.0.0",
+        "builder-util": "24.1.2",
         "builder-util-runtime": "9.2.0",
         "chromium-pickle-js": "^0.2.0",
         "debug": "^4.3.4",
         "ejs": "^3.1.8",
-        "electron-publish": "24.0.0",
+        "electron-publish": "24.1.2",
         "form-data": "^4.0.0",
         "fs-extra": "^10.1.0",
         "hosted-git-info": "^4.1.0",
@@ -5092,9 +5006,9 @@
           }
         },
         "semver": {
-          "version": "7.3.8",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "version": "7.4.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+          "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
@@ -5281,13 +5195,11 @@
       "dev": true
     },
     "builder-util": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.0.0.tgz",
-      "integrity": "sha512-7UzkO1Uanui9Eyo6X4lM2UjEz6qA7sbZ7bPNsxhIi51nZ95o4EsQxIqIZgQlwM3cPSZba5pnu8oBThsAQVAhEg==",
+      "version": "24.1.2",
+      "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.1.2.tgz",
+      "integrity": "sha512-DLq66sChtOi6+FE8EEMvZ+GA42ssVB65TKtioEhq8mmVRcbDKt/OMfMFDLyCQVw+2HuBr40UtPmojKLYsG0kNQ==",
       "dev": true,
       "requires": {
-        "@types/debug": "^4.1.6",
-        "@types/fs-extra": "^9.0.11",
         "7zip-bin": "~5.1.1",
         "app-builder-bin": "4.0.0",
         "bluebird-lst": "^1.0.9",
@@ -5489,9 +5401,9 @@
       }
     },
     "cli-spinners": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz",
-      "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==",
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz",
+      "integrity": "sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==",
       "dev": true
     },
     "cli-truncate": {
@@ -5756,13 +5668,13 @@
       }
     },
     "dmg-builder": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.0.0.tgz",
-      "integrity": "sha512-/SWd0gYfn/ddx7mmBeAymOsslyyTNIO0ZFPKMlKcaBELziMqgrc3SX5qEwfPOh2942VgEQZyWzR9FhE+Y9bo6Q==",
+      "version": "24.2.0",
+      "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.2.0.tgz",
+      "integrity": "sha512-AquMbvi/c6+yt6GaTUBlXn9BQlnv5QXT4G6JBuLZiBLxj0AN2uEDih5bYMNXaX22NEbYVfuzm9okmzXOGsHuVw==",
       "dev": true,
       "requires": {
-        "app-builder-lib": "24.0.0",
-        "builder-util": "24.0.0",
+        "app-builder-lib": "24.2.0",
+        "builder-util": "24.1.2",
         "builder-util-runtime": "9.2.0",
         "dmg-license": "^1.0.11",
         "fs-extra": "^10.1.0",
@@ -5859,17 +5771,16 @@
       }
     },
     "electron-builder": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.0.0.tgz",
-      "integrity": "sha512-31GXEEi02c0/lJwfs6cX0tQlyFEQOi9ZCCQ5GFyazdhnTlGGxYvVTTQogAG9LPxUGOzRNZiUvhai5KXmMp3a0g==",
+      "version": "24.2.0",
+      "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.2.0.tgz",
+      "integrity": "sha512-DLZJtpk6U9vO1o9uW63J8xalVfhamc4Kbq1eQgTPA5TwYp3KZH+JXubY6lZgld9OgonRmX5Cu7AHXRQzd9mRWg==",
       "dev": true,
       "requires": {
-        "@types/yargs": "^17.0.16",
-        "app-builder-lib": "24.0.0",
-        "builder-util": "24.0.0",
+        "app-builder-lib": "24.2.0",
+        "builder-util": "24.1.2",
         "builder-util-runtime": "9.2.0",
         "chalk": "^4.1.2",
-        "dmg-builder": "24.0.0",
+        "dmg-builder": "24.2.0",
         "fs-extra": "^10.1.0",
         "is-ci": "^3.0.0",
         "lazy-val": "^1.0.5",
@@ -5976,13 +5887,12 @@
       }
     },
     "electron-publish": {
-      "version": "24.0.0",
-      "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.0.0.tgz",
-      "integrity": "sha512-XY99MVdMXfseO3oBPQ5jdT68DFcUd4eudonbVvqrCBj9qur0w/L80M/fBMmXulokTiwI4L8tIJzcswKE6W0ibA==",
+      "version": "24.1.2",
+      "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.1.2.tgz",
+      "integrity": "sha512-Hxkd+iFSbTvTVgagXzx+RsJOjSRLH1oxu/UNQY9hSqm6WiWvsBjrhNdY2SJqHGB0Jg6bejZdLO6/t3O9OXIAHQ==",
       "dev": true,
       "requires": {
-        "@types/fs-extra": "^9.0.11",
-        "builder-util": "24.0.0",
+        "builder-util": "24.1.2",
         "builder-util-runtime": "9.2.0",
         "chalk": "^4.1.2",
         "fs-extra": "^10.1.0",
@@ -6871,18 +6781,18 @@
       "dev": true
     },
     "node-abi": {
-      "version": "3.33.0",
-      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz",
-      "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==",
+      "version": "3.35.0",
+      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.35.0.tgz",
+      "integrity": "sha512-jAlSOFR1Bls963NmFwxeQkNTzqjUF0NThm8Le7eRIRGzFUVJuMOFZDLv5Y30W/Oaw+KEebEJLAigwO9gQHoEmw==",
       "dev": true,
       "requires": {
         "semver": "^7.3.5"
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.8",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "version": "7.4.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+          "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
@@ -6907,9 +6817,9 @@
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.8",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "version": "7.4.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+          "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
@@ -6936,9 +6846,9 @@
       },
       "dependencies": {
         "semver": {
-          "version": "7.3.8",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-          "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+          "version": "7.4.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
+          "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
@@ -7492,9 +7402,9 @@
       },
       "dependencies": {
         "minipass": {
-          "version": "4.2.5",
-          "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
-          "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
+          "version": "4.2.8",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+          "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
           "dev": true
         },
         "mkdirp": {
diff --git a/app/package.json b/app/package.json
index 133d78d5..54450223 100644
--- a/app/package.json
+++ b/app/package.json
@@ -115,7 +115,7 @@
     "concurrently": "^7.6.0",
     "dotenv": "^16.0.3",
     "electron": "^23.1.3",
-    "electron-builder": "^24.0.0",
+    "electron-builder": "^24.2.0",
     "electron-notarize": "^1.2.2",
     "playwright": "^1.32.1",
     "playwright-core": "^1.32.1"
diff --git a/go.mod b/go.mod
index c31bdfde..908f80ff 100644
--- a/go.mod
+++ b/go.mod
@@ -8,7 +8,7 @@ require (
 	github.com/Azure/azure-storage-blob-go v0.15.0
 	github.com/alecthomas/kingpin/v2 v2.3.2
 	github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137
-	github.com/aws/aws-sdk-go v1.44.240
+	github.com/aws/aws-sdk-go v1.44.243
 	github.com/chmduquesne/rollinghash v4.0.0+incompatible
 	github.com/chromedp/cdproto v0.0.0-20230220211738-2b1ec77315c9
 	github.com/chromedp/chromedp v0.9.1
@@ -30,13 +30,13 @@ require (
 	github.com/kopia/htmluibuild v0.0.0-20230326183719-f482ef17e2c9
 	github.com/kylelemons/godebug v1.1.0
 	github.com/mattn/go-colorable v0.1.13
-	github.com/minio/minio-go/v7 v7.0.51
+	github.com/minio/minio-go/v7 v7.0.52
 	github.com/natefinch/atomic v1.0.1
 	github.com/pierrec/lz4 v2.6.1+incompatible
 	github.com/pkg/errors v0.9.1
 	github.com/pkg/profile v1.7.0
 	github.com/pkg/sftp v1.13.5
-	github.com/prometheus/client_golang v1.14.0
+	github.com/prometheus/client_golang v1.15.0
 	github.com/prometheus/client_model v0.3.0
 	github.com/prometheus/common v0.42.0
 	github.com/sanity-io/litter v1.5.5
@@ -61,7 +61,7 @@ require (
 	golang.org/x/sys v0.7.0
 	golang.org/x/term v0.7.0
 	golang.org/x/text v0.9.0
-	google.golang.org/api v0.117.0
+	google.golang.org/api v0.118.0
 	google.golang.org/grpc v1.54.0
 	google.golang.org/protobuf v1.30.0
 	gopkg.in/kothar/go-backblaze.v0 v0.0.0-20210124194846-35409b867216
@@ -114,7 +114,7 @@ require (
 	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/pmezard/go-difflib v1.0.0 // indirect
 	github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 // indirect
-	github.com/prometheus/procfs v0.8.0 // indirect
+	github.com/prometheus/procfs v0.9.0 // indirect
 	github.com/rs/xid v1.4.0 // indirect
 	github.com/sirupsen/logrus v1.9.0 // indirect
 	github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
diff --git a/go.sum b/go.sum
index 6955cb8d..eacbee97 100644
--- a/go.sum
+++ b/go.sum
@@ -44,8 +44,8 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8V
 github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0=
 github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/aws/aws-sdk-go v1.44.240 h1:38f1qBTuzotDC6bgSNLw1vrrYaoWL8MNNzwTsGjP6TY=
-github.com/aws/aws-sdk-go v1.44.240/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
+github.com/aws/aws-sdk-go v1.44.243 h1:f5cNDSVfU/TsH0FXi+DwPjOY4XAv9ehubfw/7yTQQqI=
+github.com/aws/aws-sdk-go v1.44.243/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
 github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
@@ -205,8 +205,8 @@ github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
 github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
 github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -229,8 +229,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zk
 github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
 github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
-github.com/minio/minio-go/v7 v7.0.51 h1:eSewrwc23TqUDEH8aw8Bwp4f+JDdozRrPWcKR7DZhmY=
-github.com/minio/minio-go/v7 v7.0.51/go.mod h1:IbbodHyjUAguneyucUaahv+VMNs/EOTV9du7A7/Z3HU=
+github.com/minio/minio-go/v7 v7.0.52 h1:8XhG36F6oKQUDDSuz6dY3rioMzovKjW40W6ANuN0Dps=
+github.com/minio/minio-go/v7 v7.0.52/go.mod h1:IbbodHyjUAguneyucUaahv+VMNs/EOTV9du7A7/Z3HU=
 github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
 github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -256,15 +256,15 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20=
 github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M=
-github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw=
-github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y=
+github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM=
+github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4=
 github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
 github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM=
 github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc=
-github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo=
-github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4=
+github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
+github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
 github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
@@ -423,8 +423,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
 golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-google.golang.org/api v0.117.0 h1:JsXRperckxXjnPl42ku4+KQRhWFiW6XjcZlOEHoxG8M=
-google.golang.org/api v0.117.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E=
+google.golang.org/api v0.118.0 h1:FNfHq9Z2GKULxu7cEhCaB0wWQHg43UpomrrN+24ZRdE=
+google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=


Test patch:
diff --git a/internal/freepool/freepool_test.go b/internal/freepool/freepool_test.go
new file mode 100644
index 00000000..5c1df534
--- /dev/null
+++ b/internal/freepool/freepool_test.go
@@ -0,0 +1,79 @@
+package freepool_test
+
+import (
+	"testing"
+
+	"github.com/kopia/kopia/internal/freepool"
+)
+
+func TestNewStruct(t *testing.T) {
+	// Create a new pool with a clean struct
+	cleanItem := struct{ value int }{value: 0}
+	pool := freepool.NewStruct(cleanItem)
+
+	// Take an item from the pool and verify that it matches the clean struct
+	item := pool.Take()
+	if item.value != cleanItem.value {
+		t.Errorf("Expected item to be %#v, but got %#v", cleanItem, *item)
+	}
+
+	// Modify the item and return it to the pool
+	item.value = 1
+	pool.Return(item)
+
+	// Take another item from the pool and verify that it matches the clean struct again
+	item = pool.Take()
+	if item.value != cleanItem.value {
+		t.Errorf("Expected item to be %#v, but got %#v", cleanItem, *item)
+	}
+}
+
+func TestNew(t *testing.T) {
+	// Create a new pool with a makeNew function and a clean function
+	makeNew := func() *int { v := 0; return &v }
+	clean := func(v *int) { *v = 0 }
+	pool := freepool.New(makeNew, clean)
+
+	// Take an item from the pool and verify that it's a pointer to an int with value 0
+	item := pool.Take()
+	if *item != 0 {
+		t.Errorf("Expected item to be %d, but got %d", 0, *item)
+	}
+
+	// Modify the item and return it to the pool
+	*item = 1
+	pool.Return(item)
+
+	// Take another item from the pool and verify that it's a pointer to an int with value 0 again
+	item = pool.Take()
+	if *item != 0 {
+		t.Errorf("Expected item to be %d, but got %d", 0, *item)
+	}
+}
+
+func TestPool_MultipleItems(t *testing.T) {
+	// Create a new pool with a makeNew function and a clean function
+	makeNew := func() *int { v := 0; return &v }
+	clean := func(v *int) { *v = 0 }
+	pool := freepool.New(makeNew, clean)
+
+	// Take multiple items from the pool and verify that they're all unique
+	item1 := pool.Take()
+	item2 := pool.Take()
+
+	if item1 == item2 {
+		t.Errorf("Expected items to be unique, but they're the same")
+	}
+
+	// Return the items to the pool
+	pool.Return(item1)
+	pool.Return(item2)
+
+	// Take multiple items from the pool again and verify that they're all unique again
+	item1 = pool.Take()
+	item2 = pool.Take()
+
+	if item1 == item2 {
+		t.Errorf("Expected items to be unique, but they're the same")
+	}
+}