@ensuro/access-managed-proxy 0.2.0 → 0.4.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 (96) hide show
  1. package/README.md +12 -5
  2. package/build/build-info.json +1 -1
  3. package/build/contracts/AMPUtils.sol/AMPUtils.json +2 -2
  4. package/build/contracts/AccessManagedProxy.sol/AccessManagedProxy.json +71 -3
  5. package/build/contracts/AccessManagedProxyBase.sol/AccessManagedProxyBase.json +147 -0
  6. package/build/contracts/interfaces/IAccessManagedProxy.sol/IAccessManagedProxy.json +98 -0
  7. package/build/contracts/mock/DummyAccessManaged.sol/DummyAccessManaged.json +321 -0
  8. package/build/contracts/mock/DummyImplementation.sol/DummyImplementation.json +122 -2
  9. package/contracts/AMPUtils.sol +54 -3
  10. package/contracts/AccessManagedProxy.sol +39 -51
  11. package/contracts/AccessManagedProxyBase.sol +79 -0
  12. package/contracts/interfaces/IAccessManagedProxy.sol +51 -0
  13. package/contracts/mock/DummyAccessManaged.sol +56 -0
  14. package/contracts/mock/DummyImplementation.sol +30 -2
  15. package/js/deployProxy.js +5 -11
  16. package/package.json +1 -1
  17. package/build/contracts/amps/AccessManagedProxyS1.sol/AccessManagedProxyS1.json +0 -123
  18. package/build/contracts/amps/AccessManagedProxyS10.sol/AccessManagedProxyS10.json +0 -123
  19. package/build/contracts/amps/AccessManagedProxyS11.sol/AccessManagedProxyS11.json +0 -123
  20. package/build/contracts/amps/AccessManagedProxyS12.sol/AccessManagedProxyS12.json +0 -123
  21. package/build/contracts/amps/AccessManagedProxyS13.sol/AccessManagedProxyS13.json +0 -123
  22. package/build/contracts/amps/AccessManagedProxyS14.sol/AccessManagedProxyS14.json +0 -123
  23. package/build/contracts/amps/AccessManagedProxyS15.sol/AccessManagedProxyS15.json +0 -123
  24. package/build/contracts/amps/AccessManagedProxyS16.sol/AccessManagedProxyS16.json +0 -123
  25. package/build/contracts/amps/AccessManagedProxyS17.sol/AccessManagedProxyS17.json +0 -123
  26. package/build/contracts/amps/AccessManagedProxyS18.sol/AccessManagedProxyS18.json +0 -123
  27. package/build/contracts/amps/AccessManagedProxyS19.sol/AccessManagedProxyS19.json +0 -123
  28. package/build/contracts/amps/AccessManagedProxyS2.sol/AccessManagedProxyS2.json +0 -123
  29. package/build/contracts/amps/AccessManagedProxyS20.sol/AccessManagedProxyS20.json +0 -123
  30. package/build/contracts/amps/AccessManagedProxyS21.sol/AccessManagedProxyS21.json +0 -123
  31. package/build/contracts/amps/AccessManagedProxyS22.sol/AccessManagedProxyS22.json +0 -123
  32. package/build/contracts/amps/AccessManagedProxyS23.sol/AccessManagedProxyS23.json +0 -123
  33. package/build/contracts/amps/AccessManagedProxyS24.sol/AccessManagedProxyS24.json +0 -123
  34. package/build/contracts/amps/AccessManagedProxyS25.sol/AccessManagedProxyS25.json +0 -123
  35. package/build/contracts/amps/AccessManagedProxyS26.sol/AccessManagedProxyS26.json +0 -123
  36. package/build/contracts/amps/AccessManagedProxyS27.sol/AccessManagedProxyS27.json +0 -123
  37. package/build/contracts/amps/AccessManagedProxyS28.sol/AccessManagedProxyS28.json +0 -123
  38. package/build/contracts/amps/AccessManagedProxyS29.sol/AccessManagedProxyS29.json +0 -123
  39. package/build/contracts/amps/AccessManagedProxyS3.sol/AccessManagedProxyS3.json +0 -123
  40. package/build/contracts/amps/AccessManagedProxyS30.sol/AccessManagedProxyS30.json +0 -123
  41. package/build/contracts/amps/AccessManagedProxyS31.sol/AccessManagedProxyS31.json +0 -123
  42. package/build/contracts/amps/AccessManagedProxyS32.sol/AccessManagedProxyS32.json +0 -123
  43. package/build/contracts/amps/AccessManagedProxyS33.sol/AccessManagedProxyS33.json +0 -123
  44. package/build/contracts/amps/AccessManagedProxyS34.sol/AccessManagedProxyS34.json +0 -123
  45. package/build/contracts/amps/AccessManagedProxyS35.sol/AccessManagedProxyS35.json +0 -123
  46. package/build/contracts/amps/AccessManagedProxyS36.sol/AccessManagedProxyS36.json +0 -123
  47. package/build/contracts/amps/AccessManagedProxyS37.sol/AccessManagedProxyS37.json +0 -123
  48. package/build/contracts/amps/AccessManagedProxyS38.sol/AccessManagedProxyS38.json +0 -123
  49. package/build/contracts/amps/AccessManagedProxyS39.sol/AccessManagedProxyS39.json +0 -123
  50. package/build/contracts/amps/AccessManagedProxyS4.sol/AccessManagedProxyS4.json +0 -123
  51. package/build/contracts/amps/AccessManagedProxyS40.sol/AccessManagedProxyS40.json +0 -123
  52. package/build/contracts/amps/AccessManagedProxyS5.sol/AccessManagedProxyS5.json +0 -123
  53. package/build/contracts/amps/AccessManagedProxyS6.sol/AccessManagedProxyS6.json +0 -123
  54. package/build/contracts/amps/AccessManagedProxyS7.sol/AccessManagedProxyS7.json +0 -123
  55. package/build/contracts/amps/AccessManagedProxyS8.sol/AccessManagedProxyS8.json +0 -123
  56. package/build/contracts/amps/AccessManagedProxyS9.sol/AccessManagedProxyS9.json +0 -123
  57. package/contracts/amps/AccessManagedProxyS1.sol +0 -63
  58. package/contracts/amps/AccessManagedProxyS10.sol +0 -99
  59. package/contracts/amps/AccessManagedProxyS11.sol +0 -103
  60. package/contracts/amps/AccessManagedProxyS12.sol +0 -107
  61. package/contracts/amps/AccessManagedProxyS13.sol +0 -111
  62. package/contracts/amps/AccessManagedProxyS14.sol +0 -115
  63. package/contracts/amps/AccessManagedProxyS15.sol +0 -119
  64. package/contracts/amps/AccessManagedProxyS16.sol +0 -123
  65. package/contracts/amps/AccessManagedProxyS17.sol +0 -127
  66. package/contracts/amps/AccessManagedProxyS18.sol +0 -131
  67. package/contracts/amps/AccessManagedProxyS19.sol +0 -135
  68. package/contracts/amps/AccessManagedProxyS2.sol +0 -67
  69. package/contracts/amps/AccessManagedProxyS20.sol +0 -139
  70. package/contracts/amps/AccessManagedProxyS21.sol +0 -143
  71. package/contracts/amps/AccessManagedProxyS22.sol +0 -147
  72. package/contracts/amps/AccessManagedProxyS23.sol +0 -151
  73. package/contracts/amps/AccessManagedProxyS24.sol +0 -155
  74. package/contracts/amps/AccessManagedProxyS25.sol +0 -159
  75. package/contracts/amps/AccessManagedProxyS26.sol +0 -163
  76. package/contracts/amps/AccessManagedProxyS27.sol +0 -167
  77. package/contracts/amps/AccessManagedProxyS28.sol +0 -171
  78. package/contracts/amps/AccessManagedProxyS29.sol +0 -175
  79. package/contracts/amps/AccessManagedProxyS3.sol +0 -71
  80. package/contracts/amps/AccessManagedProxyS30.sol +0 -179
  81. package/contracts/amps/AccessManagedProxyS31.sol +0 -183
  82. package/contracts/amps/AccessManagedProxyS32.sol +0 -187
  83. package/contracts/amps/AccessManagedProxyS33.sol +0 -191
  84. package/contracts/amps/AccessManagedProxyS34.sol +0 -195
  85. package/contracts/amps/AccessManagedProxyS35.sol +0 -199
  86. package/contracts/amps/AccessManagedProxyS36.sol +0 -203
  87. package/contracts/amps/AccessManagedProxyS37.sol +0 -207
  88. package/contracts/amps/AccessManagedProxyS38.sol +0 -211
  89. package/contracts/amps/AccessManagedProxyS39.sol +0 -215
  90. package/contracts/amps/AccessManagedProxyS4.sol +0 -75
  91. package/contracts/amps/AccessManagedProxyS40.sol +0 -219
  92. package/contracts/amps/AccessManagedProxyS5.sol +0 -79
  93. package/contracts/amps/AccessManagedProxyS6.sol +0 -83
  94. package/contracts/amps/AccessManagedProxyS7.sol +0 -87
  95. package/contracts/amps/AccessManagedProxyS8.sol +0 -91
  96. package/contracts/amps/AccessManagedProxyS9.sol +0 -95
@@ -0,0 +1,321 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "DummyAccessManaged",
4
+ "sourceName": "contracts/mock/DummyAccessManaged.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "address",
15
+ "name": "authority",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "name": "AccessManagedInvalidAuthority",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [
24
+ {
25
+ "internalType": "address",
26
+ "name": "caller",
27
+ "type": "address"
28
+ },
29
+ {
30
+ "internalType": "uint32",
31
+ "name": "delay",
32
+ "type": "uint32"
33
+ }
34
+ ],
35
+ "name": "AccessManagedRequiredDelay",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "inputs": [
40
+ {
41
+ "internalType": "address",
42
+ "name": "caller",
43
+ "type": "address"
44
+ }
45
+ ],
46
+ "name": "AccessManagedUnauthorized",
47
+ "type": "error"
48
+ },
49
+ {
50
+ "inputs": [
51
+ {
52
+ "internalType": "address",
53
+ "name": "target",
54
+ "type": "address"
55
+ }
56
+ ],
57
+ "name": "AddressEmptyCode",
58
+ "type": "error"
59
+ },
60
+ {
61
+ "inputs": [
62
+ {
63
+ "internalType": "address",
64
+ "name": "implementation",
65
+ "type": "address"
66
+ }
67
+ ],
68
+ "name": "ERC1967InvalidImplementation",
69
+ "type": "error"
70
+ },
71
+ {
72
+ "inputs": [],
73
+ "name": "ERC1967NonPayable",
74
+ "type": "error"
75
+ },
76
+ {
77
+ "inputs": [],
78
+ "name": "FailedCall",
79
+ "type": "error"
80
+ },
81
+ {
82
+ "inputs": [],
83
+ "name": "InvalidInitialization",
84
+ "type": "error"
85
+ },
86
+ {
87
+ "inputs": [],
88
+ "name": "NotInitializing",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [],
93
+ "name": "UUPSUnauthorizedCallContext",
94
+ "type": "error"
95
+ },
96
+ {
97
+ "inputs": [
98
+ {
99
+ "internalType": "bytes32",
100
+ "name": "slot",
101
+ "type": "bytes32"
102
+ }
103
+ ],
104
+ "name": "UUPSUnsupportedProxiableUUID",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "anonymous": false,
109
+ "inputs": [
110
+ {
111
+ "indexed": false,
112
+ "internalType": "address",
113
+ "name": "authority",
114
+ "type": "address"
115
+ }
116
+ ],
117
+ "name": "AuthorityUpdated",
118
+ "type": "event"
119
+ },
120
+ {
121
+ "anonymous": false,
122
+ "inputs": [
123
+ {
124
+ "indexed": false,
125
+ "internalType": "uint64",
126
+ "name": "version",
127
+ "type": "uint64"
128
+ }
129
+ ],
130
+ "name": "Initialized",
131
+ "type": "event"
132
+ },
133
+ {
134
+ "anonymous": false,
135
+ "inputs": [
136
+ {
137
+ "indexed": false,
138
+ "internalType": "bytes4",
139
+ "name": "selector",
140
+ "type": "bytes4"
141
+ }
142
+ ],
143
+ "name": "MethodCalled",
144
+ "type": "event"
145
+ },
146
+ {
147
+ "anonymous": false,
148
+ "inputs": [
149
+ {
150
+ "indexed": true,
151
+ "internalType": "address",
152
+ "name": "implementation",
153
+ "type": "address"
154
+ }
155
+ ],
156
+ "name": "Upgraded",
157
+ "type": "event"
158
+ },
159
+ {
160
+ "inputs": [],
161
+ "name": "UPGRADE_INTERFACE_VERSION",
162
+ "outputs": [
163
+ {
164
+ "internalType": "string",
165
+ "name": "",
166
+ "type": "string"
167
+ }
168
+ ],
169
+ "stateMutability": "view",
170
+ "type": "function"
171
+ },
172
+ {
173
+ "inputs": [],
174
+ "name": "authority",
175
+ "outputs": [
176
+ {
177
+ "internalType": "address",
178
+ "name": "",
179
+ "type": "address"
180
+ }
181
+ ],
182
+ "stateMutability": "view",
183
+ "type": "function"
184
+ },
185
+ {
186
+ "inputs": [],
187
+ "name": "callDirect",
188
+ "outputs": [],
189
+ "stateMutability": "nonpayable",
190
+ "type": "function"
191
+ },
192
+ {
193
+ "inputs": [],
194
+ "name": "callThru1967",
195
+ "outputs": [],
196
+ "stateMutability": "nonpayable",
197
+ "type": "function"
198
+ },
199
+ {
200
+ "inputs": [],
201
+ "name": "callThruAMP",
202
+ "outputs": [],
203
+ "stateMutability": "nonpayable",
204
+ "type": "function"
205
+ },
206
+ {
207
+ "inputs": [],
208
+ "name": "callThruAMPNonSkippedMethod",
209
+ "outputs": [],
210
+ "stateMutability": "nonpayable",
211
+ "type": "function"
212
+ },
213
+ {
214
+ "inputs": [],
215
+ "name": "callThruAMPSkippedMethod",
216
+ "outputs": [],
217
+ "stateMutability": "nonpayable",
218
+ "type": "function"
219
+ },
220
+ {
221
+ "inputs": [
222
+ {
223
+ "internalType": "address",
224
+ "name": "initialAuthority",
225
+ "type": "address"
226
+ }
227
+ ],
228
+ "name": "initialize",
229
+ "outputs": [],
230
+ "stateMutability": "nonpayable",
231
+ "type": "function"
232
+ },
233
+ {
234
+ "inputs": [],
235
+ "name": "isConsumingScheduledOp",
236
+ "outputs": [
237
+ {
238
+ "internalType": "bytes4",
239
+ "name": "",
240
+ "type": "bytes4"
241
+ }
242
+ ],
243
+ "stateMutability": "view",
244
+ "type": "function"
245
+ },
246
+ {
247
+ "inputs": [],
248
+ "name": "proxiableUUID",
249
+ "outputs": [
250
+ {
251
+ "internalType": "bytes32",
252
+ "name": "",
253
+ "type": "bytes32"
254
+ }
255
+ ],
256
+ "stateMutability": "view",
257
+ "type": "function"
258
+ },
259
+ {
260
+ "inputs": [],
261
+ "name": "pureMethod",
262
+ "outputs": [
263
+ {
264
+ "internalType": "uint256",
265
+ "name": "",
266
+ "type": "uint256"
267
+ }
268
+ ],
269
+ "stateMutability": "pure",
270
+ "type": "function"
271
+ },
272
+ {
273
+ "inputs": [
274
+ {
275
+ "internalType": "address",
276
+ "name": "newAuthority",
277
+ "type": "address"
278
+ }
279
+ ],
280
+ "name": "setAuthority",
281
+ "outputs": [],
282
+ "stateMutability": "nonpayable",
283
+ "type": "function"
284
+ },
285
+ {
286
+ "inputs": [
287
+ {
288
+ "internalType": "address",
289
+ "name": "newImplementation",
290
+ "type": "address"
291
+ },
292
+ {
293
+ "internalType": "bytes",
294
+ "name": "data",
295
+ "type": "bytes"
296
+ }
297
+ ],
298
+ "name": "upgradeToAndCall",
299
+ "outputs": [],
300
+ "stateMutability": "payable",
301
+ "type": "function"
302
+ },
303
+ {
304
+ "inputs": [],
305
+ "name": "viewMethod",
306
+ "outputs": [
307
+ {
308
+ "internalType": "address",
309
+ "name": "",
310
+ "type": "address"
311
+ }
312
+ ],
313
+ "stateMutability": "view",
314
+ "type": "function"
315
+ }
316
+ ],
317
+ "bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051610dba6100f95f395f818161054c0152818161057501526106b60152610dba5ff3fe6080604052600436106100d9575f3560e01c8063ad3cb1cc1161007c578063c4d66de811610057578063c4d66de814610213578063caa719a814610232578063e68be8a914610246578063fc7b17b91461025a575f5ffd5b8063ad3cb1cc14610196578063becf8b49146101d3578063bf7e214f146101e7575f5ffd5b80637a9e5e4b116100b75780637a9e5e4b1461012d5780638c3fce0e1461014c5780638fb36037146101605780639ba7fcaa14610181575f5ffd5b80634f1ef286146100dd57806352d1902d146100f257806375a62cfb14610119575b5f5ffd5b6100f06100eb366004610b43565b61026c565b005b3480156100fd575f5ffd5b50610106610282565b6040519081526020015b60405180910390f35b348015610124575f5ffd5b506100f061029d565b348015610138575f5ffd5b506100f0610147366004610c07565b6102cb565b348015610157575f5ffd5b506100f0610352565b34801561016b575f5ffd5b50610174610376565b6040516101109190610c27565b34801561018c575f5ffd5b506201e240610106565b3480156101a1575f5ffd5b506101c6604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101109190610c3c565b3480156101de575f5ffd5b506100f06103ac565b3480156101f2575f5ffd5b506101fb6103dc565b6040516001600160a01b039091168152602001610110565b34801561021e575f5ffd5b506100f061022d366004610c07565b6103f7565b34801561023d575f5ffd5b506100f06104f0565b348015610251575f5ffd5b506100f061051d565b348015610265575f5ffd5b50336101fb565b610274610541565b61027e82826105ea565b5050565b5f61028b6106ab565b505f516020610d655f395f51905f5290565b6040515f516020610d455f395f51905f52906102c1906375a62cfb60e01b90610c27565b60405180910390a1565b336102d46103dc565b6001600160a01b0316816001600160a01b0316146103145760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03610349576040516361798f2f60e11b81526001600160a01b038316600482015260240161030b565b61027e826106f4565b6040515f516020610d455f395f51905f52906102c19063461fe70760e11b90610c27565b5f516020610d255f395f51905f5280545f9190600160a01b900460ff1661039d575f6103a6565b638fb3603760e01b5b91505090565b6103b8335b5f36610754565b6040515f516020610d455f395f51905f52906102c19063becf8b4960e01b90610c27565b5f516020610d255f395f51905f52546001600160a01b031690565b5f61040061084a565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156104275750825b90505f8267ffffffffffffffff1660011480156104435750303b155b905081158015610451575080155b1561046f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561049957845460ff60401b1916600160401b1785555b6104a286610874565b83156104e857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6104f9336103b1565b6040515f516020610d455f395f51905f52906102c190631954e33560e31b90610c27565b6040515f516020610d455f395f51905f52906102c19063e68be8a960e01b90610c27565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806105c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105bb5f516020610d655f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105e55760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610644575060408051601f3d908101601f1916820190925261064191810190610c71565b60015b61066c57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161030b565b5f516020610d655f395f51905f52811461069c57604051632a87526960e21b81526004810182905260240161030b565b6106a68383610885565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105e55760405163703e46dd60e11b815260040160405180910390fd5b5f516020610d255f395f51905f5280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f516020610d255f395f51905f525f8061078c61076f6103dc565b873061077e60045f8a8c610c88565b61078791610caf565b6108da565b91509150816104e85763ffffffff81161561082757825460ff60a01b1916600160a01b1783556107ba6103dc565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016107e993929190610ce5565b5f604051808303815f87803b158015610800575f5ffd5b505af1158015610812573d5f5f3e3d5ffd5b5050845460ff60a01b19168555506104e89050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161030b565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b61087c61096c565b6105e781610991565b61088e826109a2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156108d2576106a68282610a05565b61027e610aa5565b6040516001600160a01b038085166024830152831660448201526001600160e01b0319821660648201525f908190819060840160408051601f19818403018152918152602080830180516001600160e01b031663b700961360e01b1781525f808052918290528351939450919290918a5afa15610962575f516020805191945081901c150291505b5094509492505050565b610974610ac4565b6105e557604051631afcd79f60e31b815260040160405180910390fd5b61099961096c565b6105e7816106f4565b806001600160a01b03163b5f036109d757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161030b565b5f516020610d655f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610a128484610add565b9050808015610a3357505f3d1180610a3357505f846001600160a01b03163b115b15610a4857610a40610af0565b91505061086e565b8015610a7257604051639996b31560e01b81526001600160a01b038516600482015260240161030b565b3d15610a8557610a80610b09565b610a9e565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156105e55760405163b398979f60e01b815260040160405180910390fd5b5f610acd61084a565b54600160401b900460ff16919050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80356001600160a01b0381168114610b2a575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610b54575f5ffd5b610b5d83610b14565b9150602083013567ffffffffffffffff811115610b78575f5ffd5b8301601f81018513610b88575f5ffd5b803567ffffffffffffffff811115610ba257610ba2610b2f565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610bd157610bd1610b2f565b604052818152828201602001871015610be8575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610c17575f5ffd5b610c2082610b14565b9392505050565b6001600160e01b031991909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610c81575f5ffd5b5051919050565b5f5f85851115610c96575f5ffd5b83861115610ca2575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610a9e576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f191601019291505056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fb3ee0c9c17a6f300ca9db0ce582eb48eb468bbc48403087bedae4907797003e64736f6c634300081e0033",
318
+ "deployedBytecode": "0x6080604052600436106100d9575f3560e01c8063ad3cb1cc1161007c578063c4d66de811610057578063c4d66de814610213578063caa719a814610232578063e68be8a914610246578063fc7b17b91461025a575f5ffd5b8063ad3cb1cc14610196578063becf8b49146101d3578063bf7e214f146101e7575f5ffd5b80637a9e5e4b116100b75780637a9e5e4b1461012d5780638c3fce0e1461014c5780638fb36037146101605780639ba7fcaa14610181575f5ffd5b80634f1ef286146100dd57806352d1902d146100f257806375a62cfb14610119575b5f5ffd5b6100f06100eb366004610b43565b61026c565b005b3480156100fd575f5ffd5b50610106610282565b6040519081526020015b60405180910390f35b348015610124575f5ffd5b506100f061029d565b348015610138575f5ffd5b506100f0610147366004610c07565b6102cb565b348015610157575f5ffd5b506100f0610352565b34801561016b575f5ffd5b50610174610376565b6040516101109190610c27565b34801561018c575f5ffd5b506201e240610106565b3480156101a1575f5ffd5b506101c6604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101109190610c3c565b3480156101de575f5ffd5b506100f06103ac565b3480156101f2575f5ffd5b506101fb6103dc565b6040516001600160a01b039091168152602001610110565b34801561021e575f5ffd5b506100f061022d366004610c07565b6103f7565b34801561023d575f5ffd5b506100f06104f0565b348015610251575f5ffd5b506100f061051d565b348015610265575f5ffd5b50336101fb565b610274610541565b61027e82826105ea565b5050565b5f61028b6106ab565b505f516020610d655f395f51905f5290565b6040515f516020610d455f395f51905f52906102c1906375a62cfb60e01b90610c27565b60405180910390a1565b336102d46103dc565b6001600160a01b0316816001600160a01b0316146103145760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03610349576040516361798f2f60e11b81526001600160a01b038316600482015260240161030b565b61027e826106f4565b6040515f516020610d455f395f51905f52906102c19063461fe70760e11b90610c27565b5f516020610d255f395f51905f5280545f9190600160a01b900460ff1661039d575f6103a6565b638fb3603760e01b5b91505090565b6103b8335b5f36610754565b6040515f516020610d455f395f51905f52906102c19063becf8b4960e01b90610c27565b5f516020610d255f395f51905f52546001600160a01b031690565b5f61040061084a565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156104275750825b90505f8267ffffffffffffffff1660011480156104435750303b155b905081158015610451575080155b1561046f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561049957845460ff60401b1916600160401b1785555b6104a286610874565b83156104e857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6104f9336103b1565b6040515f516020610d455f395f51905f52906102c190631954e33560e31b90610c27565b6040515f516020610d455f395f51905f52906102c19063e68be8a960e01b90610c27565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806105c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105bb5f516020610d655f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105e55760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610644575060408051601f3d908101601f1916820190925261064191810190610c71565b60015b61066c57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161030b565b5f516020610d655f395f51905f52811461069c57604051632a87526960e21b81526004810182905260240161030b565b6106a68383610885565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105e55760405163703e46dd60e11b815260040160405180910390fd5b5f516020610d255f395f51905f5280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f516020610d255f395f51905f525f8061078c61076f6103dc565b873061077e60045f8a8c610c88565b61078791610caf565b6108da565b91509150816104e85763ffffffff81161561082757825460ff60a01b1916600160a01b1783556107ba6103dc565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016107e993929190610ce5565b5f604051808303815f87803b158015610800575f5ffd5b505af1158015610812573d5f5f3e3d5ffd5b5050845460ff60a01b19168555506104e89050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161030b565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b61087c61096c565b6105e781610991565b61088e826109a2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156108d2576106a68282610a05565b61027e610aa5565b6040516001600160a01b038085166024830152831660448201526001600160e01b0319821660648201525f908190819060840160408051601f19818403018152918152602080830180516001600160e01b031663b700961360e01b1781525f808052918290528351939450919290918a5afa15610962575f516020805191945081901c150291505b5094509492505050565b610974610ac4565b6105e557604051631afcd79f60e31b815260040160405180910390fd5b61099961096c565b6105e7816106f4565b806001600160a01b03163b5f036109d757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161030b565b5f516020610d655f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610a128484610add565b9050808015610a3357505f3d1180610a3357505f846001600160a01b03163b115b15610a4857610a40610af0565b91505061086e565b8015610a7257604051639996b31560e01b81526001600160a01b038516600482015260240161030b565b3d15610a8557610a80610b09565b610a9e565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156105e55760405163b398979f60e01b815260040160405180910390fd5b5f610acd61084a565b54600160401b900460ff16919050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80356001600160a01b0381168114610b2a575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610b54575f5ffd5b610b5d83610b14565b9150602083013567ffffffffffffffff811115610b78575f5ffd5b8301601f81018513610b88575f5ffd5b803567ffffffffffffffff811115610ba257610ba2610b2f565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610bd157610bd1610b2f565b604052818152828201602001871015610be8575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610c17575f5ffd5b610c2082610b14565b9392505050565b6001600160e01b031991909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610c81575f5ffd5b5051919050565b5f5f85851115610c96575f5ffd5b83861115610ca2575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610a9e576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f191601019291505056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fb3ee0c9c17a6f300ca9db0ce582eb48eb468bbc48403087bedae4907797003e64736f6c634300081e0033",
319
+ "linkReferences": {},
320
+ "deployedLinkReferences": {}
321
+ }
@@ -8,6 +8,28 @@
8
8
  "stateMutability": "nonpayable",
9
9
  "type": "constructor"
10
10
  },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "address",
15
+ "name": "authority",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "name": "AccessManagedInvalidAuthority",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [
24
+ {
25
+ "internalType": "address",
26
+ "name": "caller",
27
+ "type": "address"
28
+ }
29
+ ],
30
+ "name": "AccessManagedUnauthorized",
31
+ "type": "error"
32
+ },
11
33
  {
12
34
  "inputs": [
13
35
  {
@@ -66,6 +88,19 @@
66
88
  "name": "UUPSUnsupportedProxiableUUID",
67
89
  "type": "error"
68
90
  },
91
+ {
92
+ "anonymous": false,
93
+ "inputs": [
94
+ {
95
+ "indexed": false,
96
+ "internalType": "address",
97
+ "name": "authority",
98
+ "type": "address"
99
+ }
100
+ ],
101
+ "name": "AuthorityUpdated",
102
+ "type": "event"
103
+ },
69
104
  {
70
105
  "anonymous": false,
71
106
  "inputs": [
@@ -92,6 +127,38 @@
92
127
  "name": "MethodCalled",
93
128
  "type": "event"
94
129
  },
130
+ {
131
+ "anonymous": false,
132
+ "inputs": [
133
+ {
134
+ "indexed": false,
135
+ "internalType": "bytes",
136
+ "name": "msgData",
137
+ "type": "bytes"
138
+ },
139
+ {
140
+ "indexed": false,
141
+ "internalType": "uint256",
142
+ "name": "value",
143
+ "type": "uint256"
144
+ }
145
+ ],
146
+ "name": "NonStandardMethodCalled",
147
+ "type": "event"
148
+ },
149
+ {
150
+ "anonymous": false,
151
+ "inputs": [
152
+ {
153
+ "indexed": false,
154
+ "internalType": "bytes4[]",
155
+ "name": "newPassThruMethods",
156
+ "type": "bytes4[]"
157
+ }
158
+ ],
159
+ "name": "PassThruMethodsChanged",
160
+ "type": "event"
161
+ },
95
162
  {
96
163
  "anonymous": false,
97
164
  "inputs": [
@@ -105,6 +172,10 @@
105
172
  "name": "Upgraded",
106
173
  "type": "event"
107
174
  },
175
+ {
176
+ "stateMutability": "payable",
177
+ "type": "fallback"
178
+ },
108
179
  {
109
180
  "inputs": [],
110
181
  "name": "UPGRADE_INTERFACE_VERSION",
@@ -153,6 +224,25 @@
153
224
  "stateMutability": "nonpayable",
154
225
  "type": "function"
155
226
  },
227
+ {
228
+ "inputs": [
229
+ {
230
+ "internalType": "bytes",
231
+ "name": "something",
232
+ "type": "bytes"
233
+ }
234
+ ],
235
+ "name": "checkCanCall",
236
+ "outputs": [
237
+ {
238
+ "internalType": "bytes4",
239
+ "name": "selector",
240
+ "type": "bytes4"
241
+ }
242
+ ],
243
+ "stateMutability": "nonpayable",
244
+ "type": "function"
245
+ },
156
246
  {
157
247
  "inputs": [],
158
248
  "name": "initialize",
@@ -186,6 +276,32 @@
186
276
  "stateMutability": "pure",
187
277
  "type": "function"
188
278
  },
279
+ {
280
+ "inputs": [
281
+ {
282
+ "internalType": "address",
283
+ "name": "newAuthority",
284
+ "type": "address"
285
+ }
286
+ ],
287
+ "name": "setAuthority",
288
+ "outputs": [],
289
+ "stateMutability": "nonpayable",
290
+ "type": "function"
291
+ },
292
+ {
293
+ "inputs": [
294
+ {
295
+ "internalType": "bytes4[]",
296
+ "name": "newPTMethods",
297
+ "type": "bytes4[]"
298
+ }
299
+ ],
300
+ "name": "setPassThruMethods",
301
+ "outputs": [],
302
+ "stateMutability": "nonpayable",
303
+ "type": "function"
304
+ },
189
305
  {
190
306
  "inputs": [
191
307
  {
@@ -216,10 +332,14 @@
216
332
  ],
217
333
  "stateMutability": "view",
218
334
  "type": "function"
335
+ },
336
+ {
337
+ "stateMutability": "payable",
338
+ "type": "receive"
219
339
  }
220
340
  ],
221
- "bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516109086100f95f395f81816103bc015281816103e5015261052801526109085ff3fe60806040526004361061009a575f3560e01c80639ba7fcaa116100625780639ba7fcaa14610116578063ad3cb1cc1461012b578063becf8b4914610168578063caa719a81461017c578063e68be8a914610190578063fc7b17b9146101a4575f5ffd5b80634f1ef2861461009e57806352d1902d146100b357806375a62cfb146100da5780638129fc1c146100ee5780638c3fce0e14610102575b5f5ffd5b6100b16100ac36600461074a565b6101be565b005b3480156100be575f5ffd5b506100c76101d4565b6040519081526020015b60405180910390f35b3480156100e5575f5ffd5b506100b16101ef565b3480156100f9575f5ffd5b506100b161021d565b34801561010d575f5ffd5b506100b1610321565b348015610121575f5ffd5b506201e2406100c7565b348015610136575f5ffd5b5061015b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100d1919061081b565b348015610173575f5ffd5b506100b1610345565b348015610187575f5ffd5b506100b1610369565b34801561019b575f5ffd5b506100b161038d565b3480156101af575f5ffd5b506040513381526020016100d1565b6101c66103b1565b6101d08282610457565b5050565b5f6101dd61051d565b505f5160206108b35f395f51905f5290565b6040515f5160206108935f395f51905f5290610213906375a62cfb60e01b90610850565b60405180910390a1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156102625750825b90505f8267ffffffffffffffff16600114801561027e5750303b155b90508115801561028c575080155b156102aa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156102d457845460ff60401b1916600160401b1785555b831561031a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6040515f5160206108935f395f51905f52906102139063461fe70760e11b90610850565b6040515f5160206108935f395f51905f52906102139063becf8b4960e01b90610850565b6040515f5160206108935f395f51905f529061021390631954e33560e31b90610850565b6040515f5160206108935f395f51905f52906102139063e68be8a960e01b90610850565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061043757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661042b5f5160206108b35f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156104555760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156104b1575060408051601f3d908101601f191682019092526104ae91810190610865565b60015b6104de57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206108b35f395f51905f52811461050e57604051632a87526960e21b8152600481018290526024016104d5565b6105188383610566565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104555760405163703e46dd60e11b815260040160405180910390fd5b61056f826105bb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156105b357610518828261061e565b6101d0610690565b806001600160a01b03163b5f036105f057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104d5565b5f5160206108b35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161063a919061087c565b5f60405180830381855af49150503d805f8114610672576040519150601f19603f3d011682016040523d82523d5f602084013e610677565b606091505b50915091506106878583836106af565b95945050505050565b34156104555760405163b398979f60e01b815260040160405180910390fd5b6060826106c4576106bf8261070e565b610707565b81511580156106db57506001600160a01b0384163b155b1561070457604051639996b31560e01b81526001600160a01b03851660048201526024016104d5565b50805b9392505050565b80511561071d57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561075b575f5ffd5b82356001600160a01b0381168114610771575f5ffd5b9150602083013567ffffffffffffffff81111561078c575f5ffd5b8301601f8101851361079c575f5ffd5b803567ffffffffffffffff8111156107b6576107b6610736565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107e5576107e5610736565b6040528181528282016020018710156107fc575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160e01b031991909116815260200190565b5f60208284031215610875575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c0a1ae47485b869db394e008810abb3c35eecdc46cb221b2ddb879874daca0dd64736f6c634300081c0033",
222
- "deployedBytecode": "0x60806040526004361061009a575f3560e01c80639ba7fcaa116100625780639ba7fcaa14610116578063ad3cb1cc1461012b578063becf8b4914610168578063caa719a81461017c578063e68be8a914610190578063fc7b17b9146101a4575f5ffd5b80634f1ef2861461009e57806352d1902d146100b357806375a62cfb146100da5780638129fc1c146100ee5780638c3fce0e14610102575b5f5ffd5b6100b16100ac36600461074a565b6101be565b005b3480156100be575f5ffd5b506100c76101d4565b6040519081526020015b60405180910390f35b3480156100e5575f5ffd5b506100b16101ef565b3480156100f9575f5ffd5b506100b161021d565b34801561010d575f5ffd5b506100b1610321565b348015610121575f5ffd5b506201e2406100c7565b348015610136575f5ffd5b5061015b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100d1919061081b565b348015610173575f5ffd5b506100b1610345565b348015610187575f5ffd5b506100b1610369565b34801561019b575f5ffd5b506100b161038d565b3480156101af575f5ffd5b506040513381526020016100d1565b6101c66103b1565b6101d08282610457565b5050565b5f6101dd61051d565b505f5160206108b35f395f51905f5290565b6040515f5160206108935f395f51905f5290610213906375a62cfb60e01b90610850565b60405180910390a1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156102625750825b90505f8267ffffffffffffffff16600114801561027e5750303b155b90508115801561028c575080155b156102aa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156102d457845460ff60401b1916600160401b1785555b831561031a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6040515f5160206108935f395f51905f52906102139063461fe70760e11b90610850565b6040515f5160206108935f395f51905f52906102139063becf8b4960e01b90610850565b6040515f5160206108935f395f51905f529061021390631954e33560e31b90610850565b6040515f5160206108935f395f51905f52906102139063e68be8a960e01b90610850565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061043757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661042b5f5160206108b35f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156104555760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156104b1575060408051601f3d908101601f191682019092526104ae91810190610865565b60015b6104de57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206108b35f395f51905f52811461050e57604051632a87526960e21b8152600481018290526024016104d5565b6105188383610566565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104555760405163703e46dd60e11b815260040160405180910390fd5b61056f826105bb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156105b357610518828261061e565b6101d0610690565b806001600160a01b03163b5f036105f057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016104d5565b5f5160206108b35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161063a919061087c565b5f60405180830381855af49150503d805f8114610672576040519150601f19603f3d011682016040523d82523d5f602084013e610677565b606091505b50915091506106878583836106af565b95945050505050565b34156104555760405163b398979f60e01b815260040160405180910390fd5b6060826106c4576106bf8261070e565b610707565b81511580156106db57506001600160a01b0384163b155b1561070457604051639996b31560e01b81526001600160a01b03851660048201526024016104d5565b50805b9392505050565b80511561071d57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561075b575f5ffd5b82356001600160a01b0381168114610771575f5ffd5b9150602083013567ffffffffffffffff81111561078c575f5ffd5b8301601f8101851361079c575f5ffd5b803567ffffffffffffffff8111156107b6576107b6610736565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107e5576107e5610736565b6040528181528282016020018710156107fc575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160e01b031991909116815260200190565b5f60208284031215610875575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c0a1ae47485b869db394e008810abb3c35eecdc46cb221b2ddb879874daca0dd64736f6c634300081c0033",
341
+ "bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516112376100f95f395f81816105a7015281816105d0015261071301526112375ff3fe6080604052600436106100e0575f3560e01c80639ba7fcaa1161007e578063caa719a811610058578063caa719a81461030e578063e68be8a914610322578063fc7b17b914610336578063fd07a757146103505761016e565b80639ba7fcaa146102a8578063ad3cb1cc146102bd578063becf8b49146102fa5761016e565b80637a9e5e4b116100ba5780637a9e5e4b146102355780638129fc1c146102545780638c01fde4146102685780638c3fce0e146102945761016e565b80634f1ef286146101e557806352d1902d146101fa57806375a62cfb146102215761016e565b3661016e575f5160206111c25f395f51905f527fd217fcc64ca03b17db426f651be32786de1c93adfb772d680771c96323f9d57b6040516101219190610e3c565b60405180910390a1604080518181525f918101919091523460208201527f7a9aeda1e081972ce583cf32c142361601c673a990ea3f1cc8594fe898feee46906060015b60405180910390a1005b5f5160206111c25f395f51905f527fb32cdf4d3c016cb0f079f205ad61c36b1a837fb3e95c70a94bdedfca0518a0106040516101aa9190610e3c565b60405180910390a17f7a9aeda1e081972ce583cf32c142361601c673a990ea3f1cc8594fe898feee465f363460405161016493929190610e51565b6101f86101f3366004610f4d565b61036f565b005b348015610205575f5ffd5b5061020e610385565b6040519081526020015b60405180910390f35b34801561022c575f5ffd5b506101f86103a0565b348015610240575f5ffd5b506101f861024f366004610f9a565b6103ce565b34801561025f575f5ffd5b506101f86103da565b348015610273575f5ffd5b50610287610282366004610fbc565b6104c9565b6040516102189190610e3c565b34801561029f575f5ffd5b506101f8610503565b3480156102b3575f5ffd5b506201e24061020e565b3480156102c8575f5ffd5b506102ed604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102189190610ff6565b348015610305575f5ffd5b506101f8610527565b348015610319575f5ffd5b506101f861054b565b34801561032d575f5ffd5b506101f861056f565b348015610341575f5ffd5b50604051338152602001610218565b34801561035b575f5ffd5b506101f861036a36600461102b565b610593565b61037761059c565b6103818282610642565b5050565b5f61038e610708565b505f5160206111e25f395f51905f5290565b6040515f5160206111c25f395f51905f52906103c4906375a62cfb60e01b90610e3c565b60405180910390a1565b6103d781610751565b50565b5f6103e36107fa565b805490915060ff600160401b820416159067ffffffffffffffff165f8115801561040a5750825b90505f8267ffffffffffffffff1660011480156104265750303b155b905081158015610434575080155b156104525760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047c57845460ff60401b1916600160401b1785555b83156104c257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b805160208201206104da3382610824565b5f5160206111c25f395f51905f52816040516104f69190610e3c565b60405180910390a1919050565b6040515f5160206111c25f395f51905f52906103c49063461fe70760e11b90610e3c565b6040515f5160206111c25f395f51905f52906103c49063becf8b4960e01b90610e3c565b6040515f5160206111c25f395f51905f52906103c490631954e33560e31b90610e3c565b6040515f5160206111c25f395f51905f52906103c49063e68be8a960e01b90610e3c565b6103d781610937565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061062257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106165f5160206111e25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156106405760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561069c575060408051601f3d908101601f19168201909252610699918101906110eb565b60015b6106c957604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206111e25f395f51905f5281146106f957604051632a87526960e21b8152600481018290526024016106c0565b6107038383610a5d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106405760405163703e46dd60e11b815260040160405180910390fd5b806001600160a01b03163b5f03610786576040516361798f2f60e11b81526001600160a01b03821660048201526024016106c0565b807f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0080546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610861573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108859190611102565b60405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b031985166044830152919091169063b7009613906064016040805180830381865afa1580156108e0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610904919061111d565b50905082816109315760405162d1953b60e31b81526001600160a01b0390911660048201526024016106c0565b50505050565b7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c018054604080516020808402820181019092528281527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00935f9391929091908301828280156109ef57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109b15790505b505050505090505f5b8151811015610a53575f836002015f848481518110610a1957610a19611161565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016109f8565b5061070383610ab2565b610a6682610c26565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610aaa576107038282610c89565b610381610d29565b80517f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c009067ffffffffffffffff811115610aee57610aee610e9c565b604051908082528060200260200182016040528015610b17578160200160208202803683370190505b508051610b2e916001840191602090910190610d7f565b505f5b8251811015610bea57828181518110610b4c57610b4c611161565b6020026020010151826001018281548110610b6957610b69611161565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610bb057610bb0611161565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff1916911515919091179055600101610b31565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b49382604051610c1a9190611175565b60405180910390a15050565b806001600160a01b03163b5f03610c5b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016106c0565b5f5160206111e25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610c968484610d48565b9050808015610cb757505f3d1180610cb757505f846001600160a01b03163b115b15610ccc57610cc4610d5b565b91505061081e565b8015610cf657604051639996b31560e01b81526001600160a01b03851660048201526024016106c0565b3d15610d0957610d04610d74565b610d22565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156106405760405163b398979f60e01b815260040160405180910390fd5b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f2090600701600890048101928215610e18579160200282015f5b83821115610de657835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610da5565b8015610e165782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610de6565b505b50610e24929150610e28565b5090565b5b80821115610e24575f8155600101610e29565b6001600160e01b031991909116815260200190565b60408152826040820152828460608301375f606084830101525f6060601f19601f8601168301019050826020830152949350505050565b6001600160a01b03811681146103d7575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ed957610ed9610e9c565b604052919050565b5f82601f830112610ef0575f5ffd5b813567ffffffffffffffff811115610f0a57610f0a610e9c565b610f1d601f8201601f1916602001610eb0565b818152846020838601011115610f31575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610f5e575f5ffd5b8235610f6981610e88565b9150602083013567ffffffffffffffff811115610f84575f5ffd5b610f9085828601610ee1565b9150509250929050565b5f60208284031215610faa575f5ffd5b8135610fb581610e88565b9392505050565b5f60208284031215610fcc575f5ffd5b813567ffffffffffffffff811115610fe2575f5ffd5b610fee84828501610ee1565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561103b575f5ffd5b813567ffffffffffffffff811115611051575f5ffd5b8201601f81018413611061575f5ffd5b803567ffffffffffffffff81111561107b5761107b610e9c565b8060051b61108b60208201610eb0565b918252602081840181019290810190878411156110a6575f5ffd5b6020850194505b838510156110e057843592506001600160e01b0319831683146110ce575f5ffd5b828252602094850194909101906110ad565b979650505050505050565b5f602082840312156110fb575f5ffd5b5051919050565b5f60208284031215611112575f5ffd5b8151610fb581610e88565b5f5f6040838503121561112e575f5ffd5b8251801515811461113d575f5ffd5b602084015190925063ffffffff81168114611156575f5ffd5b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156111b65783516001600160e01b03191683526020938401939092019160010161118e565b50909594505050505056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200b73e3f1a7d35e03202a89b580933654c560817ea19d941dc892ce68404919b864736f6c634300081e0033",
342
+ "deployedBytecode": "0x6080604052600436106100e0575f3560e01c80639ba7fcaa1161007e578063caa719a811610058578063caa719a81461030e578063e68be8a914610322578063fc7b17b914610336578063fd07a757146103505761016e565b80639ba7fcaa146102a8578063ad3cb1cc146102bd578063becf8b49146102fa5761016e565b80637a9e5e4b116100ba5780637a9e5e4b146102355780638129fc1c146102545780638c01fde4146102685780638c3fce0e146102945761016e565b80634f1ef286146101e557806352d1902d146101fa57806375a62cfb146102215761016e565b3661016e575f5160206111c25f395f51905f527fd217fcc64ca03b17db426f651be32786de1c93adfb772d680771c96323f9d57b6040516101219190610e3c565b60405180910390a1604080518181525f918101919091523460208201527f7a9aeda1e081972ce583cf32c142361601c673a990ea3f1cc8594fe898feee46906060015b60405180910390a1005b5f5160206111c25f395f51905f527fb32cdf4d3c016cb0f079f205ad61c36b1a837fb3e95c70a94bdedfca0518a0106040516101aa9190610e3c565b60405180910390a17f7a9aeda1e081972ce583cf32c142361601c673a990ea3f1cc8594fe898feee465f363460405161016493929190610e51565b6101f86101f3366004610f4d565b61036f565b005b348015610205575f5ffd5b5061020e610385565b6040519081526020015b60405180910390f35b34801561022c575f5ffd5b506101f86103a0565b348015610240575f5ffd5b506101f861024f366004610f9a565b6103ce565b34801561025f575f5ffd5b506101f86103da565b348015610273575f5ffd5b50610287610282366004610fbc565b6104c9565b6040516102189190610e3c565b34801561029f575f5ffd5b506101f8610503565b3480156102b3575f5ffd5b506201e24061020e565b3480156102c8575f5ffd5b506102ed604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102189190610ff6565b348015610305575f5ffd5b506101f8610527565b348015610319575f5ffd5b506101f861054b565b34801561032d575f5ffd5b506101f861056f565b348015610341575f5ffd5b50604051338152602001610218565b34801561035b575f5ffd5b506101f861036a36600461102b565b610593565b61037761059c565b6103818282610642565b5050565b5f61038e610708565b505f5160206111e25f395f51905f5290565b6040515f5160206111c25f395f51905f52906103c4906375a62cfb60e01b90610e3c565b60405180910390a1565b6103d781610751565b50565b5f6103e36107fa565b805490915060ff600160401b820416159067ffffffffffffffff165f8115801561040a5750825b90505f8267ffffffffffffffff1660011480156104265750303b155b905081158015610434575080155b156104525760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047c57845460ff60401b1916600160401b1785555b83156104c257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b805160208201206104da3382610824565b5f5160206111c25f395f51905f52816040516104f69190610e3c565b60405180910390a1919050565b6040515f5160206111c25f395f51905f52906103c49063461fe70760e11b90610e3c565b6040515f5160206111c25f395f51905f52906103c49063becf8b4960e01b90610e3c565b6040515f5160206111c25f395f51905f52906103c490631954e33560e31b90610e3c565b6040515f5160206111c25f395f51905f52906103c49063e68be8a960e01b90610e3c565b6103d781610937565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061062257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106165f5160206111e25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156106405760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561069c575060408051601f3d908101601f19168201909252610699918101906110eb565b60015b6106c957604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206111e25f395f51905f5281146106f957604051632a87526960e21b8152600481018290526024016106c0565b6107038383610a5d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106405760405163703e46dd60e11b815260040160405180910390fd5b806001600160a01b03163b5f03610786576040516361798f2f60e11b81526001600160a01b03821660048201526024016106c0565b807f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0080546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610861573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108859190611102565b60405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b031985166044830152919091169063b7009613906064016040805180830381865afa1580156108e0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610904919061111d565b50905082816109315760405162d1953b60e31b81526001600160a01b0390911660048201526024016106c0565b50505050565b7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c018054604080516020808402820181019092528281527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00935f9391929091908301828280156109ef57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109b15790505b505050505090505f5b8151811015610a53575f836002015f848481518110610a1957610a19611161565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016109f8565b5061070383610ab2565b610a6682610c26565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610aaa576107038282610c89565b610381610d29565b80517f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c009067ffffffffffffffff811115610aee57610aee610e9c565b604051908082528060200260200182016040528015610b17578160200160208202803683370190505b508051610b2e916001840191602090910190610d7f565b505f5b8251811015610bea57828181518110610b4c57610b4c611161565b6020026020010151826001018281548110610b6957610b69611161565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610bb057610bb0611161565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff1916911515919091179055600101610b31565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b49382604051610c1a9190611175565b60405180910390a15050565b806001600160a01b03163b5f03610c5b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016106c0565b5f5160206111e25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610c968484610d48565b9050808015610cb757505f3d1180610cb757505f846001600160a01b03163b115b15610ccc57610cc4610d5b565b91505061081e565b8015610cf657604051639996b31560e01b81526001600160a01b03851660048201526024016106c0565b3d15610d0957610d04610d74565b610d22565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156106405760405163b398979f60e01b815260040160405180910390fd5b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f2090600701600890048101928215610e18579160200282015f5b83821115610de657835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610da5565b8015610e165782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610de6565b505b50610e24929150610e28565b5090565b5b80821115610e24575f8155600101610e29565b6001600160e01b031991909116815260200190565b60408152826040820152828460608301375f606084830101525f6060601f19601f8601168301019050826020830152949350505050565b6001600160a01b03811681146103d7575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ed957610ed9610e9c565b604052919050565b5f82601f830112610ef0575f5ffd5b813567ffffffffffffffff811115610f0a57610f0a610e9c565b610f1d601f8201601f1916602001610eb0565b818152846020838601011115610f31575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610f5e575f5ffd5b8235610f6981610e88565b9150602083013567ffffffffffffffff811115610f84575f5ffd5b610f9085828601610ee1565b9150509250929050565b5f60208284031215610faa575f5ffd5b8135610fb581610e88565b9392505050565b5f60208284031215610fcc575f5ffd5b813567ffffffffffffffff811115610fe2575f5ffd5b610fee84828501610ee1565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561103b575f5ffd5b813567ffffffffffffffff811115611051575f5ffd5b8201601f81018413611061575f5ffd5b803567ffffffffffffffff81111561107b5761107b610e9c565b8060051b61108b60208201610eb0565b918252602081840181019290810190878411156110a6575f5ffd5b6020850194505b838510156110e057843592506001600160e01b0319831683146110ce575f5ffd5b828252602094850194909101906110ad565b979650505050505050565b5f602082840312156110fb575f5ffd5b5051919050565b5f60208284031215611112575f5ffd5b8151610fb581610e88565b5f5f6040838503121561112e575f5ffd5b8251801515811461113d575f5ffd5b602084015190925063ffffffff81168114611156575f5ffd5b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156111b65783516001600160e01b03191683526020938401939092019160010161118e565b50909594505050505056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200b73e3f1a7d35e03202a89b580933654c560817ea19d941dc892ce68404919b864736f6c634300081e0033",
223
343
  "linkReferences": {},
224
344
  "deployedLinkReferences": {}
225
345
  }
@@ -1,7 +1,8 @@
1
- // SPDX-License-Identifier: MIT
1
+ // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.0;
3
3
 
4
- import {AccessManagedProxy} from "./AccessManagedProxy.sol";
4
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
5
+ import {IAccessManagedProxy} from "./interfaces/IAccessManagedProxy.sol";
5
6
 
6
7
  /**
7
8
  * @title AMPUtils
@@ -13,6 +14,56 @@ library AMPUtils {
13
14
  // Error copied from IAccessManaged
14
15
  error AccessManagedUnauthorized(address caller);
15
16
 
17
+ struct AccessManagedProxyStorage {
18
+ IAccessManager accessManager;
19
+ bytes4[] passThruMethods; // This is used for observability
20
+ mapping(bytes4 => bool) skipAc; // This is the used for actual lookup
21
+ }
22
+
23
+ /**
24
+ * @notice Storage slot with the address of the current access mananger.
25
+ * @dev Computed as: `keccak256(
26
+ * abi.encode(uint256(keccak256("ensuro.storage.AccessManagedProxy")) - 1)
27
+ * ) & ~bytes32(uint256(0xff))
28
+ */
29
+ // solhint-disable-next-line const-name-snakecase
30
+ bytes32 internal constant AccessManagedProxyStorageLocation =
31
+ 0x787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00;
32
+
33
+ function getAccessManagedProxyStorage() internal pure returns (AccessManagedProxyStorage storage $) {
34
+ // solhint-disable-next-line no-inline-assembly
35
+ assembly {
36
+ $.slot := AccessManagedProxyStorageLocation
37
+ }
38
+ }
39
+
40
+ function setAccessManager(IAccessManager accessManager) internal {
41
+ if (address(accessManager).code.length == 0) {
42
+ revert IAccessManagedProxy.AccessManagedInvalidAuthority(address(accessManager));
43
+ }
44
+ getAccessManagedProxyStorage().accessManager = accessManager;
45
+ emit IAccessManagedProxy.AuthorityUpdated(address(accessManager));
46
+ }
47
+
48
+ function setPassThruMethods(bytes4[] memory passThruMethods) internal {
49
+ AccessManagedProxyStorage storage $ = AMPUtils.getAccessManagedProxyStorage();
50
+ $.passThruMethods = new bytes4[](passThruMethods.length);
51
+ for (uint256 i; i < passThruMethods.length; ++i) {
52
+ $.passThruMethods[i] = passThruMethods[i];
53
+ $.skipAc[passThruMethods[i]] = true;
54
+ }
55
+ emit IAccessManagedProxy.PassThruMethodsChanged(passThruMethods);
56
+ }
57
+
58
+ function replacePassThruMethods(bytes4[] memory newPassThruMethods) internal {
59
+ AccessManagedProxyStorage storage $ = AMPUtils.getAccessManagedProxyStorage();
60
+ bytes4[] memory oldPassThruMethods = $.passThruMethods;
61
+ for (uint256 i; i < oldPassThruMethods.length; ++i) {
62
+ $.skipAc[oldPassThruMethods[i]] = false;
63
+ }
64
+ setPassThruMethods(newPassThruMethods);
65
+ }
66
+
16
67
  /**
17
68
  * @dev Checks if the user can call a particular selector, assuming the calling contract was deployed as an AMP.
18
69
  *
@@ -20,7 +71,7 @@ library AMPUtils {
20
71
  * @param selector The selector of the method called (or a fake selector generated with makeSelector or another way)
21
72
  */
22
73
  function checkCanCall(address user, bytes4 selector) internal view {
23
- (bool immediate, ) = AccessManagedProxy(payable(address(this))).ACCESS_MANAGER().canCall(
74
+ (bool immediate, ) = IAccessManagedProxy(payable(address(this))).ACCESS_MANAGER().canCall(
24
75
  user,
25
76
  address(this),
26
77
  selector