@coti-io/coti-contracts 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +6 -6
  2. package/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol +309 -0
  3. package/contracts/utils/mpc/MpcCore.sol +527 -18
  4. package/contracts/utils/mpc/MpcInterface.sol +1 -2
  5. package/package.json +1 -1
  6. package/test/utils/mpc/CheckedArithmetic.test.ts +41 -0
  7. package/typechain-types/contracts/mocks/utils/mpc/{ArithmeticTestsContract.sol → ArithmeticWithOverflowBitTestsContract.sol}/ArithmeticTestsContract.ts +52 -43
  8. package/typechain-types/contracts/mocks/utils/mpc/{ArithmeticTestsContract.sol → ArithmeticWithOverflowBitTestsContract.sol}/index.ts +0 -1
  9. package/typechain-types/contracts/mocks/utils/mpc/{ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract.ts → CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract.ts} +73 -60
  10. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/index.ts +4 -0
  11. package/typechain-types/contracts/mocks/utils/mpc/index.ts +4 -0
  12. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +43 -18
  13. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  14. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  15. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  16. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticWithOverflowBitTestsContract.sol/ArithmeticTestsContract__factory.ts +387 -0
  17. package/typechain-types/factories/contracts/mocks/utils/mpc/{ArithmeticTestsContract.sol → ArithmeticWithOverflowBitTestsContract.sol}/index.ts +0 -1
  18. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  19. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +397 -0
  20. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/index.ts +4 -0
  21. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  22. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  23. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  24. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  25. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  26. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  27. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  28. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  29. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  30. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  31. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  32. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  33. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  34. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  35. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  36. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  37. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +2 -0
  38. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  39. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  40. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  41. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +44 -19
  42. package/typechain-types/hardhat.d.ts +36 -0
  43. package/typechain-types/index.ts +2 -0
  44. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts +0 -69
  45. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts +0 -69
  46. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts +0 -69
  47. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +0 -6
  48. package/typechain-types/contracts/GasTest.ts +0 -91
  49. package/typechain-types/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract.ts +0 -340
  50. package/typechain-types/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/index.ts +0 -4
  51. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous2TestsContract.ts +0 -384
  52. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract.ts +0 -221
  53. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/index.ts +0 -4
  54. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract.ts +0 -251
  55. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract.ts +0 -250
  56. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +0 -5
  57. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.ts +0 -389
  58. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract.ts +0 -391
  59. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract.ts +0 -391
  60. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +0 -5
  61. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract.ts +0 -125
  62. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract.ts +0 -125
  63. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +0 -5
  64. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts +0 -127
  65. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts +0 -111
  66. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts +0 -128
  67. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +0 -6
  68. package/typechain-types/factories/contracts/GasTest__factory.ts +0 -75
  69. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/ArithmeticTestsContract__factory.ts +0 -387
  70. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract__factory.ts +0 -388
  71. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract__factory.ts +0 -361
  72. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/index.ts +0 -4
  73. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous2TestsContract__factory.ts +0 -432
  74. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract__factory.ts +0 -261
  75. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/index.ts +0 -4
  76. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract__factory.ts +0 -294
  77. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +0 -292
  78. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +0 -5
  79. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract__factory.ts +0 -720
  80. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract__factory.ts +0 -724
  81. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract__factory.ts +0 -724
  82. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +0 -5
  83. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract__factory.ts +0 -150
  84. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +0 -150
  85. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +0 -5
@@ -1,388 +0,0 @@
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
- PrecompilesArythmeticTestsContract,
14
- PrecompilesArythmeticTestsContractInterface,
15
- } from "../../../../../../contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract";
16
-
17
- const _abi = [
18
- {
19
- inputs: [
20
- {
21
- internalType: "uint8",
22
- name: "a",
23
- type: "uint8",
24
- },
25
- {
26
- internalType: "uint8",
27
- name: "b",
28
- type: "uint8",
29
- },
30
- ],
31
- name: "addTest",
32
- outputs: [
33
- {
34
- internalType: "uint8",
35
- name: "",
36
- type: "uint8",
37
- },
38
- ],
39
- stateMutability: "nonpayable",
40
- type: "function",
41
- },
42
- {
43
- inputs: [
44
- {
45
- components: [
46
- {
47
- internalType: "gtUint16",
48
- name: "res16_16",
49
- type: "uint256",
50
- },
51
- {
52
- internalType: "gtUint16",
53
- name: "res8_16",
54
- type: "uint256",
55
- },
56
- {
57
- internalType: "gtUint16",
58
- name: "res16_8",
59
- type: "uint256",
60
- },
61
- ],
62
- internalType: "struct PrecompilesArythmeticTestsContract.Check16",
63
- name: "check16",
64
- type: "tuple",
65
- },
66
- ],
67
- name: "decryptAndCompareResults16",
68
- outputs: [
69
- {
70
- internalType: "uint16",
71
- name: "",
72
- type: "uint16",
73
- },
74
- ],
75
- stateMutability: "nonpayable",
76
- type: "function",
77
- },
78
- {
79
- inputs: [
80
- {
81
- components: [
82
- {
83
- internalType: "gtUint32",
84
- name: "res32_32",
85
- type: "uint256",
86
- },
87
- {
88
- internalType: "gtUint32",
89
- name: "res8_32",
90
- type: "uint256",
91
- },
92
- {
93
- internalType: "gtUint32",
94
- name: "res32_8",
95
- type: "uint256",
96
- },
97
- {
98
- internalType: "gtUint32",
99
- name: "res16_32",
100
- type: "uint256",
101
- },
102
- {
103
- internalType: "gtUint32",
104
- name: "res32_16",
105
- type: "uint256",
106
- },
107
- ],
108
- internalType: "struct PrecompilesArythmeticTestsContract.Check32",
109
- name: "check32",
110
- type: "tuple",
111
- },
112
- ],
113
- name: "decryptAndCompareResults32",
114
- outputs: [
115
- {
116
- internalType: "uint32",
117
- name: "",
118
- type: "uint32",
119
- },
120
- ],
121
- stateMutability: "nonpayable",
122
- type: "function",
123
- },
124
- {
125
- inputs: [
126
- {
127
- components: [
128
- {
129
- internalType: "gtUint64",
130
- name: "res64_64",
131
- type: "uint256",
132
- },
133
- {
134
- internalType: "gtUint64",
135
- name: "res8_64",
136
- type: "uint256",
137
- },
138
- {
139
- internalType: "gtUint64",
140
- name: "res64_8",
141
- type: "uint256",
142
- },
143
- {
144
- internalType: "gtUint64",
145
- name: "res16_64",
146
- type: "uint256",
147
- },
148
- {
149
- internalType: "gtUint64",
150
- name: "res64_16",
151
- type: "uint256",
152
- },
153
- {
154
- internalType: "gtUint64",
155
- name: "res32_64",
156
- type: "uint256",
157
- },
158
- {
159
- internalType: "gtUint64",
160
- name: "res64_32",
161
- type: "uint256",
162
- },
163
- ],
164
- internalType: "struct PrecompilesArythmeticTestsContract.Check64",
165
- name: "check64",
166
- type: "tuple",
167
- },
168
- ],
169
- name: "decryptAndCompareResults64",
170
- outputs: [
171
- {
172
- internalType: "uint64",
173
- name: "",
174
- type: "uint64",
175
- },
176
- ],
177
- stateMutability: "nonpayable",
178
- type: "function",
179
- },
180
- {
181
- inputs: [],
182
- name: "getAddResult",
183
- outputs: [
184
- {
185
- internalType: "uint8",
186
- name: "",
187
- type: "uint8",
188
- },
189
- ],
190
- stateMutability: "view",
191
- type: "function",
192
- },
193
- {
194
- inputs: [],
195
- name: "getMulResult",
196
- outputs: [
197
- {
198
- internalType: "uint8",
199
- name: "",
200
- type: "uint8",
201
- },
202
- ],
203
- stateMutability: "view",
204
- type: "function",
205
- },
206
- {
207
- inputs: [],
208
- name: "getSubResult",
209
- outputs: [
210
- {
211
- internalType: "uint8",
212
- name: "",
213
- type: "uint8",
214
- },
215
- ],
216
- stateMutability: "view",
217
- type: "function",
218
- },
219
- {
220
- inputs: [
221
- {
222
- internalType: "uint8",
223
- name: "a",
224
- type: "uint8",
225
- },
226
- {
227
- internalType: "uint8",
228
- name: "b",
229
- type: "uint8",
230
- },
231
- ],
232
- name: "mulTest",
233
- outputs: [
234
- {
235
- internalType: "uint8",
236
- name: "",
237
- type: "uint8",
238
- },
239
- ],
240
- stateMutability: "nonpayable",
241
- type: "function",
242
- },
243
- {
244
- inputs: [
245
- {
246
- components: [
247
- {
248
- internalType: "gtUint8",
249
- name: "a8_s",
250
- type: "uint256",
251
- },
252
- {
253
- internalType: "gtUint8",
254
- name: "b8_s",
255
- type: "uint256",
256
- },
257
- {
258
- internalType: "gtUint16",
259
- name: "a16_s",
260
- type: "uint256",
261
- },
262
- {
263
- internalType: "gtUint16",
264
- name: "b16_s",
265
- type: "uint256",
266
- },
267
- {
268
- internalType: "gtUint32",
269
- name: "a32_s",
270
- type: "uint256",
271
- },
272
- {
273
- internalType: "gtUint32",
274
- name: "b32_s",
275
- type: "uint256",
276
- },
277
- {
278
- internalType: "gtUint64",
279
- name: "a64_s",
280
- type: "uint256",
281
- },
282
- {
283
- internalType: "gtUint64",
284
- name: "b64_s",
285
- type: "uint256",
286
- },
287
- ],
288
- internalType:
289
- "struct PrecompilesArythmeticTestsContract.AllGTCastingValues",
290
- name: "castingValues",
291
- type: "tuple",
292
- },
293
- {
294
- internalType: "uint8",
295
- name: "a",
296
- type: "uint8",
297
- },
298
- {
299
- internalType: "uint8",
300
- name: "b",
301
- type: "uint8",
302
- },
303
- ],
304
- name: "setPublicValues",
305
- outputs: [],
306
- stateMutability: "nonpayable",
307
- type: "function",
308
- },
309
- {
310
- inputs: [
311
- {
312
- internalType: "uint8",
313
- name: "a",
314
- type: "uint8",
315
- },
316
- {
317
- internalType: "uint8",
318
- name: "b",
319
- type: "uint8",
320
- },
321
- ],
322
- name: "subTest",
323
- outputs: [
324
- {
325
- internalType: "uint8",
326
- name: "",
327
- type: "uint8",
328
- },
329
- ],
330
- stateMutability: "nonpayable",
331
- type: "function",
332
- },
333
- ] as const;
334
-
335
- const _bytecode =
336
- "0x608060405234801561001057600080fd5b50615ad580620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806380f937bc1161006657806380f937bc14610181578063971bbe6f146101b1578063acb38169146101cf578063d3e4744d146101ff578063ebb571fd1461021d5761009e565b8063202cdc8f146100a357806324ad7b30146100d35780632e544aa0146100f15780634f5941bc146101215780635e60e5c014610151575b600080fd5b6100bd60048036038101906100b89190614815565b610239565b6040516100ca9190614864565b60405180910390f35b6100db610831565b6040516100e89190614864565b60405180910390f35b61010b600480360381019061010691906149aa565b610847565b60405161011891906149f4565b60405180910390f35b61013b60048036038101906101369190614815565b6108d7565b6040516101489190614864565b60405180910390f35b61016b60048036038101906101669190614815565b610e21565b6040516101789190614864565b60405180910390f35b61019b60048036038101906101969190614aef565b61136a565b6040516101a89190614b3f565b60405180910390f35b6101b96114be565b6040516101c69190614864565b60405180910390f35b6101e960048036038101906101e49190614c12565b6114d4565b6040516101f69190614c5e565b60405180910390f35b6102076115b2565b6040516102149190614864565b60405180910390f35b61023760048036038101906102329190614d6f565b6115c8565b005b60006102436146fb565b61024b614740565b610253614761565b61025b614790565b6102668488886115c8565b61028061027b8560000151866020015161166f565b611706565b600060026101000a81548160ff021916908360ff1602179055506102ac846040015185606001516117a4565b8360000181815250506102c78460000151856060015161183b565b8360200181815250506102e2846040015185602001516118d3565b83604001818152505060006102f684610847565b90508061ffff16600060029054906101000a900460ff1660ff1614610350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034790614e22565b60405180910390fd5b61036285608001518660a0015161196b565b83600001818152505061037d85600001518660a00151611a02565b83602001818152505061039885608001518660200151611a9a565b8360400181815250506103b385604001518660a00151611b32565b8360600181815250506103ce85608001518660600151611bca565b83608001818152505060006103e2846114d4565b90508063ffffffff16600060029054906101000a900460ff1660ff161461043e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043590614e8e565b60405180910390fd5b6104508660c001518760e00151611c62565b83600001818152505061046b86600001518760e00151611cf9565b8360200181815250506104868660c001518760200151611d91565b8360400181815250506104a186604001518760e00151611e29565b8360600181815250506104bc8660c001518760600151611ec1565b8360800181815250506104d786608001518760e00151611f59565b8360a00181815250506104f28660c001518760a00151611ff1565b8360c001818152505060006105068461136a565b90508067ffffffffffffffff16600060029054906101000a900460ff1660ff1614610566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055d90614efa565b60405180910390fd5b61057c6105778b8960200151612089565b611706565b60ff16600060029054906101000a900460ff1660ff161480156105c857506105b06105ab88600001518b612123565b611706565b60ff16600060029054906101000a900460ff1660ff16145b610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90614f8c565b60405180910390fd5b61062061061b8b60ff1689606001516121bd565b612258565b61ffff16600060029054906101000a900460ff1660ff16148015610671575061065861065388604001518b60ff166122f6565b612258565b61ffff16600060029054906101000a900460ff1660ff16145b6106b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a79061501e565b60405180910390fd5b6106c96106c48b60ff168960a00151612391565b61242e565b63ffffffff16600060029054906101000a900460ff1660ff1614801561071e57506107036106fe88608001518b60ff166124cc565b61242e565b63ffffffff16600060029054906101000a900460ff1660ff16145b61075d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610754906150b0565b60405180910390fd5b6107766107718b60ff168960e00151612569565b61260a565b67ffffffffffffffff16600060029054906101000a900460ff1660ff161480156107d357506107b46107af8860c001518b60ff166126a7565b61260a565b67ffffffffffffffff16600060029054906101000a900460ff1660ff16145b610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080990615142565b60405180910390fd5b600060029054906101000a900460ff1697505050505050505092915050565b60008060009054906101000a900460ff16905090565b6000806108578360000151612258565b90506108668360200151612258565b61ffff168161ffff1614801561088f57506108848360400151612258565b61ffff168161ffff16145b6108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c5906151fa565b60405180910390fd5b80915050919050565b60006108e16146fb565b6108e9614740565b6108f1614761565b6108f9614790565b6109048488886115c8565b600061092061091b86600001518760200151612748565b611706565b905080600060016101000a81548160ff021916908360ff16021790555061094f856040015186606001516127df565b84600001818152505061096a85600001518660600151612876565b8460200181815250506109858560400151866020015161290e565b846040018181525050600061099985610847565b90508160ff168161ffff16146109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db90615266565b60405180910390fd5b6109f686608001518760a001516129a6565b846000018181525050610a1186600001518760a00151612a3d565b846020018181525050610a2c86608001518760200151612ad5565b846040018181525050610a4786604001518760a00151612b6d565b846060018181525050610a6286608001518760600151612c05565b8460800181815250506000610a76856114d4565b90508063ffffffff168360ff1614610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba906152d2565b60405180910390fd5b610ad58760c001518860e00151612c9d565b846000018181525050610af087600001518860e00151612d34565b846020018181525050610b0b8760c001518860200151612dcc565b846040018181525050610b2687604001518860e00151612e64565b846060018181525050610b418760c001518860600151612efc565b846080018181525050610b5c87608001518860e00151612f94565b8460a0018181525050610b778760c001518860a0015161302c565b8460c00181815250506000610b8b8561136a565b90508067ffffffffffffffff168460ff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd39061533e565b60405180910390fd5b610bf2610bed8c8a602001516130c4565b611706565b60ff168460ff16148015610c205750610c17610c1289600001518c61315e565b611706565b60ff168460ff16145b610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c56906153d0565b60405180910390fd5b610c78610c738c60ff168a606001516131f8565b612258565b61ffff168460ff16148015610cab5750610ca1610c9c89604001518c60ff16613293565b612258565b61ffff168460ff16145b610cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce190615462565b60405180910390fd5b610d03610cfe8c60ff168a60a0015161332e565b61242e565b63ffffffff168460ff16148015610d3a5750610d2e610d2989608001518c60ff166133cb565b61242e565b63ffffffff168460ff16145b610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d70906154f4565b60405180910390fd5b610d92610d8d8c60ff168a60e00151613468565b61260a565b67ffffffffffffffff168460ff16148015610dd15750610dc1610dbc8960c001518c60ff16613509565b61260a565b67ffffffffffffffff168460ff16145b610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790615586565b60405180910390fd5b839850505050505050505092915050565b6000610e2b6146fb565b610e33614740565b610e3b614761565b610e43614790565b610e4e8488886115c8565b6000610e6a610e65866000015187602001516135aa565b611706565b9050806000806101000a81548160ff021916908360ff160217905550610e9885604001518660600151613641565b846000018181525050610eb3856000015186606001516136d8565b846020018181525050610ece85604001518660200151613770565b8460400181815250506000610ee285610847565b90508160ff168161ffff1614610f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f24906155f2565b60405180910390fd5b610f3f86608001518760a00151613808565b846000018181525050610f5a86600001518760a0015161389f565b846020018181525050610f7586608001518760200151613937565b846040018181525050610f9086604001518760a001516139cf565b846060018181525050610fab86608001518760600151613a67565b8460800181815250506000610fbf856114d4565b90508063ffffffff168360ff161461100c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110039061565e565b60405180910390fd5b61101e8760c001518860e00151613aff565b84600001818152505061103987600001518860e00151613b96565b8460200181815250506110548760c001518860200151613c2e565b84604001818152505061106f87604001518860e00151613cc6565b84606001818152505061108a8760c001518860600151613d5e565b8460800181815250506110a587608001518860e00151613df6565b8460a00181815250506110c08760c001518860a00151613e8e565b8460c001818152505060006110d48561136a565b90508067ffffffffffffffff168460ff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c906156ca565b60405180910390fd5b61113b6111368c8a60200151613f26565b611706565b60ff168460ff16148015611169575061116061115b89600001518c613fc0565b611706565b60ff168460ff16145b6111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f9061575c565b60405180910390fd5b6111c16111bc8c60ff168a6060015161405a565b612258565b61ffff168460ff161480156111f457506111ea6111e589604001518c60ff166140f5565b612258565b61ffff168460ff16145b611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a906157ee565b60405180910390fd5b61124c6112478c60ff168a60a00151614190565b61242e565b63ffffffff168460ff16148015611283575061127761127289608001518c60ff1661422d565b61242e565b63ffffffff168460ff16145b6112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b990615880565b60405180910390fd5b6112db6112d68c60ff168a60e001516142ca565b61260a565b67ffffffffffffffff168460ff1614801561131a575061130a6113058960c001518c60ff1661436b565b61260a565b67ffffffffffffffff168460ff16145b611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090615912565b60405180910390fd5b839850505050505050505092915050565b60008061137a836000015161260a565b9050611389836020015161260a565b67ffffffffffffffff168167ffffffffffffffff161480156113ca57506113b3836040015161260a565b67ffffffffffffffff168167ffffffffffffffff16145b80156113f557506113de836080015161260a565b67ffffffffffffffff168167ffffffffffffffff16145b80156114205750611409836060015161260a565b67ffffffffffffffff168167ffffffffffffffff16145b801561144b57506114348360c0015161260a565b67ffffffffffffffff168167ffffffffffffffff16145b8015611476575061145f8360a0015161260a565b67ffffffffffffffff168167ffffffffffffffff16145b6114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906151fa565b60405180910390fd5b80915050919050565b60008060019054906101000a900460ff16905090565b6000806114e4836000015161242e565b90506114f3836020015161242e565b63ffffffff168163ffffffff161480156115245750611515836040015161242e565b63ffffffff168163ffffffff16145b80156115475750611538836080015161242e565b63ffffffff168163ffffffff16145b801561156a575061155b836060015161242e565b63ffffffff168163ffffffff16145b6115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a0906151fa565b60405180910390fd5b80915050919050565b60008060029054906101000a900460ff16905090565b6115d18261440c565b8360000181815250506115e38161440c565b8360200181815250506115f88260ff166144ad565b83604001818152505061160d8160ff166144ad565b8360600181815250506116228260ff1661454f565b8360800181815250506116378160ff1661454f565b8360a001818152505061164c8260ff166145f3565b8360c00181815250506116618160ff166145f3565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461169b600180600061469a565b85856040518463ffffffff1660e01b81526004016116bb9392919061597c565b6020604051808303816000875af11580156116da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fe91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616001600481111561173957611738615a0c565b5b60f81b846040518363ffffffff1660e01b815260040161175a929190615a76565b6020604051808303816000875af1158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d91906159df565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46117d0600280600061469a565b85856040518463ffffffff1660e01b81526004016117f09392919061597c565b6020604051808303816000875af115801561180f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183391906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461186860016002600061469a565b85856040518463ffffffff1660e01b81526004016118889392919061597c565b6020604051808303816000875af11580156118a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cb91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461190060026001600061469a565b85856040518463ffffffff1660e01b81526004016119209392919061597c565b6020604051808303816000875af115801561193f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196391906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611997600380600061469a565b85856040518463ffffffff1660e01b81526004016119b79392919061597c565b6020604051808303816000875af11580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611a2f60016003600061469a565b85856040518463ffffffff1660e01b8152600401611a4f9392919061597c565b6020604051808303816000875af1158015611a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9291906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611ac760036001600061469a565b85856040518463ffffffff1660e01b8152600401611ae79392919061597c565b6020604051808303816000875af1158015611b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2a91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611b5f60026003600061469a565b85856040518463ffffffff1660e01b8152600401611b7f9392919061597c565b6020604051808303816000875af1158015611b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc291906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611bf760036002600061469a565b85856040518463ffffffff1660e01b8152600401611c179392919061597c565b6020604051808303816000875af1158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611c8e600480600061469a565b85856040518463ffffffff1660e01b8152600401611cae9392919061597c565b6020604051808303816000875af1158015611ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf191906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611d2660016004600061469a565b85856040518463ffffffff1660e01b8152600401611d469392919061597c565b6020604051808303816000875af1158015611d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8991906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611dbe60046001600061469a565b85856040518463ffffffff1660e01b8152600401611dde9392919061597c565b6020604051808303816000875af1158015611dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2191906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611e5660026004600061469a565b85856040518463ffffffff1660e01b8152600401611e769392919061597c565b6020604051808303816000875af1158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb991906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611eee60046002600061469a565b85856040518463ffffffff1660e01b8152600401611f0e9392919061597c565b6020604051808303816000875af1158015611f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5191906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611f8660036004600061469a565b85856040518463ffffffff1660e01b8152600401611fa69392919061597c565b6020604051808303816000875af1158015611fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe991906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461201e60046003600061469a565b85856040518463ffffffff1660e01b815260040161203e9392919061597c565b6020604051808303816000875af115801561205d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208191906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46120b5600180600161469a565b8560ff16856040518463ffffffff1660e01b81526004016120d89392919061597c565b6020604051808303816000875af11580156120f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211b91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461214f600180600261469a565b858560ff166040518463ffffffff1660e01b81526004016121729392919061597c565b6020604051808303816000875af1158015612191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b591906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46121e9600280600161469a565b8561ffff16856040518463ffffffff1660e01b815260040161220d9392919061597c565b6020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616002600481111561228b5761228a615a0c565b5b60f81b846040518363ffffffff1660e01b81526004016122ac929190615a76565b6020604051808303816000875af11580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef91906159df565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4612322600280600261469a565b858561ffff166040518463ffffffff1660e01b81526004016123469392919061597c565b6020604051808303816000875af1158015612365573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238991906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46123bd600380600161469a565b8563ffffffff16856040518463ffffffff1660e01b81526004016123e39392919061597c565b6020604051808303816000875af1158015612402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242691906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616003600481111561246157612460615a0c565b5b60f81b846040518363ffffffff1660e01b8152600401612482929190615a76565b6020604051808303816000875af11580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c591906159df565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46124f8600380600261469a565b858563ffffffff166040518463ffffffff1660e01b815260040161251e9392919061597c565b6020604051808303816000875af115801561253d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256191906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4612595600480600161469a565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016125bf9392919061597c565b6020604051808303816000875af11580156125de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260291906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160048081111561263c5761263b615a0c565b5b60f81b846040518363ffffffff1660e01b815260040161265d929190615a76565b6020604051808303816000875af115801561267c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a091906159df565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46126d3600480600261469a565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016126fd9392919061597c565b6020604051808303816000875af115801561271c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274091906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612774600180600061469a565b85856040518463ffffffff1660e01b81526004016127949392919061597c565b6020604051808303816000875af11580156127b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d791906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261280b600280600061469a565b85856040518463ffffffff1660e01b815260040161282b9392919061597c565b6020604051808303816000875af115801561284a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286e91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26128a360016002600061469a565b85856040518463ffffffff1660e01b81526004016128c39392919061597c565b6020604051808303816000875af11580156128e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290691906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261293b60026001600061469a565b85856040518463ffffffff1660e01b815260040161295b9392919061597c565b6020604051808303816000875af115801561297a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299e91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26129d2600380600061469a565b85856040518463ffffffff1660e01b81526004016129f29392919061597c565b6020604051808303816000875af1158015612a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3591906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612a6a60016003600061469a565b85856040518463ffffffff1660e01b8152600401612a8a9392919061597c565b6020604051808303816000875af1158015612aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612acd91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612b0260036001600061469a565b85856040518463ffffffff1660e01b8152600401612b229392919061597c565b6020604051808303816000875af1158015612b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6591906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612b9a60026003600061469a565b85856040518463ffffffff1660e01b8152600401612bba9392919061597c565b6020604051808303816000875af1158015612bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfd91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612c3260036002600061469a565b85856040518463ffffffff1660e01b8152600401612c529392919061597c565b6020604051808303816000875af1158015612c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9591906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612cc9600480600061469a565b85856040518463ffffffff1660e01b8152600401612ce99392919061597c565b6020604051808303816000875af1158015612d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2c91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612d6160016004600061469a565b85856040518463ffffffff1660e01b8152600401612d819392919061597c565b6020604051808303816000875af1158015612da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc491906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612df960046001600061469a565b85856040518463ffffffff1660e01b8152600401612e199392919061597c565b6020604051808303816000875af1158015612e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5c91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612e9160026004600061469a565b85856040518463ffffffff1660e01b8152600401612eb19392919061597c565b6020604051808303816000875af1158015612ed0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef491906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612f2960046002600061469a565b85856040518463ffffffff1660e01b8152600401612f499392919061597c565b6020604051808303816000875af1158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612fc160036004600061469a565b85856040518463ffffffff1660e01b8152600401612fe19392919061597c565b6020604051808303816000875af1158015613000573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302491906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261305960046003600061469a565b85856040518463ffffffff1660e01b81526004016130799392919061597c565b6020604051808303816000875af1158015613098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130bc91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26130f0600180600161469a565b8560ff16856040518463ffffffff1660e01b81526004016131139392919061597c565b6020604051808303816000875af1158015613132573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315691906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261318a600180600261469a565b858560ff166040518463ffffffff1660e01b81526004016131ad9392919061597c565b6020604051808303816000875af11580156131cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f091906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2613224600280600161469a565b8561ffff16856040518463ffffffff1660e01b81526004016132489392919061597c565b6020604051808303816000875af1158015613267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328b91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26132bf600180600261469a565b858561ffff166040518463ffffffff1660e01b81526004016132e39392919061597c565b6020604051808303816000875af1158015613302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332691906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261335a600380600161469a565b8563ffffffff16856040518463ffffffff1660e01b81526004016133809392919061597c565b6020604051808303816000875af115801561339f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c391906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26133f7600380600261469a565b858563ffffffff166040518463ffffffff1660e01b815260040161341d9392919061597c565b6020604051808303816000875af115801561343c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061346091906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2613494600480600161469a565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016134be9392919061597c565b6020604051808303816000875af11580156134dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350191906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2613535600480600261469a565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161355f9392919061597c565b6020604051808303816000875af115801561357e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a291906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506135d6600180600061469a565b85856040518463ffffffff1660e01b81526004016135f69392919061597c565b6020604051808303816000875af1158015613615573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363991906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061366d600280600061469a565b85856040518463ffffffff1660e01b815260040161368d9392919061597c565b6020604051808303816000875af11580156136ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d091906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061370560016002600061469a565b85856040518463ffffffff1660e01b81526004016137259392919061597c565b6020604051808303816000875af1158015613744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376891906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061379d60026001600061469a565b85856040518463ffffffff1660e01b81526004016137bd9392919061597c565b6020604051808303816000875af11580156137dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380091906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613834600380600061469a565b85856040518463ffffffff1660e01b81526004016138549392919061597c565b6020604051808303816000875af1158015613873573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389791906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506138cc60016003600061469a565b85856040518463ffffffff1660e01b81526004016138ec9392919061597c565b6020604051808303816000875af115801561390b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061392f91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061396460036001600061469a565b85856040518463ffffffff1660e01b81526004016139849392919061597c565b6020604051808303816000875af11580156139a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c791906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506139fc60026003600061469a565b85856040518463ffffffff1660e01b8152600401613a1c9392919061597c565b6020604051808303816000875af1158015613a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5f91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613a9460036002600061469a565b85856040518463ffffffff1660e01b8152600401613ab49392919061597c565b6020604051808303816000875af1158015613ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af791906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613b2b600480600061469a565b85856040518463ffffffff1660e01b8152600401613b4b9392919061597c565b6020604051808303816000875af1158015613b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8e91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613bc360016004600061469a565b85856040518463ffffffff1660e01b8152600401613be39392919061597c565b6020604051808303816000875af1158015613c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2691906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613c5b60046001600061469a565b85856040518463ffffffff1660e01b8152600401613c7b9392919061597c565b6020604051808303816000875af1158015613c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cbe91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613cf360026004600061469a565b85856040518463ffffffff1660e01b8152600401613d139392919061597c565b6020604051808303816000875af1158015613d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d5691906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613d8b60046002600061469a565b85856040518463ffffffff1660e01b8152600401613dab9392919061597c565b6020604051808303816000875af1158015613dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dee91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613e2360036004600061469a565b85856040518463ffffffff1660e01b8152600401613e439392919061597c565b6020604051808303816000875af1158015613e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8691906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613ebb60046003600061469a565b85856040518463ffffffff1660e01b8152600401613edb9392919061597c565b6020604051808303816000875af1158015613efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1e91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613f52600180600161469a565b8560ff16856040518463ffffffff1660e01b8152600401613f759392919061597c565b6020604051808303816000875af1158015613f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb891906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613fec600180600261469a565b858560ff166040518463ffffffff1660e01b815260040161400f9392919061597c565b6020604051808303816000875af115801561402e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405291906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150614086600280600161469a565b8561ffff16856040518463ffffffff1660e01b81526004016140aa9392919061597c565b6020604051808303816000875af11580156140c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ed91906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150614121600280600261469a565b858561ffff166040518463ffffffff1660e01b81526004016141459392919061597c565b6020604051808303816000875af1158015614164573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418891906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506141bc600380600161469a565b8563ffffffff16856040518463ffffffff1660e01b81526004016141e29392919061597c565b6020604051808303816000875af1158015614201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061422591906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150614259600380600261469a565b858563ffffffff166040518463ffffffff1660e01b815260040161427f9392919061597c565b6020604051808303816000875af115801561429e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c291906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506142f6600480600161469a565b8567ffffffffffffffff16856040518463ffffffff1660e01b81526004016143209392919061597c565b6020604051808303816000875af115801561433f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061436391906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150614397600480600261469a565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016143c19392919061597c565b6020604051808303816000875af11580156143e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061440491906159df565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606001600481111561443f5761443e615a0c565b5b60f81b8460ff166040518363ffffffff1660e01b8152600401614463929190615a76565b6020604051808303816000875af1158015614482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a691906159df565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600260048111156144e0576144df615a0c565b5b60f81b8461ffff166040518363ffffffff1660e01b8152600401614505929190615a76565b6020604051808303816000875af1158015614524573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454891906159df565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606003600481111561458257614581615a0c565b5b60f81b8463ffffffff166040518363ffffffff1660e01b81526004016145a9929190615a76565b6020604051808303816000875af11580156145c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ec91906159df565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561462557614624615a0c565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b8152600401614650929190615a76565b6020604051808303816000875af115801561466f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061469391906159df565b9050919050565b60008160028111156146af576146ae615a0c565b5b60ff1660088460048111156146c7576146c6615a0c565b5b61ffff16901b61ffff1660108660048111156146e6576146e5615a0c565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600060ff82169050919050565b6147f2816147dc565b81146147fd57600080fd5b50565b60008135905061480f816147e9565b92915050565b6000806040838503121561482c5761482b6147d7565b5b600061483a85828601614800565b925050602061484b85828601614800565b9150509250929050565b61485e816147dc565b82525050565b60006020820190506148796000830184614855565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6148cd82614884565b810181811067ffffffffffffffff821117156148ec576148eb614895565b5b80604052505050565b60006148ff6147cd565b905061490b82826148c4565b919050565b6000819050919050565b61492381614910565b811461492e57600080fd5b50565b6000813590506149408161491a565b92915050565b60006060828403121561495c5761495b61487f565b5b61496660606148f5565b9050600061497684828501614931565b600083015250602061498a84828501614931565b602083015250604061499e84828501614931565b60408301525092915050565b6000606082840312156149c0576149bf6147d7565b5b60006149ce84828501614946565b91505092915050565b600061ffff82169050919050565b6149ee816149d7565b82525050565b6000602082019050614a0960008301846149e5565b92915050565b614a1881614910565b8114614a2357600080fd5b50565b600081359050614a3581614a0f565b92915050565b600060e08284031215614a5157614a5061487f565b5b614a5b60e06148f5565b90506000614a6b84828501614a26565b6000830152506020614a7f84828501614a26565b6020830152506040614a9384828501614a26565b6040830152506060614aa784828501614a26565b6060830152506080614abb84828501614a26565b60808301525060a0614acf84828501614a26565b60a08301525060c0614ae384828501614a26565b60c08301525092915050565b600060e08284031215614b0557614b046147d7565b5b6000614b1384828501614a3b565b91505092915050565b600067ffffffffffffffff82169050919050565b614b3981614b1c565b82525050565b6000602082019050614b546000830184614b30565b92915050565b614b6381614910565b8114614b6e57600080fd5b50565b600081359050614b8081614b5a565b92915050565b600060a08284031215614b9c57614b9b61487f565b5b614ba660a06148f5565b90506000614bb684828501614b71565b6000830152506020614bca84828501614b71565b6020830152506040614bde84828501614b71565b6040830152506060614bf284828501614b71565b6060830152506080614c0684828501614b71565b60808301525092915050565b600060a08284031215614c2857614c276147d7565b5b6000614c3684828501614b86565b91505092915050565b600063ffffffff82169050919050565b614c5881614c3f565b82525050565b6000602082019050614c736000830184614c4f565b92915050565b614c8281614910565b8114614c8d57600080fd5b50565b600081359050614c9f81614c79565b92915050565b60006101008284031215614cbc57614cbb61487f565b5b614cc76101006148f5565b90506000614cd784828501614c90565b6000830152506020614ceb84828501614c90565b6020830152506040614cff84828501614931565b6040830152506060614d1384828501614931565b6060830152506080614d2784828501614b71565b60808301525060a0614d3b84828501614b71565b60a08301525060c0614d4f84828501614a26565b60c08301525060e0614d6384828501614a26565b60e08301525092915050565b60008060006101408486031215614d8957614d886147d7565b5b6000614d9786828701614ca5565b935050610100614da986828701614800565b925050610120614dbb86828701614800565b9150509250925092565b600082825260208201905092915050565b7f6d756c546573743a2063617374203136206661696c6564000000000000000000600082015250565b6000614e0c601783614dc5565b9150614e1782614dd6565b602082019050919050565b60006020820190508181036000830152614e3b81614dff565b9050919050565b7f6d756c546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000614e78601783614dc5565b9150614e8382614e42565b602082019050919050565b60006020820190508181036000830152614ea781614e6b565b9050919050565b7f6d756c546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000614ee4601783614dc5565b9150614eef82614eae565b602082019050919050565b60006020820190508181036000830152614f1381614ed7565b9050919050565b7f6d756c546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000614f76602783614dc5565b9150614f8182614f1a565b604082019050919050565b60006020820190508181036000830152614fa581614f69565b9050919050565b7f6d756c546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000615008602883614dc5565b915061501382614fac565b604082019050919050565b6000602082019050818103600083015261503781614ffb565b9050919050565b7f6d756c546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b600061509a602883614dc5565b91506150a58261503e565b604082019050919050565b600060208201905081810360008301526150c98161508d565b9050919050565b7f6d756c546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b600061512c602883614dc5565b9150615137826150d0565b604082019050919050565b6000602082019050818103600083015261515b8161511f565b9050919050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b60006151e4604683614dc5565b91506151ef82615162565b606082019050919050565b60006020820190508181036000830152615213816151d7565b9050919050565b7f737562546573743a2063617374203136206661696c6564000000000000000000600082015250565b6000615250601783614dc5565b915061525b8261521a565b602082019050919050565b6000602082019050818103600083015261527f81615243565b9050919050565b7f737562546573743a2063617374203332206661696c6564000000000000000000600082015250565b60006152bc601783614dc5565b91506152c782615286565b602082019050919050565b600060208201905081810360008301526152eb816152af565b9050919050565b7f737562546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000615328601783614dc5565b9150615333826152f2565b602082019050919050565b600060208201905081810360008301526153578161531b565b9050919050565b7f737562546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006153ba602783614dc5565b91506153c58261535e565b604082019050919050565b600060208201905081810360008301526153e9816153ad565b9050919050565b7f737562546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b600061544c602883614dc5565b9150615457826153f0565b604082019050919050565b6000602082019050818103600083015261547b8161543f565b9050919050565b7f737562546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b60006154de602883614dc5565b91506154e982615482565b604082019050919050565b6000602082019050818103600083015261550d816154d1565b9050919050565b7f737562546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000615570602883614dc5565b915061557b82615514565b604082019050919050565b6000602082019050818103600083015261559f81615563565b9050919050565b7f616464546573743a2063617374203136206661696c6564000000000000000000600082015250565b60006155dc601783614dc5565b91506155e7826155a6565b602082019050919050565b6000602082019050818103600083015261560b816155cf565b9050919050565b7f616464546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000615648601783614dc5565b915061565382615612565b602082019050919050565b600060208201905081810360008301526156778161563b565b9050919050565b7f616464546573743a2063617374203634206661696c6564000000000000000000600082015250565b60006156b4601783614dc5565b91506156bf8261567e565b602082019050919050565b600060208201905081810360008301526156e3816156a7565b9050919050565b7f616464546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000615746602783614dc5565b9150615751826156ea565b604082019050919050565b6000602082019050818103600083015261577581615739565b9050919050565b7f616464546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b60006157d8602883614dc5565b91506157e38261577c565b604082019050919050565b60006020820190508181036000830152615807816157cb565b9050919050565b7f616464546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b600061586a602883614dc5565b91506158758261580e565b604082019050919050565b600060208201905081810360008301526158998161585d565b9050919050565b7f616464546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b60006158fc602883614dc5565b9150615907826158a0565b604082019050919050565b6000602082019050818103600083015261592b816158ef565b9050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b61596781615932565b82525050565b61597681614910565b82525050565b6000606082019050615991600083018661595e565b61599e602083018561596d565b6159ab604083018461596d565b949350505050565b6159bc81614910565b81146159c757600080fd5b50565b6000815190506159d9816159b3565b92915050565b6000602082840312156159f5576159f46147d7565b5b6000615a03848285016159ca565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b615a7081615a3b565b82525050565b6000604082019050615a8b6000830185615a67565b615a98602083018461596d565b939250505056fea2646970667358221220299ae0690e03bd65bd7407817e78ef044e7af32f980932193d469ae7bb46283264736f6c63430008140033";
337
-
338
- type PrecompilesArythmeticTestsContractConstructorParams =
339
- | [signer?: Signer]
340
- | ConstructorParameters<typeof ContractFactory>;
341
-
342
- const isSuperArgs = (
343
- xs: PrecompilesArythmeticTestsContractConstructorParams
344
- ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
345
-
346
- export class PrecompilesArythmeticTestsContract__factory extends ContractFactory {
347
- constructor(...args: PrecompilesArythmeticTestsContractConstructorParams) {
348
- if (isSuperArgs(args)) {
349
- super(...args);
350
- } else {
351
- super(_abi, _bytecode, args[0]);
352
- }
353
- }
354
-
355
- override getDeployTransaction(
356
- overrides?: NonPayableOverrides & { from?: string }
357
- ): Promise<ContractDeployTransaction> {
358
- return super.getDeployTransaction(overrides || {});
359
- }
360
- override deploy(overrides?: NonPayableOverrides & { from?: string }) {
361
- return super.deploy(overrides || {}) as Promise<
362
- PrecompilesArythmeticTestsContract & {
363
- deploymentTransaction(): ContractTransactionResponse;
364
- }
365
- >;
366
- }
367
- override connect(
368
- runner: ContractRunner | null
369
- ): PrecompilesArythmeticTestsContract__factory {
370
- return super.connect(runner) as PrecompilesArythmeticTestsContract__factory;
371
- }
372
-
373
- static readonly bytecode = _bytecode;
374
- static readonly abi = _abi;
375
- static createInterface(): PrecompilesArythmeticTestsContractInterface {
376
- return new Interface(_abi) as PrecompilesArythmeticTestsContractInterface;
377
- }
378
- static connect(
379
- address: string,
380
- runner?: ContractRunner | null
381
- ): PrecompilesArythmeticTestsContract {
382
- return new Contract(
383
- address,
384
- _abi,
385
- runner
386
- ) as unknown as PrecompilesArythmeticTestsContract;
387
- }
388
- }