@ensuro/core 2.8.2 → 2.9.0

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 (46) hide show
  1. package/README.md +2 -3
  2. package/build/contracts/AccessManager.sol/AccessManager.json +2 -15
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +2 -2
  4. package/build/contracts/ERC4626PlusVaultAssetManager.sol/ERC4626PlusVaultAssetManager.json +269 -0
  5. package/build/contracts/EToken.sol/EToken.json +7 -85
  6. package/build/contracts/FullSignedBucketRiskModule.sol/FullSignedBucketRiskModule.json +1484 -0
  7. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +7 -85
  8. package/build/contracts/Policy.sol/Policy.json +2 -2
  9. package/build/contracts/PolicyPool.sol/PolicyPool.json +2 -15
  10. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +5 -83
  11. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +7 -85
  12. package/build/contracts/Reserve.sol/Reserve.json +5 -83
  13. package/build/contracts/RiskModule.sol/RiskModule.json +5 -96
  14. package/build/contracts/SignedBucketRiskModule.sol/SignedBucketRiskModule.json +7 -150
  15. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +7 -98
  16. package/build/contracts/TimeScaled.sol/TimeScaled.json +2 -2
  17. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +7 -98
  18. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +2 -2
  19. package/build/contracts/migration/LPManualWhitelistV20.sol/LPManualWhitelistV20.json +5 -83
  20. package/build/contracts/migration/LPManualWhitelistV20Upgraded.sol/LPManualWhitelistV20Upgraded.json +7 -85
  21. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +2 -2
  22. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +2 -2
  23. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +2 -2
  24. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +2 -2
  25. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +2 -2
  26. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +2 -2
  27. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +2 -2
  28. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +7 -98
  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 +0 -1
  32. package/contracts/ERC4626AssetManager.sol +6 -5
  33. package/contracts/ERC4626PlusVaultAssetManager.sol +105 -0
  34. package/contracts/EToken.sol +2 -20
  35. package/contracts/FullSignedBucketRiskModule.sol +204 -0
  36. package/contracts/PolicyPool.sol +0 -1
  37. package/contracts/PolicyPoolComponent.sol +7 -44
  38. package/contracts/PremiumsAccount.sol +3 -3
  39. package/contracts/RiskModule.sol +10 -21
  40. package/contracts/SignedBucketRiskModule.sol +15 -9
  41. package/contracts/SignedQuoteRiskModule.sol +7 -4
  42. package/js/test-utils.js +1 -2
  43. package/js/utils.js +65 -0
  44. package/package.json +1 -1
  45. package/scripts/deploySmokeTest-fork.sh +1 -1
  46. package/scripts/deploySmokeTest.sh +1 -1
@@ -19,6 +19,11 @@
19
19
  "name": "NoZeroPolicyPool",
20
20
  "type": "error"
21
21
  },
22
+ {
23
+ "inputs": [],
24
+ "name": "OnlyPolicyPool",
25
+ "type": "error"
26
+ },
22
27
  {
23
28
  "inputs": [],
24
29
  "name": "UpgradeCannotChangePolicyPool",
@@ -187,58 +192,6 @@
187
192
  "name": "Upgraded",
188
193
  "type": "event"
189
194
  },
190
- {
191
- "inputs": [],
192
- "name": "GUARDIAN_ROLE",
193
- "outputs": [
194
- {
195
- "internalType": "bytes32",
196
- "name": "",
197
- "type": "bytes32"
198
- }
199
- ],
200
- "stateMutability": "view",
201
- "type": "function"
202
- },
203
- {
204
- "inputs": [],
205
- "name": "LEVEL1_ROLE",
206
- "outputs": [
207
- {
208
- "internalType": "bytes32",
209
- "name": "",
210
- "type": "bytes32"
211
- }
212
- ],
213
- "stateMutability": "view",
214
- "type": "function"
215
- },
216
- {
217
- "inputs": [],
218
- "name": "LEVEL2_ROLE",
219
- "outputs": [
220
- {
221
- "internalType": "bytes32",
222
- "name": "",
223
- "type": "bytes32"
224
- }
225
- ],
226
- "stateMutability": "view",
227
- "type": "function"
228
- },
229
- {
230
- "inputs": [],
231
- "name": "LEVEL3_ROLE",
232
- "outputs": [
233
- {
234
- "internalType": "bytes32",
235
- "name": "",
236
- "type": "bytes32"
237
- }
238
- ],
239
- "stateMutability": "view",
240
- "type": "function"
241
- },
242
195
  {
243
196
  "inputs": [],
244
197
  "name": "LP_WHITELIST_ADMIN_ROLE",
@@ -265,19 +218,6 @@
265
218
  "stateMutability": "view",
266
219
  "type": "function"
267
220
  },
268
- {
269
- "inputs": [],
270
- "name": "TWEAK_EXPIRATION",
271
- "outputs": [
272
- {
273
- "internalType": "uint40",
274
- "name": "",
275
- "type": "uint40"
276
- }
277
- ],
278
- "stateMutability": "view",
279
- "type": "function"
280
- },
281
221
  {
282
222
  "inputs": [
283
223
  {
@@ -453,24 +393,6 @@
453
393
  "stateMutability": "nonpayable",
454
394
  "type": "function"
455
395
  },
456
- {
457
- "inputs": [],
458
- "name": "lastTweak",
459
- "outputs": [
460
- {
461
- "internalType": "uint40",
462
- "name": "",
463
- "type": "uint40"
464
- },
465
- {
466
- "internalType": "uint56",
467
- "name": "",
468
- "type": "uint56"
469
- }
470
- ],
471
- "stateMutability": "view",
472
- "type": "function"
473
- },
474
396
  {
475
397
  "inputs": [],
476
398
  "name": "pause",
@@ -650,8 +572,8 @@
650
572
  "type": "function"
651
573
  }
652
574
  ],
653
- "bytecode": "0x60c0604052306080523480156200001557600080fd5b50604051620025013803806200250183398101604081905262000038916200013f565b806001600160a01b0381166200006157604051636b23cf0160e01b815260040160405180910390fd5b6200006b6200007e565b6001600160a01b031660a0525062000171565b600054610100900460ff1615620000eb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146200013d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200015257600080fd5b81516001600160a01b03811681146200016a57600080fd5b9392505050565b60805160a05161231d620001e4600039600081816102bf015281816106a501528181610a4001528181610b4d01528181610e3b01528181610f3e01528181611149015261168e0152600081816105220152818161056b015281816107b7015281816107f70152610886015261231d6000f3fe60806040526004361061014b5760003560e01c80635c975abb116100b6578063aa2f92fb1161006f578063aa2f92fb1461040d578063aad4148c1461042d578063cf273ca614610461578063e5a6b10f14610481578063ed716bf414610496578063f67b2bad146104b857600080fd5b80635c975abb146103535780635fcdca371461036b5780637ed5acfa1461038b5780638456cb59146103b8578063896ce44c146103cd5780639051c763146103ed57600080fd5b8063468a8c9f11610108578063468a8c9f146102405780634a47a3e01461027c5780634d15eb03146102b05780634f1ef286146102f757806352d1902d1461030a5780635b494dd51461031f57600080fd5b806301ffc9a7146101505780631e3b9c5e1461018557806324ea54f4146101c75780633659cfe6146101e957806337ee20dd1461020b5780633f4ba83a1461022b575b600080fd5b34801561015c57600080fd5b5061017061016b366004611b65565b6104ec565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b506101b97f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b60405190815260200161017c565b3480156101d357600080fd5b506101b96000805160206122c883398151915281565b3480156101f557600080fd5b50610209610204366004611ba4565b610518565b005b34801561021757600080fd5b50610170610226366004611bc1565b610600565b34801561023757600080fd5b50610209610673565b34801561024c57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161017c565b34801561028857600080fd5b506101b97fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102bc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017c565b610209610305366004611c49565b6107ad565b34801561031657600080fd5b506101b9610879565b34801561032b57600080fd5b506101b97f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561035f57600080fd5b5060975460ff16610170565b34801561037757600080fd5b50610170610386366004611cf1565b61092c565b34801561039757600080fd5b506103a26201518081565b60405164ffffffffff909116815260200161017c565b3480156103c457600080fd5b50610209610a2f565b3480156103d957600080fd5b506102096103e8366004611d5a565b610b2a565b3480156103f957600080fd5b50610170610408366004611bc1565b610ca3565b34801561041957600080fd5b50610209610428366004611d90565b610d05565b34801561043957600080fd5b506101b97fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561046d57600080fd5b5061020961047c366004611d90565b610e18565b34801561048d57600080fd5b506102df610f3a565b3480156104a257600080fd5b506104ab610fc3565b60405161017c9190611e27565b3480156104c457600080fd5b506101b97fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006104f7826110e1565b8061051257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105695760405162461bcd60e51b815260040161056090611e35565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105b2600080516020612281833981519152546001600160a01b031690565b6001600160a01b0316146105d85760405162461bcd60e51b815260040161056090611e81565b6105e181611117565b604080516000808252602082019092526105fd9183919061124e565b50565b6001600160a01b038216600090815260fb602052604081205460ff168181600281111561062f5761062f611dac565b0361065257506000805260fb6020526000805160206122618339815191525460ff165b60015b81600281111561066757610667611dac565b149150505b9392505050565b6000805160206122c88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190611ecd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561078957600080fd5b505afa15801561079d573d6000803e3d6000fd5b505050506107a96113b9565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f55760405162461bcd60e51b815260040161056090611e35565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e600080516020612281833981519152546001600160a01b031690565b6001600160a01b0316146108645760405162461bcd60e51b815260040161056090611e81565b61086d82611117565b6107a98282600161124e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610560565b5060008051602061228183398151915290565b6001600160a01b038316600090815260fb602052604081205462010000900460ff168181600281111561096157610961611dac565b0361098a57506000805260fb6020526000805160206122618339815191525462010000900460ff165b600181600281111561099e5761099e611dac565b146109ad576000915050610a27565b506001600160a01b038316600090815260fb60205260408120546301000000900460ff16908160028111156109e4576109e4611dac565b03610a0e57506000805260fb602052600080516020612261833981519152546301000000900460ff165b6001816002811115610a2257610a22611dac565b149150505b949350505050565b6000805160206122c88339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190611ecd565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b8152600401610af29493929190611eea565b60006040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506105fd61140b565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611ecd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610bff9493929190611eea565b60006040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b5050506001600160a01b0384169050610c865760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c74730000006044820152606401610560565b610c9e83610c9936859003850185611f21565b611448565b505050565b6001600160a01b038216600090815260fb6020526040812054610100900460ff1681816002811115610cd757610cd7611dac565b0361065257506000805260fb60205260008051602061226183398151915254610100900460ff166001610655565b600054610100900460ff1615808015610d255750600054600160ff909116105b80610d3f5750303b158015610d3f575060005460ff166001145b610da25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610560565b6000805460ff191660011790558015610dc5576000805461ff0019166101001790555b610dce82611539565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190611ecd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610eed9493929190611eea565b60006040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b50505050610f2682611571565b6107a96000610c9936859003850185611f21565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190611ecd565b905090565b610fee6040805160808101909152806000815260200160008152602001600081526020016000905290565b6000805260fb60205260408051608081019091526000805160206122618339815191528054829060ff16600281111561102957611029611dac565b600281111561103a5761103a611dac565b81528154602090910190610100900460ff16600281111561105d5761105d611dac565b600281111561106e5761106e611dac565b8152815460209091019062010000900460ff16600281111561109257611092611dac565b60028111156110a3576110a3611dac565b815281546020909101906301000000900460ff1660028111156110c8576110c8611dac565b60028111156110d9576110d9611dac565b905250919050565b60006001600160e01b031982166301ffc9a760e01b148061051257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206122c88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611ecd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561122d57600080fd5b505afa158015611241573d6000803e3d6000fd5b50505050610c9e8361168c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561128157610c9e8361173f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112db575060408051601f3d908101601f191682019092526112d891810190611fa6565b60015b61133e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610560565b60008051602061228183398151915281146113ad5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610560565b50610c9e8383836117db565b6113c1611806565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611413611851565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ee3390565b6001600160a01b038216600090815260fb602052604090208151815483929190829060ff1916600183600281111561148257611482611dac565b021790555060208201518154829061ff0019166101008360028111156114aa576114aa611dac565b021790555060408201518154829062ff00001916620100008360028111156114d4576114d4611dac565b021790555060608201518154829063ff0000001916630100000083600281111561150057611500611dac565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610e0c929190611fbf565b600054610100900460ff166115605760405162461bcd60e51b815260040161056090611fdc565b611568611897565b6105fd816118ce565b60006115806020830183612027565b600281111561159157611591611dac565b141580156115c0575060006115ac6040830160208401612027565b60028111156115bd576115bd611dac565b14155b80156115ed575060006115d96060830160408401612027565b60028111156115ea576115ea611dac565b14155b801561161a575060006116066080830160608401612027565b600281111561161757611617611dac565b14155b6105fd5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e73000000006064820152608401610560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117189190611ecd565b6001600160a01b0316146105fd5760405163d2b3d33f60e01b815260040160405180910390fd5b6001600160a01b0381163b6117ac5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610560565b60008051602061228183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6117e483611961565b6000825111806117f15750805b15610c9e5761180083836119a1565b50505050565b60975460ff1661184f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b565b60975460ff161561184f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b600054610100900460ff166118be5760405162461bcd60e51b815260040161056090611fdc565b6118c66119c6565b61184f6119ed565b600054610100900460ff166118f55760405162461bcd60e51b815260040161056090611fdc565b6118fe81611571565b6000805260fb6020528060008051602061226183398151915261192182826120c3565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a600082604051611956929190612169565b60405180910390a150565b61196a8161173f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061066c83836040518060600160405280602781526020016122a160279139611a1c565b600054610100900460ff1661184f5760405162461bcd60e51b815260040161056090611fdc565b600054610100900460ff16611a145760405162461bcd60e51b815260040161056090611fdc565b61184f611a94565b6060600080856001600160a01b031685604051611a399190612211565b600060405180830381855af49150503d8060008114611a74576040519150601f19603f3d011682016040523d82523d6000602084013e611a79565b606091505b5091509150611a8a86838387611ac7565b9695505050505050565b600054610100900460ff16611abb5760405162461bcd60e51b815260040161056090611fdc565b6097805460ff19169055565b60608315611b36578251600003611b2f576001600160a01b0385163b611b2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610560565b5081610a27565b610a278383815115611b4b5781518083602001fd5b8060405162461bcd60e51b8152600401610560919061222d565b600060208284031215611b7757600080fd5b81356001600160e01b03198116811461066c57600080fd5b6001600160a01b03811681146105fd57600080fd5b600060208284031215611bb657600080fd5b813561066c81611b8f565b600080600060608486031215611bd657600080fd5b8335611be181611b8f565b92506020840135611bf181611b8f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c4157611c41611c02565b604052919050565b60008060408385031215611c5c57600080fd5b8235611c6781611b8f565b915060208381013567ffffffffffffffff80821115611c8557600080fd5b818601915086601f830112611c9957600080fd5b813581811115611cab57611cab611c02565b611cbd601f8201601f19168501611c18565b91508082528784828501011115611cd357600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215611d0757600080fd5b8435611d1281611b8f565b93506020850135611d2281611b8f565b92506040850135611d3281611b8f565b9396929550929360600135925050565b600060808284031215611d5457600080fd5b50919050565b60008060a08385031215611d6d57600080fd5b8235611d7881611b8f565b9150611d878460208501611d42565b90509250929050565b600060808284031215611da257600080fd5b61066c8383611d42565b634e487b7160e01b600052602160045260246000fd5b60038110611de057634e487b7160e01b600052602160045260246000fd5b9052565b611def828251611dc2565b6020810151611e016020840182611dc2565b506040810151611e146040840182611dc2565b506060810151610c9e6060840182611dc2565b608081016105128284611de4565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611edf57600080fd5b815161066c81611b8f565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b600381106105fd57600080fd5b600060808284031215611f3357600080fd5b6040516080810181811067ffffffffffffffff82111715611f5657611f56611c02565b6040528235611f6481611f14565b81526020830135611f7481611f14565b60208201526040830135611f8781611f14565b60408201526060830135611f9a81611f14565b60608201529392505050565b600060208284031215611fb857600080fd5b5051919050565b6001600160a01b038316815260a0810161066c6020830184611de4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561203957600080fd5b813561066c81611f14565b6000813561051281611f14565b6003821061206f57634e487b7160e01b600052602160045260246000fd5b805462ff00008360101b1662ff0000198216178255505050565b600382106120a757634e487b7160e01b600052602160045260246000fd5b805463ff0000008360181b1663ff000000198216178255505050565b81356120ce81611f14565b600381106120ec57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff198216178355602084013561210b81611f14565b6003811061212957634e487b7160e01b600052602160045260246000fd5b61ff008160081b168361ffff1984161717845550505061215461214e60408401612044565b82612051565b6107a961216360608401612044565b82612089565b6001600160a01b038316815260a08101823561218481611f14565b6121916020840182611dc2565b5060208301356121a081611f14565b6121ad6040840182611dc2565b5060408301356121bc81611f14565b6121c96060840182611dc2565b5060608301356121d881611f14565b6121e56080840182611dc2565b509392505050565b60005b838110156122085781810151838201526020016121f0565b50506000910152565b600082516122238184602087016121ed565b9190910192915050565b602081526000825180602084015261224c8160408501602087016121ed565b601f01601f1916919091016040019291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122005fb35769581529ca3c635230379bd3f7c1c54eff061bb901be3c57bc3f91fab64736f6c63430008100033",
654
- "deployedBytecode": "0x60806040526004361061014b5760003560e01c80635c975abb116100b6578063aa2f92fb1161006f578063aa2f92fb1461040d578063aad4148c1461042d578063cf273ca614610461578063e5a6b10f14610481578063ed716bf414610496578063f67b2bad146104b857600080fd5b80635c975abb146103535780635fcdca371461036b5780637ed5acfa1461038b5780638456cb59146103b8578063896ce44c146103cd5780639051c763146103ed57600080fd5b8063468a8c9f11610108578063468a8c9f146102405780634a47a3e01461027c5780634d15eb03146102b05780634f1ef286146102f757806352d1902d1461030a5780635b494dd51461031f57600080fd5b806301ffc9a7146101505780631e3b9c5e1461018557806324ea54f4146101c75780633659cfe6146101e957806337ee20dd1461020b5780633f4ba83a1461022b575b600080fd5b34801561015c57600080fd5b5061017061016b366004611b65565b6104ec565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b506101b97f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b60405190815260200161017c565b3480156101d357600080fd5b506101b96000805160206122c883398151915281565b3480156101f557600080fd5b50610209610204366004611ba4565b610518565b005b34801561021757600080fd5b50610170610226366004611bc1565b610600565b34801561023757600080fd5b50610209610673565b34801561024c57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161017c565b34801561028857600080fd5b506101b97fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102bc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017c565b610209610305366004611c49565b6107ad565b34801561031657600080fd5b506101b9610879565b34801561032b57600080fd5b506101b97f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561035f57600080fd5b5060975460ff16610170565b34801561037757600080fd5b50610170610386366004611cf1565b61092c565b34801561039757600080fd5b506103a26201518081565b60405164ffffffffff909116815260200161017c565b3480156103c457600080fd5b50610209610a2f565b3480156103d957600080fd5b506102096103e8366004611d5a565b610b2a565b3480156103f957600080fd5b50610170610408366004611bc1565b610ca3565b34801561041957600080fd5b50610209610428366004611d90565b610d05565b34801561043957600080fd5b506101b97fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561046d57600080fd5b5061020961047c366004611d90565b610e18565b34801561048d57600080fd5b506102df610f3a565b3480156104a257600080fd5b506104ab610fc3565b60405161017c9190611e27565b3480156104c457600080fd5b506101b97fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006104f7826110e1565b8061051257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105695760405162461bcd60e51b815260040161056090611e35565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105b2600080516020612281833981519152546001600160a01b031690565b6001600160a01b0316146105d85760405162461bcd60e51b815260040161056090611e81565b6105e181611117565b604080516000808252602082019092526105fd9183919061124e565b50565b6001600160a01b038216600090815260fb602052604081205460ff168181600281111561062f5761062f611dac565b0361065257506000805260fb6020526000805160206122618339815191525460ff165b60015b81600281111561066757610667611dac565b149150505b9392505050565b6000805160206122c88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190611ecd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561078957600080fd5b505afa15801561079d573d6000803e3d6000fd5b505050506107a96113b9565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f55760405162461bcd60e51b815260040161056090611e35565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e600080516020612281833981519152546001600160a01b031690565b6001600160a01b0316146108645760405162461bcd60e51b815260040161056090611e81565b61086d82611117565b6107a98282600161124e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610560565b5060008051602061228183398151915290565b6001600160a01b038316600090815260fb602052604081205462010000900460ff168181600281111561096157610961611dac565b0361098a57506000805260fb6020526000805160206122618339815191525462010000900460ff165b600181600281111561099e5761099e611dac565b146109ad576000915050610a27565b506001600160a01b038316600090815260fb60205260408120546301000000900460ff16908160028111156109e4576109e4611dac565b03610a0e57506000805260fb602052600080516020612261833981519152546301000000900460ff165b6001816002811115610a2257610a22611dac565b149150505b949350505050565b6000805160206122c88339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190611ecd565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b8152600401610af29493929190611eea565b60006040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506105fd61140b565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611ecd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610bff9493929190611eea565b60006040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b5050506001600160a01b0384169050610c865760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c74730000006044820152606401610560565b610c9e83610c9936859003850185611f21565b611448565b505050565b6001600160a01b038216600090815260fb6020526040812054610100900460ff1681816002811115610cd757610cd7611dac565b0361065257506000805260fb60205260008051602061226183398151915254610100900460ff166001610655565b600054610100900460ff1615808015610d255750600054600160ff909116105b80610d3f5750303b158015610d3f575060005460ff166001145b610da25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610560565b6000805460ff191660011790558015610dc5576000805461ff0019166101001790555b610dce82611539565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190611ecd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610eed9493929190611eea565b60006040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b50505050610f2682611571565b6107a96000610c9936859003850185611f21565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190611ecd565b905090565b610fee6040805160808101909152806000815260200160008152602001600081526020016000905290565b6000805260fb60205260408051608081019091526000805160206122618339815191528054829060ff16600281111561102957611029611dac565b600281111561103a5761103a611dac565b81528154602090910190610100900460ff16600281111561105d5761105d611dac565b600281111561106e5761106e611dac565b8152815460209091019062010000900460ff16600281111561109257611092611dac565b60028111156110a3576110a3611dac565b815281546020909101906301000000900460ff1660028111156110c8576110c8611dac565b60028111156110d9576110d9611dac565b905250919050565b60006001600160e01b031982166301ffc9a760e01b148061051257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206122c88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611ecd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561122d57600080fd5b505afa158015611241573d6000803e3d6000fd5b50505050610c9e8361168c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561128157610c9e8361173f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112db575060408051601f3d908101601f191682019092526112d891810190611fa6565b60015b61133e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610560565b60008051602061228183398151915281146113ad5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610560565b50610c9e8383836117db565b6113c1611806565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611413611851565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ee3390565b6001600160a01b038216600090815260fb602052604090208151815483929190829060ff1916600183600281111561148257611482611dac565b021790555060208201518154829061ff0019166101008360028111156114aa576114aa611dac565b021790555060408201518154829062ff00001916620100008360028111156114d4576114d4611dac565b021790555060608201518154829063ff0000001916630100000083600281111561150057611500611dac565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610e0c929190611fbf565b600054610100900460ff166115605760405162461bcd60e51b815260040161056090611fdc565b611568611897565b6105fd816118ce565b60006115806020830183612027565b600281111561159157611591611dac565b141580156115c0575060006115ac6040830160208401612027565b60028111156115bd576115bd611dac565b14155b80156115ed575060006115d96060830160408401612027565b60028111156115ea576115ea611dac565b14155b801561161a575060006116066080830160608401612027565b600281111561161757611617611dac565b14155b6105fd5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e73000000006064820152608401610560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117189190611ecd565b6001600160a01b0316146105fd5760405163d2b3d33f60e01b815260040160405180910390fd5b6001600160a01b0381163b6117ac5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610560565b60008051602061228183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6117e483611961565b6000825111806117f15750805b15610c9e5761180083836119a1565b50505050565b60975460ff1661184f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b565b60975460ff161561184f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b600054610100900460ff166118be5760405162461bcd60e51b815260040161056090611fdc565b6118c66119c6565b61184f6119ed565b600054610100900460ff166118f55760405162461bcd60e51b815260040161056090611fdc565b6118fe81611571565b6000805260fb6020528060008051602061226183398151915261192182826120c3565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a600082604051611956929190612169565b60405180910390a150565b61196a8161173f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061066c83836040518060600160405280602781526020016122a160279139611a1c565b600054610100900460ff1661184f5760405162461bcd60e51b815260040161056090611fdc565b600054610100900460ff16611a145760405162461bcd60e51b815260040161056090611fdc565b61184f611a94565b6060600080856001600160a01b031685604051611a399190612211565b600060405180830381855af49150503d8060008114611a74576040519150601f19603f3d011682016040523d82523d6000602084013e611a79565b606091505b5091509150611a8a86838387611ac7565b9695505050505050565b600054610100900460ff16611abb5760405162461bcd60e51b815260040161056090611fdc565b6097805460ff19169055565b60608315611b36578251600003611b2f576001600160a01b0385163b611b2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610560565b5081610a27565b610a278383815115611b4b5781518083602001fd5b8060405162461bcd60e51b8152600401610560919061222d565b600060208284031215611b7757600080fd5b81356001600160e01b03198116811461066c57600080fd5b6001600160a01b03811681146105fd57600080fd5b600060208284031215611bb657600080fd5b813561066c81611b8f565b600080600060608486031215611bd657600080fd5b8335611be181611b8f565b92506020840135611bf181611b8f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c4157611c41611c02565b604052919050565b60008060408385031215611c5c57600080fd5b8235611c6781611b8f565b915060208381013567ffffffffffffffff80821115611c8557600080fd5b818601915086601f830112611c9957600080fd5b813581811115611cab57611cab611c02565b611cbd601f8201601f19168501611c18565b91508082528784828501011115611cd357600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215611d0757600080fd5b8435611d1281611b8f565b93506020850135611d2281611b8f565b92506040850135611d3281611b8f565b9396929550929360600135925050565b600060808284031215611d5457600080fd5b50919050565b60008060a08385031215611d6d57600080fd5b8235611d7881611b8f565b9150611d878460208501611d42565b90509250929050565b600060808284031215611da257600080fd5b61066c8383611d42565b634e487b7160e01b600052602160045260246000fd5b60038110611de057634e487b7160e01b600052602160045260246000fd5b9052565b611def828251611dc2565b6020810151611e016020840182611dc2565b506040810151611e146040840182611dc2565b506060810151610c9e6060840182611dc2565b608081016105128284611de4565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611edf57600080fd5b815161066c81611b8f565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b600381106105fd57600080fd5b600060808284031215611f3357600080fd5b6040516080810181811067ffffffffffffffff82111715611f5657611f56611c02565b6040528235611f6481611f14565b81526020830135611f7481611f14565b60208201526040830135611f8781611f14565b60408201526060830135611f9a81611f14565b60608201529392505050565b600060208284031215611fb857600080fd5b5051919050565b6001600160a01b038316815260a0810161066c6020830184611de4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561203957600080fd5b813561066c81611f14565b6000813561051281611f14565b6003821061206f57634e487b7160e01b600052602160045260246000fd5b805462ff00008360101b1662ff0000198216178255505050565b600382106120a757634e487b7160e01b600052602160045260246000fd5b805463ff0000008360181b1663ff000000198216178255505050565b81356120ce81611f14565b600381106120ec57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff198216178355602084013561210b81611f14565b6003811061212957634e487b7160e01b600052602160045260246000fd5b61ff008160081b168361ffff1984161717845550505061215461214e60408401612044565b82612051565b6107a961216360608401612044565b82612089565b6001600160a01b038316815260a08101823561218481611f14565b6121916020840182611dc2565b5060208301356121a081611f14565b6121ad6040840182611dc2565b5060408301356121bc81611f14565b6121c96060840182611dc2565b5060608301356121d881611f14565b6121e56080840182611dc2565b509392505050565b60005b838110156122085781810151838201526020016121f0565b50506000910152565b600082516122238184602087016121ed565b9190910192915050565b602081526000825180602084015261224c8160408501602087016121ed565b601f01601f1916919091016040019291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122005fb35769581529ca3c635230379bd3f7c1c54eff061bb901be3c57bc3f91fab64736f6c63430008100033",
575
+ "bytecode": "0x60c060405230608052348015610013575f5ffd5b506040516122d13803806122d183398101604081905261003291610130565b806001600160a01b03811661005a57604051636b23cf0160e01b815260040160405180910390fd5b610062610074565b6001600160a01b031660a0525061015d565b5f54610100900460ff16156100df5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161461012e575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610140575f5ffd5b81516001600160a01b0381168114610156575f5ffd5b9392505050565b60805160a0516121066101cb5f395f81816101e001528181610532015281816108cf015281816109d601528181610cb401528181610dae01528181610fc201526114fa01525f81816103a2015281816103eb0152818161063e0152818161067e015261070b01526121065ff3fe608060405260043610610105575f3560e01c80635fcdca3711610092578063aa2f92fb11610062578063aa2f92fb146102c7578063aad4148c146102e6578063cf273ca614610319578063e5a6b10f14610338578063ed716bf41461034c575f5ffd5b80635fcdca37146102565780638456cb5914610275578063896ce44c146102895780639051c763146102a8575f5ffd5b80633f4ba83a116100d85780633f4ba83a146101be5780634d15eb03146101d25780634f1ef2861461021857806352d1902d1461022b5780635c975abb1461023f575f5ffd5b806301ffc9a7146101095780631e3b9c5e1461013d5780633659cfe61461017e57806337ee20dd1461019f575b5f5ffd5b348015610114575f5ffd5b506101286101233660046119bf565b61036d565b60405190151581526020015b60405180910390f35b348015610148575f5ffd5b506101707f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b604051908152602001610134565b348015610189575f5ffd5b5061019d6101983660046119fa565b610398565b005b3480156101aa575f5ffd5b506101286101b9366004611a15565b61047e565b3480156101c9575f5ffd5b5061019d6104ee565b3480156101dd575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610134565b61019d610226366004611a98565b610634565b348015610236575f5ffd5b506101706106ff565b34801561024a575f5ffd5b5060975460ff16610128565b348015610261575f5ffd5b50610128610270366004611b3f565b6107b0565b348015610280575f5ffd5b5061019d6108ac565b348015610294575f5ffd5b5061019d6102a3366004611ba3565b6109b3565b3480156102b3575f5ffd5b506101286102c2366004611a15565b610b25565b3480156102d2575f5ffd5b5061019d6102e1366004611bd7565b610b84565b3480156102f1575f5ffd5b506101707fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b348015610324575f5ffd5b5061019d610333366004611bd7565b610c91565b348015610343575f5ffd5b50610200610dab565b348015610357575f5ffd5b50610360610e31565b6040516101349190611c68565b5f61037782610f49565b8061039257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103e95760405162461bcd60e51b81526004016103e090611c76565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104315f51602061208a5f395f51905f52546001600160a01b031690565b6001600160a01b0316146104575760405162461bcd60e51b81526004016103e090611cc2565b61046081610f7e565b604080515f8082526020820190925261047b918391906110c1565b50565b6001600160a01b0382165f90815260fb602052604081205460ff16818160028111156104ac576104ac611bf1565b036104cd57505f805260fb6020525f51602061206a5f395f51905f525460ff165b60015b8160028111156104e2576104e2611bf1565b149150505b9392505050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b09190611d0e565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a4808201925f92909190829003018186803b158015610612575f5ffd5b505afa158015610624573d5f5f3e3d5ffd5b5050505061063061122b565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361067c5760405162461bcd60e51b81526004016103e090611c76565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106c45f51602061208a5f395f51905f52546001600160a01b031690565b6001600160a01b0316146106ea5760405162461bcd60e51b81526004016103e090611cc2565b6106f382610f7e565b610630828260016110c1565b5f306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461079e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103e0565b505f51602061208a5f395f51905f5290565b6001600160a01b0383165f90815260fb602052604081205462010000900460ff16818160028111156107e4576107e4611bf1565b0361080b57505f805260fb6020525f51602061206a5f395f51905f525462010000900460ff165b600181600281111561081f5761081f611bf1565b1461082d575f9150506108a4565b506001600160a01b0383165f90815260fb60205260408120546301000000900460ff169081600281111561086357610863611bf1565b0361088b57505f805260fb6020525f51602061206a5f395f51905f52546301000000900460ff165b600181600281111561089f5761089f611bf1565b149150505b949350505050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610929573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094d9190611d0e565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b815260040161097f9493929190611d29565b5f6040518083038186803b158015610995575f5ffd5b505afa1580156109a7573d5f5f3e3d5ffd5b5050505061047b61127d565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a549190611d0e565b6001600160a01b0316635ff57d203083335f6040518563ffffffff1660e01b8152600401610a859493929190611d29565b5f6040518083038186803b158015610a9b575f5ffd5b505afa158015610aad573d5f5f3e3d5ffd5b5050506001600160a01b0384169050610b085760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c747300000060448201526064016103e0565b610b2083610b1b36859003850185611d5f565b6112ba565b505050565b6001600160a01b0382165f90815260fb6020526040812054610100900460ff1681816002811115610b5857610b58611bf1565b036104cd57505f805260fb6020525f51602061206a5f395f51905f5254610100900460ff1660016104d0565b5f54610100900460ff1615808015610ba257505f54600160ff909116105b80610bbb5750303b158015610bbb57505f5460ff166001145b610c1e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e0565b5f805460ff191660011790558015610c3f575f805461ff0019166101001790555b610c48826113aa565b8015610630575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d329190611d0e565b6001600160a01b0316635ff57d203083335f6040518563ffffffff1660e01b8152600401610d639493929190611d29565b5f6040518083038186803b158015610d79575f5ffd5b505afa158015610d8b573d5f5f3e3d5ffd5b50505050610d98826113e1565b6106305f610b1b36859003850185611d5f565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c9190611d0e565b905090565b610e586040805160808101909152805f81526020015f81526020015f81526020015f905290565b5f805260fb60205260408051608081019091525f51602061206a5f395f51905f528054829060ff166002811115610e9157610e91611bf1565b6002811115610ea257610ea2611bf1565b81528154602090910190610100900460ff166002811115610ec557610ec5611bf1565b6002811115610ed657610ed6611bf1565b8152815460209091019062010000900460ff166002811115610efa57610efa611bf1565b6002811115610f0b57610f0b611bf1565b815281546020909101906301000000900460ff166002811115610f3057610f30611bf1565b6002811115610f4157610f41611bf1565b905250919050565b5f6001600160e01b031982166301ffc9a760e01b148061039257506001600160e01b03198216634d15eb0360e01b1492915050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110409190611d0e565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a4808201925f92909190829003018186803b1580156110a2575f5ffd5b505afa1580156110b4573d5f5f3e3d5ffd5b50505050610b20836114f8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110f457610b20836115a9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561114e575060408051601f3d908101601f1916820190925261114b91810190611de4565b60015b6111b15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103e0565b5f51602061208a5f395f51905f52811461121f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103e0565b50610b20838383611644565b61123361166e565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6112856116b9565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112603390565b6001600160a01b0382165f90815260fb602052604090208151815483929190829060ff191660018360028111156112f3576112f3611bf1565b021790555060208201518154829061ff00191661010083600281111561131b5761131b611bf1565b021790555060408201518154829062ff000019166201000083600281111561134557611345611bf1565b021790555060608201518154829063ff0000001916630100000083600281111561137157611371611bf1565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610c85929190611dfb565b5f54610100900460ff166113d05760405162461bcd60e51b81526004016103e090611e18565b6113d86116ff565b61047b81611735565b5f6113ef6020830183611e63565b600281111561140057611400611bf1565b1415801561142e57505f61141a6040830160208401611e63565b600281111561142b5761142b611bf1565b14155b801561145a57505f6114466060830160408401611e63565b600281111561145757611457611bf1565b14155b801561148657505f6114726080830160608401611e63565b600281111561148357611483611bf1565b14155b61047b5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e730000000060648201526084016103e0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115829190611d0e565b6001600160a01b03161461047b5760405163d2b3d33f60e01b815260040160405180910390fd5b6001600160a01b0381163b6116165760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103e0565b5f51602061208a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61164d836117c4565b5f825111806116595750805b15610b20576116688383611803565b50505050565b60975460ff166116b75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016103e0565b565b60975460ff16156116b75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016103e0565b5f54610100900460ff166117255760405162461bcd60e51b81526004016103e090611e18565b61172d611828565b6116b761184e565b5f54610100900460ff1661175b5760405162461bcd60e51b81526004016103e090611e18565b611764816113e1565b5f805260fb602052805f51602061206a5f395f51905f526117858282611ef8565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a5f826040516117b9929190611f9a565b60405180910390a150565b6117cd816115a9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606104e783836040518060600160405280602781526020016120aa6027913961187c565b5f54610100900460ff166116b75760405162461bcd60e51b81526004016103e090611e18565b5f54610100900460ff166118745760405162461bcd60e51b81526004016103e090611e18565b6116b76118f0565b60605f5f856001600160a01b031685604051611898919061201e565b5f60405180830381855af49150503d805f81146118d0576040519150601f19603f3d011682016040523d82523d5f602084013e6118d5565b606091505b50915091506118e686838387611922565b9695505050505050565b5f54610100900460ff166119165760405162461bcd60e51b81526004016103e090611e18565b6097805460ff19169055565b606083156119905782515f03611989576001600160a01b0385163b6119895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e0565b50816108a4565b6108a483838151156119a55781518083602001fd5b8060405162461bcd60e51b81526004016103e09190612034565b5f602082840312156119cf575f5ffd5b81356001600160e01b0319811681146104e7575f5ffd5b6001600160a01b038116811461047b575f5ffd5b5f60208284031215611a0a575f5ffd5b81356104e7816119e6565b5f5f5f60608486031215611a27575f5ffd5b8335611a32816119e6565b92506020840135611a42816119e6565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611a9057611a90611a53565b604052919050565b5f5f60408385031215611aa9575f5ffd5b8235611ab4816119e6565b9150602083013567ffffffffffffffff811115611acf575f5ffd5b8301601f81018513611adf575f5ffd5b803567ffffffffffffffff811115611af957611af9611a53565b611b0c601f8201601f1916602001611a67565b818152866020838501011115611b20575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215611b52575f5ffd5b8435611b5d816119e6565b93506020850135611b6d816119e6565b92506040850135611b7d816119e6565b9396929550929360600135925050565b5f60808284031215611b9d575f5ffd5b50919050565b5f5f60a08385031215611bb4575f5ffd5b8235611bbf816119e6565b9150611bce8460208501611b8d565b90509250929050565b5f60808284031215611be7575f5ffd5b6104e78383611b8d565b634e487b7160e01b5f52602160045260245ffd5b60038110611c2157634e487b7160e01b5f52602160045260245ffd5b9052565b611c30828251611c05565b6020810151611c426020840182611c05565b506040810151611c556040840182611c05565b506060810151610b206060840182611c05565b608081016103928284611c25565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611d1e575f5ffd5b81516104e7816119e6565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b6003811061047b575f5ffd5b5f6080828403128015611d70575f5ffd5b506040516080810167ffffffffffffffff81118282101715611d9457611d94611a53565b6040528235611da281611d53565b81526020830135611db281611d53565b60208201526040830135611dc581611d53565b60408201526060830135611dd881611d53565b60608201529392505050565b5f60208284031215611df4575f5ffd5b5051919050565b6001600160a01b038316815260a081016104e76020830184611c25565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611e73575f5ffd5b81356104e781611d53565b5f813561039281611d53565b60038210611ea657634e487b7160e01b5f52602160045260245ffd5b805462ff00008360101b1662ff0000198216178255505050565b60038210611edc57634e487b7160e01b5f52602160045260245ffd5b805463ff0000008360181b1663ff000000198216178255505050565b8135611f0381611d53565b60038110611f1f57634e487b7160e01b5f52602160045260245ffd5b815460ff821691508160ff1982161783556020840135611f3e81611d53565b60038110611f5a57634e487b7160e01b5f52602160045260245ffd5b61ff008160081b168361ffff19841617178455505050611f85611f7f60408401611e7e565b82611e8a565b610630611f9460608401611e7e565b82611ec0565b6001600160a01b038316815260a081018235611fb581611d53565b611fc26020840182611c05565b506020830135611fd181611d53565b611fde6040840182611c05565b506040830135611fed81611d53565b611ffa6060840182611c05565b50606083013561200981611d53565b6120166080840182611c05565b509392505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e63668eb63eb47da51f131e4409329dd35e0c6786e56ebf3a1c0865a8e6cd41964736f6c634300081c0033",
576
+ "deployedBytecode": "0x608060405260043610610105575f3560e01c80635fcdca3711610092578063aa2f92fb11610062578063aa2f92fb146102c7578063aad4148c146102e6578063cf273ca614610319578063e5a6b10f14610338578063ed716bf41461034c575f5ffd5b80635fcdca37146102565780638456cb5914610275578063896ce44c146102895780639051c763146102a8575f5ffd5b80633f4ba83a116100d85780633f4ba83a146101be5780634d15eb03146101d25780634f1ef2861461021857806352d1902d1461022b5780635c975abb1461023f575f5ffd5b806301ffc9a7146101095780631e3b9c5e1461013d5780633659cfe61461017e57806337ee20dd1461019f575b5f5ffd5b348015610114575f5ffd5b506101286101233660046119bf565b61036d565b60405190151581526020015b60405180910390f35b348015610148575f5ffd5b506101707f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b604051908152602001610134565b348015610189575f5ffd5b5061019d6101983660046119fa565b610398565b005b3480156101aa575f5ffd5b506101286101b9366004611a15565b61047e565b3480156101c9575f5ffd5b5061019d6104ee565b3480156101dd575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610134565b61019d610226366004611a98565b610634565b348015610236575f5ffd5b506101706106ff565b34801561024a575f5ffd5b5060975460ff16610128565b348015610261575f5ffd5b50610128610270366004611b3f565b6107b0565b348015610280575f5ffd5b5061019d6108ac565b348015610294575f5ffd5b5061019d6102a3366004611ba3565b6109b3565b3480156102b3575f5ffd5b506101286102c2366004611a15565b610b25565b3480156102d2575f5ffd5b5061019d6102e1366004611bd7565b610b84565b3480156102f1575f5ffd5b506101707fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b348015610324575f5ffd5b5061019d610333366004611bd7565b610c91565b348015610343575f5ffd5b50610200610dab565b348015610357575f5ffd5b50610360610e31565b6040516101349190611c68565b5f61037782610f49565b8061039257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103e95760405162461bcd60e51b81526004016103e090611c76565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104315f51602061208a5f395f51905f52546001600160a01b031690565b6001600160a01b0316146104575760405162461bcd60e51b81526004016103e090611cc2565b61046081610f7e565b604080515f8082526020820190925261047b918391906110c1565b50565b6001600160a01b0382165f90815260fb602052604081205460ff16818160028111156104ac576104ac611bf1565b036104cd57505f805260fb6020525f51602061206a5f395f51905f525460ff165b60015b8160028111156104e2576104e2611bf1565b149150505b9392505050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b09190611d0e565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a4808201925f92909190829003018186803b158015610612575f5ffd5b505afa158015610624573d5f5f3e3d5ffd5b5050505061063061122b565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361067c5760405162461bcd60e51b81526004016103e090611c76565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106c45f51602061208a5f395f51905f52546001600160a01b031690565b6001600160a01b0316146106ea5760405162461bcd60e51b81526004016103e090611cc2565b6106f382610f7e565b610630828260016110c1565b5f306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461079e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103e0565b505f51602061208a5f395f51905f5290565b6001600160a01b0383165f90815260fb602052604081205462010000900460ff16818160028111156107e4576107e4611bf1565b0361080b57505f805260fb6020525f51602061206a5f395f51905f525462010000900460ff165b600181600281111561081f5761081f611bf1565b1461082d575f9150506108a4565b506001600160a01b0383165f90815260fb60205260408120546301000000900460ff169081600281111561086357610863611bf1565b0361088b57505f805260fb6020525f51602061206a5f395f51905f52546301000000900460ff165b600181600281111561089f5761089f611bf1565b149150505b949350505050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610929573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094d9190611d0e565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b815260040161097f9493929190611d29565b5f6040518083038186803b158015610995575f5ffd5b505afa1580156109a7573d5f5f3e3d5ffd5b5050505061047b61127d565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a549190611d0e565b6001600160a01b0316635ff57d203083335f6040518563ffffffff1660e01b8152600401610a859493929190611d29565b5f6040518083038186803b158015610a9b575f5ffd5b505afa158015610aad573d5f5f3e3d5ffd5b5050506001600160a01b0384169050610b085760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c747300000060448201526064016103e0565b610b2083610b1b36859003850185611d5f565b6112ba565b505050565b6001600160a01b0382165f90815260fb6020526040812054610100900460ff1681816002811115610b5857610b58611bf1565b036104cd57505f805260fb6020525f51602061206a5f395f51905f5254610100900460ff1660016104d0565b5f54610100900460ff1615808015610ba257505f54600160ff909116105b80610bbb5750303b158015610bbb57505f5460ff166001145b610c1e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e0565b5f805460ff191660011790558015610c3f575f805461ff0019166101001790555b610c48826113aa565b8015610630575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d329190611d0e565b6001600160a01b0316635ff57d203083335f6040518563ffffffff1660e01b8152600401610d639493929190611d29565b5f6040518083038186803b158015610d79575f5ffd5b505afa158015610d8b573d5f5f3e3d5ffd5b50505050610d98826113e1565b6106305f610b1b36859003850185611d5f565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c9190611d0e565b905090565b610e586040805160808101909152805f81526020015f81526020015f81526020015f905290565b5f805260fb60205260408051608081019091525f51602061206a5f395f51905f528054829060ff166002811115610e9157610e91611bf1565b6002811115610ea257610ea2611bf1565b81528154602090910190610100900460ff166002811115610ec557610ec5611bf1565b6002811115610ed657610ed6611bf1565b8152815460209091019062010000900460ff166002811115610efa57610efa611bf1565b6002811115610f0b57610f0b611bf1565b815281546020909101906301000000900460ff166002811115610f3057610f30611bf1565b6002811115610f4157610f41611bf1565b905250919050565b5f6001600160e01b031982166301ffc9a760e01b148061039257506001600160e01b03198216634d15eb0360e01b1492915050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110409190611d0e565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a4808201925f92909190829003018186803b1580156110a2575f5ffd5b505afa1580156110b4573d5f5f3e3d5ffd5b50505050610b20836114f8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110f457610b20836115a9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561114e575060408051601f3d908101601f1916820190925261114b91810190611de4565b60015b6111b15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103e0565b5f51602061208a5f395f51905f52811461121f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103e0565b50610b20838383611644565b61123361166e565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6112856116b9565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112603390565b6001600160a01b0382165f90815260fb602052604090208151815483929190829060ff191660018360028111156112f3576112f3611bf1565b021790555060208201518154829061ff00191661010083600281111561131b5761131b611bf1565b021790555060408201518154829062ff000019166201000083600281111561134557611345611bf1565b021790555060608201518154829063ff0000001916630100000083600281111561137157611371611bf1565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610c85929190611dfb565b5f54610100900460ff166113d05760405162461bcd60e51b81526004016103e090611e18565b6113d86116ff565b61047b81611735565b5f6113ef6020830183611e63565b600281111561140057611400611bf1565b1415801561142e57505f61141a6040830160208401611e63565b600281111561142b5761142b611bf1565b14155b801561145a57505f6114466060830160408401611e63565b600281111561145757611457611bf1565b14155b801561148657505f6114726080830160608401611e63565b600281111561148357611483611bf1565b14155b61047b5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e730000000060648201526084016103e0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115829190611d0e565b6001600160a01b03161461047b5760405163d2b3d33f60e01b815260040160405180910390fd5b6001600160a01b0381163b6116165760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103e0565b5f51602061208a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61164d836117c4565b5f825111806116595750805b15610b20576116688383611803565b50505050565b60975460ff166116b75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016103e0565b565b60975460ff16156116b75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016103e0565b5f54610100900460ff166117255760405162461bcd60e51b81526004016103e090611e18565b61172d611828565b6116b761184e565b5f54610100900460ff1661175b5760405162461bcd60e51b81526004016103e090611e18565b611764816113e1565b5f805260fb602052805f51602061206a5f395f51905f526117858282611ef8565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a5f826040516117b9929190611f9a565b60405180910390a150565b6117cd816115a9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606104e783836040518060600160405280602781526020016120aa6027913961187c565b5f54610100900460ff166116b75760405162461bcd60e51b81526004016103e090611e18565b5f54610100900460ff166118745760405162461bcd60e51b81526004016103e090611e18565b6116b76118f0565b60605f5f856001600160a01b031685604051611898919061201e565b5f60405180830381855af49150503d805f81146118d0576040519150601f19603f3d011682016040523d82523d5f602084013e6118d5565b606091505b50915091506118e686838387611922565b9695505050505050565b5f54610100900460ff166119165760405162461bcd60e51b81526004016103e090611e18565b6097805460ff19169055565b606083156119905782515f03611989576001600160a01b0385163b6119895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e0565b50816108a4565b6108a483838151156119a55781518083602001fd5b8060405162461bcd60e51b81526004016103e09190612034565b5f602082840312156119cf575f5ffd5b81356001600160e01b0319811681146104e7575f5ffd5b6001600160a01b038116811461047b575f5ffd5b5f60208284031215611a0a575f5ffd5b81356104e7816119e6565b5f5f5f60608486031215611a27575f5ffd5b8335611a32816119e6565b92506020840135611a42816119e6565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611a9057611a90611a53565b604052919050565b5f5f60408385031215611aa9575f5ffd5b8235611ab4816119e6565b9150602083013567ffffffffffffffff811115611acf575f5ffd5b8301601f81018513611adf575f5ffd5b803567ffffffffffffffff811115611af957611af9611a53565b611b0c601f8201601f1916602001611a67565b818152866020838501011115611b20575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215611b52575f5ffd5b8435611b5d816119e6565b93506020850135611b6d816119e6565b92506040850135611b7d816119e6565b9396929550929360600135925050565b5f60808284031215611b9d575f5ffd5b50919050565b5f5f60a08385031215611bb4575f5ffd5b8235611bbf816119e6565b9150611bce8460208501611b8d565b90509250929050565b5f60808284031215611be7575f5ffd5b6104e78383611b8d565b634e487b7160e01b5f52602160045260245ffd5b60038110611c2157634e487b7160e01b5f52602160045260245ffd5b9052565b611c30828251611c05565b6020810151611c426020840182611c05565b506040810151611c556040840182611c05565b506060810151610b206060840182611c05565b608081016103928284611c25565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611d1e575f5ffd5b81516104e7816119e6565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b6003811061047b575f5ffd5b5f6080828403128015611d70575f5ffd5b506040516080810167ffffffffffffffff81118282101715611d9457611d94611a53565b6040528235611da281611d53565b81526020830135611db281611d53565b60208201526040830135611dc581611d53565b60408201526060830135611dd881611d53565b60608201529392505050565b5f60208284031215611df4575f5ffd5b5051919050565b6001600160a01b038316815260a081016104e76020830184611c25565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611e73575f5ffd5b81356104e781611d53565b5f813561039281611d53565b60038210611ea657634e487b7160e01b5f52602160045260245ffd5b805462ff00008360101b1662ff0000198216178255505050565b60038210611edc57634e487b7160e01b5f52602160045260245ffd5b805463ff0000008360181b1663ff000000198216178255505050565b8135611f0381611d53565b60038110611f1f57634e487b7160e01b5f52602160045260245ffd5b815460ff821691508160ff1982161783556020840135611f3e81611d53565b60038110611f5a57634e487b7160e01b5f52602160045260245ffd5b61ff008160081b168361ffff19841617178455505050611f85611f7f60408401611e7e565b82611e8a565b610630611f9460608401611e7e565b82611ec0565b6001600160a01b038316815260a081018235611fb581611d53565b611fc26020840182611c05565b506020830135611fd181611d53565b611fde6040840182611c05565b506040830135611fed81611d53565b611ffa6060840182611c05565b50606083013561200981611d53565b6120166080840182611c05565b509392505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e63668eb63eb47da51f131e4409329dd35e0c6786e56ebf3a1c0865a8e6cd41964736f6c634300081c0033",
655
577
  "linkReferences": {},
656
578
  "deployedLinkReferences": {}
657
579
  }
@@ -3,8 +3,8 @@
3
3
  "contractName": "Policy",
4
4
  "sourceName": "contracts/Policy.sol",
5
5
  "abi": [],
6
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf8b784fcb9c90577ad63bc8b0961a759d22c3c8db65f34a5dae42f15dc1d52064736f6c63430008100033",
7
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf8b784fcb9c90577ad63bc8b0961a759d22c3c8db65f34a5dae42f15dc1d52064736f6c63430008100033",
6
+ "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208b4a247815d963cf0ac45a9783ad891ff0f5827ac6f2cf25acfdd0eca5c979f164736f6c634300081c0033",
7
+ "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208b4a247815d963cf0ac45a9783ad891ff0f5827ac6f2cf25acfdd0eca5c979f164736f6c634300081c0033",
8
8
  "linkReferences": {},
9
9
  "deployedLinkReferences": {}
10
10
  }