Token Dai Stablecoin

 

Overview ERC20

Price
$1.00 @ 0.000273 ETH (-0.01%)
Fully Diluted Market Cap
Total Supply:
54,458,030.0137 DAI

Holders:
126,333 addresses
Balance
0 DAI

Value
$0.00
0x6f82a3c19dc0f8d745b72aa263d8b37a1ff18946
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Multi-Collateral Dai, brings a lot of new and exciting features, such as support for new CDP collateral types and Dai Savings Rate.

Market

Volume (24H):$789,483,823.00
Market Capitalization:$5,403,598,303.00
Circulating Supply:5,410,976,732.00 DAI
Market Data Source: Coinmarketcap


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
1
Uniswap V3 (Ethereum)
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$1.002
0.0000141 Btc
$35,185,276.00
33,312,946.040 0X6B175474E89094C44DA98B954EEDEAC495271D0F
21.2097%
2
Uniswap V3 (Ethereum)
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48$0.9997
0.0000140 Btc
$32,133,811.00
32,148,278.822 0X6B175474E89094C44DA98B954EEDEAC495271D0F
20.4682%
3
Uniswap V3 (Ethereum)
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$1.003
0.0000141 Btc
$29,266,584.00
26,415,240.977 0X6B175474E89094C44DA98B954EEDEAC495271D0F
16.8181%
4
Uniswap V3 (Ethereum)
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XDAC17F958D2EE523A2206206994597C13D831EC7$0.9998
0.0000140 Btc
$14,235,951.00
14,241,641.853 0X6B175474E89094C44DA98B954EEDEAC495271D0F
9.0674%
5
Uniswap V2 (Ethereum)
0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2-0X6B175474E89094C44DA98B954EEDEAC495271D0F$0.9924
0.0000140 Btc
$8,765,411.00
2,931.081 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2
0.0019%
6
Uniswap V3 (Arbitrum One)
0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0XFD086BC7CD5C481DCC9C85EBE478A1C0B69FCBB9$0.9991
0.0000140 Btc
$5,401,068.00
5,405,691.430 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1
3.4417%
7
Binance
USDT-DAI$0.9999
0.0000140 Btc
$5,199,727.00
5,198,332.000 USDT
3.3097%
8
HTX
DAI-USDT$0.9994
0.0000141 Btc
$4,953,977.00
4,954,709.217 DAI
3.1546%
9
Cryptology
BTC-DAI$0.9999
0.0000141 Btc
$3,796,157.00
53.408 BTC
0.0000%
10
Uniswap V2 (Ethereum)
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.997
0.0000140 Btc
$2,448,400.00
2,278,407.508 0X6B175474E89094C44DA98B954EEDEAC495271D0F
1.4506%
11
Bitrue
DAI-USDT$0.9997
0.0000141 Btc
$2,010,347.00
2,010,872.700 DAI
1.2803%
12
Camelot V3
0XAF88D065E77C8CC2239327C5EDB3A432268E5831-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1$0.9999
0.0000140 Btc
$1,542,358.00
1,542,343.994 0XAF88D065E77C8CC2239327C5EDB3A432268E5831
0.9820%
13
Coinbase Exchange
DAI-USD$0.9999
0.0000141 Btc
$1,541,916.00
1,542,070.339 DAI
0.9818%
14
Kraken
DAI-USD$1.00
0.0000141 Btc
$1,517,864.00
1,517,863.807 DAI
0.9664%
15
LBank
DAI-USDT$0.9997
0.0000141 Btc
$1,493,074.00
1,493,463.960 DAI
0.9509%
16
DigiFinex
DAI-USDT$0.9998
0.0000141 Btc
$1,288,032.00
1,288,296.350 DAI
0.8202%
17
Uniswap V3 (Optimism)
0X8C6F28F2F1A3C87F0F938B96D27520D9751EC8D9-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1$0.9958
0.0000140 Btc
$1,246,594.00
1,258,720.007 0X8C6F28F2F1A3C87F0F938B96D27520D9751EC8D9
0.8014%
18
Uniswap V3 (Optimism)
0X7F5C764CBC14F9669B88837CA1490CCA17C31607-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1$0.9958
0.0000140 Btc
$1,232,401.00
1,237,557.768 0X7F5C764CBC14F9669B88837CA1490CCA17C31607
0.7879%
19
Uniswap V3 (Optimism)
0X94B008AA00579C1307B0EF2C499AD98A8CE58E58-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1$0.9958
0.0000140 Btc
$1,210,534.00
1,215,524.943 0X94B008AA00579C1307B0EF2C499AD98A8CE58E58
0.7739%
20
Uniswap V3 (Polygon)
0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063-0XC2132D05D31C914A87C6611C10748AEB04B58E8F$0.9999
0.0000141 Btc
$1,194,888.00
1,194,959.077 0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063
0.7608%
21
Uniswap V3 (Polygon)
0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063$0.9999
0.0000141 Btc
$1,150,871.00
1,150,789.133 0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174
0.7327%
22
Sushiswap
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$1.002
0.0000141 Btc
$1,145,705.00
1,076,293.534 0X6B175474E89094C44DA98B954EEDEAC495271D0F
0.6853%
23
Bybit
DAI-USDT$0.9998
0.0000141 Btc
$1,117,412.00
1,117,672.660 DAI
0.7116%
24
Quickswap (v3)
0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063$0.9999
0.0000140 Btc
$1,017,825.00
1,017,836.409 0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174
0.6480%
25
OKX
DAI-USDT$1.00
0.0000141 Btc
$1,014,934.00
1,015,069.157 DAI
0.6463%
26
Uniswap V2 (Ethereum)
0X16A3543FA6B32CAC3B0A755F64A729E84F89A75C-0X6B175474E89094C44DA98B954EEDEAC495271D0F$0.9959
0.0000140 Btc
$849,118.00
123,323.276 0X16A3543FA6B32CAC3B0A755F64A729E84F89A75C
0.0785%
27
Uniswap V3 (Optimism)
0X4200000000000000000000000000000000000006-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1$0.9982
0.0000140 Btc
$793,861.00
229.656 0X4200000000000000000000000000000000000006
0.0001%
28
Uniswap V3 (Optimism)
0X8C6F28F2F1A3C87F0F938B96D27520D9751EC8D9-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1$0.9958
0.0000140 Btc
$783,312.00
793,138.840 0X8C6F28F2F1A3C87F0F938B96D27520D9751EC8D9
0.5050%
29
WhiteBIT
DAI-USDT$0.9998
0.0000141 Btc
$777,550.00
777,692.860 DAI
0.4951%
30
Uniswap V3 (Polygon)
0X3C499C542CEF5E3811E1192CE70D8CC03D5C3359-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063$0.9999
0.0000141 Btc
$690,475.00
690,429.973 0X3C499C542CEF5E3811E1192CE70D8CC03D5C3359
0.4396%
31
Pancakeswap V3 (BSC)
0X1AF3F329E8BE154074D8769D1FFA4EE058B1DBC3-0X55D398326F99059FF775485246999027B3197955$1.004
0.0000141 Btc
$675,157.00
672,577.919 0X1AF3F329E8BE154074D8769D1FFA4EE058B1DBC3
0.4282%
32
Bitget
DAI-USDT$0.9994
0.0000141 Btc
$646,665.00
646,903.000 DAI
0.4119%
33
Kraken
DAI-EUR$0.997
0.0000140 Btc
$633,050.00
634,934.057 DAI
0.4043%
34
Curve (Optimism)
0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0X94B008AA00579C1307B0EF2C499AD98A8CE58E58$1.00
0.0000141 Btc
$630,765.00
630,439.870 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1
0.4014%
35
Azbit
DAI-USDT$1.00
0.0000141 Btc
$614,363.00
614,483.458 DAI
0.3912%
36
BitMart
DAI-USDT$0.9996
0.0000141 Btc
$613,378.00
613,622.720 DAI
0.3907%
37
Kraken
DAI-USDT$1.00
0.0000141 Btc
$612,167.00
612,194.459 DAI
0.3898%
38
HitBTC
USDT-DAI$0.9999
0.0000141 Btc
$565,131.00
565,029.540 USDT
0.3597%
39
XT.COM
DAI-USDT$1.00
0.0000141 Btc
$486,507.00
486,574.090 DAI
0.3098%
40
BitMart
DAI-USDC$0.9998
0.0000141 Btc
$483,286.00
483,401.600 DAI
0.3078%
41
Tapbit
DAI-USDT$1.00
0.0000141 Btc
$463,187.00
463,309.600 DAI
0.2950%
42
XT.COM
BTC-DAI$0.9999
0.0000141 Btc
$461,469.00
6.642 BTC
0.0000%
43
Quickswap
0XEB51D9A39AD5EEF215DC0BF39A8821FF804A0F01-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063$1.003
0.0000141 Btc
$382,225.00
9,706.715 0XEB51D9A39AD5EEF215DC0BF39A8821FF804A0F01
0.0062%
44
Hotcoin
DAI-USDT$1.00
0.0000141 Btc
$380,885.00
380,831.764 DAI
0.2425%
45
Curve (Optimism)
0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0X7F5C764CBC14F9669B88837CA1490CCA17C31607$1.00
0.0000140 Btc
$350,349.00
350,272.508 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1
0.2230%
46
Uniswap V3 (Arbitrum One)
0X82AF49447D8A07E3BD95BD0D56F35241523FBAB1-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1$0.9939
0.0000140 Btc
$324,982.00
97.385 0X82AF49447D8A07E3BD95BD0D56F35241523FBAB1
0.0001%
47
Uniswap V3 (Ethereum)
0X02F92800F57BCD74066F5709F1DAA1A4302DF875-0X6B175474E89094C44DA98B954EEDEAC495271D0F$1.028
0.0000144 Btc
$323,910.00
97,387.306 0X02F92800F57BCD74066F5709F1DAA1A4302DF875
0.0620%
48
Bitunix
DAI-USDT$1.00
0.0000141 Btc
$299,005.00
299,033.300 DAI
0.1904%
49
Balancer V2
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XDAC17F958D2EE523A2206206994597C13D831EC7$0.9998
0.0000140 Btc
$293,911.00
293,990.597 0X6B175474E89094C44DA98B954EEDEAC495271D0F
0.1872%
50
XT.COM
ETH-DAI$0.9999
0.0000141 Btc
$293,226.00
87.716 ETH
0.0001%
51
CoinEx
DAI-USDT$0.9996
0.0000141 Btc
$262,874.00
262,138.504 DAI
0.1669%
52
Balancer V2 (Arbitrum)
0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0XFD086BC7CD5C481DCC9C85EBE478A1C0B69FCBB9$0.9998
0.0000141 Btc
$260,893.00
260,949.682 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1
0.1661%
53
MEXC
DAI-USDT$0.9997
0.0000141 Btc
$251,281.00
251,356.460 DAI
0.1600%
54
PointPay
DAI-USDT$1.00
0.0000141 Btc
$231,584.00
231,609.153 DAI
0.1475%
55
Gate.io
DAI-USDT$1.00
0.0000141 Btc
$199,399.00
199,479.910 DAI
0.1270%
56
KuCoin
USDT-DAI$0.9999
0.0000141 Btc
$184,899.00
185,103.031 USDT
0.1179%
57
Balancer V2
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$1.004
0.0000141 Btc
$170,057.00
185,509.202 0X6B175474E89094C44DA98B954EEDEAC495271D0F
0.1181%
58
Bitcointry Exchange
USDT-DAI$0.9999
0.0000141 Btc
$166,459.00
166,436.727 USDT
0.1060%
59
Gemini
DAI-USD$0.9998
0.0000141 Btc
$166,104.00
166,142.626 DAI
0.1058%
60
BingX
DAI-USDT$0.9999
0.0000141 Btc
$155,989.00
156,006.951 DAI
0.0993%
61
Aerodrome (Base)
0X50C5725949A6F0C72E6C4A641F24049A917DB0CB-0X833589FCD6EDB6E08F4C7C32D4F71B54BDA02913$0.9967
0.0000140 Btc
$153,225.00
153,624.477 0X50C5725949A6F0C72E6C4A641F24049A917DB0CB
0.0978%
62
KuCoin
BTC-DAI$0.9999
0.0000141 Btc
$139,082.00
1.948 BTC
0.0000%
63
Slex
USDT-DAI$0.9999
0.0000141 Btc
$138,520.00
138,498.300 USDT
0.0882%
64
Coinbase Exchange
ETH-DAI$0.9999
0.0000141 Btc
$134,628.00
36.690 ETH
0.0000%
65
Uniswap V3 (Ethereum)
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0X853D955ACEF822DB058EB8505911ED77F175B99E$1.00
0.0000141 Btc
$120,340.00
120,346.664 0X6B175474E89094C44DA98B954EEDEAC495271D0F
0.0766%
66
HitBTC
BTC-DAI$0.9999
0.0000141 Btc
$117,423.00
1.692 BTC
0.0000%
67
Binance
BNB-DAI$0.9999
0.0000141 Btc
$117,408.00
199.097 BNB
0.0001%
68
Quickswap (v3)
0X3C499C542CEF5E3811E1192CE70D8CC03D5C3359-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063$0.9999
0.0000140 Btc
$99,459.00
99,449.707 0X3C499C542CEF5E3811E1192CE70D8CC03D5C3359
0.0633%
69
Kraken
BTC-DAI$0.9999
0.0000141 Btc
$86,903.00
1.220 BTC
0.0000%
70
HitBTC
ETH-DAI$0.9999
0.0000141 Btc
$84,895.00
24.892 ETH
0.0000%
71
Uniswap V3 (Ethereum)
0X03AB458634910AAD20EF5F1C8EE96F1D6AC54919-0X6B175474E89094C44DA98B954EEDEAC495271D0F$0.9943
0.0000140 Btc
$83,091.00
29,600.307 0X03AB458634910AAD20EF5F1C8EE96F1D6AC54919
0.0188%
72
Kraken
ETH-DAI$0.9999
0.0000141 Btc
$82,251.00
22.397 ETH
0.0000%
73
Bithumb
DAI-KRW$1.004
0.0000141 Btc
$74,978.00
74,642.386 DAI
0.0475%
74
Tokpie
DAI-USDC$1.00
0.0000141 Btc
$68,627.00
68,601.960 DAI
0.0437%
75
OKX
BTC-DAI$0.9999
0.0000141 Btc
$66,610.00
0.943 BTC
0.0000%
76
Bybit
ETH-DAI$0.9999
0.0000141 Btc
$52,709.00
15.151 ETH
0.0000%
77
Sushiswap (Polygon POS)
0X7CEB23FD6BC0ADD59E62AC25578270CFF1B9F619-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063$0.9986
0.0000140 Btc
$51,105.00
14.708 0X7CEB23FD6BC0ADD59E62AC25578270CFF1B9F619
0.0000%
78
Bancor (V2)
DAI-BNT$0.9988
0.0000140 Btc
$49,132.00
49,192.633 DAI
0.0313%
79
FameEX
DAI-USDT$1.00
0.0000141 Btc
$40,959.00
40,989.778 DAI
0.0261%
80
EXMO
DAI-USDT$0.9999
0.0000141 Btc
$37,514.00
37,517.536 DAI
0.0239%
81
Quickswap (Polygon zkEVM)
0XA8CE8AEE21BC2A48A5EF670AFCC9274C7BBBC035-0XC5015B9D9161DCA7E18E32F6F25C4AD850731FD4$1.003
0.0000141 Btc
$33,894.00
33,624.712 0XA8CE8AEE21BC2A48A5EF670AFCC9274C7BBBC035
0.0214%
82
OKX
ETH-DAI$0.9999
0.0000141 Btc
$29,444.00
8.737 ETH
0.0000%
83
Phemex
DAI-USDT$1.001
0.0000141 Btc
$24,611.00
24,594.010 DAI
0.0157%
84
Bybit
BTC-DAI$0.9999
0.0000141 Btc
$23,666.00
0.338 BTC
0.0000%
85
CEX.IO
DAI-USDT$1.001
0.0000141 Btc
$22,540.00
22,515.154 DAI
0.0143%
86
CEX.IO
DAI-USD$1.00
0.0000141 Btc
$19,506.57
19,502.630 DAI
0.0124%
87
Uniswap V3 (Ethereum)
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XDAC17F958D2EE523A2206206994597C13D831EC7$0.9992
0.0000140 Btc
$19,095.20
19,111.196 0X6B175474E89094C44DA98B954EEDEAC495271D0F
0.0122%
88
Bitso
BTC-DAI$0.9986
0.0000140 Btc
$18,360.97
0.258 BTC
0.0000%
89
CoinJar Exchange
DAI-USDC$1.005
0.0000141 Btc
$17,978.46
17,890.000 DAI
0.0114%
90
Bitbank
DAI-JPY$0.9985
0.0000140 Btc
$14,772.20
14,793.985 DAI
0.0094%
91
Uniswap V2 (Ethereum)
0X40803CEA2B2A32BDA1BE61D3604AF6A814E70976-0X6B175474E89094C44DA98B954EEDEAC495271D0F$0.9999
0.0000141 Btc
$14,531.52
72,913.538 0X40803CEA2B2A32BDA1BE61D3604AF6A814E70976
0.0464%
92
ProBit Global
DAI-USDT$1.00
0.0000141 Btc
$10,710.20
10,709.787 DAI
0.0068%
93
PancakeSwap (v2)
0X1AF3F329E8BE154074D8769D1FFA4EE058B1DBC3-BUSD$0.9936
0.0000140 Btc
$9,738.08
9,847.830 0X1AF3F329E8BE154074D8769D1FFA4EE058B1DBC3
0.0063%
94
Bitvavo
DAI-EUR$0.9985
0.0000140 Btc
$8,722.46
8,735.654 DAI
0.0056%
95
Alien Base
0X50C5725949A6F0C72E6C4A641F24049A917DB0CB-0XD9AAEC86B65D86F6A7B5B1B0C42FFA531710B6CA$1.00
0.0000141 Btc
$6,073.72
6,071.920 0X50C5725949A6F0C72E6C4A641F24049A917DB0CB
0.0039%
96
Uniswap V2 (Ethereum)
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48$1.003
0.0000141 Btc
$5,784.00
5,785.791 0X6B175474E89094C44DA98B954EEDEAC495271D0F
0.0037%
97
OKCoin Japan
DAI-JPY$1.002
0.0000141 Btc
$5,053.77
5,042.542 DAI
0.0032%
98
Balancer V1
0X8F8221AFBB33998D8584A2B05749BA73C37A938A-DAI$0.9999
0.0000141 Btc
$4,271.52
32,299.891 0X8F8221AFBB33998D8584A2B05749BA73C37A938A
0.0206%
99
Maverick Protocol
0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48$0.9995
0.0000140 Btc
$4,106.37
4,108.305 0X6B175474E89094C44DA98B954EEDEAC495271D0F
0.0026%
100
Quickswap
0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063$1.002
0.0000141 Btc
$2,354.29
2,339.162 0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174
0.0015%

Contract Source Code Verified (Exact Match)

Contract Name:
Dai

Compiler Version
v0.6.11+commit.5ef660b1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : dai.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

// Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico
// Copyright (C) 2021 Dai Foundation

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity ^0.6.11;

// Improved Dai token

contract Dai {

  // --- Auth ---
  mapping (address => uint256) public wards;
  function rely(address usr) external auth {
    wards[usr] = 1;
    emit Rely(usr);
  }
  function deny(address usr) external auth {
    wards[usr] = 0;
    emit Deny(usr);
  }
  modifier auth {
    require(wards[msg.sender] == 1, "Dai/not-authorized");
    _;
  }

  // --- ERC20 Data ---
  string  public constant name     = "Dai Stablecoin";
  string  public constant symbol   = "DAI";
  string  public constant version  = "2";
  uint8   public constant decimals = 18;
  uint256 public totalSupply;

  mapping (address => uint256)                      public balanceOf;
  mapping (address => mapping (address => uint256)) public allowance;
  mapping (address => uint256)                      public nonces;

  event Approval(address indexed owner, address indexed spender, uint256 value);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Rely(address indexed usr);
  event Deny(address indexed usr);

  // --- Math ---
  function _add(uint256 x, uint256 y) internal pure returns (uint256 z) {
    require((z = x + y) >= x);
  }
  function _sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
    require((z = x - y) <= x);
  }

  // --- EIP712 niceties ---
  uint256 public immutable deploymentChainId;
  bytes32 private immutable _DOMAIN_SEPARATOR;
  bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

  constructor() public {
    wards[msg.sender] = 1;
    emit Rely(msg.sender);

    uint256 chainId;
    assembly {chainId := chainid()}
    deploymentChainId = chainId;
    _DOMAIN_SEPARATOR = _calculateDomainSeparator(chainId);
  }

  function _calculateDomainSeparator(uint256 chainId) private view returns (bytes32) {
    return keccak256(
      abi.encode(
        keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
        keccak256(bytes(name)),
        keccak256(bytes(version)),
        chainId,
        address(this)
      )
    );
  }
  function DOMAIN_SEPARATOR() external view returns (bytes32) {
    uint256 chainId;
    assembly {chainId := chainid()}
    return chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId);
  }

  // --- ERC20 Mutations ---
  function transfer(address to, uint256 value) external returns (bool) {
    require(to != address(0) && to != address(this), "Dai/invalid-address");
    uint256 balance = balanceOf[msg.sender];
    require(balance >= value, "Dai/insufficient-balance");

    balanceOf[msg.sender] = balance - value;
    balanceOf[to] += value;

    emit Transfer(msg.sender, to, value);

    return true;
  }
  function transferFrom(address from, address to, uint256 value) external returns (bool) {
    require(to != address(0) && to != address(this), "Dai/invalid-address");
    uint256 balance = balanceOf[from];
    require(balance >= value, "Dai/insufficient-balance");

    if (from != msg.sender) {
      uint256 allowed = allowance[from][msg.sender];
      if (allowed != type(uint256).max) {
        require(allowed >= value, "Dai/insufficient-allowance");

        allowance[from][msg.sender] = allowed - value;
      }
    }

    balanceOf[from] = balance - value;
    balanceOf[to] += value;

    emit Transfer(from, to, value);

    return true;
  }
  function approve(address spender, uint256 value) external returns (bool) {
    allowance[msg.sender][spender] = value;

    emit Approval(msg.sender, spender, value);

    return true;
  }
  function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
    uint256 newValue = _add(allowance[msg.sender][spender], addedValue);
    allowance[msg.sender][spender] = newValue;

    emit Approval(msg.sender, spender, newValue);

    return true;
  }
  function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
    uint256 allowed = allowance[msg.sender][spender];
    require(allowed >= subtractedValue, "Dai/insufficient-allowance");
    allowed = allowed - subtractedValue;
    allowance[msg.sender][spender] = allowed;

    emit Approval(msg.sender, spender, allowed);

    return true;
  }

  // --- Mint/Burn ---
  function mint(address to, uint256 value) external auth {
    require(to != address(0) && to != address(this), "Dai/invalid-address");
    balanceOf[to] = balanceOf[to] + value; // note: we don't need an overflow check here b/c balanceOf[to] <= totalSupply and there is an overflow check below
    totalSupply   = _add(totalSupply, value);

    emit Transfer(address(0), to, value);
  }
  function burn(address from, uint256 value) external {
    uint256 balance = balanceOf[from];
    require(balance >= value, "Dai/insufficient-balance");

    if (from != msg.sender && wards[msg.sender] != 1) {
      uint256 allowed = allowance[from][msg.sender];
      if (allowed != type(uint256).max) {
        require(allowed >= value, "Dai/insufficient-allowance");

        allowance[from][msg.sender] = allowed - value;
      }
    }

    balanceOf[from] = balance - value; // note: we don't need overflow checks b/c require(balance >= value) and balance <= totalSupply
    totalSupply     = totalSupply - value;

    emit Transfer(from, address(0), value);
  }

  // --- Approve by signature ---
  function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external {
    require(block.timestamp <= deadline, "Dai/permit-expired");

    uint256 chainId;
    assembly {chainId := chainid()}

    bytes32 digest =
      keccak256(abi.encodePacked(
          "\x19\x01",
          chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId),
          keccak256(abi.encode(
            PERMIT_TYPEHASH,
            owner,
            spender,
            value,
            nonces[owner]++,
            deadline
          ))
      ));

    require(owner != address(0) && owner == ecrecover(digest, v, r, s), "Dai/invalid-permit");

    allowance[owner][spender] = value;
    emit Approval(owner, spender, value);
  }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deploymentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c060405234801561001057600080fd5b503360008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a2466080819052610062816001600160e01b0361006b16565b60a0525061013f565b600060405180806114af60529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b60805160a05161133e6101716000398061077f5280610f2b52508061074a5280610e855280610ef6525061133e6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146103b0578063a9059cbb146103dc578063bf353dbb14610408578063cd0d00961461042e578063d505accf14610436578063dd62ed3e1461048757610142565b806370a082311461030a5780637ecebe001461033057806395d89b41146103565780639c52a7f11461035e5780639dc29fac1461038457610142565b8063313ce5671161010a578063313ce5671461025c5780633644e5151461027a578063395093511461028257806340c10f19146102ae57806354fd4d50146102dc57806365fae35e146102e457610142565b806306fdde0314610147578063095ea7b3146101c457806318160ddd1461020457806323b872dd1461021e57806330adf81f14610254575b600080fd5b61014f6104b5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b0381351690602001356104df565b604080519115158252519081900360200190f35b61020c610534565b60408051918252519081900360200190f35b6101f06004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561053a565b61020c610725565b610264610740565b6040805160ff9092168252519081900360200190f35b61020c610745565b6101f06004803603604081101561029857600080fd5b506001600160a01b0381351690602001356107a5565b6102da600480360360408110156102c457600080fd5b506001600160a01b03813516906020013561082c565b005b61014f61094e565b6102da600480360360208110156102fa57600080fd5b50356001600160a01b031661096b565b61020c6004803603602081101561032057600080fd5b50356001600160a01b0316610a09565b61020c6004803603602081101561034657600080fd5b50356001600160a01b0316610a1b565b61014f610a2d565b6102da6004803603602081101561037457600080fd5b50356001600160a01b0316610a4c565b6102da6004803603604081101561039a57600080fd5b506001600160a01b038135169060200135610ae9565b6101f0600480360360408110156103c657600080fd5b506001600160a01b038135169060200135610c7b565b6101f0600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610d4c565b61020c6004803603602081101561041e57600080fd5b50356001600160a01b0316610e71565b61020c610e83565b6102da600480360360e081101561044c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610ea7565b61020c6004803603604081101561049d57600080fd5b506001600160a01b0381358116916020013516611123565b6040518060400160405280600e81526020016d2230b49029ba30b13632b1b7b4b760911b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390926000805160206112e9833981519152928290030190a35060015b92915050565b60015481565b60006001600160a01b0383161580159061055d57506001600160a01b0383163014155b6105a4576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b0384166000908152600260205260409020548281101561060d576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b03851633146106c7576001600160a01b038516600090815260036020908152604080832033845290915290205460001981146106c5578381101561069c576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0386166000908152600360209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526002602090815260408083208887039055938816808352918490208054880190558351878152935191936000805160206112c9833981519152929081900390910190a3506001949350505050565b60405180605261122582396052019050604051809103902081565b601281565b6000467f0000000000000000000000000000000000000000000000000000000000000000811461077d5761077881611140565b61079f565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b3360009081526003602090815260408083206001600160a01b038616845290915281205481906107d59084611214565b3360008181526003602090815260408083206001600160a01b038a16808552908352928190208590558051858152905194955091936000805160206112e98339815191529281900390910190a35060019392505050565b33600090815260208190526040902054600114610885576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038216158015906108a657506001600160a01b0382163014155b6108ed576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090208054820190556001546109189082611214565b6001556040805182815290516001600160a01b038416916000916000805160206112c98339815191529181900360200190a35050565b604051806040016040528060018152602001601960f91b81525081565b336000908152602081905260409020546001146109c4576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b60026020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020016244414960e81b81525081565b33600090815260208190526040902054600114610aa5576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b03821660009081526002602052604090205481811015610b52576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b0383163314801590610b7b575033600090815260208190526040902054600114155b15610c2a576001600160a01b03831660009081526003602090815260408083203384529091529020546000198114610c285782811015610bff576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0384166000908152600360209081526040808320338452909152902083820390555b505b6001600160a01b03831660008181526002602090815260408083208686039055600180548790039055805186815290519293926000805160206112c9833981519152929181900390910190a3505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610cf1576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b3360008181526003602090815260408083206001600160a01b038916808552908352928190209487900394859055805185815290519293926000805160206112e9833981519152929181900390910190a35060019392505050565b60006001600160a01b03831615801590610d6f57506001600160a01b0383163014155b610db6576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b3360009081526002602052604090205482811015610e16576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b33600081815260026020908152604080832087860390556001600160a01b03881680845292819020805488019055805187815290519293926000805160206112c9833981519152929181900390910190a35060019392505050565b60006020819052908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b83421115610ef1576040805162461bcd60e51b815260206004820152601260248201527111185a4bdc195c9b5a5d0b595e1c1a5c995960721b604482015290519081900360640190fd5b4660007f00000000000000000000000000000000000000000000000000000000000000008214610f2957610f2482611140565b610f4b565b7f00000000000000000000000000000000000000000000000000000000000000005b6040518060526112258239604080519182900360520182206001600160a01b03808f166000818152600460209081529085902080546001810190915581870194909452858501829052918f166060860152608085018e905260a085019290925260c08085018d90528351808603909101815260e08501845280519082012061190160f01b6101008601526101028501969096526101228085019690965282518085039096018652610142909301909152835193909101929092209250501580159061108757506040805160008152602080820180845284905260ff8816828401526060820187905260808201869052915160019260a0808401939192601f1981019281900390910190855afa158015611068573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6110cd576040805162461bcd60e51b815260206004820152601260248201527111185a4bda5b9d985b1a590b5c195c9b5a5d60721b604482015290519081900360640190fd5b6001600160a01b03808a166000818152600360209081526040808320948d16808452948252918290208b905581518b815291516000805160206112e98339815191529281900390910190a3505050505050505050565b600360209081526000928352604080842090915290825290205481565b6000604051808061127760529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b8082018281101561052e57600080fdfe5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220c10a8f863458f6eaf33751a084e6c9f731275ed9c3b4b35baeb97c5150f7db5264736f6c634300060b0033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146103b0578063a9059cbb146103dc578063bf353dbb14610408578063cd0d00961461042e578063d505accf14610436578063dd62ed3e1461048757610142565b806370a082311461030a5780637ecebe001461033057806395d89b41146103565780639c52a7f11461035e5780639dc29fac1461038457610142565b8063313ce5671161010a578063313ce5671461025c5780633644e5151461027a578063395093511461028257806340c10f19146102ae57806354fd4d50146102dc57806365fae35e146102e457610142565b806306fdde0314610147578063095ea7b3146101c457806318160ddd1461020457806323b872dd1461021e57806330adf81f14610254575b600080fd5b61014f6104b5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b0381351690602001356104df565b604080519115158252519081900360200190f35b61020c610534565b60408051918252519081900360200190f35b6101f06004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561053a565b61020c610725565b610264610740565b6040805160ff9092168252519081900360200190f35b61020c610745565b6101f06004803603604081101561029857600080fd5b506001600160a01b0381351690602001356107a5565b6102da600480360360408110156102c457600080fd5b506001600160a01b03813516906020013561082c565b005b61014f61094e565b6102da600480360360208110156102fa57600080fd5b50356001600160a01b031661096b565b61020c6004803603602081101561032057600080fd5b50356001600160a01b0316610a09565b61020c6004803603602081101561034657600080fd5b50356001600160a01b0316610a1b565b61014f610a2d565b6102da6004803603602081101561037457600080fd5b50356001600160a01b0316610a4c565b6102da6004803603604081101561039a57600080fd5b506001600160a01b038135169060200135610ae9565b6101f0600480360360408110156103c657600080fd5b506001600160a01b038135169060200135610c7b565b6101f0600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610d4c565b61020c6004803603602081101561041e57600080fd5b50356001600160a01b0316610e71565b61020c610e83565b6102da600480360360e081101561044c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610ea7565b61020c6004803603604081101561049d57600080fd5b506001600160a01b0381358116916020013516611123565b6040518060400160405280600e81526020016d2230b49029ba30b13632b1b7b4b760911b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390926000805160206112e9833981519152928290030190a35060015b92915050565b60015481565b60006001600160a01b0383161580159061055d57506001600160a01b0383163014155b6105a4576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b0384166000908152600260205260409020548281101561060d576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b03851633146106c7576001600160a01b038516600090815260036020908152604080832033845290915290205460001981146106c5578381101561069c576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0386166000908152600360209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526002602090815260408083208887039055938816808352918490208054880190558351878152935191936000805160206112c9833981519152929081900390910190a3506001949350505050565b60405180605261122582396052019050604051809103902081565b601281565b6000467f000000000000000000000000000000000000000000000000000000000000a4b1811461077d5761077881611140565b61079f565b7f8990f9dbb6294602194fe5f05549dd56bac20e2291d6034e1ba5746495dc4d375b91505090565b3360009081526003602090815260408083206001600160a01b038616845290915281205481906107d59084611214565b3360008181526003602090815260408083206001600160a01b038a16808552908352928190208590558051858152905194955091936000805160206112e98339815191529281900390910190a35060019392505050565b33600090815260208190526040902054600114610885576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038216158015906108a657506001600160a01b0382163014155b6108ed576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090208054820190556001546109189082611214565b6001556040805182815290516001600160a01b038416916000916000805160206112c98339815191529181900360200190a35050565b604051806040016040528060018152602001601960f91b81525081565b336000908152602081905260409020546001146109c4576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b60026020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020016244414960e81b81525081565b33600090815260208190526040902054600114610aa5576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b03821660009081526002602052604090205481811015610b52576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b0383163314801590610b7b575033600090815260208190526040902054600114155b15610c2a576001600160a01b03831660009081526003602090815260408083203384529091529020546000198114610c285782811015610bff576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0384166000908152600360209081526040808320338452909152902083820390555b505b6001600160a01b03831660008181526002602090815260408083208686039055600180548790039055805186815290519293926000805160206112c9833981519152929181900390910190a3505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610cf1576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b3360008181526003602090815260408083206001600160a01b038916808552908352928190209487900394859055805185815290519293926000805160206112e9833981519152929181900390910190a35060019392505050565b60006001600160a01b03831615801590610d6f57506001600160a01b0383163014155b610db6576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b3360009081526002602052604090205482811015610e16576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b33600081815260026020908152604080832087860390556001600160a01b03881680845292819020805488019055805187815290519293926000805160206112c9833981519152929181900390910190a35060019392505050565b60006020819052908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000a4b181565b83421115610ef1576040805162461bcd60e51b815260206004820152601260248201527111185a4bdc195c9b5a5d0b595e1c1a5c995960721b604482015290519081900360640190fd5b4660007f000000000000000000000000000000000000000000000000000000000000a4b18214610f2957610f2482611140565b610f4b565b7f8990f9dbb6294602194fe5f05549dd56bac20e2291d6034e1ba5746495dc4d375b6040518060526112258239604080519182900360520182206001600160a01b03808f166000818152600460209081529085902080546001810190915581870194909452858501829052918f166060860152608085018e905260a085019290925260c08085018d90528351808603909101815260e08501845280519082012061190160f01b6101008601526101028501969096526101228085019690965282518085039096018652610142909301909152835193909101929092209250501580159061108757506040805160008152602080820180845284905260ff8816828401526060820187905260808201869052915160019260a0808401939192601f1981019281900390910190855afa158015611068573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6110cd576040805162461bcd60e51b815260206004820152601260248201527111185a4bda5b9d985b1a590b5c195c9b5a5d60721b604482015290519081900360640190fd5b6001600160a01b03808a166000818152600360209081526040808320948d16808452948252918290208b905581518b815291516000805160206112e98339815191529281900390910190a3505050505050505050565b600360209081526000928352604080842090915290825290205481565b6000604051808061127760529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b8082018281101561052e57600080fdfe5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220c10a8f863458f6eaf33751a084e6c9f731275ed9c3b4b35baeb97c5150f7db5264736f6c634300060b0033

Loading