Skip to content

Commit 7ca0b4a

Browse files
committed
Add Cure deployment + upgrade End and Flash + Remove FlashKiller deployment
1 parent 5147396 commit 7ca0b4a

File tree

11 files changed

+52
-62
lines changed

11 files changed

+52
-62
lines changed

.dapp.json

+23-36
Original file line numberDiff line numberDiff line change
@@ -262,32 +262,32 @@
262262
"url": "https://github.com/makerdao/dss-deploy"
263263
}
264264
},
265-
"dss-deploy_8b9bd85": {
265+
"dss-deploy_b2c1c5a": {
266266
"deps": {
267267
"ds-auth": "ds-auth_a51e7ca",
268268
"ds-pause": "ds-pause_5e798dd",
269269
"ds-test": "ds-test_0a5da56",
270-
"dss": "dss_17187f7",
270+
"dss": "dss_fa4f663",
271271
"esm": "esm_225ddf2"
272272
},
273273
"name": "dss-deploy",
274274
"repo": {
275-
"name": "dss-deploy-8b9bd85",
275+
"name": "dss-deploy-b2c1c5a",
276276
"ref": "HEAD",
277-
"rev": "8b9bd85ec16f3da99ef92a05de93c04561eed7bc",
277+
"rev": "b2c1c5ac107b99fd61a7f6d2f63164331bd1fbf9",
278278
"url": "https://github.com/makerdao/dss-deploy"
279279
}
280280
},
281-
"dss-flash_b8f8fdc": {
281+
"dss-flash_4d4b984": {
282282
"deps": {
283283
"ds-test": "ds-test_0a5da56",
284-
"dss": "dss_17187f7"
284+
"dss": "dss_fa4f663"
285285
},
286286
"name": "dss-flash",
287287
"repo": {
288-
"name": "dss-flash-b8f8fdc",
288+
"name": "dss-flash-4d4b984",
289289
"ref": "HEAD",
290-
"rev": "b8f8fdcf22a172bf0c27722d4a9ed8058cc4208c",
290+
"rev": "4d4b984eb9bb6d87c27ce542fe453e32e9a352ca",
291291
"url": "https://github.com/makerdao/dss-flash"
292292
}
293293
},
@@ -344,31 +344,31 @@
344344
"url": "https://github.com/makerdao/dss-vest"
345345
}
346346
},
347-
"dss_17187f7": {
347+
"dss_38f618c": {
348348
"deps": {
349349
"ds-test": "ds-test_0a5da56",
350350
"ds-token": "ds-token_a5e709b",
351351
"ds-value": "ds-value_4049ecd"
352352
},
353353
"name": "dss",
354354
"repo": {
355-
"name": "dss-17187f7",
356-
"ref": "HEAD",
357-
"rev": "17187f7d47be2f4c71d218785e1155474bbafe8a",
355+
"name": "dss-38f618c",
356+
"ref": "v1.2",
357+
"rev": "38f618c54ff27d278eacc58d543e01bd08a88680",
358358
"url": "https://github.com/makerdao/dss"
359359
}
360360
},
361-
"dss_38f618c": {
361+
"dss_fa4f663": {
362362
"deps": {
363363
"ds-test": "ds-test_0a5da56",
364364
"ds-token": "ds-token_a5e709b",
365365
"ds-value": "ds-value_4049ecd"
366366
},
367367
"name": "dss",
368368
"repo": {
369-
"name": "dss-38f618c",
370-
"ref": "v1.2",
371-
"rev": "38f618c54ff27d278eacc58d543e01bd08a88680",
369+
"name": "dss-fa4f663",
370+
"ref": "HEAD",
371+
"rev": "fa4f6630afb0624d04a003e920b0d71a00331d98",
372372
"url": "https://github.com/makerdao/dss"
373373
}
374374
},
@@ -408,18 +408,6 @@
408408
"url": "https://github.com/makerdao/esm"
409409
}
410410
},
411-
"flash-killer_7027492": {
412-
"deps": {
413-
"ds-test": "ds-test_0a5da56"
414-
},
415-
"name": "flash-killer",
416-
"repo": {
417-
"name": "flash-killer-7027492",
418-
"ref": "HEAD",
419-
"rev": "70274926eb9ee4519ba7ebbbcc6ba94c1b3e89e8",
420-
"url": "https://github.com/makerdao/flash-killer"
421-
}
422-
},
423411
"flipper-mom_3a57ea1": {
424412
"deps": {
425413
"ds-test": "ds-test_0a5da56"
@@ -432,17 +420,17 @@
432420
"url": "https://github.com/makerdao/flipper-mom"
433421
}
434422
},
435-
"ilk-registry_8ad3682": {
423+
"ilk-registry_4667403": {
436424
"deps": {
437425
"ds-test": "ds-test_0a5da56",
438426
"ds-value": "ds-value_4049ecd",
439-
"dss": "dss_17187f7"
427+
"dss": "dss_fa4f663"
440428
},
441429
"name": "ilk-registry",
442430
"repo": {
443-
"name": "ilk-registry-8ad3682",
431+
"name": "ilk-registry-4667403",
444432
"ref": "HEAD",
445-
"rev": "8ad3682b2f3d1c719c3218f4620c0fbb657a800b",
433+
"rev": "4667403b0924b8710fee938e45f59b64c10f8c55",
446434
"url": "https://github.com/makerdao/ilk-registry"
447435
}
448436
},
@@ -599,17 +587,16 @@
599587
"dss-auto-line": "dss-auto-line_bff7e6c",
600588
"dss-cdp-manager": "dss-cdp-manager_306132d",
601589
"dss-chain-log": "dss-chain-log_90cf9c0",
602-
"dss-deploy": "dss-deploy_8b9bd85",
590+
"dss-deploy": "dss-deploy_b2c1c5a",
603591
"dss-deploy-1_2": "dss-deploy_45985a9",
604592
"dss-deploy-pause-proxy-actions": "dss-deploy-pause-proxy-actions_9344383",
605-
"dss-flash": "dss-flash_b8f8fdc",
593+
"dss-flash": "dss-flash_4d4b984",
606594
"dss-gem-joins": "dss-gem-joins_123d6b7",
607595
"dss-proxy-actions": "dss-proxy-actions_5cf4634",
608596
"dss-vest": "dss-vest_4e04cec",
609597
"dss-vest-1_0_1": "dss-vest_50b7140",
610-
"flash-killer": "flash-killer_7027492",
611598
"flipper-mom": "flipper-mom_3a57ea1",
612-
"ilk-registry": "ilk-registry_8ad3682",
599+
"ilk-registry": "ilk-registry_4667403",
613600
"mkr-authority": "mkr-authority_fc19f8a",
614601
"multicall": "multicall_1e1b443",
615602
"osm": "osm_e36c874",

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ Below is the expected structure of such a config file:
7777
"dog_hole": "<Max total DAI needed to cover all debt plus penalty fees on active Clip auctions in DAI unit>",
7878
"jug_base": "<Base component of stability fee in percentage per year (e.g. 2.5)>",
7979
"pot_dsr": "<Dai Savings Rate in percentage per year (e.g. 2.5)>",
80+
"cure_wait": "<Cure cooldown period in seconds>",
8081
"end_wait": "<Global Settlement cooldown period in seconds>",
8182
"esm_pit": "<Pit address to send MKR to be burnt when ESM is fired>",
8283
"esm_min": "<Minimum amount to trigger ESM in MKR unit>",
@@ -89,7 +90,6 @@ Below is the expected structure of such a config file:
8990
"flop_tau": "<Max auction duration in seconds>",
9091
"flap_lid": "<Max amount of DAI that can be put up for sale at the same time in DAI unit (e.g. 1000000)>",
9192
"flash_max": "<Max DAI can be borrowed from flash loan module in DAI unit (e.g. 1000000)>",
92-
"flash_toll": "<Fee being charged from amount being borrow via flash loan module in percentage (e.g 0.1%)>",
9393
import: {
9494
"gov": "<GOV token address (if there is an existing one to import)> note: make sure to mint enough tokens for launch",
9595
"authority": "<Authority address (if there is an existing one to import)> note: make sure to launch MCD_ADMIN",

bin/auth-checker

+6-2
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,11 @@ checkRely "MCD_FLOP" "MCD_DEPLOY" "NOT_AUTHED"
188188
checkRely "MCD_FLOP" "MCD_VOW" "AUTHED"
189189
checkRely "MCD_FLOP" "MCD_PAUSE_PROXY" "AUTHED"
190190

191+
# cure
192+
checkRely "MCD_CURE" "MCD_DEPLOY" "NOT_AUTHED"
193+
checkRely "MCD_CURE" "MCD_END" "AUTHED"
194+
checkRely "MCD_CURE" "MCD_PAUSE_PROXY" "AUTHED"
195+
191196
# end
192197
checkRely "MCD_END" "MCD_DEPLOY" "NOT_AUTHED"
193198
checkRely "MCD_END" "MCD_ESM" "AUTHED"
@@ -356,8 +361,7 @@ checkRely "ILK_REGISTRY" "MCD_PAUSE_PROXY" "AUTHED"
356361
# dssFlash
357362
checkRely "MCD_FLASH" "DEPLOYER" "NOT_AUTHED"
358363
checkRely "MCD_FLASH" "MCD_PAUSE_PROXY" "AUTHED"
359-
checkRely "MCD_FLASH" "MCD_ESM" "AUTHED"
360-
checkRely "MCD_FLASH" "FLASH_KILLER" "AUTHED"
364+
checkRely "MCD_FLASH" "MCD_ESM" "NOT_AUTHED"
361365

362366
# chainlog
363367
checkRely "CHANGELOG" "DEPLOYER" "NOT_AUTHED"

config/goerli.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"dog_hole": "100000000",
1212
"jug_base": "0",
1313
"pot_dsr": "0.01",
14+
"cure_wait": "0",
1415
"end_wait": "262800",
1516
"esm_min": "100000",
1617
"flap_beg": "4",
@@ -22,7 +23,6 @@
2223
"flop_ttl": "21600",
2324
"flop_tau": "259200",
2425
"flash_max": "500000000",
25-
"flash_toll": "0.05",
2626
"import": {
2727
"chainlog": "0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F",
2828
"faucet": "0xa473CdDD6E4FAc72481dc36f39A409D86980D187"

config/main.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"dog_hole": "100000000",
1212
"jug_base": "0",
1313
"pot_dsr": "0",
14+
"cure_wait": "0",
1415
"end_wait": "262800",
1516
"esm_min": "100000",
1617
"flap_beg": "2",
@@ -22,7 +23,6 @@
2223
"flop_ttl": "21600",
2324
"flop_tau": "259200",
2425
"flash_max": "500000000",
25-
"flash_toll": "0.05",
2626
"import": {
2727
"chainlog": "0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F",
2828
"gov": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2",

config/testchain.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"dog_hole": "10000",
1414
"jug_base": "0",
1515
"pot_dsr": "1",
16+
"cure_wait": "0",
1617
"end_wait": "0",
1718
"esm_min": "100000",
1819
"flap_beg": "5",
@@ -24,7 +25,6 @@
2425
"flop_ttl": "10800",
2526
"flop_tau": "172800",
2627
"flash_max": "500000000",
27-
"flash_toll": "0.05",
2828
"tokens": {
2929
"ETH": {
3030
"gemDeploy": {

default.nix

-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ let
5454
dss-vest-1_0_1 = deps'.dss-vest-1_0_1 // { name = "dss-vest-1_0_1-optimized"; solcFlags = "--optimize --optimize-runs 200"; solc = solc-static-versions.solc_0_6_12; };
5555
dss-vest = deps'.dss-vest // { name = "dss-vest-optimized"; solcFlags = "--optimize --optimize-runs 200"; solc = solc-static-versions.solc_0_6_12; };
5656
dss-chain-log = deps'.dss-chain-log // { name = "dss-chain-log-optimized"; solcFlags = "--optimize --optimize-runs 200"; solc = solc-static-versions.solc_0_6_12; };
57-
flash-killer = deps'.flash-killer // { name = "flash-killer"; solc = solc-static-versions.solc_0_8_12; };
5857
});
5958

6059
in makerScriptPackage {

libexec/base-deploy

+4-10
Original file line numberDiff line numberDiff line change
@@ -314,21 +314,15 @@ calldata="$(seth calldata 'rely(address,address,address,address)' "$MCD_PAUSE" "
314314
sethSend "$PROXY_DEPLOYER" 'execute(address,bytes memory)' "$PROXY_PAUSE_ACTIONS" "$calldata"
315315

316316
# Deploy DssFlash
317-
MCD_FLASH=$(dappCreate dss-flash DssFlash "$MCD_JOIN_DAI" "$MCD_VOW")
317+
MCD_FLASH=$(dappCreate dss-flash DssFlash "$MCD_JOIN_DAI")
318318
logAddr "MCD_FLASH" "$MCD_FLASH"
319319
# Rely DssFlash in the Vat
320320
set -e
321321
calldata="$(seth calldata 'rely(address,address,address,address)' "$MCD_PAUSE" "$MCD_GOV_ACTIONS" "$MCD_VAT" "$MCD_FLASH")"
322322
sethSend "$PROXY_DEPLOYER" 'execute(address,bytes memory)' "$PROXY_PAUSE_ACTIONS" "$calldata"
323323

324-
# Deploy FlashKiller
325-
FLASH_KILLER=$(dappCreate flash-killer FlashKiller "$MCD_VAT" "$MCD_FLASH")
326-
logAddr "FLASH_KILLER" "$FLASH_KILLER"
327-
328324
# Rely PauseProxy, ESM and FlashKiller in DssFlash and deny deployer
329325
sethSend "$MCD_FLASH" 'rely(address)' "$MCD_PAUSE_PROXY"
330-
sethSend "$MCD_FLASH" 'rely(address)' "$MCD_ESM"
331-
sethSend "$MCD_FLASH" 'rely(address)' "$FLASH_KILLER"
332326
sethSend "$MCD_FLASH" 'deny(address)' "$ETH_FROM"
333327

334328
# Deploy both DssVest
@@ -378,6 +372,7 @@ cat > "$OUT_DIR"/addresses.json <<EOF
378372
"MCD_DAI": "$(seth --to-checksum-address "$MCD_DAI")",
379373
"MCD_SPOT": "$(seth --to-checksum-address "$MCD_SPOT")",
380374
"MCD_POT": "$(seth --to-checksum-address "$MCD_POT")",
375+
"MCD_CURE": "$(seth --to-checksum-address "$MCD_CURE")",
381376
"MCD_END": "$(seth --to-checksum-address "$MCD_END")",
382377
"MCD_ESM": "$(seth --to-checksum-address "$MCD_ESM")",
383378
"PROXY_ACTIONS": "$PROXY_ACTIONS",
@@ -392,7 +387,6 @@ cat > "$OUT_DIR"/addresses.json <<EOF
392387
"CLIPPER_MOM": "$CLIPPER_MOM",
393388
"MCD_IAM_AUTO_LINE": "$MCD_IAM_AUTO_LINE",
394389
"MCD_FLASH": "$MCD_FLASH",
395-
"FLASH_KILLER": "$FLASH_KILLER",
396390
"MCD_VEST_DAI": "$MCD_VEST_DAI",
397391
"MCD_VEST_MKR": "$MCD_VEST_MKR",
398392
"MCD_VEST_MKR_TREASURY": "$MCD_VEST_MKR_TREASURY",
@@ -423,6 +417,8 @@ EOF
423417

424418
"$LIBEXEC_DIR"/setters/set-pot-dsr
425419

420+
"$LIBEXEC_DIR"/setters/set-cure-wait
421+
426422
"$LIBEXEC_DIR"/setters/set-end-wait
427423

428424
"$LIBEXEC_DIR"/setters/set-beg "flap"
@@ -443,8 +439,6 @@ EOF
443439

444440
"$LIBEXEC_DIR"/setters/set-flash-max
445441

446-
"$LIBEXEC_DIR"/setters/set-flash-toll
447-
448442
"$LIBEXEC_DIR"/setters/set-ilks-price
449443

450444
"$LIBEXEC_DIR"/setters/set-ilks-pip-whitelist

libexec/dss/deploy-core

+4-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ MCD_DEPLOY=$(dappCreate dss-deploy-optimized-runs-1 DssDeploy)
3030
logAddr "MCD_DEPLOY" "$MCD_DEPLOY"
3131

3232
sethSend "$MCD_DEPLOY" "addFabs1(address,address,address,address,address,address,address)" "$VAT_FAB" "$JUG_FAB" "$VOW_FAB" "$CAT_FAB" "$DOG_FAB" "$DAI_FAB" "$MCD_JOIN_DAI_FAB"
33-
sethSend "$MCD_DEPLOY" "addFabs2(address,address,address,address,address,address,address,address,address,address)" "$FLAP_FAB" "$FLOP_FAB" "$FLIP_FAB" "$CLIP_FAB" "$CALC_FAB" "$SPOT_FAB" "$POT_FAB" "$END_FAB" "$ESM_FAB" "$PAUSE_FAB"
33+
sethSend "$MCD_DEPLOY" "addFabs2(address,address,address,address,address,address,address,address,address,address,address)" "$FLAP_FAB" "$FLOP_FAB" "$FLIP_FAB" "$CLIP_FAB" "$CALC_FAB" "$SPOT_FAB" "$POT_FAB" "$CURE_FAB" "$END_FAB" "$ESM_FAB" "$PAUSE_FAB"
3434

3535
# If no Authority is defined, create one
3636
if [ -z "$MCD_ADM" ]
@@ -77,6 +77,7 @@ MCD_FLAP="$(seth call "$MCD_DEPLOY" "flap()(address)")"
7777
MCD_FLOP="$(seth call "$MCD_DEPLOY" "flop()(address)")"
7878
MCD_SPOT="$(seth call "$MCD_DEPLOY" "spotter()(address)")"
7979
MCD_POT="$(seth call "$MCD_DEPLOY" "pot()(address)")"
80+
MCD_CURE="$(seth call "$MCD_DEPLOY" "cure()(address)")"
8081
MCD_END="$(seth call "$MCD_DEPLOY" "end()(address)")"
8182
MCD_ESM="$(seth call "$MCD_DEPLOY" "esm()(address)")"
8283
MCD_PAUSE="$(seth call "$MCD_DEPLOY" "pause()(address)")"
@@ -93,6 +94,7 @@ logAddr "MCD_FLAP" "$MCD_FLAP"
9394
logAddr "MCD_FLOP" "$MCD_FLOP"
9495
logAddr "MCD_SPOT" "$MCD_SPOT"
9596
logAddr "MCD_POT" "$MCD_POT"
97+
logAddr "MCD_CURE" "$MCD_CURE"
9698
logAddr "MCD_END" "$MCD_END"
9799
logAddr "MCD_ESM" "$MCD_ESM"
98100
logAddr "MCD_PAUSE" "$MCD_PAUSE"
@@ -114,6 +116,7 @@ export MCD_FLAP=$MCD_FLAP
114116
export MCD_FLOP=$MCD_FLOP
115117
export MCD_SPOT=$MCD_SPOT
116118
export MCD_POT=$MCD_POT
119+
export MCD_CURE=$MCD_CURE
117120
export MCD_END=$MCD_END
118121
export MCD_ESM=$MCD_ESM
119122
export MCD_PAUSE=$MCD_PAUSE

libexec/dss/deploy-fab

+5
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ CLIP_FABtx=$(dappCreate dss-deploy ClipFab)
3434
CALC_FABtx=$(dappCreate dss-deploy CalcFab)
3535
SPOT_FABtx=$(dappCreate dss-deploy-1_2 SpotFab)
3636
POT_FABtx=$(dappCreate dss-deploy-1_2 PotFab)
37+
CURE_FABtx=$(dappCreate dss-deploy CureFab)
3738
END_FABtx=$(dappCreate dss-deploy EndFab)
3839
ESM_FABtx=$(dappCreate dss-deploy ESMFab)
3940
PAUSE_FABtx=$(dappCreate dss-deploy-1_2 PauseFab)
@@ -54,6 +55,7 @@ test "$(seth receipt "$CLIP_FABtx" status)" -eq 0 && exit 1
5455
test "$(seth receipt "$CALC_FABtx" status)" -eq 0 && exit 1
5556
test "$(seth receipt "$SPOT_FABtx" status)" -eq 0 && exit 1
5657
test "$(seth receipt "$POT_FABtx" status)" -eq 0 && exit 1
58+
test "$(seth receipt "$CURE_FABtx" status)" -eq 0 && exit 1
5759
test "$(seth receipt "$END_FABtx" status)" -eq 0 && exit 1
5860
test "$(seth receipt "$ESM_FABtx" status)" -eq 0 && exit 1
5961
test "$(seth receipt "$PAUSE_FABtx" status)" -eq 0 && exit 1
@@ -72,6 +74,7 @@ CLIP_FAB=$(seth receipt "$CLIP_FABtx" contractAddress)
7274
CALC_FAB=$(seth receipt "$CALC_FABtx" contractAddress)
7375
SPOT_FAB=$(seth receipt "$SPOT_FABtx" contractAddress)
7476
POT_FAB=$(seth receipt "$POT_FABtx" contractAddress)
77+
CURE_FAB=$(seth receipt "$CURE_FABtx" contractAddress)
7578
END_FAB=$(seth receipt "$END_FABtx" contractAddress)
7679
ESM_FAB=$(seth receipt "$ESM_FABtx" contractAddress)
7780
PAUSE_FAB=$(seth receipt "$PAUSE_FABtx" contractAddress)
@@ -90,6 +93,7 @@ logAddr "CLIP_FAB" "$CLIP_FAB"
9093
logAddr "CALC_FAB" "$CALC_FAB"
9194
logAddr "SPOT_FAB" "$SPOT_FAB"
9295
logAddr "POT_FAB" "$POT_FAB"
96+
logAddr "CURE_FAB" "$CURE_FAB"
9397
logAddr "END_FAB" "$END_FAB"
9498
logAddr "ESM_FAB" "$ESM_FAB"
9599
logAddr "PAUSE_FAB" "$PAUSE_FAB"
@@ -110,6 +114,7 @@ export CLIP_FAB=$CLIP_FAB
110114
export CALC_FAB=$CALC_FAB
111115
export SPOT_FAB=$SPOT_FAB
112116
export POT_FAB=$POT_FAB
117+
export CURE_FAB=$CURE_FAB
113118
export END_FAB=$END_FAB
114119
export ESM_FAB=$ESM_FAB
115120
export PAUSE_FAB=$PAUSE_FAB

libexec/setters/set-flash-toll renamed to libexec/setters/set-cure-wait

+6-8
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,11 @@ CONFIG_FILE="$OUT_DIR/config.json"
2323
# Get addresses
2424
loadAddresses
2525

26-
log "SET FLASH TOLL:"
27-
28-
# Set beg
29-
toll=$(jq -r ".flash_toll | values" "$CONFIG_FILE")
30-
if [[ "$toll" != "" ]]; then
31-
toll=$(echo "$toll*10^16" | bc -l)
32-
toll=${toll%.*}
33-
calldata="$(seth calldata 'file(address,address,address,bytes32,uint256)' "$MCD_PAUSE" "$MCD_GOV_ACTIONS" "$MCD_FLASH" "$(seth --to-bytes32 "$(seth --from-ascii "toll")")" "$toll")"
26+
log "SET CURE WAIT:"
27+
28+
# Set general debt ceiling (if defined)
29+
wait=$(jq -r ".cure_wait | values" "$CONFIG_FILE")
30+
if [[ "$wait" != "" ]]; then
31+
calldata="$(seth calldata 'file(address,address,address,bytes32,uint256)' "$MCD_PAUSE" "$MCD_GOV_ACTIONS" "$MCD_CURE" "$(seth --to-bytes32 "$(seth --from-ascii "wait")")" "$wait")"
3432
sethSend "$PROXY_DEPLOYER" 'execute(address,bytes memory)' "$PROXY_PAUSE_ACTIONS" "$calldata"
3533
fi

0 commit comments

Comments
 (0)