@zkpassport/sdk 0.2.15 → 0.3.1

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.
@@ -0,0 +1,608 @@
1
+ {
2
+ "abi": [
3
+ { "type": "constructor", "inputs": [], "stateMutability": "nonpayable" },
4
+ {
5
+ "type": "function",
6
+ "name": "addCertificateRegistryRoot",
7
+ "inputs": [
8
+ { "name": "certificateRegistryRoot", "type": "bytes32", "internalType": "bytes32" }
9
+ ],
10
+ "outputs": [],
11
+ "stateMutability": "nonpayable"
12
+ },
13
+ {
14
+ "type": "function",
15
+ "name": "addVerifiers",
16
+ "inputs": [
17
+ { "name": "vkeyHashes", "type": "bytes32[]", "internalType": "bytes32[]" },
18
+ { "name": "verifiers", "type": "address[]", "internalType": "address[]" }
19
+ ],
20
+ "outputs": [],
21
+ "stateMutability": "nonpayable"
22
+ },
23
+ {
24
+ "type": "function",
25
+ "name": "admin",
26
+ "inputs": [],
27
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
28
+ "stateMutability": "view"
29
+ },
30
+ {
31
+ "type": "function",
32
+ "name": "getAgeProofInputs",
33
+ "inputs": [
34
+ { "name": "committedInputs", "type": "bytes", "internalType": "bytes" },
35
+ { "name": "committedInputCounts", "type": "uint256[]", "internalType": "uint256[]" }
36
+ ],
37
+ "outputs": [
38
+ { "name": "currentDate", "type": "uint256", "internalType": "uint256" },
39
+ { "name": "minAge", "type": "uint8", "internalType": "uint8" },
40
+ { "name": "maxAge", "type": "uint8", "internalType": "uint8" }
41
+ ],
42
+ "stateMutability": "pure"
43
+ },
44
+ {
45
+ "type": "function",
46
+ "name": "getCountryProofInputs",
47
+ "inputs": [
48
+ { "name": "committedInputs", "type": "bytes", "internalType": "bytes" },
49
+ { "name": "committedInputCounts", "type": "uint256[]", "internalType": "uint256[]" },
50
+ { "name": "proofType", "type": "uint8", "internalType": "enum ProofType" }
51
+ ],
52
+ "outputs": [{ "name": "countryList", "type": "string[]", "internalType": "string[]" }],
53
+ "stateMutability": "pure"
54
+ },
55
+ {
56
+ "type": "function",
57
+ "name": "getDateProofInputs",
58
+ "inputs": [
59
+ { "name": "committedInputs", "type": "bytes", "internalType": "bytes" },
60
+ { "name": "committedInputCounts", "type": "uint256[]", "internalType": "uint256[]" },
61
+ { "name": "proofType", "type": "uint8", "internalType": "enum ProofType" }
62
+ ],
63
+ "outputs": [
64
+ { "name": "currentDate", "type": "uint256", "internalType": "uint256" },
65
+ { "name": "minDate", "type": "uint256", "internalType": "uint256" },
66
+ { "name": "maxDate", "type": "uint256", "internalType": "uint256" }
67
+ ],
68
+ "stateMutability": "pure"
69
+ },
70
+ {
71
+ "type": "function",
72
+ "name": "getDiscloseProofInputs",
73
+ "inputs": [
74
+ { "name": "committedInputs", "type": "bytes", "internalType": "bytes" },
75
+ { "name": "committedInputCounts", "type": "uint256[]", "internalType": "uint256[]" }
76
+ ],
77
+ "outputs": [
78
+ { "name": "discloseMask", "type": "bytes", "internalType": "bytes" },
79
+ { "name": "discloseBytes", "type": "bytes", "internalType": "bytes" }
80
+ ],
81
+ "stateMutability": "pure"
82
+ },
83
+ {
84
+ "type": "function",
85
+ "name": "getDisclosedData",
86
+ "inputs": [
87
+ { "name": "discloseBytes", "type": "bytes", "internalType": "bytes" },
88
+ { "name": "isIDCard", "type": "bool", "internalType": "bool" }
89
+ ],
90
+ "outputs": [
91
+ { "name": "name", "type": "string", "internalType": "string" },
92
+ { "name": "issuingCountry", "type": "string", "internalType": "string" },
93
+ { "name": "nationality", "type": "string", "internalType": "string" },
94
+ { "name": "gender", "type": "string", "internalType": "string" },
95
+ { "name": "birthDate", "type": "string", "internalType": "string" },
96
+ { "name": "expiryDate", "type": "string", "internalType": "string" },
97
+ { "name": "documentNumber", "type": "string", "internalType": "string" },
98
+ { "name": "documentType", "type": "string", "internalType": "string" }
99
+ ],
100
+ "stateMutability": "pure"
101
+ },
102
+ {
103
+ "type": "function",
104
+ "name": "isValidCertificateRegistryRoot",
105
+ "inputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
106
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
107
+ "stateMutability": "view"
108
+ },
109
+ {
110
+ "type": "function",
111
+ "name": "paused",
112
+ "inputs": [],
113
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
114
+ "stateMutability": "view"
115
+ },
116
+ {
117
+ "type": "function",
118
+ "name": "removeCertificateRegistryRoot",
119
+ "inputs": [
120
+ { "name": "certificateRegistryRoot", "type": "bytes32", "internalType": "bytes32" }
121
+ ],
122
+ "outputs": [],
123
+ "stateMutability": "nonpayable"
124
+ },
125
+ {
126
+ "type": "function",
127
+ "name": "removeVerifiers",
128
+ "inputs": [{ "name": "vkeyHashes", "type": "bytes32[]", "internalType": "bytes32[]" }],
129
+ "outputs": [],
130
+ "stateMutability": "nonpayable"
131
+ },
132
+ {
133
+ "type": "function",
134
+ "name": "setPaused",
135
+ "inputs": [{ "name": "_paused", "type": "bool", "internalType": "bool" }],
136
+ "outputs": [],
137
+ "stateMutability": "nonpayable"
138
+ },
139
+ {
140
+ "type": "function",
141
+ "name": "transferAdmin",
142
+ "inputs": [{ "name": "newAdmin", "type": "address", "internalType": "address" }],
143
+ "outputs": [],
144
+ "stateMutability": "nonpayable"
145
+ },
146
+ {
147
+ "type": "function",
148
+ "name": "verifyProof",
149
+ "inputs": [
150
+ {
151
+ "name": "params",
152
+ "type": "tuple",
153
+ "internalType": "struct ProofVerificationParams",
154
+ "components": [
155
+ { "name": "vkeyHash", "type": "bytes32", "internalType": "bytes32" },
156
+ { "name": "proof", "type": "bytes", "internalType": "bytes" },
157
+ { "name": "publicInputs", "type": "bytes32[]", "internalType": "bytes32[]" },
158
+ { "name": "committedInputs", "type": "bytes", "internalType": "bytes" },
159
+ { "name": "committedInputCounts", "type": "uint256[]", "internalType": "uint256[]" },
160
+ { "name": "validityPeriodInDays", "type": "uint256", "internalType": "uint256" },
161
+ { "name": "scope", "type": "string", "internalType": "string" },
162
+ { "name": "subscope", "type": "string", "internalType": "string" }
163
+ ]
164
+ }
165
+ ],
166
+ "outputs": [
167
+ { "name": "", "type": "bool", "internalType": "bool" },
168
+ { "name": "", "type": "bytes32", "internalType": "bytes32" }
169
+ ],
170
+ "stateMutability": "view"
171
+ },
172
+ {
173
+ "type": "function",
174
+ "name": "verifyScopes",
175
+ "inputs": [
176
+ { "name": "publicInputs", "type": "bytes32[]", "internalType": "bytes32[]" },
177
+ { "name": "scope", "type": "string", "internalType": "string" },
178
+ { "name": "subscope", "type": "string", "internalType": "string" }
179
+ ],
180
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
181
+ "stateMutability": "pure"
182
+ },
183
+ {
184
+ "type": "function",
185
+ "name": "vkeyHashToVerifier",
186
+ "inputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
187
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
188
+ "stateMutability": "view"
189
+ },
190
+ {
191
+ "type": "event",
192
+ "name": "AdminUpdated",
193
+ "inputs": [
194
+ { "name": "oldAdmin", "type": "address", "indexed": true, "internalType": "address" },
195
+ { "name": "newAdmin", "type": "address", "indexed": true, "internalType": "address" }
196
+ ],
197
+ "anonymous": false
198
+ },
199
+ {
200
+ "type": "event",
201
+ "name": "CertificateRegistryRootAdded",
202
+ "inputs": [
203
+ {
204
+ "name": "certificateRegistryRoot",
205
+ "type": "bytes32",
206
+ "indexed": true,
207
+ "internalType": "bytes32"
208
+ }
209
+ ],
210
+ "anonymous": false
211
+ },
212
+ {
213
+ "type": "event",
214
+ "name": "CertificateRegistryRootRemoved",
215
+ "inputs": [
216
+ {
217
+ "name": "certificateRegistryRoot",
218
+ "type": "bytes32",
219
+ "indexed": true,
220
+ "internalType": "bytes32"
221
+ }
222
+ ],
223
+ "anonymous": false
224
+ },
225
+ {
226
+ "type": "event",
227
+ "name": "PausedStatusChanged",
228
+ "inputs": [{ "name": "paused", "type": "bool", "indexed": false, "internalType": "bool" }],
229
+ "anonymous": false
230
+ },
231
+ {
232
+ "type": "event",
233
+ "name": "VerifierAdded",
234
+ "inputs": [
235
+ { "name": "vkeyHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" },
236
+ { "name": "verifier", "type": "address", "indexed": true, "internalType": "address" }
237
+ ],
238
+ "anonymous": false
239
+ },
240
+ {
241
+ "type": "event",
242
+ "name": "VerifierRemoved",
243
+ "inputs": [
244
+ { "name": "vkeyHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }
245
+ ],
246
+ "anonymous": false
247
+ },
248
+ {
249
+ "type": "event",
250
+ "name": "ZKPassportVerifierDeployed",
251
+ "inputs": [
252
+ { "name": "admin", "type": "address", "indexed": true, "internalType": "address" },
253
+ { "name": "timestamp", "type": "uint256", "indexed": false, "internalType": "uint256" }
254
+ ],
255
+ "anonymous": false
256
+ }
257
+ ],
258
+ "bytecode": {
259
+ "object": "0x6080604052348015600e575f5ffd5b505f80546001600160a01b031916339081179091556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a26127fa806100635f395ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c80638163f2311161009e578063a6df2c011161006e578063a6df2c011461027d578063b2b37a4c14610290578063ddf3eec9146102c2578063ec1374cd146102e3578063f851a44014610311575f5ffd5b80638163f23114610204578063847755e314610244578063886c3533146102575780638d6937b81461026a575f5ffd5b80633a316e62116100d95780633a316e621461019957806345e21c90146101ac5780635c975abb146101de57806375829def146101f1575f5ffd5b806303d37eae1461010a578063126f75591461013a57806316c38b3c1461015a57806333fbc14d1461016f575b5f5ffd5b61011d610118366004612098565b610323565b604051610131989796959493929190612118565b60405180910390f35b61014d610148366004612205565b61088e565b6040516101319190612289565b61016d6101683660046122ec565b610ad2565b005b61018261017d36600461230e565b610b52565b604080519215158352602083019190915201610131565b61016d6101a7366004612345565b610e13565b6101ce6101ba366004612345565b60026020525f908152604090205460ff1681565b6040519015158152602001610131565b5f546101ce90600160a01b900460ff1681565b61016d6101ff36600461235c565b610ea7565b61022c610212366004612345565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610131565b6101ce610252366004612382565b610f75565b61016d610265366004612345565b61113d565b61016d61027836600461241e565b6111ce565b61016d61028b36600461245c565b6112b7565b6102a361029e3660046124c6565b61140a565b6040805193845260ff9283166020850152911690820152606001610131565b6102d56102d03660046124c6565b6115e6565b6040516101319291906124fa565b6102f66102f1366004612205565b6117c5565b60408051938452602084019290925290820152606001610131565b5f5461022c906001600160a01b031681565b606080606080606080606080886105dd578a60058b610343826027612532565b9261035093929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929a508d9250600291508c9050610398826003612532565b926103a593929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509299508d9250603691508c90506103ed826003612532565b926103fa93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509298508d9250604091508c9050610442826001612532565b9261044f93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508d9250603991508c9050610497826006612532565b926104a493929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509296508d9250604191508c90506104ec826006612532565b926104f993929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295508d9250602c91508c9050610541826009612532565b9261054e93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509395508e9392508d91506105949050826002612532565b926105a193929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092935061088192505050565b8a603c8b6105ec82601e612532565b926105f993929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929a508d9250600291508c9050610641826003612532565b9261064e93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509299508d9250602d91508c9050610696826003612532565b926106a393929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509298508d9250602591508c90506106eb826001612532565b926106f893929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508d9250601e91508c9050610740826006612532565b9261074d93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509296508d9250602691508c9050610795826006612532565b926107a293929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295508d9250600591508c90506107ea826009612532565b926107f793929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509395508e9392508d915061083d9050826002612532565b9261084a93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509293505050505b9397509397509397509397565b60605f80805b85811015610a74578686828181106108ae576108ae61256c565b9050602002013561025914801561090757508460078111156108d2576108d2612580565b60f81b6001600160f81b0319168989858181106108f1576108f161256c565b9050013560f81c60f81b6001600160f81b031916145b15610a46576040805160c8808252611920820190925290816020015b60608152602001906001900390816109235790505093505f5b60c8811015610a40578989610952836003612594565b61095c9087612532565b610967906001612532565b8181106109765761097661256c565b909101356001600160f81b031916159050610a40578989610998836003612594565b6109a29087612532565b6109ad906001612532565b906109b9846003612594565b6109c39088612532565b6109ce906003612532565b6109d9906001612532565b926109e693929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505087518892508491508110610a2d57610a2d61256c565b602090810291909101015260010161093c565b50600191505b868682818110610a5857610a5861256c565b9050602002013583610a6a9190612532565b9250600101610894565b5080610ac75760405162461bcd60e51b815260206004820152601e60248201527f436f756e7472792070726f6f6620696e70757473206e6f7420666f756e64000060448201526064015b60405180910390fd5b505095945050505050565b5f546001600160a01b03163314610afb5760405162461bcd60e51b8152600401610abe906125ab565b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c590610b4790831515815260200190565b60405180910390a150565b5f8080610b5f843561191f565b90505f6010610b7160408701876125e2565b610b7c929150612627565b9050610baa610b8e60408701876125e2565b5f818110610b9e57610b9e61256c565b9050602002013561197e565b610bf4610bba60408701876125e2565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a08701356119e8565b610c405760405162461bcd60e51b815260206004820181905260248201527f50726f6f662065787069726564206f72206461746520697320696e76616c69646044820152606401610abe565b610c6a610c5060408701876125e2565b610c5d60c089018961263a565b61025260e08b018b61263a565b610ca75760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073636f70657360901b6044820152606401610abe565b610d53610cb760408701876125e2565b600b90610cc5600186612627565b92610cd29392919061267c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610d1092505050606088018861263a565b610d1d60808a018a6125e2565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a8492505050565b6001600160a01b03821663ea50d0e4610d6f602088018861263a565b610d7c60408a018a6125e2565b6040518563ffffffff1660e01b8152600401610d9b94939291906126a7565b602060405180830381865afa158015610db6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dda9190612709565b610de760408701876125e2565b610df2600185612627565b818110610e0157610e0161256c565b90506020020135935093505050915091565b5f546001600160a01b03163314610e3c5760405162461bcd60e51b8152600401610abe906125ab565b5f54600160a01b900460ff1615610e655760405162461bcd60e51b8152600401610abe90612724565b5f81815260026020526040808220805460ff191660011790555182917f28b645e250fa5c9d240590b408225ec310e29b861312e75a76b0d55f7d927a2f91a250565b5f546001600160a01b03163314610ed05760405162461bcd60e51b8152600401610abe906125ab565b6001600160a01b038116610f265760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610abe565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f610fb586868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bcd92505050565b61102f57600860028787604051602001610fd0929190612750565b60408051601f1981840301815290829052610fea9161275f565b602060405180830381855afa158015611005573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906110289190612775565b901b611031565b5f5b90505f61107285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bcd92505050565b6110ec5760086002868660405160200161108d929190612750565b60408051601f19818403018152908290526110a79161275f565b602060405180830381855afa1580156110c2573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906110e59190612775565b901b6110ee565b5f5b905081898960098181106111045761110461256c565b905060200201351480156111305750808989600a8181106111275761112761256c565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146111665760405162461bcd60e51b8152600401610abe906125ab565b5f54600160a01b900460ff161561118f5760405162461bcd60e51b8152600401610abe90612724565b5f81815260026020526040808220805460ff191690555182917fc4da3a189adfa305afb4c073f96be9bd96f1ebea4e42a5e7e2e98818509a682791a250565b5f546001600160a01b031633146111f75760405162461bcd60e51b8152600401610abe906125ab565b5f54600160a01b900460ff16156112205760405162461bcd60e51b8152600401610abe90612724565b5f5b818110156112b25760015f84848481811061123f5761123f61256c565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558282828181106112775761127761256c565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611222565b505050565b5f546001600160a01b031633146112e05760405162461bcd60e51b8152600401610abe906125ab565b5f54600160a01b900460ff16156113095760405162461bcd60e51b8152600401610abe90612724565b5f5b83811015611403578282828181106113255761132561256c565b905060200201602081019061133a919061235c565b60015f87878581811061134f5761134f61256c565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106113985761139861256c565b90506020020160208101906113ad919061235c565b6001600160a01b03168585838181106113c8576113c861256c565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a360010161130b565b5050505050565b5f80808080805b8681101561158c5787878281811061142b5761142b61256c565b90506020020135600b0361155e57600160f81b8a8a858181106114505761145061256c565b9050013560f81c60f81b6001600160f81b031916146114a65760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070726f6f66207479706560701b6044820152606401610abe565b6115088a8a6114b6866001612532565b906114c2876009612532565b926114cf93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bd292505050565b95508989611517856009612532565b8181106115265761152661256c565b919091013560f81c95508a90508961153f85600a612532565b81811061154e5761154e61256c565b919091013560f81c945060019250505b8787828181106115705761157061256c565b90506020020135836115829190612532565b9250600101611411565b50806115da5760405162461bcd60e51b815260206004820152601a60248201527f4167652070726f6f6620696e70757473206e6f7420666f756e640000000000006044820152606401610abe565b50509450945094915050565b6060805f80805b8581101561176c578686828181106116075761160761256c565b9050602002013560b50361173e575f8989858181106116285761162861256c565b9050013560f81c60f81b6001600160f81b0319161461167e5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070726f6f66207479706560701b6044820152606401610abe565b888861168b856001612532565b9061169786605b612532565b926116a493929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508b92508a91506116ea905085605b612532565b906116f68660b5612532565b9261170393929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929650600194505050505b8686828181106117505761175061256c565b90506020020135836117629190612532565b92506001016115ed565b50806117ba5760405162461bcd60e51b815260206004820152601f60248201527f446973636c6f73652070726f6f6620696e70757473206e6f7420666f756e64006044820152606401610abe565b505094509492505050565b5f80808080805b878110156118c4578888828181106117e6576117e661256c565b90506020020135601914801561183e575086600781111561180957611809612580565b60f81b6001600160f81b0319168b8b858181106118285761182861256c565b9050013560f81c60f81b6001600160f81b031916145b15611896576118538b8b6114b6866001612532565b95506118718b8b611865866009612532565b906114c2876011612532565b945061188f8b8b611883866011612532565b906114c2876019612532565b9350600191505b8888828181106118a8576118a861256c565b90506020020135836118ba9190612532565b92506001016117cc565b50806119125760405162461bcd60e51b815260206004820152601b60248201527f446174652070726f6f6620696e70757473206e6f7420666f756e6400000000006044820152606401610abe565b5050955095509592505050565b5f818152600160205260408120546001600160a01b0316806119785760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b6044820152606401610abe565b92915050565b5f8181526002602052604090205460ff166119e55760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b6064820152608401610abe565b50565b6040805160088082528183019092525f9182919060208201818036833701905050905060015b6009811015611a715760f8858281518110611a2b57611a2b61256c565b6020026020010151901b82600183611a439190612627565b81518110611a5357611a5361256c565b60200101906001600160f81b03191690815f1a905350600101611a0e565b50611a7c8184611ee1565b949350505050565b5f805b8251811015611bc5575f6008600287878690888781518110611aab57611aab61256c565b602002602001015188611abe9190612532565b92611acb93929190612545565b604051602001611adc929190612750565b60408051601f1981840301815290829052611af69161275f565b602060405180830381855afa158015611b11573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611b349190612775565b901c9050868281518110611b4a57611b4a61256c565b60200260200101518114611b955760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b6044820152606401610abe565b838281518110611ba757611ba761256c565b602002602001015183611bba9190612532565b925050600101611a87565b505050505050565b511590565b604080518082019091526008815267313131313131313160c01b6020918201528151908201205f907fc21a5c94d030b6b0ea6834442967d237d4cc49a2b74bbb3846572bb3c8021a3001611c2757505f919050565b5f611c5283600381518110611c3e57611c3e61256c565b01602001516001600160f81b031916611f2b565b611c6884600281518110611c3e57611c3e61256c565b611c7390600a612594565b611c8985600181518110611c3e57611c3e61256c565b611c94906064612594565b611ca9865f81518110611c3e57611c3e61256c565b611cb5906103e8612594565b611cbf9190612532565b611cc99190612532565b611cd39190612532565b90505f611cec84600581518110611c3e57611c3e61256c565b611d0285600481518110611c3e57611c3e61256c565b611d0d90600a612594565b611d179190612532565b90505f611d3085600781518110611c3e57611c3e61256c565b611d4686600681518110611c3e57611c3e61256c565b611d5190600a612594565b611d5b9190612532565b90506107b2831015611da85760405162461bcd60e51b81526020600482015260166024820152750b2cac2e440c4caccdee4ca40aa9c92b040cae0dec6d60531b6044820152606401610abe565b60018210158015611dba5750600c8211155b611df65760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840dadedce8d609b1b6044820152606401610abe565b60018110158015611e105750611e0c8284611f44565b8111155b611e4a5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642064617960a81b6044820152606401610abe565b5f6107b25b84811015611e8857611e6081611ff7565b611e6c5761016d611e70565b61016e5b611e7e9061ffff1683612532565b9150600101611e4f565b5060015b83811015611eb257611e9e8186611f44565b611ea89083612532565b9150600101611e8c565b50611ebe600183612627565b611ec89082612532565b9050611ed76201518082612594565b9695505050505050565b5f5f611eec84611bd2565b90505f611efc6201518085612594565b611f069083612532565b9050814210158015611f1757508181115b8015611f2257504281115b95945050505050565b5f611f3b603060f884901c61278c565b60ff1692915050565b5f60018310158015611f575750600c8311155b611f935760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840dadedce8d609b1b6044820152606401610abe565b82600203611fbc57611fa482611ff7565b611faf57601c611fb2565b601d5b60ff169050611978565b8260041480611fcb5750826006145b80611fd65750826009145b80611fe1575082600b145b15611fee5750601e611978565b50601f92915050565b5f6120036004836127a5565b1561200f57505f919050565b61201a6064836127a5565b1561202757506001919050565b612033610190836127a5565b1561203f57505f919050565b506001919050565b5f5f83601f840112612057575f5ffd5b5081356001600160401b0381111561206d575f5ffd5b602083019150836020828501011115612084575f5ffd5b9250929050565b80151581146119e5575f5ffd5b5f5f5f604084860312156120aa575f5ffd5b83356001600160401b038111156120bf575f5ffd5b6120cb86828701612047565b90945092505060208401356120df8161208b565b809150509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b61010081525f61212c61010083018b6120ea565b828103602084015261213e818b6120ea565b90508281036040840152612152818a6120ea565b9050828103606084015261216681896120ea565b9050828103608084015261217a81886120ea565b905082810360a084015261218e81876120ea565b905082810360c08401526121a281866120ea565b905082810360e08401526121b681856120ea565b9b9a5050505050505050505050565b5f5f83601f8401126121d5575f5ffd5b5081356001600160401b038111156121eb575f5ffd5b6020830191508360208260051b8501011115612084575f5ffd5b5f5f5f5f5f60608688031215612219575f5ffd5b85356001600160401b0381111561222e575f5ffd5b61223a88828901612047565b90965094505060208601356001600160401b03811115612258575f5ffd5b612264888289016121c5565b90945092505060408601356008811061227b575f5ffd5b809150509295509295909350565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156122e057603f198786030184526122cb8583516120ea565b945060209384019391909101906001016122af565b50929695505050505050565b5f602082840312156122fc575f5ffd5b81356123078161208b565b9392505050565b5f6020828403121561231e575f5ffd5b81356001600160401b03811115612333575f5ffd5b82016101008185031215612307575f5ffd5b5f60208284031215612355575f5ffd5b5035919050565b5f6020828403121561236c575f5ffd5b81356001600160a01b0381168114612307575f5ffd5b5f5f5f5f5f5f60608789031215612397575f5ffd5b86356001600160401b038111156123ac575f5ffd5b6123b889828a016121c5565b90975095505060208701356001600160401b038111156123d6575f5ffd5b6123e289828a01612047565b90955093505060408701356001600160401b03811115612400575f5ffd5b61240c89828a01612047565b979a9699509497509295939492505050565b5f5f6020838503121561242f575f5ffd5b82356001600160401b03811115612444575f5ffd5b612450858286016121c5565b90969095509350505050565b5f5f5f5f6040858703121561246f575f5ffd5b84356001600160401b03811115612484575f5ffd5b612490878288016121c5565b90955093505060208501356001600160401b038111156124ae575f5ffd5b6124ba878288016121c5565b95989497509550505050565b5f5f5f5f604085870312156124d9575f5ffd5b84356001600160401b038111156124ee575f5ffd5b61249087828801612047565b604081525f61250c60408301856120ea565b8281036020840152611f2281856120ea565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119785761197861251e565b5f5f85851115612553575f5ffd5b8386111561255f575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b80820281158282048414176119785761197861251e565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e198436030181126125f7575f5ffd5b8301803591506001600160401b03821115612610575f5ffd5b6020019150600581901b3603821315612084575f5ffd5b818103818111156119785761197861251e565b5f5f8335601e1984360301811261264f575f5ffd5b8301803591506001600160401b03821115612668575f5ffd5b602001915036819003821315612084575f5ffd5b5f5f8585111561268a575f5ffd5b83861115612696575f5ffd5b5050600583901b0193919092039150565b60408152836040820152838560608301375f60608583018101829052601f19601f8701168301838103820160208501529081018490526001600160fb1b038411156126f0575f5ffd5b8360051b80866080840137016080019695505050505050565b5f60208284031215612719575f5ffd5b81516123078161208b565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215612785575f5ffd5b5051919050565b60ff82811682821603908111156119785761197861251e565b5f826127bf57634e487b7160e01b5f52601260045260245ffd5b50069056fea26469706673582212203eead11cd67987a1f7940dbd6e1b0340582c3c1345ba647e5d2761bb446278e664736f6c634300081d0033",
260
+ "sourceMap": "732:14004:25:-:0;;;3796:104;;;;;;;;;-1:-1:-1;3816:5:25;:18;;-1:-1:-1;;;;;;3816:18:25;3824:10;3816:18;;;;;;3845:50;;3879:15;160:25:29;;3845:50:25;;148:2:29;133:18;3845:50:25;;;;;;;732:14004;;;;;;",
261
+ "linkReferences": {}
262
+ },
263
+ "deployedBytecode": {
264
+ "object": "0x608060405234801561000f575f5ffd5b5060043610610106575f3560e01c80638163f2311161009e578063a6df2c011161006e578063a6df2c011461027d578063b2b37a4c14610290578063ddf3eec9146102c2578063ec1374cd146102e3578063f851a44014610311575f5ffd5b80638163f23114610204578063847755e314610244578063886c3533146102575780638d6937b81461026a575f5ffd5b80633a316e62116100d95780633a316e621461019957806345e21c90146101ac5780635c975abb146101de57806375829def146101f1575f5ffd5b806303d37eae1461010a578063126f75591461013a57806316c38b3c1461015a57806333fbc14d1461016f575b5f5ffd5b61011d610118366004612098565b610323565b604051610131989796959493929190612118565b60405180910390f35b61014d610148366004612205565b61088e565b6040516101319190612289565b61016d6101683660046122ec565b610ad2565b005b61018261017d36600461230e565b610b52565b604080519215158352602083019190915201610131565b61016d6101a7366004612345565b610e13565b6101ce6101ba366004612345565b60026020525f908152604090205460ff1681565b6040519015158152602001610131565b5f546101ce90600160a01b900460ff1681565b61016d6101ff36600461235c565b610ea7565b61022c610212366004612345565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610131565b6101ce610252366004612382565b610f75565b61016d610265366004612345565b61113d565b61016d61027836600461241e565b6111ce565b61016d61028b36600461245c565b6112b7565b6102a361029e3660046124c6565b61140a565b6040805193845260ff9283166020850152911690820152606001610131565b6102d56102d03660046124c6565b6115e6565b6040516101319291906124fa565b6102f66102f1366004612205565b6117c5565b60408051938452602084019290925290820152606001610131565b5f5461022c906001600160a01b031681565b606080606080606080606080886105dd578a60058b610343826027612532565b9261035093929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929a508d9250600291508c9050610398826003612532565b926103a593929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509299508d9250603691508c90506103ed826003612532565b926103fa93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509298508d9250604091508c9050610442826001612532565b9261044f93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508d9250603991508c9050610497826006612532565b926104a493929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509296508d9250604191508c90506104ec826006612532565b926104f993929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295508d9250602c91508c9050610541826009612532565b9261054e93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509395508e9392508d91506105949050826002612532565b926105a193929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092935061088192505050565b8a603c8b6105ec82601e612532565b926105f993929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929a508d9250600291508c9050610641826003612532565b9261064e93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509299508d9250602d91508c9050610696826003612532565b926106a393929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509298508d9250602591508c90506106eb826001612532565b926106f893929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508d9250601e91508c9050610740826006612532565b9261074d93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509296508d9250602691508c9050610795826006612532565b926107a293929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295508d9250600591508c90506107ea826009612532565b926107f793929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509395508e9392508d915061083d9050826002612532565b9261084a93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509293505050505b9397509397509397509397565b60605f80805b85811015610a74578686828181106108ae576108ae61256c565b9050602002013561025914801561090757508460078111156108d2576108d2612580565b60f81b6001600160f81b0319168989858181106108f1576108f161256c565b9050013560f81c60f81b6001600160f81b031916145b15610a46576040805160c8808252611920820190925290816020015b60608152602001906001900390816109235790505093505f5b60c8811015610a40578989610952836003612594565b61095c9087612532565b610967906001612532565b8181106109765761097661256c565b909101356001600160f81b031916159050610a40578989610998836003612594565b6109a29087612532565b6109ad906001612532565b906109b9846003612594565b6109c39088612532565b6109ce906003612532565b6109d9906001612532565b926109e693929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505087518892508491508110610a2d57610a2d61256c565b602090810291909101015260010161093c565b50600191505b868682818110610a5857610a5861256c565b9050602002013583610a6a9190612532565b9250600101610894565b5080610ac75760405162461bcd60e51b815260206004820152601e60248201527f436f756e7472792070726f6f6620696e70757473206e6f7420666f756e64000060448201526064015b60405180910390fd5b505095945050505050565b5f546001600160a01b03163314610afb5760405162461bcd60e51b8152600401610abe906125ab565b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c590610b4790831515815260200190565b60405180910390a150565b5f8080610b5f843561191f565b90505f6010610b7160408701876125e2565b610b7c929150612627565b9050610baa610b8e60408701876125e2565b5f818110610b9e57610b9e61256c565b9050602002013561197e565b610bf4610bba60408701876125e2565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a08701356119e8565b610c405760405162461bcd60e51b815260206004820181905260248201527f50726f6f662065787069726564206f72206461746520697320696e76616c69646044820152606401610abe565b610c6a610c5060408701876125e2565b610c5d60c089018961263a565b61025260e08b018b61263a565b610ca75760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073636f70657360901b6044820152606401610abe565b610d53610cb760408701876125e2565b600b90610cc5600186612627565b92610cd29392919061267c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610d1092505050606088018861263a565b610d1d60808a018a6125e2565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a8492505050565b6001600160a01b03821663ea50d0e4610d6f602088018861263a565b610d7c60408a018a6125e2565b6040518563ffffffff1660e01b8152600401610d9b94939291906126a7565b602060405180830381865afa158015610db6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dda9190612709565b610de760408701876125e2565b610df2600185612627565b818110610e0157610e0161256c565b90506020020135935093505050915091565b5f546001600160a01b03163314610e3c5760405162461bcd60e51b8152600401610abe906125ab565b5f54600160a01b900460ff1615610e655760405162461bcd60e51b8152600401610abe90612724565b5f81815260026020526040808220805460ff191660011790555182917f28b645e250fa5c9d240590b408225ec310e29b861312e75a76b0d55f7d927a2f91a250565b5f546001600160a01b03163314610ed05760405162461bcd60e51b8152600401610abe906125ab565b6001600160a01b038116610f265760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610abe565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f610fb586868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bcd92505050565b61102f57600860028787604051602001610fd0929190612750565b60408051601f1981840301815290829052610fea9161275f565b602060405180830381855afa158015611005573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906110289190612775565b901b611031565b5f5b90505f61107285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bcd92505050565b6110ec5760086002868660405160200161108d929190612750565b60408051601f19818403018152908290526110a79161275f565b602060405180830381855afa1580156110c2573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906110e59190612775565b901b6110ee565b5f5b905081898960098181106111045761110461256c565b905060200201351480156111305750808989600a8181106111275761112761256c565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146111665760405162461bcd60e51b8152600401610abe906125ab565b5f54600160a01b900460ff161561118f5760405162461bcd60e51b8152600401610abe90612724565b5f81815260026020526040808220805460ff191690555182917fc4da3a189adfa305afb4c073f96be9bd96f1ebea4e42a5e7e2e98818509a682791a250565b5f546001600160a01b031633146111f75760405162461bcd60e51b8152600401610abe906125ab565b5f54600160a01b900460ff16156112205760405162461bcd60e51b8152600401610abe90612724565b5f5b818110156112b25760015f84848481811061123f5761123f61256c565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558282828181106112775761127761256c565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611222565b505050565b5f546001600160a01b031633146112e05760405162461bcd60e51b8152600401610abe906125ab565b5f54600160a01b900460ff16156113095760405162461bcd60e51b8152600401610abe90612724565b5f5b83811015611403578282828181106113255761132561256c565b905060200201602081019061133a919061235c565b60015f87878581811061134f5761134f61256c565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106113985761139861256c565b90506020020160208101906113ad919061235c565b6001600160a01b03168585838181106113c8576113c861256c565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a360010161130b565b5050505050565b5f80808080805b8681101561158c5787878281811061142b5761142b61256c565b90506020020135600b0361155e57600160f81b8a8a858181106114505761145061256c565b9050013560f81c60f81b6001600160f81b031916146114a65760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070726f6f66207479706560701b6044820152606401610abe565b6115088a8a6114b6866001612532565b906114c2876009612532565b926114cf93929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bd292505050565b95508989611517856009612532565b8181106115265761152661256c565b919091013560f81c95508a90508961153f85600a612532565b81811061154e5761154e61256c565b919091013560f81c945060019250505b8787828181106115705761157061256c565b90506020020135836115829190612532565b9250600101611411565b50806115da5760405162461bcd60e51b815260206004820152601a60248201527f4167652070726f6f6620696e70757473206e6f7420666f756e640000000000006044820152606401610abe565b50509450945094915050565b6060805f80805b8581101561176c578686828181106116075761160761256c565b9050602002013560b50361173e575f8989858181106116285761162861256c565b9050013560f81c60f81b6001600160f81b0319161461167e5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070726f6f66207479706560701b6044820152606401610abe565b888861168b856001612532565b9061169786605b612532565b926116a493929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508b92508a91506116ea905085605b612532565b906116f68660b5612532565b9261170393929190612545565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929650600194505050505b8686828181106117505761175061256c565b90506020020135836117629190612532565b92506001016115ed565b50806117ba5760405162461bcd60e51b815260206004820152601f60248201527f446973636c6f73652070726f6f6620696e70757473206e6f7420666f756e64006044820152606401610abe565b505094509492505050565b5f80808080805b878110156118c4578888828181106117e6576117e661256c565b90506020020135601914801561183e575086600781111561180957611809612580565b60f81b6001600160f81b0319168b8b858181106118285761182861256c565b9050013560f81c60f81b6001600160f81b031916145b15611896576118538b8b6114b6866001612532565b95506118718b8b611865866009612532565b906114c2876011612532565b945061188f8b8b611883866011612532565b906114c2876019612532565b9350600191505b8888828181106118a8576118a861256c565b90506020020135836118ba9190612532565b92506001016117cc565b50806119125760405162461bcd60e51b815260206004820152601b60248201527f446174652070726f6f6620696e70757473206e6f7420666f756e6400000000006044820152606401610abe565b5050955095509592505050565b5f818152600160205260408120546001600160a01b0316806119785760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b6044820152606401610abe565b92915050565b5f8181526002602052604090205460ff166119e55760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b6064820152608401610abe565b50565b6040805160088082528183019092525f9182919060208201818036833701905050905060015b6009811015611a715760f8858281518110611a2b57611a2b61256c565b6020026020010151901b82600183611a439190612627565b81518110611a5357611a5361256c565b60200101906001600160f81b03191690815f1a905350600101611a0e565b50611a7c8184611ee1565b949350505050565b5f805b8251811015611bc5575f6008600287878690888781518110611aab57611aab61256c565b602002602001015188611abe9190612532565b92611acb93929190612545565b604051602001611adc929190612750565b60408051601f1981840301815290829052611af69161275f565b602060405180830381855afa158015611b11573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611b349190612775565b901c9050868281518110611b4a57611b4a61256c565b60200260200101518114611b955760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b6044820152606401610abe565b838281518110611ba757611ba761256c565b602002602001015183611bba9190612532565b925050600101611a87565b505050505050565b511590565b604080518082019091526008815267313131313131313160c01b6020918201528151908201205f907fc21a5c94d030b6b0ea6834442967d237d4cc49a2b74bbb3846572bb3c8021a3001611c2757505f919050565b5f611c5283600381518110611c3e57611c3e61256c565b01602001516001600160f81b031916611f2b565b611c6884600281518110611c3e57611c3e61256c565b611c7390600a612594565b611c8985600181518110611c3e57611c3e61256c565b611c94906064612594565b611ca9865f81518110611c3e57611c3e61256c565b611cb5906103e8612594565b611cbf9190612532565b611cc99190612532565b611cd39190612532565b90505f611cec84600581518110611c3e57611c3e61256c565b611d0285600481518110611c3e57611c3e61256c565b611d0d90600a612594565b611d179190612532565b90505f611d3085600781518110611c3e57611c3e61256c565b611d4686600681518110611c3e57611c3e61256c565b611d5190600a612594565b611d5b9190612532565b90506107b2831015611da85760405162461bcd60e51b81526020600482015260166024820152750b2cac2e440c4caccdee4ca40aa9c92b040cae0dec6d60531b6044820152606401610abe565b60018210158015611dba5750600c8211155b611df65760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840dadedce8d609b1b6044820152606401610abe565b60018110158015611e105750611e0c8284611f44565b8111155b611e4a5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642064617960a81b6044820152606401610abe565b5f6107b25b84811015611e8857611e6081611ff7565b611e6c5761016d611e70565b61016e5b611e7e9061ffff1683612532565b9150600101611e4f565b5060015b83811015611eb257611e9e8186611f44565b611ea89083612532565b9150600101611e8c565b50611ebe600183612627565b611ec89082612532565b9050611ed76201518082612594565b9695505050505050565b5f5f611eec84611bd2565b90505f611efc6201518085612594565b611f069083612532565b9050814210158015611f1757508181115b8015611f2257504281115b95945050505050565b5f611f3b603060f884901c61278c565b60ff1692915050565b5f60018310158015611f575750600c8311155b611f935760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840dadedce8d609b1b6044820152606401610abe565b82600203611fbc57611fa482611ff7565b611faf57601c611fb2565b601d5b60ff169050611978565b8260041480611fcb5750826006145b80611fd65750826009145b80611fe1575082600b145b15611fee5750601e611978565b50601f92915050565b5f6120036004836127a5565b1561200f57505f919050565b61201a6064836127a5565b1561202757506001919050565b612033610190836127a5565b1561203f57505f919050565b506001919050565b5f5f83601f840112612057575f5ffd5b5081356001600160401b0381111561206d575f5ffd5b602083019150836020828501011115612084575f5ffd5b9250929050565b80151581146119e5575f5ffd5b5f5f5f604084860312156120aa575f5ffd5b83356001600160401b038111156120bf575f5ffd5b6120cb86828701612047565b90945092505060208401356120df8161208b565b809150509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b61010081525f61212c61010083018b6120ea565b828103602084015261213e818b6120ea565b90508281036040840152612152818a6120ea565b9050828103606084015261216681896120ea565b9050828103608084015261217a81886120ea565b905082810360a084015261218e81876120ea565b905082810360c08401526121a281866120ea565b905082810360e08401526121b681856120ea565b9b9a5050505050505050505050565b5f5f83601f8401126121d5575f5ffd5b5081356001600160401b038111156121eb575f5ffd5b6020830191508360208260051b8501011115612084575f5ffd5b5f5f5f5f5f60608688031215612219575f5ffd5b85356001600160401b0381111561222e575f5ffd5b61223a88828901612047565b90965094505060208601356001600160401b03811115612258575f5ffd5b612264888289016121c5565b90945092505060408601356008811061227b575f5ffd5b809150509295509295909350565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156122e057603f198786030184526122cb8583516120ea565b945060209384019391909101906001016122af565b50929695505050505050565b5f602082840312156122fc575f5ffd5b81356123078161208b565b9392505050565b5f6020828403121561231e575f5ffd5b81356001600160401b03811115612333575f5ffd5b82016101008185031215612307575f5ffd5b5f60208284031215612355575f5ffd5b5035919050565b5f6020828403121561236c575f5ffd5b81356001600160a01b0381168114612307575f5ffd5b5f5f5f5f5f5f60608789031215612397575f5ffd5b86356001600160401b038111156123ac575f5ffd5b6123b889828a016121c5565b90975095505060208701356001600160401b038111156123d6575f5ffd5b6123e289828a01612047565b90955093505060408701356001600160401b03811115612400575f5ffd5b61240c89828a01612047565b979a9699509497509295939492505050565b5f5f6020838503121561242f575f5ffd5b82356001600160401b03811115612444575f5ffd5b612450858286016121c5565b90969095509350505050565b5f5f5f5f6040858703121561246f575f5ffd5b84356001600160401b03811115612484575f5ffd5b612490878288016121c5565b90955093505060208501356001600160401b038111156124ae575f5ffd5b6124ba878288016121c5565b95989497509550505050565b5f5f5f5f604085870312156124d9575f5ffd5b84356001600160401b038111156124ee575f5ffd5b61249087828801612047565b604081525f61250c60408301856120ea565b8281036020840152611f2281856120ea565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119785761197861251e565b5f5f85851115612553575f5ffd5b8386111561255f575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b80820281158282048414176119785761197861251e565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e198436030181126125f7575f5ffd5b8301803591506001600160401b03821115612610575f5ffd5b6020019150600581901b3603821315612084575f5ffd5b818103818111156119785761197861251e565b5f5f8335601e1984360301811261264f575f5ffd5b8301803591506001600160401b03821115612668575f5ffd5b602001915036819003821315612084575f5ffd5b5f5f8585111561268a575f5ffd5b83861115612696575f5ffd5b5050600583901b0193919092039150565b60408152836040820152838560608301375f60608583018101829052601f19601f8701168301838103820160208501529081018490526001600160fb1b038411156126f0575f5ffd5b8360051b80866080840137016080019695505050505050565b5f60208284031215612719575f5ffd5b81516123078161208b565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215612785575f5ffd5b5051919050565b60ff82811682821603908111156119785761197861251e565b5f826127bf57634e487b7160e01b5f52601260045260245ffd5b50069056fea26469706673582212203eead11cd67987a1f7940dbd6e1b0340582c3c1345ba647e5d2761bb446278e664736f6c634300081d0033",
265
+ "sourceMap": "732:14004:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5857:2299;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;10793:1004;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4323:118::-;;;;;;:::i;:::-;;:::i;:::-;;13523:1211;;;;;;:::i;:::-;;:::i;:::-;;;;5609:14:29;;5602:22;5584:41;;5656:2;5641:18;;5634:34;;;;5557:18;13523:1211:25;5416:258:29;5002:247:25;;;;;;:::i;:::-;;:::i;3202:62::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6029:14:29;;6022:22;6004:41;;5992:2;5977:18;3202:62:25;5864:187:29;3122:18:25;;;;;-1:-1:-1;;;3122:18:25;;;;;;4090:229;;;;;;:::i;:::-;;:::i;3145:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3145:53:25;;;;;;-1:-1:-1;;;;;6511:32:29;;;6493:51;;6481:2;6466:18;3145:53:25;6347:203:29;11801:625:25;;;;;;:::i;:::-;;:::i;5253:253::-;;;;;;:::i;:::-;;:::i;4753:245::-;;;;;;:::i;:::-;;:::i;4445:304::-;;;;;;:::i;:::-;;:::i;9923:866::-;;;;;;:::i;:::-;;:::i;:::-;;;;9759:25:29;;;9832:4;9820:17;;;9815:2;9800:18;;9793:45;9874:17;;9854:18;;;9847:45;9747:2;9732:18;9923:866:25;9565:333:29;8160:822:25;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;8986:933::-;;;;;;:::i;:::-;;:::i;:::-;;;;10489:25:29;;;10545:2;10530:18;;10523:34;;;;10573:18;;;10566:34;10477:2;10462:18;8986:933:25;10287:319:29;3098:20:25;;;;;-1:-1:-1;;;;;3098:20:25;;;5857:2299;5980:18;6006:28;6042:25;6075:20;6103:23;6134:24;6166:28;6202:26;6248:8;6243:1909;;6280:13;1889:1;6280:13;6318:28;1889:1;6344:2;6318:28;:::i;:::-;6280:67;;;;;;;:::i;:::-;6266:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6266:82:25;;-1:-1:-1;6389:13:25;;-1:-1:-1;880:1:25;;-1:-1:-1;6389:13:25;;-1:-1:-1;6430:30:25;880:1;6459;6430:30;:::i;:::-;6389:72;;;;;;;:::i;:::-;6356:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6356:113:25;;-1:-1:-1;6507:13:25;;-1:-1:-1;1237:2:25;;-1:-1:-1;6507:13:25;;-1:-1:-1;6552:34:25;1237:2;6585:1;6552:34;:::i;:::-;6507:80;;;;;;;:::i;:::-;6477:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6477:118:25;;-1:-1:-1;6619:13:25;;-1:-1:-1;1364:2:25;;-1:-1:-1;6619:13:25;;-1:-1:-1;6659:29:25;1364:2;6687:1;6659:29;:::i;:::-;6619:70;;;;;;;:::i;:::-;6603:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6603:87:25;;-1:-1:-1;6726:13:25;;-1:-1:-1;1586:2:25;;-1:-1:-1;6726:13:25;;-1:-1:-1;6769:32:25;1586:2;6800:1;6769:32;:::i;:::-;6726:76;;;;;;;:::i;:::-;6698:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6698:112:25;;-1:-1:-1;6847:13:25;;-1:-1:-1;1463:2:25;;-1:-1:-1;6847:13:25;;-1:-1:-1;6892:34:25;1463:2;6925:1;6892:34;:::i;:::-;6847:80;;;;;;;:::i;:::-;6818:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6818:117:25;;-1:-1:-1;6976:13:25;;-1:-1:-1;1692:2:25;;-1:-1:-1;6976:13:25;;-1:-1:-1;7025:38:25;1692:2;7062:1;7025:38;:::i;:::-;6976:88;;;;;;;:::i;:::-;6943:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6943:129:25;;-1:-1:-1;7111:13:25;;6943:129;-1:-1:-1;7111:13:25;;-1:-1:-1;7158:36:25;;-1:-1:-1;6943:129:25;7193:1;7158:36;:::i;:::-;7111:84;;;;;;;:::i;:::-;7080:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7080:123:25;;-1:-1:-1;6243:1909:25;;-1:-1:-1;;;6243:1909:25;;7238:13;3010:2;7238:13;7275:27;3010:2;7300;7275:27;:::i;:::-;7238:65;;;;;;;:::i;:::-;7224:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7224:80:25;;-1:-1:-1;7345:13:25;;-1:-1:-1;2076:1:25;;-1:-1:-1;7345:13:25;;-1:-1:-1;7385:29:25;2076:1;7413;7385:29;:::i;:::-;7345:70;;;;;;;:::i;:::-;7312:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7312:111:25;;-1:-1:-1;7461:13:25;;-1:-1:-1;2365:2:25;;-1:-1:-1;7461:13:25;;-1:-1:-1;7505:33:25;2365:2;7537:1;7505:33;:::i;:::-;7461:78;;;;;;;:::i;:::-;7431:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7431:116:25;;-1:-1:-1;7571:13:25;;-1:-1:-1;2491:2:25;;-1:-1:-1;7571:13:25;;-1:-1:-1;7610:28:25;2491:2;7637:1;7610:28;:::i;:::-;7571:68;;;;;;;:::i;:::-;7555:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7555:85:25;;-1:-1:-1;7676:13:25;;-1:-1:-1;2711:2:25;;-1:-1:-1;7676:13:25;;-1:-1:-1;7718:31:25;2711:2;7748:1;7718:31;:::i;:::-;7676:74;;;;;;;:::i;:::-;7648:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7648:110:25;;-1:-1:-1;7795:13:25;;-1:-1:-1;2589:2:25;;-1:-1:-1;7795:13:25;;-1:-1:-1;7839:33:25;2589:2;7871:1;7839:33;:::i;:::-;7795:78;;;;;;;:::i;:::-;7766:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7766:115:25;;-1:-1:-1;7922:13:25;;-1:-1:-1;2816:1:25;;-1:-1:-1;7922:13:25;;-1:-1:-1;7970:37:25;2816:1;8006;7970:37;:::i;:::-;7922:86;;;;;;;:::i;:::-;7889:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7889:127:25;;-1:-1:-1;8055:13:25;;7889:127;-1:-1:-1;8055:13:25;;-1:-1:-1;8101:35:25;;-1:-1:-1;7889:127:25;8135:1;8101:35;:::i;:::-;8055:82;;;;;;;:::i;:::-;8024:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8024:121:25;;-1:-1:-1;;;;6243:1909:25;5857:2299;;;;;;;;;;;:::o;10793:1004::-;10955:27;10990:14;;;11038:701;11058:31;;;11038:701;;;11237:20;;11258:1;11237:23;;;;;;;:::i;:::-;;;;;;;11264:3;11237:30;:85;;;;;11311:9;11305:16;;;;;;;;:::i;:::-;11298:24;;-1:-1:-1;;;;;11271:51:25;;:15;;11287:6;11271:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11271:51:25;;;11237:85;11233:459;;;11348:17;;;11361:3;11348:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11334:31:25;-1:-1:-1;11380:9:25;11375:287;11399:3;11395:1;:7;11375:287;;;11425:15;;11450:5;:1;11454;11450:5;:::i;:::-;11441:14;;:6;:14;:::i;:::-;:18;;11458:1;11441:18;:::i;:::-;11425:35;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11425:35:25;11421:136;;-1:-1:-1;11539:5:25;11421:136;11592:15;;11617:5;:1;11621;11617:5;:::i;:::-;11608:14;;:6;:14;:::i;:::-;:18;;11625:1;11608:18;:::i;:::-;11592:58;11636:5;:1;11640;11636:5;:::i;:::-;11627:14;;:6;:14;:::i;:::-;:18;;11644:1;11627:18;:::i;:::-;:22;;11648:1;11627:22;:::i;:::-;11592:58;;;;;;;:::i;:::-;11568:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11568:14:25;;:11;;-1:-1:-1;11580:1:25;;-1:-1:-1;11568:14:25;;;;;;:::i;:::-;;;;;;;;;;:83;11404:3;;11375:287;;;;11679:4;11671:12;;11233:459;11709:20;;11730:1;11709:23;;;;;;;:::i;:::-;;;;;;;11699:33;;;;;:::i;:::-;;-1:-1:-1;11091:3:25;;11038:701;;;;11752:5;11744:48;;;;-1:-1:-1;;;11744:48:25;;11980:2:29;11744:48:25;;;11962:21:29;12019:2;11999:18;;;11992:30;12058:32;12038:18;;;12031:60;12108:18;;11744:48:25;;;;;;;;;10984:813;;10793:1004;;;;;;;:::o;4323:118::-;3953:5;;-1:-1:-1;;;;;3953:5:25;3939:10;:19;3931:58;;;;-1:-1:-1;;;3931:58:25;;;;;;;:::i;:::-;4381:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;4381:16:25::1;-1:-1:-1::0;;;;4381:16:25;;::::1;;::::0;;4408:28:::1;::::0;::::1;::::0;::::1;::::0;4390:7;6029:14:29;6022:22;6004:41;;5992:2;5977:18;;5864:187;4408:28:25::1;;;;;;;;4323:118:::0;:::o;13523:1211::-;13616:4;;;13656:29;13669:15;;13656:12;:29::i;:::-;13637:48;-1:-1:-1;13851:30:25;13913:2;13884:19;;;;:6;:19;:::i;:::-;:31;;;-1:-1:-1;13884:31:25;:::i;:::-;13851:64;-1:-1:-1;13964:48:25;13989:19;;;;:6;:19;:::i;:::-;14009:1;13989:22;;;;;;;:::i;:::-;;;;;;;13964:24;:48::i;:::-;14070:59;14080:19;;;;:6;:19;:::i;:::-;14070:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14101:27:25;;;;14070:9;:59::i;:::-;14055:122;;;;-1:-1:-1;;;14055:122:25;;13377:2:29;14055:122:25;;;13359:21:29;;;13396:18;;;13389:30;13455:34;13435:18;;;13428:62;13507:18;;14055:122:25;13175:356:29;14055:122:25;14227:64;14240:19;;;;:6;:19;:::i;:::-;14261:12;;;;:6;:12;:::i;:::-;14275:15;;;;:6;:15;:::i;14227:64::-;14219:91;;;;-1:-1:-1;;;14219:91:25;;14265:2:29;14219:91:25;;;14247:21:29;14304:2;14284:18;;;14277:30;-1:-1:-1;;;14323:18:29;;;14316:44;14377:18;;14219:91:25;14063:338:29;14219:91:25;14378:207;14464:19;;;;:6;:19;:::i;:::-;14484:2;;14487:26;14512:1;14487:22;:26;:::i;:::-;14464:50;;;;;;;:::i;:::-;14378:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14522:22:25;;-1:-1:-1;;;14522:22:25;;;;;:::i;:::-;14552:27;;;;:6;:27;:::i;:::-;14378:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14378:21:25;;-1:-1:-1;;;14378:207:25:i;:::-;-1:-1:-1;;;;;14607:26:25;;;14634:12;;;;:6;:12;:::i;:::-;14648:19;;;;:6;:19;:::i;:::-;14607:61;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14676:19;;;;:6;:19;:::i;:::-;14696:26;14721:1;14696:22;:26;:::i;:::-;14676:47;;;;;;;:::i;:::-;;;;;;;14592:137;;;;;;13523:1211;;;:::o;5002:247::-;3953:5;;-1:-1:-1;;;;;3953:5:25;3939:10;:19;3931:58;;;;-1:-1:-1;;;3931:58:25;;;;;;;:::i;:::-;4045:6:::1;::::0;-1:-1:-1;;;4045:6:25;::::1;;;4044:7;4036:38;;;;-1:-1:-1::0;;;4036:38:25::1;;;;;;;:::i;:::-;5118:55:::2;::::0;;;:30:::2;:55;::::0;;;;;:62;;-1:-1:-1;;5118:62:25::2;5176:4;5118:62;::::0;;5191:53;5149:23;;5191:53:::2;::::0;::::2;5002:247:::0;:::o;4090:229::-;3953:5;;-1:-1:-1;;;;;3953:5:25;3939:10;:19;3931:58;;;;-1:-1:-1;;;3931:58:25;;;;;;;:::i;:::-;-1:-1:-1;;;;;4164:22:25;::::1;4156:63;;;::::0;-1:-1:-1;;;4156:63:25;;17417:2:29;4156:63:25::1;::::0;::::1;17399:21:29::0;17456:2;17436:18;;;17429:30;17495;17475:18;;;17468:58;17543:18;;4156:63:25::1;17215:352:29::0;4156:63:25::1;4225:16;4244:5:::0;;-1:-1:-1;;;;;4255:16:25;;::::1;-1:-1:-1::0;;;;;;4255:16:25;::::1;::::0;::::1;::::0;;4282:32:::1;::::0;4244:5;;;::::1;::::0;;;4282:32:::1;::::0;4225:16;4282:32:::1;4150:169;4090:229:::0;:::o;11801:625::-;11942:4;12109:17;12129:26;12149:5;;12129:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12129:19:25;;-1:-1:-1;;;12129:26:25:i;:::-;:90;;12218:1;12183:31;12207:5;;12190:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12190:23:25;;;;;;;;;;12183:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;12129:90;;;12172:1;12129:90;12109:110;;12225:20;12248:29;12268:8;;12248:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12248:19:25;;-1:-1:-1;;;12248:29:25:i;:::-;:96;;12343:1;12305:34;12329:8;;12312:26;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12312:26:25;;;;;;;;;;12305:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;;12248:96;;;12294:1;12248:96;12225:119;;12376:9;12357:12;;12370:1;12357:15;;;;;;;:::i;:::-;;;;;;;:28;:64;;;;;12409:12;12389;;12402:2;12389:16;;;;;;;:::i;:::-;;;;;;;:32;12357:64;12350:71;11801:625;-1:-1:-1;;;;;;;;;11801:625:25:o;5253:253::-;3953:5;;-1:-1:-1;;;;;3953:5:25;3939:10;:19;3931:58;;;;-1:-1:-1;;;3931:58:25;;;;;;;:::i;:::-;4045:6:::1;::::0;-1:-1:-1;;;4045:6:25;::::1;;;4044:7;4036:38;;;;-1:-1:-1::0;;;4036:38:25::1;;;;;;;:::i;:::-;5430:5:::2;5372:55:::0;;;:30:::2;:55;::::0;;;;;:63;;-1:-1:-1;;5372:63:25::2;::::0;;5446:55;5403:23;;5446:55:::2;::::0;::::2;5253:253:::0;:::o;4753:245::-;3953:5;;-1:-1:-1;;;;;3953:5:25;3939:10;:19;3931:58;;;;-1:-1:-1;;;3931:58:25;;;;;;;:::i;:::-;4045:6:::1;::::0;-1:-1:-1;;;4045:6:25;::::1;;;4044:7;4036:38;;;;-1:-1:-1::0;;;4036:38:25::1;;;;;;;:::i;:::-;4853:9:::2;4848:146;4868:21:::0;;::::2;4848:146;;;4911:18;:33;4930:10;;4941:1;4930:13;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;::::2;;4911:33:::0;;-1:-1:-1;4911:33:25;::::2;::::0;;;;;;-1:-1:-1;4911:33:25;4904:40;;-1:-1:-1;;;;;;4904:40:25::2;::::0;;4973:10;;4984:1;4973:13;;::::2;;;;;:::i;:::-;;;;;;;4957:30;;;;;;;;;;4891:3;;4848:146;;;;4753:245:::0;;:::o;4445:304::-;3953:5;;-1:-1:-1;;;;;3953:5:25;3939:10;:19;3931:58;;;;-1:-1:-1;;;3931:58:25;;;;;;;:::i;:::-;4045:6:::1;::::0;-1:-1:-1;;;4045:6:25;::::1;;;4044:7;4036:38;;;;-1:-1:-1::0;;;4036:38:25::1;;;;;;;:::i;:::-;4584:9:::2;4579:166;4599:21:::0;;::::2;4579:166;;;4671:9;;4681:1;4671:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4635:18;:33;4654:10;;4665:1;4654:13;;;;;;;:::i;:::-;;;;;;;4635:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;4635:48:25::2;;;;;-1:-1:-1::0;;;;;4635:48:25::2;;;;;;4725:9;;4735:1;4725:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4696:42:25::2;4710:10;;4721:1;4710:13;;;;;;;:::i;:::-;;;;;;;4696:42;;;;;;;;;;4622:3;;4579:166;;;;4445:304:::0;;;;:::o;9923:866::-;10056:19;;;;;;10159:576;10179:31;;;10159:576;;;10329:20;;10350:1;10329:23;;;;;;;:::i;:::-;;;;;;;10356:2;10329:29;10325:363;;-1:-1:-1;;;10378:15:25;;10394:6;10378:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;10378:55:25;;;10370:86;;;;-1:-1:-1;;;10370:86:25;;18547:2:29;10370:86:25;;;18529:21:29;18586:2;18566:18;;;18559:30;-1:-1:-1;;;18605:18:29;;;18598:48;18663:18;;10370:86:25;18345:342:29;10370:86:25;10480:70;10511:15;;10527:10;:6;10536:1;10527:10;:::i;:::-;10511:38;10538:10;:6;10547:1;10538:10;:::i;:::-;10511:38;;;;;;;:::i;:::-;10480:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10480:30:25;;-1:-1:-1;;;10480:70:25:i;:::-;10466:84;-1:-1:-1;10575:15:25;;10591:10;:6;10600:1;10591:10;:::i;:::-;10575:27;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;10628:15:25;;-1:-1:-1;10628:15:25;10644:11;:6;10653:2;10644:11;:::i;:::-;10628:28;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;10675:4:25;;-1:-1:-1;;10325:363:25;10705:20;;10726:1;10705:23;;;;;;;:::i;:::-;;;;;;;10695:33;;;;;:::i;:::-;;-1:-1:-1;10212:3:25;;10159:576;;;;10748:5;10740:44;;;;-1:-1:-1;;;10740:44:25;;18894:2:29;10740:44:25;;;18876:21:29;18933:2;18913:18;;;18906:30;18972:28;18952:18;;;18945:56;19018:18;;10740:44:25;18692:350:29;10740:44:25;10105:684;;9923:866;;;;;;;;:::o;8160:822::-;8298:25;;8359:14;;;8407:516;8427:31;;;8407:516;;;8581:20;;8602:1;8581:23;;;;;;;:::i;:::-;;;;;;;8608:3;8581:30;8577:299;;8671:18;8631:15;;8647:6;8631:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8631:60:25;;;8623:91;;;;-1:-1:-1;;;8623:91:25;;18547:2:29;8623:91:25;;;18529:21:29;18586:2;18566:18;;;18559:30;-1:-1:-1;;;18605:18:29;;;18598:48;18663:18;;8623:91:25;18345:342:29;8623:91:25;8739:15;;8755:10;:6;8764:1;8755:10;:::i;:::-;8739:39;8766:11;:6;8775:2;8766:11;:::i;:::-;8739:39;;;;;;;:::i;:::-;8724:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8724:54:25;;-1:-1:-1;8804:15:25;;-1:-1:-1;8804:15:25;;-1:-1:-1;8820:11:25;;-1:-1:-1;8820:6:25;8829:2;8820:11;:::i;:::-;8804:41;8832:12;:6;8841:3;8832:12;:::i;:::-;8804:41;;;;;;;:::i;:::-;8788:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8788:57:25;;-1:-1:-1;8863:4:25;;-1:-1:-1;;;;8577:299:25;8893:20;;8914:1;8893:23;;;;;;;:::i;:::-;;;;;;;8883:33;;;;;:::i;:::-;;-1:-1:-1;8460:3:25;;8407:516;;;;8936:5;8928:49;;;;-1:-1:-1;;;8928:49:25;;19249:2:29;8928:49:25;;;19231:21:29;19288:2;19268:18;;;19261:30;19327:33;19307:18;;;19300:61;19378:18;;8928:49:25;19047:355:29;8928:49:25;8353:629;;8160:822;;;;;;;:::o;8986:933::-;9145:19;;;;;;9254:610;9274:31;;;9254:610;;;9423:20;;9444:1;9423:23;;;;;;;:::i;:::-;;;;;;;9450:2;9423:29;:84;;;;;9496:9;9490:16;;;;;;;;:::i;:::-;9483:24;;-1:-1:-1;;;;;9456:51:25;;:15;;9472:6;9456:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;9456:51:25;;;9423:84;9419:398;;;9533:70;9564:15;;9580:10;:6;9589:1;9580:10;:::i;9533:70::-;9519:84;-1:-1:-1;9623:71:25;9654:15;;9670:10;:6;9679:1;9670:10;:::i;:::-;9654:39;9681:11;:6;9690:2;9681:11;:::i;9623:71::-;9613:81;-1:-1:-1;9714:72:25;9745:15;;9761:11;:6;9770:2;9761:11;:::i;:::-;9745:40;9773:11;:6;9782:2;9773:11;:::i;9714:72::-;9704:82;;9804:4;9796:12;;9419:398;9834:20;;9855:1;9834:23;;;;;;;:::i;:::-;;;;;;;9824:33;;;;;:::i;:::-;;-1:-1:-1;9307:3:25;;9254:610;;;;9877:5;9869:45;;;;-1:-1:-1;;;9869:45:25;;19609:2:29;9869:45:25;;;19591:21:29;19648:2;19628:18;;;19621:30;19687:29;19667:18;;;19660:57;19734:18;;9869:45:25;19407:351:29;9869:45:25;9200:719;;8986:933;;;;;;;;;:::o;13045:210::-;13108:7;13142:28;;;:18;:28;;;;;;-1:-1:-1;;;;;13142:28:25;;13176:53;;;;-1:-1:-1;;;13176:53:25;;19965:2:29;13176:53:25;;;19947:21:29;20004:2;19984:18;;;19977:30;-1:-1:-1;;;20023:18:29;;;20016:48;20081:18;;13176:53:25;19763:342:29;13176:53:25;13242:8;13045:210;-1:-1:-1;;13045:210:25:o;13259:260::-;13429:47;;;;:30;:47;;;;;;;;13421:93;;;;-1:-1:-1;;;13421:93:25;;20312:2:29;13421:93:25;;;20294:21:29;20351:2;20331:18;;;20324:30;20390:34;20370:18;;;20363:62;-1:-1:-1;;;20441:18:29;;;20434:31;20482:19;;13421:93:25;20110:397:29;13421:93:25;13259:260;:::o;5510:343::-;5664:12;;;5674:1;5664:12;;;;;;;;;5625:4;;;;5664:12;;;;;;;;;;;-1:-1:-1;;5637:39:25;-1:-1:-1;5699:1:25;5682:98;5706:1;5702;:5;5682:98;;;5769:3;5750:12;5763:1;5750:15;;;;;;;;:::i;:::-;;;;;;;:22;;5722:11;5738:1;5734;:5;;;;:::i;:::-;5722:18;;;;;;;;:::i;:::-;;;;:51;-1:-1:-1;;;;;5722:51:25;;;;;;;;-1:-1:-1;5709:3:25;;5682:98;;;;5792:56;5814:11;5827:20;5792:21;:56::i;:::-;5785:63;5510:343;-1:-1:-1;;;;5510:343:25:o;12430:611::-;12603:14;;12627:410;12651:20;:27;12647:1;:31;12627:410;;;12773:28;12906:1;12804:98;12837:15;;12853:6;12837:56;12869:20;12890:1;12869:23;;;;;;;;:::i;:::-;;;;;;;12860:6;:32;;;;:::i;:::-;12837:56;;;;;;;:::i;:::-;12820:74;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12820:74:25;;;;;;;;;;12804:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:103;;12773:134;;12947:16;12964:1;12947:19;;;;;;;;:::i;:::-;;;;;;;12923:20;:43;12915:74;;;;-1:-1:-1;;;12915:74:25;;20996:2:29;12915:74:25;;;20978:21:29;21035:2;21015:18;;;21008:30;-1:-1:-1;;;21054:18:29;;;21047:48;21112:18;;12915:74:25;20794:342:29;12915:74:25;13007:20;13028:1;13007:23;;;;;;;;:::i;:::-;;;;;;;12997:33;;;;;:::i;:::-;;-1:-1:-1;;12680:3:25;;12627:410;;;;12597:444;12430:611;;;;:::o;262:101:24:-;338:15;:20;;262:101::o;1965:1238:20:-;523:17;;;;;;;;;;;;-1:-1:-1;;;523:17:20;;;;;2056:15;;;;;;2037:7;;2056:49;;2052:78;;-1:-1:-1;2122:1:20;;1965:1238;-1:-1:-1;1965:1238:20:o;2052:78::-;2135:12;2291:26;2309:4;2314:1;2309:7;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;2309:7:20;2291:17;:26::i;:::-;2245;2263:4;2268:1;2263:7;;;;;;;;:::i;2245:26::-;:37;;2280:2;2245:37;:::i;:::-;2198:26;2216:4;2221:1;2216:7;;;;;;;;:::i;2198:26::-;:38;;2233:3;2198:38;:::i;:::-;2150:26;2168:4;2173:1;2168:7;;;;;;;;:::i;2150:26::-;:39;;2185:4;2150:39;:::i;:::-;:86;;;;:::i;:::-;:132;;;;:::i;:::-;:167;;;;:::i;:::-;2135:182;;2323:13;2373:26;2391:4;2396:1;2391:7;;;;;;;;:::i;2373:26::-;2339;2357:4;2362:1;2357:7;;;;;;;;:::i;2339:26::-;:31;;2368:2;2339:31;:::i;:::-;:60;;;;:::i;:::-;2323:76;;2405:11;2453:26;2471:4;2476:1;2471:7;;;;;;;;:::i;2453:26::-;2419;2437:4;2442:1;2437:7;;;;;;;;:::i;2419:26::-;:31;;2448:2;2419:31;:::i;:::-;:60;;;;:::i;:::-;2405:74;;173:4;2493;:29;;2485:64;;;;-1:-1:-1;;;2485:64:20;;21343:2:29;2485:64:20;;;21325:21:29;21382:2;21362:18;;;21355:30;-1:-1:-1;;;21401:18:29;;;21394:52;21463:18;;2485:64:20;21141:346:29;2485:64:20;2572:1;2563:5;:10;;:25;;;;;2586:2;2577:5;:11;;2563:25;2555:51;;;;-1:-1:-1;;;2555:51:20;;21694:2:29;2555:51:20;;;21676:21:29;21733:2;21713:18;;;21706:30;-1:-1:-1;;;21752:18:29;;;21745:43;21805:18;;2555:51:20;21492:337:29;2555:51:20;2627:1;2620:3;:8;;:46;;;;;2639:27;2654:5;2661:4;2639:14;:27::i;:::-;2632:3;:34;;2620:46;2612:70;;;;-1:-1:-1;;;2612:70:20;;22036:2:29;2612:70:20;;;22018:21:29;22075:2;22055:18;;;22048:30;-1:-1:-1;;;22094:18:29;;;22087:41;22145:18;;2612:70:20;21834:335:29;2612:70:20;2727:17;173:4;2754:108;2798:4;2794:1;:8;2754:108;;;2830:13;2841:1;2830:10;:13::i;:::-;:25;;2852:3;2830:25;;;2846:3;2830:25;2817:38;;;;;;:::i;:::-;;-1:-1:-1;2804:3:20;;2754:108;;;-1:-1:-1;2924:1:20;2907:87;2931:5;2927:1;:9;2907:87;;;2964:23;2979:1;2982:4;2964:14;:23::i;:::-;2951:36;;;;:::i;:::-;;-1:-1:-1;2938:3:20;;2907:87;;;-1:-1:-1;3046:7:20;3052:1;3046:3;:7;:::i;:::-;3033:20;;;;:::i;:::-;;-1:-1:-1;3171:27:20;350:5;3033:20;3171:27;:::i;:::-;3164:34;1965:1238;-1:-1:-1;;;;;;1965:1238:20:o;3465:401::-;3570:4;3582:17;3602:26;3623:4;3602:20;:26::i;:::-;3582:46;-1:-1:-1;3634:31:20;3680:38;350:5;3680:20;:38;:::i;:::-;3668:50;;:9;:50;:::i;:::-;3634:84;;3756:9;3737:15;:28;;:73;;;;;3801:9;3775:23;:35;3737:73;:124;;;;;3846:15;3820:23;:41;3737:124;3724:137;3465:401;-1:-1:-1;;;;;3465:401:20:o;704:116::-;772:7;794:21;813:2;794:16;;;;:21;:::i;:::-;787:28;;;704:116;-1:-1:-1;;704:116:20:o;1376:421::-;1452:7;1484:1;1475:5;:10;;:25;;;;;1498:2;1489:5;:11;;1475:25;1467:51;;;;-1:-1:-1;;;1467:51:20;;21694:2:29;1467:51:20;;;21676:21:29;21733:2;21713:18;;;21706:30;-1:-1:-1;;;21752:18:29;;;21745:43;21805:18;;1467:51:20;21492:337:29;1467:51:20;1573:5;1582:1;1573:10;1569:64;;1600:16;1611:4;1600:10;:16::i;:::-;:26;;1624:2;1600:26;;;1619:2;1600:26;1593:33;;;;;;1569:64;1671:5;1680:1;1671:10;:24;;;;1685:5;1694:1;1685:10;1671:24;:38;;;;1699:5;1708:1;1699:10;1671:38;:53;;;;1713:5;1722:2;1713:11;1671:53;1667:83;;;-1:-1:-1;1741:2:20;1734:9;;1667:83;-1:-1:-1;1790:2:20;1376:421;;;;:::o;975:199::-;1032:4;1048:8;1055:1;1048:4;:8;:::i;:::-;:13;1044:31;;-1:-1:-1;1070:5:20;;975:199;-1:-1:-1;975:199:20:o;1044:31::-;1085:10;1092:3;1085:4;:10;:::i;:::-;:15;1081:32;;-1:-1:-1;1109:4:20;;975:199;-1:-1:-1;975:199:20:o;1081:32::-;1123:10;1130:3;1123:4;:10;:::i;:::-;:15;1119:33;;-1:-1:-1;1147:5:20;;975:199;-1:-1:-1;975:199:20:o;1119:33::-;-1:-1:-1;1165:4:20;;975:199;-1:-1:-1;975:199:20:o;14:347:29:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:29;;-1:-1:-1;;;;;202:30:29;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:118::-;452:5;445:13;438:21;431:5;428:32;418:60;;474:1;471;464:12;489:538;565:6;573;581;634:2;622:9;613:7;609:23;605:32;602:52;;;650:1;647;640:12;602:52;690:9;677:23;-1:-1:-1;;;;;715:6:29;712:30;709:50;;;755:1;752;745:12;709:50;794:58;844:7;835:6;824:9;820:22;794:58;:::i;:::-;871:8;;-1:-1:-1;768:84:29;-1:-1:-1;;956:2:29;941:18;;928:32;969:28;928:32;969:28;:::i;:::-;1016:5;1006:15;;;489:538;;;;;:::o;1032:289::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1195:6;1188:4;1181:5;1177:16;1170:4;1165:3;1161:14;1155:47;1247:1;1240:4;1231:6;1226:3;1222:16;1218:27;1211:38;1310:4;1303:2;1299:7;1294:2;1286:6;1282:15;1278:29;1273:3;1269:39;1265:50;1258:57;;;1032:289;;;;:::o;1326:1367::-;1811:3;1800:9;1793:22;1774:4;1838:46;1879:3;1868:9;1864:19;1856:6;1838:46;:::i;:::-;1932:9;1924:6;1920:22;1915:2;1904:9;1900:18;1893:50;1966:33;1992:6;1984;1966:33;:::i;:::-;1952:47;;2047:9;2039:6;2035:22;2030:2;2019:9;2015:18;2008:50;2081:33;2107:6;2099;2081:33;:::i;:::-;2067:47;;2162:9;2154:6;2150:22;2145:2;2134:9;2130:18;2123:50;2196:33;2222:6;2214;2196:33;:::i;:::-;2182:47;;2278:9;2270:6;2266:22;2260:3;2249:9;2245:19;2238:51;2312:33;2338:6;2330;2312:33;:::i;:::-;2298:47;;2394:9;2386:6;2382:22;2376:3;2365:9;2361:19;2354:51;2428:33;2454:6;2446;2428:33;:::i;:::-;2414:47;;2510:9;2502:6;2498:22;2492:3;2481:9;2477:19;2470:51;2544:33;2570:6;2562;2544:33;:::i;:::-;2530:47;;2626:9;2618:6;2614:22;2608:3;2597:9;2593:19;2586:51;2654:33;2680:6;2672;2654:33;:::i;:::-;2646:41;1326:1367;-1:-1:-1;;;;;;;;;;;1326:1367:29:o;2698:367::-;2761:8;2771:6;2825:3;2818:4;2810:6;2806:17;2802:27;2792:55;;2843:1;2840;2833:12;2792:55;-1:-1:-1;2866:20:29;;-1:-1:-1;;;;;2898:30:29;;2895:50;;;2941:1;2938;2931:12;2895:50;2978:4;2970:6;2966:17;2954:29;;3038:3;3031:4;3021:6;3018:1;3014:14;3006:6;3002:27;2998:38;2995:47;2992:67;;;3055:1;3052;3045:12;3070:899;3200:6;3208;3216;3224;3232;3285:2;3273:9;3264:7;3260:23;3256:32;3253:52;;;3301:1;3298;3291:12;3253:52;3341:9;3328:23;-1:-1:-1;;;;;3366:6:29;3363:30;3360:50;;;3406:1;3403;3396:12;3360:50;3445:58;3495:7;3486:6;3475:9;3471:22;3445:58;:::i;:::-;3522:8;;-1:-1:-1;3419:84:29;-1:-1:-1;;3610:2:29;3595:18;;3582:32;-1:-1:-1;;;;;3626:32:29;;3623:52;;;3671:1;3668;3661:12;3623:52;3710:72;3774:7;3763:8;3752:9;3748:24;3710:72;:::i;:::-;3801:8;;-1:-1:-1;3684:98:29;-1:-1:-1;;3886:2:29;3871:18;;3858:32;3919:1;3909:12;;3899:40;;3935:1;3932;3925:12;3899:40;3958:5;3948:15;;;3070:899;;;;;;;;:::o;3974:782::-;4136:4;4184:2;4173:9;4169:18;4214:2;4203:9;4196:21;4237:6;4272;4266:13;4303:6;4295;4288:22;4341:2;4330:9;4326:18;4319:25;;4403:2;4393:6;4390:1;4386:14;4375:9;4371:30;4367:39;4353:53;;4441:2;4433:6;4429:15;4462:1;4472:255;4486:6;4483:1;4480:13;4472:255;;;4579:2;4575:7;4563:9;4555:6;4551:22;4547:36;4542:3;4535:49;4607:40;4640:6;4631;4625:13;4607:40;:::i;:::-;4597:50;-1:-1:-1;4682:2:29;4705:12;;;;4670:15;;;;;4508:1;4501:9;4472:255;;;-1:-1:-1;4744:6:29;;3974:782;-1:-1:-1;;;;;;3974:782:29:o;4761:241::-;4817:6;4870:2;4858:9;4849:7;4845:23;4841:32;4838:52;;;4886:1;4883;4876:12;4838:52;4925:9;4912:23;4944:28;4966:5;4944:28;:::i;:::-;4991:5;4761:241;-1:-1:-1;;;4761:241:29:o;5007:404::-;5110:6;5163:2;5151:9;5142:7;5138:23;5134:32;5131:52;;;5179:1;5176;5169:12;5131:52;5219:9;5206:23;-1:-1:-1;;;;;5244:6:29;5241:30;5238:50;;;5284:1;5281;5274:12;5238:50;5307:22;;5363:3;5345:16;;;5341:26;5338:46;;;5380:1;5377;5370:12;5679:180;5738:6;5791:2;5779:9;5770:7;5766:23;5762:32;5759:52;;;5807:1;5804;5797:12;5759:52;-1:-1:-1;5830:23:29;;5679:180;-1:-1:-1;5679:180:29:o;6056:286::-;6115:6;6168:2;6156:9;6147:7;6143:23;6139:32;6136:52;;;6184:1;6181;6174:12;6136:52;6210:23;;-1:-1:-1;;;;;6262:31:29;;6252:42;;6242:70;;6308:1;6305;6298:12;6555:1045;6683:6;6691;6699;6707;6715;6723;6776:2;6764:9;6755:7;6751:23;6747:32;6744:52;;;6792:1;6789;6782:12;6744:52;6832:9;6819:23;-1:-1:-1;;;;;6857:6:29;6854:30;6851:50;;;6897:1;6894;6887:12;6851:50;6936:70;6998:7;6989:6;6978:9;6974:22;6936:70;:::i;:::-;7025:8;;-1:-1:-1;6910:96:29;-1:-1:-1;;7113:2:29;7098:18;;7085:32;-1:-1:-1;;;;;7129:32:29;;7126:52;;;7174:1;7171;7164:12;7126:52;7213:60;7265:7;7254:8;7243:9;7239:24;7213:60;:::i;:::-;7292:8;;-1:-1:-1;7187:86:29;-1:-1:-1;;7380:2:29;7365:18;;7352:32;-1:-1:-1;;;;;7396:32:29;;7393:52;;;7441:1;7438;7431:12;7393:52;7480:60;7532:7;7521:8;7510:9;7506:24;7480:60;:::i;:::-;6555:1045;;;;-1:-1:-1;6555:1045:29;;-1:-1:-1;6555:1045:29;;7559:8;;6555:1045;-1:-1:-1;;;6555:1045:29:o;7605:437::-;7691:6;7699;7752:2;7740:9;7731:7;7727:23;7723:32;7720:52;;;7768:1;7765;7758:12;7720:52;7808:9;7795:23;-1:-1:-1;;;;;7833:6:29;7830:30;7827:50;;;7873:1;7870;7863:12;7827:50;7912:70;7974:7;7965:6;7954:9;7950:22;7912:70;:::i;:::-;8001:8;;7886:96;;-1:-1:-1;7605:437:29;-1:-1:-1;;;;7605:437:29:o;8047:768::-;8169:6;8177;8185;8193;8246:2;8234:9;8225:7;8221:23;8217:32;8214:52;;;8262:1;8259;8252:12;8214:52;8302:9;8289:23;-1:-1:-1;;;;;8327:6:29;8324:30;8321:50;;;8367:1;8364;8357:12;8321:50;8406:70;8468:7;8459:6;8448:9;8444:22;8406:70;:::i;:::-;8495:8;;-1:-1:-1;8380:96:29;-1:-1:-1;;8583:2:29;8568:18;;8555:32;-1:-1:-1;;;;;8599:32:29;;8596:52;;;8644:1;8641;8634:12;8596:52;8683:72;8747:7;8736:8;8725:9;8721:24;8683:72;:::i;:::-;8047:768;;;;-1:-1:-1;8774:8:29;-1:-1:-1;;;;8047:768:29:o;8820:740::-;8926:6;8934;8942;8950;9003:2;8991:9;8982:7;8978:23;8974:32;8971:52;;;9019:1;9016;9009:12;8971:52;9059:9;9046:23;-1:-1:-1;;;;;9084:6:29;9081:30;9078:50;;;9124:1;9121;9114:12;9078:50;9163:58;9213:7;9204:6;9193:9;9189:22;9163:58;:::i;9903:379::-;10096:2;10085:9;10078:21;10059:4;10122:45;10163:2;10152:9;10148:18;10140:6;10122:45;:::i;:::-;10215:9;10207:6;10203:22;10198:2;10187:9;10183:18;10176:50;10243:33;10269:6;10261;10243:33;:::i;10611:127::-;10672:10;10667:3;10663:20;10660:1;10653:31;10703:4;10700:1;10693:15;10727:4;10724:1;10717:15;10743:125;10808:9;;;10829:10;;;10826:36;;;10842:18;;:::i;10873:331::-;10978:9;10989;11031:8;11019:10;11016:24;11013:44;;;11053:1;11050;11043:12;11013:44;11082:6;11072:8;11069:20;11066:40;;;11102:1;11099;11092:12;11066:40;-1:-1:-1;;11128:23:29;;;11173:25;;;;;-1:-1:-1;10873:331:29:o;11209:127::-;11270:10;11265:3;11261:20;11258:1;11251:31;11301:4;11298:1;11291:15;11325:4;11322:1;11315:15;11341:127;11402:10;11397:3;11393:20;11390:1;11383:31;11433:4;11430:1;11423:15;11457:4;11454:1;11447:15;11605:168;11678:9;;;11709;;11726:15;;;11720:22;;11706:37;11696:71;;11747:18;;:::i;12137:350::-;12339:2;12321:21;;;12378:2;12358:18;;;12351:30;12417:28;12412:2;12397:18;;12390:56;12478:2;12463:18;;12137:350::o;12492:545::-;12585:4;12591:6;12651:11;12638:25;12745:2;12741:7;12730:8;12714:14;12710:29;12706:43;12686:18;12682:68;12672:96;;12764:1;12761;12754:12;12672:96;12791:33;;12843:20;;;-1:-1:-1;;;;;;12875:30:29;;12872:50;;;12918:1;12915;12908:12;12872:50;12951:4;12939:17;;-1:-1:-1;13002:1:29;12998:14;;;12982;12978:35;12968:46;;12965:66;;;13027:1;13024;13017:12;13042:128;13109:9;;;13130:11;;;13127:37;;;13144:18;;:::i;13536:522::-;13614:4;13620:6;13680:11;13667:25;13774:2;13770:7;13759:8;13743:14;13739:29;13735:43;13715:18;13711:68;13701:96;;13793:1;13790;13783:12;13701:96;13820:33;;13872:20;;;-1:-1:-1;;;;;;13904:30:29;;13901:50;;;13947:1;13944;13937:12;13901:50;13980:4;13968:17;;-1:-1:-1;14011:14:29;14007:27;;;13997:38;;13994:58;;;14048:1;14045;14038:12;14406:355;14527:9;14538;14580:8;14568:10;14565:24;14562:44;;;14602:1;14599;14592:12;14562:44;14631:6;14621:8;14618:20;14615:40;;;14651:1;14648;14641:12;14615:40;-1:-1:-1;;14693:1:29;14689:18;;;14677:31;;14730:25;;;;;-1:-1:-1;14406:355:29:o;15842:771::-;16087:2;16076:9;16069:21;16126:6;16121:2;16110:9;16106:18;16099:34;16183:6;16175;16170:2;16159:9;16155:18;16142:48;16239:1;16234:2;16210:22;;;16206:31;;16199:42;;;-1:-1:-1;;16300:2:29;16279:15;;16275:29;16260:45;;16347:18;;;16343:27;;16336:4;16321:20;;16314:57;16387:11;;;16380:27;;;-1:-1:-1;;;;;16419:31:29;;16416:51;;;16463:1;16460;16453:12;16416:51;16497:6;16494:1;16490:14;16548:6;16540;16534:3;16530:2;16526:12;16513:42;16580:15;16572:35;;;;-1:-1:-1;;;;;;15842:771:29:o;16618:245::-;16685:6;16738:2;16726:9;16717:7;16713:23;16709:32;16706:52;;;16754:1;16751;16744:12;16706:52;16786:9;16780:16;16805:28;16827:5;16805:28;:::i;16868:342::-;17070:2;17052:21;;;17109:2;17089:18;;;17082:30;-1:-1:-1;;;17143:2:29;17128:18;;17121:48;17201:2;17186:18;;16868:342::o;17572:273::-;17757:6;17749;17744:3;17731:33;17713:3;17783:16;;17808:13;;;17783:16;17572:273;-1:-1:-1;17572:273:29:o;17850:301::-;17979:3;18017:6;18011:13;18063:6;18056:4;18048:6;18044:17;18039:3;18033:37;18125:1;18089:16;;18114:13;;;-1:-1:-1;18089:16:29;17850:301;-1:-1:-1;17850:301:29:o;18156:184::-;18226:6;18279:2;18267:9;18258:7;18254:23;18250:32;18247:52;;;18295:1;18292;18285:12;18247:52;-1:-1:-1;18318:16:29;;18156:184;-1:-1:-1;18156:184:29:o;22174:151::-;22264:4;22257:12;;;22243;;;22239:31;;22282:14;;22279:40;;;22299:18;;:::i;22330:209::-;22362:1;22388;22378:132;;22432:10;22427:3;22423:20;22420:1;22413:31;22467:4;22464:1;22457:15;22495:4;22492:1;22485:15;22378:132;-1:-1:-1;22524:9:29;;22330:209::o",
266
+ "linkReferences": {}
267
+ },
268
+ "methodIdentifiers": {
269
+ "addCertificateRegistryRoot(bytes32)": "3a316e62",
270
+ "addVerifiers(bytes32[],address[])": "a6df2c01",
271
+ "admin()": "f851a440",
272
+ "getAgeProofInputs(bytes,uint256[])": "b2b37a4c",
273
+ "getCountryProofInputs(bytes,uint256[],uint8)": "126f7559",
274
+ "getDateProofInputs(bytes,uint256[],uint8)": "ec1374cd",
275
+ "getDiscloseProofInputs(bytes,uint256[])": "ddf3eec9",
276
+ "getDisclosedData(bytes,bool)": "03d37eae",
277
+ "isValidCertificateRegistryRoot(bytes32)": "45e21c90",
278
+ "paused()": "5c975abb",
279
+ "removeCertificateRegistryRoot(bytes32)": "886c3533",
280
+ "removeVerifiers(bytes32[])": "8d6937b8",
281
+ "setPaused(bool)": "16c38b3c",
282
+ "transferAdmin(address)": "75829def",
283
+ "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string))": "33fbc14d",
284
+ "verifyScopes(bytes32[],string,string)": "847755e3",
285
+ "vkeyHashToVerifier(bytes32)": "8163f231"
286
+ },
287
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.29+commit.ab55807c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"certificateRegistryRoot\",\"type\":\"bytes32\"}],\"name\":\"CertificateRegistryRootAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"certificateRegistryRoot\",\"type\":\"bytes32\"}],\"name\":\"CertificateRegistryRootRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"VerifierAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"}],\"name\":\"VerifierRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ZKPassportVerifierDeployed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"certificateRegistryRoot\",\"type\":\"bytes32\"}],\"name\":\"addCertificateRegistryRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"vkeyHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"verifiers\",\"type\":\"address[]\"}],\"name\":\"addVerifiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"committedInputCounts\",\"type\":\"uint256[]\"}],\"name\":\"getAgeProofInputs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentDate\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"minAge\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"maxAge\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"committedInputCounts\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ProofType\",\"name\":\"proofType\",\"type\":\"uint8\"}],\"name\":\"getCountryProofInputs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"countryList\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"committedInputCounts\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ProofType\",\"name\":\"proofType\",\"type\":\"uint8\"}],\"name\":\"getDateProofInputs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDate\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"committedInputCounts\",\"type\":\"uint256[]\"}],\"name\":\"getDiscloseProofInputs\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"discloseMask\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"discloseBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"discloseBytes\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isIDCard\",\"type\":\"bool\"}],\"name\":\"getDisclosedData\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"issuingCountry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nationality\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"gender\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"birthDate\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"expiryDate\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"documentNumber\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"documentType\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"isValidCertificateRegistryRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"certificateRegistryRoot\",\"type\":\"bytes32\"}],\"name\":\"removeCertificateRegistryRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"vkeyHashes\",\"type\":\"bytes32[]\"}],\"name\":\"removeVerifiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"publicInputs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"committedInputCounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"validityPeriodInDays\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"subscope\",\"type\":\"string\"}],\"internalType\":\"struct ProofVerificationParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"publicInputs\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"subscope\",\"type\":\"string\"}],\"name\":\"verifyScopes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"vkeyHashToVerifier\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ZKPassportVerifier.sol\":\"ZKPassportVerifier\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/ArrayUtils.sol\":{\"keccak256\":\"0x8decadfca50750cbdcb00be06030305478292f0042affa868e733d85a3fc9882\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87c9fef005d1894a5fd5dcb1dd46d9a8643ce7496f6aaed7e000fe7a518cf0d1\",\"dweb:/ipfs/QmdCn9qvZXQDpBWcDXumLagWg5dEV5yE1DCMiE1PidqCBe\"]},\"src/DateUtils.sol\":{\"keccak256\":\"0xd3fe7fd4a910fe7ef1e4cf22e09a94b2cb1de70e9ccf4bc0015fa2d9da35da95\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c842a171154773f3a56b4f0842fb7a9811b865dce05abad4060659db18553500\",\"dweb:/ipfs/QmSs5UgmLUPSqL43khS7WbM15iKKAz4bwEpbEu319m9caL\"]},\"src/OuterCount4.sol\":{\"keccak256\":\"0xe4697cb6acec10e84ddde4d630bc48e9c1eca97bea278bb824ec7cedd493e2ce\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://975e16a56e42ab30ca715f9e149f6ad4ef9c756feeb1c825350ed793f86fd928\",\"dweb:/ipfs/QmaZn4onMPPu6tCP7otgs5pzs3zSp6SH58FrLE9PTuomiM\"]},\"src/StringUtils.sol\":{\"keccak256\":\"0xe97313d86accef579f9ab6b4751a99ae5a30192059d360c3c80e475bd037acca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://891311ffb32193205f61fbb5af2d59cce4b9a0f12065bb3e81be064da99879e2\",\"dweb:/ipfs/QmSpSt5i9TbkPYgBLgkrpP4dE3141QnZSEvb84f3rDrit9\"]},\"src/ZKPassportVerifier.sol\":{\"keccak256\":\"0x4ed7960b8ffefa99e6e7acdc2cd35778b6b12dfe4011c8eed3a639aa30876158\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b08f3cd4c0e1290606dac566b0c069089c377983eb0e142a474b2fd1617e1aa\",\"dweb:/ipfs/QmdMPSCduW1XVYhtZy6UKQ4whxcxmQK3c9T5AzqcugreDx\"]}},\"version\":1}",
288
+ "metadata": {
289
+ "compiler": { "version": "0.8.29+commit.ab55807c" },
290
+ "language": "Solidity",
291
+ "output": {
292
+ "abi": [
293
+ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" },
294
+ {
295
+ "inputs": [
296
+ { "internalType": "address", "name": "oldAdmin", "type": "address", "indexed": true },
297
+ { "internalType": "address", "name": "newAdmin", "type": "address", "indexed": true }
298
+ ],
299
+ "type": "event",
300
+ "name": "AdminUpdated",
301
+ "anonymous": false
302
+ },
303
+ {
304
+ "inputs": [
305
+ {
306
+ "internalType": "bytes32",
307
+ "name": "certificateRegistryRoot",
308
+ "type": "bytes32",
309
+ "indexed": true
310
+ }
311
+ ],
312
+ "type": "event",
313
+ "name": "CertificateRegistryRootAdded",
314
+ "anonymous": false
315
+ },
316
+ {
317
+ "inputs": [
318
+ {
319
+ "internalType": "bytes32",
320
+ "name": "certificateRegistryRoot",
321
+ "type": "bytes32",
322
+ "indexed": true
323
+ }
324
+ ],
325
+ "type": "event",
326
+ "name": "CertificateRegistryRootRemoved",
327
+ "anonymous": false
328
+ },
329
+ {
330
+ "inputs": [
331
+ { "internalType": "bool", "name": "paused", "type": "bool", "indexed": false }
332
+ ],
333
+ "type": "event",
334
+ "name": "PausedStatusChanged",
335
+ "anonymous": false
336
+ },
337
+ {
338
+ "inputs": [
339
+ { "internalType": "bytes32", "name": "vkeyHash", "type": "bytes32", "indexed": true },
340
+ { "internalType": "address", "name": "verifier", "type": "address", "indexed": true }
341
+ ],
342
+ "type": "event",
343
+ "name": "VerifierAdded",
344
+ "anonymous": false
345
+ },
346
+ {
347
+ "inputs": [
348
+ { "internalType": "bytes32", "name": "vkeyHash", "type": "bytes32", "indexed": true }
349
+ ],
350
+ "type": "event",
351
+ "name": "VerifierRemoved",
352
+ "anonymous": false
353
+ },
354
+ {
355
+ "inputs": [
356
+ { "internalType": "address", "name": "admin", "type": "address", "indexed": true },
357
+ { "internalType": "uint256", "name": "timestamp", "type": "uint256", "indexed": false }
358
+ ],
359
+ "type": "event",
360
+ "name": "ZKPassportVerifierDeployed",
361
+ "anonymous": false
362
+ },
363
+ {
364
+ "inputs": [
365
+ { "internalType": "bytes32", "name": "certificateRegistryRoot", "type": "bytes32" }
366
+ ],
367
+ "stateMutability": "nonpayable",
368
+ "type": "function",
369
+ "name": "addCertificateRegistryRoot"
370
+ },
371
+ {
372
+ "inputs": [
373
+ { "internalType": "bytes32[]", "name": "vkeyHashes", "type": "bytes32[]" },
374
+ { "internalType": "address[]", "name": "verifiers", "type": "address[]" }
375
+ ],
376
+ "stateMutability": "nonpayable",
377
+ "type": "function",
378
+ "name": "addVerifiers"
379
+ },
380
+ {
381
+ "inputs": [],
382
+ "stateMutability": "view",
383
+ "type": "function",
384
+ "name": "admin",
385
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
386
+ },
387
+ {
388
+ "inputs": [
389
+ { "internalType": "bytes", "name": "committedInputs", "type": "bytes" },
390
+ { "internalType": "uint256[]", "name": "committedInputCounts", "type": "uint256[]" }
391
+ ],
392
+ "stateMutability": "pure",
393
+ "type": "function",
394
+ "name": "getAgeProofInputs",
395
+ "outputs": [
396
+ { "internalType": "uint256", "name": "currentDate", "type": "uint256" },
397
+ { "internalType": "uint8", "name": "minAge", "type": "uint8" },
398
+ { "internalType": "uint8", "name": "maxAge", "type": "uint8" }
399
+ ]
400
+ },
401
+ {
402
+ "inputs": [
403
+ { "internalType": "bytes", "name": "committedInputs", "type": "bytes" },
404
+ { "internalType": "uint256[]", "name": "committedInputCounts", "type": "uint256[]" },
405
+ { "internalType": "enum ProofType", "name": "proofType", "type": "uint8" }
406
+ ],
407
+ "stateMutability": "pure",
408
+ "type": "function",
409
+ "name": "getCountryProofInputs",
410
+ "outputs": [{ "internalType": "string[]", "name": "countryList", "type": "string[]" }]
411
+ },
412
+ {
413
+ "inputs": [
414
+ { "internalType": "bytes", "name": "committedInputs", "type": "bytes" },
415
+ { "internalType": "uint256[]", "name": "committedInputCounts", "type": "uint256[]" },
416
+ { "internalType": "enum ProofType", "name": "proofType", "type": "uint8" }
417
+ ],
418
+ "stateMutability": "pure",
419
+ "type": "function",
420
+ "name": "getDateProofInputs",
421
+ "outputs": [
422
+ { "internalType": "uint256", "name": "currentDate", "type": "uint256" },
423
+ { "internalType": "uint256", "name": "minDate", "type": "uint256" },
424
+ { "internalType": "uint256", "name": "maxDate", "type": "uint256" }
425
+ ]
426
+ },
427
+ {
428
+ "inputs": [
429
+ { "internalType": "bytes", "name": "committedInputs", "type": "bytes" },
430
+ { "internalType": "uint256[]", "name": "committedInputCounts", "type": "uint256[]" }
431
+ ],
432
+ "stateMutability": "pure",
433
+ "type": "function",
434
+ "name": "getDiscloseProofInputs",
435
+ "outputs": [
436
+ { "internalType": "bytes", "name": "discloseMask", "type": "bytes" },
437
+ { "internalType": "bytes", "name": "discloseBytes", "type": "bytes" }
438
+ ]
439
+ },
440
+ {
441
+ "inputs": [
442
+ { "internalType": "bytes", "name": "discloseBytes", "type": "bytes" },
443
+ { "internalType": "bool", "name": "isIDCard", "type": "bool" }
444
+ ],
445
+ "stateMutability": "pure",
446
+ "type": "function",
447
+ "name": "getDisclosedData",
448
+ "outputs": [
449
+ { "internalType": "string", "name": "name", "type": "string" },
450
+ { "internalType": "string", "name": "issuingCountry", "type": "string" },
451
+ { "internalType": "string", "name": "nationality", "type": "string" },
452
+ { "internalType": "string", "name": "gender", "type": "string" },
453
+ { "internalType": "string", "name": "birthDate", "type": "string" },
454
+ { "internalType": "string", "name": "expiryDate", "type": "string" },
455
+ { "internalType": "string", "name": "documentNumber", "type": "string" },
456
+ { "internalType": "string", "name": "documentType", "type": "string" }
457
+ ]
458
+ },
459
+ {
460
+ "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
461
+ "stateMutability": "view",
462
+ "type": "function",
463
+ "name": "isValidCertificateRegistryRoot",
464
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
465
+ },
466
+ {
467
+ "inputs": [],
468
+ "stateMutability": "view",
469
+ "type": "function",
470
+ "name": "paused",
471
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
472
+ },
473
+ {
474
+ "inputs": [
475
+ { "internalType": "bytes32", "name": "certificateRegistryRoot", "type": "bytes32" }
476
+ ],
477
+ "stateMutability": "nonpayable",
478
+ "type": "function",
479
+ "name": "removeCertificateRegistryRoot"
480
+ },
481
+ {
482
+ "inputs": [{ "internalType": "bytes32[]", "name": "vkeyHashes", "type": "bytes32[]" }],
483
+ "stateMutability": "nonpayable",
484
+ "type": "function",
485
+ "name": "removeVerifiers"
486
+ },
487
+ {
488
+ "inputs": [{ "internalType": "bool", "name": "_paused", "type": "bool" }],
489
+ "stateMutability": "nonpayable",
490
+ "type": "function",
491
+ "name": "setPaused"
492
+ },
493
+ {
494
+ "inputs": [{ "internalType": "address", "name": "newAdmin", "type": "address" }],
495
+ "stateMutability": "nonpayable",
496
+ "type": "function",
497
+ "name": "transferAdmin"
498
+ },
499
+ {
500
+ "inputs": [
501
+ {
502
+ "internalType": "struct ProofVerificationParams",
503
+ "name": "params",
504
+ "type": "tuple",
505
+ "components": [
506
+ { "internalType": "bytes32", "name": "vkeyHash", "type": "bytes32" },
507
+ { "internalType": "bytes", "name": "proof", "type": "bytes" },
508
+ { "internalType": "bytes32[]", "name": "publicInputs", "type": "bytes32[]" },
509
+ { "internalType": "bytes", "name": "committedInputs", "type": "bytes" },
510
+ {
511
+ "internalType": "uint256[]",
512
+ "name": "committedInputCounts",
513
+ "type": "uint256[]"
514
+ },
515
+ { "internalType": "uint256", "name": "validityPeriodInDays", "type": "uint256" },
516
+ { "internalType": "string", "name": "scope", "type": "string" },
517
+ { "internalType": "string", "name": "subscope", "type": "string" }
518
+ ]
519
+ }
520
+ ],
521
+ "stateMutability": "view",
522
+ "type": "function",
523
+ "name": "verifyProof",
524
+ "outputs": [
525
+ { "internalType": "bool", "name": "", "type": "bool" },
526
+ { "internalType": "bytes32", "name": "", "type": "bytes32" }
527
+ ]
528
+ },
529
+ {
530
+ "inputs": [
531
+ { "internalType": "bytes32[]", "name": "publicInputs", "type": "bytes32[]" },
532
+ { "internalType": "string", "name": "scope", "type": "string" },
533
+ { "internalType": "string", "name": "subscope", "type": "string" }
534
+ ],
535
+ "stateMutability": "pure",
536
+ "type": "function",
537
+ "name": "verifyScopes",
538
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
539
+ },
540
+ {
541
+ "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
542
+ "stateMutability": "view",
543
+ "type": "function",
544
+ "name": "vkeyHashToVerifier",
545
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
546
+ }
547
+ ],
548
+ "devdoc": {
549
+ "kind": "dev",
550
+ "methods": { "constructor": { "details": "Constructor" } },
551
+ "version": 1
552
+ },
553
+ "userdoc": { "kind": "user", "methods": {}, "version": 1 }
554
+ },
555
+ "settings": {
556
+ "remappings": ["forge-std/=lib/forge-std/src/"],
557
+ "optimizer": { "enabled": true, "runs": 200 },
558
+ "metadata": { "bytecodeHash": "ipfs" },
559
+ "compilationTarget": { "src/ZKPassportVerifier.sol": "ZKPassportVerifier" },
560
+ "evmVersion": "cancun",
561
+ "libraries": {}
562
+ },
563
+ "sources": {
564
+ "src/ArrayUtils.sol": {
565
+ "keccak256": "0x8decadfca50750cbdcb00be06030305478292f0042affa868e733d85a3fc9882",
566
+ "urls": [
567
+ "bzz-raw://87c9fef005d1894a5fd5dcb1dd46d9a8643ce7496f6aaed7e000fe7a518cf0d1",
568
+ "dweb:/ipfs/QmdCn9qvZXQDpBWcDXumLagWg5dEV5yE1DCMiE1PidqCBe"
569
+ ],
570
+ "license": "Apache-2.0"
571
+ },
572
+ "src/DateUtils.sol": {
573
+ "keccak256": "0xd3fe7fd4a910fe7ef1e4cf22e09a94b2cb1de70e9ccf4bc0015fa2d9da35da95",
574
+ "urls": [
575
+ "bzz-raw://c842a171154773f3a56b4f0842fb7a9811b865dce05abad4060659db18553500",
576
+ "dweb:/ipfs/QmSs5UgmLUPSqL43khS7WbM15iKKAz4bwEpbEu319m9caL"
577
+ ],
578
+ "license": "Apache-2.0"
579
+ },
580
+ "src/OuterCount4.sol": {
581
+ "keccak256": "0xe4697cb6acec10e84ddde4d630bc48e9c1eca97bea278bb824ec7cedd493e2ce",
582
+ "urls": [
583
+ "bzz-raw://975e16a56e42ab30ca715f9e149f6ad4ef9c756feeb1c825350ed793f86fd928",
584
+ "dweb:/ipfs/QmaZn4onMPPu6tCP7otgs5pzs3zSp6SH58FrLE9PTuomiM"
585
+ ],
586
+ "license": "Apache-2.0"
587
+ },
588
+ "src/StringUtils.sol": {
589
+ "keccak256": "0xe97313d86accef579f9ab6b4751a99ae5a30192059d360c3c80e475bd037acca",
590
+ "urls": [
591
+ "bzz-raw://891311ffb32193205f61fbb5af2d59cce4b9a0f12065bb3e81be064da99879e2",
592
+ "dweb:/ipfs/QmSpSt5i9TbkPYgBLgkrpP4dE3141QnZSEvb84f3rDrit9"
593
+ ],
594
+ "license": "Apache-2.0"
595
+ },
596
+ "src/ZKPassportVerifier.sol": {
597
+ "keccak256": "0x4ed7960b8ffefa99e6e7acdc2cd35778b6b12dfe4011c8eed3a639aa30876158",
598
+ "urls": [
599
+ "bzz-raw://1b08f3cd4c0e1290606dac566b0c069089c377983eb0e142a474b2fd1617e1aa",
600
+ "dweb:/ipfs/QmdMPSCduW1XVYhtZy6UKQ4whxcxmQK3c9T5AzqcugreDx"
601
+ ],
602
+ "license": "Apache-2.0"
603
+ }
604
+ },
605
+ "version": 1
606
+ },
607
+ "id": 25
608
+ }