UNPKG

24.7 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const node_storage_common_1 = require("@neo-one/node-storage-common");
4const utils_1 = require("@neo-one/utils");
5const convertAddChange = (changeIn) => {
6 const change = changeIn;
7 switch (change.type) {
8 case 'account':
9 return [
10 {
11 type: 'add',
12 model: 'account',
13 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.account(change.value),
14 value: change.value,
15 },
16 ];
17 case 'accountUnclaimed':
18 return [
19 {
20 type: 'add',
21 model: 'accountUnclaimed',
22 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.accountUnclaimed({
23 hash: change.value.hash,
24 input: change.value.input,
25 }),
26 value: change.value,
27 },
28 ];
29 case 'accountUnspent':
30 return [
31 {
32 type: 'add',
33 model: 'accountUnspent',
34 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.accountUnspent({
35 hash: change.value.hash,
36 input: change.value.input,
37 }),
38 value: change.value,
39 },
40 ];
41 case 'action':
42 return [
43 {
44 type: 'add',
45 model: 'action',
46 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.action({
47 index: change.value.index,
48 }),
49 value: change.value,
50 },
51 ];
52 case 'asset':
53 return [
54 {
55 type: 'add',
56 model: 'asset',
57 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.asset(change.value),
58 value: change.value,
59 },
60 ];
61 case 'block':
62 return [
63 {
64 type: 'add',
65 model: 'block',
66 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.block(change.value),
67 value: change.value,
68 },
69 {
70 type: 'add',
71 model: 'block',
72 key: `${change.value.index}`,
73 value: change.value,
74 },
75 ];
76 case 'blockData':
77 return [
78 {
79 type: 'add',
80 model: 'blockData',
81 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.blockData(change.value),
82 value: change.value,
83 },
84 ];
85 case 'header':
86 return [
87 {
88 type: 'add',
89 model: 'header',
90 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.header(change.value),
91 value: change.value,
92 },
93 {
94 type: 'add',
95 model: 'header',
96 key: `${change.value.index}`,
97 value: change.value,
98 },
99 ];
100 case 'transaction':
101 return [
102 {
103 type: 'add',
104 model: 'transaction',
105 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.transaction(change.value),
106 value: change.value,
107 },
108 ];
109 case 'output':
110 return [
111 {
112 type: 'add',
113 model: 'output',
114 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.output({
115 hash: change.value.hash,
116 index: change.value.index,
117 }),
118 value: change.value.output,
119 },
120 ];
121 case 'transactionData':
122 return [
123 {
124 type: 'add',
125 model: 'transactionData',
126 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.transactionData(change.value),
127 value: change.value,
128 },
129 ];
130 case 'contract':
131 return [
132 {
133 type: 'add',
134 model: 'contract',
135 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.contract(change.value),
136 value: change.value,
137 },
138 ];
139 case 'storageItem':
140 return [
141 {
142 type: 'add',
143 model: 'storageItem',
144 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.storageItem({
145 hash: change.value.hash,
146 key: change.value.key,
147 }),
148 value: change.value,
149 },
150 ];
151 case 'validator':
152 return [
153 {
154 type: 'add',
155 model: 'validator',
156 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.validator({
157 publicKey: change.value.publicKey,
158 }),
159 value: change.value,
160 },
161 ];
162 case 'invocationData':
163 return [
164 {
165 type: 'add',
166 model: 'invocationData',
167 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.invocationData(change.value),
168 value: change.value,
169 },
170 ];
171 case 'validatorsCount':
172 return [
173 {
174 type: 'add',
175 model: 'validatorsCount',
176 key: node_storage_common_1.keys.validatorsCountKey.toString(),
177 value: change.value,
178 },
179 ];
180 default:
181 utils_1.utils.assertNever(change);
182 throw new Error('For TS');
183 }
184};
185const convertDeleteChange = (change) => {
186 switch (change.type) {
187 case 'account':
188 return {
189 type: 'delete',
190 model: 'account',
191 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.account(change.key),
192 };
193 case 'accountUnclaimed':
194 return {
195 type: 'delete',
196 model: 'accountUnclaimed',
197 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.accountUnclaimed(change.key),
198 };
199 case 'accountUnspent':
200 return {
201 type: 'delete',
202 model: 'accountUnspent',
203 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.accountUnclaimed(change.key),
204 };
205 case 'contract':
206 return {
207 type: 'delete',
208 model: 'contract',
209 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.contract(change.key),
210 };
211 case 'storageItem':
212 return {
213 type: 'delete',
214 model: 'storageItem',
215 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.storageItem(change.key),
216 };
217 case 'validator':
218 return {
219 type: 'delete',
220 model: 'validator',
221 key: node_storage_common_1.keys.typeKeyToSerializeKeyString.validator(change.key),
222 };
223 default:
224 utils_1.utils.assertNever(change);
225 throw new Error('For TS');
226 }
227};
228exports.convertChange = (change) => {
229 if (change.type === 'add') {
230 return convertAddChange(change.change);
231 }
232 if (change.type === 'delete') {
233 return [convertDeleteChange(change.change)];
234 }
235 utils_1.utils.assertNever(change);
236 throw new Error('For TS');
237};
238
239//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnZlcnRDaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxzRUFBb0Q7QUFDcEQsMENBQXVDO0FBT3ZDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFtQixFQUE4QixFQUFFO0lBQzNFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUN4QixRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDbkIsS0FBSyxTQUFTO1lBQ1osT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsU0FBUztvQkFDaEIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQzNELEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDcEI7YUFDRixDQUFDO1FBRUosS0FBSyxrQkFBa0I7WUFDckIsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsa0JBQWtCO29CQUN6QixHQUFHLEVBQUUsMEJBQUksQ0FBQywyQkFBMkIsQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDckQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTt3QkFDdkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSztxQkFDMUIsQ0FBQztvQkFFRixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7aUJBQ3BCO2FBQ0YsQ0FBQztRQUVKLEtBQUssZ0JBQWdCO1lBQ25CLE9BQU87Z0JBQ0w7b0JBQ0UsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsS0FBSyxFQUFFLGdCQUFnQjtvQkFDdkIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsY0FBYyxDQUFDO3dCQUNuRCxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO3dCQUN2QixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLO3FCQUMxQixDQUFDO29CQUVGLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDcEI7YUFDRixDQUFDO1FBRUosS0FBSyxRQUFRO1lBQ1gsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsUUFBUTtvQkFDZixHQUFHLEVBQUUsMEJBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUM7d0JBQzNDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUs7cUJBQzFCLENBQUM7b0JBRUYsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUNwQjthQUNGLENBQUM7UUFFSixLQUFLLE9BQU87WUFDVixPQUFPO2dCQUNMO29CQUNFLElBQUksRUFBRSxLQUFLO29CQUNYLEtBQUssRUFBRSxPQUFPO29CQUNkLEdBQUcsRUFBRSwwQkFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUN6RCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7aUJBQ3BCO2FBQ0YsQ0FBQztRQUVKLEtBQUssT0FBTztZQUNWLE9BQU87Z0JBQ0w7b0JBQ0UsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsS0FBSyxFQUFFLE9BQU87b0JBQ2QsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ3pELEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDcEI7Z0JBRUQ7b0JBQ0UsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsS0FBSyxFQUFFLE9BQU87b0JBQ2QsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7b0JBQzVCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDcEI7YUFDRixDQUFDO1FBRUosS0FBSyxXQUFXO1lBQ2QsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsV0FBVztvQkFDbEIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQzdELEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDcEI7YUFDRixDQUFDO1FBRUosS0FBSyxRQUFRO1lBQ1gsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsUUFBUTtvQkFDZixHQUFHLEVBQUUsMEJBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDMUQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUNwQjtnQkFFRDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsUUFBUTtvQkFDZixHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtvQkFDNUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUNwQjthQUNGLENBQUM7UUFFSixLQUFLLGFBQWE7WUFDaEIsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsYUFBYTtvQkFDcEIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQy9ELEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDcEI7YUFDRixDQUFDO1FBRUosS0FBSyxRQUFRO1lBQ1gsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsUUFBUTtvQkFDZixHQUFHLEVBQUUsMEJBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUM7d0JBQzNDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQ3ZCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUs7cUJBQzFCLENBQUM7b0JBRUYsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTTtpQkFDM0I7YUFDRixDQUFDO1FBRUosS0FBSyxpQkFBaUI7WUFDcEIsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsaUJBQWlCO29CQUN4QixHQUFHLEVBQUUsMEJBQUksQ0FBQywyQkFBMkIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDbkUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUNwQjthQUNGLENBQUM7UUFFSixLQUFLLFVBQVU7WUFDYixPQUFPO2dCQUNMO29CQUNFLElBQUksRUFBRSxLQUFLO29CQUNYLEtBQUssRUFBRSxVQUFVO29CQUNqQixHQUFHLEVBQUUsMEJBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDNUQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUNwQjthQUNGLENBQUM7UUFFSixLQUFLLGFBQWE7WUFDaEIsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsYUFBYTtvQkFDcEIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxDQUFDO3dCQUNoRCxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO3dCQUN2QixHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHO3FCQUN0QixDQUFDO29CQUVGLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDcEI7YUFDRixDQUFDO1FBRUosS0FBSyxXQUFXO1lBQ2QsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsV0FBVztvQkFDbEIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDO3dCQUM5QyxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTO3FCQUNsQyxDQUFDO29CQUVGLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDcEI7YUFDRixDQUFDO1FBRUosS0FBSyxnQkFBZ0I7WUFDbkIsT0FBTztnQkFDTDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsZ0JBQWdCO29CQUN2QixHQUFHLEVBQUUsMEJBQUksQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDbEUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUNwQjthQUNGLENBQUM7UUFFSixLQUFLLGlCQUFpQjtZQUNwQixPQUFPO2dCQUNMO29CQUNFLElBQUksRUFBRSxLQUFLO29CQUNYLEtBQUssRUFBRSxpQkFBaUI7b0JBQ3hCLEdBQUcsRUFBRSwwQkFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtvQkFDdkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUNwQjthQUNGLENBQUM7UUFFSjtZQUNFLGFBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM3QjtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFvQixFQUFlLEVBQUU7SUFDaEUsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ25CLEtBQUssU0FBUztZQUNaLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEdBQUcsRUFBRSwwQkFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQzFELENBQUM7UUFFSixLQUFLLGtCQUFrQjtZQUNyQixPQUFPO2dCQUNMLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxrQkFBa0I7Z0JBQ3pCLEdBQUcsRUFBRSwwQkFBSSxDQUFDLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDbkUsQ0FBQztRQUVKLEtBQUssZ0JBQWdCO1lBQ25CLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUNuRSxDQUFDO1FBRUosS0FBSyxVQUFVO1lBQ2IsT0FBTztnQkFDTCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsVUFBVTtnQkFDakIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDM0QsQ0FBQztRQUVKLEtBQUssYUFBYTtZQUNoQixPQUFPO2dCQUNMLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxhQUFhO2dCQUNwQixHQUFHLEVBQUUsMEJBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUM5RCxDQUFDO1FBRUosS0FBSyxXQUFXO1lBQ2QsT0FBTztnQkFDTCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsV0FBVztnQkFDbEIsR0FBRyxFQUFFLDBCQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDNUQsQ0FBQztRQUVKO1lBQ0UsYUFBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzdCO0FBQ0gsQ0FBQyxDQUFDO0FBRVcsUUFBQSxhQUFhLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUM5QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQ3pCLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3hDO0lBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDN0M7SUFFRCxhQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtbm9kZS1zdG9yYWdlLWNhY2hlL3NyYy9jb252ZXJ0Q2hhbmdlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkQ2hhbmdlLCBDaGFuZ2UsIERlbGV0ZUNoYW5nZSB9IGZyb20gJ0BuZW8tb25lL25vZGUtY29yZSc7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnQG5lby1vbmUvbm9kZS1zdG9yYWdlLWNvbW1vbic7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgQ2FjaGVDaGFuZ2UgPVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYW55XG4gIHwgeyByZWFkb25seSB0eXBlOiAnYWRkJzsgcmVhZG9ubHkgbW9kZWw6IHN0cmluZzsgcmVhZG9ubHkga2V5OiBzdHJpbmc7IHJlYWRvbmx5IHZhbHVlOiBhbnkgfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2RlbGV0ZSc7IHJlYWRvbmx5IG1vZGVsOiBzdHJpbmc7IHJlYWRvbmx5IGtleTogc3RyaW5nIH07XG5cbmNvbnN0IGNvbnZlcnRBZGRDaGFuZ2UgPSAoY2hhbmdlSW46IEFkZENoYW5nZSk6IFJlYWRvbmx5QXJyYXk8Q2FjaGVDaGFuZ2U+ID0+IHtcbiAgY29uc3QgY2hhbmdlID0gY2hhbmdlSW47XG4gIHN3aXRjaCAoY2hhbmdlLnR5cGUpIHtcbiAgICBjYXNlICdhY2NvdW50JzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2FjY291bnQnLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXlTdHJpbmcuYWNjb3VudChjaGFuZ2UudmFsdWUpLFxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgY2FzZSAnYWNjb3VudFVuY2xhaW1lZCc6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICdhY2NvdW50VW5jbGFpbWVkJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLmFjY291bnRVbmNsYWltZWQoe1xuICAgICAgICAgICAgaGFzaDogY2hhbmdlLnZhbHVlLmhhc2gsXG4gICAgICAgICAgICBpbnB1dDogY2hhbmdlLnZhbHVlLmlucHV0LFxuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICdhY2NvdW50VW5zcGVudCc6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICdhY2NvdW50VW5zcGVudCcsXG4gICAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleVN0cmluZy5hY2NvdW50VW5zcGVudCh7XG4gICAgICAgICAgICBoYXNoOiBjaGFuZ2UudmFsdWUuaGFzaCxcbiAgICAgICAgICAgIGlucHV0OiBjaGFuZ2UudmFsdWUuaW5wdXQsXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ2FjdGlvbic6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICdhY3Rpb24nLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXlTdHJpbmcuYWN0aW9uKHtcbiAgICAgICAgICAgIGluZGV4OiBjaGFuZ2UudmFsdWUuaW5kZXgsXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ2Fzc2V0JzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2Fzc2V0JyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLmFzc2V0KGNoYW5nZS52YWx1ZSksXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICdibG9jayc6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICdibG9jaycsXG4gICAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleVN0cmluZy5ibG9jayhjaGFuZ2UudmFsdWUpLFxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnYmxvY2snLFxuICAgICAgICAgIGtleTogYCR7Y2hhbmdlLnZhbHVlLmluZGV4fWAsXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICdibG9ja0RhdGEnOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnYmxvY2tEYXRhJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLmJsb2NrRGF0YShjaGFuZ2UudmFsdWUpLFxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2hlYWRlcicsXG4gICAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleVN0cmluZy5oZWFkZXIoY2hhbmdlLnZhbHVlKSxcbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2hlYWRlcicsXG4gICAgICAgICAga2V5OiBgJHtjaGFuZ2UudmFsdWUuaW5kZXh9YCxcbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ3RyYW5zYWN0aW9uJzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ3RyYW5zYWN0aW9uJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLnRyYW5zYWN0aW9uKGNoYW5nZS52YWx1ZSksXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICdvdXRwdXQnOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnb3V0cHV0JyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLm91dHB1dCh7XG4gICAgICAgICAgICBoYXNoOiBjaGFuZ2UudmFsdWUuaGFzaCxcbiAgICAgICAgICAgIGluZGV4OiBjaGFuZ2UudmFsdWUuaW5kZXgsXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLm91dHB1dCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICd0cmFuc2FjdGlvbkRhdGEnOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAndHJhbnNhY3Rpb25EYXRhJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLnRyYW5zYWN0aW9uRGF0YShjaGFuZ2UudmFsdWUpLFxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgY2FzZSAnY29udHJhY3QnOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnY29udHJhY3QnLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXlTdHJpbmcuY29udHJhY3QoY2hhbmdlLnZhbHVlKSxcbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ3N0b3JhZ2VJdGVtJzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ3N0b3JhZ2VJdGVtJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLnN0b3JhZ2VJdGVtKHtcbiAgICAgICAgICAgIGhhc2g6IGNoYW5nZS52YWx1ZS5oYXNoLFxuICAgICAgICAgICAga2V5OiBjaGFuZ2UudmFsdWUua2V5LFxuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICd2YWxpZGF0b3InOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAndmFsaWRhdG9yJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLnZhbGlkYXRvcih7XG4gICAgICAgICAgICBwdWJsaWNLZXk6IGNoYW5nZS52YWx1ZS5wdWJsaWNLZXksXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ2ludm9jYXRpb25EYXRhJzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2ludm9jYXRpb25EYXRhJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLmludm9jYXRpb25EYXRhKGNoYW5nZS52YWx1ZSksXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICd2YWxpZGF0b3JzQ291bnQnOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAndmFsaWRhdG9yc0NvdW50JyxcbiAgICAgICAgICBrZXk6IGtleXMudmFsaWRhdG9yc0NvdW50S2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdXRpbHMuYXNzZXJ0TmV2ZXIoY2hhbmdlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRm9yIFRTJyk7XG4gIH1cbn07XG5cbmNvbnN0IGNvbnZlcnREZWxldGVDaGFuZ2UgPSAoY2hhbmdlOiBEZWxldGVDaGFuZ2UpOiBDYWNoZUNoYW5nZSA9PiB7XG4gIHN3aXRjaCAoY2hhbmdlLnR5cGUpIHtcbiAgICBjYXNlICdhY2NvdW50JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBtb2RlbDogJ2FjY291bnQnLFxuICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5U3RyaW5nLmFjY291bnQoY2hhbmdlLmtleSksXG4gICAgICB9O1xuXG4gICAgY2FzZSAnYWNjb3VudFVuY2xhaW1lZCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgbW9kZWw6ICdhY2NvdW50VW5jbGFpbWVkJyxcbiAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleVN0cmluZy5hY2NvdW50VW5jbGFpbWVkKGNoYW5nZS5rZXkpLFxuICAgICAgfTtcblxuICAgIGNhc2UgJ2FjY291bnRVbnNwZW50JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBtb2RlbDogJ2FjY291bnRVbnNwZW50JyxcbiAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleVN0cmluZy5hY2NvdW50VW5jbGFpbWVkKGNoYW5nZS5rZXkpLFxuICAgICAgfTtcblxuICAgIGNhc2UgJ2NvbnRyYWN0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBtb2RlbDogJ2NvbnRyYWN0JyxcbiAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleVN0cmluZy5jb250cmFjdChjaGFuZ2Uua2V5KSxcbiAgICAgIH07XG5cbiAgICBjYXNlICdzdG9yYWdlSXRlbSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgbW9kZWw6ICdzdG9yYWdlSXRlbScsXG4gICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXlTdHJpbmcuc3RvcmFnZUl0ZW0oY2hhbmdlLmtleSksXG4gICAgICB9O1xuXG4gICAgY2FzZSAndmFsaWRhdG9yJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBtb2RlbDogJ3ZhbGlkYXRvcicsXG4gICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXlTdHJpbmcudmFsaWRhdG9yKGNoYW5nZS5rZXkpLFxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICB1dGlscy5hc3NlcnROZXZlcihjaGFuZ2UpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3IgVFMnKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRDaGFuZ2UgPSAoY2hhbmdlOiBDaGFuZ2UpID0+IHtcbiAgaWYgKGNoYW5nZS50eXBlID09PSAnYWRkJykge1xuICAgIHJldHVybiBjb252ZXJ0QWRkQ2hhbmdlKGNoYW5nZS5jaGFuZ2UpO1xuICB9XG5cbiAgaWYgKGNoYW5nZS50eXBlID09PSAnZGVsZXRlJykge1xuICAgIHJldHVybiBbY29udmVydERlbGV0ZUNoYW5nZShjaGFuZ2UuY2hhbmdlKV07XG4gIH1cblxuICB1dGlscy5hc3NlcnROZXZlcihjaGFuZ2UpO1xuICB0aHJvdyBuZXcgRXJyb3IoJ0ZvciBUUycpO1xufTtcbiJdfQ==