@coti-io/coti-contracts 0.1.0 → 1.0.2

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 (125) hide show
  1. package/.github/workflows/npm-publish.yml +2 -1
  2. package/CONTRIBUTING.md +2 -2
  3. package/LICENSE +1 -1
  4. package/README.md +18 -35
  5. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +3 -115
  6. package/contracts/mocks/README.md +1 -1
  7. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +257 -280
  8. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +93 -187
  9. package/contracts/mocks/utils/mpc/{Comparison1Tests.Contract.sol → Comparison1TestsContract.sol} +67 -115
  10. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +76 -116
  11. package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +69 -164
  12. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +103 -56
  13. package/contracts/mocks/utils/mpc/MiscellaneousTestsContract.sol +270 -0
  14. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +127 -0
  15. package/contracts/mocks/utils/mpc/README.md +12 -12
  16. package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +54 -211
  17. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +165 -640
  18. package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +222 -0
  19. package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +222 -0
  20. package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +223 -0
  21. package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +222 -0
  22. package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +265 -0
  23. package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +281 -0
  24. package/contracts/onboard/AccountOnboard.sol +3 -3
  25. package/contracts/token/PrivateERC20/PrivateERC20.sol +1 -1
  26. package/contracts/token/PrivateERC721/IERC721Errors.sol +57 -0
  27. package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
  28. package/contracts/utils/mpc/MpcCore.sol +2835 -988
  29. package/contracts/utils/mpc/MpcInterface.sol +6 -4
  30. package/hardhat.config.ts +17 -6
  31. package/package.json +20 -4
  32. package/test/token/PrivateERC20/PrivateERC20.test.ts +2 -2
  33. package/test/utils/accounts.ts +1 -1
  34. package/test/utils/mpc/Precompile.test.ts +42 -39
  35. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/ArithmeticTestsContract.ts +374 -0
  36. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract.ts +374 -0
  37. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/index.ts +5 -0
  38. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.ts +96 -10
  39. package/typechain-types/contracts/mocks/utils/mpc/BitwiseTestsContract.ts +45 -5
  40. package/typechain-types/contracts/mocks/utils/mpc/Comparison1TestsContract.ts +374 -0
  41. package/typechain-types/contracts/mocks/utils/mpc/Comparison2TestsContract.ts +45 -5
  42. package/typechain-types/contracts/mocks/utils/mpc/MinMaxTestsContract.ts +25 -5
  43. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.ts +62 -0
  44. package/typechain-types/contracts/mocks/utils/mpc/MiscellaneousTestsContract.ts +396 -0
  45. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.ts +251 -0
  46. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract.ts +11 -8
  47. package/typechain-types/contracts/mocks/utils/mpc/TransferScalarTestsContract.ts +15 -15
  48. package/typechain-types/contracts/mocks/utils/mpc/TransferTestsContract.ts +15 -15
  49. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract.ts +251 -0
  50. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract.ts +250 -0
  51. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +5 -0
  52. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.ts +389 -0
  53. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.ts +391 -0
  54. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.ts +391 -0
  55. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract.ts +391 -0
  56. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract.ts +391 -0
  57. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +5 -0
  58. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.ts +391 -0
  59. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.ts +391 -0
  60. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.ts +306 -0
  61. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract.ts +125 -0
  62. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract.ts +125 -0
  63. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +5 -0
  64. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.ts +296 -0
  65. package/typechain-types/contracts/mocks/utils/mpc/index.ts +9 -6
  66. package/typechain-types/contracts/onboard/AccountOnboard.ts +9 -4
  67. package/typechain-types/contracts/token/PrivateERC721/IERC721Errors.ts +69 -0
  68. package/typechain-types/contracts/token/PrivateERC721/index.ts +1 -0
  69. package/typechain-types/contracts/utils/mpc/MpcCore.ts +84 -0
  70. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +81 -40
  71. package/typechain-types/contracts/utils/mpc/index.ts +1 -0
  72. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  73. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  74. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  75. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/ArithmeticTestsContract__factory.ts +387 -0
  76. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract__factory.ts +388 -0
  77. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/index.ts +5 -0
  78. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +92 -7
  79. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +38 -2
  80. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract__factory.ts +1 -1
  81. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +387 -0
  82. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +38 -2
  83. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +15 -2
  84. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +66 -1
  85. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous2TestsContract__factory.ts +1 -1
  86. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +424 -0
  87. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +285 -0
  88. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract__factory.ts +19 -3
  89. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  90. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  91. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +4 -4
  92. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +4 -4
  93. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract__factory.ts +294 -0
  94. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +292 -0
  95. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +5 -0
  96. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract__factory.ts +720 -0
  97. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +724 -0
  98. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +724 -0
  99. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract__factory.ts +724 -0
  100. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract__factory.ts +724 -0
  101. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +5 -0
  102. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +724 -0
  103. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +724 -0
  104. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +507 -0
  105. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract__factory.ts +150 -0
  106. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +150 -0
  107. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +5 -0
  108. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +434 -0
  109. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +9 -4
  110. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  111. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +8 -2
  112. package/typechain-types/factories/contracts/token/PrivateERC721/IERC721Errors__factory.ts +128 -0
  113. package/typechain-types/factories/contracts/token/PrivateERC721/index.ts +1 -0
  114. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +77 -0
  115. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +124 -61
  116. package/typechain-types/factories/contracts/utils/mpc/index.ts +1 -0
  117. package/typechain-types/hardhat.d.ts +152 -26
  118. package/typechain-types/index.ts +20 -8
  119. package/contracts/access/DataPrivacyFramework/README.md +0 -68
  120. package/contracts/mocks/utils/mpc/Miscellaneous2TestsContract.sol +0 -448
  121. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol +0 -81
  122. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +0 -311
  123. package/contracts/token/PrivateERC20/README.md +0 -104
  124. package/contracts/token/PrivateERC721/README.md +0 -282
  125. package/contracts/utils/mpc/README.md +0 -82
@@ -0,0 +1,434 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import {
5
+ Contract,
6
+ ContractFactory,
7
+ ContractTransactionResponse,
8
+ Interface,
9
+ } from "ethers";
10
+ import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
11
+ import type { NonPayableOverrides } from "../../../../../common";
12
+ import type {
13
+ TransferWithAllowanceTestsContract,
14
+ TransferWithAllowanceTestsContractInterface,
15
+ } from "../../../../../contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract";
16
+
17
+ const _abi = [
18
+ {
19
+ inputs: [
20
+ {
21
+ components: [
22
+ {
23
+ internalType: "gtUint8",
24
+ name: "a8_s",
25
+ type: "uint256",
26
+ },
27
+ {
28
+ internalType: "gtUint8",
29
+ name: "b8_s",
30
+ type: "uint256",
31
+ },
32
+ {
33
+ internalType: "gtUint16",
34
+ name: "a16_s",
35
+ type: "uint256",
36
+ },
37
+ {
38
+ internalType: "gtUint16",
39
+ name: "b16_s",
40
+ type: "uint256",
41
+ },
42
+ {
43
+ internalType: "gtUint32",
44
+ name: "a32_s",
45
+ type: "uint256",
46
+ },
47
+ {
48
+ internalType: "gtUint32",
49
+ name: "b32_s",
50
+ type: "uint256",
51
+ },
52
+ {
53
+ internalType: "gtUint64",
54
+ name: "a64_s",
55
+ type: "uint256",
56
+ },
57
+ {
58
+ internalType: "gtUint64",
59
+ name: "b64_s",
60
+ type: "uint256",
61
+ },
62
+ ],
63
+ internalType:
64
+ "struct TransferWithAllowanceTestsContract.AllGTCastingValues",
65
+ name: "allGTCastingValues",
66
+ type: "tuple",
67
+ },
68
+ {
69
+ components: [
70
+ {
71
+ internalType: "gtUint8",
72
+ name: "amount8_s",
73
+ type: "uint256",
74
+ },
75
+ {
76
+ internalType: "gtUint16",
77
+ name: "amount16_s",
78
+ type: "uint256",
79
+ },
80
+ {
81
+ internalType: "gtUint32",
82
+ name: "amount32_s",
83
+ type: "uint256",
84
+ },
85
+ {
86
+ internalType: "gtUint64",
87
+ name: "amount64_s",
88
+ type: "uint256",
89
+ },
90
+ {
91
+ internalType: "uint8",
92
+ name: "amount",
93
+ type: "uint8",
94
+ },
95
+ ],
96
+ internalType:
97
+ "struct TransferWithAllowanceTestsContract.AllAmountValues",
98
+ name: "allAmountValues",
99
+ type: "tuple",
100
+ },
101
+ {
102
+ components: [
103
+ {
104
+ internalType: "gtUint8",
105
+ name: "allowance8_s",
106
+ type: "uint256",
107
+ },
108
+ {
109
+ internalType: "gtUint16",
110
+ name: "allowance16_s",
111
+ type: "uint256",
112
+ },
113
+ {
114
+ internalType: "gtUint32",
115
+ name: "allowance32_s",
116
+ type: "uint256",
117
+ },
118
+ {
119
+ internalType: "gtUint64",
120
+ name: "allowance64_s",
121
+ type: "uint256",
122
+ },
123
+ {
124
+ internalType: "uint8",
125
+ name: "allowance",
126
+ type: "uint8",
127
+ },
128
+ ],
129
+ internalType:
130
+ "struct TransferWithAllowanceTestsContract.AllAllowanceValues",
131
+ name: "allAllowanceValues",
132
+ type: "tuple",
133
+ },
134
+ {
135
+ internalType: "uint8",
136
+ name: "new_a",
137
+ type: "uint8",
138
+ },
139
+ {
140
+ internalType: "uint8",
141
+ name: "new_b",
142
+ type: "uint8",
143
+ },
144
+ {
145
+ internalType: "bool",
146
+ name: "res",
147
+ type: "bool",
148
+ },
149
+ {
150
+ internalType: "uint8",
151
+ name: "new_allowance",
152
+ type: "uint8",
153
+ },
154
+ ],
155
+ name: "computeAndCheckTransfer16",
156
+ outputs: [],
157
+ stateMutability: "nonpayable",
158
+ type: "function",
159
+ },
160
+ {
161
+ inputs: [
162
+ {
163
+ components: [
164
+ {
165
+ internalType: "gtUint8",
166
+ name: "a8_s",
167
+ type: "uint256",
168
+ },
169
+ {
170
+ internalType: "gtUint8",
171
+ name: "b8_s",
172
+ type: "uint256",
173
+ },
174
+ {
175
+ internalType: "gtUint16",
176
+ name: "a16_s",
177
+ type: "uint256",
178
+ },
179
+ {
180
+ internalType: "gtUint16",
181
+ name: "b16_s",
182
+ type: "uint256",
183
+ },
184
+ {
185
+ internalType: "gtUint32",
186
+ name: "a32_s",
187
+ type: "uint256",
188
+ },
189
+ {
190
+ internalType: "gtUint32",
191
+ name: "b32_s",
192
+ type: "uint256",
193
+ },
194
+ {
195
+ internalType: "gtUint64",
196
+ name: "a64_s",
197
+ type: "uint256",
198
+ },
199
+ {
200
+ internalType: "gtUint64",
201
+ name: "b64_s",
202
+ type: "uint256",
203
+ },
204
+ ],
205
+ internalType:
206
+ "struct TransferWithAllowanceTestsContract.AllGTCastingValues",
207
+ name: "allGTCastingValues",
208
+ type: "tuple",
209
+ },
210
+ {
211
+ components: [
212
+ {
213
+ internalType: "gtUint8",
214
+ name: "amount8_s",
215
+ type: "uint256",
216
+ },
217
+ {
218
+ internalType: "gtUint16",
219
+ name: "amount16_s",
220
+ type: "uint256",
221
+ },
222
+ {
223
+ internalType: "gtUint32",
224
+ name: "amount32_s",
225
+ type: "uint256",
226
+ },
227
+ {
228
+ internalType: "gtUint64",
229
+ name: "amount64_s",
230
+ type: "uint256",
231
+ },
232
+ {
233
+ internalType: "uint8",
234
+ name: "amount",
235
+ type: "uint8",
236
+ },
237
+ ],
238
+ internalType:
239
+ "struct TransferWithAllowanceTestsContract.AllAmountValues",
240
+ name: "allAmountValues",
241
+ type: "tuple",
242
+ },
243
+ {
244
+ components: [
245
+ {
246
+ internalType: "gtUint8",
247
+ name: "allowance8_s",
248
+ type: "uint256",
249
+ },
250
+ {
251
+ internalType: "gtUint16",
252
+ name: "allowance16_s",
253
+ type: "uint256",
254
+ },
255
+ {
256
+ internalType: "gtUint32",
257
+ name: "allowance32_s",
258
+ type: "uint256",
259
+ },
260
+ {
261
+ internalType: "gtUint64",
262
+ name: "allowance64_s",
263
+ type: "uint256",
264
+ },
265
+ {
266
+ internalType: "uint8",
267
+ name: "allowance",
268
+ type: "uint8",
269
+ },
270
+ ],
271
+ internalType:
272
+ "struct TransferWithAllowanceTestsContract.AllAllowanceValues",
273
+ name: "allAllowanceValues",
274
+ type: "tuple",
275
+ },
276
+ {
277
+ internalType: "uint8",
278
+ name: "new_a",
279
+ type: "uint8",
280
+ },
281
+ {
282
+ internalType: "uint8",
283
+ name: "new_b",
284
+ type: "uint8",
285
+ },
286
+ {
287
+ internalType: "bool",
288
+ name: "res",
289
+ type: "bool",
290
+ },
291
+ {
292
+ internalType: "uint8",
293
+ name: "new_allowance",
294
+ type: "uint8",
295
+ },
296
+ ],
297
+ name: "computeAndCheckTransfer32",
298
+ outputs: [],
299
+ stateMutability: "nonpayable",
300
+ type: "function",
301
+ },
302
+ {
303
+ inputs: [],
304
+ name: "getResults",
305
+ outputs: [
306
+ {
307
+ internalType: "uint8",
308
+ name: "",
309
+ type: "uint8",
310
+ },
311
+ {
312
+ internalType: "uint8",
313
+ name: "",
314
+ type: "uint8",
315
+ },
316
+ {
317
+ internalType: "bool",
318
+ name: "",
319
+ type: "bool",
320
+ },
321
+ {
322
+ internalType: "uint8",
323
+ name: "",
324
+ type: "uint8",
325
+ },
326
+ ],
327
+ stateMutability: "view",
328
+ type: "function",
329
+ },
330
+ {
331
+ inputs: [
332
+ {
333
+ internalType: "uint8",
334
+ name: "a",
335
+ type: "uint8",
336
+ },
337
+ {
338
+ internalType: "uint8",
339
+ name: "b",
340
+ type: "uint8",
341
+ },
342
+ {
343
+ internalType: "uint8",
344
+ name: "amount",
345
+ type: "uint8",
346
+ },
347
+ {
348
+ internalType: "uint8",
349
+ name: "allowance",
350
+ type: "uint8",
351
+ },
352
+ ],
353
+ name: "transferWithAllowanceTest",
354
+ outputs: [
355
+ {
356
+ internalType: "uint8",
357
+ name: "",
358
+ type: "uint8",
359
+ },
360
+ {
361
+ internalType: "uint8",
362
+ name: "",
363
+ type: "uint8",
364
+ },
365
+ {
366
+ internalType: "bool",
367
+ name: "",
368
+ type: "bool",
369
+ },
370
+ {
371
+ internalType: "uint8",
372
+ name: "",
373
+ type: "uint8",
374
+ },
375
+ ],
376
+ stateMutability: "nonpayable",
377
+ type: "function",
378
+ },
379
+ ] as const;
380
+
381
+ const _bytecode =
382
+ "0x608060405234801561001057600080fd5b50614206806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634717f97c1461005157806386affd16146100a2578063eae36abd146100b7578063f20eac20146100ca575b600080fd5b60005460ff80821691610100810482169162010000820481169163010000009004165b6040805160ff9586168152938516602085015291151583830152909216606082015290519081900360800190f35b6100b56100b0366004614012565b6100dd565b005b6100746100c53660046140fe565b610aa2565b6100b56100d8366004614012565b610e03565b6000806000806100ff8b604001518c606001518c602001518c60200151613373565b93509350935093506101108461345e565b61ffff168860ff1614801561013357506101298361345e565b61ffff168760ff16145b801561014a575061014382613501565b1515861515145b8015610164575061015a8161345e565b61ffff168560ff16145b6101b55760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064015b60405180910390fd5b6101d18b604001518c602001518c600001518c60000151613592565b929650909450925090506101e48461345e565b61ffff168860ff1614801561020757506101fd8361345e565b61ffff168760ff16145b801561021e575061021782613501565b1515861515145b8015610238575061022e8161345e565b61ffff168560ff16145b6102845760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b8a5160608c01518b518b5161029b939291906135b1565b929650909450925090506102ae8461345e565b61ffff168860ff161480156102d157506102c78361345e565b61ffff168760ff16145b80156102e857506102e182613501565b1515861515145b801561030257506102f88161345e565b61ffff168560ff16145b61034e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b61036a8b604001518c602001518c602001518c600001516135d0565b9296509094509250905061037d8461345e565b61ffff168860ff161480156103a057506103968361345e565b61ffff168760ff16145b80156103b757506103b082613501565b1515861515145b80156103d157506103c78161345e565b61ffff168560ff16145b61041d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6104398b600001518c606001518c602001518c600001516135ef565b9296509094509250905061044c8461345e565b61ffff168860ff1614801561046f57506104658361345e565b61ffff168760ff16145b8015610486575061047f82613501565b1515861515145b80156104a057506104968161345e565b61ffff168560ff16145b6104ec5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6105088b604001518c606001518c600001518c6000015161360e565b9296509094509250905061051b8461345e565b61ffff168860ff1614801561053e57506105348361345e565b61ffff168760ff16145b8015610555575061054e82613501565b1515861515145b801561056f57506105658161345e565b61ffff168560ff16145b6105bb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6105d78b604001518c606001518c602001518c6000015161362d565b929650909450925090506105ea8461345e565b61ffff168860ff1614801561060d57506106038361345e565b61ffff168760ff16145b8015610624575061061d82613501565b1515861515145b801561063e57506106348161345e565b61ffff168560ff16145b61068a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6106a68b604001518c602001518c600001518c6020015161364c565b929650909450925090506106b98461345e565b61ffff168860ff161480156106dc57506106d28361345e565b61ffff168760ff16145b80156106f357506106ec82613501565b1515861515145b801561070d57506107038161345e565b61ffff168560ff16145b6107595760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6107758b600001518c606001518c600001518c6020015161366b565b929650909450925090506107888461345e565b61ffff168860ff161480156107ab57506107a18361345e565b61ffff168760ff16145b80156107c257506107bb82613501565b1515861515145b80156107dc57506107d28161345e565b61ffff168560ff16145b6108285760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6108448b604001518c602001518c602001518c6020015161368a565b929650909450925090506108578461345e565b61ffff168860ff1614801561087a57506108708361345e565b61ffff168760ff16145b8015610891575061088a82613501565b1515861515145b80156108ab57506108a18161345e565b61ffff168560ff16145b6108f75760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6109138b600001518c606001518c602001518c602001516136a9565b929650909450925090506109268461345e565b61ffff168860ff16148015610949575061093f8361345e565b61ffff168760ff16145b8015610960575061095982613501565b1515861515145b801561097a57506109708161345e565b61ffff168560ff16145b6109c65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6109e28b604001518c606001518c600001518c602001516136c8565b929650909450925090506109f58461345e565b61ffff168860ff16148015610a185750610a0e8361345e565b61ffff168760ff16145b8015610a2f5750610a2882613501565b1515861515145b8015610a495750610a3f8161345e565b61ffff168560ff16145b610a955760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b5050505050505050505050565b600080600080610af060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610b256040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b610b5a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b610b638b6136e7565b8352610b6e8a6136e7565b6020840152610b7f60ff8c16613750565b6040840152610b9060ff8b16613750565b6060840152610ba160ff8c166137ba565b6080840152610bb260ff8b166137ba565b60a0840152610bc360ff8c16613826565b60c0840152610bd460ff8b16613826565b60e0840152610be2896136e7565b8252610bf060ff8a16613750565b6020830152610c0160ff8a166137ba565b6040830152610c1260ff8a16613826565b606083015260ff89166080830152610c29886136e7565b8152610c3760ff8916613750565b6020820152610c4860ff89166137ba565b6040820152610c5960ff8916613826565b606082015260ff881660808201528251602084015183518351600093849384938493610c8793929190613896565b9350935093509350610c98846138b4565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055610cd3836138b4565b600060016101000a81548160ff021916908360ff160217905550610cf682613501565b6000805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055610d35816138b4565b6000805460ff92831663010000009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff8316811793849055610d9c948c948c948c949383169083161792610100820483169262010000830481169291909104166100dd565b600054610dcd9088908890889060ff8082169161010081048216916201000082048116916301000000900416610e03565b505060005460ff8082169f610100830482169f5062010000830482169e506301000000909204169b509950505050505050505050565b600080600080610e258b608001518c60a001518c604001518c604001516138c4565b9350935093509350610e36846138e2565b63ffffffff168860ff16148015610e5d5750610e51836138e2565b63ffffffff168760ff16145b8015610e745750610e6d82613501565b1515861515145b8015610e905750610e84816138e2565b63ffffffff168560ff16145b610edc5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b610ef88b608001518c602001518c600001518c600001516138f2565b92965090945092509050610f0b846138e2565b63ffffffff168860ff16148015610f325750610f26836138e2565b63ffffffff168760ff16145b8015610f495750610f4282613501565b1515861515145b8015610f655750610f59816138e2565b63ffffffff168560ff16145b610fb15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b8a5160a08c01518b518b51610fc893929190613911565b92965090945092509050610fdb846138e2565b63ffffffff168860ff161480156110025750610ff6836138e2565b63ffffffff168760ff16145b8015611019575061101282613501565b1515861515145b80156110355750611029816138e2565b63ffffffff168560ff16145b6110815760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61109d8b608001518c602001518c604001518c60000151613930565b929650909450925090506110b0846138e2565b63ffffffff168860ff161480156110d757506110cb836138e2565b63ffffffff168760ff16145b80156110ee57506110e782613501565b1515861515145b801561110a57506110fe816138e2565b63ffffffff168560ff16145b6111565760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6111728b600001518c60a001518c604001518c6000015161394f565b92965090945092509050611185846138e2565b63ffffffff168860ff161480156111ac57506111a0836138e2565b63ffffffff168760ff16145b80156111c357506111bc82613501565b1515861515145b80156111df57506111d3816138e2565b63ffffffff168560ff16145b61122b5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6112478b608001518c60a001518c604001518c6000015161396e565b9296509094509250905061125a846138e2565b63ffffffff168860ff161480156112815750611275836138e2565b63ffffffff168760ff16145b8015611298575061129182613501565b1515861515145b80156112b457506112a8816138e2565b63ffffffff168560ff16145b6113005760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61131c8b608001518c602001518c602001518c6000015161398d565b9296509094509250905061132f846138e2565b63ffffffff168860ff16148015611356575061134a836138e2565b63ffffffff168760ff16145b801561136d575061136682613501565b1515861515145b8015611389575061137d816138e2565b63ffffffff168560ff16145b6113d55760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6113f18b600001518c60a001518c602001518c600001516139ad565b92965090945092509050611404846138e2565b63ffffffff168860ff1614801561142b575061141f836138e2565b63ffffffff168760ff16145b8015611442575061143b82613501565b1515861515145b801561145e5750611452816138e2565b63ffffffff168560ff16145b6114aa5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6114c68b608001518c60a001518c600001518c600001516139cd565b929650909450925090506114d9846138e2565b63ffffffff168860ff1614801561150057506114f4836138e2565b63ffffffff168760ff16145b8015611517575061151082613501565b1515861515145b80156115335750611527816138e2565b63ffffffff168560ff16145b61157f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61159b8b608001518c602001518c600001518c602001516139ec565b929650909450925090506115ae846138e2565b63ffffffff168860ff161480156115d557506115c9836138e2565b63ffffffff168760ff16145b80156115ec57506115e582613501565b1515861515145b801561160857506115fc816138e2565b63ffffffff168560ff16145b6116545760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6116708b600001518c60a001518c600001518c60200151613a0c565b92965090945092509050611683846138e2565b63ffffffff168860ff161480156116aa575061169e836138e2565b63ffffffff168760ff16145b80156116c157506116ba82613501565b1515861515145b80156116dd57506116d1816138e2565b63ffffffff168560ff16145b6117295760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6117458b608001518c602001518c604001518c60200151613a2c565b92965090945092509050611758846138e2565b63ffffffff168860ff1614801561177f5750611773836138e2565b63ffffffff168760ff16145b8015611796575061178f82613501565b1515861515145b80156117b257506117a6816138e2565b63ffffffff168560ff16145b6117fe5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61181a8b600001518c60a001518c604001518c60200151613a4c565b9296509094509250905061182d846138e2565b63ffffffff168860ff161480156118545750611848836138e2565b63ffffffff168760ff16145b801561186b575061186482613501565b1515861515145b8015611887575061187b816138e2565b63ffffffff168560ff16145b6118d35760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6118ef8b608001518c602001518c602001518c60200151613a6c565b92965090945092509050611902846138e2565b63ffffffff168860ff16148015611929575061191d836138e2565b63ffffffff168760ff16145b8015611940575061193982613501565b1515861515145b801561195c5750611950816138e2565b63ffffffff168560ff16145b6119a85760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6119c48b600001518c60a001518c602001518c60200151613a8c565b929650909450925090506119d7846138e2565b63ffffffff168860ff161480156119fe57506119f2836138e2565b63ffffffff168760ff16145b8015611a155750611a0e82613501565b1515861515145b8015611a315750611a25816138e2565b63ffffffff168560ff16145b611a7d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611a998b608001518c60a001518c600001518c60200151613aac565b92965090945092509050611aac846138e2565b63ffffffff168860ff16148015611ad35750611ac7836138e2565b63ffffffff168760ff16145b8015611aea5750611ae382613501565b1515861515145b8015611b065750611afa816138e2565b63ffffffff168560ff16145b611b525760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611b6e8b608001518c602001518c600001518c60400151613acc565b92965090945092509050611b81846138e2565b63ffffffff168860ff16148015611ba85750611b9c836138e2565b63ffffffff168760ff16145b8015611bbf5750611bb882613501565b1515861515145b8015611bdb5750611bcf816138e2565b63ffffffff168560ff16145b611c275760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611c438b600001518c60a001518c600001518c60400151613aeb565b92965090945092509050611c56846138e2565b63ffffffff168860ff16148015611c7d5750611c71836138e2565b63ffffffff168760ff16145b8015611c945750611c8d82613501565b1515861515145b8015611cb05750611ca4816138e2565b63ffffffff168560ff16145b611cfc5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611d188b608001518c602001518c604001518c60400151613b0a565b92965090945092509050611d2b846138e2565b63ffffffff168860ff16148015611d525750611d46836138e2565b63ffffffff168760ff16145b8015611d695750611d6282613501565b1515861515145b8015611d855750611d79816138e2565b63ffffffff168560ff16145b611dd15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611ded8b600001518c60a001518c604001518c60400151613b29565b92965090945092509050611e00846138e2565b63ffffffff168860ff16148015611e275750611e1b836138e2565b63ffffffff168760ff16145b8015611e3e5750611e3782613501565b1515861515145b8015611e5a5750611e4e816138e2565b63ffffffff168560ff16145b611ea65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611ec28b608001518c602001518c602001518c60400151613b48565b92965090945092509050611ed5846138e2565b63ffffffff168860ff16148015611efc5750611ef0836138e2565b63ffffffff168760ff16145b8015611f135750611f0c82613501565b1515861515145b8015611f2f5750611f23816138e2565b63ffffffff168560ff16145b611f7b5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611f978b600001518c60a001518c602001518c60400151613b68565b92965090945092509050611faa846138e2565b63ffffffff168860ff16148015611fd15750611fc5836138e2565b63ffffffff168760ff16145b8015611fe85750611fe182613501565b1515861515145b80156120045750611ff8816138e2565b63ffffffff168560ff16145b6120505760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61206c8b608001518c60a001518c600001518c60400151613b88565b9296509094509250905061207f846138e2565b63ffffffff168860ff161480156120a6575061209a836138e2565b63ffffffff168760ff16145b80156120bd57506120b682613501565b1515861515145b80156120d957506120cd816138e2565b63ffffffff168560ff16145b6121255760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6121418b604001518c60a001518c600001518c60000151613ba7565b92965090945092509050612154846138e2565b63ffffffff168860ff1614801561217b575061216f836138e2565b63ffffffff168760ff16145b8015612192575061218b82613501565b1515861515145b80156121ae57506121a2816138e2565b63ffffffff168560ff16145b6121fa5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6122168b608001518c606001518c600001518c60000151613bc7565b92965090945092509050612229846138e2565b63ffffffff168860ff161480156122505750612244836138e2565b63ffffffff168760ff16145b8015612267575061226082613501565b1515861515145b80156122835750612277816138e2565b63ffffffff168560ff16145b6122cf5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6122eb8b604001518c60a001518c602001518c60000151613be7565b929650909450925090506122fe846138e2565b63ffffffff168860ff161480156123255750612319836138e2565b63ffffffff168760ff16145b801561233c575061233582613501565b1515861515145b8015612358575061234c816138e2565b63ffffffff168560ff16145b6123a45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6123c08b608001518c606001518c602001518c60000151613c07565b929650909450925090506123d3846138e2565b63ffffffff168860ff161480156123fa57506123ee836138e2565b63ffffffff168760ff16145b8015612411575061240a82613501565b1515861515145b801561242d5750612421816138e2565b63ffffffff168560ff16145b6124795760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6124958b604001518c60a001518c604001518c60000151613c27565b929650909450925090506124a8846138e2565b63ffffffff168860ff161480156124cf57506124c3836138e2565b63ffffffff168760ff16145b80156124e657506124df82613501565b1515861515145b801561250257506124f6816138e2565b63ffffffff168560ff16145b61254e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61256a8b608001518c606001518c604001518c60000151613c47565b9296509094509250905061257d846138e2565b63ffffffff168860ff161480156125a45750612598836138e2565b63ffffffff168760ff16145b80156125bb57506125b482613501565b1515861515145b80156125d757506125cb816138e2565b63ffffffff168560ff16145b6126235760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61263f8b608001518c60a001518c602001518c60000151613c67565b92965090945092509050612652846138e2565b63ffffffff168860ff16148015612679575061266d836138e2565b63ffffffff168760ff16145b8015612690575061268982613501565b1515861515145b80156126ac57506126a0816138e2565b63ffffffff168560ff16145b6126f85760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6127148b604001518c60a001518c600001518c60200151613c87565b92965090945092509050612727846138e2565b63ffffffff168860ff1614801561274e5750612742836138e2565b63ffffffff168760ff16145b8015612765575061275e82613501565b1515861515145b80156127815750612775816138e2565b63ffffffff168560ff16145b6127cd5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6127e98b608001518c606001518c600001518c60200151613ca7565b929650909450925090506127fc846138e2565b63ffffffff168860ff161480156128235750612817836138e2565b63ffffffff168760ff16145b801561283a575061283382613501565b1515861515145b8015612856575061284a816138e2565b63ffffffff168560ff16145b6128a25760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6128be8b604001518c60a001518c602001518c60200151613cc7565b929650909450925090506128d1846138e2565b63ffffffff168860ff161480156128f857506128ec836138e2565b63ffffffff168760ff16145b801561290f575061290882613501565b1515861515145b801561292b575061291f816138e2565b63ffffffff168560ff16145b6129775760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6129938b608001518c606001518c602001518c60200151613ce6565b929650909450925090506129a6846138e2565b63ffffffff168860ff161480156129cd57506129c1836138e2565b63ffffffff168760ff16145b80156129e457506129dd82613501565b1515861515145b8015612a0057506129f4816138e2565b63ffffffff168560ff16145b612a4c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612a688b604001518c60a001518c604001518c60200151613d05565b92965090945092509050612a7b846138e2565b63ffffffff168860ff16148015612aa25750612a96836138e2565b63ffffffff168760ff16145b8015612ab95750612ab282613501565b1515861515145b8015612ad55750612ac9816138e2565b63ffffffff168560ff16145b612b215760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612b3d8b608001518c606001518c604001518c60200151613d24565b92965090945092509050612b50846138e2565b63ffffffff168860ff16148015612b775750612b6b836138e2565b63ffffffff168760ff16145b8015612b8e5750612b8782613501565b1515861515145b8015612baa5750612b9e816138e2565b63ffffffff168560ff16145b612bf65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612c128b608001518c60a001518c602001518c60200151613d43565b92965090945092509050612c25846138e2565b63ffffffff168860ff16148015612c4c5750612c40836138e2565b63ffffffff168760ff16145b8015612c635750612c5c82613501565b1515861515145b8015612c7f5750612c73816138e2565b63ffffffff168560ff16145b612ccb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612ce78b608001518c60a001518c604001518c60200151613d62565b92965090945092509050612cfa846138e2565b63ffffffff168860ff16148015612d215750612d15836138e2565b63ffffffff168760ff16145b8015612d385750612d3182613501565b1515861515145b8015612d545750612d48816138e2565b63ffffffff168560ff16145b612da05760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612dbc8b604001518c60a001518c600001518c60400151613d81565b92965090945092509050612dcf846138e2565b63ffffffff168860ff16148015612df65750612dea836138e2565b63ffffffff168760ff16145b8015612e0d5750612e0682613501565b1515861515145b8015612e295750612e1d816138e2565b63ffffffff168560ff16145b612e755760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612e918b608001518c606001518c600001518c60400151613da1565b92965090945092509050612ea4846138e2565b63ffffffff168860ff16148015612ecb5750612ebf836138e2565b63ffffffff168760ff16145b8015612ee25750612edb82613501565b1515861515145b8015612efe5750612ef2816138e2565b63ffffffff168560ff16145b612f4a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612f668b604001518c60a001518c602001518c60400151613dc1565b92965090945092509050612f79846138e2565b63ffffffff168860ff16148015612fa05750612f94836138e2565b63ffffffff168760ff16145b8015612fb75750612fb082613501565b1515861515145b8015612fd35750612fc7816138e2565b63ffffffff168560ff16145b61301f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61303b8b608001518c606001518c602001518c60400151613de0565b9296509094509250905061304e846138e2565b63ffffffff168860ff161480156130755750613069836138e2565b63ffffffff168760ff16145b801561308c575061308582613501565b1515861515145b80156130a8575061309c816138e2565b63ffffffff168560ff16145b6130f45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6131108b604001518c60a001518c604001518c60400151613dff565b92965090945092509050613123846138e2565b63ffffffff168860ff1614801561314a575061313e836138e2565b63ffffffff168760ff16145b8015613161575061315a82613501565b1515861515145b801561317d5750613171816138e2565b63ffffffff168560ff16145b6131c95760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6131e58b608001518c606001518c604001518c60400151613e1e565b929650909450925090506131f8846138e2565b63ffffffff168860ff1614801561321f5750613213836138e2565b63ffffffff168760ff16145b8015613236575061322f82613501565b1515861515145b80156132525750613246816138e2565b63ffffffff168560ff16145b61329e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6132ba8b608001518c60a001518c602001518c60400151613e3d565b929650909450925090506132cd846138e2565b63ffffffff168860ff161480156132f457506132e8836138e2565b63ffffffff168760ff16145b801561330b575061330482613501565b1515861515145b8015613327575061331b816138e2565b63ffffffff168560ff16145b610a955760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b600080808080808080606463c2ff267a613391600280808087613e58565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e9052606481018d9052608481018c905260a4016080604051808303816000875af1158015613424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134489190614152565b929f919e509c50909a5098505050505050505050565b60006064630cfed56160025b60f81b846040518363ffffffff1660e01b81526004016134b89291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af11580156134d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fb91906141b7565b92915050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015613565573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358991906141b7565b15159392505050565b600080808080808080606463c2ff267a61339160026001808087613e58565b600080808080808080606463c2ff267a61339160016002818087613e58565b600080808080808080606463c2ff267a61339160026001818187613e58565b600080808080808080606463c2ff267a61339160016002808287613e58565b600080808080808080606463c2ff267a61339160028060018087613e58565b600080808080808080606463c2ff267a61339160028080600187613e58565b600080808080808080606463c2ff267a61339160026001808287613e58565b600080808080808080606463c2ff267a61339160016002818187613e58565b600080808080808080606463c2ff267a61339160026001818087613e58565b600080808080808080606463c2ff267a61339160016002808087613e58565b600080808080808080606463c2ff267a61339160028060018187613e58565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016134b8565b600080808080808080606463c2ff267a613391600180808087613e58565b60006064630cfed561600161346a565b600080808080808080606463c2ff267a613391600380808087613e58565b60006064630cfed561600361346a565b600080808080808080606463c2ff267a61339160036001808087613e58565b600080808080808080606463c2ff267a61339160016003818087613e58565b600080808080808080606463c2ff267a61339160036001818187613e58565b600080808080808080606463c2ff267a61339160016003808287613e58565b600080808080808080606463c2ff267a61339160038080600187613e58565b600080808080808080606463c2ff267a6133916003600160028187613e58565b600080808080808080606463c2ff267a6133916001600360028287613e58565b600080808080808080606463c2ff267a61339160038060018087613e58565b600080808080808080606463c2ff267a6133916003600180600287613e58565b600080808080808080606463c2ff267a6133916001600381600287613e58565b600080808080808080606463c2ff267a6133916003600181600287613e58565b600080808080808080606463c2ff267a6133916001600380600287613e58565b600080808080808080606463c2ff267a6133916003600160028087613e58565b600080808080808080606463c2ff267a6133916001600360028087613e58565b600080808080808080606463c2ff267a6133916003806001600287613e58565b600080808080808080606463c2ff267a61339160036001808287613e58565b600080808080808080606463c2ff267a61339160016003818187613e58565b600080808080808080606463c2ff267a61339160036001818087613e58565b600080808080808080606463c2ff267a61339160016003808087613e58565b600080808080808080606463c2ff267a6133916003600160028287613e58565b600080808080808080606463c2ff267a6133916001600360028187613e58565b600080808080808080606463c2ff267a61339160038060018187613e58565b600080808080808080606463c2ff267a6133916002600360018087613e58565b600080808080808080606463c2ff267a6133916003600260018087613e58565b600080808080808080606463c2ff267a6133916002600381600187613e58565b600080808080808080606463c2ff267a6133916003600280600187613e58565b600080808080808080606463c2ff267a6133916002600380600187613e58565b600080808080808080606463c2ff267a6133916003600281600187613e58565b600080808080808080606463c2ff267a6133916003806002600187613e58565b600080808080808080606463c2ff267a6133916002600360018287613e58565b600080808080808080606463c2ff267a6133916003600260018187613e58565b600080808080808080606463c2ff267a61339160026003818087613e58565b600080808080808080606463c2ff267a61339160036002808087613e58565b600080808080808080606463c2ff267a61339160026003808287613e58565b600080808080808080606463c2ff267a61339160036002818187613e58565b600080808080808080606463c2ff267a61339160038060028087613e58565b600080808080808080606463c2ff267a61339160038080600287613e58565b600080808080808080606463c2ff267a6133916002600360018187613e58565b600080808080808080606463c2ff267a6133916003600260018287613e58565b600080808080808080606463c2ff267a61339160026003818187613e58565b600080808080808080606463c2ff267a61339160036002808287613e58565b600080808080808080606463c2ff267a61339160026003808087613e58565b600080808080808080606463c2ff267a61339160036002818087613e58565b600080808080808080606463c2ff267a613391600380600281875b6000816002811115613e6c57613e6c614188565b60ff166008846004811115613e8357613e83614188565b61ffff16901b61ffff166010866004811115613ea157613ea1614188565b62ffffff16901b62ffffff166018886004811115613ec157613ec1614188565b63ffffffff16901b63ffffffff1660208a6004811115613ee357613ee3614188565b64ffffffffff16901b1717171760d81b9695505050505050565b604051610100810167ffffffffffffffff81118282101715613f48577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803560ff81168114613f5f57600080fd5b919050565b600060a08284031215613f7657600080fd5b60405160a0810181811067ffffffffffffffff82111715613fc0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152613ff660808401613f4e565b60808201525092915050565b80358015158114613f5f57600080fd5b60008060008060008060008789036102c081121561402f57600080fd5b6101008082121561403f57600080fd5b614047613efd565b91508935825260208a0135602083015260408a0135604083015260608a0135606083015260808a0135608083015260a08a013560a083015260c08a013560c083015260e08a013560e08301528198506140a28b828c01613f64565b975050506140b4896101a08a01613f64565b94506140c36102408901613f4e565b93506140d26102608901613f4e565b92506140e16102808901614002565b91506140f06102a08901613f4e565b905092959891949750929550565b6000806000806080858703121561411457600080fd5b61411d85613f4e565b935061412b60208601613f4e565b925061413960408601613f4e565b915061414760608601613f4e565b905092959194509250565b6000806000806080858703121561416857600080fd5b505082516020840151604085015160609095015191969095509092509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000602082840312156141c957600080fd5b505191905056fea264697066735822122021ed4e5f3431e7ae638024825e689653364d1a6157accf561f3ad5ba0b9677f964736f6c63430008130033";
383
+
384
+ type TransferWithAllowanceTestsContractConstructorParams =
385
+ | [signer?: Signer]
386
+ | ConstructorParameters<typeof ContractFactory>;
387
+
388
+ const isSuperArgs = (
389
+ xs: TransferWithAllowanceTestsContractConstructorParams
390
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
391
+
392
+ export class TransferWithAllowanceTestsContract__factory extends ContractFactory {
393
+ constructor(...args: TransferWithAllowanceTestsContractConstructorParams) {
394
+ if (isSuperArgs(args)) {
395
+ super(...args);
396
+ } else {
397
+ super(_abi, _bytecode, args[0]);
398
+ }
399
+ }
400
+
401
+ override getDeployTransaction(
402
+ overrides?: NonPayableOverrides & { from?: string }
403
+ ): Promise<ContractDeployTransaction> {
404
+ return super.getDeployTransaction(overrides || {});
405
+ }
406
+ override deploy(overrides?: NonPayableOverrides & { from?: string }) {
407
+ return super.deploy(overrides || {}) as Promise<
408
+ TransferWithAllowanceTestsContract & {
409
+ deploymentTransaction(): ContractTransactionResponse;
410
+ }
411
+ >;
412
+ }
413
+ override connect(
414
+ runner: ContractRunner | null
415
+ ): TransferWithAllowanceTestsContract__factory {
416
+ return super.connect(runner) as TransferWithAllowanceTestsContract__factory;
417
+ }
418
+
419
+ static readonly bytecode = _bytecode;
420
+ static readonly abi = _abi;
421
+ static createInterface(): TransferWithAllowanceTestsContractInterface {
422
+ return new Interface(_abi) as TransferWithAllowanceTestsContractInterface;
423
+ }
424
+ static connect(
425
+ address: string,
426
+ runner?: ContractRunner | null
427
+ ): TransferWithAllowanceTestsContract {
428
+ return new Contract(
429
+ address,
430
+ _abi,
431
+ runner
432
+ ) as unknown as TransferWithAllowanceTestsContract;
433
+ }
434
+ }
@@ -1,15 +1,20 @@
1
1
  /* Autogenerated file. Do not edit manually. */
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
- export * as comparison1TestsContractSol from "./Comparison1Tests.Contract.sol";
5
- export * as offboardToUserKeyTestsContractSol from "./OffboardToUserKeyTestsContract.sol";
6
4
  export { ArithmeticTestsContract__factory } from "./ArithmeticTestsContract__factory";
7
5
  export { BitwiseTestsContract__factory } from "./BitwiseTestsContract__factory";
6
+ export { Comparison1TestsContract__factory } from "./Comparison1TestsContract__factory";
8
7
  export { Comparison2TestsContract__factory } from "./Comparison2TestsContract__factory";
9
8
  export { MinMaxTestsContract__factory } from "./MinMaxTestsContract__factory";
10
9
  export { Miscellaneous1TestsContract__factory } from "./Miscellaneous1TestsContract__factory";
11
- export { Miscellaneous2TestsContract__factory } from "./Miscellaneous2TestsContract__factory";
12
- export { ShiftTestsContract__factory } from "./ShiftTestsContract__factory";
10
+ export { MiscellaneousTestsContract__factory } from "./MiscellaneousTestsContract__factory";
11
+ export { OffboardToUserKeyTestContract__factory } from "./OffboardToUserKeyTestContract__factory";
13
12
  export { StringTestsContract__factory } from "./StringTestsContract__factory";
14
13
  export { TransferScalarTestsContract__factory } from "./TransferScalarTestsContract__factory";
15
14
  export { TransferTestsContract__factory } from "./TransferTestsContract__factory";
15
+ export { TransferWithAllowance64_16TestsContract__factory } from "./TransferWithAllowance64_16TestsContract__factory";
16
+ export { TransferWithAllowance64_32TestsContract__factory } from "./TransferWithAllowance64_32TestsContract__factory";
17
+ export { TransferWithAllowance64_64TestsContract__factory } from "./TransferWithAllowance64_64TestsContract__factory";
18
+ export { TransferWithAllowance64_8TestsContract__factory } from "./TransferWithAllowance64_8TestsContract__factory";
19
+ export { TransferWithAllowanceScalarTestsContract__factory } from "./TransferWithAllowanceScalarTestsContract__factory";
20
+ export { TransferWithAllowanceTestsContract__factory } from "./TransferWithAllowanceTestsContract__factory";
@@ -139,7 +139,7 @@ const _abi = [
139
139
  ] as const;
140
140
 
141
141
  const _bytecode =
142
- "0x608060405234801561001057600080fd5b506108a3806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632a308b3a146100515780633ead9adb146100815780634a009211146100b1578063ce4ec16a146100e1575b600080fd5b61006b60048036038101906100669190610497565b610111565b604051610078919061052f565b60405180910390f35b61009b6004803603810190610096919061054a565b6101a2565b6040516100a8919061052f565b60405180910390f35b6100cb60048036038101906100c691906105b1565b610236565b6040516100d8919061060c565b60405180910390f35b6100fb60048036038101906100f69190610497565b6102bc565b604051610108919061060c565b60405180910390f35b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb846101398561034d565b6040518363ffffffff1660e01b8152600401610156929190610645565b6020604051808303816000875af1158015610175573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610199919061069a565b90509392505050565b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd85856101cb8661034d565b6040518463ffffffff1660e01b81526004016101e9939291906106c7565b6020604051808303816000875af1158015610208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022c919061069a565b9050949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff16638269bcc3836040518263ffffffff1660e01b815260040161027191906106fe565b6020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610745565b905092915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3846102e48561034d565b6040518363ffffffff1660e01b8152600401610301929190610645565b6020604051808303816000875af1158015610320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103449190610745565b90509392505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561037f5761037e610772565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016103aa9291906107eb565b6020604051808303816000875af11580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610840565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610424826103f9565b9050919050565b61043481610419565b811461043f57600080fd5b50565b6000813590506104518161042b565b92915050565b600067ffffffffffffffff82169050919050565b61047481610457565b811461047f57600080fd5b50565b6000813590506104918161046b565b92915050565b6000806000606084860312156104b0576104af6103f4565b5b60006104be86828701610442565b93505060206104cf86828701610442565b92505060406104e086828701610482565b9150509250925092565b6000819050919050565b6000819050919050565b600061051961051461050f846104ea565b6104f4565b6104ea565b9050919050565b610529816104fe565b82525050565b60006020820190506105446000830184610520565b92915050565b60008060008060808587031215610564576105636103f4565b5b600061057287828801610442565b945050602061058387828801610442565b935050604061059487828801610442565b92505060606105a587828801610482565b91505092959194509250565b600080604083850312156105c8576105c76103f4565b5b60006105d685828601610442565b92505060206105e785828601610442565b9150509250929050565b60008115159050919050565b610606816105f1565b82525050565b600060208201905061062160008301846105fd565b92915050565b61063081610419565b82525050565b61063f816104fe565b82525050565b600060408201905061065a6000830185610627565b6106676020830184610636565b9392505050565b610677816104ea565b811461068257600080fd5b50565b6000815190506106948161066e565b92915050565b6000602082840312156106b0576106af6103f4565b5b60006106be84828501610685565b91505092915050565b60006060820190506106dc6000830186610627565b6106e96020830185610627565b6106f66040830184610636565b949350505050565b60006020820190506107136000830184610627565b92915050565b610722816105f1565b811461072d57600080fd5b50565b60008151905061073f81610719565b92915050565b60006020828403121561075b5761075a6103f4565b5b600061076984828501610730565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6107d6816107a1565b82525050565b6107e5816104ea565b82525050565b600060408201905061080060008301856107cd565b61080d60208301846107dc565b9392505050565b61081d816104ea565b811461082857600080fd5b50565b60008151905061083a81610814565b92915050565b600060208284031215610856576108556103f4565b5b60006108648482850161082b565b9150509291505056fea26469706673582212206f6db4dc042fc4eaca06d4238c9299b8be1e6edab7e96c000b3cf4a368d96aa664736f6c63430008140033";
142
+ "0x608060405234801561001057600080fd5b506105dc806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632a308b3a146100515780633ead9adb146100775780634a0092111461008a578063ce4ec16a146100ad575b600080fd5b61006461005f3660046104a1565b6100c0565b6040519081526020015b60405180910390f35b6100646100853660046104e4565b610184565b61009d610098366004610538565b610253565b604051901515815260200161006e565b61009d6100bb3660046104a1565b6102f0565b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb846100e8856103ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015610158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c919061056b565b949350505050565b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd85856101ad866103ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024a919061056b565b95945050505050565b6040517f8269bcc300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009190841690638269bcc3906024016020604051808303816000875af11580156102c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e99190610584565b9392505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663095ea7b384610318856103ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015610388573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c9190610584565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a919061056b565b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461048457600080fd5b919050565b803567ffffffffffffffff8116811461048457600080fd5b6000806000606084860312156104b657600080fd5b6104bf84610460565b92506104cd60208501610460565b91506104db60408501610489565b90509250925092565b600080600080608085870312156104fa57600080fd5b61050385610460565b935061051160208601610460565b925061051f60408601610460565b915061052d60608601610489565b905092959194509250565b6000806040838503121561054b57600080fd5b61055483610460565b915061056260208401610460565b90509250929050565b60006020828403121561057d57600080fd5b5051919050565b60006020828403121561059657600080fd5b815180151581146102e957600080fdfea264697066735822122096f31ebbd9897a653cafedbdd2b6a305194df238ffdca7956d2a08fd06cef5f764736f6c63430008130033";
143
143
 
144
144
  type PrivateERC20WalletMockConstructorParams =
145
145
  | [signer?: Signer]
@@ -27,7 +27,13 @@ const _abi = [
27
27
  {
28
28
  indexed: false,
29
29
  internalType: "bytes",
30
- name: "userKey",
30
+ name: "userKey1",
31
+ type: "bytes",
32
+ },
33
+ {
34
+ indexed: false,
35
+ internalType: "bytes",
36
+ name: "userKey2",
31
37
  type: "bytes",
32
38
  },
33
39
  ],
@@ -55,7 +61,7 @@ const _abi = [
55
61
  ] as const;
56
62
 
57
63
  const _bytecode =
58
- "0x608060405234801561001057600080fd5b506106e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063afaea1bd14610030575b600080fd5b61004a60048036038101906100459190610329565b61004c565b005b600061005a858585856100b1565b90503373ffffffffffffffffffffffffffffffffffffffff167fb67504ecfeef0230a06f661ea388c2947b4125a35e918ebff5889e3553c29c04826040516100a2919061043a565b60405180910390a25050505050565b6060600085859050848490506100c79190610495565b67ffffffffffffffff8111156100e0576100df6104c9565b5b6040519080825280601f01601f1916602001820160405280156101125781602001600182028036833780820191505090505b50905060005b8484905081101561019557848482818110610136576101356104f8565b5b9050013560f81c60f81b828281518110610153576101526104f8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061018d90610527565b915050610118565b5060005b86869050811015610224578686828181106101b7576101b66104f8565b5b9050013560f81c60f81b8282878790506101d19190610495565b815181106101e2576101e16104f8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061021c90610527565b915050610199565b50606473ffffffffffffffffffffffffffffffffffffffff1663a85f0ca2826040518263ffffffff1660e01b815260040161025f919061043a565b600060405180830381865afa15801561027c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906102a59190610661565b915050949350505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126102e9576102e86102c4565b5b8235905067ffffffffffffffff811115610306576103056102c9565b5b602083019150836001820283011115610322576103216102ce565b5b9250929050565b60008060008060408587031215610343576103426102ba565b5b600085013567ffffffffffffffff811115610361576103606102bf565b5b61036d878288016102d3565b9450945050602085013567ffffffffffffffff8111156103905761038f6102bf565b5b61039c878288016102d3565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156103e45780820151818401526020810190506103c9565b60008484015250505050565b6000601f19601f8301169050919050565b600061040c826103aa565b61041681856103b5565b93506104268185602086016103c6565b61042f816103f0565b840191505092915050565b600060208201905081810360008301526104548184610401565b905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006104a08261045c565b91506104ab8361045c565b92508282019050808211156104c3576104c2610466565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006105328261045c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361056457610563610466565b5b600182019050919050565b600080fd5b61057d826103f0565b810181811067ffffffffffffffff8211171561059c5761059b6104c9565b5b80604052505050565b60006105af6102b0565b90506105bb8282610574565b919050565b600067ffffffffffffffff8211156105db576105da6104c9565b5b6105e4826103f0565b9050602081019050919050565b60006106046105ff846105c0565b6105a5565b9050828152602081018484840111156106205761061f61056f565b5b61062b8482856103c6565b509392505050565b600082601f830112610648576106476102c4565b5b81516106588482602086016105f1565b91505092915050565b600060208284031215610677576106766102ba565b5b600082015167ffffffffffffffff811115610695576106946102bf565b5b6106a184828501610633565b9150509291505056fea26469706673582212206115018057d6bc465801c86cb2b275e2e4d8f98d3885f29b598391fc2f76be4864736f6c63430008140033";
64
+ "0x608060405234801561001057600080fd5b50610771806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063afaea1bd14610030575b600080fd5b61004361003e366004610470565b610045565b005b600080610054868686866100b0565b915091503373ffffffffffffffffffffffffffffffffffffffff167ffc83efa19b7c2bc399a672494bb0af52f9bbd678357edf30e55b5ac4e65878ba83836040516100a092919061054a565b60405180910390a2505050505050565b60608060006100bf86856105a7565b67ffffffffffffffff8111156100d7576100d76105c0565b6040519080825280601f01601f191660200182016040528015610101576020820181803683370190505b50905060005b8481101561017e57858582818110610121576101216105ef565b9050013560f81c60f81b82828151811061013d5761013d6105ef565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806101768161061e565b915050610107565b5060005b868110156102205787878281811061019c5761019c6105ef565b909101357fff00000000000000000000000000000000000000000000000000000000000000169050826101cf83886105a7565b815181106101df576101df6105ef565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806102188161061e565b915050610182565b506040517fa85f0ca200000000000000000000000000000000000000000000000000000000815260009060649063a85f0ca290610261908590600401610656565b6000604051808303816000875af1158015610280573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102c69190810190610670565b604080516101008082526101208201909252919250600091906020820181803683375050604080516101008082526101208201909252929350600092915060208201818036833701905050905060005b825181101561038f57838181518110610331576103316105ef565b602001015160f81c60f81b83828151811061034e5761034e6105ef565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806103878161061e565b915050610316565b5060005b815181101561041757836103a9610100836105a7565b815181106103b9576103b96105ef565b602001015160f81c60f81b8282815181106103d6576103d66105ef565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061040f8161061e565b915050610393565b5090999098509650505050505050565b60008083601f84011261043957600080fd5b50813567ffffffffffffffff81111561045157600080fd5b60208301915083602082850101111561046957600080fd5b9250929050565b6000806000806040858703121561048657600080fd5b843567ffffffffffffffff8082111561049e57600080fd5b6104aa88838901610427565b909650945060208701359150808211156104c357600080fd5b506104d087828801610427565b95989497509550505050565b60005b838110156104f75781810151838201526020016104df565b50506000910152565b600081518084526105188160208601602086016104dc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152600061055d6040830185610500565b828103602084015261056f8185610500565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105ba576105ba610578565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361064f5761064f610578565b5060010190565b6020815260006106696020830184610500565b9392505050565b60006020828403121561068257600080fd5b815167ffffffffffffffff8082111561069a57600080fd5b818401915084601f8301126106ae57600080fd5b8151818111156106c0576106c06105c0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610706576107066105c0565b8160405282815287602084870101111561071f57600080fd5b6107308360208301602088016104dc565b97965050505050505056fea2646970667358221220f8025941570d10e94a7fb76e7a3c5c6f85322f12979faa47e59b2affb5944d9a64736f6c63430008130033";
59
65
 
60
66
  type AccountOnboardConstructorParams =
61
67
  | [signer?: Signer]