process.stdin.resume();
process.stdin.setEncoding('utf8');
const solution = async (strChunk) => {
const lines = strChunk.split(/\n+/g);
const splitLineToParams = (line) => {
const [keyPath, value] = line.split("=").map((item) => item.trim());
return { keyPath, value };
};
const splitKeyPath = (keyPath) => {
return keyPath.split(".");
};
const assembleNestedObj = (obj, keysPath, value) => {
const [currentKey, ...restKeys] = keysPath;
if (!restKeys.length) {
return {
...obj,
[currentKey]: value
};
}
return {
...obj,
[currentKey]: {
...assembleNestedObj(obj, restKeys, value),
},
};
};
let objArray = [];
for (const line of lines) {
const { keyPath, value } = splitLineToParams(line);
const keyPathSplited = splitKeyPath(keyPath);
objArray.push(assembleNestedObj({}, keyPathSplited, value));
}
process.stdout.write(JSON.stringify(objArray.reduce((acc, resultObj) => {
return { ...acc, ...resultObj };
}, {}), null, 2));
};
process.stdin.on('data', async (chunk) => {
await solution(chunk.toString('utf-8'));
process.exit(0);
});
cHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTsKcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpOwoKY29uc3Qgc29sdXRpb24gPSBhc3luYyAoc3RyQ2h1bmspID0+IHsKICAgIGNvbnN0IGxpbmVzID0gc3RyQ2h1bmsuc3BsaXQoL1xuKy9nKTsKICAgIGNvbnN0IHNwbGl0TGluZVRvUGFyYW1zID0gKGxpbmUpID0+IHsKICAgICAgICBjb25zdCBba2V5UGF0aCwgdmFsdWVdID0gbGluZS5zcGxpdCgiPSIpLm1hcCgoaXRlbSkgPT4gaXRlbS50cmltKCkpOwogICAgICAgIHJldHVybiB7IGtleVBhdGgsIHZhbHVlIH07CiAgICB9OwogICAgY29uc3Qgc3BsaXRLZXlQYXRoID0gKGtleVBhdGgpID0+IHsKICAgICAgICByZXR1cm4ga2V5UGF0aC5zcGxpdCgiLiIpOwogICAgfTsKICAgIGNvbnN0IGFzc2VtYmxlTmVzdGVkT2JqID0gKG9iaiwga2V5c1BhdGgsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3QgW2N1cnJlbnRLZXksIC4uLnJlc3RLZXlzXSA9IGtleXNQYXRoOwogICAgICAgIGlmICghcmVzdEtleXMubGVuZ3RoKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAuLi5vYmosCiAgICAgICAgICAgICAgICBbY3VycmVudEtleV06IHZhbHVlCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIC4uLm9iaiwKICAgICAgICAgICAgW2N1cnJlbnRLZXldOiB7CiAgICAgICAgICAgICAgICAuLi5hc3NlbWJsZU5lc3RlZE9iaihvYmosIHJlc3RLZXlzLCB2YWx1ZSksCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH07CiAgICBsZXQgb2JqQXJyYXkgPSBbXTsKICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykgewogICAgICAgIGNvbnN0IHsga2V5UGF0aCwgdmFsdWUgfSA9IHNwbGl0TGluZVRvUGFyYW1zKGxpbmUpOwogICAgICAgIGNvbnN0IGtleVBhdGhTcGxpdGVkID0gc3BsaXRLZXlQYXRoKGtleVBhdGgpOwogICAgICAgIG9iakFycmF5LnB1c2goYXNzZW1ibGVOZXN0ZWRPYmooe30sIGtleVBhdGhTcGxpdGVkLCB2YWx1ZSkpOwogICAgfQogICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkob2JqQXJyYXkucmVkdWNlKChhY2MsIHJlc3VsdE9iaikgPT4gewogICAgICAgIHJldHVybiB7IC4uLmFjYywgLi4ucmVzdWx0T2JqIH07CiAgICB9LCB7fSksIG51bGwsIDIpKTsKfTsKcHJvY2Vzcy5zdGRpbi5vbignZGF0YScsIGFzeW5jIChjaHVuaykgPT4gewogICAgYXdhaXQgc29sdXRpb24oY2h1bmsudG9TdHJpbmcoJ3V0Zi04JykpOwogICAgcHJvY2Vzcy5leGl0KDApOwp9KTsK