-
Notifications
You must be signed in to change notification settings - Fork 0
/
TimelockAuthorizerMigrator.json
255 lines (255 loc) · 57.8 KB
/
TimelockAuthorizerMigrator.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
{
"_format": "hh-sol-artifact-1",
"contractName": "TimelockAuthorizerMigrator",
"sourceName": "contracts/TimelockAuthorizerMigrator.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_root",
"type": "address"
},
{
"internalType": "contract IBasicAuthorizer",
"name": "_oldAuthorizer",
"type": "address"
},
{
"internalType": "contract IAuthorizerAdaptorEntrypoint",
"name": "_authorizerAdaptorEntrypoint",
"type": "address"
},
{
"internalType": "uint256",
"name": "_changeRootDelay",
"type": "uint256"
},
{
"components": [
{
"internalType": "address",
"name": "grantee",
"type": "address"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"internalType": "struct TimelockAuthorizerMigrator.RoleData[]",
"name": "_rolesData",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "address",
"name": "grantee",
"type": "address"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"internalType": "struct TimelockAuthorizerMigrator.RoleData[]",
"name": "_grantersData",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "address",
"name": "grantee",
"type": "address"
},
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"internalType": "struct TimelockAuthorizerMigrator.RoleData[]",
"name": "_revokersData",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "bytes32",
"name": "actionId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "newDelay",
"type": "uint256"
}
],
"internalType": "struct TimelockAuthorizerMigrator.DelayData[]",
"name": "_executeDelaysData",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "bytes32",
"name": "actionId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "newDelay",
"type": "uint256"
}
],
"internalType": "struct TimelockAuthorizerMigrator.DelayData[]",
"name": "_grantDelaysData",
"type": "tuple[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EVERYWHERE",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "GENERAL_PERMISSION_SPECIFIER",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "changeRootDelay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "executeDelays",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "finalizeMigration",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "newAuthorizer",
"outputs": [
{
"internalType": "contract TimelockAuthorizer",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "oldAuthorizer",
"outputs": [
{
"internalType": "contract IBasicAuthorizer",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "root",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "vault",
"outputs": [
{
"internalType": "contract IVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6101206040523480156200001257600080fd5b5060405162005eaa38038062005eaa833981016040819052620000359162000844565b6000308a89896040516200004990620006ba565b620000589493929190620009e0565b604051809103906000f08015801562000075573d6000803e3d6000fd5b506001600160601b0319606082811b821660e0528b901b1660c052604080516311b2515f60e31b815290519192506001600160a01b038a1691638d928af891600480820192602092909190829003018186803b158015620000d557600080fd5b505afa158015620000ea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200011091906200098e565b6001600160601b0319606091821b8116608052908b901b1660a05261010087905260005b8651811015620002985762000148620006c8565b8782815181106200015557fe5b602002602001015190508a6001600160a01b0316639be2a8848260200151836000015184604001516040518463ffffffff1660e01b81526004016200019d9392919062000a0a565b60206040518083038186803b158015620001b657600080fd5b505afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f1919062000965565b620002195760405162461bcd60e51b8152600401620002109062000a88565b60405180910390fd5b602081015181516040808401519051634661e83960e11b81526001600160a01b03871693638cc3d072936200025693919290919060040162000a0a565b600060405180830381600087803b1580156200027157600080fd5b505af115801562000286573d6000803e3d6000fd5b50506001909301925062000134915050565b5060005b85518110156200036157816001600160a01b0316632229edb4878381518110620002c257fe5b602002602001015160200151888481518110620002db57fe5b602002602001015160000151898581518110620002f457fe5b6020026020010151604001516040518463ffffffff1660e01b8152600401620003209392919062000a0a565b600060405180830381600087803b1580156200033b57600080fd5b505af115801562000350573d6000803e3d6000fd5b5050600190920191506200029c9050565b5060005b84518110156200041057816001600160a01b031663a44495d18683815181106200038b57fe5b602002602001015160000151878481518110620003a457fe5b6020026020010151604001516040518363ffffffff1660e01b8152600401620003cf929190620009c6565b600060405180830381600087803b158015620003ea57600080fd5b505af1158015620003ff573d6000803e3d6000fd5b505060019092019150620003659050565b506000805b8451811015620005305762278d008582815181106200043057fe5b60200260200101516020015111156200045d5760405162461bcd60e51b8152600401620002109062000ab1565b826001600160a01b031663f08455228683815181106200047957fe5b6020026020010151600001518784815181106200049257fe5b602002602001015160200151620004af306200066460201b60201c565b6040518463ffffffff1660e01b8152600401620004cf9392919062000a29565b602060405180830381600087803b158015620004ea57600080fd5b505af1158015620004ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005259190620009ad565b915060010162000415565b5060005b83518110156200064f5762278d008482815181106200054f57fe5b60200260200101516020015111156200057c5760405162461bcd60e51b8152600401620002109062000ab1565b826001600160a01b03166363cdbf368583815181106200059857fe5b602002602001015160000151868481518110620005b157fe5b602002602001015160200151620005ce306200066460201b60201c565b6040518463ffffffff1660e01b8152600401620005ee9392919062000a29565b602060405180830381600087803b1580156200060957600080fd5b505af11580156200061e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006449190620009ad565b915060010162000534565b506000555062000b4898505050505050505050565b6040805160018082528183019092526060916020808301908036833701905050905081816000815181106200069557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6149c480620014e683390190565b604080516060810182526000808252602082018190529181019190915290565b8051620006f58162000b2f565b92915050565b600082601f8301126200070c578081fd5b8151620007236200071d8262000b0f565b62000ae8565b81815291506020808301908481016040808502870183018810156200074757600080fd5b6000805b868110156200078d5782848b03121562000763578182fd5b6200076e8362000ae8565b845181528585015186820152865294840194928201926001016200074b565b5050505050505092915050565b600082601f830112620007ab578081fd5b8151620007bc6200071d8262000b0f565b8181529150602080830190848101606080850287018301881015620007e057600080fd5b6000805b868110156200078d5782848b031215620007fc578182fd5b620008078362000ae8565b620008138b86620006e8565b8152858501518682015260406200082d8c828801620006e8565b9082015286529484019492820192600101620007e4565b60008060008060008060008060006101208a8c03121562000863578485fd5b6200086f8b8b620006e8565b9850620008808b60208c01620006e8565b9750620008918b60408c01620006e8565b60608b015160808c015191985096506001600160401b0380821115620008b5578687fd5b620008c38d838e016200079a565b965060a08c0151915080821115620008d9578586fd5b620008e78d838e016200079a565b955060c08c0151915080821115620008fd578485fd5b6200090b8d838e016200079a565b945060e08c015191508082111562000921578384fd5b6200092f8d838e01620006fb565b93506101008c015191508082111562000946578283fd5b50620009558c828d01620006fb565b9150509295985092959850929598565b60006020828403121562000977578081fd5b8151801515811462000987578182fd5b9392505050565b600060208284031215620009a0578081fd5b8151620009878162000b2f565b600060208284031215620009bf578081fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b9283526001600160a01b03918216602084015216604082015260600190565b60006060820185835260208581850152606060408501528185518084526080860191508287019350845b8181101562000a7a5784516001600160a01b03168352938301939183019160010162000a53565b509098975050505050505050565b6020808252600f908201526e554e45585045435445445f524f4c4560881b604082015260600190565b60208082526016908201527f554e45585045435445445f4c415247455f44454c415900000000000000000000604082015260600190565b6040518181016001600160401b038111828210171562000b0757600080fd5b604052919050565b60006001600160401b0382111562000b25578081fd5b5060209081020190565b6001600160a01b038116811462000b4557600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005161092a62000bbc6000398061013a5250806101a5528061028052806102e452806106215250806104b3528061068152508061031152806106a552508061040852806104f152806105f452806106c9525061092a6000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063b78b608711610076578063ebf0c7171161005b578063ebf0c71714610120578063fbfa77cf14610128578063fc78a22814610130576100be565b8063b78b608714610110578063c6bfe9ae14610118576100be565b806362cde1ba116100a757806362cde1ba146100eb578063a0c286d814610100578063a217fddf14610108576100be565b8063064cb76a146100c35780633c44172d146100e1575b600080fd5b6100cb610138565b6040516100d89190610824565b60405180910390f35b6100e961015c565b005b6100f361025a565b6040516100d89190610803565b6100f361027e565b6100cb6102a2565b6100e96102a7565b6100f361067f565b6100f36106a3565b6100f36106c7565b6100cb61025a565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005b6000548111610257576040517ffe0d94c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063fe0d94c1906101da908490600401610824565b600060405180830381600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261024e919081019061072a565b5060010161015f565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081565b6040517f557a640300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063557a640390610339907f000000000000000000000000000000000000000000000000000000000000000090600401610803565b60206040518083038186803b15801561035157600080fd5b505afa158015610365573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038991906106eb565b6103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90610886565b60405180910390fd5b6040517f851c1bb300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063851c1bb39061045d907f058a628f0000000000000000000000000000000000000000000000000000000090600401610859565b60206040518083038186803b15801561047557600080fd5b505afa158015610489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ad9190610712565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639be2a88483307f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b815260040161052e9392919061082d565b60206040518083038186803b15801561054657600080fd5b505afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e91906106eb565b9050806105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf906108bd565b6040517f058a628f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063058a628f90610649907f000000000000000000000000000000000000000000000000000000000000000090600401610803565b600060405180830381600087803b15801561066357600080fd5b505af1158015610677573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000602082840312156106fc578081fd5b8151801515811461070b578182fd5b9392505050565b600060208284031215610723578081fd5b5051919050565b6000602080838503121561073c578182fd5b825167ffffffffffffffff80821115610753578384fd5b818501915085601f830112610766578384fd5b815181811115610774578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011682010181811084821117156107b1578687fd5b60405281815283820185018810156107c7578586fd5b8592505b818310156107e857838301850151818401860152918401916107cb565b818311156107f857858583830101525b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526014908201527f524f4f545f4e4f545f434c41494d45445f594554000000000000000000000000604082015260600190565b6020808252601e908201527f4d49475241544f525f43414e4e4f545f5345545f415554484f52495a4552000060408201526060019056fea2646970667358221220d786552b445783790a6af616b3d19991c5b24d436a9a622b7c1bf1a860cb16b164736f6c634300070100336101206040523480156200001257600080fd5b50604051620049c4380380620049c483398101604081905262000035916200025b565b8383836001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007157600080fd5b505afa15801562000086573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ac9190620002b4565b83620000b884620001bb565b620000c38362000203565b6001600160601b0319606083901b1660a052604051620000e3906200024d565b604051809103906000f08015801562000100573d6000803e3d6000fd5b5060601b6001600160601b03191660805260c05250506040805163e758d36b60e01b815290516001600160a01b038516925063e758d36b91600480820192602092909190829003018186803b1580156200015957600080fd5b505afa1580156200016e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001949190620002b4565b6001600160601b0319606091821b81166101005292901b90911660e05250620002f3915050565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f39510b933a9d010f906528d6019d3f4e2450a10dc33b10887503b31ed82f111191a250565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f566fe119ff450afc2580186c62762b6c1258245c8b1b6bb095e7276eb5a75b5590600090a250565b6104ef80620044d583390190565b6000806000806080858703121562000271578384fd5b84516200027e81620002da565b60208601519094506200029181620002da565b6040860151909350620002a481620002da565b6060959095015193969295505050565b600060208284031215620002c6578081fd5b8151620002d381620002da565b9392505050565b6001600160a01b0381168114620002f057600080fd5b50565b60805160601c60a05160601c60c05160e05160601c6101005160601c61417d62000358600039806119bc5250806119e4525080611d195250806118385250806106e15280610a955280610ac25280611dc552806124b952806127b8525061417d6000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80638bd6bbc9116101a7578063c284b6b9116100ee578063e4c00f4f11610097578063f23481e011610071578063f23481e01461065a578063f6ebcbaf14610662578063fe0d94c11461067557610320565b8063e4c00f4f14610614578063f084552214610634578063f0bb94061461064757610320565b8063cc63604a116100c8578063cc63604a146105e6578063d00bef4d146105f9578063e2b4146b1461060157610320565b8063c284b6b9146105b8578063c6192ee3146105c0578063c80c23e1146105d357610320565b80639be2a88411610150578063b1e31aa01161012a578063b1e31aa01461058a578063b3eb281d14610592578063b99db526146105a557610320565b80639be2a88414610551578063a44495d114610564578063a8eae12d1461057757610320565b8063902168121161018157806390216812146105235780639299942e1461053657806399a7f6e21461053e57610320565b80638bd6bbc9146104f55780638cc3d072146105085780638d928af81461051b57610320565b806340e58ee51161026b57806362cde1ba1161021457806372efb120116101ee57806372efb120146104bc578063863bac6b146104cf57806386ff254b146104e257610320565b806362cde1ba1461048157806363cdbf36146104895780636badd2ab1461049c57610320565b80635b78b780116102455780635b78b780146104535780635ca1e16514610466578063608dd7e41461046e57610320565b806340e58ee5146104255780634125ff9014610438578063557a64031461044057610320565b80631b3c85eb116102cd5780633ac5d439116102a75780633ac5d439146103ec5780633bf46797146103ff5780633e1df46d1461041257610320565b80631b3c85eb146103b35780632229edb4146103c65780632e3ed05b146103d957610320565b806314ea35e7116102fe57806314ea35e714610376578063169f14681461037e57806318ef871a1461039e57610320565b806304434606146103255780630df322a61461034e57806310d3ab2c14610361575b600080fd5b6103386103333660046132f6565b610695565b6040516103459190613711565b60405180910390f35b61033861035c366004613177565b6106c2565b61037461036f3660046133be565b6106d6565b005b61037461079b565b61039161038c366004613213565b6107dc565b60405161034591906140b7565b6103a6610a93565b60405161034591906135e4565b6103746103c1366004613177565b610ab7565b6103746103d4366004613319565b610b08565b6103916103e73660046131c6565b610bc0565b6103746103fa366004613319565b610cb9565b61039161040d3660046132c6565b610d3f565b6103386104203660046132f6565b610d51565b6103746104333660046132c6565b610dc3565b610391610f0a565b61033861044e366004613177565b610f12565b610391610461366004613356565b610f26565b6103a6611079565b61039161047c3660046133df565b611088565b6103a66111b8565b6103916104973660046133df565b6111dc565b6104af6104aa3660046132c6565b61130c565b60405161034591906140a4565b6103746104ca3660046132f6565b611494565b6103916104dd366004613356565b6115be565b6103386104f0366004613319565b6116e7565b6103916105033660046132c6565b61171a565b610374610516366004613319565b61172c565b6103a6611836565b610374610531366004613192565b61185a565b6103916111b8565b61037461054c3660046132f6565b6119a0565b61033861055f366004613319565b6119af565b610374610572366004613192565b611a66565b610374610585366004613319565b611b0f565b610391611c6e565b6103386105a0366004613319565b611c75565b6103916105b33660046132c6565b611d05565b610391611d17565b6103386105ce366004613192565b611d3b565b6103746105e13660046133be565b611dba565b6103386105f43660046132c6565b611e6a565b6103a6611ee3565b61033861060f366004613319565b611ef2565b610627610622366004613496565b611f7a565b6040516103459190613693565b6103916106423660046133df565b61237e565b6103746106553660046133be565b6124ae565b610391612623565b6103746106703660046132f6565b612629565b6106886106833660046132c6565b612658565b6040516103459190613776565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b6001546001600160a01b0390811691161490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107275760405162461bcd60e51b815260040161071e90613eb5565b60405180910390fd5b61073081612886565b61074c5760405162461bcd60e51b815260040161071e9061398d565b600082815260076020526040908190208290555182907f6922a4f4deeb55fdca50df28a72475aa87f9f1377ed93a95842ce8bc69dc01e89061078f9084906140b7565b60405180910390a25050565b6001546001600160a01b03163381146107c65760405162461bcd60e51b815260040161071e90613d34565b6107cf81612961565b6107d960006129c1565b50565b60006001600160a01b0384163014156108075760405162461bcd60e51b815260040161071e906138c2565b61080f610a93565b6001600160a01b0316846001600160a01b031614156108405760405162461bcd60e51b815260040161071e90613789565b6004835110156108625760405162461bcd60e51b815260040161071e90613b45565b600060188460038151811061087357fe5b016020015185517fff0000000000000000000000000000000000000000000000000000000000000090911690911c90601090869060029081106108b257fe5b016020015186517fff0000000000000000000000000000000000000000000000000000000000000090911690911c90600890879060019081106108f157fe5b016020015187517fff0000000000000000000000000000000000000000000000000000000000000090911690911c90879060009061092b57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191617171790506000856001600160a01b031663851c1bb3836040518263ffffffff1660e01b815260040161098b9190613749565b60206040518083038186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db91906132de565b90506109e8813388611ef2565b610a045760405162461bcd60e51b815260040161071e90613b7c565b6000818152600a602052604090205480610a305760405162461bcd60e51b815260040161071e90613bb3565b6000610a3e88888489612a23565b905080837f26ce5ffb7ab1ce72d9ca4a3e4f906d2b99194d6c53dd9832fd7a59d0b2fc6bed60405160405180910390a3610a788133610d51565b610a8657610a868133612d7b565b93505050505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aff5760405162461bcd60e51b815260040161071e90613eb5565b6107d9816129c1565b610b1133610f12565b610b2d5760405162461bcd60e51b815260040161071e90613c58565b610b38838383611c75565b15610b555760405162461bcd60e51b815260040161071e906139c4565b60008381526003602090815260408083206001600160a01b038087168086529184528285209086168086529352818420805460ff1916600117905590519192909186917f2d106cf4379aad979c25af765e6f7169b732d4c4660e41aa733a150c7fc0a6f791a4505050565b6000610bcb33610f12565b610be75760405162461bcd60e51b815260040161071e90613c58565b6060631b3c85eb60e01b84604051602401610c0291906135e4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506000610c783083610c72611d17565b87612a23565b905080856001600160a01b03167f7de09ff5f925ca34a396df31b30cdbdd0cd10b88833b4f7334cecc02454c1be760405160405180910390a3949350505050565b600083815260086020526040902054610cf757610cd63382611d3b565b610cf25760405162461bcd60e51b815260040161071e90613c21565b610d2f565b610cff610a93565b6001600160a01b0316336001600160a01b031614610d2f5760405162461bcd60e51b815260040161071e90613cfd565b610d3a838383612e8b565b505050565b6000908152600a602052604090205490565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff1680610db4575060056000610d896111b8565b8152602080820192909252604090810160009081206001600160a01b038616825290925290205460ff165b80610a8c5750610a8c82610f12565b6006548110610de45760405162461bcd60e51b815260040161071e906137e6565b600060068281548110610df357fe5b60009182526020909120600a90910201600281015490915060ff1615610e2b5760405162461bcd60e51b815260040161071e90613e7e565b6002810154610100900460ff1615610e555760405162461bcd60e51b815260040161071e90613ad7565b610e5f8233610d51565b610e7b5760405162461bcd60e51b815260040161071e9061406d565b6002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556008810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905542600982015560405182907fe48f88ceada5a6ddb8ded9b5e457cb802e319a647eec8ff1f2a0512c0a741ed990600090a25050565b6303c2670090565b6000546001600160a01b0390811691161490565b6000610f323384611d3b565b610f4e5760405162461bcd60e51b815260040161071e90613c21565b60008581526008602052604090205480610f7a5760405162461bcd60e51b815260040161071e90613dd9565b6060633ac5d43960e01b878787604051602401610f999392919061371c565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050600061100830838588612a23565b9050856001600160a01b0316876001600160a01b0316897f645fdc5699106b1dffda57f54fdcca22ad57d87f0afd651edf857af3bfbd87848460405161104e91906140b7565b60405180910390a46110608133610d51565b61106e5761106e8133612d7b565b979650505050505050565b6000546001600160a01b031690565b600061109333610f12565b6110af5760405162461bcd60e51b815260040161071e90613c58565b6110b7610f0a565b8311156110d65760405162461bcd60e51b815260040161071e90613da2565b6000848152600860205260408120546110ef9085612f9f565b9050606063c80c23e160e01b868660405160240161110e92919061373b565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050600061117d30838588612a23565b90508086887f2f330faf5e23fc7ff1c46f2b1a3299d86249055a5bf74a8b747ab7fb66f6dc9f60405160405180910390a49695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b60006111e733610f12565b6112035760405162461bcd60e51b815260040161071e90613c58565b61120b610f0a565b83111561122a5760405162461bcd60e51b815260040161071e90613da2565b6000848152600760205260408120546112439085612f9f565b905060606310d3ab2c60e01b868660405160240161126292919061373b565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905060006112d130838588612a23565b90508086887f3d8c3ad02346a1ddf099dd26578662fb8cf85903168ebfeb1f14473fed8ee48860405160405180910390a49695505050505050565b611314612fe0565b6006828154811061132157fe5b60009182526020918290206040805161018081018252600a90930290910180546001600160a01b03168352600180820180548451601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95841615610100029590950190921693909304908101879004870283018701909452838252939491938583019391929091908301828280156113fd5780601f106113d2576101008083540402835291602001916113fd565b820191906000526020600020905b8154815290600101906020018083116113e057829003601f168201915b5050509183525050600282015460ff808216151560208401526101008083048216151560408501526201000090920416151560608301526003830154608083015260048301546001600160a01b0390811660a0840152600584015460c08401526006840154811660e08401526007840154918301919091526008830154166101208201526009909101546101409091015292915050565b61149d33610f12565b6114b95760405162461bcd60e51b815260040161071e90613c58565b6114c281610f12565b156114df5760405162461bcd60e51b815260040161071e9061381d565b6114e98282610d51565b6115055760405162461bcd60e51b815260040161071e90613f23565b600560006115116111b8565b8152602080820192909252604090810160009081206001600160a01b038516825290925290205460ff1615611566576115486111b8565b82146115665760405162461bcd60e51b815260040161071e90613eec565b60008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551909184917fd6b522eb4b505a0843020e304ba27d827b52c89347e6176b2f2737e6e4015c2d9190a35050565b60006115cb853385611c75565b6115e75760405162461bcd60e51b815260040161071e9061391f565b600085815260076020526040902054806116135760405162461bcd60e51b815260040161071e90613aa0565b6060638cc3d07260e01b8787876040516024016116329392919061371c565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905060006116a130838588612a23565b9050856001600160a01b0316876001600160a01b0316897f185f04ff33c89687859342776c7fdcf04d9eb9444d65192bfebab5a5ac9874a88460405161104e91906140b7565b60009283526009602090815260408085206001600160a01b03948516865282528085209290931684525290205460ff1690565b60009081526007602052604090205490565b60008381526007602052604090205461176b5761174a833383611c75565b6117665760405162461bcd60e51b815260040161071e9061391f565b6117a3565b611773610a93565b6001600160a01b0316336001600160a01b0316146117a35760405162461bcd60e51b815260040161071e90613f5a565b6117ae838383611ef2565b156117cb5760405162461bcd60e51b815260040161071e9061388b565b60008381526009602090815260408083206001600160a01b038087168086529184528285209086168086529352818420805460ff1916600117905590519192909186917fef6ee312a0062a24a46be2eba5284183a87ff848110e8d4df979bd690d9e9f6891a4505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b61186333610f12565b61187f5760405162461bcd60e51b815260040161071e90613c58565b6118898282611d3b565b6118a55760405162461bcd60e51b815260040161071e90613f91565b6118ae82610f12565b156118cb5760405162461bcd60e51b815260040161071e90613c8f565b6001600160a01b0382166000908152600460205260408120906118ec6111b8565b6001600160a01b0316815260208101919091526040016000205460ff1615611946576119166111b8565b6001600160a01b0316816001600160a01b0316146119465760405162461bcd60e51b815260040161071e90613bea565b6001600160a01b03808316600081815260046020908152604080832094861680845294909152808220805460ff19169055517fb6fe3ab11eb9ab1d9f1d41c8f42a5d72d10122099ba1548e4a6d1a4d8cefec4b9190a35050565b6119ab823383612e8b565b5050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415611a1e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316149050610a8c565b6000848152600a602052604090205415611a5357611a3a610a93565b6001600160a01b0316836001600160a01b031614611a5e565b611a5e848484611ef2565b949350505050565b611a6f33610f12565b611a8b5760405162461bcd60e51b815260040161071e90613c58565b611a958282611d3b565b15611ab25760405162461bcd60e51b815260040161071e90614036565b6001600160a01b03808316600081815260046020908152604080832094861680845294909152808220805460ff19166001179055517f2b5f18afd9a7b21f41bf023b012b3d4c8a22a21b79fa425cd4494ecbe29701969190a35050565b611b1833610f12565b611b345760405162461bcd60e51b815260040161071e90613c58565b611b3f838383611c75565b611b5b5760405162461bcd60e51b815260040161071e90613e47565b611b6482610f12565b15611b815760405162461bcd60e51b815260040161071e90613fff565b60008381526003602090815260408083206001600160a01b0386168452909152812090611bac6111b8565b6001600160a01b0316815260208101919091526040016000205460ff1615611c0657611bd66111b8565b6001600160a01b0316816001600160a01b031614611c065760405162461bcd60e51b815260040161071e90613854565b60008381526003602090815260408083206001600160a01b038087168086529184528285209086168086529352818420805460ff1916905590519192909186917ff8034293d5b4ed16b867ded8f122c475bc0d1b6bd9309a606609a754e5f3adc391a4505050565b6206978090565b60008381526003602090815260408083206001600160a01b038087168552908352818420908516845290915281205460ff1680611cf6575060008481526003602090815260408083206001600160a01b0387168452909152812090611cd86111b8565b6001600160a01b0316815260208101919091526040016000205460ff165b80611a5e5750611a5e83610f12565b60009081526008602052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03808316600090815260046020908152604080832093851683529290529081205460ff1680611dab57506001600160a01b038316600090815260046020526040812090611d8d6111b8565b6001600160a01b0316815260208101919091526040016000205460ff165b80610a8c5750610a8c83610f12565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611e025760405162461bcd60e51b815260040161071e90613eb5565b611e0b81612886565b611e275760405162461bcd60e51b815260040161071e9061398d565b600082815260086020526040908190208290555182907f6aeebd84e31437f28a17927609991676c31c2b84875c601373da2c194e9d23419061078f9084906140b7565b6006546000908210611e8e5760405162461bcd60e51b815260040161071e906137e6565b600060068381548110611e9d57fe5b60009182526020909120600a90910201600281015490915060ff16158015611ecf57506002810154610100900460ff16155b8015610a8c57506003015442101592915050565b6001546001600160a01b031690565b60008381526009602090815260408083206001600160a01b038087168552908352818420908516845290915281205460ff1680611a5e575060008481526009602090815260408083206001600160a01b0387168452909152812090611f556111b8565b6001600160a01b0316815260208101919091526040016000205460ff16949350505050565b6006546060908410611f9e5760405162461bcd60e51b815260040161071e90613a69565b60008311611fbe5760405162461bcd60e51b815260040161071e90613e10565b6006548490036000611fd08286612fc8565b905060608167ffffffffffffffff81118015611feb57600080fd5b5060405190808252806020026020018201604052801561202557816020015b612012612fe0565b81526020019060019003908161200a5790505b50905060005b8281101561237357856121d25760068189018154811061204757fe5b60009182526020918290206040805161018081018252600a90930290910180546001600160a01b03168352600180820180548451601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95841615610100029590950190921693909304908101879004870283018701909452838252939491938583019391929091908301828280156121235780601f106120f857610100808354040283529160200191612123565b820191906000526020600020905b81548152906001019060200180831161210657829003601f168201915b5050509183525050600282015460ff808216151560208401526101008083048216151560408501526201000090920416151560608301526003830154608083015260048301546001600160a01b0390811660a0840152600584015460c08401526006840154811660e08401526007840154918301919091526008830154166101208201526009909101546101409091015282518390839081106121c257fe5b602002602001018190525061236b565b6006816001860303815481106121e457fe5b60009182526020918290206040805161018081018252600a90930290910180546001600160a01b03168352600180820180548451601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95841615610100029590950190921693909304908101879004870283018701909452838252939491938583019391929091908301828280156122c05780601f10612295576101008083540402835291602001916122c0565b820191906000526020600020905b8154815290600101906020018083116122a357829003601f168201915b5050509183525050600282015460ff808216151560208401526101008083048216151560408501526201000090920416151560608301526003830154608083015260048301546001600160a01b0390811660a0840152600584015460c08401526006840154811660e084015260078401549183019190915260088301541661012082015260099091015461014090910152825183908390811061235f57fe5b60200260200101819052505b60010161202b565b509695505050505050565b600061238933610f12565b6123a55760405162461bcd60e51b815260040161071e90613c58565b6123ad610f0a565b8311156123cc5760405162461bcd60e51b815260040161071e90613da2565b6000848152600a60205260408120546123e59085612f9f565b9050606063f0bb940660e01b868660405160240161240492919061373b565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050600061247330838588612a23565b90508086887fbc72942fa810fe8985041bb36295502eddf2c163774be55e25d205958956072860405160405180910390a49695505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146124f65760405162461bcd60e51b815260040161071e90613eb5565b6124fe611836565b6040517f851c1bb30000000000000000000000000000000000000000000000000000000081526001600160a01b03919091169063851c1bb390612565907f058a628f0000000000000000000000000000000000000000000000000000000090600401613749565b60206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b591906132de565b82146125e0576125c481612886565b6125e05760405162461bcd60e51b815260040161071e9061398d565b6000828152600a6020526040908190208290555182907f0e182617f9e5f9ce5f761c791ec15ad52176d97f9706b5c2707ffda7b6bdf7909061078f9084906140b7565b60065490565b61263233610f12565b61264e5760405162461bcd60e51b815260040161071e90613c58565b6119ab8282612d7b565b600654606090821061267c5760405162461bcd60e51b815260040161071e906137e6565b60006006838154811061268b57fe5b60009182526020909120600a90910201600281015490915060ff16156126c35760405162461bcd60e51b815260040161071e90613e7e565b6002810154610100900460ff16156126ed5760405162461bcd60e51b815260040161071e90613ad7565b80600301544210156127115760405162461bcd60e51b815260040161071e90613cc6565b600281015462010000900460ff161561274a5761272e8333610695565b61274a5760405162461bcd60e51b815260040161071e90613956565b60028101805460ff191660019081179091556006820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905542600783015581546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811693631cff79cd936127fc93921691908601906004016135f8565b600060405180830381600087803b15801561281657600080fd5b505af115801561282a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128529190810190613423565b60405190925083907f4fa5548c15e2d4a0b806eee962935acea143d79644d2340af39f4edf13b335a990600090a250919050565b600080612891611836565b6040517f851c1bb30000000000000000000000000000000000000000000000000000000081526001600160a01b03919091169063851c1bb3906128f8907f058a628f0000000000000000000000000000000000000000000000000000000090600401613749565b60206040518083038186803b15801561291057600080fd5b505afa158015612924573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294891906132de565b6000908152600a60205260409020549092111592915050565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117825560405190917f39510b933a9d010f906528d6019d3f4e2450a10dc33b10887503b31ed82f111191a250565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f566fe119ff450afc2580186c62762b6c1258245c8b1b6bb095e7276eb5a75b5590600090a250565b60068054825160408051610180810182526001600160a01b03898116825260208083018a815260009484018590526060840185905294151560808401819052428a810160a086018190523360c087015260e086019190915261010085018690526101208501869052610140850186905261016085018690526001880189559790945282517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600a880290810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169290941691909117835594518051969796949593949293612b3d937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40909101929190910190613045565b5060408201516002820180546060850151608086015160ff19909216931515939093177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101009315158402177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100009115159190910217905560a0830151600383015560c08301516004830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161790915560e08501516005850155918401516006840180548416918316919091179055610120840151600784015561014084015160088401805490931691161790556101609091015160099091015560005b8451811015612d7057600260008581526020019081526020016000206000868381518110612c7b57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615612cbf5760405162461bcd60e51b815260040161071e90613a32565b6000848152600260205260408120865160019290889085908110612cdf57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550848181518110612d2a57fe5b60200260200101516001600160a01b0316847f2d0aa562da96ca6dd124fee5588e6f8545b0aa0b15cfd87cc231eff1ae7000e460405160405180910390a3600101612c51565b505050949350505050565b612d858282610d51565b15612da25760405162461bcd60e51b815260040161071e90613fc8565b612daa6111b8565b8214612e30576006548210612dd15760405162461bcd60e51b815260040161071e906137e6565b600060068381548110612de057fe5b60009182526020909120600a90910201600281015490915060ff16158015612e1257506002810154610100900460ff16155b612e2e5760405162461bcd60e51b815260040161071e90613b0e565b505b60008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551909184917f1b55562f9a67454174f758170aba47751c0af4c1f3b7d4e0b70667f1e82066069190a35050565b612e96838383611ef2565b612eb25760405162461bcd60e51b815260040161071e906139fb565b60008381526009602090815260408083206001600160a01b0386168452909152812090612edd6111b8565b6001600160a01b0316815260208101919091526040016000205460ff1615612f3757612f076111b8565b6001600160a01b0316816001600160a01b031614612f375760405162461bcd60e51b815260040161071e90613d6b565b60008381526009602090815260408083206001600160a01b038087168086529184528285209086168086529352818420805460ff1916905590519192909186917f7b42e026d3b17cf41399915c285780d0f724b3464b269297aff73c0de0fe417f91a4505050565b6000828210612fb557612fb0611c6e565b610a8c565b610a8c828403612fc3611c6e565b612fd4565b80820390821102900390565b80820390821002900390565b604080516101808101825260008082526060602083018190529282018190529181018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061308657805160ff19168380011785556130b3565b828001600101855582156130b3579182015b828111156130b3578251825591602001919060010190613098565b506130bf9291506130c3565b5090565b5b808211156130bf57600081556001016130c4565b80356001600160a01b03811681146106bc57600080fd5b600082601f8301126130ff578081fd5b813567ffffffffffffffff811115613115578182fd5b60208082026131258282016140c0565b8381529350818401858301828701840188101561314157600080fd5b600092505b8483101561316c5761315888826130d8565b825260019290920191908301908301613146565b505050505092915050565b600060208284031215613188578081fd5b610a8c83836130d8565b600080604083850312156131a4578081fd5b6131ae84846130d8565b91506131bd84602085016130d8565b90509250929050565b600080604083850312156131d8578182fd5b6131e284846130d8565b9150602083013567ffffffffffffffff8111156131fd578182fd5b613209858286016130ef565b9150509250929050565b600080600060608486031215613227578081fd5b61323185856130d8565b9250602084013567ffffffffffffffff8082111561324d578283fd5b818601915086601f830112613260578283fd5b813561327361326e826140e7565b6140c0565b818152886020838601011115613287578485fd5b81602085016020830137908101602001849052935060408601359150808211156132af578283fd5b506132bc868287016130ef565b9150509250925092565b6000602082840312156132d7578081fd5b5035919050565b6000602082840312156132ef578081fd5b5051919050565b60008060408385031215613308578182fd5b823591506131bd84602085016130d8565b60008060006060848603121561332d578283fd5b8335925061333e85602086016130d8565b915061334d85604086016130d8565b90509250925092565b6000806000806080858703121561336b578081fd5b8435935061337c86602087016130d8565b925061338b86604087016130d8565b9150606085013567ffffffffffffffff8111156133a6578182fd5b6133b2878288016130ef565b91505092959194509250565b600080604083850312156133d0578182fd5b50508035926020909101359150565b6000806000606084860312156133f3578283fd5b8335925060208401359150604084013567ffffffffffffffff811115613417578182fd5b6132bc868287016130ef565b600060208284031215613434578081fd5b815167ffffffffffffffff81111561344a578182fd5b8201601f8101841361345a578182fd5b805161346861326e826140e7565b81815285602083850101111561347c578384fd5b61348d826020830160208601614117565b95945050505050565b6000806000606084860312156134aa578081fd5b8335925060208401359150604084013580151581146134c7578182fd5b809150509250925092565b6001600160a01b03169052565b15159052565b600081518084526134fd816020860160208601614117565b601f01601f19169290920160200192915050565b60006101806135218484516134d2565b6020830151816020860152613538828601826134e5565b915050604083015161354d60408601826134df565b50606083015161356060608601826134df565b50608083015161357360808601826134df565b5060a083015160a085015260c083015161359060c08601826134d2565b5060e083015160e0850152610100808401516135ae828701826134d2565b50506101208381015190850152610140808401516135ce828701826134d2565b5050610160928301519390920192909252919050565b6001600160a01b0391909116815260200190565b6000604082016001600160a01b0385168352602060408185015282855460018082166000811461362f576001811461364d57613685565b607f6002840416865260ff1983166060890152608088019350613685565b6002830480875261365d8a61410b565b885b8281101561367b5781548b82016060015290840190870161365f565b8a01606001955050505b509198975050505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015613704577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526136f2858351613511565b945092850192908501906001016136b8565b5092979650505050505050565b901515815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b918252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252610a8c60208301846134e5565b60208082526026908201527f415454454d5054494e475f455845435554494f4e5f48454c5045525f5245454e60408201527f5452414e43590000000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f455845435554494f4e5f444f45535f4e4f545f45584953540000000000000000604082015260600190565b6020808252601b908201527f43414e4e4f545f52454d4f56455f524f4f545f43414e43454c45520000000000604082015260600190565b60208082526011908201527f4752414e5445525f49535f474c4f42414c000000000000000000000000000000604082015260600190565b6020808252601a908201527f5045524d495353494f4e5f414c52454144595f4752414e544544000000000000604082015260600190565b60208082526022908201527f43414e4e4f545f5343484544554c455f415554484f52495a45525f414354494f60408201527f4e53000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f53454e4445525f49535f4e4f545f4752414e5445520000000000000000000000604082015260600190565b60208082526016908201527f53454e4445525f49535f4e4f545f4558454355544f5200000000000000000000604082015260600190565b6020808252601c908201527f44454c41595f455843454544535f5345545f415554484f52495a455200000000604082015260600190565b6020808252601a908201527f4143434f554e545f49535f414c52454144595f4752414e544552000000000000604082015260600190565b60208082526016908201527f5045524d495353494f4e5f4e4f545f4752414e54454400000000000000000000604082015260600190565b60208082526013908201527f4455504c49434154455f4558454355544f525300000000000000000000000000604082015260600190565b60208082526014908201527f534b49505f56414c55455f544f4f5f4c41524745000000000000000000000000604082015260600190565b60208082526019908201527f414354494f4e5f4841535f4e4f5f4752414e545f44454c415900000000000000604082015260600190565b6020808252601a908201527f455845435554494f4e5f414c52454144595f43414e43454c4544000000000000604082015260600190565b60208082526018908201527f455845435554494f4e5f49535f4e4f545f50454e44494e470000000000000000604082015260600190565b6020808252600e908201527f444154415f544f4f5f53484f5254000000000000000000000000000000000000604082015260600190565b6020808252601f908201527f53454e4445525f444f45535f4e4f545f484156455f5045524d495353494f4e00604082015260600190565b60208082526010908201527f44454c41595f49535f4e4f545f53455400000000000000000000000000000000604082015260600190565b60208082526011908201527f5245564f4b45525f49535f474c4f42414c000000000000000000000000000000604082015260600190565b60208082526015908201527f53454e4445525f49535f4e4f545f5245564f4b45520000000000000000000000604082015260600190565b60208082526012908201527f53454e4445525f49535f4e4f545f524f4f540000000000000000000000000000604082015260600190565b6020808252601a908201527f43414e4e4f545f52454d4f56455f524f4f545f5245564f4b4552000000000000604082015260600190565b6020808252601c908201527f455845435554494f4e5f4e4f545f5945545f45584543555441424c4500000000604082015260600190565b60208082526018908201527f5245564f4b455f4d5553545f42455f5343484544554c45440000000000000000604082015260600190565b6020808252601a908201527f53454e4445525f49535f4e4f545f50454e44494e475f524f4f54000000000000604082015260600190565b6020808252601d908201527f4143434f554e545f4841535f474c4f42414c5f5045524d495353494f4e000000604082015260600190565b6020808252600f908201527f44454c41595f544f4f5f4c415247450000000000000000000000000000000000604082015260600190565b6020808252601a908201527f414354494f4e5f4841535f4e4f5f5245564f4b455f44454c4159000000000000604082015260600190565b60208082526013908201527f5a45524f5f4d41585f53495a455f56414c554500000000000000000000000000604082015260600190565b60208082526016908201527f4143434f554e545f49535f4e4f545f4752414e54455200000000000000000000604082015260600190565b6020808252601a908201527f455845435554494f4e5f414c52454144595f4558454355544544000000000000604082015260600190565b60208082526015908201527f43414e5f4f4e4c595f42455f5343484544554c45440000000000000000000000604082015260600190565b6020808252601a908201527f4143434f554e545f49535f474c4f42414c5f43414e43454c4552000000000000604082015260600190565b60208082526017908201527f4143434f554e545f49535f4e4f545f43414e43454c4552000000000000000000604082015260600190565b60208082526017908201527f4752414e545f4d5553545f42455f5343484544554c4544000000000000000000604082015260600190565b60208082526016908201527f4143434f554e545f49535f4e4f545f5245564f4b455200000000000000000000604082015260600190565b6020808252601b908201527f4143434f554e545f49535f414c52454144595f43414e43454c45520000000000604082015260600190565b6020808252601a908201527f43414e4e4f545f52454d4f56455f524f4f545f4752414e544552000000000000604082015260600190565b6020808252601a908201527f4143434f554e545f49535f414c52454144595f5245564f4b4552000000000000604082015260600190565b60208082526016908201527f53454e4445525f49535f4e4f545f43414e43454c455200000000000000000000604082015260600190565b600060208252610a8c6020830184613511565b90815260200190565b60405181810167ffffffffffffffff811182821017156140df57600080fd5b604052919050565b600067ffffffffffffffff8211156140fd578081fd5b50601f01601f191660200190565b60009081526020902090565b60005b8381101561413257818101518382015260200161411a565b83811115614141576000848401525b5050505056fea26469706673582212205cf12e169e848fcf4694b03be8dfccc89f6b956804ba6f76a21ae15949c5e6fd64736f6c6343000701003360a060405234801561001057600080fd5b5060016000553360601b60805260805160601c6104b061003f600039806101c6528061026e52506104b06000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631cff79cd1461003b578063aaabadc514610173575b600080fd5b6100fe6004803603604081101561005157600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561008957600080fd5b82018360208201111561009b57600080fd5b803590602001918460018302840111640100000000831117156100bd57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101a4945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610138578181015183820152602001610120565b50505050905090810190601f1680156101655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017b61026c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60606101ae610290565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461025257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f53454e4445525f49535f4e4f545f415554484f52495a45520000000000000000604482015290519081900360640190fd5b61025c83836102a9565b9050610266610393565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102a26002600054141561019061039a565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040518082805190602001908083835b6020831061031457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102d7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610376576040519150601f19603f3d011682016040523d82523d6000602084013e61037b565b606091505b509150915061038a82826103ac565b95945050505050565b6001600055565b816103a8576103a8816103d2565b5050565b606082156103bb575080610266565b8151156103cb5781518083602001fd5b6102666101ae5b6103fc817f42414c00000000000000000000000000000000000000000000000000000000006103ff565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea264697066735822122045da9e9d3f0030310eec4eeedb7f228cd6aa0355a1cd0901f2b8463c825c4dc964736f6c63430007010033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063b78b608711610076578063ebf0c7171161005b578063ebf0c71714610120578063fbfa77cf14610128578063fc78a22814610130576100be565b8063b78b608714610110578063c6bfe9ae14610118576100be565b806362cde1ba116100a757806362cde1ba146100eb578063a0c286d814610100578063a217fddf14610108576100be565b8063064cb76a146100c35780633c44172d146100e1575b600080fd5b6100cb610138565b6040516100d89190610824565b60405180910390f35b6100e961015c565b005b6100f361025a565b6040516100d89190610803565b6100f361027e565b6100cb6102a2565b6100e96102a7565b6100f361067f565b6100f36106a3565b6100f36106c7565b6100cb61025a565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005b6000548111610257576040517ffe0d94c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063fe0d94c1906101da908490600401610824565b600060405180830381600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261024e919081019061072a565b5060010161015f565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081565b6040517f557a640300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063557a640390610339907f000000000000000000000000000000000000000000000000000000000000000090600401610803565b60206040518083038186803b15801561035157600080fd5b505afa158015610365573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038991906106eb565b6103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90610886565b60405180910390fd5b6040517f851c1bb300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063851c1bb39061045d907f058a628f0000000000000000000000000000000000000000000000000000000090600401610859565b60206040518083038186803b15801561047557600080fd5b505afa158015610489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ad9190610712565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639be2a88483307f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b815260040161052e9392919061082d565b60206040518083038186803b15801561054657600080fd5b505afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e91906106eb565b9050806105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf906108bd565b6040517f058a628f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063058a628f90610649907f000000000000000000000000000000000000000000000000000000000000000090600401610803565b600060405180830381600087803b15801561066357600080fd5b505af1158015610677573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000602082840312156106fc578081fd5b8151801515811461070b578182fd5b9392505050565b600060208284031215610723578081fd5b5051919050565b6000602080838503121561073c578182fd5b825167ffffffffffffffff80821115610753578384fd5b818501915085601f830112610766578384fd5b815181811115610774578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011682010181811084821117156107b1578687fd5b60405281815283820185018810156107c7578586fd5b8592505b818310156107e857838301850151818401860152918401916107cb565b818311156107f857858583830101525b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526014908201527f524f4f545f4e4f545f434c41494d45445f594554000000000000000000000000604082015260600190565b6020808252601e908201527f4d49475241544f525f43414e4e4f545f5345545f415554484f52495a4552000060408201526060019056fea2646970667358221220d786552b445783790a6af616b3d19991c5b24d436a9a622b7c1bf1a860cb16b164736f6c63430007010033",
"linkReferences": {},
"deployedLinkReferences": {}
}