@etherisc/gif-next 0.0.2-7c1c4c4-821 → 0.0.2-7c515fb-081

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 (133) hide show
  1. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  2. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.json +62 -10
  4. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  5. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +52 -0
  7. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  8. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  10. package/artifacts/contracts/components/Pool.sol/Pool.json +99 -8
  11. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  12. package/artifacts/contracts/components/Product.sol/Product.json +2 -2
  13. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  14. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  16. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  33. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +1 -1
  34. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +1 -1
  35. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
  36. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  37. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  38. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  40. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  41. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  42. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  43. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +2 -2
  44. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
  46. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +6 -36
  48. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  60. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +2 -2
  62. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +26 -61
  64. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +10 -22
  66. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +44 -63
  72. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +19 -23
  74. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  75. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  76. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  77. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  78. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  79. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  80. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  81. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  83. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  84. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  85. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  86. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  87. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  88. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  89. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  90. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  91. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  92. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  93. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
  94. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  95. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  96. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  97. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  98. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  99. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  100. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  101. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  102. package/artifacts/contracts/test/TestService.sol/TestService.json +2 -2
  103. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  104. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  105. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  106. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  107. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  108. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  109. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  110. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  111. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  112. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  113. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  114. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  115. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  116. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  117. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  118. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  119. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  120. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  121. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  122. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  123. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  124. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  125. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  126. package/contracts/components/Distribution.sol +13 -7
  127. package/contracts/components/IDistributionComponent.sol +2 -0
  128. package/contracts/components/Pool.sol +14 -10
  129. package/contracts/instance/base/ComponentServiceBase.sol +8 -72
  130. package/contracts/instance/service/DistributionService.sol +17 -5
  131. package/contracts/instance/service/PoolService.sol +18 -6
  132. package/contracts/shared/Service.sol +0 -1
  133. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -495,8 +495,8 @@
495
495
  "type": "function"
496
496
  }
497
497
  ],
498
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162001e0f38038062001e0f833981016040819052620000349162000664565b620000656301ffc9a760e01b600090815260205260008051602062001def833981519152805460ff19166001179055565b600280546001600160a01b031916331790556200008162000096565b6200008d83826200014a565b5050506200090e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000e75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60006200017560408051808201909152600b81526a546573745365727669636560a81b602082015290565b6200017f62000209565b60405160200162000192929190620006ae565b60408051601f1981840301815291905290506000620001b18462000296565b90506000620001c68583603c8488886200030a565b631b4612f160e31b60009081526020527ffc58a5a01198e68c5a5d0bcd463f9ab550fc4337b1df271aed6dbb33d25fef25805460ff191660011790555050505050565b6000620002156200040c565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156200026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000291919062000708565b905090565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000734565b92915050565b6200033b6301ffc9a760e01b600090815260205260008051602062001def833981519152805460ff19166001179055565b62000347828762000494565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166001600160681b0319909116176c0100000000000000000000000060ff8816021760ff60681b19166d010000000000000000000000000086151502178155905060018101620003c68382620007f7565b506303fb044760e21b60009081526020527fb43e4f3791bfcdefa3a0fbe2a5555f8d6490b90e01de0ff40c66f18b49b562c5805460ff1916600117905550505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156200046e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002919190620008c3565b600280546001600160a01b0319166001600160a01b038416179055620004ba81620004be565b5050565b6001546001600160a01b031615620004fd5760015460405163fcdbf2d960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6001600160a01b038116620005255760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036200055d5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620004f4565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263e14a543960e01b60048201526301ffc9a790602401602060405180830381865afa925050508015620005da575060408051601f3d908101601f19168201909252620005d791810190620008ea565b60015b620006045760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620004f4565b80620004ba5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401620004f4565b80516001600160a01b03811681146200064757600080fd5b919050565b80516001600160601b03811681146200064757600080fd5b6000806000606084860312156200067a57600080fd5b62000685846200062f565b925062000695602085016200064c565b9150620006a5604085016200062f565b90509250925092565b604081526000835180604084015260005b81811015620006de5760208187018101516060868401015201620006bf565b506000606082850101526060601f19601f83011684010191505060ff831660208301529392505050565b6000602082840312156200071b57600080fd5b815160ff811681146200072d57600080fd5b9392505050565b6000602082840312156200074757600080fd5b6200072d826200064c565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200077d57607f821691505b6020821081036200079e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007f257600081815260208120601f850160051c81016020861015620007cd5750805b601f850160051c820191505b81811015620007ee57828155600101620007d9565b5050505b505050565b81516001600160401b0381111562000813576200081362000752565b6200082b8162000824845462000768565b84620007a4565b602080601f8311600181146200086357600084156200084a5750858301515b600019600386901b1c1916600185901b178555620007ee565b600085815260208120601f198616915b82811015620008945788860151825594840194600190910190840162000873565b5085821015620008b35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008d657600080fd5b815162ffffff811681146200072d57600080fd5b600060208284031215620008fd57600080fd5b815180151581146200072d57600080fd5b6114d1806200091e6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063644c45e0116100a2578063a745e3df11610071578063a745e3df146103d3578063b3c65015146103e6578063b88da75914610407578063cde749f41461041a578063cf7a1d771461043457600080fd5b8063644c45e01461034f578063893d20e81461037a578063946dfcfe14610382578063a3f4df7e146103a957600080fd5b806317d7de7c116100e957806317d7de7c146101995780631eff4b22146101c95780634d459c90146101fe5780634f421333146103175780635ab1bd531461032a57600080fd5b806301ffc9a71461011b5780630d8e6e2c1461015d5780630fec111c14610179578063138461e01461018f575b600080fd5b61014861012936600461107d565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610165610447565b60405162ffffff9091168152602001610154565b6101816104d1565b6040516101549291906110f4565b610197610653565b005b60408051808201909152600b81526a546573745365727669636560a81b60208201525b604051610154919061119b565b6101f07f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610154565b6102ba61020c3660046111c2565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260008051602061147c83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610154565b6101486103253660046111c2565b610875565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610154565b600154600160a01b90046001600160601b03166040516001600160601b039091168152602001610154565b610337610928565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546101f0565b6101bc6040518060400160405280600b81526020016a546573745365727669636560a81b81525081565b6101976103e136600461120a565b610a41565b6103ee610b9e565b60405167ffffffffffffffff9091168152602001610154565b6101656104153660046112e0565b610bc0565b610422610c11565b60405160ff9091168152602001610154565b61019761044236600461120a565b610c94565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc91906112f9565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806105546001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161059c610928565b6001600160a01b031681526020018260010180546105b990611316565b80601f01602080910402602001604051908101604052809291908181526020018280546105e590611316565b80156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190611350565b15610720576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b03166107495760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190611350565b6107de576040516372657a5160e01b81526001600160a01b0382166004820152602401610717565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084c9190611372565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b60008060008051602061147c83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610921919061139b565b1192915050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b19190611350565b15610a3157600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc91906113b4565b506002546001600160a01b031690565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610a63610447565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac791906113d1565b60008051602061145c8339815191528054600160401b900460ff1680610afb5750805467ffffffffffffffff808416911610155b15610b195760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b178155610b458585610d9f565b610b4e83611040565b805460ff60401b1916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006104cc60008051602061145c8339815191525467ffffffffffffffff1690565b600060008051602061147c8339815191526001018281548110610be557610be56113fb565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b6000610c1b610447565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190611411565b60008051602061145c8339815191528054600160401b810460ff16159067ffffffffffffffff16600081158015610cc85750825b905060008267ffffffffffffffff166001148015610ce55750303b155b905081158015610cf3575080155b15610d115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d3b57845460ff60401b1916600160401b1785555b610d458888610d9f565b610d4f8787611040565b8315610d9557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b610da7611044565b60008051602061147c8339815191526000610dd860008051602061145c8339815191525467ffffffffffffffff1690565b90506000610de4610447565b90508167ffffffffffffffff16600103610e125760028301805462ffffff191662ffffff8316179055610e60565b600283015462ffffff90811690821611610e605760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610717565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f389190611434565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610b8f9083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101165b60008051602061145c83398151915254600160401b900460ff1661107b57604051631afcd79f60e31b815260040160405180910390fd5b565b60006020828403121561108f57600080fd5b81356001600160e01b0319811681146110a757600080fd5b9392505050565b6000815180845260005b818110156110d4576020818501810151868301820152016110b8565b506000602082860101526020601f19601f83011685010191505092915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff6040850151166080830152606084015161113860a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e061010084015261117e6101208401826110ae565b9050828103602084015261119281856110ae565b95945050505050565b6020815260006110a760208301846110ae565b62ffffff811681146111bf57600080fd5b50565b6000602082840312156111d457600080fd5b81356110a7816111ae565b6001600160a01b03811681146111bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561121f57600080fd5b833561122a816111df565b9250602084013561123a816111df565b9150604084013567ffffffffffffffff8082111561125757600080fd5b818601915086601f83011261126b57600080fd5b81358181111561127d5761127d6111f4565b604051601f8201601f19908116603f011681019083821181831017156112a5576112a56111f4565b816040528281528960208487010111156112be57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156112f257600080fd5b5035919050565b60006020828403121561130b57600080fd5b81516110a7816111ae565b600181811c9082168061132a57607f821691505b60208210810361134a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561136257600080fd5b815180151581146110a757600080fd5b60006020828403121561138457600080fd5b81516001600160601b03811681146110a757600080fd5b6000602082840312156113ad57600080fd5b5051919050565b6000602082840312156113c657600080fd5b81516110a7816111df565b6000602082840312156113e357600080fd5b815167ffffffffffffffff811681146110a757600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561142357600080fd5b815160ff811681146110a757600080fd5b60006020828403121561144657600080fd5b815164ffffffffff811681146110a757600080fdfef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a2646970667358221220ef3bc65d6453be578f1004c1add936d65da93b083b889ec8ef25265db9b7318f64736f6c6343000814003367be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5",
499
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063644c45e0116100a2578063a745e3df11610071578063a745e3df146103d3578063b3c65015146103e6578063b88da75914610407578063cde749f41461041a578063cf7a1d771461043457600080fd5b8063644c45e01461034f578063893d20e81461037a578063946dfcfe14610382578063a3f4df7e146103a957600080fd5b806317d7de7c116100e957806317d7de7c146101995780631eff4b22146101c95780634d459c90146101fe5780634f421333146103175780635ab1bd531461032a57600080fd5b806301ffc9a71461011b5780630d8e6e2c1461015d5780630fec111c14610179578063138461e01461018f575b600080fd5b61014861012936600461107d565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610165610447565b60405162ffffff9091168152602001610154565b6101816104d1565b6040516101549291906110f4565b610197610653565b005b60408051808201909152600b81526a546573745365727669636560a81b60208201525b604051610154919061119b565b6101f07f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610154565b6102ba61020c3660046111c2565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260008051602061147c83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610154565b6101486103253660046111c2565b610875565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610154565b600154600160a01b90046001600160601b03166040516001600160601b039091168152602001610154565b610337610928565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546101f0565b6101bc6040518060400160405280600b81526020016a546573745365727669636560a81b81525081565b6101976103e136600461120a565b610a41565b6103ee610b9e565b60405167ffffffffffffffff9091168152602001610154565b6101656104153660046112e0565b610bc0565b610422610c11565b60405160ff9091168152602001610154565b61019761044236600461120a565b610c94565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc91906112f9565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806105546001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161059c610928565b6001600160a01b031681526020018260010180546105b990611316565b80601f01602080910402602001604051908101604052809291908181526020018280546105e590611316565b80156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190611350565b15610720576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b03166107495760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190611350565b6107de576040516372657a5160e01b81526001600160a01b0382166004820152602401610717565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084c9190611372565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b60008060008051602061147c83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610921919061139b565b1192915050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b19190611350565b15610a3157600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc91906113b4565b506002546001600160a01b031690565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610a63610447565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac791906113d1565b60008051602061145c8339815191528054600160401b900460ff1680610afb5750805467ffffffffffffffff808416911610155b15610b195760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b178155610b458585610d9f565b610b4e83611040565b805460ff60401b1916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006104cc60008051602061145c8339815191525467ffffffffffffffff1690565b600060008051602061147c8339815191526001018281548110610be557610be56113fb565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b6000610c1b610447565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190611411565b60008051602061145c8339815191528054600160401b810460ff16159067ffffffffffffffff16600081158015610cc85750825b905060008267ffffffffffffffff166001148015610ce55750303b155b905081158015610cf3575080155b15610d115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d3b57845460ff60401b1916600160401b1785555b610d458888610d9f565b610d4f8787611040565b8315610d9557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b610da7611044565b60008051602061147c8339815191526000610dd860008051602061145c8339815191525467ffffffffffffffff1690565b90506000610de4610447565b90508167ffffffffffffffff16600103610e125760028301805462ffffff191662ffffff8316179055610e60565b600283015462ffffff90811690821611610e605760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610717565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f389190611434565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610b8f9083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101165b60008051602061145c83398151915254600160401b900460ff1661107b57604051631afcd79f60e31b815260040160405180910390fd5b565b60006020828403121561108f57600080fd5b81356001600160e01b0319811681146110a757600080fd5b9392505050565b6000815180845260005b818110156110d4576020818501810151868301820152016110b8565b506000602082860101526020601f19601f83011685010191505092915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff6040850151166080830152606084015161113860a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e061010084015261117e6101208401826110ae565b9050828103602084015261119281856110ae565b95945050505050565b6020815260006110a760208301846110ae565b62ffffff811681146111bf57600080fd5b50565b6000602082840312156111d457600080fd5b81356110a7816111ae565b6001600160a01b03811681146111bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561121f57600080fd5b833561122a816111df565b9250602084013561123a816111df565b9150604084013567ffffffffffffffff8082111561125757600080fd5b818601915086601f83011261126b57600080fd5b81358181111561127d5761127d6111f4565b604051601f8201601f19908116603f011681019083821181831017156112a5576112a56111f4565b816040528281528960208487010111156112be57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156112f257600080fd5b5035919050565b60006020828403121561130b57600080fd5b81516110a7816111ae565b600181811c9082168061132a57607f821691505b60208210810361134a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561136257600080fd5b815180151581146110a757600080fd5b60006020828403121561138457600080fd5b81516001600160601b03811681146110a757600080fd5b6000602082840312156113ad57600080fd5b5051919050565b6000602082840312156113c657600080fd5b81516110a7816111df565b6000602082840312156113e357600080fd5b815167ffffffffffffffff811681146110a757600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561142357600080fd5b815160ff811681146110a757600080fd5b60006020828403121561144657600080fd5b815164ffffffffff811681146110a757600080fdfef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a2646970667358221220ef3bc65d6453be578f1004c1add936d65da93b083b889ec8ef25265db9b7318f64736f6c63430008140033",
498
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162001e0f38038062001e0f833981016040819052620000349162000664565b620000656301ffc9a760e01b600090815260205260008051602062001def833981519152805460ff19166001179055565b600280546001600160a01b031916331790556200008162000096565b6200008d83826200014a565b5050506200090e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000e75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60006200017560408051808201909152600b81526a546573745365727669636560a81b602082015290565b6200017f62000209565b60405160200162000192929190620006ae565b60408051601f1981840301815291905290506000620001b18462000296565b90506000620001c68583603c8488886200030a565b631b4612f160e31b60009081526020527ffc58a5a01198e68c5a5d0bcd463f9ab550fc4337b1df271aed6dbb33d25fef25805460ff191660011790555050505050565b6000620002156200040c565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156200026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000291919062000708565b905090565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000734565b92915050565b6200033b6301ffc9a760e01b600090815260205260008051602062001def833981519152805460ff19166001179055565b62000347828762000494565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166001600160681b0319909116176c0100000000000000000000000060ff8816021760ff60681b19166d010000000000000000000000000086151502178155905060018101620003c68382620007f7565b506303fb044760e21b60009081526020527fb43e4f3791bfcdefa3a0fbe2a5555f8d6490b90e01de0ff40c66f18b49b562c5805460ff1916600117905550505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156200046e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002919190620008c3565b600280546001600160a01b0319166001600160a01b038416179055620004ba81620004be565b5050565b6001546001600160a01b031615620004fd5760015460405163fcdbf2d960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6001600160a01b038116620005255760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036200055d5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620004f4565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263e14a543960e01b60048201526301ffc9a790602401602060405180830381865afa925050508015620005da575060408051601f3d908101601f19168201909252620005d791810190620008ea565b60015b620006045760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620004f4565b80620004ba5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401620004f4565b80516001600160a01b03811681146200064757600080fd5b919050565b80516001600160601b03811681146200064757600080fd5b6000806000606084860312156200067a57600080fd5b62000685846200062f565b925062000695602085016200064c565b9150620006a5604085016200062f565b90509250925092565b604081526000835180604084015260005b81811015620006de5760208187018101516060868401015201620006bf565b506000606082850101526060601f19601f83011684010191505060ff831660208301529392505050565b6000602082840312156200071b57600080fd5b815160ff811681146200072d57600080fd5b9392505050565b6000602082840312156200074757600080fd5b6200072d826200064c565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200077d57607f821691505b6020821081036200079e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007f257600081815260208120601f850160051c81016020861015620007cd5750805b601f850160051c820191505b81811015620007ee57828155600101620007d9565b5050505b505050565b81516001600160401b0381111562000813576200081362000752565b6200082b8162000824845462000768565b84620007a4565b602080601f8311600181146200086357600084156200084a5750858301515b600019600386901b1c1916600185901b178555620007ee565b600085815260208120601f198616915b82811015620008945788860151825594840194600190910190840162000873565b5085821015620008b35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008d657600080fd5b815162ffffff811681146200072d57600080fd5b600060208284031215620008fd57600080fd5b815180151581146200072d57600080fd5b6114d1806200091e6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063644c45e0116100a2578063a745e3df11610071578063a745e3df146103d3578063b3c65015146103e6578063b88da75914610407578063cde749f41461041a578063cf7a1d771461043457600080fd5b8063644c45e01461034f578063893d20e81461037a578063946dfcfe14610382578063a3f4df7e146103a957600080fd5b806317d7de7c116100e957806317d7de7c146101995780631eff4b22146101c95780634d459c90146101fe5780634f421333146103175780635ab1bd531461032a57600080fd5b806301ffc9a71461011b5780630d8e6e2c1461015d5780630fec111c14610179578063138461e01461018f575b600080fd5b61014861012936600461107d565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610165610447565b60405162ffffff9091168152602001610154565b6101816104d1565b6040516101549291906110f4565b610197610653565b005b60408051808201909152600b81526a546573745365727669636560a81b60208201525b604051610154919061119b565b6101f07f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610154565b6102ba61020c3660046111c2565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260008051602061147c83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610154565b6101486103253660046111c2565b610875565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610154565b600154600160a01b90046001600160601b03166040516001600160601b039091168152602001610154565b610337610928565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546101f0565b6101bc6040518060400160405280600b81526020016a546573745365727669636560a81b81525081565b6101976103e136600461120a565b610a41565b6103ee610b9e565b60405167ffffffffffffffff9091168152602001610154565b6101656104153660046112e0565b610bc0565b610422610c11565b60405160ff9091168152602001610154565b61019761044236600461120a565b610c94565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc91906112f9565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806105546001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161059c610928565b6001600160a01b031681526020018260010180546105b990611316565b80601f01602080910402602001604051908101604052809291908181526020018280546105e590611316565b80156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190611350565b15610720576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b03166107495760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190611350565b6107de576040516372657a5160e01b81526001600160a01b0382166004820152602401610717565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084c9190611372565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b60008060008051602061147c83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610921919061139b565b1192915050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b19190611350565b15610a3157600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc91906113b4565b506002546001600160a01b031690565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610a63610447565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac791906113d1565b60008051602061145c8339815191528054600160401b900460ff1680610afb5750805467ffffffffffffffff808416911610155b15610b195760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b178155610b458585610d9f565b610b4e83611040565b805460ff60401b1916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006104cc60008051602061145c8339815191525467ffffffffffffffff1690565b600060008051602061147c8339815191526001018281548110610be557610be56113fb565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b6000610c1b610447565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190611411565b60008051602061145c8339815191528054600160401b810460ff16159067ffffffffffffffff16600081158015610cc85750825b905060008267ffffffffffffffff166001148015610ce55750303b155b905081158015610cf3575080155b15610d115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d3b57845460ff60401b1916600160401b1785555b610d458888610d9f565b610d4f8787611040565b8315610d9557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b610da7611044565b60008051602061147c8339815191526000610dd860008051602061145c8339815191525467ffffffffffffffff1690565b90506000610de4610447565b90508167ffffffffffffffff16600103610e125760028301805462ffffff191662ffffff8316179055610e60565b600283015462ffffff90811690821611610e605760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610717565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f389190611434565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610b8f9083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101165b60008051602061145c83398151915254600160401b900460ff1661107b57604051631afcd79f60e31b815260040160405180910390fd5b565b60006020828403121561108f57600080fd5b81356001600160e01b0319811681146110a757600080fd5b9392505050565b6000815180845260005b818110156110d4576020818501810151868301820152016110b8565b506000602082860101526020601f19601f83011685010191505092915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff6040850151166080830152606084015161113860a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e061010084015261117e6101208401826110ae565b9050828103602084015261119281856110ae565b95945050505050565b6020815260006110a760208301846110ae565b62ffffff811681146111bf57600080fd5b50565b6000602082840312156111d457600080fd5b81356110a7816111ae565b6001600160a01b03811681146111bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561121f57600080fd5b833561122a816111df565b9250602084013561123a816111df565b9150604084013567ffffffffffffffff8082111561125757600080fd5b818601915086601f83011261126b57600080fd5b81358181111561127d5761127d6111f4565b604051601f8201601f19908116603f011681019083821181831017156112a5576112a56111f4565b816040528281528960208487010111156112be57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156112f257600080fd5b5035919050565b60006020828403121561130b57600080fd5b81516110a7816111ae565b600181811c9082168061132a57607f821691505b60208210810361134a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561136257600080fd5b815180151581146110a757600080fd5b60006020828403121561138457600080fd5b81516001600160601b03811681146110a757600080fd5b6000602082840312156113ad57600080fd5b5051919050565b6000602082840312156113c657600080fd5b81516110a7816111df565b6000602082840312156113e357600080fd5b815167ffffffffffffffff811681146110a757600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561142357600080fd5b815160ff811681146110a757600080fd5b60006020828403121561144657600080fd5b815164ffffffffff811681146110a757600080fdfef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a2646970667358221220bb472a1cfc2fca5f5ecadd0d3bdc10c4b46a51d6613b11aea7b5488af412da1d64736f6c6343000814003367be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5",
499
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063644c45e0116100a2578063a745e3df11610071578063a745e3df146103d3578063b3c65015146103e6578063b88da75914610407578063cde749f41461041a578063cf7a1d771461043457600080fd5b8063644c45e01461034f578063893d20e81461037a578063946dfcfe14610382578063a3f4df7e146103a957600080fd5b806317d7de7c116100e957806317d7de7c146101995780631eff4b22146101c95780634d459c90146101fe5780634f421333146103175780635ab1bd531461032a57600080fd5b806301ffc9a71461011b5780630d8e6e2c1461015d5780630fec111c14610179578063138461e01461018f575b600080fd5b61014861012936600461107d565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610165610447565b60405162ffffff9091168152602001610154565b6101816104d1565b6040516101549291906110f4565b610197610653565b005b60408051808201909152600b81526a546573745365727669636560a81b60208201525b604051610154919061119b565b6101f07f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610154565b6102ba61020c3660046111c2565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260008051602061147c83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610154565b6101486103253660046111c2565b610875565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610154565b600154600160a01b90046001600160601b03166040516001600160601b039091168152602001610154565b610337610928565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546101f0565b6101bc6040518060400160405280600b81526020016a546573745365727669636560a81b81525081565b6101976103e136600461120a565b610a41565b6103ee610b9e565b60405167ffffffffffffffff9091168152602001610154565b6101656104153660046112e0565b610bc0565b610422610c11565b60405160ff9091168152602001610154565b61019761044236600461120a565b610c94565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc91906112f9565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806105546001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161059c610928565b6001600160a01b031681526020018260010180546105b990611316565b80601f01602080910402602001604051908101604052809291908181526020018280546105e590611316565b80156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190611350565b15610720576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b03166107495760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190611350565b6107de576040516372657a5160e01b81526001600160a01b0382166004820152602401610717565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084c9190611372565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b60008060008051602061147c83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610921919061139b565b1192915050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b19190611350565b15610a3157600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc91906113b4565b506002546001600160a01b031690565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610a63610447565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac791906113d1565b60008051602061145c8339815191528054600160401b900460ff1680610afb5750805467ffffffffffffffff808416911610155b15610b195760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b178155610b458585610d9f565b610b4e83611040565b805460ff60401b1916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006104cc60008051602061145c8339815191525467ffffffffffffffff1690565b600060008051602061147c8339815191526001018281548110610be557610be56113fb565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b6000610c1b610447565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190611411565b60008051602061145c8339815191528054600160401b810460ff16159067ffffffffffffffff16600081158015610cc85750825b905060008267ffffffffffffffff166001148015610ce55750303b155b905081158015610cf3575080155b15610d115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d3b57845460ff60401b1916600160401b1785555b610d458888610d9f565b610d4f8787611040565b8315610d9557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b610da7611044565b60008051602061147c8339815191526000610dd860008051602061145c8339815191525467ffffffffffffffff1690565b90506000610de4610447565b90508167ffffffffffffffff16600103610e125760028301805462ffffff191662ffffff8316179055610e60565b600283015462ffffff90811690821611610e605760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610717565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f389190611434565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610b8f9083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101165b60008051602061145c83398151915254600160401b900460ff1661107b57604051631afcd79f60e31b815260040160405180910390fd5b565b60006020828403121561108f57600080fd5b81356001600160e01b0319811681146110a757600080fd5b9392505050565b6000815180845260005b818110156110d4576020818501810151868301820152016110b8565b506000602082860101526020601f19601f83011685010191505092915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff6040850151166080830152606084015161113860a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e061010084015261117e6101208401826110ae565b9050828103602084015261119281856110ae565b95945050505050565b6020815260006110a760208301846110ae565b62ffffff811681146111bf57600080fd5b50565b6000602082840312156111d457600080fd5b81356110a7816111ae565b6001600160a01b03811681146111bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561121f57600080fd5b833561122a816111df565b9250602084013561123a816111df565b9150604084013567ffffffffffffffff8082111561125757600080fd5b818601915086601f83011261126b57600080fd5b81358181111561127d5761127d6111f4565b604051601f8201601f19908116603f011681019083821181831017156112a5576112a56111f4565b816040528281528960208487010111156112be57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156112f257600080fd5b5035919050565b60006020828403121561130b57600080fd5b81516110a7816111ae565b600181811c9082168061132a57607f821691505b60208210810361134a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561136257600080fd5b815180151581146110a757600080fd5b60006020828403121561138457600080fd5b81516001600160601b03811681146110a757600080fd5b6000602082840312156113ad57600080fd5b5051919050565b6000602082840312156113c657600080fd5b81516110a7816111df565b6000602082840312156113e357600080fd5b815167ffffffffffffffff811681146110a757600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561142357600080fd5b815160ff811681146110a757600080fd5b60006020828403121561144657600080fd5b815164ffffffffff811681146110a757600080fdfef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a2646970667358221220bb472a1cfc2fca5f5ecadd0d3bdc10c4b46a51d6613b11aea7b5488af412da1d64736f6c63430008140033",
500
500
  "linkReferences": {
501
501
  "contracts/types/Blocknumber.sol": {
502
502
  "BlocknumberLib": [
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aab34ddf6f6690aa4ef3dcf86fcf8b28.json"
3
+ "buildInfo": "../../../build-info/ab8580dfbd8c3e5b71893cf209d613dc.json"
4
4
  }
@@ -121,6 +121,16 @@ contract Distribution is
121
121
  return false;
122
122
  }
123
123
 
124
+ function getInitialSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
125
+ return ISetup.DistributionSetupInfo(
126
+ _productNftId,
127
+ TokenHandler(address(_token)),
128
+ _initialDistributionFee,
129
+ _isVerifying,
130
+ address(this)
131
+ );
132
+ }
133
+
124
134
  function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
125
135
  InstanceReader reader = _instance.getInstanceReader();
126
136
  return reader.getDistributionSetupInfo(getNftId());
@@ -142,18 +152,14 @@ contract Distribution is
142
152
  {
143
153
  (
144
154
  IRegistry.ObjectInfo memory info,
155
+ bytes memory data
145
156
  ) = super.getInitialInfo();
146
157
 
147
158
  return (
148
159
  info,
149
160
  abi.encode(
150
- ISetup.DistributionSetupInfo(
151
- _productNftId,
152
- TokenHandler(address(_token)),
153
- _initialDistributionFee,
154
- _isVerifying,
155
- address(this)
156
- )
161
+ _initialDistributionFee,
162
+ _isVerifying
157
163
  )
158
164
  );
159
165
  }
@@ -8,6 +8,8 @@ import {ISetup} from "../instance/module/ISetup.sol";
8
8
 
9
9
  interface IDistributionComponent {
10
10
 
11
+ function getInitialSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
12
+
11
13
  function setFees(
12
14
  Fee memory distributionFee
13
15
  ) external;
@@ -168,6 +168,18 @@ contract Pool is BaseComponent, IPoolComponent {
168
168
  _poolService.setBundleFee(bundleNftId, fee);
169
169
  }
170
170
 
171
+ function getInitialSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
172
+ return ISetup.PoolSetupInfo(
173
+ _productNftId,
174
+ TokenHandler(address(_token)),
175
+ _collateralizationLevel,
176
+ _initialPoolFee,
177
+ _initialStakingFee,
178
+ _initialPerformanceFee,
179
+ _isVerifying,
180
+ _wallet
181
+ );
182
+ }
171
183
  function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
172
184
  InstanceReader reader = _instance.getInstanceReader();
173
185
  return reader.getPoolSetupInfo(getNftId());
@@ -185,21 +197,13 @@ contract Pool is BaseComponent, IPoolComponent {
185
197
  {
186
198
  (
187
199
  IRegistry.ObjectInfo memory info,
200
+ bytes memory data
188
201
  ) = super.getInitialInfo();
189
202
 
190
203
  return (
191
204
  info,
192
205
  abi.encode(
193
- ISetup.PoolSetupInfo(
194
- _productNftId,
195
- TokenHandler(address(_token)),
196
- _collateralizationLevel,
197
- _initialPoolFee,
198
- _initialStakingFee,
199
- _initialPerformanceFee,
200
- _isVerifying,
201
- _wallet
202
- )
206
+ getInitialSetupInfo()
203
207
  )
204
208
  );
205
209
  }
@@ -4,11 +4,11 @@ pragma solidity ^0.8.19;
4
4
  import {IRegistry} from "../../registry/IRegistry.sol";
5
5
  import {IRegistryService} from "../../registry/IRegistryService.sol";
6
6
  import {IInstance} from "../../instance/IInstance.sol";
7
- import {ObjectType, INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE} from "../../types/ObjectType.sol";
7
+ import {ObjectType, INSTANCE, PRODUCT, POOL} from "../../types/ObjectType.sol";
8
8
  import {NftId, NftIdLib} from "../../types/NftId.sol";
9
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../types/RoleId.sol";
10
-
9
+ import {RoleId} from "../../types/RoleId.sol";
11
10
  import {BaseComponent} from "../../components/BaseComponent.sol";
11
+
12
12
  import {INftOwnable} from "../../shared/INftOwnable.sol";
13
13
  import {Service} from "../../shared/Service.sol";
14
14
  import {InstanceService} from "../InstanceService.sol";
@@ -16,87 +16,23 @@ import {Version, VersionPart, VersionLib} from "../../types/Version.sol";
16
16
 
17
17
  abstract contract ComponentServiceBase is Service {
18
18
 
19
- error ExpectedRoleMissing(RoleId expected, address caller);
20
- error ComponentTypeInvalid(ObjectType componentType);
21
-
22
- mapping (ObjectType => RoleId) internal _objectTypeToExpectedRole;
19
+ error InvalidRole(RoleId expected, address caller);
23
20
 
24
21
  /// @dev modifier to check if caller has a role on the instance the component is registered in
25
- modifier onlyComponentOwnerRole(address componentAddress) {
26
- BaseComponent component = BaseComponent(componentAddress);
27
- ObjectType objectType = _getObjectType(component);
28
- RoleId expectedRole = _objectTypeToExpectedRole[objectType];
29
-
22
+ modifier onlyInstanceRole(RoleId role, address componentAddress) {
30
23
  address componentOwner = msg.sender;
24
+ BaseComponent component = BaseComponent(componentAddress);
31
25
  INftOwnable nftOwnable = INftOwnable(address(component.getInstance()));
32
- if(! getInstanceService().hasRole(componentOwner, expectedRole, nftOwnable.getNftId())) {
33
- revert ExpectedRoleMissing(expectedRole, componentOwner);
26
+ if(! getInstanceService().hasRole(componentOwner, role, nftOwnable.getNftId())) {
27
+ revert InvalidRole(role, componentOwner);
34
28
  }
35
29
  _;
36
30
  }
37
31
 
38
- function _initializeService(
39
- address registry,
40
- address initialOwner
41
- )
42
- internal
43
- override
44
- {
45
- super._initializeService(registry, initialOwner);
46
- _objectTypeToExpectedRole[PRODUCT()] = PRODUCT_OWNER_ROLE();
47
- _objectTypeToExpectedRole[POOL()] = POOL_OWNER_ROLE();
48
- _objectTypeToExpectedRole[DISTRIBUTION()] = DISTRIBUTION_OWNER_ROLE();
49
- _objectTypeToExpectedRole[ORACLE()] = ORACLE_OWNER_ROLE();
50
- }
51
-
52
32
  function getInstanceService() public view returns (InstanceService) {
53
33
  return InstanceService(getRegistry().getServiceAddress("InstanceService", getMajorVersion()));
54
34
  }
55
35
 
56
- function register(address componentAddress)
57
- external
58
- onlyComponentOwnerRole(componentAddress)
59
- returns (NftId componentNftId)
60
- {
61
- address componentOwner = msg.sender;
62
- BaseComponent component = BaseComponent(componentAddress);
63
- ObjectType objectType = _getObjectType(component);
64
- IRegistryService registryService = getRegistryService();
65
-
66
- IRegistry.ObjectInfo memory objInfo;
67
- bytes memory initialObjData;
68
-
69
- if (objectType == DISTRIBUTION()) {
70
- (objInfo, initialObjData) = registryService.registerDistribution(component, componentOwner);
71
- } else if (objectType == PRODUCT()) {
72
- (objInfo, initialObjData) = registryService.registerProduct(component, componentOwner);
73
- } else if (objectType == POOL()) {
74
- (objInfo, initialObjData) = registryService.registerPool(component, componentOwner);
75
- // TODO: implement this for oracle - currently missing in registry
76
- // } else if (objectType == ORACLE()) {
77
- // (objInfo, initialObjData) = registryService.registerOracle(component, componentOwner);
78
- } else {
79
- revert ComponentTypeInvalid(objectType);
80
- }
81
-
82
- componentNftId = objInfo.nftId;
83
- IInstance instance = _getInstance(objInfo);
84
- _finalizeComponentRegistration(componentNftId, initialObjData, instance);
85
- }
86
-
87
- function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal virtual;
88
-
89
- function _getObjectType(BaseComponent component) internal view returns (ObjectType) {
90
- (IRegistry.ObjectInfo memory compInitialInfo, ) = component.getInitialInfo();
91
- return compInitialInfo.objectType;
92
- }
93
-
94
- function _getInstance(IRegistry.ObjectInfo memory compObjInfo) internal view returns (IInstance) {
95
- IRegistry registry = getRegistry();
96
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(compObjInfo.parentNftId);
97
- return IInstance(instanceInfo.objectAddress);
98
- }
99
-
100
36
  function _getAndVerifyComponentInfoAndInstance(
101
37
  ObjectType objectType
102
38
  )
@@ -61,12 +61,24 @@ contract DistributionService is
61
61
  return NAME;
62
62
  }
63
63
 
64
- function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
65
- ISetup.DistributionSetupInfo memory initialSetup = abi.decode(
66
- initialObjData,
67
- (ISetup.DistributionSetupInfo)
64
+ function register(address distributionComponentAddress)
65
+ external
66
+ onlyInstanceRole(DISTRIBUTION_OWNER_ROLE(), distributionComponentAddress)
67
+ returns (NftId distributionNftId)
68
+ {
69
+ address componentOwner = msg.sender;
70
+ Distribution distribution = Distribution(distributionComponentAddress);
71
+ IInstance instance = distribution.getInstance();
72
+
73
+ IRegistryService registryService = getRegistryService();
74
+ (IRegistry.ObjectInfo memory distributionObjInfo, ) = registryService.registerDistribution(
75
+ distribution,
76
+ componentOwner
68
77
  );
69
- instance.createDistributionSetup(componentNftId, initialSetup);
78
+ distributionNftId = distributionObjInfo.nftId;
79
+
80
+ ISetup.DistributionSetupInfo memory initialSetup = distribution.getInitialSetupInfo();
81
+ instance.createDistributionSetup(distributionNftId, initialSetup);
70
82
  }
71
83
 
72
84
  function setFees(
@@ -62,12 +62,24 @@ contract PoolService is
62
62
  return NAME;
63
63
  }
64
64
 
65
- function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
66
- ISetup.PoolSetupInfo memory initialSetup = abi.decode(
67
- initialObjData,
68
- (ISetup.PoolSetupInfo)
65
+ function register(address poolComponentAddress)
66
+ external
67
+ onlyInstanceRole(POOL_OWNER_ROLE(), poolComponentAddress)
68
+ returns (NftId poolNftId)
69
+ {
70
+ address componentOwner = msg.sender;
71
+ Pool pool = Pool(poolComponentAddress);
72
+ IInstance instance = pool.getInstance();
73
+
74
+ IRegistryService registryService = getRegistryService();
75
+ (IRegistry.ObjectInfo memory poolObjInfo, ) = registryService.registerPool(
76
+ pool,
77
+ componentOwner
69
78
  );
70
- instance.createPoolSetup(componentNftId, initialSetup);
79
+ poolNftId = poolObjInfo.nftId;
80
+
81
+ ISetup.PoolSetupInfo memory initialSetup = pool.getInitialSetupInfo();
82
+ instance.createPoolSetup(poolNftId, initialSetup);
71
83
  }
72
84
 
73
85
  function setFees(
@@ -107,7 +119,7 @@ contract PoolService is
107
119
 
108
120
  IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
109
121
  poolNftId,
110
- fee,
122
+ FeeLib.zeroFee(),
111
123
  filter,
112
124
  stakingAmount,
113
125
  0,
@@ -36,7 +36,6 @@ abstract contract Service is
36
36
  address initialOwner
37
37
  )
38
38
  internal
39
- virtual
40
39
  //onlyInitializing //TODO uncomment when "fully" upgradeable
41
40
  {
42
41
  // service must provide its name and version upon registration