Skip to content

Commit 0c514b3

Browse files
Merge branch 'main' into development
2 parents 42c54d0 + bf7ae04 commit 0c514b3

File tree

628 files changed

+17177
-36783
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

628 files changed

+17177
-36783
lines changed

.envrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
use flake

.eslintrc.yaml

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ overrides:
4747
- files: ["web_src/**/*"]
4848
globals:
4949
__webpack_public_path__: true
50-
htmx: true
5150
process: false # https://github.com/webpack/webpack/issues/15833
5251
- files: ["web_src/**/*", "docs/**/*"]
5352
env:
@@ -58,7 +57,15 @@ overrides:
5857
worker: true
5958
rules:
6059
no-restricted-globals: [2, addEventListener, blur, close, closed, confirm, defaultStatus, defaultstatus, error, event, external, find, focus, frameElement, frames, history, innerHeight, innerWidth, isFinite, isNaN, length, locationbar, menubar, moveBy, moveTo, name, onblur, onerror, onfocus, onload, onresize, onunload, open, opener, opera, outerHeight, outerWidth, pageXOffset, pageYOffset, parent, print, removeEventListener, resizeBy, resizeTo, screen, screenLeft, screenTop, screenX, screenY, scroll, scrollbars, scrollBy, scrollTo, scrollX, scrollY, status, statusbar, stop, toolbar, top]
61-
- files: ["*.config.*", "**/*.d.ts"]
60+
- files: ["*.config.*"]
61+
rules:
62+
i/no-unused-modules: [0]
63+
- files: ["**/*.d.ts"]
64+
rules:
65+
i/no-unused-modules: [0]
66+
"@typescript-eslint/consistent-type-definitions": [0]
67+
"@typescript-eslint/consistent-type-imports": [0]
68+
- files: ["web_src/js/types.ts"]
6269
rules:
6370
i/no-unused-modules: [0]
6471
- files: ["**/*.test.*", "web_src/js/test/setup.ts"]
@@ -217,7 +224,6 @@ rules:
217224
"@typescript-eslint/await-thenable": [2]
218225
"@typescript-eslint/ban-ts-comment": [2, {'ts-expect-error': false, 'ts-ignore': true, 'ts-nocheck': false, 'ts-check': false}]
219226
"@typescript-eslint/ban-tslint-comment": [0]
220-
"@typescript-eslint/ban-types": [2, {extendDefaults: true, types: {Function: false}}]
221227
"@typescript-eslint/class-literal-property-style": [0]
222228
"@typescript-eslint/class-methods-use-this": [0]
223229
"@typescript-eslint/consistent-generic-constructors": [0]
@@ -248,6 +254,7 @@ rules:
248254
"@typescript-eslint/no-dynamic-delete": [0]
249255
"@typescript-eslint/no-empty-function": [0]
250256
"@typescript-eslint/no-empty-interface": [0]
257+
"@typescript-eslint/no-empty-object-type": [2]
251258
"@typescript-eslint/no-explicit-any": [0]
252259
"@typescript-eslint/no-extra-non-null-assertion": [2]
253260
"@typescript-eslint/no-extraneous-class": [0]
@@ -259,7 +266,7 @@ rules:
259266
"@typescript-eslint/no-invalid-this": [0]
260267
"@typescript-eslint/no-invalid-void-type": [0]
261268
"@typescript-eslint/no-loop-func": [0]
262-
"@typescript-eslint/no-loss-of-precision": [2]
269+
"@typescript-eslint/no-loss-of-precision": [0]
263270
"@typescript-eslint/no-magic-numbers": [0]
264271
"@typescript-eslint/no-meaningless-void-operator": [0]
265272
"@typescript-eslint/no-misused-new": [2]
@@ -271,8 +278,9 @@ rules:
271278
"@typescript-eslint/no-non-null-assertion": [0]
272279
"@typescript-eslint/no-redeclare": [0]
273280
"@typescript-eslint/no-redundant-type-constituents": [2]
274-
"@typescript-eslint/no-require-imports": [0]
281+
"@typescript-eslint/no-require-imports": [2]
275282
"@typescript-eslint/no-restricted-imports": [0]
283+
"@typescript-eslint/no-restricted-types": [0]
276284
"@typescript-eslint/no-shadow": [0]
277285
"@typescript-eslint/no-this-alias": [0] # handled by unicorn/no-this-assignment
278286
"@typescript-eslint/no-unnecessary-boolean-literal-compare": [0]
@@ -287,6 +295,7 @@ rules:
287295
"@typescript-eslint/no-unsafe-call": [0]
288296
"@typescript-eslint/no-unsafe-declaration-merging": [2]
289297
"@typescript-eslint/no-unsafe-enum-comparison": [2]
298+
"@typescript-eslint/no-unsafe-function-type": [2]
290299
"@typescript-eslint/no-unsafe-member-access": [0]
291300
"@typescript-eslint/no-unsafe-return": [0]
292301
"@typescript-eslint/no-unsafe-unary-minus": [2]
@@ -295,7 +304,7 @@ rules:
295304
"@typescript-eslint/no-use-before-define": [0]
296305
"@typescript-eslint/no-useless-constructor": [0]
297306
"@typescript-eslint/no-useless-empty-export": [0]
298-
"@typescript-eslint/no-var-requires": [2]
307+
"@typescript-eslint/no-wrapper-object-types": [2]
299308
"@typescript-eslint/non-nullable-type-assertion-style": [0]
300309
"@typescript-eslint/only-throw-error": [2]
301310
"@typescript-eslint/parameter-properties": [0]
@@ -327,7 +336,7 @@ rules:
327336
"@typescript-eslint/switch-exhaustiveness-check": [0]
328337
"@typescript-eslint/triple-slash-reference": [2]
329338
"@typescript-eslint/typedef": [0]
330-
"@typescript-eslint/unbound-method": [2]
339+
"@typescript-eslint/unbound-method": [0] # too many false-positives
331340
"@typescript-eslint/unified-signatures": [2]
332341
accessor-pairs: [2]
333342
array-callback-return: [2, {checkForEach: true}]
@@ -505,7 +514,7 @@ rules:
505514
no-jquery/no-box-model: [2]
506515
no-jquery/no-browser: [2]
507516
no-jquery/no-camel-case: [2]
508-
no-jquery/no-class-state: [0]
517+
no-jquery/no-class-state: [2]
509518
no-jquery/no-class: [0]
510519
no-jquery/no-clone: [2]
511520
no-jquery/no-closest: [0]
@@ -561,7 +570,7 @@ rules:
561570
no-jquery/no-param: [2]
562571
no-jquery/no-parent: [0]
563572
no-jquery/no-parents: [2]
564-
no-jquery/no-parse-html-literal: [0]
573+
no-jquery/no-parse-html-literal: [2]
565574
no-jquery/no-parse-html: [2]
566575
no-jquery/no-parse-json: [2]
567576
no-jquery/no-parse-xml: [2]
@@ -592,7 +601,7 @@ rules:
592601
no-lone-blocks: [2]
593602
no-lonely-if: [0]
594603
no-loop-func: [0]
595-
no-loss-of-precision: [0] # handled by @typescript-eslint/no-loss-of-precision
604+
no-loss-of-precision: [2]
596605
no-magic-numbers: [0]
597606
no-misleading-character-class: [2]
598607
no-multi-assign: [0]
@@ -836,6 +845,7 @@ rules:
836845
unicorn/no-invalid-fetch-options: [2]
837846
unicorn/no-invalid-remove-event-listener: [2]
838847
unicorn/no-keyword-prefix: [0]
848+
unicorn/no-length-as-slice-end: [2]
839849
unicorn/no-lonely-if: [2]
840850
unicorn/no-magic-array-flat-depth: [0]
841851
unicorn/no-negated-condition: [0]

.github/labeler.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,8 @@ modifies/js:
7575
- any-glob-to-any-file:
7676
- "**/*.js"
7777
- "**/*.vue"
78+
79+
docs-update-needed:
80+
- changed-files:
81+
- any-glob-to-any-file:
82+
- "custom/conf/app.example.ini"

.github/workflows/files-changed.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ jobs:
6363
6464
docs:
6565
- "**/*.md"
66-
- "docs/**"
6766
- ".markdownlint.yaml"
6867
- "package.json"
6968
- "package-lock.json"

.github/workflows/pull-compliance.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ jobs:
191191
cache-dependency-path: package-lock.json
192192
- run: make deps-frontend
193193
- run: make lint-md
194-
- run: make docs
195194

196195
actions:
197196
if: needs.files-changed.outputs.actions == 'true' || needs.files-changed.outputs.actions == 'true'

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ prime/
108108
*_source.tar.bz2
109109
.DS_Store
110110

111+
# nix-direnv generated files
112+
.direnv/
113+
111114
# Make evidence files
112115
/.make_evidence
113116

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,4 @@ Gary Wang <[email protected]> (@BLumia)
6262
Tim-Niclas Oelschläger <[email protected]> (@zokkis)
6363
Yu Liu <[email protected]> (@HEREYUA)
6464
Kemal Zebari <[email protected]> (@kemzeb)
65+
Rowan Bohde <[email protected]> (@bohde)

Makefile

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ TAGS ?=
137137
TAGS_SPLIT := $(subst $(COMMA), ,$(TAGS))
138138
TAGS_EVIDENCE := $(MAKE_EVIDENCE_DIR)/tags
139139

140-
TEST_TAGS ?= sqlite sqlite_unlock_notify
140+
TEST_TAGS ?= $(TAGS_SPLIT) sqlite sqlite_unlock_notify
141141

142142
TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMANTIC_WORK_DIR)/node_modules $(DIST) $(MAKE_EVIDENCE_DIR) $(AIR_TMP_DIR) $(GO_LICENSE_TMP_DIR)
143143

@@ -146,7 +146,7 @@ WEB_DIRS := web_src/js web_src/css
146146

147147
ESLINT_FILES := web_src/js tools *.js *.ts tests/e2e
148148
STYLELINT_FILES := web_src/css web_src/js/components/*.vue
149-
SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github $(filter-out CHANGELOG.md, $(wildcard *.go *.js *.md *.yml *.yaml *.toml))
149+
SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) templates options/locale/locale_en-US.ini .github $(filter-out CHANGELOG.md, $(wildcard *.go *.js *.md *.yml *.yaml *.toml))
150150
EDITORCONFIG_FILES := templates .github/workflows options/locale/locale_en-US.ini
151151

152152
GO_SOURCES := $(wildcard *.go)
@@ -397,7 +397,7 @@ lint-swagger: node_modules
397397

398398
.PHONY: lint-md
399399
lint-md: node_modules
400-
npx markdownlint docs *.md
400+
npx markdownlint *.md
401401

402402
.PHONY: lint-spell
403403
lint-spell:
@@ -797,7 +797,7 @@ $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ)
797797
CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
798798

799799
.PHONY: release
800-
release: frontend generate release-windows release-linux release-darwin release-freebsd release-copy release-compress vendor release-sources release-docs release-check
800+
release: frontend generate release-windows release-linux release-darwin release-freebsd release-copy release-compress vendor release-sources release-check
801801

802802
$(DIST_DIRS):
803803
mkdir -p $(DIST_DIRS)
@@ -843,10 +843,6 @@ release-sources: | $(DIST_DIRS)
843843
tar $(addprefix $(EXCL),$(TAR_EXCLUDES)) $(TRANSFORM) -czf $(DIST)/release/gitea-src-$(VERSION).tar.gz .
844844
rm -f $(STORED_VERSION_FILE)
845845

846-
.PHONY: release-docs
847-
release-docs: | $(DIST_DIRS) docs
848-
tar -czf $(DIST)/release/gitea-docs-$(VERSION).tar.gz -C ./docs .
849-
850846
.PHONY: deps
851847
deps: deps-frontend deps-backend deps-tools deps-py
852848

@@ -862,18 +858,19 @@ deps-backend:
862858

863859
.PHONY: deps-tools
864860
deps-tools:
865-
$(GO) install $(AIR_PACKAGE)
866-
$(GO) install $(EDITORCONFIG_CHECKER_PACKAGE)
867-
$(GO) install $(GOFUMPT_PACKAGE)
868-
$(GO) install $(GOLANGCI_LINT_PACKAGE)
869-
$(GO) install $(GXZ_PACKAGE)
870-
$(GO) install $(MISSPELL_PACKAGE)
871-
$(GO) install $(SWAGGER_PACKAGE)
872-
$(GO) install $(XGO_PACKAGE)
873-
$(GO) install $(GO_LICENSES_PACKAGE)
874-
$(GO) install $(GOVULNCHECK_PACKAGE)
875-
$(GO) install $(ACTIONLINT_PACKAGE)
876-
$(GO) install $(GOPLS_PACKAGE)
861+
$(GO) install $(AIR_PACKAGE) & \
862+
$(GO) install $(EDITORCONFIG_CHECKER_PACKAGE) & \
863+
$(GO) install $(GOFUMPT_PACKAGE) & \
864+
$(GO) install $(GOLANGCI_LINT_PACKAGE) & \
865+
$(GO) install $(GXZ_PACKAGE) & \
866+
$(GO) install $(MISSPELL_PACKAGE) & \
867+
$(GO) install $(SWAGGER_PACKAGE) & \
868+
$(GO) install $(XGO_PACKAGE) & \
869+
$(GO) install $(GO_LICENSES_PACKAGE) & \
870+
$(GO) install $(GOVULNCHECK_PACKAGE) & \
871+
$(GO) install $(ACTIONLINT_PACKAGE) & \
872+
$(GO) install $(GOPLS_PACKAGE) & \
873+
wait
877874

878875
node_modules: package-lock.json
879876
npm install --no-save
@@ -891,6 +888,8 @@ update-js: node-check | node_modules
891888
npx updates -u -f package.json
892889
rm -rf node_modules package-lock.json
893890
npm install --package-lock
891+
npx nolyfill install
892+
npm install --package-lock
894893
@touch node_modules
895894

896895
.PHONY: update-py

SECURITY.md

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ Please **DO NOT** file a public issue, instead send your report privately to `se
1414

1515
Due to the sensitive nature of security information, you can use the below GPG public key to encrypt your mail body.
1616

17-
The PGP key is valid until June 24, 2024.
17+
The PGP key is valid until July 9, 2025.
1818

1919
```
2020
Key ID: 6FCD2D5B
2121
Key Type: RSA
22-
Expires: 6/24/2024
22+
Expires: 7/9/2025
2323
Key Size: 4096/4096
2424
Fingerprint: 3DE0 3D1E 144A 7F06 9359 99DC AAFD 2381 6FCD 2D5B
2525
```
@@ -40,20 +40,20 @@ q+pHZl24JYR0Kf3T/ZiOC0cGd2QJqpJtg5J6S/OqfX9NH6MsCczO8pUC1N/aHH2X
4040
CTme2nF56izORqDWKoiICteL3GpYsCV9nyCidcCmoQsS+DKvE86YhIhVIVWGRY2F
4141
lzpAjnN9/KLtQroutrm+Ft0mdjDiJUeFVl1cOHDhoyfCsQh62HumoyZoZvqzQd6e
4242
AbN11nq6aViMe2Q3je1AbiBnRnQSHxt1Tc8X4IshO3MQK1Sk7oPI6LA5oQARAQAB
43-
tCJHaXRlYSBTZWN1cml0eSA8c2VjdXJpdHlAZ2l0ZWEuaW8+iQJXBBMBCABBFiEE
44-
PeA9HhRKfwaTWZncqv0jgW/NLVsFAmK1Z/4CGwMFCQPCZwAFCwkIBwICIgIGFQoJ
45-
CAsCBBYCAwECHgcCF4AACgkQqv0jgW/NLVvnyxAAhxyNnWzw/rQO2qhzqicmZM94
46-
njSbOg+U2qMBvCdaqCQQeC+uaMmMzkDPanUUmLcyCkWqfCjPNjeSXAkE9npepVJI
47-
4HtmgxZQ94OU/h3CLbft+9GVRzUkVI29TSYGdvNtV2/BkNGoFFnKWQr119um0o6A
48-
bgha2Uy5uY8o3ZIoiKkiHRaEoWIjjeBxJxYAojsZY4YElUmsQ3ik2joG6rhFesTa
49-
ofVt/bL8G2xzpOG26WGIxBbqf2qjV6OtZ0hu/vtTPHeIWMLq0Mz0V3PEDQWfkGPE
50-
i2RYxxYDs2xzJhSQWqTNVLSq0m5xTJnbHhQPfdCX4C2jvFKgLdfmytQq49S7jiJb
51-
Z03HVOZ/PsyBlQfH9xJi06R5yQCMEA8h8Z5r3/NXW09kQ6OFRe6xshoTcxZGRPTo
52-
srhwr3uPbmCRh+YEl7qBLU6+BC5k8IRTZXqhrj/aPJu3MxgbgwV8u3vLoFSXM2lb
53-
a61FgeCQ0O7lkgVswwF0RppCaH9Ul3ZDapet/vCRg4NVwm9zOI/8q/Vj0FKA1GDR
54-
JhRu8+Ce8zlFL65D34t+PprAzSeTlbv9um3x/ZIjCco7EEKSBylt+AZj/VyA6+e5
55-
kjOQwRRc6dFJWBcorsSI2dG+H+QMF7ZabzmeCcz1v9HjLOPzYHoZAHhCmSppWTvX
56-
AJy6+lhfW2OUTqQeYSi5Ag0EYrVn/gEQALrFLQjCR3GjuHSindz0rd3Fnx/t7Sen
43+
tCJHaXRlYSBTZWN1cml0eSA8c2VjdXJpdHlAZ2l0ZWEuaW8+iQJXBBMBCABBAhsD
44+
BQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAFiEEPeA9HhRKfwaTWZncqv0jgW/N
45+
LVsFAmaMse0FCQW4fW8ACgkQqv0jgW/NLVtXLg/+PF4G9Jhlui15BTNlEBJAV2P/
46+
1QlAV2krk0fP7tykn0FR9RfGIfVV/kwC1f+ouosYPQDDevl9LWdUIM+g94DtNo2o
47+
7ACpcL3morvt5lVGpIZHL8TbX0qmFRXL/pB/cB+K6IwYvh2mrbp2zH+r4SCRyFYq
48+
BjgXYFTI1MylJ1ShAjU6Z+m3oJ+2xs5LzHS0X6zkTjzA2Zl4zQzciQ9T+wJcE7Zi
49+
HXdM1+YMF8KGNP8J9Rpug5oNDJ98lgZirRY7c3A/1xmYBiPnULwuuymdqEZO7l70
50+
SeAlE1RWYX8kbOBnBb/KY4XwE3Vic1oEzc9DiPWVH1ElX86WNNsFzuyULiwoBoWg
51+
pqZGhL9x1p5+46RGQSDczsHM7YGVtfYOiDo2PAVrmwsT0BnXnK8Oe3YIkvmUPEJu
52+
OkLt0Z6A5n8pz8zhQzuApwBsK4ncJ8zTCpvz/pfKKqZC/Vnoh3gKGhDGvOZ+b5IJ
53+
0kUTe2JsbnwFixDUMDtacQ1op8XOyLoLVmgqLn0+Pws4XPBlMof2bioFir3yHKnP
54+
gNchsF1agrlSIo5GA8u4ga+IlCSfvFIKrl7+cxacKcJYt/vbOU5KcvVJI5EtHKCG
55+
xfHjHY2ah1Qww7SxW6IXiRZZzPpsL2mBM2CD7N3qh9bV2s27wxYCdUodsIZbiyHe
56+
oWPzfBnkmiAN8KlZxHm5Ag0EYrVn/gEQALrFLQjCR3GjuHSindz0rd3Fnx/t7Sen
5757
T+p07yCSSoSlmnJHCQmwh4vfg1blyz0zZ4vkIhtpHsEgc+ZAG+WQXSsJ2iRz+eSN
5858
GwoOQl4XC3n+QWkc1ws+btr48+6UqXIQU+F8TPQyx/PIgi2nZXJB7f5+mjCqsk46
5959
XvH4nTr4kJjuqMSR/++wvre2qNQRa/q/dTsK0OaN/mJsdX6Oi+aGNaQJUhIG7F+E
@@ -64,20 +64,20 @@ qoExANj5lUTZPe8M50lI182FrcjAN7dClO3QI6pg7wy0erMxfFly3j8UQ91ysS9T
6464
s+GsP9I3cmWWQcKYxWHtE8xTXnNCVPFZQj2nwhJzae8ypfOtulBRA3dUKWGKuDH/
6565
axFENhUsT397aOU3qkP/od4a64JyNIEo4CTTSPVeWd7njsGqli2U3A4xL2CcyYvt
6666
D/MWcMBGEoLSNTswwKdom4FaJpn5KThnK/T0bQcmJblJhoCtppXisbexZnCpuS0x
67-
Zdlm2T14KJ3LABEBAAGJAjwEGAEIACYWIQQ94D0eFEp/BpNZmdyq/SOBb80tWwUC
68-
YrVn/gIbDAUJA8JnAAAKCRCq/SOBb80tWyTBD/9AGpW6QoDF7zYjHAozH9S5RGCA
69-
Y7E82dG/0xmFUwPprAG0BKmmgU6TiipyVGmKIXGYYYU92pMnbvXkYQMoa+WJNncN
70-
D3fY52UeXeffTf4cFpStlzi9xgYtOLhFamzYu/4xhkjOX+xhOSXscCiFRyT8cF3B
71-
O6c5BHU+Zj0/rGPgOyPUbx7l7B9MubB/41nNX35k08e+8T3wtWDb4XF+15HnRfva
72-
6fblO8wgU25Orv2Rm1jnKGa9DxJ8nE40IMrqDapENtDuL+zKJsvR0+ptWvEyL56U
73-
GtJJG5un6mXiLKuRQT0DEv4MdZRHDgDstDnqcbEiazVEbUuvhZZob6lRY2A19m1+
74-
7zfnDxkhqCA1RCnv4fdvcPdCMMFHwLpdhjgW0aI/uwgwrvsEz5+JRlnLvdQHlPAg
75-
q7l2fGcBSpz9U0ayyfRPjPntsNCtZl1UDxGLeciPkZhyG84zEWQbk/j52ZpRN+Ik
76-
ALpRLa8RBFmFSmXDUmwQrmm1EmARyQXwweKU31hf8ZGbCp2lPuRYm1LuGiirXSVP
77-
GysjRAJgW+VRpBKOzFQoUAUbReVWSaCwT8s17THzf71DdDb6CTj31jMLLYWwBpA/
78-
i73DgobDZMIGEZZC1EKqza8eh11xfyHFzGec03tbh+lIen+5IiRtWiEWkDS9ll0G
79-
zgS/ZdziCvdAutqnGA==
80-
=gZWO
67+
Zdlm2T14KJ3LABEBAAGJAjwEGAEIACYCGwwWIQQ94D0eFEp/BpNZmdyq/SOBb80t
68+
WwUCZoyyjQUJBbh+DwAKCRCq/SOBb80tW18XD/9MXztmf01MT+1kZdBouZ/7Rp/7
69+
9kuqo//B1G+RXau4oFtPqb67kNe2WaIc3u5B73PUHsMf3i6z4ib2KbMhZZerLn0O
70+
dRglcuPeNWmsASY3dH/XVG0cT0zvvWegagd12TJEl3Vs+7XNrOw4cwDj9L1+GH9m
71+
kSt4uaANWn/6a3RvMRhiVEYuNwhAzcKaactPmYqrLJgoVLbRSDkgyHaMQ2jKgLxk
72+
ifS/fvluGV0ub2Po6DJiqfRpd1tDvPhe9y1+r1WFDZsOcvTcZUfSt/7dXMGfqGu0
73+
2daVFlfeSXSALrDE5uc0UxodHCpP3sqRYDZevGLBRaaTkIjYXG/+N898+7K5WJF4
74+
xXOLWxM2cwGkG7eC9pugcDnBp9XlF7O+GBiZ05JUe5flXDQFZ+h3exjopu6KHF1B
75+
RnzNy8LC0UKb+AuvRIOLV92a9Q9wGWU/jaVDu6nZ0umAeuSzxiHoDsonm0Fl9QAz
76+
2/xCokebuoeLrEK7R2af3X86mqq3sVO4ax+HPYChzOaVQBiHUW/TAldWcldYYphR
77+
/e2WsbmQfvCRtz/bZfo+aUVnrHNjzVMtF2SszdVmA/04Y8pS28MqtuRqhm5DPOOd
78+
g1YeUywK5jRZ1twyo1kzJEFPLaoeaXaycsR1PMVBW0Urik5mrR/pOWq7PPoZoKb2
79+
lXYLE8bwkuQTmsyL1g==
80+
=9i7d
8181
-----END PGP PUBLIC KEY BLOCK-----
8282
8383
```

0 commit comments

Comments
 (0)