@requestnetwork/smart-contracts 0.28.1-next.1698 → 0.28.1-next.1702

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 (153) hide show
  1. package/README.md +5 -7
  2. package/dist/scripts/3_deploy_chainlink_contract.d.ts.map +1 -1
  3. package/dist/scripts/3_deploy_chainlink_contract.js +1 -1
  4. package/dist/scripts/3_deploy_chainlink_contract.js.map +1 -1
  5. package/dist/scripts/4_deploy-escrow-deployment.d.ts.map +1 -1
  6. package/dist/scripts/4_deploy-escrow-deployment.js +5 -3
  7. package/dist/scripts/4_deploy-escrow-deployment.js.map +1 -1
  8. package/dist/scripts/deploy-payments.d.ts.map +1 -1
  9. package/dist/scripts/deploy-payments.js +1 -1
  10. package/dist/scripts/deploy-payments.js.map +1 -1
  11. package/dist/scripts-create2/constructor-args.d.ts +1 -1
  12. package/dist/scripts-create2/constructor-args.d.ts.map +1 -1
  13. package/dist/scripts-create2/constructor-args.js +13 -1
  14. package/dist/scripts-create2/constructor-args.js.map +1 -1
  15. package/dist/scripts-create2/deploy-one.d.ts.map +1 -1
  16. package/dist/scripts-create2/deploy-one.js +6 -0
  17. package/dist/scripts-create2/deploy-one.js.map +1 -1
  18. package/dist/scripts-create2/utils.d.ts.map +1 -1
  19. package/dist/scripts-create2/utils.js +3 -0
  20. package/dist/scripts-create2/utils.js.map +1 -1
  21. package/dist/scripts-create2/verify-one.d.ts.map +1 -1
  22. package/dist/scripts-create2/verify-one.js +7 -0
  23. package/dist/scripts-create2/verify-one.js.map +1 -1
  24. package/dist/src/lib/artifacts/BatchPayments/index.d.ts.map +1 -1
  25. package/dist/src/lib/artifacts/BatchPayments/index.js +4 -0
  26. package/dist/src/lib/artifacts/BatchPayments/index.js.map +1 -1
  27. package/dist/src/lib/artifacts/ERC20EscrowToPay/0.1.0.json +122 -0
  28. package/dist/src/lib/artifacts/ERC20EscrowToPay/index.js +2 -2
  29. package/dist/src/lib/artifacts/ERC20EscrowToPay/index.js.map +1 -1
  30. package/dist/src/types/ERC20EscrowToPay.d.ts +192 -0
  31. package/dist/src/types/factories/AggregatorMock__factory.d.ts +1 -1
  32. package/dist/src/types/factories/AggregatorMock__factory.js +1 -1
  33. package/dist/src/types/factories/BadERC20__factory.d.ts +1 -1
  34. package/dist/src/types/factories/BadERC20__factory.js +1 -1
  35. package/dist/src/types/factories/BatchPayments__factory.d.ts +1 -1
  36. package/dist/src/types/factories/BatchPayments__factory.js +1 -1
  37. package/dist/src/types/factories/BytesUtilsMock__factory.d.ts +1 -1
  38. package/dist/src/types/factories/BytesUtilsMock__factory.js +1 -1
  39. package/dist/src/types/factories/ChainlinkConversionPath__factory.d.ts +1 -1
  40. package/dist/src/types/factories/ChainlinkConversionPath__factory.js +1 -1
  41. package/dist/src/types/factories/ERC20Alpha__factory.d.ts +1 -1
  42. package/dist/src/types/factories/ERC20Alpha__factory.js +1 -1
  43. package/dist/src/types/factories/ERC20EscrowToPay__factory.d.ts +3 -3
  44. package/dist/src/types/factories/ERC20EscrowToPay__factory.d.ts.map +1 -1
  45. package/dist/src/types/factories/ERC20EscrowToPay__factory.js +114 -5
  46. package/dist/src/types/factories/ERC20EscrowToPay__factory.js.map +1 -1
  47. package/dist/src/types/factories/ERC20False__factory.d.ts +1 -1
  48. package/dist/src/types/factories/ERC20False__factory.js +1 -1
  49. package/dist/src/types/factories/ERC20FeeProxy__factory.d.ts +1 -1
  50. package/dist/src/types/factories/ERC20FeeProxy__factory.js +1 -1
  51. package/dist/src/types/factories/ERC20NoReturn__factory.d.ts +1 -1
  52. package/dist/src/types/factories/ERC20NoReturn__factory.js +1 -1
  53. package/dist/src/types/factories/ERC20Proxy__factory.d.ts +1 -1
  54. package/dist/src/types/factories/ERC20Proxy__factory.js +1 -1
  55. package/dist/src/types/factories/ERC20Revert__factory.d.ts +1 -1
  56. package/dist/src/types/factories/ERC20Revert__factory.js +1 -1
  57. package/dist/src/types/factories/ERC20SwapToConversion__factory.d.ts +1 -1
  58. package/dist/src/types/factories/ERC20SwapToConversion__factory.js +1 -1
  59. package/dist/src/types/factories/ERC20SwapToPay__factory.d.ts +1 -1
  60. package/dist/src/types/factories/ERC20SwapToPay__factory.js +1 -1
  61. package/dist/src/types/factories/ERC20True__factory.d.ts +1 -1
  62. package/dist/src/types/factories/ERC20True__factory.js +1 -1
  63. package/dist/src/types/factories/Erc20ConversionProxy__factory.d.ts +1 -1
  64. package/dist/src/types/factories/Erc20ConversionProxy__factory.js +1 -1
  65. package/dist/src/types/factories/EthConversionProxy__factory.d.ts +1 -1
  66. package/dist/src/types/factories/EthConversionProxy__factory.js +1 -1
  67. package/dist/src/types/factories/EtherPaymentFallback__factory.d.ts +1 -1
  68. package/dist/src/types/factories/EtherPaymentFallback__factory.js +1 -1
  69. package/dist/src/types/factories/EthereumFeeProxy__factory.d.ts +1 -1
  70. package/dist/src/types/factories/EthereumFeeProxy__factory.js +1 -1
  71. package/dist/src/types/factories/EthereumProxy__factory.d.ts +1 -1
  72. package/dist/src/types/factories/EthereumProxy__factory.js +1 -1
  73. package/dist/src/types/factories/FakeSwapRouter__factory.d.ts +1 -1
  74. package/dist/src/types/factories/FakeSwapRouter__factory.js +1 -1
  75. package/dist/src/types/factories/GnosisSafeProxy__factory.d.ts +1 -1
  76. package/dist/src/types/factories/GnosisSafeProxy__factory.js +1 -1
  77. package/dist/src/types/factories/Migrations__factory.d.ts +1 -1
  78. package/dist/src/types/factories/Migrations__factory.js +1 -1
  79. package/dist/src/types/factories/RequestDeployer__factory.d.ts +1 -1
  80. package/dist/src/types/factories/RequestDeployer__factory.js +1 -1
  81. package/dist/src/types/factories/RequestHashStorage__factory.d.ts +1 -1
  82. package/dist/src/types/factories/RequestHashStorage__factory.js +1 -1
  83. package/dist/src/types/factories/RequestOpenHashSubmitter__factory.d.ts +1 -1
  84. package/dist/src/types/factories/RequestOpenHashSubmitter__factory.js +1 -1
  85. package/dist/src/types/factories/StorageFeeCollector__factory.d.ts +1 -1
  86. package/dist/src/types/factories/StorageFeeCollector__factory.js +1 -1
  87. package/dist/src/types/factories/TestERC20__factory.d.ts +1 -1
  88. package/dist/src/types/factories/TestERC20__factory.js +1 -1
  89. package/dist/src/types/factories/UsdtFake__factory.d.ts +1 -1
  90. package/dist/src/types/factories/UsdtFake__factory.js +1 -1
  91. package/dist/tsconfig.build.tsbuildinfo +1 -1
  92. package/package.json +5 -5
  93. package/types/ERC20EscrowToPay.d.ts +192 -0
  94. package/types/factories/AggregatorMock__factory.d.ts +1 -1
  95. package/types/factories/AggregatorMock__factory.js +1 -1
  96. package/types/factories/BadERC20__factory.d.ts +1 -1
  97. package/types/factories/BadERC20__factory.js +1 -1
  98. package/types/factories/BatchPayments__factory.d.ts +1 -1
  99. package/types/factories/BatchPayments__factory.js +1 -1
  100. package/types/factories/BytesUtilsMock__factory.d.ts +1 -1
  101. package/types/factories/BytesUtilsMock__factory.js +1 -1
  102. package/types/factories/ChainlinkConversionPath__factory.d.ts +1 -1
  103. package/types/factories/ChainlinkConversionPath__factory.js +1 -1
  104. package/types/factories/ERC20Alpha__factory.d.ts +1 -1
  105. package/types/factories/ERC20Alpha__factory.js +1 -1
  106. package/types/factories/ERC20EscrowToPay__factory.d.ts +3 -3
  107. package/types/factories/ERC20EscrowToPay__factory.d.ts.map +1 -1
  108. package/types/factories/ERC20EscrowToPay__factory.js +114 -5
  109. package/types/factories/ERC20EscrowToPay__factory.js.map +1 -1
  110. package/types/factories/ERC20False__factory.d.ts +1 -1
  111. package/types/factories/ERC20False__factory.js +1 -1
  112. package/types/factories/ERC20FeeProxy__factory.d.ts +1 -1
  113. package/types/factories/ERC20FeeProxy__factory.js +1 -1
  114. package/types/factories/ERC20NoReturn__factory.d.ts +1 -1
  115. package/types/factories/ERC20NoReturn__factory.js +1 -1
  116. package/types/factories/ERC20Proxy__factory.d.ts +1 -1
  117. package/types/factories/ERC20Proxy__factory.js +1 -1
  118. package/types/factories/ERC20Revert__factory.d.ts +1 -1
  119. package/types/factories/ERC20Revert__factory.js +1 -1
  120. package/types/factories/ERC20SwapToConversion__factory.d.ts +1 -1
  121. package/types/factories/ERC20SwapToConversion__factory.js +1 -1
  122. package/types/factories/ERC20SwapToPay__factory.d.ts +1 -1
  123. package/types/factories/ERC20SwapToPay__factory.js +1 -1
  124. package/types/factories/ERC20True__factory.d.ts +1 -1
  125. package/types/factories/ERC20True__factory.js +1 -1
  126. package/types/factories/Erc20ConversionProxy__factory.d.ts +1 -1
  127. package/types/factories/Erc20ConversionProxy__factory.js +1 -1
  128. package/types/factories/EthConversionProxy__factory.d.ts +1 -1
  129. package/types/factories/EthConversionProxy__factory.js +1 -1
  130. package/types/factories/EtherPaymentFallback__factory.d.ts +1 -1
  131. package/types/factories/EtherPaymentFallback__factory.js +1 -1
  132. package/types/factories/EthereumFeeProxy__factory.d.ts +1 -1
  133. package/types/factories/EthereumFeeProxy__factory.js +1 -1
  134. package/types/factories/EthereumProxy__factory.d.ts +1 -1
  135. package/types/factories/EthereumProxy__factory.js +1 -1
  136. package/types/factories/FakeSwapRouter__factory.d.ts +1 -1
  137. package/types/factories/FakeSwapRouter__factory.js +1 -1
  138. package/types/factories/GnosisSafeProxy__factory.d.ts +1 -1
  139. package/types/factories/GnosisSafeProxy__factory.js +1 -1
  140. package/types/factories/Migrations__factory.d.ts +1 -1
  141. package/types/factories/Migrations__factory.js +1 -1
  142. package/types/factories/RequestDeployer__factory.d.ts +1 -1
  143. package/types/factories/RequestDeployer__factory.js +1 -1
  144. package/types/factories/RequestHashStorage__factory.d.ts +1 -1
  145. package/types/factories/RequestHashStorage__factory.js +1 -1
  146. package/types/factories/RequestOpenHashSubmitter__factory.d.ts +1 -1
  147. package/types/factories/RequestOpenHashSubmitter__factory.js +1 -1
  148. package/types/factories/StorageFeeCollector__factory.d.ts +1 -1
  149. package/types/factories/StorageFeeCollector__factory.js +1 -1
  150. package/types/factories/TestERC20__factory.d.ts +1 -1
  151. package/types/factories/TestERC20__factory.js +1 -1
  152. package/types/factories/UsdtFake__factory.d.ts +1 -1
  153. package/types/factories/UsdtFake__factory.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@requestnetwork/smart-contracts",
3
- "version": "0.28.1-next.1698+e17155b6",
3
+ "version": "0.28.1-next.1702+e7a48e42",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -60,9 +60,9 @@
60
60
  "@nomiclabs/hardhat-waffle": "2.0.1",
61
61
  "@openzeppelin/contracts": "4.4.1",
62
62
  "@openzeppelin/test-helpers": "0.5.6",
63
- "@requestnetwork/currency": "0.8.1-next.1698+e17155b6",
64
- "@requestnetwork/types": "0.35.1-next.1698+e17155b6",
65
- "@requestnetwork/utils": "0.35.1-next.1698+e17155b6",
63
+ "@requestnetwork/currency": "0.8.1-next.1702+e7a48e42",
64
+ "@requestnetwork/types": "0.35.1-next.1702+e7a48e42",
65
+ "@requestnetwork/utils": "0.35.1-next.1702+e7a48e42",
66
66
  "@typechain/ethers-v5": "7.0.1",
67
67
  "@typechain/hardhat": "2.1.2",
68
68
  "@types/chai": "4.2.21",
@@ -78,5 +78,5 @@
78
78
  "solhint": "3.3.6",
79
79
  "typechain": "5.1.1"
80
80
  },
81
- "gitHead": "e17155b6d0bf52562e7747b24d49c96456885790"
81
+ "gitHead": "e7a48e42d55d96f6dbc947895e0677df28942736"
82
82
  }
@@ -23,14 +23,21 @@ interface ERC20EscrowToPayInterface extends ethers.utils.Interface {
23
23
  functions: {
24
24
  "approvePaymentProxyToSpend(address)": FunctionFragment;
25
25
  "completeEmergencyClaim(bytes)": FunctionFragment;
26
+ "emergencyClaimPeriod()": FunctionFragment;
26
27
  "freezeRequest(bytes)": FunctionFragment;
28
+ "frozenPeriod()": FunctionFragment;
27
29
  "initiateEmergencyClaim(bytes)": FunctionFragment;
30
+ "owner()": FunctionFragment;
28
31
  "payEscrow(address,address,uint256,bytes,uint256,address)": FunctionFragment;
29
32
  "payRequestFromEscrow(bytes)": FunctionFragment;
30
33
  "paymentProxy()": FunctionFragment;
31
34
  "refundFrozenFunds(bytes)": FunctionFragment;
35
+ "renounceOwnership()": FunctionFragment;
32
36
  "requestMapping(bytes)": FunctionFragment;
33
37
  "revertEmergencyClaim(bytes)": FunctionFragment;
38
+ "setEmergencyClaimPeriod(uint256)": FunctionFragment;
39
+ "setFrozenPeriod(uint256)": FunctionFragment;
40
+ "transferOwnership(address)": FunctionFragment;
34
41
  };
35
42
 
36
43
  encodeFunctionData(
@@ -41,14 +48,23 @@ interface ERC20EscrowToPayInterface extends ethers.utils.Interface {
41
48
  functionFragment: "completeEmergencyClaim",
42
49
  values: [BytesLike]
43
50
  ): string;
51
+ encodeFunctionData(
52
+ functionFragment: "emergencyClaimPeriod",
53
+ values?: undefined
54
+ ): string;
44
55
  encodeFunctionData(
45
56
  functionFragment: "freezeRequest",
46
57
  values: [BytesLike]
47
58
  ): string;
59
+ encodeFunctionData(
60
+ functionFragment: "frozenPeriod",
61
+ values?: undefined
62
+ ): string;
48
63
  encodeFunctionData(
49
64
  functionFragment: "initiateEmergencyClaim",
50
65
  values: [BytesLike]
51
66
  ): string;
67
+ encodeFunctionData(functionFragment: "owner", values?: undefined): string;
52
68
  encodeFunctionData(
53
69
  functionFragment: "payEscrow",
54
70
  values: [string, string, BigNumberish, BytesLike, BigNumberish, string]
@@ -65,6 +81,10 @@ interface ERC20EscrowToPayInterface extends ethers.utils.Interface {
65
81
  functionFragment: "refundFrozenFunds",
66
82
  values: [BytesLike]
67
83
  ): string;
84
+ encodeFunctionData(
85
+ functionFragment: "renounceOwnership",
86
+ values?: undefined
87
+ ): string;
68
88
  encodeFunctionData(
69
89
  functionFragment: "requestMapping",
70
90
  values: [BytesLike]
@@ -73,6 +93,18 @@ interface ERC20EscrowToPayInterface extends ethers.utils.Interface {
73
93
  functionFragment: "revertEmergencyClaim",
74
94
  values: [BytesLike]
75
95
  ): string;
96
+ encodeFunctionData(
97
+ functionFragment: "setEmergencyClaimPeriod",
98
+ values: [BigNumberish]
99
+ ): string;
100
+ encodeFunctionData(
101
+ functionFragment: "setFrozenPeriod",
102
+ values: [BigNumberish]
103
+ ): string;
104
+ encodeFunctionData(
105
+ functionFragment: "transferOwnership",
106
+ values: [string]
107
+ ): string;
76
108
 
77
109
  decodeFunctionResult(
78
110
  functionFragment: "approvePaymentProxyToSpend",
@@ -82,14 +114,23 @@ interface ERC20EscrowToPayInterface extends ethers.utils.Interface {
82
114
  functionFragment: "completeEmergencyClaim",
83
115
  data: BytesLike
84
116
  ): Result;
117
+ decodeFunctionResult(
118
+ functionFragment: "emergencyClaimPeriod",
119
+ data: BytesLike
120
+ ): Result;
85
121
  decodeFunctionResult(
86
122
  functionFragment: "freezeRequest",
87
123
  data: BytesLike
88
124
  ): Result;
125
+ decodeFunctionResult(
126
+ functionFragment: "frozenPeriod",
127
+ data: BytesLike
128
+ ): Result;
89
129
  decodeFunctionResult(
90
130
  functionFragment: "initiateEmergencyClaim",
91
131
  data: BytesLike
92
132
  ): Result;
133
+ decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
93
134
  decodeFunctionResult(functionFragment: "payEscrow", data: BytesLike): Result;
94
135
  decodeFunctionResult(
95
136
  functionFragment: "payRequestFromEscrow",
@@ -103,6 +144,10 @@ interface ERC20EscrowToPayInterface extends ethers.utils.Interface {
103
144
  functionFragment: "refundFrozenFunds",
104
145
  data: BytesLike
105
146
  ): Result;
147
+ decodeFunctionResult(
148
+ functionFragment: "renounceOwnership",
149
+ data: BytesLike
150
+ ): Result;
106
151
  decodeFunctionResult(
107
152
  functionFragment: "requestMapping",
108
153
  data: BytesLike
@@ -111,15 +156,29 @@ interface ERC20EscrowToPayInterface extends ethers.utils.Interface {
111
156
  functionFragment: "revertEmergencyClaim",
112
157
  data: BytesLike
113
158
  ): Result;
159
+ decodeFunctionResult(
160
+ functionFragment: "setEmergencyClaimPeriod",
161
+ data: BytesLike
162
+ ): Result;
163
+ decodeFunctionResult(
164
+ functionFragment: "setFrozenPeriod",
165
+ data: BytesLike
166
+ ): Result;
167
+ decodeFunctionResult(
168
+ functionFragment: "transferOwnership",
169
+ data: BytesLike
170
+ ): Result;
114
171
 
115
172
  events: {
116
173
  "InitiatedEmergencyClaim(bytes)": EventFragment;
174
+ "OwnershipTransferred(address,address)": EventFragment;
117
175
  "RequestFrozen(bytes)": EventFragment;
118
176
  "RevertedEmergencyClaim(bytes)": EventFragment;
119
177
  "TransferWithReferenceAndFee(address,address,uint256,bytes,uint256,address)": EventFragment;
120
178
  };
121
179
 
122
180
  getEvent(nameOrSignatureOrTopic: "InitiatedEmergencyClaim"): EventFragment;
181
+ getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
123
182
  getEvent(nameOrSignatureOrTopic: "RequestFrozen"): EventFragment;
124
183
  getEvent(nameOrSignatureOrTopic: "RevertedEmergencyClaim"): EventFragment;
125
184
  getEvent(
@@ -181,16 +240,22 @@ export class ERC20EscrowToPay extends BaseContract {
181
240
  overrides?: Overrides & { from?: string | Promise<string> }
182
241
  ): Promise<ContractTransaction>;
183
242
 
243
+ emergencyClaimPeriod(overrides?: CallOverrides): Promise<[BigNumber]>;
244
+
184
245
  freezeRequest(
185
246
  _paymentRef: BytesLike,
186
247
  overrides?: Overrides & { from?: string | Promise<string> }
187
248
  ): Promise<ContractTransaction>;
188
249
 
250
+ frozenPeriod(overrides?: CallOverrides): Promise<[BigNumber]>;
251
+
189
252
  initiateEmergencyClaim(
190
253
  _paymentRef: BytesLike,
191
254
  overrides?: Overrides & { from?: string | Promise<string> }
192
255
  ): Promise<ContractTransaction>;
193
256
 
257
+ owner(overrides?: CallOverrides): Promise<[string]>;
258
+
194
259
  payEscrow(
195
260
  _tokenAddress: string,
196
261
  _to: string,
@@ -213,6 +278,10 @@ export class ERC20EscrowToPay extends BaseContract {
213
278
  overrides?: Overrides & { from?: string | Promise<string> }
214
279
  ): Promise<ContractTransaction>;
215
280
 
281
+ renounceOwnership(
282
+ overrides?: Overrides & { from?: string | Promise<string> }
283
+ ): Promise<ContractTransaction>;
284
+
216
285
  requestMapping(
217
286
  arg0: BytesLike,
218
287
  overrides?: CallOverrides
@@ -242,6 +311,21 @@ export class ERC20EscrowToPay extends BaseContract {
242
311
  _paymentRef: BytesLike,
243
312
  overrides?: Overrides & { from?: string | Promise<string> }
244
313
  ): Promise<ContractTransaction>;
314
+
315
+ setEmergencyClaimPeriod(
316
+ _emergencyClaimPeriod: BigNumberish,
317
+ overrides?: Overrides & { from?: string | Promise<string> }
318
+ ): Promise<ContractTransaction>;
319
+
320
+ setFrozenPeriod(
321
+ _frozenPeriod: BigNumberish,
322
+ overrides?: Overrides & { from?: string | Promise<string> }
323
+ ): Promise<ContractTransaction>;
324
+
325
+ transferOwnership(
326
+ newOwner: string,
327
+ overrides?: Overrides & { from?: string | Promise<string> }
328
+ ): Promise<ContractTransaction>;
245
329
  };
246
330
 
247
331
  approvePaymentProxyToSpend(
@@ -254,16 +338,22 @@ export class ERC20EscrowToPay extends BaseContract {
254
338
  overrides?: Overrides & { from?: string | Promise<string> }
255
339
  ): Promise<ContractTransaction>;
256
340
 
341
+ emergencyClaimPeriod(overrides?: CallOverrides): Promise<BigNumber>;
342
+
257
343
  freezeRequest(
258
344
  _paymentRef: BytesLike,
259
345
  overrides?: Overrides & { from?: string | Promise<string> }
260
346
  ): Promise<ContractTransaction>;
261
347
 
348
+ frozenPeriod(overrides?: CallOverrides): Promise<BigNumber>;
349
+
262
350
  initiateEmergencyClaim(
263
351
  _paymentRef: BytesLike,
264
352
  overrides?: Overrides & { from?: string | Promise<string> }
265
353
  ): Promise<ContractTransaction>;
266
354
 
355
+ owner(overrides?: CallOverrides): Promise<string>;
356
+
267
357
  payEscrow(
268
358
  _tokenAddress: string,
269
359
  _to: string,
@@ -286,6 +376,10 @@ export class ERC20EscrowToPay extends BaseContract {
286
376
  overrides?: Overrides & { from?: string | Promise<string> }
287
377
  ): Promise<ContractTransaction>;
288
378
 
379
+ renounceOwnership(
380
+ overrides?: Overrides & { from?: string | Promise<string> }
381
+ ): Promise<ContractTransaction>;
382
+
289
383
  requestMapping(
290
384
  arg0: BytesLike,
291
385
  overrides?: CallOverrides
@@ -316,6 +410,21 @@ export class ERC20EscrowToPay extends BaseContract {
316
410
  overrides?: Overrides & { from?: string | Promise<string> }
317
411
  ): Promise<ContractTransaction>;
318
412
 
413
+ setEmergencyClaimPeriod(
414
+ _emergencyClaimPeriod: BigNumberish,
415
+ overrides?: Overrides & { from?: string | Promise<string> }
416
+ ): Promise<ContractTransaction>;
417
+
418
+ setFrozenPeriod(
419
+ _frozenPeriod: BigNumberish,
420
+ overrides?: Overrides & { from?: string | Promise<string> }
421
+ ): Promise<ContractTransaction>;
422
+
423
+ transferOwnership(
424
+ newOwner: string,
425
+ overrides?: Overrides & { from?: string | Promise<string> }
426
+ ): Promise<ContractTransaction>;
427
+
319
428
  callStatic: {
320
429
  approvePaymentProxyToSpend(
321
430
  _erc20Address: string,
@@ -327,16 +436,22 @@ export class ERC20EscrowToPay extends BaseContract {
327
436
  overrides?: CallOverrides
328
437
  ): Promise<void>;
329
438
 
439
+ emergencyClaimPeriod(overrides?: CallOverrides): Promise<BigNumber>;
440
+
330
441
  freezeRequest(
331
442
  _paymentRef: BytesLike,
332
443
  overrides?: CallOverrides
333
444
  ): Promise<void>;
334
445
 
446
+ frozenPeriod(overrides?: CallOverrides): Promise<BigNumber>;
447
+
335
448
  initiateEmergencyClaim(
336
449
  _paymentRef: BytesLike,
337
450
  overrides?: CallOverrides
338
451
  ): Promise<void>;
339
452
 
453
+ owner(overrides?: CallOverrides): Promise<string>;
454
+
340
455
  payEscrow(
341
456
  _tokenAddress: string,
342
457
  _to: string,
@@ -359,6 +474,8 @@ export class ERC20EscrowToPay extends BaseContract {
359
474
  overrides?: CallOverrides
360
475
  ): Promise<void>;
361
476
 
477
+ renounceOwnership(overrides?: CallOverrides): Promise<void>;
478
+
362
479
  requestMapping(
363
480
  arg0: BytesLike,
364
481
  overrides?: CallOverrides
@@ -388,6 +505,21 @@ export class ERC20EscrowToPay extends BaseContract {
388
505
  _paymentRef: BytesLike,
389
506
  overrides?: CallOverrides
390
507
  ): Promise<void>;
508
+
509
+ setEmergencyClaimPeriod(
510
+ _emergencyClaimPeriod: BigNumberish,
511
+ overrides?: CallOverrides
512
+ ): Promise<void>;
513
+
514
+ setFrozenPeriod(
515
+ _frozenPeriod: BigNumberish,
516
+ overrides?: CallOverrides
517
+ ): Promise<void>;
518
+
519
+ transferOwnership(
520
+ newOwner: string,
521
+ overrides?: CallOverrides
522
+ ): Promise<void>;
391
523
  };
392
524
 
393
525
  filters: {
@@ -395,6 +527,14 @@ export class ERC20EscrowToPay extends BaseContract {
395
527
  paymentReference?: BytesLike | null
396
528
  ): TypedEventFilter<[string], { paymentReference: string }>;
397
529
 
530
+ OwnershipTransferred(
531
+ previousOwner?: string | null,
532
+ newOwner?: string | null
533
+ ): TypedEventFilter<
534
+ [string, string],
535
+ { previousOwner: string; newOwner: string }
536
+ >;
537
+
398
538
  RequestFrozen(
399
539
  paymentReference?: BytesLike | null
400
540
  ): TypedEventFilter<[string], { paymentReference: string }>;
@@ -434,16 +574,22 @@ export class ERC20EscrowToPay extends BaseContract {
434
574
  overrides?: Overrides & { from?: string | Promise<string> }
435
575
  ): Promise<BigNumber>;
436
576
 
577
+ emergencyClaimPeriod(overrides?: CallOverrides): Promise<BigNumber>;
578
+
437
579
  freezeRequest(
438
580
  _paymentRef: BytesLike,
439
581
  overrides?: Overrides & { from?: string | Promise<string> }
440
582
  ): Promise<BigNumber>;
441
583
 
584
+ frozenPeriod(overrides?: CallOverrides): Promise<BigNumber>;
585
+
442
586
  initiateEmergencyClaim(
443
587
  _paymentRef: BytesLike,
444
588
  overrides?: Overrides & { from?: string | Promise<string> }
445
589
  ): Promise<BigNumber>;
446
590
 
591
+ owner(overrides?: CallOverrides): Promise<BigNumber>;
592
+
447
593
  payEscrow(
448
594
  _tokenAddress: string,
449
595
  _to: string,
@@ -466,6 +612,10 @@ export class ERC20EscrowToPay extends BaseContract {
466
612
  overrides?: Overrides & { from?: string | Promise<string> }
467
613
  ): Promise<BigNumber>;
468
614
 
615
+ renounceOwnership(
616
+ overrides?: Overrides & { from?: string | Promise<string> }
617
+ ): Promise<BigNumber>;
618
+
469
619
  requestMapping(
470
620
  arg0: BytesLike,
471
621
  overrides?: CallOverrides
@@ -475,6 +625,21 @@ export class ERC20EscrowToPay extends BaseContract {
475
625
  _paymentRef: BytesLike,
476
626
  overrides?: Overrides & { from?: string | Promise<string> }
477
627
  ): Promise<BigNumber>;
628
+
629
+ setEmergencyClaimPeriod(
630
+ _emergencyClaimPeriod: BigNumberish,
631
+ overrides?: Overrides & { from?: string | Promise<string> }
632
+ ): Promise<BigNumber>;
633
+
634
+ setFrozenPeriod(
635
+ _frozenPeriod: BigNumberish,
636
+ overrides?: Overrides & { from?: string | Promise<string> }
637
+ ): Promise<BigNumber>;
638
+
639
+ transferOwnership(
640
+ newOwner: string,
641
+ overrides?: Overrides & { from?: string | Promise<string> }
642
+ ): Promise<BigNumber>;
478
643
  };
479
644
 
480
645
  populateTransaction: {
@@ -488,16 +653,24 @@ export class ERC20EscrowToPay extends BaseContract {
488
653
  overrides?: Overrides & { from?: string | Promise<string> }
489
654
  ): Promise<PopulatedTransaction>;
490
655
 
656
+ emergencyClaimPeriod(
657
+ overrides?: CallOverrides
658
+ ): Promise<PopulatedTransaction>;
659
+
491
660
  freezeRequest(
492
661
  _paymentRef: BytesLike,
493
662
  overrides?: Overrides & { from?: string | Promise<string> }
494
663
  ): Promise<PopulatedTransaction>;
495
664
 
665
+ frozenPeriod(overrides?: CallOverrides): Promise<PopulatedTransaction>;
666
+
496
667
  initiateEmergencyClaim(
497
668
  _paymentRef: BytesLike,
498
669
  overrides?: Overrides & { from?: string | Promise<string> }
499
670
  ): Promise<PopulatedTransaction>;
500
671
 
672
+ owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
673
+
501
674
  payEscrow(
502
675
  _tokenAddress: string,
503
676
  _to: string,
@@ -520,6 +693,10 @@ export class ERC20EscrowToPay extends BaseContract {
520
693
  overrides?: Overrides & { from?: string | Promise<string> }
521
694
  ): Promise<PopulatedTransaction>;
522
695
 
696
+ renounceOwnership(
697
+ overrides?: Overrides & { from?: string | Promise<string> }
698
+ ): Promise<PopulatedTransaction>;
699
+
523
700
  requestMapping(
524
701
  arg0: BytesLike,
525
702
  overrides?: CallOverrides
@@ -529,5 +706,20 @@ export class ERC20EscrowToPay extends BaseContract {
529
706
  _paymentRef: BytesLike,
530
707
  overrides?: Overrides & { from?: string | Promise<string> }
531
708
  ): Promise<PopulatedTransaction>;
709
+
710
+ setEmergencyClaimPeriod(
711
+ _emergencyClaimPeriod: BigNumberish,
712
+ overrides?: Overrides & { from?: string | Promise<string> }
713
+ ): Promise<PopulatedTransaction>;
714
+
715
+ setFrozenPeriod(
716
+ _frozenPeriod: BigNumberish,
717
+ overrides?: Overrides & { from?: string | Promise<string> }
718
+ ): Promise<PopulatedTransaction>;
719
+
720
+ transferOwnership(
721
+ newOwner: string,
722
+ overrides?: Overrides & { from?: string | Promise<string> }
723
+ ): Promise<PopulatedTransaction>;
532
724
  };
533
725
  }
@@ -11,7 +11,7 @@ export declare class AggregatorMock__factory extends ContractFactory {
11
11
  }): TransactionRequest;
12
12
  attach(address: string): AggregatorMock;
13
13
  connect(signer: Signer): AggregatorMock__factory;
14
- static readonly bytecode = "0x608060405234801561001057600080fd5b50604051610369380380610369833981810160405281019061003291906100ea565b82600181905550816000806101000a81548160ff021916908360ff16021790555080600260006101000a81548160ff021916908360ff16021790555050505061013d565b600080fd5b6000819050919050565b61008e8161007b565b811461009957600080fd5b50565b6000815190506100ab81610085565b92915050565b600060ff82169050919050565b6100c7816100b1565b81146100d257600080fd5b50565b6000815190506100e4816100be565b92915050565b60008060006060848603121561010357610102610076565b5b60006101118682870161009c565b9350506020610122868287016100d5565b9250506040610133868287016100d5565b9150509250925092565b61021d8061014c6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063313ce5671461004657806350d25bcd146100645780638205bf6a14610082575b600080fd5b61004e6100a0565b60405161005b9190610101565b60405180910390f35b61006c6100b6565b6040516100799190610135565b60405180910390f35b61008a6100c0565b6040516100979190610169565b60405180910390f35b60008060009054906101000a900460ff16905090565b6000600154905090565b6000600260009054906101000a900460ff1660ff16426100e091906101b3565b905090565b600060ff82169050919050565b6100fb816100e5565b82525050565b600060208201905061011660008301846100f2565b92915050565b6000819050919050565b61012f8161011c565b82525050565b600060208201905061014a6000830184610126565b92915050565b6000819050919050565b61016381610150565b82525050565b600060208201905061017e600083018461015a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006101be82610150565b91506101c983610150565b9250828210156101dc576101db610184565b5b82820390509291505056fea2646970667358221220a447a9412edeb4ed4cc7ed75efb2879fa5c0ccd09b74c292cafbc33ed27411c464736f6c63430008090033";
14
+ static readonly bytecode = "0x608060405234801561001057600080fd5b50604051610369380380610369833981810160405281019061003291906100ea565b82600181905550816000806101000a81548160ff021916908360ff16021790555080600260006101000a81548160ff021916908360ff16021790555050505061013d565b600080fd5b6000819050919050565b61008e8161007b565b811461009957600080fd5b50565b6000815190506100ab81610085565b92915050565b600060ff82169050919050565b6100c7816100b1565b81146100d257600080fd5b50565b6000815190506100e4816100be565b92915050565b60008060006060848603121561010357610102610076565b5b60006101118682870161009c565b9350506020610122868287016100d5565b9250506040610133868287016100d5565b9150509250925092565b61021d8061014c6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063313ce5671461004657806350d25bcd146100645780638205bf6a14610082575b600080fd5b61004e6100a0565b60405161005b9190610101565b60405180910390f35b61006c6100b6565b6040516100799190610135565b60405180910390f35b61008a6100c0565b6040516100979190610169565b60405180910390f35b60008060009054906101000a900460ff16905090565b6000600154905090565b6000600260009054906101000a900460ff1660ff16426100e091906101b3565b905090565b600060ff82169050919050565b6100fb816100e5565b82525050565b600060208201905061011660008301846100f2565b92915050565b6000819050919050565b61012f8161011c565b82525050565b600060208201905061014a6000830184610126565b92915050565b6000819050919050565b61016381610150565b82525050565b600060208201905061017e600083018461015a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006101be82610150565b91506101c983610150565b9250828210156101dc576101db610184565b5b82820390509291505056fea2646970667358221220598945154f468d9a4dd0f7ef9dc7f192042bdb30f4febb9f0add17078693f63264736f6c63430008090033";
15
15
  static readonly abi: ({
16
16
  inputs: {
17
17
  internalType: string;
@@ -67,7 +67,7 @@ const _abi = [
67
67
  type: "function",
68
68
  },
69
69
  ];
70
- const _bytecode = "0x608060405234801561001057600080fd5b50604051610369380380610369833981810160405281019061003291906100ea565b82600181905550816000806101000a81548160ff021916908360ff16021790555080600260006101000a81548160ff021916908360ff16021790555050505061013d565b600080fd5b6000819050919050565b61008e8161007b565b811461009957600080fd5b50565b6000815190506100ab81610085565b92915050565b600060ff82169050919050565b6100c7816100b1565b81146100d257600080fd5b50565b6000815190506100e4816100be565b92915050565b60008060006060848603121561010357610102610076565b5b60006101118682870161009c565b9350506020610122868287016100d5565b9250506040610133868287016100d5565b9150509250925092565b61021d8061014c6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063313ce5671461004657806350d25bcd146100645780638205bf6a14610082575b600080fd5b61004e6100a0565b60405161005b9190610101565b60405180910390f35b61006c6100b6565b6040516100799190610135565b60405180910390f35b61008a6100c0565b6040516100979190610169565b60405180910390f35b60008060009054906101000a900460ff16905090565b6000600154905090565b6000600260009054906101000a900460ff1660ff16426100e091906101b3565b905090565b600060ff82169050919050565b6100fb816100e5565b82525050565b600060208201905061011660008301846100f2565b92915050565b6000819050919050565b61012f8161011c565b82525050565b600060208201905061014a6000830184610126565b92915050565b6000819050919050565b61016381610150565b82525050565b600060208201905061017e600083018461015a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006101be82610150565b91506101c983610150565b9250828210156101dc576101db610184565b5b82820390509291505056fea2646970667358221220a447a9412edeb4ed4cc7ed75efb2879fa5c0ccd09b74c292cafbc33ed27411c464736f6c63430008090033";
70
+ const _bytecode = "0x608060405234801561001057600080fd5b50604051610369380380610369833981810160405281019061003291906100ea565b82600181905550816000806101000a81548160ff021916908360ff16021790555080600260006101000a81548160ff021916908360ff16021790555050505061013d565b600080fd5b6000819050919050565b61008e8161007b565b811461009957600080fd5b50565b6000815190506100ab81610085565b92915050565b600060ff82169050919050565b6100c7816100b1565b81146100d257600080fd5b50565b6000815190506100e4816100be565b92915050565b60008060006060848603121561010357610102610076565b5b60006101118682870161009c565b9350506020610122868287016100d5565b9250506040610133868287016100d5565b9150509250925092565b61021d8061014c6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063313ce5671461004657806350d25bcd146100645780638205bf6a14610082575b600080fd5b61004e6100a0565b60405161005b9190610101565b60405180910390f35b61006c6100b6565b6040516100799190610135565b60405180910390f35b61008a6100c0565b6040516100979190610169565b60405180910390f35b60008060009054906101000a900460ff16905090565b6000600154905090565b6000600260009054906101000a900460ff1660ff16426100e091906101b3565b905090565b600060ff82169050919050565b6100fb816100e5565b82525050565b600060208201905061011660008301846100f2565b92915050565b6000819050919050565b61012f8161011c565b82525050565b600060208201905061014a6000830184610126565b92915050565b6000819050919050565b61016381610150565b82525050565b600060208201905061017e600083018461015a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006101be82610150565b91506101c983610150565b9250828210156101dc576101db610184565b5b82820390509291505056fea2646970667358221220598945154f468d9a4dd0f7ef9dc7f192042bdb30f4febb9f0add17078693f63264736f6c63430008090033";
71
71
  class AggregatorMock__factory extends ethers_1.ContractFactory {
72
72
  constructor(signer) {
73
73
  super(_abi, _bytecode, signer);
@@ -11,7 +11,7 @@ export declare class BadERC20__factory extends ContractFactory {
11
11
  }): TransactionRequest;
12
12
  attach(address: string): BadERC20;
13
13
  connect(signer: Signer): BadERC20__factory;
14
- static readonly bytecode = "0x608060405260008060146101000a81548160ff021916908315150217905550600060035560006004553480156200003557600080fd5b50604051620037eb380380620037eb83398181016040528101906200005b9190620004b0565b6200007b6200006f6200013360201b60201c565b6200013b60201b60201c565b8360018190555082600790805190602001906200009a92919062000228565b508160089080519060200190620000b392919062000228565b50806009819055508360026000620000d0620001ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60146101000a81548160ff02191690831515021790555050505050620005c5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000236906200058f565b90600052602060002090601f0160209004810192826200025a5760008555620002a6565b82601f106200027557805160ff1916838001178555620002a6565b82800160010185558215620002a6579182015b82811115620002a557825182559160200191906001019062000288565b5b509050620002b59190620002b9565b5090565b5b80821115620002d4576000816000905550600101620002ba565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200030181620002ec565b81146200030d57600080fd5b50565b6000815190506200032181620002f6565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200037c8262000331565b810181811067ffffffffffffffff821117156200039e576200039d62000342565b5b80604052505050565b6000620003b3620002d8565b9050620003c1828262000371565b919050565b600067ffffffffffffffff821115620003e457620003e362000342565b5b620003ef8262000331565b9050602081019050919050565b60005b838110156200041c578082015181840152602081019050620003ff565b838111156200042c576000848401525b50505050565b6000620004496200044384620003c6565b620003a7565b9050828152602081018484840111156200046857620004676200032c565b5b62000475848285620003fc565b509392505050565b600082601f83011262000495576200049462000327565b5b8151620004a784826020860162000432565b91505092915050565b60008060008060808587031215620004cd57620004cc620002e2565b5b6000620004dd8782880162000310565b945050602085015167ffffffffffffffff811115620005015762000500620002e7565b5b6200050f878288016200047d565b935050604085015167ffffffffffffffff811115620005335762000532620002e7565b5b62000541878288016200047d565b9250506060620005548782880162000310565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005a857607f821691505b60208210811415620005bf57620005be62000560565b5b50919050565b61321680620005d56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063cc872b66116100ad578063e47d60601161007c578063e47d606014610556578063e4997dc514610586578063e5b5019a146105a2578063f2fde38b146105c0578063f3bdc228146105dc576101fb565b8063cc872b66146104d0578063db006a75146104ec578063dd62ed3e14610508578063dd644f7214610538576101fb565b80638da5cb5b116100e95780638da5cb5b1461045c57806395d89b411461047a578063a9059cbb14610498578063c0324c77146104b4576101fb565b806370a08231146103fa578063715018a61461042a5780638456cb5914610434578063893d20e81461043e576101fb565b806327e235e3116101925780633f4ba83a116101615780633f4ba83a1461037257806359bf1abe1461037c5780635c658165146103ac5780635c975abb146103dc576101fb565b806327e235e3146102e8578063313ce5671461031857806335390714146103365780633eaaf86b14610354576101fb565b80630ecb93c0116101ce5780630ecb93c01461027457806318160ddd1461029057806323b872dd146102ae57806326976e3f146102ca576101fb565b806306fdde03146102005780630753c30c1461021e578063095ea7b31461023a5780630e136b1914610256575b600080fd5b6102086105f8565b604051610215919061295f565b60405180910390f35b610238600480360381019061023391906129e4565b610686565b005b610254600480360381019061024f9190612a47565b610798565b005b61025e6108a8565b60405161026b9190612aa2565b60405180910390f35b61028e600480360381019061028991906129e4565b6108bb565b005b6102986109c9565b6040516102a59190612acc565b60405180910390f35b6102c860048036038101906102c39190612ae7565b610a90565b005b6102d2610c2b565b6040516102df9190612b49565b60405180910390f35b61030260048036038101906102fd91906129e4565b610c51565b60405161030f9190612acc565b60405180910390f35b610320610c69565b60405161032d9190612acc565b60405180910390f35b61033e610c6f565b60405161034b9190612acc565b60405180910390f35b61035c610c75565b6040516103699190612acc565b60405180910390f35b61037a610c7b565b005b610396600480360381019061039191906129e4565b610d8e565b6040516103a39190612aa2565b60405180910390f35b6103c660048036038101906103c19190612b64565b610de4565b6040516103d39190612acc565b60405180910390f35b6103e4610e09565b6040516103f19190612aa2565b60405180910390f35b610414600480360381019061040f91906129e4565b610e1c565b6040516104219190612acc565b60405180910390f35b610432610ef6565b005b61043c610f7e565b005b610446611093565b6040516104539190612b49565b60405180910390f35b6104646110a2565b6040516104719190612b49565b60405180910390f35b6104826110cb565b60405161048f919061295f565b60405180910390f35b6104b260048036038101906104ad9190612a47565b611159565b005b6104ce60048036038101906104c99190612ba4565b6112f0565b005b6104ea60048036038101906104e59190612be4565b61145a565b005b61050660048036038101906105019190612be4565b6116b0565b005b610522600480360381019061051d9190612b64565b6118aa565b60405161052f9190612acc565b60405180910390f35b610540611988565b60405161054d9190612acc565b60405180910390f35b610570600480360381019061056b91906129e4565b61198e565b60405161057d9190612aa2565b60405180910390f35b6105a0600480360381019061059b91906129e4565b6119ae565b005b6105aa611abc565b6040516105b79190612acc565b60405180910390f35b6105da60048036038101906105d591906129e4565b611ae0565b005b6105f660048036038101906105f191906129e4565b611bd8565b005b6007805461060590612c40565b80601f016020809104026020016040519081016040528092919081815260200182805461063190612c40565b801561067e5780601f106106535761010080835404028352916020019161067e565b820191906000526020600020905b81548152906001019060200180831161066157829003601f168201915b505050505081565b61068e611d88565b73ffffffffffffffffffffffffffffffffffffffff166106ac6110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f990612cbe565b60405180910390fd5b6001600a60146101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e8160405161078d9190612b49565b60405180910390a150565b60406004816107a79190612d0d565b600036905010156107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e490612d89565b60405180910390fd5b600a60149054906101000a900460ff161561089857600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aee92d333385856040518463ffffffff1660e01b815260040161086193929190612da9565b600060405180830381600087803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050506108a3565b6108a28383611d90565b5b505050565b600a60149054906101000a900460ff1681565b6108c3611d88565b73ffffffffffffffffffffffffffffffffffffffff166108e16110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092e90612cbe565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc816040516109be9190612b49565b60405180910390a150565b6000600a60149054906101000a900460ff1615610a8757600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4857600080fd5b505afa158015610a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a809190612df5565b9050610a8d565b60015490505b90565b600060149054906101000a900460ff1615610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790612d89565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490612d89565b60405180910390fd5b600a60149054906101000a900460ff1615610c1a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b477adb338585856040518563ffffffff1660e01b8152600401610be39493929190612e22565b600060405180830381600087803b158015610bfd57600080fd5b505af1158015610c11573d6000803e3d6000fd5b50505050610c26565b610c25838383611f9e565b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090505481565b60095481565b60045481565b60015481565b610c83611d88565b73ffffffffffffffffffffffffffffffffffffffff16610ca16110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90612cbe565b60405180910390fd5b600060149054906101000a900460ff16610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90612d89565b60405180910390fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600060149054906101000a900460ff1681565b6000600a60149054906101000a900460ff1615610ee557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610e8e9190612b49565b60206040518083038186803b158015610ea657600080fd5b505afa158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede9190612df5565b9050610ef1565b610eee82612404565b90505b919050565b610efe611d88565b73ffffffffffffffffffffffffffffffffffffffff16610f1c6110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6990612cbe565b60405180910390fd5b610f7c600061244d565b565b610f86611d88565b73ffffffffffffffffffffffffffffffffffffffff16610fa46110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190612cbe565b60405180910390fd5b600060149054906101000a900460ff161561104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190612d89565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600061109d6110a2565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600880546110d890612c40565b80601f016020809104026020016040519081016040528092919081815260200182805461110490612c40565b80156111515780601f1061112657610100808354040283529160200191611151565b820191906000526020600020905b81548152906001019060200180831161113457829003601f168201915b505050505081565b600060149054906101000a900460ff16156111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090612d89565b60405180910390fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d90612d89565b60405180910390fd5b600a60149054906101000a900460ff16156112e157600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e18980a3384846040518463ffffffff1660e01b81526004016112aa93929190612da9565b600060405180830381600087803b1580156112c457600080fd5b505af11580156112d8573d6000803e3d6000fd5b505050506112ec565b6112eb8282612511565b5b5050565b6112f8611d88565b73ffffffffffffffffffffffffffffffffffffffff166113166110a2565b73ffffffffffffffffffffffffffffffffffffffff161461136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136390612cbe565b60405180910390fd5b601482106113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690612d89565b60405180910390fd5b603281106113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990612d89565b60405180910390fd5b81600381905550600954600a6114089190612f9a565b816114139190612fe5565b6004819055507fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e60035460045460405161144e92919061303f565b60405180910390a15050565b611462611d88565b73ffffffffffffffffffffffffffffffffffffffff166114806110a2565b73ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90612cbe565b60405180910390fd5b600154816001546114e79190612d0d565b11611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612d89565b60405180910390fd5b600260006115336110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816002600061157b6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115c09190612d0d565b11611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790612d89565b60405180910390fd5b806002600061160d6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116569190612d0d565b92505081905550806001600082825461166f9190612d0d565b925050819055507fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a816040516116a59190612acc565b60405180910390a150565b6116b8611d88565b73ffffffffffffffffffffffffffffffffffffffff166116d66110a2565b73ffffffffffffffffffffffffffffffffffffffff161461172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172390612cbe565b60405180910390fd5b806001541015611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890612d89565b60405180910390fd5b806002600061177e6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190612d89565b60405180910390fd5b806001600082825461180c9190613068565b9250508190555080600260006118206110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118699190613068565b925050819055507f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a448160405161189f9190612acc565b60405180910390a150565b6000600a60149054906101000a900460ff161561197557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b815260040161191e92919061309c565b60206040518083038186803b15801561193657600080fd5b505afa15801561194a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196e9190612df5565b9050611982565b61197f838361283f565b90505b92915050565b60035481565b60066020528060005260406000206000915054906101000a900460ff1681565b6119b6611d88565b73ffffffffffffffffffffffffffffffffffffffff166119d46110a2565b73ffffffffffffffffffffffffffffffffffffffff1614611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190612cbe565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c81604051611ab19190612b49565b60405180910390a150565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b611ae8611d88565b73ffffffffffffffffffffffffffffffffffffffff16611b066110a2565b73ffffffffffffffffffffffffffffffffffffffff1614611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390612cbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc390613137565b60405180910390fd5b611bd58161244d565b50565b611be0611d88565b73ffffffffffffffffffffffffffffffffffffffff16611bfe6110a2565b73ffffffffffffffffffffffffffffffffffffffff1614611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b90612cbe565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790612d89565b60405180910390fd5b6000611ceb82610e1c565b90506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060016000828254611d449190613068565b925050819055507f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c68282604051611d7c929190613157565b60405180910390a15050565b600033905090565b6040600481611d9f9190612d0d565b60003690501015611de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddc90612d89565b60405180910390fd5b60008214158015611e7357506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90612d89565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611f919190612acc565b60405180910390a3505050565b6060600481611fad9190612d0d565b60003690501015611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90612d89565b60405180910390fd5b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612710600354856120879190612fe5565b61209191906131af565b90506004548111156120a35760045490505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8210156121585783826120d79190613068565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600081856121669190613068565b905084600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b39190613068565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122419190612d0d565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561239657816002600061229a6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122df9190612d0d565b600260006122eb6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123316110a2565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161238d9190612acc565b60405180910390a35b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123f39190612acc565b60405180910390a350505050505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60406004816125209190612d0d565b60003690501015612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255d90612d89565b60405180910390fd5b6000612710600354846125799190612fe5565b61258391906131af565b90506004548111156125955760045490505b600081846125a39190613068565b905083600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f09190613068565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267e9190612d0d565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156127d35781600260006126d76110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271c9190612d0d565b600260006127286110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061276e6110a2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ca9190612acc565b60405180910390a35b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128309190612acc565b60405180910390a35050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129005780820151818401526020810190506128e5565b8381111561290f576000848401525b50505050565b6000601f19601f8301169050919050565b6000612931826128c6565b61293b81856128d1565b935061294b8185602086016128e2565b61295481612915565b840191505092915050565b600060208201905081810360008301526129798184612926565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129b182612986565b9050919050565b6129c1816129a6565b81146129cc57600080fd5b50565b6000813590506129de816129b8565b92915050565b6000602082840312156129fa576129f9612981565b5b6000612a08848285016129cf565b91505092915050565b6000819050919050565b612a2481612a11565b8114612a2f57600080fd5b50565b600081359050612a4181612a1b565b92915050565b60008060408385031215612a5e57612a5d612981565b5b6000612a6c858286016129cf565b9250506020612a7d85828601612a32565b9150509250929050565b60008115159050919050565b612a9c81612a87565b82525050565b6000602082019050612ab76000830184612a93565b92915050565b612ac681612a11565b82525050565b6000602082019050612ae16000830184612abd565b92915050565b600080600060608486031215612b0057612aff612981565b5b6000612b0e868287016129cf565b9350506020612b1f868287016129cf565b9250506040612b3086828701612a32565b9150509250925092565b612b43816129a6565b82525050565b6000602082019050612b5e6000830184612b3a565b92915050565b60008060408385031215612b7b57612b7a612981565b5b6000612b89858286016129cf565b9250506020612b9a858286016129cf565b9150509250929050565b60008060408385031215612bbb57612bba612981565b5b6000612bc985828601612a32565b9250506020612bda85828601612a32565b9150509250929050565b600060208284031215612bfa57612bf9612981565b5b6000612c0884828501612a32565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c5857607f821691505b60208210811415612c6c57612c6b612c11565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ca86020836128d1565b9150612cb382612c72565b602082019050919050565b60006020820190508181036000830152612cd781612c9b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d1882612a11565b9150612d2383612a11565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d5857612d57612cde565b5b828201905092915050565b50565b6000612d736000836128d1565b9150612d7e82612d63565b600082019050919050565b60006020820190508181036000830152612da281612d66565b9050919050565b6000606082019050612dbe6000830186612b3a565b612dcb6020830185612b3a565b612dd86040830184612abd565b949350505050565b600081519050612def81612a1b565b92915050565b600060208284031215612e0b57612e0a612981565b5b6000612e1984828501612de0565b91505092915050565b6000608082019050612e376000830187612b3a565b612e446020830186612b3a565b612e516040830185612b3a565b612e5e6060830184612abd565b95945050505050565b60008160011c9050919050565b6000808291508390505b6001851115612ebe57808604811115612e9a57612e99612cde565b5b6001851615612ea95780820291505b8081029050612eb785612e67565b9450612e7e565b94509492505050565b600082612ed75760019050612f93565b81612ee55760009050612f93565b8160018114612efb5760028114612f0557612f34565b6001915050612f93565b60ff841115612f1757612f16612cde565b5b8360020a915084821115612f2e57612f2d612cde565b5b50612f93565b5060208310610133831016604e8410600b8410161715612f695782820a905083811115612f6457612f63612cde565b5b612f93565b612f768484846001612e74565b92509050818404811115612f8d57612f8c612cde565b5b81810290505b9392505050565b6000612fa582612a11565b9150612fb083612a11565b9250612fdd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ec7565b905092915050565b6000612ff082612a11565b9150612ffb83612a11565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561303457613033612cde565b5b828202905092915050565b60006040820190506130546000830185612abd565b6130616020830184612abd565b9392505050565b600061307382612a11565b915061307e83612a11565b92508282101561309157613090612cde565b5b828203905092915050565b60006040820190506130b16000830185612b3a565b6130be6020830184612b3a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131216026836128d1565b915061312c826130c5565b604082019050919050565b6000602082019050818103600083015261315081613114565b9050919050565b600060408201905061316c6000830185612b3a565b6131796020830184612abd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131ba82612a11565b91506131c583612a11565b9250826131d5576131d4613180565b5b82820490509291505056fea264697066735822122059f96c73a232697e7c10802972941ba1017223b0cf56f5499e16349ce595f5d264736f6c63430008090033";
14
+ static readonly bytecode = "0x608060405260008060146101000a81548160ff021916908315150217905550600060035560006004553480156200003557600080fd5b50604051620037eb380380620037eb83398181016040528101906200005b9190620004b0565b6200007b6200006f6200013360201b60201c565b6200013b60201b60201c565b8360018190555082600790805190602001906200009a92919062000228565b508160089080519060200190620000b392919062000228565b50806009819055508360026000620000d0620001ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60146101000a81548160ff02191690831515021790555050505050620005c5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000236906200058f565b90600052602060002090601f0160209004810192826200025a5760008555620002a6565b82601f106200027557805160ff1916838001178555620002a6565b82800160010185558215620002a6579182015b82811115620002a557825182559160200191906001019062000288565b5b509050620002b59190620002b9565b5090565b5b80821115620002d4576000816000905550600101620002ba565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200030181620002ec565b81146200030d57600080fd5b50565b6000815190506200032181620002f6565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200037c8262000331565b810181811067ffffffffffffffff821117156200039e576200039d62000342565b5b80604052505050565b6000620003b3620002d8565b9050620003c1828262000371565b919050565b600067ffffffffffffffff821115620003e457620003e362000342565b5b620003ef8262000331565b9050602081019050919050565b60005b838110156200041c578082015181840152602081019050620003ff565b838111156200042c576000848401525b50505050565b6000620004496200044384620003c6565b620003a7565b9050828152602081018484840111156200046857620004676200032c565b5b62000475848285620003fc565b509392505050565b600082601f83011262000495576200049462000327565b5b8151620004a784826020860162000432565b91505092915050565b60008060008060808587031215620004cd57620004cc620002e2565b5b6000620004dd8782880162000310565b945050602085015167ffffffffffffffff811115620005015762000500620002e7565b5b6200050f878288016200047d565b935050604085015167ffffffffffffffff811115620005335762000532620002e7565b5b62000541878288016200047d565b9250506060620005548782880162000310565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005a857607f821691505b60208210811415620005bf57620005be62000560565b5b50919050565b61321680620005d56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063cc872b66116100ad578063e47d60601161007c578063e47d606014610556578063e4997dc514610586578063e5b5019a146105a2578063f2fde38b146105c0578063f3bdc228146105dc576101fb565b8063cc872b66146104d0578063db006a75146104ec578063dd62ed3e14610508578063dd644f7214610538576101fb565b80638da5cb5b116100e95780638da5cb5b1461045c57806395d89b411461047a578063a9059cbb14610498578063c0324c77146104b4576101fb565b806370a08231146103fa578063715018a61461042a5780638456cb5914610434578063893d20e81461043e576101fb565b806327e235e3116101925780633f4ba83a116101615780633f4ba83a1461037257806359bf1abe1461037c5780635c658165146103ac5780635c975abb146103dc576101fb565b806327e235e3146102e8578063313ce5671461031857806335390714146103365780633eaaf86b14610354576101fb565b80630ecb93c0116101ce5780630ecb93c01461027457806318160ddd1461029057806323b872dd146102ae57806326976e3f146102ca576101fb565b806306fdde03146102005780630753c30c1461021e578063095ea7b31461023a5780630e136b1914610256575b600080fd5b6102086105f8565b604051610215919061295f565b60405180910390f35b610238600480360381019061023391906129e4565b610686565b005b610254600480360381019061024f9190612a47565b610798565b005b61025e6108a8565b60405161026b9190612aa2565b60405180910390f35b61028e600480360381019061028991906129e4565b6108bb565b005b6102986109c9565b6040516102a59190612acc565b60405180910390f35b6102c860048036038101906102c39190612ae7565b610a90565b005b6102d2610c2b565b6040516102df9190612b49565b60405180910390f35b61030260048036038101906102fd91906129e4565b610c51565b60405161030f9190612acc565b60405180910390f35b610320610c69565b60405161032d9190612acc565b60405180910390f35b61033e610c6f565b60405161034b9190612acc565b60405180910390f35b61035c610c75565b6040516103699190612acc565b60405180910390f35b61037a610c7b565b005b610396600480360381019061039191906129e4565b610d8e565b6040516103a39190612aa2565b60405180910390f35b6103c660048036038101906103c19190612b64565b610de4565b6040516103d39190612acc565b60405180910390f35b6103e4610e09565b6040516103f19190612aa2565b60405180910390f35b610414600480360381019061040f91906129e4565b610e1c565b6040516104219190612acc565b60405180910390f35b610432610ef6565b005b61043c610f7e565b005b610446611093565b6040516104539190612b49565b60405180910390f35b6104646110a2565b6040516104719190612b49565b60405180910390f35b6104826110cb565b60405161048f919061295f565b60405180910390f35b6104b260048036038101906104ad9190612a47565b611159565b005b6104ce60048036038101906104c99190612ba4565b6112f0565b005b6104ea60048036038101906104e59190612be4565b61145a565b005b61050660048036038101906105019190612be4565b6116b0565b005b610522600480360381019061051d9190612b64565b6118aa565b60405161052f9190612acc565b60405180910390f35b610540611988565b60405161054d9190612acc565b60405180910390f35b610570600480360381019061056b91906129e4565b61198e565b60405161057d9190612aa2565b60405180910390f35b6105a0600480360381019061059b91906129e4565b6119ae565b005b6105aa611abc565b6040516105b79190612acc565b60405180910390f35b6105da60048036038101906105d591906129e4565b611ae0565b005b6105f660048036038101906105f191906129e4565b611bd8565b005b6007805461060590612c40565b80601f016020809104026020016040519081016040528092919081815260200182805461063190612c40565b801561067e5780601f106106535761010080835404028352916020019161067e565b820191906000526020600020905b81548152906001019060200180831161066157829003601f168201915b505050505081565b61068e611d88565b73ffffffffffffffffffffffffffffffffffffffff166106ac6110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f990612cbe565b60405180910390fd5b6001600a60146101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e8160405161078d9190612b49565b60405180910390a150565b60406004816107a79190612d0d565b600036905010156107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e490612d89565b60405180910390fd5b600a60149054906101000a900460ff161561089857600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aee92d333385856040518463ffffffff1660e01b815260040161086193929190612da9565b600060405180830381600087803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050506108a3565b6108a28383611d90565b5b505050565b600a60149054906101000a900460ff1681565b6108c3611d88565b73ffffffffffffffffffffffffffffffffffffffff166108e16110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092e90612cbe565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc816040516109be9190612b49565b60405180910390a150565b6000600a60149054906101000a900460ff1615610a8757600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4857600080fd5b505afa158015610a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a809190612df5565b9050610a8d565b60015490505b90565b600060149054906101000a900460ff1615610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790612d89565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490612d89565b60405180910390fd5b600a60149054906101000a900460ff1615610c1a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b477adb338585856040518563ffffffff1660e01b8152600401610be39493929190612e22565b600060405180830381600087803b158015610bfd57600080fd5b505af1158015610c11573d6000803e3d6000fd5b50505050610c26565b610c25838383611f9e565b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090505481565b60095481565b60045481565b60015481565b610c83611d88565b73ffffffffffffffffffffffffffffffffffffffff16610ca16110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90612cbe565b60405180910390fd5b600060149054906101000a900460ff16610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90612d89565b60405180910390fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600060149054906101000a900460ff1681565b6000600a60149054906101000a900460ff1615610ee557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610e8e9190612b49565b60206040518083038186803b158015610ea657600080fd5b505afa158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede9190612df5565b9050610ef1565b610eee82612404565b90505b919050565b610efe611d88565b73ffffffffffffffffffffffffffffffffffffffff16610f1c6110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6990612cbe565b60405180910390fd5b610f7c600061244d565b565b610f86611d88565b73ffffffffffffffffffffffffffffffffffffffff16610fa46110a2565b73ffffffffffffffffffffffffffffffffffffffff1614610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190612cbe565b60405180910390fd5b600060149054906101000a900460ff161561104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190612d89565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600061109d6110a2565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600880546110d890612c40565b80601f016020809104026020016040519081016040528092919081815260200182805461110490612c40565b80156111515780601f1061112657610100808354040283529160200191611151565b820191906000526020600020905b81548152906001019060200180831161113457829003601f168201915b505050505081565b600060149054906101000a900460ff16156111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090612d89565b60405180910390fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d90612d89565b60405180910390fd5b600a60149054906101000a900460ff16156112e157600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e18980a3384846040518463ffffffff1660e01b81526004016112aa93929190612da9565b600060405180830381600087803b1580156112c457600080fd5b505af11580156112d8573d6000803e3d6000fd5b505050506112ec565b6112eb8282612511565b5b5050565b6112f8611d88565b73ffffffffffffffffffffffffffffffffffffffff166113166110a2565b73ffffffffffffffffffffffffffffffffffffffff161461136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136390612cbe565b60405180910390fd5b601482106113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690612d89565b60405180910390fd5b603281106113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990612d89565b60405180910390fd5b81600381905550600954600a6114089190612f9a565b816114139190612fe5565b6004819055507fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e60035460045460405161144e92919061303f565b60405180910390a15050565b611462611d88565b73ffffffffffffffffffffffffffffffffffffffff166114806110a2565b73ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90612cbe565b60405180910390fd5b600154816001546114e79190612d0d565b11611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612d89565b60405180910390fd5b600260006115336110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816002600061157b6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115c09190612d0d565b11611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790612d89565b60405180910390fd5b806002600061160d6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116569190612d0d565b92505081905550806001600082825461166f9190612d0d565b925050819055507fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a816040516116a59190612acc565b60405180910390a150565b6116b8611d88565b73ffffffffffffffffffffffffffffffffffffffff166116d66110a2565b73ffffffffffffffffffffffffffffffffffffffff161461172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172390612cbe565b60405180910390fd5b806001541015611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890612d89565b60405180910390fd5b806002600061177e6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190612d89565b60405180910390fd5b806001600082825461180c9190613068565b9250508190555080600260006118206110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118699190613068565b925050819055507f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a448160405161189f9190612acc565b60405180910390a150565b6000600a60149054906101000a900460ff161561197557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b815260040161191e92919061309c565b60206040518083038186803b15801561193657600080fd5b505afa15801561194a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196e9190612df5565b9050611982565b61197f838361283f565b90505b92915050565b60035481565b60066020528060005260406000206000915054906101000a900460ff1681565b6119b6611d88565b73ffffffffffffffffffffffffffffffffffffffff166119d46110a2565b73ffffffffffffffffffffffffffffffffffffffff1614611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190612cbe565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c81604051611ab19190612b49565b60405180910390a150565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b611ae8611d88565b73ffffffffffffffffffffffffffffffffffffffff16611b066110a2565b73ffffffffffffffffffffffffffffffffffffffff1614611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390612cbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc390613137565b60405180910390fd5b611bd58161244d565b50565b611be0611d88565b73ffffffffffffffffffffffffffffffffffffffff16611bfe6110a2565b73ffffffffffffffffffffffffffffffffffffffff1614611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b90612cbe565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790612d89565b60405180910390fd5b6000611ceb82610e1c565b90506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060016000828254611d449190613068565b925050819055507f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c68282604051611d7c929190613157565b60405180910390a15050565b600033905090565b6040600481611d9f9190612d0d565b60003690501015611de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddc90612d89565b60405180910390fd5b60008214158015611e7357506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90612d89565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611f919190612acc565b60405180910390a3505050565b6060600481611fad9190612d0d565b60003690501015611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90612d89565b60405180910390fd5b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612710600354856120879190612fe5565b61209191906131af565b90506004548111156120a35760045490505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8210156121585783826120d79190613068565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600081856121669190613068565b905084600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b39190613068565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122419190612d0d565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561239657816002600061229a6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122df9190612d0d565b600260006122eb6110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123316110a2565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161238d9190612acc565b60405180910390a35b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123f39190612acc565b60405180910390a350505050505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60406004816125209190612d0d565b60003690501015612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255d90612d89565b60405180910390fd5b6000612710600354846125799190612fe5565b61258391906131af565b90506004548111156125955760045490505b600081846125a39190613068565b905083600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f09190613068565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267e9190612d0d565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156127d35781600260006126d76110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271c9190612d0d565b600260006127286110a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061276e6110a2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ca9190612acc565b60405180910390a35b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128309190612acc565b60405180910390a35050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129005780820151818401526020810190506128e5565b8381111561290f576000848401525b50505050565b6000601f19601f8301169050919050565b6000612931826128c6565b61293b81856128d1565b935061294b8185602086016128e2565b61295481612915565b840191505092915050565b600060208201905081810360008301526129798184612926565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129b182612986565b9050919050565b6129c1816129a6565b81146129cc57600080fd5b50565b6000813590506129de816129b8565b92915050565b6000602082840312156129fa576129f9612981565b5b6000612a08848285016129cf565b91505092915050565b6000819050919050565b612a2481612a11565b8114612a2f57600080fd5b50565b600081359050612a4181612a1b565b92915050565b60008060408385031215612a5e57612a5d612981565b5b6000612a6c858286016129cf565b9250506020612a7d85828601612a32565b9150509250929050565b60008115159050919050565b612a9c81612a87565b82525050565b6000602082019050612ab76000830184612a93565b92915050565b612ac681612a11565b82525050565b6000602082019050612ae16000830184612abd565b92915050565b600080600060608486031215612b0057612aff612981565b5b6000612b0e868287016129cf565b9350506020612b1f868287016129cf565b9250506040612b3086828701612a32565b9150509250925092565b612b43816129a6565b82525050565b6000602082019050612b5e6000830184612b3a565b92915050565b60008060408385031215612b7b57612b7a612981565b5b6000612b89858286016129cf565b9250506020612b9a858286016129cf565b9150509250929050565b60008060408385031215612bbb57612bba612981565b5b6000612bc985828601612a32565b9250506020612bda85828601612a32565b9150509250929050565b600060208284031215612bfa57612bf9612981565b5b6000612c0884828501612a32565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c5857607f821691505b60208210811415612c6c57612c6b612c11565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ca86020836128d1565b9150612cb382612c72565b602082019050919050565b60006020820190508181036000830152612cd781612c9b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d1882612a11565b9150612d2383612a11565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d5857612d57612cde565b5b828201905092915050565b50565b6000612d736000836128d1565b9150612d7e82612d63565b600082019050919050565b60006020820190508181036000830152612da281612d66565b9050919050565b6000606082019050612dbe6000830186612b3a565b612dcb6020830185612b3a565b612dd86040830184612abd565b949350505050565b600081519050612def81612a1b565b92915050565b600060208284031215612e0b57612e0a612981565b5b6000612e1984828501612de0565b91505092915050565b6000608082019050612e376000830187612b3a565b612e446020830186612b3a565b612e516040830185612b3a565b612e5e6060830184612abd565b95945050505050565b60008160011c9050919050565b6000808291508390505b6001851115612ebe57808604811115612e9a57612e99612cde565b5b6001851615612ea95780820291505b8081029050612eb785612e67565b9450612e7e565b94509492505050565b600082612ed75760019050612f93565b81612ee55760009050612f93565b8160018114612efb5760028114612f0557612f34565b6001915050612f93565b60ff841115612f1757612f16612cde565b5b8360020a915084821115612f2e57612f2d612cde565b5b50612f93565b5060208310610133831016604e8410600b8410161715612f695782820a905083811115612f6457612f63612cde565b5b612f93565b612f768484846001612e74565b92509050818404811115612f8d57612f8c612cde565b5b81810290505b9392505050565b6000612fa582612a11565b9150612fb083612a11565b9250612fdd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ec7565b905092915050565b6000612ff082612a11565b9150612ffb83612a11565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561303457613033612cde565b5b828202905092915050565b60006040820190506130546000830185612abd565b6130616020830184612abd565b9392505050565b600061307382612a11565b915061307e83612a11565b92508282101561309157613090612cde565b5b828203905092915050565b60006040820190506130b16000830185612b3a565b6130be6020830184612b3a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131216026836128d1565b915061312c826130c5565b604082019050919050565b6000602082019050818103600083015261315081613114565b9050919050565b600060408201905061316c6000830185612b3a565b6131796020830184612abd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131ba82612a11565b91506131c583612a11565b9250826131d5576131d4613180565b5b82820490509291505056fea2646970667358221220ffcb488de35e4b5d9e0a405ef1f3b00a3ace59778eb6f847f93a52a3923055de64736f6c63430008090033";
15
15
  static readonly abi: ({
16
16
  inputs: {
17
17
  internalType: string;