text-to-map 1.1.34 → 1.1.35
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.
|
@@ -377,7 +377,7 @@ export const getNewSchool = async ({ name, founder, lineNumber, required, onErro
|
|
|
377
377
|
izo: "",
|
|
378
378
|
};
|
|
379
379
|
if (founder !== null) {
|
|
380
|
-
const { school, errors } = findSchool(name, founder.schools, required ? undefined :
|
|
380
|
+
const { school, errors } = findSchool(name, founder.schools, required ? undefined : 4);
|
|
381
381
|
if (errors.length > 0) {
|
|
382
382
|
onError({ lineNumber, line: name, errors });
|
|
383
383
|
}
|
|
@@ -436,4 +436,4 @@ const roundToNDecimalPlaces = (toRound, decimalPlaces) => {
|
|
|
436
436
|
return (Math.round(toRound * Math.pow(10, decimalPlaces)) /
|
|
437
437
|
Math.pow(10, decimalPlaces));
|
|
438
438
|
};
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFXLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTBCOUMsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxFQUFFLEVBQ2xELEtBQUssRUFDTCxZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNsQixTQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNwQixlQUFlLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUMxQiw0QkFBNEIsR0FBRyxLQUFLLEdBQ2hCLEVBQTJCLEVBQUU7SUFDakQsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLG1CQUFtQixFQUFFLElBQUk7WUFDekIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQixXQUFXLEVBQUUsSUFBSTtZQUNqQixnQkFB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LENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFlLEVBQUUsSUFBWSxFQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE9BQU87SUFDUCxXQUFXLEVBQUUsQ0FBQztJQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Q0FDM0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixPQUFlLEVBQ2YsYUFBcUIsRUFDYixFQUFFO0lBQ1YsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUM1QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBjaGVja1N0cmVldEV4aXN0cyxcclxuICBmaW5kQWRkcmVzc1BvaW50cyxcclxuICBnZXRBZGRyZXNzUG9pbnRCeUlkLFxyXG59IGZyb20gXCIuLi9kYi9hZGRyZXNzLXBvaW50c1wiO1xyXG5pbXBvcnQgeyBkaXNjb25uZWN0S25leCB9IGZyb20gXCIuLi9kYi9kYlwiO1xyXG5pbXBvcnQgeyBmaW5kRm91bmRlciwgZ2V0Rm91bmRlckJ5SWQgfSBmcm9tIFwiLi4vZGIvZm91bmRlcnNcIjtcclxuaW1wb3J0IHsgZmluZFNjaG9vbCB9IGZyb20gXCIuLi9kYi9zY2hvb2xzXCI7XHJcbmltcG9ydCB7IEZvdW5kZXIsIE11bmljaXBhbGl0eVR5cGUsIGZvdW5kZXJUb011bmljaXBhbGl0eSB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQsXHJcbiAgZ2V0UmVzdE9mTXVuaWNpcGFsaXR5UGFydCxcclxuICBnZXRTd2l0Y2hNdW5pY2lwYWxpdHksXHJcbiAgZ2V0V2hvbGVNdW5pY2lwYWxpdHksXHJcbiAgaXNNdW5pY2lwYWxpdHlTd2l0Y2gsXHJcbiAgaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lLFxyXG4gIGlzUmVzdE9mTXVuaWNpcGFsaXR5UGFydExpbmUsXHJcbiAgaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUsXHJcbiAgaXNXaG9sZU11bmljaXBhbGl0eSxcclxufSBmcm9tIFwiLi9tdW5pY2lwYWxpdHlcIjtcclxuaW1wb3J0IHsgcGFyc2VMaW5lIH0gZnJvbSBcIi4vc21kLWxpbmUtcGFyc2VyXCI7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzc1BvaW50LFxyXG4gIEVycm9yQ2FsbGJhY2tQYXJhbXMsXHJcbiAgRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIEludGVybWVkaWF0ZUFyZWEsXHJcbiAgSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5LFxyXG4gIEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdCxcclxuICBJbnRlcm1lZGlhdGVTY2hvb2wsXHJcbiAgTXVuaWNpcGFsaXR5LFxyXG4gIFByb2Nlc3NMaW5lQ2FsbGJhY2tQYXJhbXMsXHJcbiAgUHJvY2Vzc0xpbmVQYXJhbXMsXHJcbiAgU2Nob29sLFxyXG4gIFNtZEVycm9yLFxyXG4gIFNtZFN0YXRlLFxyXG59IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5pbnRlcmZhY2UgUGFyc2VPcmRpbmFuY2VQcm9wcyB7XHJcbiAgbGluZXM6IHN0cmluZ1tdO1xyXG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8U21kU3RhdGU+O1xyXG4gIG9uRXJyb3I/OiAocGFyYW1zOiBFcnJvckNhbGxiYWNrUGFyYW1zKSA9PiB2b2lkO1xyXG4gIG9uV2FybmluZz86IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbiAgb25Qcm9jZXNzZWRMaW5lPzogKHBhcmFtczogUHJvY2Vzc0xpbmVDYWxsYmFja1BhcmFtcykgPT4gdm9pZDtcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VPcmRpbmFuY2VUb0FkZHJlc3NQb2ludHMgPSBhc3luYyAoe1xyXG4gIGxpbmVzLFxyXG4gIGluaXRpYWxTdGF0ZSA9IHt9LFxyXG4gIG9uRXJyb3IgPSAoKSA9PiB7fSxcclxuICBvbldhcm5pbmcgPSAoKSA9PiB7fSxcclxuICBvblByb2Nlc3NlZExpbmUgPSAoKSA9PiB7fSxcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzID0gZmFsc2UsXHJcbn06IFBhcnNlT3JkaW5hbmNlUHJvcHMpOiBQcm9taXNlPE11bmljaXBhbGl0eVtdPiA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHN0YXRlOiBTbWRTdGF0ZSA9IHtcclxuICAgICAgY3VycmVudE11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEZpbHRlck11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEFyZWE6IG51bGwsXHJcbiAgICAgIHNjaG9vbHNDb21wbGV0ZWQ6IGZhbHNlLFxyXG4gICAgICBhcmVhQ291bnQ6IDAsXHJcbiAgICAgIHJlc3RzOiB7XHJcbiAgICAgICAgbm9TdHJlZXROYW1lQXJlYToge1xyXG4gICAgICAgICAgYXJlYUluZGV4OiBudWxsLFxyXG4gICAgICAgICAgbGluZU51bWJlcjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG11bmljaXBhbGl0eVBhcnRzOiBbXSxcclxuICAgICAgICB3aG9sZU11bmljaXBhbGl0eUFyZWE6IHtcclxuICAgICAgICAgIGFyZWFJbmRleDogbnVsbCxcclxuICAgICAgICAgIGxpbmVOdW1iZXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzLFxyXG4gICAgICB9LFxyXG4gICAgICBtdW5pY2lwYWxpdGllczogW10sXHJcbiAgICAgIC4uLmluaXRpYWxTdGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGxpbmVOdW1iZXIgPSAxO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmF3TGluZSBvZiBsaW5lcykge1xyXG4gICAgICBjb25zdCBsaW5lID0gY2xlYW5MaW5lKHJhd0xpbmUpO1xyXG4gICAgICBhd2FpdCBwcm9jZXNzT25lTGluZSh7XHJcbiAgICAgICAgbGluZSxcclxuICAgICAgICByYXdMaW5lOiByYXdMaW5lLnRyaW0oKSxcclxuICAgICAgICBzdGF0ZSxcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuaW5nLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Qcm9jZXNzZWRMaW5lKHsgbGluZU51bWJlciwgbGluZSB9KTtcclxuICAgICAgbGluZU51bWJlcisrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZS5jdXJyZW50QXJlYSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5hcmVhcy5wdXNoKG1hcEFyZWFGb3JFeHBvcnQoc3RhdGUuY3VycmVudEFyZWEpKTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICAgIHJldHVybiBzdGF0ZS5tdW5pY2lwYWxpdGllcztcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGF3YWl0IGRpc2Nvbm5lY3RLbmV4KCk7XHJcbiAgfVxyXG4gIHJldHVybiBbXTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0TXVuaWNpcGFsaXR5ID0gKFxyXG4gIG11bmljaXBhbGl0eTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5XHJcbik6IE11bmljaXBhbGl0eSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IG11bmljaXBhbGl0eS5tdW5pY2lwYWxpdHlOYW1lLFxyXG4gICAgYXJlYXM6IG11bmljaXBhbGl0eS5hcmVhcy5tYXAoKGFyZWEpID0+ICh7XHJcbiAgICAgIGluZGV4OiBhcmVhLmluZGV4LFxyXG4gICAgICBzY2hvb2xzOiBhcmVhLnNjaG9vbHMsXHJcbiAgICAgIGFkZHJlc3NlczogQXJyYXkuZnJvbShhcmVhLmFkZHJlc3NNYXAudmFsdWVzKCkpLmZpbHRlcihcclxuICAgICAgICAocG9pbnQpID0+IHBvaW50LmxhdCAhPT0gMCAmJiBwb2ludC5sbmcgIT09IDBcclxuICAgICAgKSxcclxuICAgIH0pKSxcclxuICAgIGNvZGU6IG11bmljaXBhbGl0eS5mb3VuZGVyLm11bmljaXBhbGl0eUNvZGUsXHJcbiAgICBtdW5pY2lwYWxpdHlUeXBlOlxyXG4gICAgICBtdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFwiY2l0eVwiXHJcbiAgICAgICAgOiBcImRpc3RyaWN0XCIsXHJcbiAgICBjaXR5Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5jaXR5Q29kZXMpXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzKV0sXHJcbiAgICB1bm1hcHBlZFBvaW50czogbXVuaWNpcGFsaXR5LnVubWFwcGVkUG9pbnRzLmZpbHRlcihcclxuICAgICAgKHBvaW50KSA9PiBwb2ludC5sYXQgIT09IDAgJiYgcG9pbnQubG5nICE9PSAwXHJcbiAgICApLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzT25lTGluZSA9IGFzeW5jIChwYXJhbXM6IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBsaW5lLCBsaW5lTnVtYmVyLCBzdGF0ZSB9ID0gcGFyYW1zO1xyXG5cclxuICBpZiAobGluZVswXSA9PT0gXCIjXCIpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lKHBhcmFtcyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAobGluZSA9PT0gXCJcIikge1xyXG4gICAgLy8gZW5kIG9mIHNjaG9vbFxyXG4gICAgcHJvY2Vzc0VtcHR5TGluZShwYXJhbXMpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGxpbmVbMF0gPT09IFwiIVwiKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgPT09IG51bGwpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUocGFyYW1zKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5zY2hvb2xzQ29tcGxldGVkID09PSBmYWxzZSkge1xyXG4gICAgY29uc3QgZm91bmROZXh0U2Nob29sID0gYXdhaXQgcHJvY2Vzc05leHRTY2hvb2xMaW5lKHBhcmFtcyk7XHJcbiAgICBpZiAoZm91bmROZXh0U2Nob29sKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKGlzTXVuaWNpcGFsaXR5U3dpdGNoKGxpbmUpKSB7XHJcbiAgICBwcm9jZXNzTXVuaWNpcGFsaXR5U3dpdGNoTGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNXaG9sZU11bmljaXBhbGl0eShsaW5lKSkge1xyXG4gICAgYXdhaXQgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUobGluZSkpIHtcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lKGxpbmUpKSB7XHJcbiAgICBzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0TGluZShsaW5lKSkge1xyXG4gICAgY29uc3QgeyBtdW5pY2lwYWxpdHlQYXJ0Q29kZSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0KFxyXG4gICAgICBsaW5lLFxyXG4gICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICAgICk7XHJcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGFyYW1zLm9uRXJyb3IoeyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cy5wdXNoKHtcclxuICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICBhcmVhSW5kZXg6IHN0YXRlLmN1cnJlbnRBcmVhLmluZGV4LFxyXG4gICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBhd2FpdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZShwYXJhbXMpO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgc3RhdGUsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgIT09IG51bGwpIHtcclxuICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuYXJlYXMucHVzaChzdGF0ZS5jdXJyZW50QXJlYSk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXROZXdNdW5pY2lwYWxpdHlCeU5hbWUobGluZSk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID0gbXVuaWNpcGFsaXR5O1xyXG4gIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBmb3VuZGVyVG9NdW5pY2lwYWxpdHkoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICApO1xyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IG51bGw7XHJcbn07XHJcblxyXG5jb25zdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkgPSBhc3luYyAoc3RhdGU6IFNtZFN0YXRlKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkgIT09IG51bGwpIHtcclxuICAgIGF3YWl0IGFkZFJlc3RzKHN0YXRlKTtcclxuICAgIHN0YXRlLm11bmljaXBhbGl0aWVzLnB1c2goY29udmVydE11bmljaXBhbGl0eShzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc0VtcHR5TGluZSA9ICh7IHN0YXRlIH06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRBcmVhICE9PSBudWxsKSB7XHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLnB1c2goc3RhdGUuY3VycmVudEFyZWEpO1xyXG4gICAgc3RhdGUuY3VycmVudEFyZWEgPSBudWxsO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUgPSBhc3luYyAoe1xyXG4gIHJhd0xpbmUsXHJcbiAgbGluZU51bWJlcixcclxuICBzdGF0ZSxcclxuICBvbkVycm9yLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09PSBudWxsKSB7XHJcbiAgICBvbkVycm9yKHtcclxuICAgICAgbGluZU51bWJlcixcclxuICAgICAgbGluZTogcmF3TGluZSxcclxuICAgICAgZXJyb3JzOiBbXHJcbiAgICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgICBcIkRlZmluaWNpIMWha29seSBtdXPDrSBwxZllZGNow6F6ZXQgZGVmaW5pY2UgesWZaXpvdmF0ZWxlICh1dm96ZW7DoSAnIycsIG5hcMWZLiAnIyBTdHJha29uaWNlJykuXCIsXHJcbiAgICAgICAgICByYXdMaW5lXHJcbiAgICAgICAgKSxcclxuICAgICAgXSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IHtcclxuICAgIGluZGV4OiBzdGF0ZS5hcmVhQ291bnQrKyxcclxuICAgIHNjaG9vbHM6IFtcclxuICAgICAgYXdhaXQgZ2V0TmV3U2Nob29sKHtcclxuICAgICAgICBuYW1lOiByYXdMaW5lLFxyXG4gICAgICAgIGZvdW5kZXI6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlcixcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgIH0pLFxyXG4gICAgXSxcclxuICAgIGFkZHJlc3NlczogW10sXHJcbiAgICBhZGRyZXNzTWFwOiBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50PigpLFxyXG4gICAgYWxsU2Nob29sc0FkZGVkOiBmYWxzZSxcclxuICB9O1xyXG4gIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSBmYWxzZTtcclxuICBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5ID0gZm91bmRlclRvTXVuaWNpcGFsaXR5KFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NOZXh0U2Nob29sTGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIHN0YXRlLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xyXG4gIGNvbnN0IHNjaG9vbCA9IGF3YWl0IGdldE5ld1NjaG9vbCh7XHJcbiAgICBuYW1lOiBsaW5lLFxyXG4gICAgZm91bmRlcjogc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyLFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgIG9uRXJyb3I6ICgpID0+IHt9LFxyXG4gIH0pO1xyXG5cclxuICBpZiAoc2Nob29sID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYS5zY2hvb2xzLnB1c2goc2Nob29sKTtcclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlTd2l0Y2hMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIHN0YXRlLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRTd2l0Y2hNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbn06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBtdW5pY2lwYWxpdHksIGVycm9ycyB9ID0gYXdhaXQgZ2V0V2hvbGVNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChtdW5pY2lwYWxpdHkudHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5KSB7XHJcbiAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuY2l0eUNvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFkZHJlc3NQb2ludHMgPSBhd2FpdCBmaW5kQWRkcmVzc1BvaW50cyh7XHJcbiAgICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlcIixcclxuICAgICAgbXVuaWNpcGFsaXR5LFxyXG4gICAgfSk7XHJcbiAgICBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhKHN0YXRlLmN1cnJlbnRBcmVhLCBhZGRyZXNzUG9pbnRzLCBsaW5lTnVtYmVyKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhID0gKFxyXG4gIGFyZWE6IEludGVybWVkaWF0ZUFyZWEsXHJcbiAgYWRkcmVzc1BvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIG11bmljaXBhbGl0eUNvZGU/OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgZm9yIChjb25zdCBwb2ludCBvZiBhZGRyZXNzUG9pbnRzKSB7XHJcbiAgICBpZiAoYXJlYS5hZGRyZXNzTWFwLmhhcyhwb2ludC5pZCkpIHtcclxuICAgICAgYXJlYS5hZGRyZXNzTWFwLmdldChwb2ludC5pZCkubGluZU51bWJlcnMucHVzaChsaW5lTnVtYmVyIC0gMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcmVhLmFkZHJlc3NNYXAuc2V0KFxyXG4gICAgICAgIHBvaW50LmlkLFxyXG4gICAgICAgIG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChwb2ludCwgbGluZU51bWJlciwgbXVuaWNpcGFsaXR5Q29kZSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbiAgb25XYXJuaW5nLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGNvbnN0IHsgc21kTGluZXMsIGVycm9ycyB9ID0gcGFyc2VMaW5lKGxpbmUpO1xyXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgb25FcnJvcih7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgZm9yIChjb25zdCBzbWRMaW5lIG9mIHNtZExpbmVzKSB7XHJcbiAgICAgIGlmIChzbWRMaW5lLnR5cGUgPT09IFwic3RyZWV0XCIpIHtcclxuICAgICAgICBjb25zdCB7IGV4aXN0cywgZXJyb3JzIH0gPSBhd2FpdCBjaGVja1N0cmVldEV4aXN0cyhcclxuICAgICAgICAgIHNtZExpbmUuc3RyZWV0LFxyXG4gICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG9uV2FybmluZyh7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgICAgY29uc3QgYWRkcmVzc1BvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgICAgICAgICAgdHlwZTogXCJzbWRMaW5lXCIsXHJcbiAgICAgICAgICAgIHNtZExpbmUsXHJcbiAgICAgICAgICAgIG11bmljaXBhbGl0eTogc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICAgICAgICAgIHN0YXRlLmN1cnJlbnRBcmVhLFxyXG4gICAgICAgICAgICBhZGRyZXNzUG9pbnRzLFxyXG4gICAgICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmNvZGUgIT09XHJcbiAgICAgICAgICAgICAgc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eS5jb2RlXHJcbiAgICAgICAgICAgICAgPyBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LmNvZGVcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoc21kTGluZS50eXBlID09PSBcIm11bmljaXBhbGl0eVBhcnRcIikge1xyXG4gICAgICAgIGNvbnN0IHsgbXVuaWNpcGFsaXR5UGFydENvZGUsIGVycm9ycyB9ID1cclxuICAgICAgICAgIGF3YWl0IGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQoXHJcbiAgICAgICAgICAgIHNtZExpbmUubXVuaWNpcGFsaXR5UGFydCxcclxuICAgICAgICAgICAgbGluZSxcclxuICAgICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgb25XYXJuaW5nKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBhZGRyZXNzUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgICAgICAgICB0eXBlOiBcInNtZExpbmVcIixcclxuICAgICAgICAgICAgc21kTGluZSxcclxuICAgICAgICAgICAgbXVuaWNpcGFsaXR5OiBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LFxyXG4gICAgICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoc3RhdGUuY3VycmVudEFyZWEsIGFkZHJlc3NQb2ludHMsIGxpbmVOdW1iZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RUb0FyZWEgPSAoXHJcbiAgcmVzdFBvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICBjb25zdCBhZGRyZXNzUG9pbnRzSWRzID0gZ2V0QWxsQWRkcmVzc1BvaW50c0lkcyhzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KTtcclxuXHJcbiAgLy8gZmlsdGVyIG91dCBhZGRyZXNzIHBvaW50cyBhbHJlYWR5IHByZXNlbnRcclxuICBjb25zdCByZW1haW5pbmdQb2ludHMgPSByZXN0UG9pbnRzLmZpbHRlcihcclxuICAgIChwb2ludCkgPT4gIWFkZHJlc3NQb2ludHNJZHMuaGFzKHBvaW50LmlkKVxyXG4gICk7XHJcblxyXG4gIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLmZpbmQoKGFyZWEpID0+IGFyZWEuaW5kZXggPT09IGFyZWFJbmRleCksXHJcbiAgICByZW1haW5pbmdQb2ludHMsXHJcbiAgICBsaW5lTnVtYmVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGlmIChzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgYXdhaXQgYWRkUmVzdFdpdGhOb1N0cmVldE5hbWVUb1NjaG9vbChcclxuICAgICAgc3RhdGUucmVzdHMubm9TdHJlZXROYW1lQXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEuYXJlYUluZGV4ICE9PSBudWxsKSB7XHJcbiAgICBhd2FpdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHkoXHJcbiAgICAgIHN0YXRlLnJlc3RzLndob2xlTXVuaWNpcGFsaXR5QXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgcmVzdCBvZiBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5UGFydChcclxuICAgICAgc3RhdGUsXHJcbiAgICAgIHJlc3QubXVuaWNpcGFsaXR5UGFydENvZGUsXHJcbiAgICAgIHJlc3QuYXJlYUluZGV4LFxyXG4gICAgICByZXN0LmxpbmVOdW1iZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUucmVzdHMuaW5jbHVkZVVubWFwcGVkQWRkcmVzc1BvaW50cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5VG9Vbm1hcHBlZFBvaW50cyhzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMubXVuaWNpcGFsaXR5UGFydHMgPSBbXTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RXaXRoTm9TdHJlZXROYW1lVG9TY2hvb2wgPSBhc3luYyAoXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICAvLyBnZXQgYWxsIGFkZHJlc3MgcG9pbnRzIHdpdGhvdXQgc3RyZWV0IG5hbWUgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgcG9pbnRzTm9TdHJlZXROYW1lID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eU5vU3RyZWV0TmFtZVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcbiAgYWRkUmVzdFRvQXJlYShcclxuICAgIHBvaW50c05vU3RyZWV0TmFtZSxcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEuYXJlYUluZGV4LFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHN0YXRlXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChsaW5lTnVtYmVyOiBudW1iZXIsIHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGFkZFJlc3RUb0FyZWEoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpLFxyXG4gICAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCxcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICBzdGF0ZVxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHlUb1VubWFwcGVkUG9pbnRzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkudW5tYXBwZWRQb2ludHMgPSAoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpXHJcbiAgKS5tYXAoKHBvaW50KSA9PiBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQocG9pbnQpKTtcclxufTtcclxuXHJcbmNvbnN0IGdldFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChcclxuICBzdGF0ZTogU21kU3RhdGVcclxuKTogUHJvbWlzZTxBZGRyZXNzUG9pbnRbXT4gPT4ge1xyXG4gIC8vIGdldCBhbGwgYWRkcmVzcyBwb2ludHMgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgYWxsUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIC8vIGZpbHRlciBvdXQgYWRkcmVzcyBwb2ludHMgYWxyZWFkeSBwcmVzZW50XHJcbiAgY29uc3QgYWRkcmVzc1BvaW50c0lkcyA9IGdldEFsbEFkZHJlc3NQb2ludHNJZHMoc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSk7XHJcbiAgcmV0dXJuIGFsbFBvaW50cy5maWx0ZXIoKHBvaW50KSA9PiAhYWRkcmVzc1BvaW50c0lkcy5oYXMocG9pbnQuaWQpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eVBhcnQgPSBhc3luYyAoXHJcbiAgc3RhdGU6IFNtZFN0YXRlLFxyXG4gIG11bmljaXBhbGl0eVBhcnRDb2RlOiBudW1iZXIsXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGFsbFBvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlQYXJ0XCIsXHJcbiAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICB9KTtcclxuICBhZGRSZXN0VG9BcmVhKGFsbFBvaW50cywgYXJlYUluZGV4LCBsaW5lTnVtYmVyLCBzdGF0ZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlOYW1lID0gYXN5bmMgKFxyXG4gIG5hbWU6IHN0cmluZ1xyXG4pOiBQcm9taXNlPEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdD4gPT4ge1xyXG4gIGNvbnN0IHsgZm91bmRlciwgZXJyb3JzIH0gPSBhd2FpdCBmaW5kRm91bmRlcihuYW1lKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlGb3VuZGVySWQgPSBhc3luYyAoXHJcbiAgZm91bmRlcklkOiBudW1iZXJcclxuKTogUHJvbWlzZTxJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHlSZXN1bHQ+ID0+IHtcclxuICBjb25zdCB7IGZvdW5kZXIsIGVycm9ycyB9ID0gYXdhaXQgZ2V0Rm91bmRlckJ5SWQoZm91bmRlcklkKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5jb25zdCBnZXROZXdNdW5pY2lwYWxpdHkgPSAoXHJcbiAgZm91bmRlcjogRm91bmRlcixcclxuICBlcnJvcnM6IFNtZEVycm9yW11cclxuKTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5UmVzdWx0ID0+ICh7XHJcbiAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICBtdW5pY2lwYWxpdHlOYW1lOiBmb3VuZGVyID8gZm91bmRlci5uYW1lIDogXCJOZXpuw6Ftw6Egb2JlY1wiLFxyXG4gICAgZm91bmRlcixcclxuICAgIGFyZWFzOiBbXSxcclxuICAgIGNvZGU6IGZvdW5kZXIgPyBmb3VuZGVyLm11bmljaXBhbGl0eUNvZGUgOiAwLFxyXG4gICAgbXVuaWNpcGFsaXR5VHlwZTpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHkgPyBcImNpdHlcIiA6IFwiZGlzdHJpY3RcIixcclxuICAgIGNpdHlDb2RlczpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFtmb3VuZGVyLm11bmljaXBhbGl0eUNvZGVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6XHJcbiAgICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgICAgID8gW2ZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgdW5tYXBwZWRQb2ludHM6IFtdLFxyXG4gIH0sXHJcbiAgZXJyb3JzLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXROZXdTY2hvb2wgPSBhc3luYyAoe1xyXG4gIG5hbWUsXHJcbiAgZm91bmRlcixcclxuICBsaW5lTnVtYmVyLFxyXG4gIHJlcXVpcmVkLFxyXG4gIG9uRXJyb3IsXHJcbn06IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZm91bmRlcjogRm91bmRlciB8IG51bGw7XHJcbiAgbGluZU51bWJlcjogbnVtYmVyO1xyXG4gIHJlcXVpcmVkOiBib29sZWFuO1xyXG4gIG9uRXJyb3I6IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbn0pOiBQcm9taXNlPEludGVybWVkaWF0ZVNjaG9vbCB8IG51bGw+ID0+IHtcclxuICBsZXQgZXhwb3J0U2Nob29sOiBTY2hvb2wgPSB7XHJcbiAgICBuYW1lLFxyXG4gICAgaXpvOiBcIlwiLFxyXG4gIH07XHJcbiAgaWYgKGZvdW5kZXIgIT09IG51bGwpIHtcclxuICAgIGNvbnN0IHsgc2Nob29sLCBlcnJvcnMgfSA9IGZpbmRTY2hvb2woXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGZvdW5kZXIuc2Nob29scyxcclxuICAgICAgcmVxdWlyZWQgPyB1bmRlZmluZWQgOiAxNVxyXG4gICAgKTtcclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZTogbmFtZSwgZXJyb3JzIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHNjaG9vbCkge1xyXG4gICAgICBleHBvcnRTY2hvb2wubmFtZSA9IHNjaG9vbC5uYW1lO1xyXG4gICAgICBleHBvcnRTY2hvb2wuaXpvID0gc2Nob29sLml6byB8fCBcIlwiO1xyXG4gICAgICBpZiAoc2Nob29sLmxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBhd2FpdCBnZXRBZGRyZXNzUG9pbnRCeUlkKFxyXG4gICAgICAgICAgc2Nob29sLmxvY2F0aW9uc1swXS5hZGRyZXNzUG9pbnRJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBleHBvcnRTY2hvb2wucG9zaXRpb24gPSBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQocG9zaXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB7IC4uLmV4cG9ydFNjaG9vbCwgYWRkcmVzc01hcDogbmV3IE1hcDxudW1iZXIsIEV4cG9ydEFkZHJlc3NQb2ludD4oKSB9O1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QWxsQWRkcmVzc1BvaW50c0lkcyA9IChcclxuICBtdW5pY2lwYWxpdHk6IEludGVybWVkaWF0ZU11bmljaXBhbGl0eVxyXG4pOiBTZXQ8bnVtYmVyPiA9PiB7XHJcbiAgY29uc3QgYWRkcmVzc1BvaW50c0lkcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG5cclxuICBmb3IgKGNvbnN0IGFyZWEgb2YgbXVuaWNpcGFsaXR5LmFyZWFzKSB7XHJcbiAgICBmb3IgKGNvbnN0IGlkIG9mIGFyZWEuYWRkcmVzc01hcC5rZXlzKCkpIHtcclxuICAgICAgYWRkcmVzc1BvaW50c0lkcy5hZGQoaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gYWRkcmVzc1BvaW50c0lkcztcclxufTtcclxuXHJcbmNvbnN0IG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydCA9IChcclxuICBhZGRyZXNzUG9pbnQ6IEFkZHJlc3NQb2ludCB8IEV4cG9ydEFkZHJlc3NQb2ludCxcclxuICBsaW5lTnVtYmVyPzogbnVtYmVyLFxyXG4gIG11bmljaXBhbGl0eUNvZGU/OiBudW1iZXJcclxuKTogRXhwb3J0QWRkcmVzc1BvaW50ID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgYWRkcmVzczogYWRkcmVzc1BvaW50LmFkZHJlc3MsXHJcbiAgICBsYXQ6IHJvdW5kVG9ORGVjaW1hbFBsYWNlcyhhZGRyZXNzUG9pbnQubGF0LCA2KSxcclxuICAgIGxuZzogcm91bmRUb05EZWNpbWFsUGxhY2VzKGFkZHJlc3NQb2ludC5sbmcsIDYpLFxyXG4gICAgLi4uKGxpbmVOdW1iZXIgIT09IHVuZGVmaW5lZCA/IHsgbGluZU51bWJlcnM6IFtsaW5lTnVtYmVyIC0gMV0gfSA6IHt9KSxcclxuICAgIC4uLihtdW5pY2lwYWxpdHlDb2RlICE9PSB1bmRlZmluZWQgPyB7IG11bmljaXBhbGl0eUNvZGUgfSA6IHt9KSxcclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgbWFwQXJlYUZvckV4cG9ydCA9IChhcmVhOiBJbnRlcm1lZGlhdGVBcmVhKTogSW50ZXJtZWRpYXRlQXJlYSA9PiAoe1xyXG4gIC4uLmFyZWEsXHJcbiAgc2Nob29sczogYXJlYS5zY2hvb2xzLm1hcCgoc2Nob29sKSA9PiAoe1xyXG4gICAgLi4uc2Nob29sLFxyXG4gICAgcG9zaXRpb246IHNjaG9vbC5wb3NpdGlvblxyXG4gICAgICA/IG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChzY2hvb2wucG9zaXRpb24pXHJcbiAgICAgIDogbnVsbCxcclxuICB9KSksXHJcbn0pO1xyXG5cclxuY29uc3QgY2xlYW5MaW5lID0gKGxpbmU6IHN0cmluZykgPT4ge1xyXG4gIHJldHVybiBsaW5lLnRyaW0oKS5yZXBsYWNlKC/igJMvZywgXCItXCIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHdob2xlTGluZUVycm9yID0gKG1lc3NhZ2U6IHN0cmluZywgbGluZTogc3RyaW5nKTogU21kRXJyb3IgPT4gKHtcclxuICBtZXNzYWdlLFxyXG4gIHN0YXJ0T2Zmc2V0OiAwLFxyXG4gIGVuZE9mZnNldDogbGluZS5sZW5ndGggKyAxLFxyXG59KTtcclxuXHJcbmNvbnN0IHJvdW5kVG9ORGVjaW1hbFBsYWNlcyA9IChcclxuICB0b1JvdW5kOiBudW1iZXIsXHJcbiAgZGVjaW1hbFBsYWNlczogbnVtYmVyXHJcbik6IG51bWJlciA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIE1hdGgucm91bmQodG9Sb3VuZCAqIE1hdGgucG93KDEwLCBkZWNpbWFsUGxhY2VzKSkgL1xyXG4gICAgTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpXHJcbiAgKTtcclxufTtcclxuIl19
|
|
439
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFXLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTBCOUMsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxFQUFFLEVBQ2xELEtBQUssRUFDTCxZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNsQixTQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNwQixlQUFlLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUMxQiw0QkFBNEIsR0FBRyxLQUFLLEdBQ2hCLEVBQTJCLEVBQUU7SUFDakQsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLG1CQUFtQixFQUFFLElBQUk7WUFDekIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQixXQUFXLEVBQUUsSUFBSTtZQUNqQixnQkFB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LENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFlLEVBQUUsSUFBWSxFQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE9BQU87SUFDUCxXQUFXLEVBQUUsQ0FBQztJQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Q0FDM0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixPQUFlLEVBQ2YsYUFBcUIsRUFDYixFQUFFO0lBQ1YsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUM1QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBjaGVja1N0cmVldEV4aXN0cyxcclxuICBmaW5kQWRkcmVzc1BvaW50cyxcclxuICBnZXRBZGRyZXNzUG9pbnRCeUlkLFxyXG59IGZyb20gXCIuLi9kYi9hZGRyZXNzLXBvaW50c1wiO1xyXG5pbXBvcnQgeyBkaXNjb25uZWN0S25leCB9IGZyb20gXCIuLi9kYi9kYlwiO1xyXG5pbXBvcnQgeyBmaW5kRm91bmRlciwgZ2V0Rm91bmRlckJ5SWQgfSBmcm9tIFwiLi4vZGIvZm91bmRlcnNcIjtcclxuaW1wb3J0IHsgZmluZFNjaG9vbCB9IGZyb20gXCIuLi9kYi9zY2hvb2xzXCI7XHJcbmltcG9ydCB7IEZvdW5kZXIsIE11bmljaXBhbGl0eVR5cGUsIGZvdW5kZXJUb011bmljaXBhbGl0eSB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQsXHJcbiAgZ2V0UmVzdE9mTXVuaWNpcGFsaXR5UGFydCxcclxuICBnZXRTd2l0Y2hNdW5pY2lwYWxpdHksXHJcbiAgZ2V0V2hvbGVNdW5pY2lwYWxpdHksXHJcbiAgaXNNdW5pY2lwYWxpdHlTd2l0Y2gsXHJcbiAgaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lLFxyXG4gIGlzUmVzdE9mTXVuaWNpcGFsaXR5UGFydExpbmUsXHJcbiAgaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUsXHJcbiAgaXNXaG9sZU11bmljaXBhbGl0eSxcclxufSBmcm9tIFwiLi9tdW5pY2lwYWxpdHlcIjtcclxuaW1wb3J0IHsgcGFyc2VMaW5lIH0gZnJvbSBcIi4vc21kLWxpbmUtcGFyc2VyXCI7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzc1BvaW50LFxyXG4gIEVycm9yQ2FsbGJhY2tQYXJhbXMsXHJcbiAgRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIEludGVybWVkaWF0ZUFyZWEsXHJcbiAgSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5LFxyXG4gIEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdCxcclxuICBJbnRlcm1lZGlhdGVTY2hvb2wsXHJcbiAgTXVuaWNpcGFsaXR5LFxyXG4gIFByb2Nlc3NMaW5lQ2FsbGJhY2tQYXJhbXMsXHJcbiAgUHJvY2Vzc0xpbmVQYXJhbXMsXHJcbiAgU2Nob29sLFxyXG4gIFNtZEVycm9yLFxyXG4gIFNtZFN0YXRlLFxyXG59IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5pbnRlcmZhY2UgUGFyc2VPcmRpbmFuY2VQcm9wcyB7XHJcbiAgbGluZXM6IHN0cmluZ1tdO1xyXG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8U21kU3RhdGU+O1xyXG4gIG9uRXJyb3I/OiAocGFyYW1zOiBFcnJvckNhbGxiYWNrUGFyYW1zKSA9PiB2b2lkO1xyXG4gIG9uV2FybmluZz86IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbiAgb25Qcm9jZXNzZWRMaW5lPzogKHBhcmFtczogUHJvY2Vzc0xpbmVDYWxsYmFja1BhcmFtcykgPT4gdm9pZDtcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VPcmRpbmFuY2VUb0FkZHJlc3NQb2ludHMgPSBhc3luYyAoe1xyXG4gIGxpbmVzLFxyXG4gIGluaXRpYWxTdGF0ZSA9IHt9LFxyXG4gIG9uRXJyb3IgPSAoKSA9PiB7fSxcclxuICBvbldhcm5pbmcgPSAoKSA9PiB7fSxcclxuICBvblByb2Nlc3NlZExpbmUgPSAoKSA9PiB7fSxcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzID0gZmFsc2UsXHJcbn06IFBhcnNlT3JkaW5hbmNlUHJvcHMpOiBQcm9taXNlPE11bmljaXBhbGl0eVtdPiA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHN0YXRlOiBTbWRTdGF0ZSA9IHtcclxuICAgICAgY3VycmVudE11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEZpbHRlck11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEFyZWE6IG51bGwsXHJcbiAgICAgIHNjaG9vbHNDb21wbGV0ZWQ6IGZhbHNlLFxyXG4gICAgICBhcmVhQ291bnQ6IDAsXHJcbiAgICAgIHJlc3RzOiB7XHJcbiAgICAgICAgbm9TdHJlZXROYW1lQXJlYToge1xyXG4gICAgICAgICAgYXJlYUluZGV4OiBudWxsLFxyXG4gICAgICAgICAgbGluZU51bWJlcjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG11bmljaXBhbGl0eVBhcnRzOiBbXSxcclxuICAgICAgICB3aG9sZU11bmljaXBhbGl0eUFyZWE6IHtcclxuICAgICAgICAgIGFyZWFJbmRleDogbnVsbCxcclxuICAgICAgICAgIGxpbmVOdW1iZXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzLFxyXG4gICAgICB9LFxyXG4gICAgICBtdW5pY2lwYWxpdGllczogW10sXHJcbiAgICAgIC4uLmluaXRpYWxTdGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGxpbmVOdW1iZXIgPSAxO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmF3TGluZSBvZiBsaW5lcykge1xyXG4gICAgICBjb25zdCBsaW5lID0gY2xlYW5MaW5lKHJhd0xpbmUpO1xyXG4gICAgICBhd2FpdCBwcm9jZXNzT25lTGluZSh7XHJcbiAgICAgICAgbGluZSxcclxuICAgICAgICByYXdMaW5lOiByYXdMaW5lLnRyaW0oKSxcclxuICAgICAgICBzdGF0ZSxcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuaW5nLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Qcm9jZXNzZWRMaW5lKHsgbGluZU51bWJlciwgbGluZSB9KTtcclxuICAgICAgbGluZU51bWJlcisrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZS5jdXJyZW50QXJlYSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5hcmVhcy5wdXNoKG1hcEFyZWFGb3JFeHBvcnQoc3RhdGUuY3VycmVudEFyZWEpKTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICAgIHJldHVybiBzdGF0ZS5tdW5pY2lwYWxpdGllcztcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGF3YWl0IGRpc2Nvbm5lY3RLbmV4KCk7XHJcbiAgfVxyXG4gIHJldHVybiBbXTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0TXVuaWNpcGFsaXR5ID0gKFxyXG4gIG11bmljaXBhbGl0eTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5XHJcbik6IE11bmljaXBhbGl0eSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IG11bmljaXBhbGl0eS5tdW5pY2lwYWxpdHlOYW1lLFxyXG4gICAgYXJlYXM6IG11bmljaXBhbGl0eS5hcmVhcy5tYXAoKGFyZWEpID0+ICh7XHJcbiAgICAgIGluZGV4OiBhcmVhLmluZGV4LFxyXG4gICAgICBzY2hvb2xzOiBhcmVhLnNjaG9vbHMsXHJcbiAgICAgIGFkZHJlc3NlczogQXJyYXkuZnJvbShhcmVhLmFkZHJlc3NNYXAudmFsdWVzKCkpLmZpbHRlcihcclxuICAgICAgICAocG9pbnQpID0+IHBvaW50LmxhdCAhPT0gMCAmJiBwb2ludC5sbmcgIT09IDBcclxuICAgICAgKSxcclxuICAgIH0pKSxcclxuICAgIGNvZGU6IG11bmljaXBhbGl0eS5mb3VuZGVyLm11bmljaXBhbGl0eUNvZGUsXHJcbiAgICBtdW5pY2lwYWxpdHlUeXBlOlxyXG4gICAgICBtdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFwiY2l0eVwiXHJcbiAgICAgICAgOiBcImRpc3RyaWN0XCIsXHJcbiAgICBjaXR5Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5jaXR5Q29kZXMpXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzKV0sXHJcbiAgICB1bm1hcHBlZFBvaW50czogbXVuaWNpcGFsaXR5LnVubWFwcGVkUG9pbnRzLmZpbHRlcihcclxuICAgICAgKHBvaW50KSA9PiBwb2ludC5sYXQgIT09IDAgJiYgcG9pbnQubG5nICE9PSAwXHJcbiAgICApLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzT25lTGluZSA9IGFzeW5jIChwYXJhbXM6IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBsaW5lLCBsaW5lTnVtYmVyLCBzdGF0ZSB9ID0gcGFyYW1zO1xyXG5cclxuICBpZiAobGluZVswXSA9PT0gXCIjXCIpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lKHBhcmFtcyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAobGluZSA9PT0gXCJcIikge1xyXG4gICAgLy8gZW5kIG9mIHNjaG9vbFxyXG4gICAgcHJvY2Vzc0VtcHR5TGluZShwYXJhbXMpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGxpbmVbMF0gPT09IFwiIVwiKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgPT09IG51bGwpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUocGFyYW1zKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5zY2hvb2xzQ29tcGxldGVkID09PSBmYWxzZSkge1xyXG4gICAgY29uc3QgZm91bmROZXh0U2Nob29sID0gYXdhaXQgcHJvY2Vzc05leHRTY2hvb2xMaW5lKHBhcmFtcyk7XHJcbiAgICBpZiAoZm91bmROZXh0U2Nob29sKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKGlzTXVuaWNpcGFsaXR5U3dpdGNoKGxpbmUpKSB7XHJcbiAgICBwcm9jZXNzTXVuaWNpcGFsaXR5U3dpdGNoTGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNXaG9sZU11bmljaXBhbGl0eShsaW5lKSkge1xyXG4gICAgYXdhaXQgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUobGluZSkpIHtcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lKGxpbmUpKSB7XHJcbiAgICBzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0TGluZShsaW5lKSkge1xyXG4gICAgY29uc3QgeyBtdW5pY2lwYWxpdHlQYXJ0Q29kZSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0KFxyXG4gICAgICBsaW5lLFxyXG4gICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICAgICk7XHJcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGFyYW1zLm9uRXJyb3IoeyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cy5wdXNoKHtcclxuICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICBhcmVhSW5kZXg6IHN0YXRlLmN1cnJlbnRBcmVhLmluZGV4LFxyXG4gICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBhd2FpdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZShwYXJhbXMpO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgc3RhdGUsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgIT09IG51bGwpIHtcclxuICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuYXJlYXMucHVzaChzdGF0ZS5jdXJyZW50QXJlYSk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXROZXdNdW5pY2lwYWxpdHlCeU5hbWUobGluZSk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID0gbXVuaWNpcGFsaXR5O1xyXG4gIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBmb3VuZGVyVG9NdW5pY2lwYWxpdHkoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICApO1xyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IG51bGw7XHJcbn07XHJcblxyXG5jb25zdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkgPSBhc3luYyAoc3RhdGU6IFNtZFN0YXRlKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkgIT09IG51bGwpIHtcclxuICAgIGF3YWl0IGFkZFJlc3RzKHN0YXRlKTtcclxuICAgIHN0YXRlLm11bmljaXBhbGl0aWVzLnB1c2goY29udmVydE11bmljaXBhbGl0eShzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc0VtcHR5TGluZSA9ICh7IHN0YXRlIH06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRBcmVhICE9PSBudWxsKSB7XHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLnB1c2goc3RhdGUuY3VycmVudEFyZWEpO1xyXG4gICAgc3RhdGUuY3VycmVudEFyZWEgPSBudWxsO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUgPSBhc3luYyAoe1xyXG4gIHJhd0xpbmUsXHJcbiAgbGluZU51bWJlcixcclxuICBzdGF0ZSxcclxuICBvbkVycm9yLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09PSBudWxsKSB7XHJcbiAgICBvbkVycm9yKHtcclxuICAgICAgbGluZU51bWJlcixcclxuICAgICAgbGluZTogcmF3TGluZSxcclxuICAgICAgZXJyb3JzOiBbXHJcbiAgICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgICBcIkRlZmluaWNpIMWha29seSBtdXPDrSBwxZllZGNow6F6ZXQgZGVmaW5pY2UgesWZaXpvdmF0ZWxlICh1dm96ZW7DoSAnIycsIG5hcMWZLiAnIyBTdHJha29uaWNlJykuXCIsXHJcbiAgICAgICAgICByYXdMaW5lXHJcbiAgICAgICAgKSxcclxuICAgICAgXSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IHtcclxuICAgIGluZGV4OiBzdGF0ZS5hcmVhQ291bnQrKyxcclxuICAgIHNjaG9vbHM6IFtcclxuICAgICAgYXdhaXQgZ2V0TmV3U2Nob29sKHtcclxuICAgICAgICBuYW1lOiByYXdMaW5lLFxyXG4gICAgICAgIGZvdW5kZXI6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlcixcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgIH0pLFxyXG4gICAgXSxcclxuICAgIGFkZHJlc3NlczogW10sXHJcbiAgICBhZGRyZXNzTWFwOiBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50PigpLFxyXG4gICAgYWxsU2Nob29sc0FkZGVkOiBmYWxzZSxcclxuICB9O1xyXG4gIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSBmYWxzZTtcclxuICBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5ID0gZm91bmRlclRvTXVuaWNpcGFsaXR5KFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NOZXh0U2Nob29sTGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIHN0YXRlLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xyXG4gIGNvbnN0IHNjaG9vbCA9IGF3YWl0IGdldE5ld1NjaG9vbCh7XHJcbiAgICBuYW1lOiBsaW5lLFxyXG4gICAgZm91bmRlcjogc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyLFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgIG9uRXJyb3I6ICgpID0+IHt9LFxyXG4gIH0pO1xyXG5cclxuICBpZiAoc2Nob29sID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYS5zY2hvb2xzLnB1c2goc2Nob29sKTtcclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlTd2l0Y2hMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIHN0YXRlLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRTd2l0Y2hNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbn06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBtdW5pY2lwYWxpdHksIGVycm9ycyB9ID0gYXdhaXQgZ2V0V2hvbGVNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChtdW5pY2lwYWxpdHkudHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5KSB7XHJcbiAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuY2l0eUNvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFkZHJlc3NQb2ludHMgPSBhd2FpdCBmaW5kQWRkcmVzc1BvaW50cyh7XHJcbiAgICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlcIixcclxuICAgICAgbXVuaWNpcGFsaXR5LFxyXG4gICAgfSk7XHJcbiAgICBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhKHN0YXRlLmN1cnJlbnRBcmVhLCBhZGRyZXNzUG9pbnRzLCBsaW5lTnVtYmVyKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhID0gKFxyXG4gIGFyZWE6IEludGVybWVkaWF0ZUFyZWEsXHJcbiAgYWRkcmVzc1BvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIG11bmljaXBhbGl0eUNvZGU/OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgZm9yIChjb25zdCBwb2ludCBvZiBhZGRyZXNzUG9pbnRzKSB7XHJcbiAgICBpZiAoYXJlYS5hZGRyZXNzTWFwLmhhcyhwb2ludC5pZCkpIHtcclxuICAgICAgYXJlYS5hZGRyZXNzTWFwLmdldChwb2ludC5pZCkubGluZU51bWJlcnMucHVzaChsaW5lTnVtYmVyIC0gMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcmVhLmFkZHJlc3NNYXAuc2V0KFxyXG4gICAgICAgIHBvaW50LmlkLFxyXG4gICAgICAgIG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChwb2ludCwgbGluZU51bWJlciwgbXVuaWNpcGFsaXR5Q29kZSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbiAgb25XYXJuaW5nLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGNvbnN0IHsgc21kTGluZXMsIGVycm9ycyB9ID0gcGFyc2VMaW5lKGxpbmUpO1xyXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgb25FcnJvcih7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgZm9yIChjb25zdCBzbWRMaW5lIG9mIHNtZExpbmVzKSB7XHJcbiAgICAgIGlmIChzbWRMaW5lLnR5cGUgPT09IFwic3RyZWV0XCIpIHtcclxuICAgICAgICBjb25zdCB7IGV4aXN0cywgZXJyb3JzIH0gPSBhd2FpdCBjaGVja1N0cmVldEV4aXN0cyhcclxuICAgICAgICAgIHNtZExpbmUuc3RyZWV0LFxyXG4gICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG9uV2FybmluZyh7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgICAgY29uc3QgYWRkcmVzc1BvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgICAgICAgICAgdHlwZTogXCJzbWRMaW5lXCIsXHJcbiAgICAgICAgICAgIHNtZExpbmUsXHJcbiAgICAgICAgICAgIG11bmljaXBhbGl0eTogc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICAgICAgICAgIHN0YXRlLmN1cnJlbnRBcmVhLFxyXG4gICAgICAgICAgICBhZGRyZXNzUG9pbnRzLFxyXG4gICAgICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmNvZGUgIT09XHJcbiAgICAgICAgICAgICAgc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eS5jb2RlXHJcbiAgICAgICAgICAgICAgPyBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LmNvZGVcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoc21kTGluZS50eXBlID09PSBcIm11bmljaXBhbGl0eVBhcnRcIikge1xyXG4gICAgICAgIGNvbnN0IHsgbXVuaWNpcGFsaXR5UGFydENvZGUsIGVycm9ycyB9ID1cclxuICAgICAgICAgIGF3YWl0IGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQoXHJcbiAgICAgICAgICAgIHNtZExpbmUubXVuaWNpcGFsaXR5UGFydCxcclxuICAgICAgICAgICAgbGluZSxcclxuICAgICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgb25XYXJuaW5nKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBhZGRyZXNzUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgICAgICAgICB0eXBlOiBcInNtZExpbmVcIixcclxuICAgICAgICAgICAgc21kTGluZSxcclxuICAgICAgICAgICAgbXVuaWNpcGFsaXR5OiBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LFxyXG4gICAgICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoc3RhdGUuY3VycmVudEFyZWEsIGFkZHJlc3NQb2ludHMsIGxpbmVOdW1iZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RUb0FyZWEgPSAoXHJcbiAgcmVzdFBvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICBjb25zdCBhZGRyZXNzUG9pbnRzSWRzID0gZ2V0QWxsQWRkcmVzc1BvaW50c0lkcyhzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KTtcclxuXHJcbiAgLy8gZmlsdGVyIG91dCBhZGRyZXNzIHBvaW50cyBhbHJlYWR5IHByZXNlbnRcclxuICBjb25zdCByZW1haW5pbmdQb2ludHMgPSByZXN0UG9pbnRzLmZpbHRlcihcclxuICAgIChwb2ludCkgPT4gIWFkZHJlc3NQb2ludHNJZHMuaGFzKHBvaW50LmlkKVxyXG4gICk7XHJcblxyXG4gIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLmZpbmQoKGFyZWEpID0+IGFyZWEuaW5kZXggPT09IGFyZWFJbmRleCksXHJcbiAgICByZW1haW5pbmdQb2ludHMsXHJcbiAgICBsaW5lTnVtYmVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGlmIChzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgYXdhaXQgYWRkUmVzdFdpdGhOb1N0cmVldE5hbWVUb1NjaG9vbChcclxuICAgICAgc3RhdGUucmVzdHMubm9TdHJlZXROYW1lQXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEuYXJlYUluZGV4ICE9PSBudWxsKSB7XHJcbiAgICBhd2FpdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHkoXHJcbiAgICAgIHN0YXRlLnJlc3RzLndob2xlTXVuaWNpcGFsaXR5QXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgcmVzdCBvZiBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5UGFydChcclxuICAgICAgc3RhdGUsXHJcbiAgICAgIHJlc3QubXVuaWNpcGFsaXR5UGFydENvZGUsXHJcbiAgICAgIHJlc3QuYXJlYUluZGV4LFxyXG4gICAgICByZXN0LmxpbmVOdW1iZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUucmVzdHMuaW5jbHVkZVVubWFwcGVkQWRkcmVzc1BvaW50cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5VG9Vbm1hcHBlZFBvaW50cyhzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMubXVuaWNpcGFsaXR5UGFydHMgPSBbXTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RXaXRoTm9TdHJlZXROYW1lVG9TY2hvb2wgPSBhc3luYyAoXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICAvLyBnZXQgYWxsIGFkZHJlc3MgcG9pbnRzIHdpdGhvdXQgc3RyZWV0IG5hbWUgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgcG9pbnRzTm9TdHJlZXROYW1lID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eU5vU3RyZWV0TmFtZVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcbiAgYWRkUmVzdFRvQXJlYShcclxuICAgIHBvaW50c05vU3RyZWV0TmFtZSxcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEuYXJlYUluZGV4LFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHN0YXRlXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChsaW5lTnVtYmVyOiBudW1iZXIsIHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGFkZFJlc3RUb0FyZWEoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpLFxyXG4gICAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCxcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICBzdGF0ZVxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHlUb1VubWFwcGVkUG9pbnRzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkudW5tYXBwZWRQb2ludHMgPSAoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpXHJcbiAgKS5tYXAoKHBvaW50KSA9PiBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQocG9pbnQpKTtcclxufTtcclxuXHJcbmNvbnN0IGdldFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChcclxuICBzdGF0ZTogU21kU3RhdGVcclxuKTogUHJvbWlzZTxBZGRyZXNzUG9pbnRbXT4gPT4ge1xyXG4gIC8vIGdldCBhbGwgYWRkcmVzcyBwb2ludHMgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgYWxsUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIC8vIGZpbHRlciBvdXQgYWRkcmVzcyBwb2ludHMgYWxyZWFkeSBwcmVzZW50XHJcbiAgY29uc3QgYWRkcmVzc1BvaW50c0lkcyA9IGdldEFsbEFkZHJlc3NQb2ludHNJZHMoc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSk7XHJcbiAgcmV0dXJuIGFsbFBvaW50cy5maWx0ZXIoKHBvaW50KSA9PiAhYWRkcmVzc1BvaW50c0lkcy5oYXMocG9pbnQuaWQpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eVBhcnQgPSBhc3luYyAoXHJcbiAgc3RhdGU6IFNtZFN0YXRlLFxyXG4gIG11bmljaXBhbGl0eVBhcnRDb2RlOiBudW1iZXIsXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGFsbFBvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlQYXJ0XCIsXHJcbiAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICB9KTtcclxuICBhZGRSZXN0VG9BcmVhKGFsbFBvaW50cywgYXJlYUluZGV4LCBsaW5lTnVtYmVyLCBzdGF0ZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlOYW1lID0gYXN5bmMgKFxyXG4gIG5hbWU6IHN0cmluZ1xyXG4pOiBQcm9taXNlPEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdD4gPT4ge1xyXG4gIGNvbnN0IHsgZm91bmRlciwgZXJyb3JzIH0gPSBhd2FpdCBmaW5kRm91bmRlcihuYW1lKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlGb3VuZGVySWQgPSBhc3luYyAoXHJcbiAgZm91bmRlcklkOiBudW1iZXJcclxuKTogUHJvbWlzZTxJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHlSZXN1bHQ+ID0+IHtcclxuICBjb25zdCB7IGZvdW5kZXIsIGVycm9ycyB9ID0gYXdhaXQgZ2V0Rm91bmRlckJ5SWQoZm91bmRlcklkKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5jb25zdCBnZXROZXdNdW5pY2lwYWxpdHkgPSAoXHJcbiAgZm91bmRlcjogRm91bmRlcixcclxuICBlcnJvcnM6IFNtZEVycm9yW11cclxuKTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5UmVzdWx0ID0+ICh7XHJcbiAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICBtdW5pY2lwYWxpdHlOYW1lOiBmb3VuZGVyID8gZm91bmRlci5uYW1lIDogXCJOZXpuw6Ftw6Egb2JlY1wiLFxyXG4gICAgZm91bmRlcixcclxuICAgIGFyZWFzOiBbXSxcclxuICAgIGNvZGU6IGZvdW5kZXIgPyBmb3VuZGVyLm11bmljaXBhbGl0eUNvZGUgOiAwLFxyXG4gICAgbXVuaWNpcGFsaXR5VHlwZTpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHkgPyBcImNpdHlcIiA6IFwiZGlzdHJpY3RcIixcclxuICAgIGNpdHlDb2RlczpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFtmb3VuZGVyLm11bmljaXBhbGl0eUNvZGVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6XHJcbiAgICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgICAgID8gW2ZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgdW5tYXBwZWRQb2ludHM6IFtdLFxyXG4gIH0sXHJcbiAgZXJyb3JzLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXROZXdTY2hvb2wgPSBhc3luYyAoe1xyXG4gIG5hbWUsXHJcbiAgZm91bmRlcixcclxuICBsaW5lTnVtYmVyLFxyXG4gIHJlcXVpcmVkLFxyXG4gIG9uRXJyb3IsXHJcbn06IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZm91bmRlcjogRm91bmRlciB8IG51bGw7XHJcbiAgbGluZU51bWJlcjogbnVtYmVyO1xyXG4gIHJlcXVpcmVkOiBib29sZWFuO1xyXG4gIG9uRXJyb3I6IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbn0pOiBQcm9taXNlPEludGVybWVkaWF0ZVNjaG9vbCB8IG51bGw+ID0+IHtcclxuICBsZXQgZXhwb3J0U2Nob29sOiBTY2hvb2wgPSB7XHJcbiAgICBuYW1lLFxyXG4gICAgaXpvOiBcIlwiLFxyXG4gIH07XHJcbiAgaWYgKGZvdW5kZXIgIT09IG51bGwpIHtcclxuICAgIGNvbnN0IHsgc2Nob29sLCBlcnJvcnMgfSA9IGZpbmRTY2hvb2woXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGZvdW5kZXIuc2Nob29scyxcclxuICAgICAgcmVxdWlyZWQgPyB1bmRlZmluZWQgOiA0XHJcbiAgICApO1xyXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lOiBuYW1lLCBlcnJvcnMgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2Nob29sKSB7XHJcbiAgICAgIGV4cG9ydFNjaG9vbC5uYW1lID0gc2Nob29sLm5hbWU7XHJcbiAgICAgIGV4cG9ydFNjaG9vbC5pem8gPSBzY2hvb2wuaXpvIHx8IFwiXCI7XHJcbiAgICAgIGlmIChzY2hvb2wubG9jYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGF3YWl0IGdldEFkZHJlc3NQb2ludEJ5SWQoXHJcbiAgICAgICAgICBzY2hvb2wubG9jYXRpb25zWzBdLmFkZHJlc3NQb2ludElkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAocG9zaXRpb24gIT09IG51bGwpIHtcclxuICAgICAgICAgIGV4cG9ydFNjaG9vbC5wb3NpdGlvbiA9IG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChwb3NpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHsgLi4uZXhwb3J0U2Nob29sLCBhZGRyZXNzTWFwOiBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50PigpIH07XHJcbn07XHJcblxyXG5jb25zdCBnZXRBbGxBZGRyZXNzUG9pbnRzSWRzID0gKFxyXG4gIG11bmljaXBhbGl0eTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5XHJcbik6IFNldDxudW1iZXI+ID0+IHtcclxuICBjb25zdCBhZGRyZXNzUG9pbnRzSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XHJcblxyXG4gIGZvciAoY29uc3QgYXJlYSBvZiBtdW5pY2lwYWxpdHkuYXJlYXMpIHtcclxuICAgIGZvciAoY29uc3QgaWQgb2YgYXJlYS5hZGRyZXNzTWFwLmtleXMoKSkge1xyXG4gICAgICBhZGRyZXNzUG9pbnRzSWRzLmFkZChpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBhZGRyZXNzUG9pbnRzSWRzO1xyXG59O1xyXG5cclxuY29uc3QgbWFwQWRkcmVzc1BvaW50Rm9yRXhwb3J0ID0gKFxyXG4gIGFkZHJlc3NQb2ludDogQWRkcmVzc1BvaW50IHwgRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIGxpbmVOdW1iZXI/OiBudW1iZXIsXHJcbiAgbXVuaWNpcGFsaXR5Q29kZT86IG51bWJlclxyXG4pOiBFeHBvcnRBZGRyZXNzUG9pbnQgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICBhZGRyZXNzOiBhZGRyZXNzUG9pbnQuYWRkcmVzcyxcclxuICAgIGxhdDogcm91bmRUb05EZWNpbWFsUGxhY2VzKGFkZHJlc3NQb2ludC5sYXQsIDYpLFxyXG4gICAgbG5nOiByb3VuZFRvTkRlY2ltYWxQbGFjZXMoYWRkcmVzc1BvaW50LmxuZywgNiksXHJcbiAgICAuLi4obGluZU51bWJlciAhPT0gdW5kZWZpbmVkID8geyBsaW5lTnVtYmVyczogW2xpbmVOdW1iZXIgLSAxXSB9IDoge30pLFxyXG4gICAgLi4uKG11bmljaXBhbGl0eUNvZGUgIT09IHVuZGVmaW5lZCA/IHsgbXVuaWNpcGFsaXR5Q29kZSB9IDoge30pLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBtYXBBcmVhRm9yRXhwb3J0ID0gKGFyZWE6IEludGVybWVkaWF0ZUFyZWEpOiBJbnRlcm1lZGlhdGVBcmVhID0+ICh7XHJcbiAgLi4uYXJlYSxcclxuICBzY2hvb2xzOiBhcmVhLnNjaG9vbHMubWFwKChzY2hvb2wpID0+ICh7XHJcbiAgICAuLi5zY2hvb2wsXHJcbiAgICBwb3NpdGlvbjogc2Nob29sLnBvc2l0aW9uXHJcbiAgICAgID8gbWFwQWRkcmVzc1BvaW50Rm9yRXhwb3J0KHNjaG9vbC5wb3NpdGlvbilcclxuICAgICAgOiBudWxsLFxyXG4gIH0pKSxcclxufSk7XHJcblxyXG5jb25zdCBjbGVhbkxpbmUgPSAobGluZTogc3RyaW5nKSA9PiB7XHJcbiAgcmV0dXJuIGxpbmUudHJpbSgpLnJlcGxhY2UoL+KAky9nLCBcIi1cIik7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgd2hvbGVMaW5lRXJyb3IgPSAobWVzc2FnZTogc3RyaW5nLCBsaW5lOiBzdHJpbmcpOiBTbWRFcnJvciA9PiAoe1xyXG4gIG1lc3NhZ2UsXHJcbiAgc3RhcnRPZmZzZXQ6IDAsXHJcbiAgZW5kT2Zmc2V0OiBsaW5lLmxlbmd0aCArIDEsXHJcbn0pO1xyXG5cclxuY29uc3Qgcm91bmRUb05EZWNpbWFsUGxhY2VzID0gKFxyXG4gIHRvUm91bmQ6IG51bWJlcixcclxuICBkZWNpbWFsUGxhY2VzOiBudW1iZXJcclxuKTogbnVtYmVyID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgTWF0aC5yb3VuZCh0b1JvdW5kICogTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpKSAvXHJcbiAgICBNYXRoLnBvdygxMCwgZGVjaW1hbFBsYWNlcylcclxuICApO1xyXG59O1xyXG4iXX0=
|
package/package.json
CHANGED
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
},
|
|
74
74
|
"name": "text-to-map",
|
|
75
75
|
"description": "Text To Map usiluje o lepší, strojově zpracovatelné využití částí vyhlášek s výčtem ulic a dalších lokací. Jde o rozšiřitelnou sadu konceptů a nástrojů, které zajistí hladký převod výčtu ulic a jejich rozsahů v lidsky srozumitelném jazyce do strojově zpracovatelného, uchopitelného formátu.",
|
|
76
|
-
"version": "1.1.
|
|
76
|
+
"version": "1.1.35",
|
|
77
77
|
"main": "dist/index.js",
|
|
78
78
|
"types": "dist/index.d.ts",
|
|
79
79
|
"files": [
|