@coti-io/coti-contracts 0.1.0

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 (180) hide show
  1. package/.github/workflows/npm-publish.yml +52 -0
  2. package/CODE_OF_CONDUCT.md +44 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +201 -0
  5. package/README.md +48 -0
  6. package/contracts/access/DataPrivacyFramework/DataPrivacyFramework.sol +480 -0
  7. package/contracts/access/DataPrivacyFramework/README.md +68 -0
  8. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +1139 -0
  9. package/contracts/mocks/README.md +5 -0
  10. package/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.sol +9 -0
  11. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +17 -0
  12. package/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.sol +34 -0
  13. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +431 -0
  14. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +361 -0
  15. package/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol +307 -0
  16. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +307 -0
  17. package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +297 -0
  18. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +185 -0
  19. package/contracts/mocks/utils/mpc/Miscellaneous2TestsContract.sol +448 -0
  20. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol +81 -0
  21. package/contracts/mocks/utils/mpc/README.md +486 -0
  22. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +311 -0
  23. package/contracts/mocks/utils/mpc/StringTestsContract.sol +59 -0
  24. package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +271 -0
  25. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +715 -0
  26. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +25 -0
  27. package/contracts/onboard/AccountOnboard.sol +21 -0
  28. package/contracts/onboard/README.md +65 -0
  29. package/contracts/package.json +11 -0
  30. package/contracts/token/PrivateERC20/IPrivateERC20.sol +142 -0
  31. package/contracts/token/PrivateERC20/PrivateERC20.sol +478 -0
  32. package/contracts/token/PrivateERC20/README.md +104 -0
  33. package/contracts/token/PrivateERC721/PrivateERC721.sol +458 -0
  34. package/contracts/token/PrivateERC721/README.md +282 -0
  35. package/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.sol +87 -0
  36. package/contracts/utils/mpc/MpcCore.sol +3215 -0
  37. package/contracts/utils/mpc/MpcInterface.sol +41 -0
  38. package/contracts/utils/mpc/README.md +82 -0
  39. package/hardhat.config.ts +18 -0
  40. package/package.json +14 -0
  41. package/test/access/DataPrivacyFramework/DataPrivacyFramework.test.ts +780 -0
  42. package/test/onboard/AccountOnboard.test.ts +45 -0
  43. package/test/token/PrivateERC20/PrivateERC20.test.ts +546 -0
  44. package/test/token/PrivateERC721/PrivateERC721.test.ts +223 -0
  45. package/test/utils/accounts.ts +55 -0
  46. package/test/utils/mpc/Precompile.test.ts +113 -0
  47. package/test/utils/mpc/String.test.ts +227 -0
  48. package/tsconfig.json +11 -0
  49. package/typechain-types/@openzeppelin/contracts/index.ts +9 -0
  50. package/typechain-types/@openzeppelin/contracts/interfaces/IERC4906.ts +462 -0
  51. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts +69 -0
  52. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts +69 -0
  53. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts +69 -0
  54. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  55. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +6 -0
  56. package/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.ts +393 -0
  57. package/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts +110 -0
  58. package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +5 -0
  59. package/typechain-types/@openzeppelin/contracts/token/index.ts +5 -0
  60. package/typechain-types/@openzeppelin/contracts/utils/index.ts +5 -0
  61. package/typechain-types/@openzeppelin/contracts/utils/introspection/ERC165.ts +94 -0
  62. package/typechain-types/@openzeppelin/contracts/utils/introspection/IERC165.ts +94 -0
  63. package/typechain-types/@openzeppelin/contracts/utils/introspection/index.ts +5 -0
  64. package/typechain-types/@openzeppelin/index.ts +5 -0
  65. package/typechain-types/common.ts +131 -0
  66. package/typechain-types/contracts/access/DataPrivacyFramework/DataPrivacyFramework.ts +598 -0
  67. package/typechain-types/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.ts +598 -0
  68. package/typechain-types/contracts/access/DataPrivacyFramework/extensions/index.ts +4 -0
  69. package/typechain-types/contracts/access/DataPrivacyFramework/index.ts +6 -0
  70. package/typechain-types/contracts/access/index.ts +5 -0
  71. package/typechain-types/contracts/index.ts +13 -0
  72. package/typechain-types/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.ts +598 -0
  73. package/typechain-types/contracts/mocks/access/DataPrivacyFramework/index.ts +4 -0
  74. package/typechain-types/contracts/mocks/access/index.ts +5 -0
  75. package/typechain-types/contracts/mocks/index.ts +11 -0
  76. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +543 -0
  77. package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +4 -0
  78. package/typechain-types/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.ts +576 -0
  79. package/typechain-types/contracts/mocks/token/PrivateERC721/index.ts +4 -0
  80. package/typechain-types/contracts/mocks/token/index.ts +7 -0
  81. package/typechain-types/contracts/mocks/utils/index.ts +5 -0
  82. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.ts +354 -0
  83. package/typechain-types/contracts/mocks/utils/mpc/BitwiseTestsContract.ts +340 -0
  84. package/typechain-types/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract.ts +340 -0
  85. package/typechain-types/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/index.ts +4 -0
  86. package/typechain-types/contracts/mocks/utils/mpc/Comparison2TestsContract.ts +340 -0
  87. package/typechain-types/contracts/mocks/utils/mpc/MinMaxTestsContract.ts +321 -0
  88. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.ts +199 -0
  89. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous2TestsContract.ts +384 -0
  90. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract.ts +218 -0
  91. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/index.ts +4 -0
  92. package/typechain-types/contracts/mocks/utils/mpc/ShiftTestsContract.ts +339 -0
  93. package/typechain-types/contracts/mocks/utils/mpc/StringTestsContract.ts +211 -0
  94. package/typechain-types/contracts/mocks/utils/mpc/TransferScalarTestsContract.ts +266 -0
  95. package/typechain-types/contracts/mocks/utils/mpc/TransferTestsContract.ts +288 -0
  96. package/typechain-types/contracts/mocks/utils/mpc/index.ts +17 -0
  97. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +173 -0
  98. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/index.ts +4 -0
  99. package/typechain-types/contracts/mocks/wallet/index.ts +5 -0
  100. package/typechain-types/contracts/onboard/AccountOnboard.ts +135 -0
  101. package/typechain-types/contracts/onboard/index.ts +4 -0
  102. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +437 -0
  103. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +505 -0
  104. package/typechain-types/contracts/token/PrivateERC20/index.ts +5 -0
  105. package/typechain-types/contracts/token/PrivateERC721/PrivateERC721.ts +409 -0
  106. package/typechain-types/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.ts +501 -0
  107. package/typechain-types/contracts/token/PrivateERC721/extensions/index.ts +4 -0
  108. package/typechain-types/contracts/token/PrivateERC721/index.ts +6 -0
  109. package/typechain-types/contracts/token/index.ts +7 -0
  110. package/typechain-types/contracts/utils/index.ts +5 -0
  111. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +698 -0
  112. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/index.ts +4 -0
  113. package/typechain-types/contracts/utils/mpc/index.ts +5 -0
  114. package/typechain-types/factories/@openzeppelin/contracts/index.ts +6 -0
  115. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC4906__factory.ts +339 -0
  116. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts +127 -0
  117. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts +111 -0
  118. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts +128 -0
  119. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  120. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +5 -0
  121. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts +59 -0
  122. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.ts +307 -0
  123. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +5 -0
  124. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +4 -0
  125. package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +4 -0
  126. package/typechain-types/factories/@openzeppelin/contracts/utils/introspection/ERC165__factory.ts +41 -0
  127. package/typechain-types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts +41 -0
  128. package/typechain-types/factories/@openzeppelin/contracts/utils/introspection/index.ts +5 -0
  129. package/typechain-types/factories/@openzeppelin/index.ts +4 -0
  130. package/typechain-types/factories/contracts/access/DataPrivacyFramework/DataPrivacyFramework__factory.ts +621 -0
  131. package/typechain-types/factories/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc__factory.ts +621 -0
  132. package/typechain-types/factories/contracts/access/DataPrivacyFramework/extensions/index.ts +4 -0
  133. package/typechain-types/factories/contracts/access/DataPrivacyFramework/index.ts +5 -0
  134. package/typechain-types/factories/contracts/access/index.ts +4 -0
  135. package/typechain-types/factories/contracts/index.ts +8 -0
  136. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +670 -0
  137. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/index.ts +4 -0
  138. package/typechain-types/factories/contracts/mocks/access/index.ts +4 -0
  139. package/typechain-types/factories/contracts/mocks/index.ts +7 -0
  140. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +615 -0
  141. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +4 -0
  142. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +630 -0
  143. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/index.ts +4 -0
  144. package/typechain-types/factories/contracts/mocks/token/index.ts +5 -0
  145. package/typechain-types/factories/contracts/mocks/utils/index.ts +4 -0
  146. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +374 -0
  147. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +361 -0
  148. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract__factory.ts +361 -0
  149. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/index.ts +4 -0
  150. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +361 -0
  151. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +337 -0
  152. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +236 -0
  153. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous2TestsContract__factory.ts +432 -0
  154. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract__factory.ts +245 -0
  155. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/index.ts +4 -0
  156. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +374 -0
  157. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +264 -0
  158. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +360 -0
  159. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +441 -0
  160. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +15 -0
  161. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +194 -0
  162. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/index.ts +4 -0
  163. package/typechain-types/factories/contracts/mocks/wallet/index.ts +4 -0
  164. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +104 -0
  165. package/typechain-types/factories/contracts/onboard/index.ts +4 -0
  166. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +406 -0
  167. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +532 -0
  168. package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +5 -0
  169. package/typechain-types/factories/contracts/token/PrivateERC721/PrivateERC721__factory.ts +439 -0
  170. package/typechain-types/factories/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage__factory.ts +512 -0
  171. package/typechain-types/factories/contracts/token/PrivateERC721/extensions/index.ts +4 -0
  172. package/typechain-types/factories/contracts/token/PrivateERC721/index.ts +5 -0
  173. package/typechain-types/factories/contracts/token/index.ts +5 -0
  174. package/typechain-types/factories/contracts/utils/index.ts +4 -0
  175. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +919 -0
  176. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/index.ts +4 -0
  177. package/typechain-types/factories/contracts/utils/mpc/index.ts +4 -0
  178. package/typechain-types/factories/index.ts +5 -0
  179. package/typechain-types/hardhat.d.ts +621 -0
  180. package/typechain-types/index.ts +72 -0
@@ -0,0 +1,670 @@
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
+ DataPrivacyFrameworkMock,
14
+ DataPrivacyFrameworkMockInterface,
15
+ } from "../../../../../contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock";
16
+
17
+ const _abi = [
18
+ {
19
+ inputs: [],
20
+ stateMutability: "nonpayable",
21
+ type: "constructor",
22
+ },
23
+ {
24
+ inputs: [],
25
+ name: "ADDRESS_ALL",
26
+ outputs: [
27
+ {
28
+ internalType: "address",
29
+ name: "",
30
+ type: "address",
31
+ },
32
+ ],
33
+ stateMutability: "view",
34
+ type: "function",
35
+ },
36
+ {
37
+ inputs: [],
38
+ name: "STRING_ALL",
39
+ outputs: [
40
+ {
41
+ internalType: "string",
42
+ name: "",
43
+ type: "string",
44
+ },
45
+ ],
46
+ stateMutability: "view",
47
+ type: "function",
48
+ },
49
+ {
50
+ inputs: [
51
+ {
52
+ internalType: "address",
53
+ name: "",
54
+ type: "address",
55
+ },
56
+ ],
57
+ name: "activePermissions",
58
+ outputs: [
59
+ {
60
+ internalType: "uint256",
61
+ name: "",
62
+ type: "uint256",
63
+ },
64
+ ],
65
+ stateMutability: "view",
66
+ type: "function",
67
+ },
68
+ {
69
+ inputs: [
70
+ {
71
+ internalType: "string",
72
+ name: "operation",
73
+ type: "string",
74
+ },
75
+ ],
76
+ name: "addAllowedOperation",
77
+ outputs: [
78
+ {
79
+ internalType: "bool",
80
+ name: "",
81
+ type: "bool",
82
+ },
83
+ ],
84
+ stateMutability: "nonpayable",
85
+ type: "function",
86
+ },
87
+ {
88
+ inputs: [
89
+ {
90
+ internalType: "string",
91
+ name: "operation",
92
+ type: "string",
93
+ },
94
+ ],
95
+ name: "addRestrictedOperation",
96
+ outputs: [
97
+ {
98
+ internalType: "bool",
99
+ name: "",
100
+ type: "bool",
101
+ },
102
+ ],
103
+ stateMutability: "nonpayable",
104
+ type: "function",
105
+ },
106
+ {
107
+ inputs: [],
108
+ name: "addressDefaultPermission",
109
+ outputs: [
110
+ {
111
+ internalType: "bool",
112
+ name: "",
113
+ type: "bool",
114
+ },
115
+ ],
116
+ stateMutability: "view",
117
+ type: "function",
118
+ },
119
+ {
120
+ inputs: [
121
+ {
122
+ internalType: "string",
123
+ name: "",
124
+ type: "string",
125
+ },
126
+ ],
127
+ name: "allowedOperations",
128
+ outputs: [
129
+ {
130
+ internalType: "bool",
131
+ name: "",
132
+ type: "bool",
133
+ },
134
+ ],
135
+ stateMutability: "view",
136
+ type: "function",
137
+ },
138
+ {
139
+ inputs: [
140
+ {
141
+ internalType: "uint256",
142
+ name: "",
143
+ type: "uint256",
144
+ },
145
+ ],
146
+ name: "conditions",
147
+ outputs: [
148
+ {
149
+ internalType: "uint256",
150
+ name: "id",
151
+ type: "uint256",
152
+ },
153
+ {
154
+ internalType: "address",
155
+ name: "caller",
156
+ type: "address",
157
+ },
158
+ {
159
+ internalType: "string",
160
+ name: "operation",
161
+ type: "string",
162
+ },
163
+ {
164
+ internalType: "bool",
165
+ name: "active",
166
+ type: "bool",
167
+ },
168
+ {
169
+ internalType: "bool",
170
+ name: "falseKey",
171
+ type: "bool",
172
+ },
173
+ {
174
+ internalType: "bool",
175
+ name: "trueKey",
176
+ type: "bool",
177
+ },
178
+ {
179
+ internalType: "uint256",
180
+ name: "timestampBefore",
181
+ type: "uint256",
182
+ },
183
+ {
184
+ internalType: "uint256",
185
+ name: "timestampAfter",
186
+ type: "uint256",
187
+ },
188
+ {
189
+ internalType: "uint256",
190
+ name: "uintParameter",
191
+ type: "uint256",
192
+ },
193
+ {
194
+ internalType: "address",
195
+ name: "addressParameter",
196
+ type: "address",
197
+ },
198
+ {
199
+ internalType: "string",
200
+ name: "stringParameter",
201
+ type: "string",
202
+ },
203
+ ],
204
+ stateMutability: "view",
205
+ type: "function",
206
+ },
207
+ {
208
+ inputs: [
209
+ {
210
+ internalType: "uint256",
211
+ name: "startIdx",
212
+ type: "uint256",
213
+ },
214
+ {
215
+ internalType: "uint256",
216
+ name: "chunkSize",
217
+ type: "uint256",
218
+ },
219
+ ],
220
+ name: "getConditions",
221
+ outputs: [
222
+ {
223
+ components: [
224
+ {
225
+ internalType: "uint256",
226
+ name: "id",
227
+ type: "uint256",
228
+ },
229
+ {
230
+ internalType: "address",
231
+ name: "caller",
232
+ type: "address",
233
+ },
234
+ {
235
+ internalType: "string",
236
+ name: "operation",
237
+ type: "string",
238
+ },
239
+ {
240
+ internalType: "bool",
241
+ name: "active",
242
+ type: "bool",
243
+ },
244
+ {
245
+ internalType: "bool",
246
+ name: "falseKey",
247
+ type: "bool",
248
+ },
249
+ {
250
+ internalType: "bool",
251
+ name: "trueKey",
252
+ type: "bool",
253
+ },
254
+ {
255
+ internalType: "uint256",
256
+ name: "timestampBefore",
257
+ type: "uint256",
258
+ },
259
+ {
260
+ internalType: "uint256",
261
+ name: "timestampAfter",
262
+ type: "uint256",
263
+ },
264
+ {
265
+ internalType: "uint256",
266
+ name: "uintParameter",
267
+ type: "uint256",
268
+ },
269
+ {
270
+ internalType: "address",
271
+ name: "addressParameter",
272
+ type: "address",
273
+ },
274
+ {
275
+ internalType: "string",
276
+ name: "stringParameter",
277
+ type: "string",
278
+ },
279
+ ],
280
+ internalType: "struct DataPrivacyFramework.Condition[]",
281
+ name: "",
282
+ type: "tuple[]",
283
+ },
284
+ ],
285
+ stateMutability: "view",
286
+ type: "function",
287
+ },
288
+ {
289
+ inputs: [],
290
+ name: "getConditionsCount",
291
+ outputs: [
292
+ {
293
+ internalType: "uint256",
294
+ name: "",
295
+ type: "uint256",
296
+ },
297
+ ],
298
+ stateMutability: "view",
299
+ type: "function",
300
+ },
301
+ {
302
+ inputs: [
303
+ {
304
+ internalType: "address",
305
+ name: "caller",
306
+ type: "address",
307
+ },
308
+ {
309
+ internalType: "string",
310
+ name: "operation",
311
+ type: "string",
312
+ },
313
+ {
314
+ internalType: "uint256",
315
+ name: "uintParameter",
316
+ type: "uint256",
317
+ },
318
+ ],
319
+ name: "isOperationAllowed",
320
+ outputs: [
321
+ {
322
+ internalType: "bool",
323
+ name: "",
324
+ type: "bool",
325
+ },
326
+ ],
327
+ stateMutability: "view",
328
+ type: "function",
329
+ },
330
+ {
331
+ inputs: [
332
+ {
333
+ internalType: "address",
334
+ name: "caller",
335
+ type: "address",
336
+ },
337
+ {
338
+ internalType: "string",
339
+ name: "operation",
340
+ type: "string",
341
+ },
342
+ ],
343
+ name: "isOperationAllowed",
344
+ outputs: [
345
+ {
346
+ internalType: "bool",
347
+ name: "",
348
+ type: "bool",
349
+ },
350
+ ],
351
+ stateMutability: "view",
352
+ type: "function",
353
+ },
354
+ {
355
+ inputs: [
356
+ {
357
+ internalType: "address",
358
+ name: "caller",
359
+ type: "address",
360
+ },
361
+ {
362
+ internalType: "string",
363
+ name: "operation",
364
+ type: "string",
365
+ },
366
+ {
367
+ internalType: "string",
368
+ name: "stringParameter",
369
+ type: "string",
370
+ },
371
+ ],
372
+ name: "isOperationAllowed",
373
+ outputs: [
374
+ {
375
+ internalType: "bool",
376
+ name: "",
377
+ type: "bool",
378
+ },
379
+ ],
380
+ stateMutability: "view",
381
+ type: "function",
382
+ },
383
+ {
384
+ inputs: [
385
+ {
386
+ internalType: "address",
387
+ name: "caller",
388
+ type: "address",
389
+ },
390
+ {
391
+ internalType: "string",
392
+ name: "operation",
393
+ type: "string",
394
+ },
395
+ {
396
+ internalType: "address",
397
+ name: "addressParameter",
398
+ type: "address",
399
+ },
400
+ ],
401
+ name: "isOperationAllowed",
402
+ outputs: [
403
+ {
404
+ internalType: "bool",
405
+ name: "",
406
+ type: "bool",
407
+ },
408
+ ],
409
+ stateMutability: "view",
410
+ type: "function",
411
+ },
412
+ {
413
+ inputs: [],
414
+ name: "operationDefaultPermission",
415
+ outputs: [
416
+ {
417
+ internalType: "bool",
418
+ name: "",
419
+ type: "bool",
420
+ },
421
+ ],
422
+ stateMutability: "view",
423
+ type: "function",
424
+ },
425
+ {
426
+ inputs: [
427
+ {
428
+ internalType: "address",
429
+ name: "",
430
+ type: "address",
431
+ },
432
+ {
433
+ internalType: "string",
434
+ name: "",
435
+ type: "string",
436
+ },
437
+ ],
438
+ name: "permissions",
439
+ outputs: [
440
+ {
441
+ internalType: "uint256",
442
+ name: "",
443
+ type: "uint256",
444
+ },
445
+ ],
446
+ stateMutability: "view",
447
+ type: "function",
448
+ },
449
+ {
450
+ inputs: [
451
+ {
452
+ internalType: "string",
453
+ name: "operation",
454
+ type: "string",
455
+ },
456
+ ],
457
+ name: "removeAllowedOperation",
458
+ outputs: [
459
+ {
460
+ internalType: "bool",
461
+ name: "",
462
+ type: "bool",
463
+ },
464
+ ],
465
+ stateMutability: "nonpayable",
466
+ type: "function",
467
+ },
468
+ {
469
+ inputs: [
470
+ {
471
+ internalType: "string",
472
+ name: "operation",
473
+ type: "string",
474
+ },
475
+ ],
476
+ name: "removeRestrictedOperation",
477
+ outputs: [
478
+ {
479
+ internalType: "bool",
480
+ name: "",
481
+ type: "bool",
482
+ },
483
+ ],
484
+ stateMutability: "nonpayable",
485
+ type: "function",
486
+ },
487
+ {
488
+ inputs: [
489
+ {
490
+ internalType: "string",
491
+ name: "",
492
+ type: "string",
493
+ },
494
+ ],
495
+ name: "restrictedOperations",
496
+ outputs: [
497
+ {
498
+ internalType: "bool",
499
+ name: "",
500
+ type: "bool",
501
+ },
502
+ ],
503
+ stateMutability: "view",
504
+ type: "function",
505
+ },
506
+ {
507
+ inputs: [
508
+ {
509
+ internalType: "bool",
510
+ name: "defaultPermission",
511
+ type: "bool",
512
+ },
513
+ ],
514
+ name: "setAddressDefaultPermission",
515
+ outputs: [
516
+ {
517
+ internalType: "bool",
518
+ name: "",
519
+ type: "bool",
520
+ },
521
+ ],
522
+ stateMutability: "nonpayable",
523
+ type: "function",
524
+ },
525
+ {
526
+ inputs: [
527
+ {
528
+ internalType: "bool",
529
+ name: "defaultPermission",
530
+ type: "bool",
531
+ },
532
+ ],
533
+ name: "setOperationDefaultPermission",
534
+ outputs: [
535
+ {
536
+ internalType: "bool",
537
+ name: "",
538
+ type: "bool",
539
+ },
540
+ ],
541
+ stateMutability: "nonpayable",
542
+ type: "function",
543
+ },
544
+ {
545
+ inputs: [
546
+ {
547
+ components: [
548
+ {
549
+ internalType: "address",
550
+ name: "caller",
551
+ type: "address",
552
+ },
553
+ {
554
+ internalType: "string",
555
+ name: "operation",
556
+ type: "string",
557
+ },
558
+ {
559
+ internalType: "bool",
560
+ name: "active",
561
+ type: "bool",
562
+ },
563
+ {
564
+ internalType: "uint256",
565
+ name: "timestampBefore",
566
+ type: "uint256",
567
+ },
568
+ {
569
+ internalType: "uint256",
570
+ name: "timestampAfter",
571
+ type: "uint256",
572
+ },
573
+ {
574
+ internalType: "bool",
575
+ name: "falseKey",
576
+ type: "bool",
577
+ },
578
+ {
579
+ internalType: "bool",
580
+ name: "trueKey",
581
+ type: "bool",
582
+ },
583
+ {
584
+ internalType: "uint256",
585
+ name: "uintParameter",
586
+ type: "uint256",
587
+ },
588
+ {
589
+ internalType: "address",
590
+ name: "addressParameter",
591
+ type: "address",
592
+ },
593
+ {
594
+ internalType: "string",
595
+ name: "stringParameter",
596
+ type: "string",
597
+ },
598
+ ],
599
+ internalType: "struct DataPrivacyFramework.InputData",
600
+ name: "inputData",
601
+ type: "tuple",
602
+ },
603
+ ],
604
+ name: "setPermission",
605
+ outputs: [
606
+ {
607
+ internalType: "bool",
608
+ name: "",
609
+ type: "bool",
610
+ },
611
+ ],
612
+ stateMutability: "nonpayable",
613
+ type: "function",
614
+ },
615
+ ] as const;
616
+
617
+ const _bytecode =
618
+ "0x608060405260016005553480156200001657600080fd5b506001806200003667fc9135fc006556cf60c01b620003b960201b60201c565b6200005267e84f4d2e14f4126a60c01b620003b960201b60201c565b816000806101000a81548160ff021916908315150217905550620000876793c1b7e17fb1d67460c01b620003b960201b60201c565b80600060016101000a81548160ff021916908315150217905550620000bd67e893cb10cb14c2e060c01b620003b960201b60201c565b600180604051620000ce9062000d59565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506200010f67e116591c6b1349a860c01b620003b960201b60201c565b6200012b67da8f8c438e11abc160c01b620003b960201b60201c565b620001fe6040518061014001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600581526020017f61646d696e0000000000000000000000000000000000000000000000000000008152508152602001600115158152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250620003bc60201b60201c565b506200021b67b37738395428e5dc60c01b620003b960201b60201c565b6001806040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525060405162000263919062000dde565b908152602001604051809103902060006101000a81548160ff021916908315150217905550620002a467cccad69878c4144960c01b620003b960201b60201c565b620002c06758e5ecd26455bdcf60c01b620003b960201b60201c565b62000394604051806101400160405280600173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152508152602001600115158152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250620003bc60201b60201c565b505050620003b36799cfec24eb7a4f4b60c01b62000cfb60201b60201c565b620011f7565b50565b6000620003da671ad3261cf3f484d060c01b620003b960201b60201c565b620003f6673ebe9881a5684e7560c01b620003b960201b60201c565b6200041267ff4c8dd9b4603bdd60c01b620003b960201b60201c565b600060046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083602001516040516200046b919062000dde565b90815260200160405180910390205403620007fa576200049c673cf4f2896221a39a60c01b620003b960201b60201c565b620004b86749c6ba72bf8d0e5a60c01b620003b960201b60201c565b60055460046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020836020015160405162000512919062000dde565b90815260200160405180910390208190555062000540672361a2b9f82da51a60c01b620003b960201b60201c565b6040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201908162000667919062001066565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555060c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061014082015181600801908162000747919062001066565b5090505062000767672a85196bbf3e424860c01b620003b960201b60201c565b60056000815462000778906200117c565b919050819055506200079b67f2e270b02097630160c01b620003b960201b60201c565b60036000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620007ed906200117c565b9190508190555062000cba565b62000816672a8d78ebd462da7b60c01b620003b960201b60201c565b62000832675defb162447becbe60c01b620003b960201b60201c565b6200084e67f24467ed722353ea60c01b620003b960201b60201c565b60006006600060046000866000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560200151604051620008ab919062000dde565b90815260200160405180910390205481526020019081526020016000209050620008e6678f1322a127e0837b60c01b620003b960201b60201c565b6200090267fbd458463f96175460c01b620003b960201b60201c565b826040015180156200092357508060030160009054906101000a900460ff16155b15620009c0576200094567f8e43b8c9925486860c01b620003b960201b60201c565b6200096167c0b725995781021d60c01b620003b960201b60201c565b60036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620009b3906200117c565b91905081905550620009dd565b620009dc677f1f92ba8d2740ed60c01b620003b960201b60201c565b5b620009f967eb0678d57012906060c01b620003b960201b60201c565b62000a1567b5d31de538d94faf60c01b620003b960201b60201c565b826040015115801562000a3657508060030160009054906101000a900460ff165b1562000ad35762000a5867de85481c93d84f6960c01b620003b960201b60201c565b62000a74672d293a57d3c09d8260c01b620003b960201b60201c565b60036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815462000ac690620011c9565b9190508190555062000af0565b62000aef67bbc6c101c6701aaa60c01b620003b960201b60201c565b5b62000b0c67f0a1dc6f1f4af7aa60c01b620003b960201b60201c565b82604001518160030160006101000a81548160ff02191690831515021790555062000b486764f8b6c583bf3a2c60c01b620003b960201b60201c565b8260600151816004018190555062000b716768ab02d44d558cdf60c01b620003b960201b60201c565b8260800151816005018190555062000b9a67cbbbd6918494425260c01b620003b960201b60201c565b8260a001518160030160016101000a81548160ff02191690831515021790555062000bd667bf0abc0ec9c63c9f60c01b620003b960201b60201c565b8260c001518160030160026101000a81548160ff02191690831515021790555062000c126730a0121a62e84b1b60c01b620003b960201b60201c565b8260e00151816006018190555062000c3b6781e3ef5c7a2e17cc60c01b620003b960201b60201c565b8261010001518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000c9f673649676ee0f52b3060c01b620003b960201b60201c565b82610120015181600801908162000cb7919062001066565b50505b62000cd667dda4f461b2efd31060c01b620003b960201b60201c565b62000cf2675a79615fb8224e6e60c01b620003b960201b60201c565b60019050919050565b50565b600081905092915050565b7f61646d696e000000000000000000000000000000000000000000000000000000600082015250565b600062000d4160058362000cfe565b915062000d4e8262000d09565b600582019050919050565b600062000d668262000d32565b9150819050919050565b600081519050919050565b60005b8381101562000d9b57808201518184015260208101905062000d7e565b60008484015250505050565b600062000db48262000d70565b62000dc0818562000cfe565b935062000dd281856020860162000d7b565b80840191505092915050565b600062000dec828462000da7565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e6e57607f821691505b60208210810362000e845762000e8362000e26565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000eee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000eaf565b62000efa868362000eaf565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f4762000f4162000f3b8462000f12565b62000f1c565b62000f12565b9050919050565b6000819050919050565b62000f638362000f26565b62000f7b62000f728262000f4e565b84845462000ebc565b825550505050565b600090565b62000f9262000f83565b62000f9f81848462000f58565b505050565b5b8181101562000fc75762000fbb60008262000f88565b60018101905062000fa5565b5050565b601f821115620010165762000fe08162000e8a565b62000feb8462000e9f565b8101602085101562000ffb578190505b620010136200100a8562000e9f565b83018262000fa4565b50505b505050565b600082821c905092915050565b60006200103b600019846008026200101b565b1980831691505092915050565b600062001056838362001028565b9150826002028217905092915050565b620010718262000d70565b67ffffffffffffffff8111156200108d576200108c62000df7565b5b62001099825462000e55565b620010a682828562000fcb565b600060209050601f831160018114620010de5760008415620010c9578287015190505b620010d5858262001048565b86555062001145565b601f198416620010ee8662000e8a565b60005b828110156200111857848901518255600182019150602085019450602081019050620010f1565b8683101562001138578489015162001134601f89168262001028565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011898262000f12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620011be57620011bd6200114d565b5b600182019050919050565b6000620011d68262000f12565b915060008203620011ec57620011eb6200114d565b5b600182039050919050565b614d6180620012076000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063a7804d65116100b8578063f28b9f341161007c578063f28b9f341461041b578063f558936414610439578063f9529ee214610469578063fa1b3cac14610499578063fac66f01146104b7578063fb83bb73146104e757610142565b8063a7804d651461033d578063ade0bee41461036d578063c6064b281461039d578063c8d757fd146103cd578063efdcec9c146103fd57610142565b8063661957011161010a5780636619570114610241578063699d7c331461025f57806382dab96e1461028f5780639359c287146102bf578063a5fcf162146102ef578063a74d34391461030d57610142565b806326c500071461014757806334906a4a14610181578063372db089146101b1578063476a95ad146101e157806365c5815214610211575b600080fd5b610161600480360381019061015c9190613985565b610517565b6040516101789b9a99989796959493929190613aad565b60405180910390f35b61019b60048036038101906101969190613c9b565b6106e8565b6040516101a89190613ce4565b60405180910390f35b6101cb60048036038101906101c69190613d8b565b61071e565b6040516101d89190613ce4565b60405180910390f35b6101fb60048036038101906101f69190613e2b565b610786565b6040516102089190613ce4565b60405180910390f35b61022b60048036038101906102269190613c9b565b61089d565b6040516102389190613ce4565b60405180910390f35b6102496109eb565b6040516102569190613e58565b60405180910390f35b61027960048036038101906102749190613e73565b610a3d565b6040516102869190613ce4565b60405180910390f35b6102a960048036038101906102a4919061400b565b610aa4565b6040516102b69190613ce4565b60405180910390f35b6102d960048036038101906102d49190613c9b565b6112cf565b6040516102e69190613ce4565b60405180910390f35b6102f761141c565b6040516103049190613ce4565b60405180910390f35b61032760048036038101906103229190614054565b61142d565b6040516103349190613ce4565b60405180910390f35b610357600480360381019061035291906140e9565b6114cb565b6040516103649190613e58565b60405180910390f35b61038760048036038101906103829190613e2b565b6114e3565b6040516103949190613ce4565b60405180910390f35b6103b760048036038101906103b29190614116565b6115fd565b6040516103c49190613ce4565b60405180910390f35b6103e760048036038101906103e2919061418a565b611665565b6040516103f49190613e58565b60405180910390f35b6104056116a0565b60405161041291906141e6565b60405180910390f35b6104236116d9565b6040516104309190613ce4565b60405180910390f35b610453600480360381019061044e9190613c9b565b6116ec565b6040516104609190613ce4565b60405180910390f35b610483600480360381019061047e9190614208565b611722565b6040516104909190613ce4565b60405180910390f35b6104a1611874565b6040516104ae9190614255565b60405180910390f35b6104d160048036038101906104cc9190614270565b611879565b6040516104de91906144df565b60405180910390f35b61050160048036038101906104fc9190614208565b611ec2565b60405161050e9190613ce4565b60405180910390f35b60066020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201805461056690614530565b80601f016020809104026020016040519081016040528092919081815260200182805461059290614530565b80156105df5780601f106105b4576101008083540402835291602001916105df565b820191906000526020600020905b8154815290600101906020018083116105c257829003601f168201915b5050505050908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16908060030160029054906101000a900460ff16908060040154908060050154908060060154908060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600801805461066590614530565b80601f016020809104026020016040519081016040528092919081815260200182805461069190614530565b80156106de5780601f106106b3576101008083540402835291602001916106de565b820191906000526020600020905b8154815290600101906020018083116106c157829003601f168201915b505050505090508b565b6001818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b6000610734676f0676d75719709b60c01b612013565b61074867387ad340bf4f15ab60c01b612013565b61075c67660e834b9ffd221560c01b612013565b61077c858585600186600060405180602001604052806000815250612016565b9050949350505050565b600061079c67dde7d0165699a0ec60c01b612013565b6107b067a28ce0bda80e860360c01b612013565b6107c467c77a3735f1bbcc2760c01b612013565b6107d8679231e40573fc61d960c01b612013565b81151560008054906101000a900460ff1615150361082b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610822906145ad565b60405180910390fd5b61083f67e5a9d09fb7b21b1960c01b612013565b61085367e2aca82bd66e6ade60c01b612013565b816000806101000a81548160ff0219169083151502179055506108806766d8699136cf6a2360c01b612013565b6108946759cb355ee9591ed460c01b612013565b60019050919050565b60006108b3679d5b9cafcbd1c7fc60c01b612013565b6108c767bb2abde4efb78d9760c01b612013565b6108db67df6906e4cbb6a7d560c01b612013565b6108ef67ca8c714c7f50980560c01b612013565b6002826040516108ff9190614609565b908152602001604051809103902060009054906101000a900460ff161561095b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095290614692565b60405180910390fd5b61096f6774436442374463d060c01b612013565b6109836732b91dc3cdf1e56060c01b612013565b60016002836040516109959190614609565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506109ce678622ace8a8f51e5260c01b612013565b6109e26713466ac46bc6137e60c01b612013565b60019050919050565b6000610a01673c3830f74a112f9660c01b612013565b610a156781d68b22744b1d4660c01b612013565b610a29675ce099e8cf90529a60c01b612013565b6001600554610a3891906146e1565b905090565b6000610a53674f3e42766e700a7260c01b612013565b610a676719997f1d4d31d36060c01b612013565b610a7b6731f6ceee22b78a6c60c01b612013565b610a9b848484600080600060405180602001604052806000815250612016565b90509392505050565b6000610aba671ad3261cf3f484d060c01b612013565b610ace673ebe9881a5684e7560c01b612013565b610ae267ff4c8dd9b4603bdd60c01b612013565b600060046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360200151604051610b399190614609565b90815260200160405180910390205403610e9457610b61673cf4f2896221a39a60c01b612013565b610b756749c6ba72bf8d0e5a60c01b612013565b60055460046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360200151604051610bcd9190614609565b908152602001604051809103902081905550610bf3672361a2b9f82da51a60c01b612013565b6040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019081610d1891906148c1565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555060c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610140820151816008019081610df691906148c1565b50905050610e0e672a85196bbf3e424860c01b612013565b600560008154610e1d90614993565b91905081905550610e3867f2e270b02097630160c01b612013565b60036000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154610e8890614993565b9190508190555061129e565b610ea8672a8d78ebd462da7b60c01b612013565b610ebc675defb162447becbe60c01b612013565b610ed067f24467ed722353ea60c01b612013565b60006006600060046000866000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560200151604051610f2b9190614609565b90815260200160405180910390205481526020019081526020016000209050610f5e678f1322a127e0837b60c01b612013565b610f7267fbd458463f96175460c01b612013565b82604001518015610f9257508060030160009054906101000a900460ff16155b1561101b57610fab67f8e43b8c9925486860c01b612013565b610fbf67c0b725995781021d60c01b612013565b60036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815461100f90614993565b91905081905550611030565b61102f677f1f92ba8d2740ed60c01b612013565b5b61104467eb0678d57012906060c01b612013565b61105867b5d31de538d94faf60c01b612013565b826040015115801561107857508060030160009054906101000a900460ff165b156111015761109167de85481c93d84f6960c01b612013565b6110a5672d293a57d3c09d8260c01b612013565b60036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546110f5906149db565b91905081905550611116565b61111567bbc6c101c6701aaa60c01b612013565b5b61112a67f0a1dc6f1f4af7aa60c01b612013565b82604001518160030160006101000a81548160ff02191690831515021790555061115e6764f8b6c583bf3a2c60c01b612013565b8260600151816004018190555061117f6768ab02d44d558cdf60c01b612013565b826080015181600501819055506111a067cbbbd6918494425260c01b612013565b8260a001518160030160016101000a81548160ff0219169083151502179055506111d467bf0abc0ec9c63c9f60c01b612013565b8260c001518160030160026101000a81548160ff0219169083151502179055506112086730a0121a62e84b1b60c01b612013565b8260e0015181600601819055506112296781e3ef5c7a2e17cc60c01b612013565b8261010001518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611285673649676ee0f52b3060c01b612013565b82610120015181600801908161129b91906148c1565b50505b6112b267dda4f461b2efd31060c01b612013565b6112c6675a79615fb8224e6e60c01b612013565b60019050919050565b60006112e567fdc7b20a2a6275c460c01b612013565b6112f967c8e440f26e855c1e60c01b612013565b61130d67c7b3165d226d2cf760c01b612013565b611321670d3618aab3ff572860c01b612013565b6001826040516113319190614609565b908152602001604051809103902060009054906101000a900460ff161561138d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138490614a50565b60405180910390fd5b6113a1674c36a1f8724dc15a60c01b612013565b6113b56782914f558011a44360c01b612013565b600180836040516113c69190614609565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506113ff672180b2e681d918e660c01b612013565b61141367fb349e777807b19160c01b612013565b60019050919050565b60008054906101000a900460ff1681565b600061144367151f7706ff912c9f60c01b612013565b611457676c4b537fdeb93df560c01b612013565b61146b679826fa73f672d16360c01b612013565b6114c0868686600360008089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612016565b905095945050505050565b60036020528060005260406000206000915090505481565b60006114f967b5b63f9ea67246ec60c01b612013565b61150d6713f0fcc340383bf460c01b612013565b61152167923f58c897a4f4f860c01b612013565b61153567b9a11296db875f8760c01b612013565b811515600060019054906101000a900460ff1615150361158a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611581906145ad565b60405180910390fd5b61159e677d17335d55af052c60c01b612013565b6115b267180c893074b3d27a60c01b612013565b81600060016101000a81548160ff0219169083151502179055506115e067750bf28010d4e42160c01b612013565b6115f467016379e498dc9ece60c01b612013565b60019050919050565b600061161367eb1a0403cb54ce5e60c01b612013565b611627670fdc961c6f3cd73e60c01b612013565b61163b67bc3aec633524827f60c01b612013565b61165b858585600260008760405180602001604052806000815250612016565b9050949350505050565b600460205281600052604060002081805160208101820180518482526020830160208501208183528095505050505050600091509150505481565b6040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525081565b600060019054906101000a900460ff1681565b6002818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b60006117386735ed968560641d5760c01b612013565b61174c676e5861509169e0ae60c01b612013565b6117606747065bb387f61af560c01b612013565b6117746731410c03b0a4dd2c60c01b612013565b60018383604051611786929190614a95565b908152602001604051809103902060009054906101000a900460ff166117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614afa565b60405180910390fd5b6117f5672a43a4d37980e6d260c01b612013565b61180967d20c049ab571fa6a60c01b612013565b60006001848460405161181d929190614a95565b908152602001604051809103902060006101000a81548160ff02191690831515021790555061185667246bc070308a394f60c01b612013565b61186a6794a6f9ceec90030360c01b612013565b6001905092915050565b600181565b606061188f67728dda4ce09aa9b960c01b612013565b6118a36733ac6aecfe78f02c60c01b612013565b6118b7679962d0389b8253e760c01b612013565b6118cb67ba1f4ad8a225f01d60c01b612013565b6000831161190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190590614b66565b60405180910390fd5b61192267fe5087653620d89660c01b612013565b61193667cfa5f16459ae453a60c01b612013565b61194a676804ca5d753c2d0860c01b612013565b61195e675b9db541a75aaff960c01b612013565b600082116119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890614bd2565b60405180910390fd5b6119b56731067f7f637dcdf560c01b612013565b6119c967ff19018989544e7a60c01b612013565b6119dd67834dc5efafab5fbf60c01b612013565b6005548310611a6a576119fa67d087dd9cb311b5ec60c01b612013565b611a0e67c5f6992e3ecd565360c01b612013565b600067ffffffffffffffff811115611a2957611a28613b70565b5b604051908082528060200260200182016040528015611a6257816020015b611a4f6138af565b815260200190600190039081611a475790505b509050611ebc565b611a7e6761eb1f1b3cf6814f60c01b612013565b611a9267afd3aa2544f0c66060c01b612013565b611aa667333a6cc1281fd79f60c01b612013565b60006001600554611ab791906146e1565b60018486611ac59190614bf2565b611acf91906146e1565b111580611aec5750611aeb67bab9638f50b094ae60c01b61331a565b5b8015611b085750611b07673dfc6964de9053af60c01b613321565b5b611b1f5783600554611b1a91906146e1565b611b21565b825b9050611b3767a4c047fd7510565f60c01b612013565b611b4b67ec07e07d21c8496260c01b612013565b60008167ffffffffffffffff811115611b6757611b66613b70565b5b604051908082528060200260200182016040528015611ba057816020015b611b8d6138af565b815260200190600190039081611b855790505b509050611bb767b776f96f629068fa60c01b612013565b611bcb67d8e248b145720a6260c01b612013565b60005b82811015611e8e57611bea67c2f923a42f00279360c01b612013565b600660008288611bfa9190614bf2565b815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282018054611c8490614530565b80601f0160208091040260200160405190810160405280929190818152602001828054611cb090614530565b8015611cfd5780601f10611cd257610100808354040283529160200191611cfd565b820191906000526020600020905b815481529060010190602001808311611ce057829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054611ddb90614530565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0790614530565b8015611e545780601f10611e2957610100808354040283529160200191611e54565b820191906000526020600020905b815481529060010190602001808311611e3757829003601f168201915b505050505081525050828281518110611e7057611e6f614c26565b5b60200260200101819052508080611e8690614993565b915050611bce565b50611ea266645c4a1d6b9a9d60c01b612013565b611eb667b22cb492e98a03af60c01b612013565b80925050505b92915050565b6000611ed8674184f32ec50ee90b60c01b612013565b611eeb66389b205a3c51f760c01b612013565b611eff67fd99ede3011f804760c01b612013565b611f1367be3755f4be031b7660c01b612013565b60028383604051611f25929190614a95565b908152602001604051809103902060009054906101000a900460ff16611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790614ca1565b60405180910390fd5b611f946762cb7cfb48f742f660c01b612013565b611fa8676dabf4ca315b0e5560c01b612013565b600060028484604051611fbc929190614a95565b908152602001604051809103902060006101000a81548160ff021916908315150217905550611ff567f2708ef2a2c724a660c01b612013565b612009677fd16cd58791706660c01b612013565b6001905092915050565b50565b600061202c67ccd1fdad77811f0c60c01b612013565b61204067e447c9bec58df02860c01b612013565b612054670ca08ed82c6d37ae60c01b612013565b60028787604051612066929190614a95565b908152602001604051809103902060009054906101000a900460ff16156120b85761209b676d9c05eea2608cbb60c01b612013565b6120af679d23e0d7fe42722760c01b612013565b6000905061330f565b6120cc67ad5eebe62aeaab2d60c01b612013565b6120e0679d924797b633357960c01b612013565b6120f467d268959fc628fd3860c01b612013565b60016040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516121399190614609565b908152602001604051809103902060009054906101000a900460ff1615801561218d57506001878760405161216f929190614a95565b908152602001604051809103902060009054906101000a900460ff16155b156121c3576121a6679232f96c90ccccab60c01b612013565b6121ba6718b213616c31a05c60c01b612013565b6000905061330f565b6121d767bdb87b4fc1298cfa60c01b612013565b6121eb67359b68cef449dec660c01b612013565b6121ff67cbde617b237bb12060c01b612013565b60066000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208989604051612252929190614a95565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff16156125995761229967e052dae64575aadf60c01b612013565b6122ad6708ecc7da60ebceff60c01b612013565b6122c1675e86518f233691fe60c01b612013565b61259260066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8a604051612317929190614a95565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546123b090614530565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90614530565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160088201805461250790614530565b80601f016020809104026020016040519081016040528092919081815260200182805461253390614530565b80156125805780601f1061255557610100808354040283529160200191612580565b820191906000526020600020905b81548152906001019060200180831161256357829003601f168201915b5050505050815250508686868661332c565b905061330f565b6125ad67bd63b480229476c460c01b612013565b6125c167f40cd69e32934a7660c01b612013565b6125d5676f4257448761faa760c01b612013565b60066000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525060405161265b9190614609565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff16156129d5576126a267bf360113ce4d471760c01b612013565b6126b667a9a0490dfae3f25960c01b612013565b6126ca67b8a70792af9cce9f60c01b612013565b6129ce60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516127539190614609565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546127ec90614530565b80601f016020809104026020016040519081016040528092919081815260200182805461281890614530565b80156128655780601f1061283a57610100808354040283529160200191612865565b820191906000526020600020905b81548152906001019060200180831161284857829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160088201805461294390614530565b80601f016020809104026020016040519081016040528092919081815260200182805461296f90614530565b80156129bc5780601f10612991576101008083540402835291602001916129bc565b820191906000526020600020905b81548152906001019060200180831161299f57829003601f168201915b5050505050815250508686868661332c565b905061330f565b6129e967dc48553233606cbb60c01b612013565b6129fd677dab8698e52a4b3260c01b612013565b612a11670924859688dd404560c01b612013565b6000600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612aac57612a6d674447780f6dd77b6760c01b612013565b612a8167ac587d67ec08f57660c01b612013565b612a956711f14cadef1b5cf560c01b612013565b600060019054906101000a900460ff16905061330f565b612ac0679f7acd888881b97d60c01b612013565b612ad4678ccb89341815f68160c01b612013565b612ae8674acce9791a2cade860c01b612013565b6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208989604051612b3c929190614a95565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff1615612e8457612b8367e84e3b4eb587698c60c01b612013565b612b97676dac846bae2f33eb60c01b612013565b612bab67f5595b744e12d22160c01b612013565b612e7d6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8a604051612c02929190614a95565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282018054612c9b90614530565b80601f0160208091040260200160405190810160405280929190818152602001828054612cc790614530565b8015612d145780601f10612ce957610100808354040283529160200191612d14565b820191906000526020600020905b815481529060010190602001808311612cf757829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054612df290614530565b80601f0160208091040260200160405190810160405280929190818152602001828054612e1e90614530565b8015612e6b5780601f10612e4057610100808354040283529160200191612e6b565b820191906000526020600020905b815481529060010190602001808311612e4e57829003601f168201915b5050505050815250508686868661332c565b905061330f565b612e986763bf2991c34c771360c01b612013565b612eac6740e7d43c1a6d54e060c01b612013565b612ec067ab9a3537808d6b5e60c01b612013565b6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a00000000000000000000000000000000000000000000000000000000000000815250604051612f479190614609565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff16156132c257612f8e676f0f596fa7f0510160c01b612013565b612fa2675537a48566b7b39160c01b612013565b612fb667d95d850db071176b60c01b612013565b6132bb6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516130409190614609565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546130d990614530565b80601f016020809104026020016040519081016040528092919081815260200182805461310590614530565b80156131525780601f1061312757610100808354040283529160200191613152565b820191906000526020600020905b81548152906001019060200180831161313557829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160088201805461323090614530565b80601f016020809104026020016040519081016040528092919081815260200182805461325c90614530565b80156132a95780601f1061327e576101008083540402835291602001916132a9565b820191906000526020600020905b81548152906001019060200180831161328c57829003601f168201915b5050505050815250508686868661332c565b905061330f565b6132d6672d2f036f0f3c8a9560c01b612013565b6132ea678a545fd45818f0eb60c01b612013565b6132fe67840e86c49a81f17060c01b612013565b60008054906101000a900460ff1690505b979650505050505050565b6000919050565b600060019050919050565b600061334267e21564a3148d463860c01b612013565b61335667d98408469270163060c01b612013565b61336a674bea1e80c8aa319f60c01b612013565b8560800151156133a55761338867ad5c3b1f2299f5f860c01b612013565b61339c6743dd7e53e67df63c60c01b612013565b600090506138a6565b6133b96776b169b3281c12cc60c01b612013565b6133cd67ebac4790087b5a0a60c01b612013565b6133e1678f31959ac2b875df60c01b612013565b8560a001511561341c576133ff6772fbbaf7e115259560c01b612013565b61341367c3a2c150bf15e8f460c01b612013565b600190506138a6565b6134306722e0dac5eb68a2ff60c01b612013565b61344467fb98c9a0e7e5d55560c01b612013565b61345867f4987549f63ca11260c01b612013565b60008660c0015111801561346f5750428660c00151105b156134a5576134886712c0740aa6ccf14e60c01b612013565b61349c67bbc7df08bdd1150460c01b612013565b600090506138a6565b6134b9672fd1101e0511ca8760c01b612013565b6134cd6760725214f0e763e760c01b612013565b6134e1678e6891c32c6f068e60c01b612013565b60008660e001511180156134f85750428660e00151115b1561352e57613511672bd9e576079ebe2360c01b612013565b613525670a66956cb43747c960c01b612013565b600090506138a6565b61354267322171b3ea0bfb6760c01b612013565b61355667f14954a57826591960c01b612013565b61356a6726a7de73a4c8f53460c01b612013565b6001600381111561357e5761357d614cc1565b5b85600381111561359157613590614cc1565b5b1480156135a45750600086610100015114155b80156135b557508386610100015114155b156135ff576135ce679a3c2fb77646cc9760c01b612013565b6135e26794b86d42d6a7965d60c01b612013565b6135f66774a546d1aab4283660c01b612013565b600090506138a6565b61361367bd64266a7e8395e760c01b612013565b61362767cca41d7fe6e9634960c01b612013565b6002600381111561363b5761363a614cc1565b5b85600381111561364e5761364d614cc1565b5b14801561368d5750600073ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b80156136ca57508273ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b15613714576136e367c41cd4235d5e3d1560c01b612013565b6136f7674908d6de07e9de3960c01b612013565b61370b675f0cfc1859a7813e60c01b612013565b600090506138a6565b61372867b1dc60e3844f3eb960c01b612013565b61373c67327b949773d4145e60c01b612013565b60038081111561374f5761374e614cc1565b5b85600381111561376257613761614cc1565b5b1480156137be575060405160200161377990614d16565b604051602081830303815290604052805190602001208661014001516040516020016137a59190614609565b6040516020818303038152906040528051906020012014155b801561381b5750816040516020016137d69190614609565b604051602081830303815290604052805190602001208661014001516040516020016138029190614609565b6040516020818303038152906040528051906020012014155b15613865576138346733cc80604b469e7c60c01b612013565b613848676a5cdb5bad7c0cad60c01b612013565b61385c676d11131380e432da60c01b612013565b600090506138a6565b613879672178adb91b83f80560c01b612013565b61388d676f0f0f61a3db397e60c01b612013565b6138a167e532642009485f0c60c01b612013565b600190505b95945050505050565b60405180610160016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600015158152602001600015158152602001600015158152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6139628161394f565b811461396d57600080fd5b50565b60008135905061397f81613959565b92915050565b60006020828403121561399b5761399a613945565b5b60006139a984828501613970565b91505092915050565b6139bb8161394f565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139ec826139c1565b9050919050565b6139fc816139e1565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a3c578082015181840152602081019050613a21565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a6482613a02565b613a6e8185613a0d565b9350613a7e818560208601613a1e565b613a8781613a48565b840191505092915050565b60008115159050919050565b613aa781613a92565b82525050565b600061016082019050613ac3600083018e6139b2565b613ad0602083018d6139f3565b8181036040830152613ae2818c613a59565b9050613af1606083018b613a9e565b613afe608083018a613a9e565b613b0b60a0830189613a9e565b613b1860c08301886139b2565b613b2560e08301876139b2565b613b336101008301866139b2565b613b416101208301856139f3565b818103610140830152613b548184613a59565b90509c9b505050505050505050505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ba882613a48565b810181811067ffffffffffffffff82111715613bc757613bc6613b70565b5b80604052505050565b6000613bda61393b565b9050613be68282613b9f565b919050565b600067ffffffffffffffff821115613c0657613c05613b70565b5b613c0f82613a48565b9050602081019050919050565b82818337600083830152505050565b6000613c3e613c3984613beb565b613bd0565b905082815260208101848484011115613c5a57613c59613b6b565b5b613c65848285613c1c565b509392505050565b600082601f830112613c8257613c81613b66565b5b8135613c92848260208601613c2b565b91505092915050565b600060208284031215613cb157613cb0613945565b5b600082013567ffffffffffffffff811115613ccf57613cce61394a565b5b613cdb84828501613c6d565b91505092915050565b6000602082019050613cf96000830184613a9e565b92915050565b613d08816139e1565b8114613d1357600080fd5b50565b600081359050613d2581613cff565b92915050565b600080fd5b600080fd5b60008083601f840112613d4b57613d4a613b66565b5b8235905067ffffffffffffffff811115613d6857613d67613d2b565b5b602083019150836001820283011115613d8457613d83613d30565b5b9250929050565b60008060008060608587031215613da557613da4613945565b5b6000613db387828801613d16565b945050602085013567ffffffffffffffff811115613dd457613dd361394a565b5b613de087828801613d35565b93509350506040613df387828801613970565b91505092959194509250565b613e0881613a92565b8114613e1357600080fd5b50565b600081359050613e2581613dff565b92915050565b600060208284031215613e4157613e40613945565b5b6000613e4f84828501613e16565b91505092915050565b6000602082019050613e6d60008301846139b2565b92915050565b600080600060408486031215613e8c57613e8b613945565b5b6000613e9a86828701613d16565b935050602084013567ffffffffffffffff811115613ebb57613eba61394a565b5b613ec786828701613d35565b92509250509250925092565b600080fd5b600080fd5b60006101408284031215613ef457613ef3613ed3565b5b613eff610140613bd0565b90506000613f0f84828501613d16565b600083015250602082013567ffffffffffffffff811115613f3357613f32613ed8565b5b613f3f84828501613c6d565b6020830152506040613f5384828501613e16565b6040830152506060613f6784828501613970565b6060830152506080613f7b84828501613970565b60808301525060a0613f8f84828501613e16565b60a08301525060c0613fa384828501613e16565b60c08301525060e0613fb784828501613970565b60e083015250610100613fcc84828501613d16565b6101008301525061012082013567ffffffffffffffff811115613ff257613ff1613ed8565b5b613ffe84828501613c6d565b6101208301525092915050565b60006020828403121561402157614020613945565b5b600082013567ffffffffffffffff81111561403f5761403e61394a565b5b61404b84828501613edd565b91505092915050565b6000806000806000606086880312156140705761406f613945565b5b600061407e88828901613d16565b955050602086013567ffffffffffffffff81111561409f5761409e61394a565b5b6140ab88828901613d35565b9450945050604086013567ffffffffffffffff8111156140ce576140cd61394a565b5b6140da88828901613d35565b92509250509295509295909350565b6000602082840312156140ff576140fe613945565b5b600061410d84828501613d16565b91505092915050565b600080600080606085870312156141305761412f613945565b5b600061413e87828801613d16565b945050602085013567ffffffffffffffff81111561415f5761415e61394a565b5b61416b87828801613d35565b9350935050604061417e87828801613d16565b91505092959194509250565b600080604083850312156141a1576141a0613945565b5b60006141af85828601613d16565b925050602083013567ffffffffffffffff8111156141d0576141cf61394a565b5b6141dc85828601613c6d565b9150509250929050565b600060208201905081810360008301526142008184613a59565b905092915050565b6000806020838503121561421f5761421e613945565b5b600083013567ffffffffffffffff81111561423d5761423c61394a565b5b61424985828601613d35565b92509250509250929050565b600060208201905061426a60008301846139f3565b92915050565b6000806040838503121561428757614286613945565b5b600061429585828601613970565b92505060206142a685828601613970565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142e58161394f565b82525050565b6142f4816139e1565b82525050565b600082825260208201905092915050565b600061431682613a02565b61432081856142fa565b9350614330818560208601613a1e565b61433981613a48565b840191505092915050565b61434d81613a92565b82525050565b60006101608301600083015161436c60008601826142dc565b50602083015161437f60208601826142eb565b5060408301518482036040860152614397828261430b565b91505060608301516143ac6060860182614344565b5060808301516143bf6080860182614344565b5060a08301516143d260a0860182614344565b5060c08301516143e560c08601826142dc565b5060e08301516143f860e08601826142dc565b5061010083015161440d6101008601826142dc565b506101208301516144226101208601826142eb565b5061014083015184820361014086015261443c828261430b565b9150508091505092915050565b60006144558383614353565b905092915050565b6000602082019050919050565b6000614475826142b0565b61447f81856142bb565b935083602082028501614491856142cc565b8060005b858110156144cd57848403895281516144ae8582614449565b94506144b98361445d565b925060208a01995050600181019050614495565b50829750879550505050505092915050565b600060208201905081810360008301526144f9818461446a565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061454857607f821691505b60208210810361455b5761455a614501565b5b50919050565b7f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e47450000600082015250565b6000614597601e83613a0d565b91506145a282614561565b602082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b600081905092915050565b60006145e382613a02565b6145ed81856145cd565b93506145fd818560208601613a1e565b80840191505092915050565b600061461582846145d8565b915081905092915050565b7f4450463a204f5045524154494f4e5f414c52454144595f52455354524943544560008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b600061467c602183613a0d565b915061468782614620565b604082019050919050565b600060208201905081810360008301526146ab8161466f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146ec8261394f565b91506146f78361394f565b925082820390508181111561470f5761470e6146b2565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026147777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261473a565b614781868361473a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006147be6147b96147b48461394f565b614799565b61394f565b9050919050565b6000819050919050565b6147d8836147a3565b6147ec6147e4826147c5565b848454614747565b825550505050565b600090565b6148016147f4565b61480c8184846147cf565b505050565b5b81811015614830576148256000826147f9565b600181019050614812565b5050565b601f8211156148755761484681614715565b61484f8461472a565b8101602085101561485e578190505b61487261486a8561472a565b830182614811565b50505b505050565b600082821c905092915050565b60006148986000198460080261487a565b1980831691505092915050565b60006148b18383614887565b9150826002028217905092915050565b6148ca82613a02565b67ffffffffffffffff8111156148e3576148e2613b70565b5b6148ed8254614530565b6148f8828285614834565b600060209050601f83116001811461492b5760008415614919578287015190505b61492385826148a5565b86555061498b565b601f19841661493986614715565b60005b828110156149615784890151825560018201915060208501945060208101905061493c565b8683101561497e578489015161497a601f891682614887565b8355505b6001600288020188555050505b505050505050565b600061499e8261394f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149d0576149cf6146b2565b5b600182019050919050565b60006149e68261394f565b9150600082036149f9576149f86146b2565b5b600182039050919050565b7f4450463a204f5045524154494f4e5f414c52454144595f414c4c4f5745440000600082015250565b6000614a3a601e83613a0d565b9150614a4582614a04565b602082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b6000614a7c83856145cd565b9350614a89838584613c1c565b82840190509392505050565b6000614aa2828486614a70565b91508190509392505050565b7f4450463a204f5045524154494f4e5f4e4f545f414c4c4f574544000000000000600082015250565b6000614ae4601a83613a0d565b9150614aef82614aae565b602082019050919050565b60006020820190508181036000830152614b1381614ad7565b9050919050565b7f4450463a2053544152545f4944585f5a45524f00000000000000000000000000600082015250565b6000614b50601383613a0d565b9150614b5b82614b1a565b602082019050919050565b60006020820190508181036000830152614b7f81614b43565b9050919050565b7f4450463a204348554e4b5f53495a455f5a45524f000000000000000000000000600082015250565b6000614bbc601483613a0d565b9150614bc782614b86565b602082019050919050565b60006020820190508181036000830152614beb81614baf565b9050919050565b6000614bfd8261394f565b9150614c088361394f565b9250828201905080821115614c2057614c1f6146b2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4450463a204f5045524154494f4e5f4e4f545f52455354524943544544000000600082015250565b6000614c8b601d83613a0d565b9150614c9682614c55565b602082019050919050565b60006020820190508181036000830152614cba81614c7e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b50565b6000614d006000836145cd565b9150614d0b82614cf0565b600082019050919050565b6000614d2182614cf3565b915081905091905056fea2646970667358221220c79f099f7410c563ad454a5ae04bf33640e074552eb7cc441f0f263793e22f1d64736f6c63430008140033";
619
+
620
+ type DataPrivacyFrameworkMockConstructorParams =
621
+ | [signer?: Signer]
622
+ | ConstructorParameters<typeof ContractFactory>;
623
+
624
+ const isSuperArgs = (
625
+ xs: DataPrivacyFrameworkMockConstructorParams
626
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
627
+
628
+ export class DataPrivacyFrameworkMock__factory extends ContractFactory {
629
+ constructor(...args: DataPrivacyFrameworkMockConstructorParams) {
630
+ if (isSuperArgs(args)) {
631
+ super(...args);
632
+ } else {
633
+ super(_abi, _bytecode, args[0]);
634
+ }
635
+ }
636
+
637
+ override getDeployTransaction(
638
+ overrides?: NonPayableOverrides & { from?: string }
639
+ ): Promise<ContractDeployTransaction> {
640
+ return super.getDeployTransaction(overrides || {});
641
+ }
642
+ override deploy(overrides?: NonPayableOverrides & { from?: string }) {
643
+ return super.deploy(overrides || {}) as Promise<
644
+ DataPrivacyFrameworkMock & {
645
+ deploymentTransaction(): ContractTransactionResponse;
646
+ }
647
+ >;
648
+ }
649
+ override connect(
650
+ runner: ContractRunner | null
651
+ ): DataPrivacyFrameworkMock__factory {
652
+ return super.connect(runner) as DataPrivacyFrameworkMock__factory;
653
+ }
654
+
655
+ static readonly bytecode = _bytecode;
656
+ static readonly abi = _abi;
657
+ static createInterface(): DataPrivacyFrameworkMockInterface {
658
+ return new Interface(_abi) as DataPrivacyFrameworkMockInterface;
659
+ }
660
+ static connect(
661
+ address: string,
662
+ runner?: ContractRunner | null
663
+ ): DataPrivacyFrameworkMock {
664
+ return new Contract(
665
+ address,
666
+ _abi,
667
+ runner
668
+ ) as unknown as DataPrivacyFrameworkMock;
669
+ }
670
+ }