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