Skip to content

Commit 2fe84e2

Browse files
authored
Merge pull request #3623 from fhanik/pr/duplicate-uaa-yaml
Add to PR #3622
2 parents b76aa79 + 8d20da8 commit 2fe84e2

File tree

1 file changed

+367
-0
lines changed

1 file changed

+367
-0
lines changed

scripts/boot/uaa.yml

Lines changed: 367 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,367 @@
1+
servlet:
2+
session-store: database
3+
session-cookie:
4+
encode-base64: true
5+
6+
7+
issuer:
8+
uri: http://localhost:8080/uaa
9+
10+
#The secret that an external login server will use to authenticate to the uaa using the id `login`
11+
LOGIN_SECRET: loginsecret
12+
13+
jwt:
14+
token:
15+
policy:
16+
activeKeyId: key-id-1
17+
keys:
18+
key-id-1:
19+
signingAlg: RS256
20+
signingKey: |
21+
-----BEGIN PRIVATE KEY-----
22+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCowKUlfOfJxXZt
23+
DWkVs3xb4BZJiGlLYxUAaGRY2WbG/YjHT/6frOOK+N2jFyrtElHiRXJyhV4PTsOJ
24+
YSVhKdAt15A+AoBwGLCKVHfRTLINMpyoNBDmuQKDY42XBXRoyyDvgppd5exXrncB
25+
KzcVgS25LVoP8Nvn4XJcXweQejzHLX01SeqwNZCeHUeGSXKfG7a29bR/DagMTWnA
26+
2X5YsRU+2VykK1/hVK/4ZrC0GIjrGZiwYEwL3Db0RIcWo/DQ1IJGGXIl/qsME0f/
27+
vrqbMr+8TMDivMZMERSoPFOD/wmlGGH0PeqWNKyaoK2lCiWg4BpQoKpIlv+Eo+yl
28+
77uv1xibAgMBAAECggEADtC4jwJ/MDuZ6pGtvKSBEgKp7wzyJZa00ZzYo0sVSi1L
29+
58FSDiW15Zqn84YSR2iY1l//eY0HVYCDC6aDC07W9cQoaArjLzQ6GslQqm6GOtqX
30+
+CJ3q2Uc+RKkuL7XWgEfZDexb4+PwNQfb/OIOgCZCY1kP0sHm3BNEIDQheXD1gtq
31+
8KTOBy/TtN7rV940LoudgQ8vzz+ShhmG7Dt5yws/QzaBpryLncGsGYZSDnvvEBYY
32+
dlbYQEgfLmzdKSDKW3DNV+duaBDeArxZViD7EqPpQxIOawBvl5bs6Radz7OEGZ7k
33+
hTr2fYU4JGn4WJl61yJg4Xm6pp9cJmi+BIgwLrvXNQKBgQDTPjZ6jCPXAfY6WRVD
34+
+hTKgrdhMzNALuiZeyWNSKiiDKgtx1A8OhUAgGzY/PeqmDabiVWKtso+EazfMwa+
35+
BrScf+HEZFUvNJ5tGxe6nEEFCx0n5ELUM/L4SWCtD6eFCNYcAY1XvzPD1F3KzewE
36+
vw8FbT34fef+YayuIF3PPODtJwKBgQDMgcEnXARRzsIC7i1ggqSU8N0OUSu+rA/h
37+
Md9Uh9HsY18p8JtNezAQ2vV4RL3R/CUPGXeDvCBYWhXlkNmjdCAsk24DZHs2Q18x
38+
TeHZ15PUtmd2tH/tAxANDi6RTTjpQI3w2poXHl2ZVuT8M+XkTv0WzI0c8TNog2RA
39+
SzHd5z5JbQKBgQCDlvim5E+bKzywYjfuDYYQFNeZNCTT8aSxn1XoKf/qWooVYlin
40+
++KDWnzzurmpSoKR5z4jV/SqL6aJr6aej1zJNJx2E65A5r1d6AejFp0mQCMca4P5
41+
3paXdlZD2EGZjMSb05extojPj6YRpK9G0aHQ1plJB12SSFQicEUfyKOw9wKBgD09
42+
ScLoih6ZRH2uJwZ0eKZlLj0AT5IsYiD0V0Uv2svnwfKEK21bSzxw5Prb0t/TmqFX
43+
5fMb3a+3YkE5TALnXk8a4uG/MCpCqHnSMaSTKqCS8o6YZIpr1V2jdoxqTHWEsDyE
44+
qYnsvOiTHcTsIZZplN5D6KnXDKbqWZXrLoadnYhNAoGACESLgCy552WcM7vNt4Fw
45+
7lR/O3gEnwD41gIx5EGa/UoA08Q+i7sBt9PkL4oQrJ/MYCcVNnmg9KrJdlqF4AlE
46+
HYeZSkMuQDYHcaO9xtYP3QdhD+nLXbNrCxaSSaSX8tS4BjdcSH1yMyLFg5OqiJYg
47+
wYFiptyKFm5QqFhFTY+20aE=
48+
-----END PRIVATE KEY-----
49+
revocable: false
50+
refresh:
51+
format: opaque
52+
rotate: false
53+
unique: false
54+
claims:
55+
exclude:
56+
- excluded-claim1
57+
- excluded-claim2
58+
login:
59+
saml:
60+
activeKeyId: key1
61+
keys:
62+
key1:
63+
key: |
64+
-----BEGIN RSA PRIVATE KEY-----
65+
MIICXQIBAAKBgQDHtC5gUXxBKpEqZTLkNvFwNGnNIkggNOwOQVNbpO0WVHIivig5
66+
L39WqS9u0hnA+O7MCA/KlrAR4bXaeVVhwfUPYBKIpaaTWFQR5cTR1UFZJL/OF9vA
67+
fpOwznoD66DDCnQVpbCjtDYWX+x6imxn8HCYxhMol6ZnTbSsFW6VZjFMjQIDAQAB
68+
AoGAVOj2Yvuigi6wJD99AO2fgF64sYCm/BKkX3dFEw0vxTPIh58kiRP554Xt5ges
69+
7ZCqL9QpqrChUikO4kJ+nB8Uq2AvaZHbpCEUmbip06IlgdA440o0r0CPo1mgNxGu
70+
lhiWRN43Lruzfh9qKPhleg2dvyFGQxy5Gk6KW/t8IS4x4r0CQQD/dceBA+Ndj3Xp
71+
ubHfxqNz4GTOxndc/AXAowPGpge2zpgIc7f50t8OHhG6XhsfJ0wyQEEvodDhZPYX
72+
kKBnXNHzAkEAyCA76vAwuxqAd3MObhiebniAU3SnPf2u4fdL1EOm92dyFs1JxyyL
73+
gu/DsjPjx6tRtn4YAalxCzmAMXFSb1qHfwJBAM3qx3z0gGKbUEWtPHcP7BNsrnWK
74+
vw6By7VC8bk/ffpaP2yYspS66Le9fzbFwoDzMVVUO/dELVZyBnhqSRHoXQcCQQCe
75+
A2WL8S5o7Vn19rC0GVgu3ZJlUrwiZEVLQdlrticFPXaFrn3Md82ICww3jmURaKHS
76+
N+l4lnMda79eSp3OMmq9AkA0p79BvYsLshUJJnvbk76pCjR28PK4dV1gSDUEqQMB
77+
qy45ptdwJLqLJCeNoR0JUcDNIRhOCuOPND7pcMtX6hI/
78+
-----END RSA PRIVATE KEY-----
79+
certificate: |
80+
-----BEGIN CERTIFICATE-----
81+
MIIDSTCCArKgAwIBAgIBADANBgkqhkiG9w0BAQQFADB8MQswCQYDVQQGEwJhdzEO
82+
MAwGA1UECBMFYXJ1YmExDjAMBgNVBAoTBWFydWJhMQ4wDAYDVQQHEwVhcnViYTEO
83+
MAwGA1UECxMFYXJ1YmExDjAMBgNVBAMTBWFydWJhMR0wGwYJKoZIhvcNAQkBFg5h
84+
cnViYUBhcnViYS5hcjAeFw0xNTExMjAyMjI2MjdaFw0xNjExMTkyMjI2MjdaMHwx
85+
CzAJBgNVBAYTAmF3MQ4wDAYDVQQIEwVhcnViYTEOMAwGA1UEChMFYXJ1YmExDjAM
86+
BgNVBAcTBWFydWJhMQ4wDAYDVQQLEwVhcnViYTEOMAwGA1UEAxMFYXJ1YmExHTAb
87+
BgkqhkiG9w0BCQEWDmFydWJhQGFydWJhLmFyMIGfMA0GCSqGSIb3DQEBAQUAA4GN
88+
ADCBiQKBgQDHtC5gUXxBKpEqZTLkNvFwNGnNIkggNOwOQVNbpO0WVHIivig5L39W
89+
qS9u0hnA+O7MCA/KlrAR4bXaeVVhwfUPYBKIpaaTWFQR5cTR1UFZJL/OF9vAfpOw
90+
znoD66DDCnQVpbCjtDYWX+x6imxn8HCYxhMol6ZnTbSsFW6VZjFMjQIDAQABo4Ha
91+
MIHXMB0GA1UdDgQWBBTx0lDzjH/iOBnOSQaSEWQLx1syGDCBpwYDVR0jBIGfMIGc
92+
gBTx0lDzjH/iOBnOSQaSEWQLx1syGKGBgKR+MHwxCzAJBgNVBAYTAmF3MQ4wDAYD
93+
VQQIEwVhcnViYTEOMAwGA1UEChMFYXJ1YmExDjAMBgNVBAcTBWFydWJhMQ4wDAYD
94+
VQQLEwVhcnViYTEOMAwGA1UEAxMFYXJ1YmExHTAbBgkqhkiG9w0BCQEWDmFydWJh
95+
QGFydWJhLmFyggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAYvBJ
96+
0HOZbbHClXmGUjGs+GS+xC1FO/am2suCSYqNB9dyMXfOWiJ1+TLJk+o/YZt8vuxC
97+
KdcZYgl4l/L6PxJ982SRhc83ZW2dkAZI4M0/Ud3oePe84k8jm3A7EvH5wi5hvCkK
98+
RpuRBwn3Ei+jCRouxTbzKPsuCVB+1sNyxMTXzf0=
99+
-----END CERTIFICATE-----
100+
101+
ratelimit:
102+
loggingOption: AllCalls
103+
credentialID: 'JWT:Claims+"sub"\s*:\s*"(.*?)"'
104+
limiterMappings:
105+
- name: AuthToken
106+
withCallerRemoteAddressID: 50r/s
107+
pathSelectors:
108+
- "equals:/oauth/token"
109+
- name: AuthAuthorize
110+
withCallerRemoteAddressID: 50r/s
111+
pathSelectors:
112+
- "equals:/oauth/authorize"
113+
- name: LoginPage
114+
withCallerRemoteAddressID: 50r/1s
115+
pathSelectors:
116+
- "equals:/login"
117+
- name: LoginDo
118+
withCallerRemoteAddressID: 50r/s
119+
pathSelectors:
120+
- "equals:/login.do"
121+
- name: InfoLimit
122+
withCallerRemoteAddressID: 20r/s
123+
pathSelectors:
124+
- "equals:/info"
125+
- name: SCIM
126+
withCallerCredentialsID: 500r/s
127+
pathSelectors:
128+
- "startsWith:/Users"
129+
- "startsWith:/Groups"
130+
- name: EverythingElse
131+
global: 1000r/s
132+
pathSelectors:
133+
- "other"
134+
135+
scim:
136+
userids_enabled: true
137+
users:
138+
- marissa|koala|[email protected]|Marissa|Bloggs|uaa.user
139+
- testbootuser|password|[email protected]|Test|Bootstrap|uaa.user,scim.read
140+
- admin|admin|admin|||foo.bar,uaa.admin|uaa
141+
external_groups:
142+
- organizations.acme|cn=test_org,ou=people,o=springsource,o=org
143+
- internal.read|cn=developers,ou=scopes,dc=test,dc=com
144+
- internal.write|cn=operators,ou=scopes,dc=test,dc=com
145+
- internal.everything|cn=superusers,ou=scopes,dc=test,dc=com
146+
- internal.superuser|cn=superusers,ou=scopes,dc=test,dc=com
147+
groups:
148+
zones.read: Read identity zones
149+
zones.write: Create and update identity zones
150+
idps.read: Retrieve identity providers
151+
idps.write: Create and update identity providers
152+
clients.admin: Create, modify and delete OAuth clients
153+
clients.write: Create and modify OAuth clients
154+
clients.read: Read information about OAuth clients
155+
clients.secret: Change the password of an OAuth client
156+
scim.write: Create, modify and delete SCIM entities, i.e. users and groups
157+
scim.read: Read all SCIM entities, i.e. users and groups
158+
scim.create: Create users
159+
scim.userids: Read user IDs and retrieve users by ID
160+
scim.zones: Control a user's ability to manage a zone
161+
scim.invite: Send invitations to users
162+
password.write: Change your password
163+
oauth.approval: Manage approved scopes
164+
oauth.login: Authenticate users outside of the UAA
165+
openid: Access profile information, i.e. email, first and last name, and phone number
166+
groups.update: Update group information and memberships
167+
uaa.user: Act as a user in the UAA
168+
uaa.resource: Serve resources protected by the UAA
169+
uaa.admin: Act as an administrator throughout the UAA
170+
uaa.none: Forbid acting as a user
171+
uaa.offline_token: Allow offline access
172+
173+
174+
oauth:
175+
client:
176+
autoapprove:
177+
- cf
178+
- my
179+
- support
180+
override: true
181+
clients:
182+
admin:
183+
id: admin
184+
authorized-grant-types: client_credentials
185+
scope: uaa.none
186+
authorities: 'uaa.admin,clients.read,clients.write,clients.secret,clients.trust,scim.read,scim.write,clients.admin'
187+
secret: "adminsecret"
188+
jwks: '{"alg":"RS256","e":"AQAB","kid":"cUiuzP1rw1zm9MV8F0vtrws7BLc","kty":"RSA","n":"rWuIqrVV8kuqeorvRuLio1_pdQm_z7HZJKIcCD5SQqGO0AsKyf1xa5TPzHM0lqEh2GcPTer4u7MYQZzXAAvzOsSaTmgSlenLKDYCDZy2bwOjK0izVLbJwYqiiqyiMGhKeWsYokyDNoYaefjz8izDrp47XDHnwC2eeyJ43cE8GP0JJXRyxIPFecO8rfpe3AzTrHszJ9lPSX9E8QGppSFmcnUDUQYDRipNMzXXp2FHdR7T2MZkvxzjFhVSSMiaDTmAca-Wv_Uct2HpOfC3IuKSy1jpu8yr_GT6aBsDkt1XC1iARuFf9dE83R39oNgvVMICPjeWgNoyhK-ddQAUnRDeqw"}'
189+
cf:
190+
id: cf
191+
secret: ''
192+
authorized-grant-types: 'implicit,password,refresh_token,urn:ietf:params:oauth:grant-type:jwt-bearer'
193+
scope: 'uaa.user,cloud_controller.read,cloud_controller.write,openid,password.write,scim.userids,cloud_controller.admin,scim.read,scim.write'
194+
redirect-uri: 'http://localhost:8080/**,http://localhost:7000/**'
195+
authorities: uaa.none
196+
autoapprove: 'true'
197+
app:
198+
id: app
199+
secret: appclientsecret
200+
authorized-grant-types: password,implicit,authorization_code,client_credentials,refresh_token
201+
scope: cloud_controller.read,cloud_controller.write,openid,password.write,scim.userids,organizations.acme
202+
authorities: uaa.resource
203+
autoapprove: [ openid ]
204+
redirect-uri: http://localhost:8080/**,http://localhost:7000/**
205+
signup_redirect_url: http://localhost:8080/app/
206+
change_email_redirect_url: http://localhost:8080/app/
207+
name: The Ultimate Oauth App
208+
appspecial:
209+
id: appspecial
210+
secret: appclient|secret!
211+
authorized-grant-types: password,implicit,authorization_code,client_credentials,refresh_token
212+
scope: cloud_controller.read,cloud_controller.write,openid,password.write,scim.userids,organizations.acme
213+
authorities: uaa.resource
214+
autoapprove: [ openid ]
215+
redirect-uri: http://localhost:8080/**,http://localhost:7000/**
216+
signup_redirect_url: http://localhost:8080/app/
217+
change_email_redirect_url: http://localhost:8080/app/
218+
name: The Ultimate Oauth App - Special
219+
login:
220+
id: login
221+
secret: loginsecret
222+
scope: 'openid,oauth.approvals'
223+
authorized-grant-types: 'client_credentials,authorization_code'
224+
redirect-uri: 'http://localhost/**'
225+
authorities: 'oauth.login,scim.write,clients.read,notifications.write,critical_notifications.write,emails.write,scim.userids,password.write,idps.write'
226+
autoapprove: 'true'
227+
allowpublic: 'true'
228+
dashboard:
229+
id: dashboard
230+
secret: dashboardsecret
231+
scope: 'dashboard.user,openid'
232+
authorized-grant-types: authorization_code
233+
authorities: uaa.resource
234+
redirect-uri: 'http://localhost:8080/uaa/'
235+
notifications:
236+
id: notifications
237+
secret: notificationssecret
238+
authorized-grant-types: client_credentials
239+
authorities: 'cloud_controller.admin,scim.read'
240+
identity:
241+
id: identity
242+
secret: identitysecret
243+
authorized-grant-types: 'authorization_code,client_credentials,refresh_token,password'
244+
scope: 'cloud_controller.admin,cloud_controller.read,cloud_controller.write,openid,zones.*.*,zones.*.*.*,zones.read,zones.write'
245+
authorities: 'scim.zones,zones.read,cloud_controller.read,uaa.resource,zones.write'
246+
autoapprove: 'true'
247+
redirect-uri: 'http://localhost/*,http://localhost:8080/**,http://oidcloginit.localhost:8080/uaa/**'
248+
oauth_showcase_authorization_code:
249+
id: oauth_showcase_authorization_code
250+
secret: secret
251+
authorized-grant-types: authorization_code
252+
scope: openid
253+
authorities: uaa.resource
254+
redirect-uri: http://localhost:8080/uaa/
255+
allowedproviders: [ uaa ]
256+
oauth_showcase_client_credentials:
257+
id: oauth_showcase_client_credentials
258+
secret: secret
259+
authorized-grant-types: client_credentials
260+
scope: uaa.none
261+
authorities: 'uaa.resource,clients.read'
262+
oauth_showcase_password_grant:
263+
id: oauth_showcase_password_grant
264+
secret: secret
265+
authorized-grant-types: password
266+
scope: openid
267+
authorities: uaa.resource
268+
oauth_showcase_implicit_grant:
269+
id: oauth_showcase_implicit_grant
270+
authorized-grant-types: implicit
271+
scope: openid
272+
authorities: uaa.resource
273+
redirect-uri: 'http://localhost:8080/uaa/'
274+
oauth_showcase_user_token:
275+
id: oauth_showcase_user_token
276+
authorized-grant-types: 'user_token,password,refresh_token'
277+
scope: 'openid,uaa.user'
278+
secret: secret
279+
oauth_showcase_user_token_public:
280+
id: oauth_showcase_user_token_public
281+
secret: ''
282+
authorized-grant-types: 'user_token,password,authorization_code'
283+
scope: 'openid,uaa.user'
284+
redirect-uri: 'http://localhost:8080/uaa/'
285+
allowpublic: 'true'
286+
oauth_showcase_saml2_bearer:
287+
id: oauth_showcase_saml2_bearer
288+
authorized-grant-types: 'password,urn:ietf:params:oauth:grant-type:saml2-bearer'
289+
scope: 'openid,uaa.user'
290+
secret: secret
291+
some_client_that_contains_redirect_uri_matching_request_param:
292+
id: some_client_that_contains_redirect_uri_matching_request_param
293+
authorized-grant-types: 'uaa.admin,clients.read,clients.write,clients.secret,scim.read,scim.write,clients.admin'
294+
scope: openid
295+
authorities: uaa.resource
296+
redirect-uri: 'http://redirect.localhost'
297+
client_with_bcrypt_prefix:
298+
id: client_with_bcrypt_prefix
299+
secret: password
300+
authorized-grant-types: client_credentials
301+
authorities: uaa.none
302+
use-bcrypt-prefix: 'true'
303+
jku_test:
304+
id: jku_test
305+
secret: secret
306+
authorized-grant-types: 'password,client_credentials,refresh_token,authorization_code'
307+
authorities: uaa.none
308+
autoapprove: 'true'
309+
scope: 'openid,oauth.approvals,user_attributes'
310+
redirect-uri: 'http://localhost/**'
311+
jku_test_without_autoapprove:
312+
id: jku_test_without_autoapprove
313+
secret: secret
314+
authorized-grant-types: 'password,client_credentials,refresh_token,authorization_code'
315+
authorities: uaa.none
316+
autoapprove: 'false'
317+
scope: 'openid,oauth.approvals,user_attributes'
318+
redirect-uri: 'http://localhost/**'
319+
client_without_openid:
320+
id: client_without_openid
321+
secret: secret
322+
authorized-grant-types: 'password,client_credentials,refresh_token,authorization_code'
323+
authorities: uaa.none
324+
autoapprove: 'true'
325+
scope: password.write
326+
redirect-uri: 'http://localhost/**'
327+
client_with_jwks_trust:
328+
id: client_with_jwks_trust
329+
authorized-grant-types: 'authorization_code,client_credentials,refresh_token,password'
330+
scope: 'openid,password.write,scim.userids,cloud_controller.read,cloud_controller.write'
331+
authorities: 'password.write,scim.userids,cloud_controller.read,cloud_controller.write,uaa.resource'
332+
autoapprove: 'true'
333+
redirect-uri: 'http://localhost/*,http://localhost:8080/**,http://localhost:7000/**'
334+
jwks: '{"kty":"RSA","e":"AQAB","use":"sig","kid":"key-id-1","alg":"RS256","n":"qMClJXznycV2bQ1pFbN8W-AWSYhpS2MVAGhkWNlmxv2Ix0_-n6zjivjdoxcq7RJR4kVycoVeD07DiWElYSnQLdeQPgKAcBiwilR30UyyDTKcqDQQ5rkCg2ONlwV0aMsg74KaXeXsV653ASs3FYEtuS1aD_Db5-FyXF8HkHo8xy19NUnqsDWQnh1Hhklynxu2tvW0fw2oDE1pwNl-WLEVPtlcpCtf4VSv-GawtBiI6xmYsGBMC9w29ESHFqPw0NSCRhlyJf6rDBNH_766mzK_vEzA4rzGTBEUqDxTg_8JpRhh9D3qljSsmqCtpQoloOAaUKCqSJb_hKPspe-7r9cYmw"}'
335+
client_with_allowpublic_and_jwks_uri_trust:
336+
id: client_with_allowpublic_and_jwks_uri_trust
337+
authorized-grant-types: 'authorization_code,client_credentials,refresh_token,password,urn:ietf:params:oauth:grant-type:jwt-bearer'
338+
scope: 'openid,password.write,scim.userids,cloud_controller.read,cloud_controller.write'
339+
authorities: 'password.write,scim.userids,cloud_controller.read,cloud_controller.write,uaa.resource'
340+
autoapprove: 'true'
341+
allowpublic: 'true'
342+
redirect-uri: 'http://localhost/*,http://localhost:8080/**,http://localhost:7000/**'
343+
jwks_uri: 'http://localhost:8080/uaa/token_keys'
344+
client_federated_jwt_trust:
345+
id: client_federated_jwt_trust
346+
authorized-grant-types: 'authorization_code,client_credentials,refresh_token,password,urn:ietf:params:oauth:grant-type:jwt-bearer'
347+
scope: 'openid,password.write,scim.userids,cloud_controller.read,cloud_controller.write'
348+
authorities: 'password.write,scim.userids,cloud_controller.read,cloud_controller.write,uaa.resource'
349+
autoapprove: 'true'
350+
redirect-uri: 'http://localhost/*,http://localhost:8080/**,http://localhost:7000/**'
351+
jwt_creds: '[{"iss":"http://localhost:8080/uaa/oauth/token","sub":"client_with_jwks_trust","aud":"client_with_jwks_trust"}]'
352+
user:
353+
authorities:
354+
- openid
355+
- scim.me
356+
- cloud_controller.read
357+
- cloud_controller.write
358+
- cloud_controller_service_permissions.read
359+
- password.write
360+
- scim.userids
361+
- uaa.user
362+
- approvals.me
363+
- oauth.approvals
364+
- profile
365+
- roles
366+
- user_attributes
367+
- uaa.offline_token

0 commit comments

Comments
 (0)