@keep-network/tbtc-v2 1.6.0-dev.5 → 1.6.0-dev.6

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 (140) hide show
  1. package/artifacts/BLS.json +1 -1
  2. package/artifacts/Bank.json +3 -3
  3. package/artifacts/BeaconAuthorization.json +1 -1
  4. package/artifacts/BeaconDkg.json +1 -1
  5. package/artifacts/BeaconDkgValidator.json +1 -1
  6. package/artifacts/BeaconInactivity.json +1 -1
  7. package/artifacts/BeaconSortitionPool.json +3 -3
  8. package/artifacts/Bridge.json +5 -5
  9. package/artifacts/BridgeGovernance.json +2 -2
  10. package/artifacts/BridgeGovernanceParameters.json +2 -2
  11. package/artifacts/Deposit.json +2 -2
  12. package/artifacts/DepositSweep.json +2 -2
  13. package/artifacts/DonationVault.json +3 -3
  14. package/artifacts/EcdsaDkgValidator.json +1 -1
  15. package/artifacts/EcdsaInactivity.json +1 -1
  16. package/artifacts/EcdsaSortitionPool.json +3 -3
  17. package/artifacts/Fraud.json +2 -2
  18. package/artifacts/KeepRegistry.json +1 -1
  19. package/artifacts/KeepStake.json +2 -2
  20. package/artifacts/KeepToken.json +2 -2
  21. package/artifacts/KeepTokenStaking.json +1 -1
  22. package/artifacts/LightRelay.json +18 -18
  23. package/artifacts/LightRelayMaintainerProxy.json +17 -17
  24. package/artifacts/MaintainerProxy.json +19 -19
  25. package/artifacts/MovingFunds.json +2 -2
  26. package/artifacts/NuCypherStakingEscrow.json +1 -1
  27. package/artifacts/NuCypherToken.json +2 -2
  28. package/artifacts/RandomBeacon.json +2 -2
  29. package/artifacts/RandomBeaconChaosnet.json +2 -2
  30. package/artifacts/RandomBeaconGovernance.json +2 -2
  31. package/artifacts/Redemption.json +2 -2
  32. package/artifacts/ReimbursementPool.json +2 -2
  33. package/artifacts/T.json +2 -2
  34. package/artifacts/TBTC.json +3 -3
  35. package/artifacts/TBTCToken.json +3 -3
  36. package/artifacts/TBTCVault.json +23 -23
  37. package/artifacts/TokenStaking.json +1 -1
  38. package/artifacts/TokenholderGovernor.json +9 -9
  39. package/artifacts/TokenholderTimelock.json +8 -8
  40. package/artifacts/VendingMachine.json +3 -3
  41. package/artifacts/VendingMachineKeep.json +1 -1
  42. package/artifacts/VendingMachineNuCypher.json +1 -1
  43. package/artifacts/VendingMachineV2.json +3 -3
  44. package/artifacts/VendingMachineV3.json +3 -3
  45. package/artifacts/WalletProposalValidator.json +389 -0
  46. package/artifacts/WalletRegistry.json +5 -5
  47. package/artifacts/WalletRegistryGovernance.json +2 -2
  48. package/artifacts/Wallets.json +2 -2
  49. package/artifacts/solcInputs/{d2d7e276da75d7184610fe11a4a103b7.json → d46fa1d8846c35adf326ab51a3910266.json} +2 -2
  50. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  51. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  52. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  53. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  54. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  55. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  56. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  57. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  58. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  59. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  60. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  61. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  62. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  63. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  64. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  65. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  66. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  67. package/build/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.dbg.json +1 -1
  68. package/build/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.dbg.json +1 -1
  69. package/build/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.dbg.json +4 -0
  70. package/build/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.json +287 -0
  71. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  72. package/build/contracts/l2/L2TBTC.sol/L2TBTC.dbg.json +1 -1
  73. package/build/contracts/l2/L2WormholeGateway.sol/IWormholeTokenBridge.dbg.json +1 -1
  74. package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.dbg.json +1 -1
  75. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  76. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  77. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  78. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  79. package/build/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.dbg.json +1 -1
  80. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  81. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  82. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  83. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  84. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  85. package/contracts/bridge/{WalletCoordinator.sol → WalletProposalValidator.sol} +55 -448
  86. package/deploy/39_deploy_wallet_proposal_validator.ts +33 -0
  87. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +22 -22
  88. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +6 -6
  89. package/export/artifacts/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.json +6 -6
  90. package/export/artifacts/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.json +6 -6
  91. package/export/artifacts/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.json +22598 -0
  92. package/export/artifacts/contracts/l2/L2TBTC.sol/L2TBTC.json +40 -40
  93. package/export/artifacts/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +47 -47
  94. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +88 -88
  95. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +57 -57
  96. package/export/artifacts/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.json +31 -31
  97. package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +2 -2
  98. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +58 -58
  99. package/export/artifacts/contracts/test/GoerliLightRelay.sol/GoerliLightRelay.json +59 -59
  100. package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +2 -2
  101. package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +59 -59
  102. package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
  103. package/export/artifacts/contracts/test/SepoliaLightRelay.sol/SepoliaLightRelay.json +59 -59
  104. package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +14 -14
  105. package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +6 -6
  106. package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +8 -8
  107. package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +2 -2
  108. package/export/artifacts/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.json +37 -37
  109. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +2 -2
  110. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +11 -11
  111. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +135 -135
  112. package/export/deploy/39_deploy_wallet_proposal_validator.js +82 -0
  113. package/export/hardhat.config.js +0 -6
  114. package/export/typechain/factories/WalletProposalValidator__factory.js +366 -0
  115. package/export/typechain/index.js +3 -3
  116. package/package.json +1 -1
  117. package/artifacts/WalletCoordinator.json +0 -1107
  118. package/build/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.dbg.json +0 -4
  119. package/build/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.json +0 -1042
  120. package/deploy/34_deploy_wallet_coordinator.ts +0 -43
  121. package/deploy/35_add_coordinator_address.ts +0 -20
  122. package/deploy/36_transfer_wallet_coordinator_ownership.ts +0 -19
  123. package/deploy/81_upgrade_wallet_coordinator_v2.ts +0 -99
  124. package/export/artifacts/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.json +0 -33310
  125. package/export/deploy/34_deploy_wallet_coordinator.js +0 -115
  126. package/export/deploy/35_add_coordinator_address.js +0 -60
  127. package/export/deploy/36_transfer_wallet_coordinator_ownership.js +0 -60
  128. package/export/deploy/81_upgrade_wallet_coordinator_v2.js +0 -140
  129. package/export/typechain/factories/WalletCoordinator__factory.js +0 -1121
  130. /package/deploy/{37_deploy_light_relay_maintainer_proxy.ts → 34_deploy_light_relay_maintainer_proxy.ts} +0 -0
  131. /package/deploy/{38_authorize_maintainer_in_light_relay_maintainer_proxy.ts → 35_authorize_maintainer_in_light_relay_maintainer_proxy.ts} +0 -0
  132. /package/deploy/{39_transfer_light_relay_maintainer_proxy_ownership.ts → 36_transfer_light_relay_maintainer_proxy_ownership.ts} +0 -0
  133. /package/deploy/{40_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.ts → 37_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.ts} +0 -0
  134. /package/deploy/{41_authorize_light_relay_maintainer_proxy_in_light_relay.ts → 38_authorize_light_relay_maintainer_proxy_in_light_relay.ts} +0 -0
  135. /package/export/deploy/{37_deploy_light_relay_maintainer_proxy.js → 34_deploy_light_relay_maintainer_proxy.js} +0 -0
  136. /package/export/deploy/{38_authorize_maintainer_in_light_relay_maintainer_proxy.js → 35_authorize_maintainer_in_light_relay_maintainer_proxy.js} +0 -0
  137. /package/export/deploy/{39_transfer_light_relay_maintainer_proxy_ownership.js → 36_transfer_light_relay_maintainer_proxy_ownership.js} +0 -0
  138. /package/export/deploy/{40_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.js → 37_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.js} +0 -0
  139. /package/export/deploy/{41_authorize_light_relay_maintainer_proxy_in_light_relay.js → 38_authorize_light_relay_maintainer_proxy_in_light_relay.js} +0 -0
  140. /package/export/typechain/{WalletCoordinator.js → WalletProposalValidator.js} +0 -0
@@ -0,0 +1,287 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "WalletProposalValidator",
4
+ "sourceName": "contracts/bridge/WalletProposalValidator.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract Bridge",
10
+ "name": "_bridge",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "DEPOSIT_MIN_AGE",
20
+ "outputs": [
21
+ {
22
+ "internalType": "uint32",
23
+ "name": "",
24
+ "type": "uint32"
25
+ }
26
+ ],
27
+ "stateMutability": "view",
28
+ "type": "function"
29
+ },
30
+ {
31
+ "inputs": [],
32
+ "name": "DEPOSIT_REFUND_SAFETY_MARGIN",
33
+ "outputs": [
34
+ {
35
+ "internalType": "uint32",
36
+ "name": "",
37
+ "type": "uint32"
38
+ }
39
+ ],
40
+ "stateMutability": "view",
41
+ "type": "function"
42
+ },
43
+ {
44
+ "inputs": [],
45
+ "name": "DEPOSIT_SWEEP_MAX_SIZE",
46
+ "outputs": [
47
+ {
48
+ "internalType": "uint16",
49
+ "name": "",
50
+ "type": "uint16"
51
+ }
52
+ ],
53
+ "stateMutability": "view",
54
+ "type": "function"
55
+ },
56
+ {
57
+ "inputs": [],
58
+ "name": "REDEMPTION_MAX_SIZE",
59
+ "outputs": [
60
+ {
61
+ "internalType": "uint16",
62
+ "name": "",
63
+ "type": "uint16"
64
+ }
65
+ ],
66
+ "stateMutability": "view",
67
+ "type": "function"
68
+ },
69
+ {
70
+ "inputs": [],
71
+ "name": "REDEMPTION_REQUEST_MIN_AGE",
72
+ "outputs": [
73
+ {
74
+ "internalType": "uint32",
75
+ "name": "",
76
+ "type": "uint32"
77
+ }
78
+ ],
79
+ "stateMutability": "view",
80
+ "type": "function"
81
+ },
82
+ {
83
+ "inputs": [],
84
+ "name": "REDEMPTION_REQUEST_TIMEOUT_SAFETY_MARGIN",
85
+ "outputs": [
86
+ {
87
+ "internalType": "uint32",
88
+ "name": "",
89
+ "type": "uint32"
90
+ }
91
+ ],
92
+ "stateMutability": "view",
93
+ "type": "function"
94
+ },
95
+ {
96
+ "inputs": [],
97
+ "name": "bridge",
98
+ "outputs": [
99
+ {
100
+ "internalType": "contract Bridge",
101
+ "name": "",
102
+ "type": "address"
103
+ }
104
+ ],
105
+ "stateMutability": "view",
106
+ "type": "function"
107
+ },
108
+ {
109
+ "inputs": [
110
+ {
111
+ "components": [
112
+ {
113
+ "internalType": "bytes20",
114
+ "name": "walletPubKeyHash",
115
+ "type": "bytes20"
116
+ },
117
+ {
118
+ "components": [
119
+ {
120
+ "internalType": "bytes32",
121
+ "name": "fundingTxHash",
122
+ "type": "bytes32"
123
+ },
124
+ {
125
+ "internalType": "uint32",
126
+ "name": "fundingOutputIndex",
127
+ "type": "uint32"
128
+ }
129
+ ],
130
+ "internalType": "struct WalletProposalValidator.DepositKey[]",
131
+ "name": "depositsKeys",
132
+ "type": "tuple[]"
133
+ },
134
+ {
135
+ "internalType": "uint256",
136
+ "name": "sweepTxFee",
137
+ "type": "uint256"
138
+ },
139
+ {
140
+ "internalType": "uint256[]",
141
+ "name": "depositsRevealBlocks",
142
+ "type": "uint256[]"
143
+ }
144
+ ],
145
+ "internalType": "struct WalletProposalValidator.DepositSweepProposal",
146
+ "name": "proposal",
147
+ "type": "tuple"
148
+ },
149
+ {
150
+ "components": [
151
+ {
152
+ "components": [
153
+ {
154
+ "internalType": "bytes4",
155
+ "name": "version",
156
+ "type": "bytes4"
157
+ },
158
+ {
159
+ "internalType": "bytes",
160
+ "name": "inputVector",
161
+ "type": "bytes"
162
+ },
163
+ {
164
+ "internalType": "bytes",
165
+ "name": "outputVector",
166
+ "type": "bytes"
167
+ },
168
+ {
169
+ "internalType": "bytes4",
170
+ "name": "locktime",
171
+ "type": "bytes4"
172
+ }
173
+ ],
174
+ "internalType": "struct BitcoinTx.Info",
175
+ "name": "fundingTx",
176
+ "type": "tuple"
177
+ },
178
+ {
179
+ "internalType": "bytes8",
180
+ "name": "blindingFactor",
181
+ "type": "bytes8"
182
+ },
183
+ {
184
+ "internalType": "bytes20",
185
+ "name": "walletPubKeyHash",
186
+ "type": "bytes20"
187
+ },
188
+ {
189
+ "internalType": "bytes20",
190
+ "name": "refundPubKeyHash",
191
+ "type": "bytes20"
192
+ },
193
+ {
194
+ "internalType": "bytes4",
195
+ "name": "refundLocktime",
196
+ "type": "bytes4"
197
+ }
198
+ ],
199
+ "internalType": "struct WalletProposalValidator.DepositExtraInfo[]",
200
+ "name": "depositsExtraInfo",
201
+ "type": "tuple[]"
202
+ }
203
+ ],
204
+ "name": "validateDepositSweepProposal",
205
+ "outputs": [
206
+ {
207
+ "internalType": "bool",
208
+ "name": "",
209
+ "type": "bool"
210
+ }
211
+ ],
212
+ "stateMutability": "view",
213
+ "type": "function"
214
+ },
215
+ {
216
+ "inputs": [
217
+ {
218
+ "components": [
219
+ {
220
+ "internalType": "bytes20",
221
+ "name": "walletPubKeyHash",
222
+ "type": "bytes20"
223
+ },
224
+ {
225
+ "internalType": "bytes",
226
+ "name": "message",
227
+ "type": "bytes"
228
+ }
229
+ ],
230
+ "internalType": "struct WalletProposalValidator.HeartbeatProposal",
231
+ "name": "proposal",
232
+ "type": "tuple"
233
+ }
234
+ ],
235
+ "name": "validateHeartbeatProposal",
236
+ "outputs": [
237
+ {
238
+ "internalType": "bool",
239
+ "name": "",
240
+ "type": "bool"
241
+ }
242
+ ],
243
+ "stateMutability": "view",
244
+ "type": "function"
245
+ },
246
+ {
247
+ "inputs": [
248
+ {
249
+ "components": [
250
+ {
251
+ "internalType": "bytes20",
252
+ "name": "walletPubKeyHash",
253
+ "type": "bytes20"
254
+ },
255
+ {
256
+ "internalType": "bytes[]",
257
+ "name": "redeemersOutputScripts",
258
+ "type": "bytes[]"
259
+ },
260
+ {
261
+ "internalType": "uint256",
262
+ "name": "redemptionTxFee",
263
+ "type": "uint256"
264
+ }
265
+ ],
266
+ "internalType": "struct WalletProposalValidator.RedemptionProposal",
267
+ "name": "proposal",
268
+ "type": "tuple"
269
+ }
270
+ ],
271
+ "name": "validateRedemptionProposal",
272
+ "outputs": [
273
+ {
274
+ "internalType": "bool",
275
+ "name": "",
276
+ "type": "bool"
277
+ }
278
+ ],
279
+ "stateMutability": "view",
280
+ "type": "function"
281
+ }
282
+ ],
283
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002cc038038062002cc0833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051612c02620000be6000396000818161014f015281816101aa0152818161036701528181610634015281816109a601528181610d56015261127b0152612c026000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063996a756b11610076578063e0276b261161005b578063e0276b2614610126578063e78cea921461014a578063f03a4bc51461018957600080fd5b8063996a756b14610126578063d09520f71461014157600080fd5b80636b562cec116100a75780636b562cec146100c35780637405d7bf14610109578063765f28f91461011c57600080fd5b80630538ac1b146100c35780630fde6c76146100e6575b600080fd5b6100cc611c2081565b60405163ffffffff90911681526020015b60405180910390f35b6100f96100f4366004611f53565b61019c565b60405190151581526020016100dd565b6100f9610117366004611f8e565b610998565b6100cc6201518081565b61012e601481565b60405161ffff90911681526020016100dd565b6100cc61025881565b6101717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100dd565b6100f9610197366004612030565b611185565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56101dc60208601866120a3565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024b919061218b565b60e0015160058111156102605761026061206b565b146102b25760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064015b60405180910390fd5b60006102c1602084018461222e565b915050806103115760405162461bcd60e51b815260206004820152601d60248201527f526564656d7074696f6e2062656c6f7720746865206d696e2073697a6500000060448201526064016102a9565b60148111156103625760405162461bcd60e51b815260206004820152601f60248201527f526564656d7074696f6e206578636565647320746865206d61782073697a650060448201526064016102a9565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e70ce416040518163ffffffff1660e01b815260040160e060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190612278565b50509450945050505060008560400135116104545760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102a9565b8167ffffffffffffffff16856040013511156104be5760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102a9565b60006104ce84604088013561232f565b90506000846104e18360408a0135612359565b6104eb919061236c565b905060008567ffffffffffffffff811115610508576105086120be565b604051908082528060200260200182016040528015610531578160200160208202803683370190505b50905060005b8681101561098957600061054e60208b018b61222e565b8381811061055e5761055e612380565b90506020028101906105709190612396565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120959650909493506105c192508e0190508d6120a3565b6040516020016105ea9291909182526bffffffffffffffffffffffff1916602082015260340190565b60408051808303601f190181529082905280516020909101207f03d952f70000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906303d952f79060240160a060405180830381865afa158015610683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a791906123f4565b9050806080015163ffffffff166000036107035760405162461bcd60e51b815260206004820181905260248201527f4e6f7420612070656e64696e6720726564656d7074696f6e207265717565737460448201526064016102a9565b61025881608001516107159190612484565b63ffffffff16421161078f5760405162461bcd60e51b815260206004820152602b60248201527f526564656d7074696f6e2072657175657374206d696e20616765206e6f74206160448201527f636869657665642079657400000000000000000000000000000000000000000060648201526084016102a9565b60008882608001516107a19190612484565b90506107af611c20826124a8565b63ffffffff1642106108295760405162461bcd60e51b815260206004820152603960248201527f526564656d7074696f6e20726571756573742074696d656f757420736166657460448201527f79206d617267696e206973206e6f74207072657365727665640000000000000060648201526084016102a9565b8661083560018d612359565b86036108485761084589826124c5565b90505b826060015167ffffffffffffffff168111156108cc5760405162461bcd60e51b815260206004820152603660248201527f50726f706f736564207472616e73616374696f6e207065722d7265717565737460448201527f2066656520736861726520697320746f6f20686967680000000000000000000060648201526084016102a9565b60005b8681101561095157848882815181106108ea576108ea612380565b60200260200101510361093f5760405162461bcd60e51b815260206004820152601260248201527f4475706c6963617465642072657175657374000000000000000000000000000060448201526064016102a9565b80610949816124d8565b9150506108cf565b508387878151811061096557610965612380565b60200260200101818152505050505050508080610981906124d8565b915050610537565b50600198975050505050505050565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56109d860208801886120a3565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a47919061218b565b60e001516005811115610a5c57610a5c61206b565b14610aa95760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064016102a9565b6000610ab860208601866124f1565b905011610b075760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a65000000000000000060448201526064016102a9565b6014610b1660208601866124f1565b90501115610b665760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a6500000000000060448201526064016102a9565b81610b7460208601866124f1565b905014610be95760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e67206578747261206461746100000000000000000000000000000000000060648201526084016102a9565b610c056040850135610bfe60208701876124f1565b90506111f0565b600080610c1560208701876124f1565b905067ffffffffffffffff811115610c2f57610c2f6120be565b604051908082528060200260200182016040528015610c58578160200160208202803683370190505b50905060005b610c6b60208801886124f1565b9050811015611176576000610c8360208901896124f1565b83818110610c9357610c93612380565b905060400201803603810190610ca9919061253b565b90506000878784818110610cbf57610cbf612380565b9050602002810190610cd19190612591565b610cda9061267f565b8251602080850151604051939450600093610d0c93920191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529082905280516020909101207fb02c43d00000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190612781565b9050806040015163ffffffff16600003610e255760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c656400000000000000000000000060448201526064016102a9565b611c208160400151610e379190612484565b63ffffffff164211610e8b5760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f742061636869657665642079657460448201526064016102a9565b60a081015163ffffffff1615610ee35760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016102a9565b610ef284826000015185611377565b608083015160e881901c62ff00ff1663ff00ff0060d89290921c9190911617601081811c91901b17610f2762015180826124a8565b63ffffffff164210610fa15760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f74207072657365727665640000000000000000000000000000000000000060648201526084016102a9565b610fae60208d018d6120a3565b6bffffffffffffffffffffffff191684604001516bffffffffffffffffffffffff1916146110445760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c6574000000000000000000000000000000000000000000000000000060648201526084016102a9565b8560000361105457816060015197505b876001600160a01b031682606001516001600160a01b0316146110b95760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c740060448201526064016102a9565b60005b8681101561113e57838882815181106110d7576110d7612380565b60200260200101510361112c5760405162461bcd60e51b815260206004820152601260248201527f4475706c696361746564206465706f736974000000000000000000000000000060448201526064016102a9565b80611136816124d8565b9150506110bc565b508287878151811061115257611152612380565b6020026020010181815250505050505050808061116e906124d8565b915050610c5e565b506001925050505b9392505050565b600061119c6111976020840184612396565b6115d5565b6111e85760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420612076616c696420686561727462656174206d65737361676500000060448201526064016102a9565b506001919050565b600082116112505760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102a9565b600061125c828461232f565b905060008261126b8386612359565b611275919061236c565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa1580156112d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fb9190612824565b5092505067ffffffffffffffff8216905061131684846124c5565b11156113705760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102a9565b5050505050565b8051805160208083015160408085015160609095015190516000956113b9956113a5959094939192016128aa565b60405160208183030381529060405261165f565b845190915081146114325760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d61746368000000000000000000000000000000000000000000000060648201526084016102a9565b600083836020015184604001518560600151866080015160405160200161145d9594939291906128e0565b60405160208183030381529060405290506000611495866020015163ffffffff1685600001516040015161168690919063ffffffff16565b905060006114a282611868565b9050805160141480156114e457506114b983611882565b6bffffffffffffffffffffffff19166114d38260006118a9565b6bffffffffffffffffffffffff1916145b156114f25750505050505050565b80516020148015611559575060028360405161150e9190612b75565b602060405180830381855afa15801561152b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061154e9190612b81565b611557826118b8565b145b156115675750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d61746368000000000000000000000000000000000060648201526084016102a9565b6000601082146115e757506000611659565b61162b600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506118a99050565b77ffffffffffffffffffffffffffffffffffffffffffffffff199081161461165557506000611659565b5060015b92915050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611694856118d3565b90925090506001820161170f5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b80841061175e5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016102a9565b60008061176c8460016124c5565b905060005b868110156117f45761178388836118ea565b925060001983036117d65760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102a9565b6117e083836124c5565b9150806117ec816124d8565b915050611771565b506117ff87826118ea565b915060001982036118525760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102a9565b61185d878284611957565b979650505050505050565b606061165982600880855161187d9190612359565b611a24565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600061117e8383016020015190565b600081516000036118cb57506000919050565b506020015190565b6000806118e1836000611d29565b91509150915091565b60006118f78260096124c5565b835110156119085750600019611659565b60008061191f8561191a8660086124c5565b611d29565b9092509050600182016119385760001992505050611659565b806119448360096124c5565b61194e91906124c5565b95945050505050565b606081600003611976575060408051602081019091526000815261117e565b600061198283856124c5565b90508381118015611994575080855110155b6119e05760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016102a9565b604051915082604083010160405282825283850182038460208701018481015b80821015611a1957815183830152602082019150611a00565b505050509392505050565b60606000848481518110611a3a57611a3a612380565b016020015160f81c905082611a50826001612b9a565b60ff1614611a6e57505060408051602081019091526000815261117e565b84611a7a8560016124c5565b81518110611a8a57611a8a612380565b016020015160f81c600003611b495760028160ff161015611abb57505060408051602081019091526000815261117e565b600085611ac98660026124c5565b81518110611ad957611ad9612380565b016020015160f81c9050611aee600283612bb3565b60ff1681141580611b0c575080602014158015611b0c575080601414155b15611b2a57604051806020016040528060008152509250505061117e565b611b40611b388660036124c5565b879083611957565b9250505061117e565b6000611b5586866118a9565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a9000000000000000000000000000000000000000000000000000000000003611c695785611bac8660036124c5565b81518110611bbc57611bbc612380565b60209101015160f81c6014141580611c345750611bef6002611bde86886124c5565b611be89190612359565b87906118a9565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611c5257604051806020016040528060008152509250505061117e565b611b40611c608660046124c5565b87906014611957565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a914000000000000000000000000000000000000000000000000000000000003611d1057856001611cbf86886124c5565b611cc99190612359565b81518110611cd957611cd9612380565b60209101015160f81c608714611d0257604051806020016040528060008152509250505061117e565b611b40611c608660036124c5565b5050506040805160208101909152600081529392505050565b6000806000611d388585611ecd565b90508060ff16600003611d6d576000858581518110611d5957611d59612380565b016020015190935060f81c9150611ec69050565b83611d79826001612b9a565b60ff16611d8691906124c5565b85511015611d9d5760001960009250925050611ec6565b60008160ff16600203611de157611dd6611dc2611dbb8760016124c5565b88906118a9565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ebc565b8160ff16600403611e3057611e23611dfd611dbb8760016124c5565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ebc565b8160ff16600803611ebc57611eaf611e4c611dbb8760016124c5565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000828281518110611ee157611ee1612380565b016020015160f81c60ff03611ef857506008611659565b828281518110611f0a57611f0a612380565b016020015160f81c60fe03611f2157506004611659565b828281518110611f3357611f33612380565b016020015160f81c60fd03611f4a57506002611659565b50600092915050565b600060208284031215611f6557600080fd5b813567ffffffffffffffff811115611f7c57600080fd5b82016060818503121561117e57600080fd5b600080600060408486031215611fa357600080fd5b833567ffffffffffffffff80821115611fbb57600080fd5b9085019060808288031215611fcf57600080fd5b90935060208501359080821115611fe557600080fd5b818601915086601f830112611ff957600080fd5b81358181111561200857600080fd5b8760208260051b850101111561201d57600080fd5b6020830194508093505050509250925092565b60006020828403121561204257600080fd5b813567ffffffffffffffff81111561205957600080fd5b82016040818503121561117e57600080fd5b634e487b7160e01b600052602160045260246000fd5b80356bffffffffffffffffffffffff198116811461209e57600080fd5b919050565b6000602082840312156120b557600080fd5b61117e82612081565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff811182821017156120f8576120f86120be565b60405290565b60405160a0810167ffffffffffffffff811182821017156120f8576120f86120be565b6040516080810167ffffffffffffffff811182821017156120f8576120f86120be565b805167ffffffffffffffff8116811461209e57600080fd5b63ffffffff8116811461216e57600080fd5b50565b805161209e8161215c565b80516006811061209e57600080fd5b6000610120828403121561219e57600080fd5b6121a66120d4565b82518152602083015160208201526121c060408401612144565b60408201526121d160608401612171565b60608201526121e260808401612171565b60808201526121f360a08401612171565b60a082015261220460c08401612171565b60c082015261221560e0840161217c565b60e0820152610100928301519281019290925250919050565b6000808335601e1984360301811261224557600080fd5b83018035915067ffffffffffffffff82111561226057600080fd5b6020019150600581901b3603821315611ec657600080fd5b600080600080600080600060e0888a03121561229357600080fd5b61229c88612144565b96506122aa60208901612144565b95506122b860408901612144565b94506122c660608901612144565b935060808801516122d68161215c565b60a08901519093506bffffffffffffffffffffffff811681146122f857600080fd5b60c08901519092506123098161215c565b8091505092959891949750929550565b634e487b7160e01b600052601260045260246000fd5b60008261233e5761233e612319565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111561165957611659612343565b60008261237b5761237b612319565b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126123ad57600080fd5b83018035915067ffffffffffffffff8211156123c857600080fd5b602001915036819003821315611ec657600080fd5b80516001600160a01b038116811461209e57600080fd5b600060a0828403121561240657600080fd5b60405160a0810181811067ffffffffffffffff82111715612429576124296120be565b604052612435836123dd565b815261244360208401612144565b602082015261245460408401612144565b604082015261246560608401612144565b606082015260808301516124788161215c565b60808201529392505050565b63ffffffff8181168382160190808211156124a1576124a1612343565b5092915050565b63ffffffff8281168282160390808211156124a1576124a1612343565b8082018082111561165957611659612343565b6000600182016124ea576124ea612343565b5060010190565b6000808335601e1984360301811261250857600080fd5b83018035915067ffffffffffffffff82111561252357600080fd5b6020019150600681901b3603821315611ec657600080fd5b60006040828403121561254d57600080fd5b6040516040810181811067ffffffffffffffff82111715612570576125706120be565b6040528235815260208301356125858161215c565b60208201529392505050565b60008235609e198336030181126125a757600080fd5b9190910192915050565b80356001600160e01b03198116811461209e57600080fd5b600082601f8301126125da57600080fd5b813567ffffffffffffffff808211156125f5576125f56120be565b604051601f8301601f19908116603f0116810190828211818310171561261d5761261d6120be565b8160405283815286602085880101111561263657600080fd5b836020870160208301376000602085830101528094505050505092915050565b803577ffffffffffffffffffffffffffffffffffffffffffffffff198116811461209e57600080fd5b600060a0823603121561269157600080fd5b6126996120fe565b823567ffffffffffffffff808211156126b157600080fd5b8185019150608082360312156126c657600080fd5b6126ce612121565b6126d7836125b1565b81526020830135828111156126eb57600080fd5b6126f7368286016125c9565b60208301525060408301358281111561270f57600080fd5b61271b368286016125c9565b60408301525061272d606084016125b1565b6060820152835250612743905060208401612656565b602082015261275460408401612081565b604082015261276560608401612081565b6060820152612776608084016125b1565b608082015292915050565b600060c0828403121561279357600080fd5b60405160c0810181811067ffffffffffffffff821117156127b6576127b66120be565b6040526127c2836123dd565b81526127d060208401612144565b602082015260408301516127e38161215c565b60408201526127f4606084016123dd565b606082015261280560808401612144565b608082015260a08301516128188161215c565b60a08201529392505050565b6000806000806080858703121561283a57600080fd5b61284385612144565b935061285160208601612144565b925061285f60408601612144565b9150606085015161286f8161215c565b939692955090935050565b6000815160005b8181101561289b5760208185018101518683015201612881565b50600093019283525090919050565b60006001600160e01b031980871683526128d06128ca600485018861287a565b8661287a565b9316835250506004019392505050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f0800000000000000000000000000000000000000000000000000000000000000601682015277ffffffffffffffffffffffffffffffffffffffffffffffff1985166017820152607560f81b601f82015260006129ca6129bd612994602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f63000000000000000000000000000000000000000000000000000000000000006015820152612a8e6129bd61299461296b612a65601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b60058201529050612b69612b4060068301612a3c565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b600061117e828461287a565b600060208284031215612b9357600080fd5b5051919050565b60ff818116838216019081111561165957611659612343565b60ff82811682821603908111156116595761165961234356fea2646970667358221220729d5d4a10868c5ef3bce62bb5afd6f79b18586bcd54db74dccae2c196b02d6364736f6c63430008110033",
284
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063996a756b11610076578063e0276b261161005b578063e0276b2614610126578063e78cea921461014a578063f03a4bc51461018957600080fd5b8063996a756b14610126578063d09520f71461014157600080fd5b80636b562cec116100a75780636b562cec146100c35780637405d7bf14610109578063765f28f91461011c57600080fd5b80630538ac1b146100c35780630fde6c76146100e6575b600080fd5b6100cc611c2081565b60405163ffffffff90911681526020015b60405180910390f35b6100f96100f4366004611f53565b61019c565b60405190151581526020016100dd565b6100f9610117366004611f8e565b610998565b6100cc6201518081565b61012e601481565b60405161ffff90911681526020016100dd565b6100cc61025881565b6101717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100dd565b6100f9610197366004612030565b611185565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56101dc60208601866120a3565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024b919061218b565b60e0015160058111156102605761026061206b565b146102b25760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064015b60405180910390fd5b60006102c1602084018461222e565b915050806103115760405162461bcd60e51b815260206004820152601d60248201527f526564656d7074696f6e2062656c6f7720746865206d696e2073697a6500000060448201526064016102a9565b60148111156103625760405162461bcd60e51b815260206004820152601f60248201527f526564656d7074696f6e206578636565647320746865206d61782073697a650060448201526064016102a9565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e70ce416040518163ffffffff1660e01b815260040160e060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190612278565b50509450945050505060008560400135116104545760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102a9565b8167ffffffffffffffff16856040013511156104be5760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102a9565b60006104ce84604088013561232f565b90506000846104e18360408a0135612359565b6104eb919061236c565b905060008567ffffffffffffffff811115610508576105086120be565b604051908082528060200260200182016040528015610531578160200160208202803683370190505b50905060005b8681101561098957600061054e60208b018b61222e565b8381811061055e5761055e612380565b90506020028101906105709190612396565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870191909120959650909493506105c192508e0190508d6120a3565b6040516020016105ea9291909182526bffffffffffffffffffffffff1916602082015260340190565b60408051808303601f190181529082905280516020909101207f03d952f70000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906303d952f79060240160a060405180830381865afa158015610683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a791906123f4565b9050806080015163ffffffff166000036107035760405162461bcd60e51b815260206004820181905260248201527f4e6f7420612070656e64696e6720726564656d7074696f6e207265717565737460448201526064016102a9565b61025881608001516107159190612484565b63ffffffff16421161078f5760405162461bcd60e51b815260206004820152602b60248201527f526564656d7074696f6e2072657175657374206d696e20616765206e6f74206160448201527f636869657665642079657400000000000000000000000000000000000000000060648201526084016102a9565b60008882608001516107a19190612484565b90506107af611c20826124a8565b63ffffffff1642106108295760405162461bcd60e51b815260206004820152603960248201527f526564656d7074696f6e20726571756573742074696d656f757420736166657460448201527f79206d617267696e206973206e6f74207072657365727665640000000000000060648201526084016102a9565b8661083560018d612359565b86036108485761084589826124c5565b90505b826060015167ffffffffffffffff168111156108cc5760405162461bcd60e51b815260206004820152603660248201527f50726f706f736564207472616e73616374696f6e207065722d7265717565737460448201527f2066656520736861726520697320746f6f20686967680000000000000000000060648201526084016102a9565b60005b8681101561095157848882815181106108ea576108ea612380565b60200260200101510361093f5760405162461bcd60e51b815260206004820152601260248201527f4475706c6963617465642072657175657374000000000000000000000000000060448201526064016102a9565b80610949816124d8565b9150506108cf565b508387878151811061096557610965612380565b60200260200101818152505050505050508080610981906124d8565b915050610537565b50600198975050505050505050565b600060016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e65e19d56109d860208801886120a3565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a47919061218b565b60e001516005811115610a5c57610a5c61206b565b14610aa95760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c697665207374617465000000000060448201526064016102a9565b6000610ab860208601866124f1565b905011610b075760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a65000000000000000060448201526064016102a9565b6014610b1660208601866124f1565b90501115610b665760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a6500000000000060448201526064016102a9565b81610b7460208601866124f1565b905014610be95760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e67206578747261206461746100000000000000000000000000000000000060648201526084016102a9565b610c056040850135610bfe60208701876124f1565b90506111f0565b600080610c1560208701876124f1565b905067ffffffffffffffff811115610c2f57610c2f6120be565b604051908082528060200260200182016040528015610c58578160200160208202803683370190505b50905060005b610c6b60208801886124f1565b9050811015611176576000610c8360208901896124f1565b83818110610c9357610c93612380565b905060400201803603810190610ca9919061253b565b90506000878784818110610cbf57610cbf612380565b9050602002810190610cd19190612591565b610cda9061267f565b8251602080850151604051939450600093610d0c93920191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529082905280516020909101207fb02c43d00000000000000000000000000000000000000000000000000000000082526004820181905291506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190612781565b9050806040015163ffffffff16600003610e255760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c656400000000000000000000000060448201526064016102a9565b611c208160400151610e379190612484565b63ffffffff164211610e8b5760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f742061636869657665642079657460448201526064016102a9565b60a081015163ffffffff1615610ee35760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016102a9565b610ef284826000015185611377565b608083015160e881901c62ff00ff1663ff00ff0060d89290921c9190911617601081811c91901b17610f2762015180826124a8565b63ffffffff164210610fa15760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f74207072657365727665640000000000000000000000000000000000000060648201526084016102a9565b610fae60208d018d6120a3565b6bffffffffffffffffffffffff191684604001516bffffffffffffffffffffffff1916146110445760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c6574000000000000000000000000000000000000000000000000000060648201526084016102a9565b8560000361105457816060015197505b876001600160a01b031682606001516001600160a01b0316146110b95760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c740060448201526064016102a9565b60005b8681101561113e57838882815181106110d7576110d7612380565b60200260200101510361112c5760405162461bcd60e51b815260206004820152601260248201527f4475706c696361746564206465706f736974000000000000000000000000000060448201526064016102a9565b80611136816124d8565b9150506110bc565b508287878151811061115257611152612380565b6020026020010181815250505050505050808061116e906124d8565b915050610c5e565b506001925050505b9392505050565b600061119c6111976020840184612396565b6115d5565b6111e85760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420612076616c696420686561727462656174206d65737361676500000060448201526064016102a9565b506001919050565b600082116112505760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f74206044820152666265207a65726f60c81b60648201526084016102a9565b600061125c828461232f565b905060008261126b8386612359565b611275919061236c565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa1580156112d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fb9190612824565b5092505067ffffffffffffffff8216905061131684846124c5565b11156113705760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f206044820152630d0d2ced60e31b60648201526084016102a9565b5050505050565b8051805160208083015160408085015160609095015190516000956113b9956113a5959094939192016128aa565b60405160208183030381529060405261165f565b845190915081146114325760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d61746368000000000000000000000000000000000000000000000060648201526084016102a9565b600083836020015184604001518560600151866080015160405160200161145d9594939291906128e0565b60405160208183030381529060405290506000611495866020015163ffffffff1685600001516040015161168690919063ffffffff16565b905060006114a282611868565b9050805160141480156114e457506114b983611882565b6bffffffffffffffffffffffff19166114d38260006118a9565b6bffffffffffffffffffffffff1916145b156114f25750505050505050565b80516020148015611559575060028360405161150e9190612b75565b602060405180830381855afa15801561152b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061154e9190612b81565b611557826118b8565b145b156115675750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d61746368000000000000000000000000000000000060648201526084016102a9565b6000601082146115e757506000611659565b61162b600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506118a99050565b77ffffffffffffffffffffffffffffffffffffffffffffffff199081161461165557506000611659565b5060015b92915050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611694856118d3565b90925090506001820161170f5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b80841061175e5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016102a9565b60008061176c8460016124c5565b905060005b868110156117f45761178388836118ea565b925060001983036117d65760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102a9565b6117e083836124c5565b9150806117ec816124d8565b915050611771565b506117ff87826118ea565b915060001982036118525760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016102a9565b61185d878284611957565b979650505050505050565b606061165982600880855161187d9190612359565b611a24565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600061117e8383016020015190565b600081516000036118cb57506000919050565b506020015190565b6000806118e1836000611d29565b91509150915091565b60006118f78260096124c5565b835110156119085750600019611659565b60008061191f8561191a8660086124c5565b611d29565b9092509050600182016119385760001992505050611659565b806119448360096124c5565b61194e91906124c5565b95945050505050565b606081600003611976575060408051602081019091526000815261117e565b600061198283856124c5565b90508381118015611994575080855110155b6119e05760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016102a9565b604051915082604083010160405282825283850182038460208701018481015b80821015611a1957815183830152602082019150611a00565b505050509392505050565b60606000848481518110611a3a57611a3a612380565b016020015160f81c905082611a50826001612b9a565b60ff1614611a6e57505060408051602081019091526000815261117e565b84611a7a8560016124c5565b81518110611a8a57611a8a612380565b016020015160f81c600003611b495760028160ff161015611abb57505060408051602081019091526000815261117e565b600085611ac98660026124c5565b81518110611ad957611ad9612380565b016020015160f81c9050611aee600283612bb3565b60ff1681141580611b0c575080602014158015611b0c575080601414155b15611b2a57604051806020016040528060008152509250505061117e565b611b40611b388660036124c5565b879083611957565b9250505061117e565b6000611b5586866118a9565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a9000000000000000000000000000000000000000000000000000000000003611c695785611bac8660036124c5565b81518110611bbc57611bbc612380565b60209101015160f81c6014141580611c345750611bef6002611bde86886124c5565b611be89190612359565b87906118a9565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15611c5257604051806020016040528060008152509250505061117e565b611b40611c608660046124c5565b87906014611957565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a914000000000000000000000000000000000000000000000000000000000003611d1057856001611cbf86886124c5565b611cc99190612359565b81518110611cd957611cd9612380565b60209101015160f81c608714611d0257604051806020016040528060008152509250505061117e565b611b40611c608660036124c5565b5050506040805160208101909152600081529392505050565b6000806000611d388585611ecd565b90508060ff16600003611d6d576000858581518110611d5957611d59612380565b016020015190935060f81c9150611ec69050565b83611d79826001612b9a565b60ff16611d8691906124c5565b85511015611d9d5760001960009250925050611ec6565b60008160ff16600203611de157611dd6611dc2611dbb8760016124c5565b88906118a9565b62ffff0060e882901c1660f89190911c1790565b61ffff169050611ebc565b8160ff16600403611e3057611e23611dfd611dbb8760016124c5565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff169050611ebc565b8160ff16600803611ebc57611eaf611e4c611dbb8760016124c5565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b6000828281518110611ee157611ee1612380565b016020015160f81c60ff03611ef857506008611659565b828281518110611f0a57611f0a612380565b016020015160f81c60fe03611f2157506004611659565b828281518110611f3357611f33612380565b016020015160f81c60fd03611f4a57506002611659565b50600092915050565b600060208284031215611f6557600080fd5b813567ffffffffffffffff811115611f7c57600080fd5b82016060818503121561117e57600080fd5b600080600060408486031215611fa357600080fd5b833567ffffffffffffffff80821115611fbb57600080fd5b9085019060808288031215611fcf57600080fd5b90935060208501359080821115611fe557600080fd5b818601915086601f830112611ff957600080fd5b81358181111561200857600080fd5b8760208260051b850101111561201d57600080fd5b6020830194508093505050509250925092565b60006020828403121561204257600080fd5b813567ffffffffffffffff81111561205957600080fd5b82016040818503121561117e57600080fd5b634e487b7160e01b600052602160045260246000fd5b80356bffffffffffffffffffffffff198116811461209e57600080fd5b919050565b6000602082840312156120b557600080fd5b61117e82612081565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff811182821017156120f8576120f86120be565b60405290565b60405160a0810167ffffffffffffffff811182821017156120f8576120f86120be565b6040516080810167ffffffffffffffff811182821017156120f8576120f86120be565b805167ffffffffffffffff8116811461209e57600080fd5b63ffffffff8116811461216e57600080fd5b50565b805161209e8161215c565b80516006811061209e57600080fd5b6000610120828403121561219e57600080fd5b6121a66120d4565b82518152602083015160208201526121c060408401612144565b60408201526121d160608401612171565b60608201526121e260808401612171565b60808201526121f360a08401612171565b60a082015261220460c08401612171565b60c082015261221560e0840161217c565b60e0820152610100928301519281019290925250919050565b6000808335601e1984360301811261224557600080fd5b83018035915067ffffffffffffffff82111561226057600080fd5b6020019150600581901b3603821315611ec657600080fd5b600080600080600080600060e0888a03121561229357600080fd5b61229c88612144565b96506122aa60208901612144565b95506122b860408901612144565b94506122c660608901612144565b935060808801516122d68161215c565b60a08901519093506bffffffffffffffffffffffff811681146122f857600080fd5b60c08901519092506123098161215c565b8091505092959891949750929550565b634e487b7160e01b600052601260045260246000fd5b60008261233e5761233e612319565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111561165957611659612343565b60008261237b5761237b612319565b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126123ad57600080fd5b83018035915067ffffffffffffffff8211156123c857600080fd5b602001915036819003821315611ec657600080fd5b80516001600160a01b038116811461209e57600080fd5b600060a0828403121561240657600080fd5b60405160a0810181811067ffffffffffffffff82111715612429576124296120be565b604052612435836123dd565b815261244360208401612144565b602082015261245460408401612144565b604082015261246560608401612144565b606082015260808301516124788161215c565b60808201529392505050565b63ffffffff8181168382160190808211156124a1576124a1612343565b5092915050565b63ffffffff8281168282160390808211156124a1576124a1612343565b8082018082111561165957611659612343565b6000600182016124ea576124ea612343565b5060010190565b6000808335601e1984360301811261250857600080fd5b83018035915067ffffffffffffffff82111561252357600080fd5b6020019150600681901b3603821315611ec657600080fd5b60006040828403121561254d57600080fd5b6040516040810181811067ffffffffffffffff82111715612570576125706120be565b6040528235815260208301356125858161215c565b60208201529392505050565b60008235609e198336030181126125a757600080fd5b9190910192915050565b80356001600160e01b03198116811461209e57600080fd5b600082601f8301126125da57600080fd5b813567ffffffffffffffff808211156125f5576125f56120be565b604051601f8301601f19908116603f0116810190828211818310171561261d5761261d6120be565b8160405283815286602085880101111561263657600080fd5b836020870160208301376000602085830101528094505050505092915050565b803577ffffffffffffffffffffffffffffffffffffffffffffffff198116811461209e57600080fd5b600060a0823603121561269157600080fd5b6126996120fe565b823567ffffffffffffffff808211156126b157600080fd5b8185019150608082360312156126c657600080fd5b6126ce612121565b6126d7836125b1565b81526020830135828111156126eb57600080fd5b6126f7368286016125c9565b60208301525060408301358281111561270f57600080fd5b61271b368286016125c9565b60408301525061272d606084016125b1565b6060820152835250612743905060208401612656565b602082015261275460408401612081565b604082015261276560608401612081565b6060820152612776608084016125b1565b608082015292915050565b600060c0828403121561279357600080fd5b60405160c0810181811067ffffffffffffffff821117156127b6576127b66120be565b6040526127c2836123dd565b81526127d060208401612144565b602082015260408301516127e38161215c565b60408201526127f4606084016123dd565b606082015261280560808401612144565b608082015260a08301516128188161215c565b60a08201529392505050565b6000806000806080858703121561283a57600080fd5b61284385612144565b935061285160208601612144565b925061285f60408601612144565b9150606085015161286f8161215c565b939692955090935050565b6000815160005b8181101561289b5760208185018101518683015201612881565b50600093019283525090919050565b60006001600160e01b031980871683526128d06128ca600485018861287a565b8661287a565b9316835250506004019392505050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f0800000000000000000000000000000000000000000000000000000000000000601682015277ffffffffffffffffffffffffffffffffffffffffffffffff1985166017820152607560f81b601f82015260006129ca6129bd612994602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f63000000000000000000000000000000000000000000000000000000000000006015820152612a8e6129bd61299461296b612a65601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b60058201529050612b69612b4060068301612a3c565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b600061117e828461287a565b600060208284031215612b9357600080fd5b5051919050565b60ff818116838216019081111561165957611659612343565b60ff82811682821603908111156116595761165961234356fea2646970667358221220729d5d4a10868c5ef3bce62bb5afd6f79b18586bcd54db74dccae2c196b02d6364736f6c63430008110033",
285
+ "linkReferences": {},
286
+ "deployedLinkReferences": {}
287
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c4339f1d03c92248ba145e4a93c303ef.json"
3
+ "buildInfo": "../../../build-info/24b64daac03911e82b88918e54827fc7.json"
4
4
  }