@ensuro/core 2.0.0-beta1 → 2.0.0-beta10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +23 -14
  2. package/build/contracts/AccessManager.sol/AccessManager.json +559 -0
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +219 -0
  4. package/build/contracts/EToken.sol/EToken.json +134 -52
  5. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +4 -4
  6. package/build/contracts/LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json +203 -0
  7. package/build/contracts/Policy.sol/Policy.json +2 -2
  8. package/build/contracts/PolicyPool.sol/PolicyPool.json +437 -61
  9. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +2 -2
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +123 -16
  11. package/build/contracts/Reserve.sol/Reserve.json +66 -8
  12. package/build/contracts/RiskModule.sol/RiskModule.json +2 -2
  13. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +960 -0
  14. package/build/contracts/TimeScaled.sol/TimeScaled.json +3 -17
  15. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +5 -5
  16. package/build/contracts/{WadRayMath.sol → dependencies/WadRayMath.sol}/WadRayMath.json +3 -3
  17. package/build/contracts/interfaces/{IPolicyPoolConfig.sol/IPolicyPoolConfig.json → IAccessManager.sol/IAccessManager.json} +77 -59
  18. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +109 -0
  19. package/build/contracts/interfaces/IEToken.sol/IEToken.json +13 -0
  20. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +40 -16
  21. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +13 -0
  22. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +736 -0
  23. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +2 -2
  24. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +28 -2
  25. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +2 -2
  26. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +118 -19
  27. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +6 -6
  28. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +764 -0
  29. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +2 -2
  30. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +2 -2
  31. package/contracts/AccessManager.sol +103 -0
  32. package/contracts/ERC4626AssetManager.sol +52 -0
  33. package/contracts/EToken.sol +123 -87
  34. package/contracts/LPManualWhitelist.sol +1 -1
  35. package/contracts/LiquidityThresholdAssetManager.sol +160 -0
  36. package/contracts/Policy.sol +1 -1
  37. package/contracts/PolicyPool.sol +333 -115
  38. package/contracts/PolicyPoolComponent.sol +36 -41
  39. package/contracts/PremiumsAccount.sol +285 -79
  40. package/contracts/Reserve.sol +183 -4
  41. package/contracts/RiskModule.sol +26 -19
  42. package/contracts/SignedQuoteRiskModule.sol +241 -0
  43. package/contracts/TimeScaled.sol +19 -15
  44. package/contracts/TrustfulRiskModule.sol +62 -2
  45. package/contracts/dependencies/WadRayMath.sol +126 -0
  46. package/contracts/interfaces/IAccessManager.sol +148 -0
  47. package/contracts/interfaces/IAssetManager.sol +84 -0
  48. package/contracts/interfaces/IEToken.sol +25 -2
  49. package/contracts/interfaces/ILPWhitelist.sol +17 -0
  50. package/contracts/interfaces/IPolicyPool.sol +20 -13
  51. package/contracts/interfaces/IPolicyPoolComponent.sol +3 -0
  52. package/contracts/interfaces/IPremiumsAccount.sol +5 -0
  53. package/contracts/interfaces/IRiskModule.sol +67 -4
  54. package/contracts/mocks/FixedRateVault.sol +85 -0
  55. package/contracts/mocks/PolicyHolderMock.sol +21 -0
  56. package/contracts/mocks/PolicyPoolMock.sol +41 -15
  57. package/contracts/mocks/RiskModuleMock.sol +75 -0
  58. package/js/test-utils.js +227 -149
  59. package/package.json +1 -1
  60. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +0 -890
  61. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +0 -583
  62. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +0 -691
  63. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +0 -63
  64. package/build/contracts/interfaces/IPolicyNFT.sol/IPolicyNFT.json +0 -321
  65. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +0 -370
  66. package/build/contracts/mocks/TestCurrencyUUPS.sol/TestCurrencyUUPS.json +0 -353
  67. package/build/contracts/upgraded/IPolicyNFTv1.sol/IPolicyNFTv1.json +0 -322
  68. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +0 -584
  69. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +0 -615
  70. package/contracts/FlightDelayRiskModule.sol +0 -217
  71. package/contracts/PolicyNFT.sol +0 -96
  72. package/contracts/PolicyPoolConfig.sol +0 -204
  73. package/contracts/WadRayMath.sol +0 -135
  74. package/contracts/dependencies/ChainlinkClientUpgradeable.sol +0 -371
  75. package/contracts/interfaces/IPolicyNFT.sol +0 -15
  76. package/contracts/interfaces/IPolicyPoolConfig.sol +0 -96
  77. package/contracts/mocks/LinkTokenMock.sol +0 -30
  78. package/contracts/upgraded/IPolicyNFTv1.sol +0 -15
  79. package/contracts/upgraded/PolicyNFTv1.sol +0 -126
@@ -0,0 +1,219 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ERC4626AssetManager",
4
+ "sourceName": "contracts/ERC4626AssetManager.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract IERC20Metadata",
10
+ "name": "asset_",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "contract IERC4626",
15
+ "name": "vault_",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ {
26
+ "indexed": false,
27
+ "internalType": "int256",
28
+ "name": "earnings",
29
+ "type": "int256"
30
+ }
31
+ ],
32
+ "name": "EarningsRecorded",
33
+ "type": "event"
34
+ },
35
+ {
36
+ "anonymous": false,
37
+ "inputs": [
38
+ {
39
+ "indexed": true,
40
+ "internalType": "enum IAccessManager.GovernanceActions",
41
+ "name": "action",
42
+ "type": "uint8"
43
+ },
44
+ {
45
+ "indexed": false,
46
+ "internalType": "uint256",
47
+ "name": "value",
48
+ "type": "uint256"
49
+ }
50
+ ],
51
+ "name": "GovernanceAction",
52
+ "type": "event"
53
+ },
54
+ {
55
+ "anonymous": false,
56
+ "inputs": [
57
+ {
58
+ "indexed": false,
59
+ "internalType": "uint256",
60
+ "name": "amount",
61
+ "type": "uint256"
62
+ }
63
+ ],
64
+ "name": "MoneyDeinvested",
65
+ "type": "event"
66
+ },
67
+ {
68
+ "anonymous": false,
69
+ "inputs": [
70
+ {
71
+ "indexed": false,
72
+ "internalType": "uint256",
73
+ "name": "amount",
74
+ "type": "uint256"
75
+ }
76
+ ],
77
+ "name": "MoneyInvested",
78
+ "type": "event"
79
+ },
80
+ {
81
+ "inputs": [],
82
+ "name": "connect",
83
+ "outputs": [],
84
+ "stateMutability": "nonpayable",
85
+ "type": "function"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "deinvestAll",
90
+ "outputs": [
91
+ {
92
+ "internalType": "int256",
93
+ "name": "earnings",
94
+ "type": "int256"
95
+ }
96
+ ],
97
+ "stateMutability": "nonpayable",
98
+ "type": "function"
99
+ },
100
+ {
101
+ "inputs": [],
102
+ "name": "getInvestmentValue",
103
+ "outputs": [
104
+ {
105
+ "internalType": "uint256",
106
+ "name": "",
107
+ "type": "uint256"
108
+ }
109
+ ],
110
+ "stateMutability": "view",
111
+ "type": "function"
112
+ },
113
+ {
114
+ "inputs": [],
115
+ "name": "liquidityMax",
116
+ "outputs": [
117
+ {
118
+ "internalType": "uint256",
119
+ "name": "",
120
+ "type": "uint256"
121
+ }
122
+ ],
123
+ "stateMutability": "view",
124
+ "type": "function"
125
+ },
126
+ {
127
+ "inputs": [],
128
+ "name": "liquidityMiddle",
129
+ "outputs": [
130
+ {
131
+ "internalType": "uint256",
132
+ "name": "",
133
+ "type": "uint256"
134
+ }
135
+ ],
136
+ "stateMutability": "view",
137
+ "type": "function"
138
+ },
139
+ {
140
+ "inputs": [],
141
+ "name": "liquidityMin",
142
+ "outputs": [
143
+ {
144
+ "internalType": "uint256",
145
+ "name": "",
146
+ "type": "uint256"
147
+ }
148
+ ],
149
+ "stateMutability": "view",
150
+ "type": "function"
151
+ },
152
+ {
153
+ "inputs": [],
154
+ "name": "rebalance",
155
+ "outputs": [],
156
+ "stateMutability": "nonpayable",
157
+ "type": "function"
158
+ },
159
+ {
160
+ "inputs": [],
161
+ "name": "recordEarnings",
162
+ "outputs": [
163
+ {
164
+ "internalType": "int256",
165
+ "name": "",
166
+ "type": "int256"
167
+ }
168
+ ],
169
+ "stateMutability": "nonpayable",
170
+ "type": "function"
171
+ },
172
+ {
173
+ "inputs": [
174
+ {
175
+ "internalType": "uint256",
176
+ "name": "paymentAmount",
177
+ "type": "uint256"
178
+ }
179
+ ],
180
+ "name": "refillWallet",
181
+ "outputs": [
182
+ {
183
+ "internalType": "uint256",
184
+ "name": "deinvest",
185
+ "type": "uint256"
186
+ }
187
+ ],
188
+ "stateMutability": "nonpayable",
189
+ "type": "function"
190
+ },
191
+ {
192
+ "inputs": [
193
+ {
194
+ "internalType": "uint256",
195
+ "name": "min",
196
+ "type": "uint256"
197
+ },
198
+ {
199
+ "internalType": "uint256",
200
+ "name": "middle",
201
+ "type": "uint256"
202
+ },
203
+ {
204
+ "internalType": "uint256",
205
+ "name": "max",
206
+ "type": "uint256"
207
+ }
208
+ ],
209
+ "name": "setLiquidityThresholds",
210
+ "outputs": [],
211
+ "stateMutability": "nonpayable",
212
+ "type": "function"
213
+ }
214
+ ],
215
+ "bytecode": "0x60c060405234801561001057600080fd5b506040516115dc3803806115dc83398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a0516114c4610118600039600081816106380152818161098a01528181610a5c01528181610dea0152610eee0152600081816101390152818161022c015281816103270152818161044701528181610569015281816107d2015281816108c0015281816109ba01528181610bfd0152610f4101526114c46000f3fe608060405234801561001057600080fd5b506004361061009d5760003560e01c80637d7c2a1c116100665780637d7c2a1c146100f45780638d7ddd90146100fc578063948cb71914610104578063cec16f3f1461010c578063f9c4fd1b1461011457600080fd5b8062a9bb8d146100a25780631014a0c2146100b75780633b6612c8146100dc5780634dd93bd3146100e45780634eb978a4146100ec575b600080fd5b6100b56100b03660046111bb565b61011c565b005b6100ca6100c53660046111e7565b610425565b60405190815260200160405180910390f35b6100ca610565565b6100ca610620565b6100ca610712565b6100b56107ba565b6100ca6108bc565b6100b561096b565b6100ca610a27565b6100ca610bf9565b60008051602061146f833981519152600019841461021e576101d37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b99190611200565b6101c490600a611324565b6101ce9086611333565b610cb0565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198314610319576102c17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ac9190611200565b6102b790600a611324565b6101ce9085611333565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198214610417576103bc7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a79190611200565b6103b290600a611324565b6101ce9084611333565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b50610420610d19565b505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561048e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b29190611355565b905082811061051e5760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b6000610528610620565b905081610533610bf9565b61053d908661136e565b6105479190611381565b925080831115610555578092505b61055e83610dbe565b5050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e99190611200565b6105f490600a611324565b60008051602061146f8339815191525461061b9190600160401b900463ffffffff16611394565b905090565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a0823190602401602060405180830381865afa15801561068f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b39190611355565b6040518263ffffffff1660e01b81526004016106d191815260200190565b602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190611355565b60008061071d610620565b60008051602061146f83398151915280549192509060009061074f90600160601b90046001600160801b0316846113b3565b905061075a83610e60565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610821573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108459190611355565b905061084f610565565b81111561087357610870610861610bf9565b61086b9083611381565b610ec9565b50565b61087b6108bc565b8110156108705760006108a761088f610620565b83610898610bf9565b6108a29190611381565b610f25565b905080156108b8576108b881610dbe565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109409190611200565b61094b90600a611324565b60008051602061146f8339815191525461061b919063ffffffff16611394565b610973610f3f565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610a03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087091906113da565b60008060008051602061146f8339815191526040516370a0823160e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf9190611355565b6040516001600160e01b031960e084901b1681526004810191909152306024820181905260448201526064016020604051808303816000875af1158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190611355565b8254909150610b5d90600160601b90046001600160801b0316826113b3565b9250610b6881610e60565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c659060200160405180910390a16040518381527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a1505090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7d9190611200565b610c8890600a611324565b60008051602061146f8339815191525461061b9190640100000000900463ffffffff16611394565b600063ffffffff821115610d155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610515565b5090565b60008051602061146f833981519152805463ffffffff64010000000082048116911611801590610d615750805463ffffffff600160401b820481166401000000009092041611155b6108705760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b6064820152608401610515565b610dc781611075565b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303816000875af1158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190611355565b60006001600160801b03821115610d155760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610515565b610ed28161112c565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610e1d565b6000818310610f345781610f36565b825b90505b92915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb9190611411565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102c9190611411565b6001600160a01b0316146110735760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b6044820152606401610515565b565b60008051602061146f83398151915280546110a9906110a490600160601b90046001600160801b031684610f25565b610e60565b81548290600c906110cb908490600160601b90046001600160801b031661142e565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c658260405161112091815260200190565b60405180910390a15050565b60008051602061146f83398151915261114482610e60565b81548290600c90611166908490600160601b90046001600160801b031661144e565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf48260405161112091815260200190565b6000806000606084860312156111d057600080fd5b505081359360208301359350604090920135919050565b6000602082840312156111f957600080fd5b5035919050565b60006020828403121561121257600080fd5b815160ff8116811461122357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561127b5781600019048211156112615761126161122a565b8085161561126e57918102915b93841c9390800290611245565b509250929050565b60008261129257506001610f39565b8161129f57506000610f39565b81600181146112b557600281146112bf576112db565b6001915050610f39565b60ff8411156112d0576112d061122a565b50506001821b610f39565b5060208310610133831016604e8410600b84101617156112fe575081810a610f39565b6113088383611240565b806000190482111561131c5761131c61122a565b029392505050565b6000610f3660ff841683611283565b60008261135057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561136757600080fd5b5051919050565b80820180821115610f3957610f3961122a565b81810381811115610f3957610f3961122a565b60008160001904831182151516156113ae576113ae61122a565b500290565b81810360008312801583831316838312821617156113d3576113d361122a565b5092915050565b6000602082840312156113ec57600080fd5b8151801515811461122357600080fd5b6001600160a01b038116811461087057600080fd5b60006020828403121561142357600080fd5b8151611223816113fc565b6001600160801b038281168282160390808211156113d3576113d361122a565b6001600160801b038181168382160190808211156113d3576113d361122a56fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a2646970667358221220eff919475ac10489afd4e7c0380833d6f65cb65c9df984aa7cfe1bef88dc514664736f6c63430008100033",
216
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009d5760003560e01c80637d7c2a1c116100665780637d7c2a1c146100f45780638d7ddd90146100fc578063948cb71914610104578063cec16f3f1461010c578063f9c4fd1b1461011457600080fd5b8062a9bb8d146100a25780631014a0c2146100b75780633b6612c8146100dc5780634dd93bd3146100e45780634eb978a4146100ec575b600080fd5b6100b56100b03660046111bb565b61011c565b005b6100ca6100c53660046111e7565b610425565b60405190815260200160405180910390f35b6100ca610565565b6100ca610620565b6100ca610712565b6100b56107ba565b6100ca6108bc565b6100b561096b565b6100ca610a27565b6100ca610bf9565b60008051602061146f833981519152600019841461021e576101d37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b99190611200565b6101c490600a611324565b6101ce9086611333565b610cb0565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198314610319576102c17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ac9190611200565b6102b790600a611324565b6101ce9085611333565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198214610417576103bc7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a79190611200565b6103b290600a611324565b6101ce9084611333565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b50610420610d19565b505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561048e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b29190611355565b905082811061051e5760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b6000610528610620565b905081610533610bf9565b61053d908661136e565b6105479190611381565b925080831115610555578092505b61055e83610dbe565b5050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e99190611200565b6105f490600a611324565b60008051602061146f8339815191525461061b9190600160401b900463ffffffff16611394565b905090565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a0823190602401602060405180830381865afa15801561068f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b39190611355565b6040518263ffffffff1660e01b81526004016106d191815260200190565b602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190611355565b60008061071d610620565b60008051602061146f83398151915280549192509060009061074f90600160601b90046001600160801b0316846113b3565b905061075a83610e60565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610821573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108459190611355565b905061084f610565565b81111561087357610870610861610bf9565b61086b9083611381565b610ec9565b50565b61087b6108bc565b8110156108705760006108a761088f610620565b83610898610bf9565b6108a29190611381565b610f25565b905080156108b8576108b881610dbe565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109409190611200565b61094b90600a611324565b60008051602061146f8339815191525461061b919063ffffffff16611394565b610973610f3f565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610a03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087091906113da565b60008060008051602061146f8339815191526040516370a0823160e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf9190611355565b6040516001600160e01b031960e084901b1681526004810191909152306024820181905260448201526064016020604051808303816000875af1158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190611355565b8254909150610b5d90600160601b90046001600160801b0316826113b3565b9250610b6881610e60565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c659060200160405180910390a16040518381527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a1505090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7d9190611200565b610c8890600a611324565b60008051602061146f8339815191525461061b9190640100000000900463ffffffff16611394565b600063ffffffff821115610d155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610515565b5090565b60008051602061146f833981519152805463ffffffff64010000000082048116911611801590610d615750805463ffffffff600160401b820481166401000000009092041611155b6108705760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b6064820152608401610515565b610dc781611075565b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303816000875af1158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190611355565b60006001600160801b03821115610d155760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610515565b610ed28161112c565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610e1d565b6000818310610f345781610f36565b825b90505b92915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb9190611411565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102c9190611411565b6001600160a01b0316146110735760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b6044820152606401610515565b565b60008051602061146f83398151915280546110a9906110a490600160601b90046001600160801b031684610f25565b610e60565b81548290600c906110cb908490600160601b90046001600160801b031661142e565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c658260405161112091815260200190565b60405180910390a15050565b60008051602061146f83398151915261114482610e60565b81548290600c90611166908490600160601b90046001600160801b031661144e565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf48260405161112091815260200190565b6000806000606084860312156111d057600080fd5b505081359360208301359350604090920135919050565b6000602082840312156111f957600080fd5b5035919050565b60006020828403121561121257600080fd5b815160ff8116811461122357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561127b5781600019048211156112615761126161122a565b8085161561126e57918102915b93841c9390800290611245565b509250929050565b60008261129257506001610f39565b8161129f57506000610f39565b81600181146112b557600281146112bf576112db565b6001915050610f39565b60ff8411156112d0576112d061122a565b50506001821b610f39565b5060208310610133831016604e8410600b84101617156112fe575081810a610f39565b6113088383611240565b806000190482111561131c5761131c61122a565b029392505050565b6000610f3660ff841683611283565b60008261135057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561136757600080fd5b5051919050565b80820180821115610f3957610f3961122a565b81810381811115610f3957610f3961122a565b60008160001904831182151516156113ae576113ae61122a565b500290565b81810360008312801583831316838312821617156113d3576113d361122a565b5092915050565b6000602082840312156113ec57600080fd5b8151801515811461122357600080fd5b6001600160a01b038116811461087057600080fd5b60006020828403121561142357600080fd5b8151611223816113fc565b6001600160801b038281168282160390808211156113d3576113d361122a565b6001600160801b038181168382160190808211156113d3576113d361122a56fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a2646970667358221220eff919475ac10489afd4e7c0380833d6f65cb65c9df984aa7cfe1bef88dc514664736f6c63430008100033",
217
+ "linkReferences": {},
218
+ "deployedLinkReferences": {}
219
+ }