@nlabs/lex 1.51.7 → 1.52.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.
@@ -96,4 +96,4 @@ export const Disabled = {
96
96
  }
97
97
  };
98
98
 
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CdXR0b24uc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAc3Rvcnlib29rL3JlYWN0JztcblxuaW50ZXJmYWNlIEJ1dHRvblByb3BzIHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgc2l6ZT86ICdsZycgfCAnbWQnIHwgJ3NtJztcbiAgdmFyaWFudD86ICdvdXRsaW5lJyB8ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknO1xufVxuXG5jb25zdCBCdXR0b246IFJlYWN0LkZDPEJ1dHRvblByb3BzPiA9ICh7XG4gIGNoaWxkcmVuLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBvbkNsaWNrLFxuICBzaXplID0gJ21kJyxcbiAgdmFyaWFudCA9ICdwcmltYXJ5J1xufSkgPT4ge1xuICBjb25zdCBiYXNlQ2xhc3NlcyA9ICdmb250LW1lZGl1bSByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTIwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctb2Zmc2V0LTInO1xuXG4gIGNvbnN0IHZhcmlhbnRDbGFzc2VzID0ge1xuICAgIG91dGxpbmU6ICdib3JkZXItMiBib3JkZXItYmx1ZS02MDAgdGV4dC1ibHVlLTYwMCBob3ZlcjpiZy1ibHVlLTUwIGZvY3VzOnJpbmctYmx1ZS01MDAnLFxuICAgIHByaW1hcnk6ICdiZy1ibHVlLTYwMCB0ZXh0LXdoaXRlIGhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOnJpbmctYmx1ZS01MDAnLFxuICAgIHNlY29uZGFyeTogJ2JnLWdyYXktNjAwIHRleHQtd2hpdGUgaG92ZXI6YmctZ3JheS03MDAgZm9jdXM6cmluZy1ncmF5LTUwMCdcbiAgfTtcblxuICBjb25zdCBzaXplQ2xhc3NlcyA9IHtcbiAgICBsZzogJ3B4LTYgcHktMyB0ZXh0LWxnJyxcbiAgICBtZDogJ3B4LTQgcHktMiB0ZXh0LWJhc2UnLFxuICAgIHNtOiAncHgtMyBweS0xLjUgdGV4dC1zbSdcbiAgfTtcblxuICBjb25zdCBkaXNhYmxlZENsYXNzZXMgPSBkaXNhYmxlZCA/ICdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCcgOiAnY3Vyc29yLXBvaW50ZXInO1xuXG4gIGNvbnN0IGNsYXNzZXMgPSBgJHtiYXNlQ2xhc3Nlc30gJHt2YXJpYW50Q2xhc3Nlc1t2YXJpYW50XX0gJHtzaXplQ2xhc3Nlc1tzaXplXX0gJHtkaXNhYmxlZENsYXNzZXN9YDtcblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlc31cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgQnV0dG9uPiA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29udHJvbDoge3R5cGU6ICdib29sZWFuJ31cbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIGNvbnRyb2w6IHt0eXBlOiAnc2VsZWN0J30sXG4gICAgICBvcHRpb25zOiBbJ3NtJywgJ21kJywgJ2xnJ11cbiAgICB9LFxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIGNvbnRyb2w6IHt0eXBlOiAnc2VsZWN0J30sXG4gICAgICBvcHRpb25zOiBbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ291dGxpbmUnXVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBCdXR0b24sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBsYXlvdXQ6ICdjZW50ZXJlZCdcbiAgfSxcbiAgdGFnczogWydhdXRvZG9jcyddLFxuICB0aXRsZTogJ0NvbXBvbmVudHMvQnV0dG9uJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWV0YTtcbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgbWV0YT47XG5cbmV4cG9ydCBjb25zdCBQcmltYXJ5OiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIGNoaWxkcmVuOiAnUHJpbWFyeSBCdXR0b24nLFxuICAgIHZhcmlhbnQ6ICdwcmltYXJ5J1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgU2Vjb25kYXJ5OiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIGNoaWxkcmVuOiAnU2Vjb25kYXJ5IEJ1dHRvbicsXG4gICAgdmFyaWFudDogJ3NlY29uZGFyeSdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE91dGxpbmU6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY2hpbGRyZW46ICdPdXRsaW5lIEJ1dHRvbicsXG4gICAgdmFyaWFudDogJ291dGxpbmUnXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBTbWFsbDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjaGlsZHJlbjogJ1NtYWxsIEJ1dHRvbicsXG4gICAgc2l6ZTogJ3NtJ1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGFyZ2U6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY2hpbGRyZW46ICdMYXJnZSBCdXR0b24nLFxuICAgIHNpemU6ICdsZydcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERpc2FibGVkOiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIGNoaWxkcmVuOiAnRGlzYWJsZWQgQnV0dG9uJyxcbiAgICBkaXNhYmxlZDogdHJ1ZVxuICB9XG59OyJdLCJuYW1lcyI6WyJSZWFjdCIsIkJ1dHRvbiIsImNoaWxkcmVuIiwiZGlzYWJsZWQiLCJvbkNsaWNrIiwic2l6ZSIsInZhcmlhbnQiLCJiYXNlQ2xhc3NlcyIsInZhcmlhbnRDbGFzc2VzIiwib3V0bGluZSIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJzaXplQ2xhc3NlcyIsImxnIiwibWQiLCJzbSIsImRpc2FibGVkQ2xhc3NlcyIsImNsYXNzZXMiLCJidXR0b24iLCJjbGFzc05hbWUiLCJtZXRhIiwiYXJnVHlwZXMiLCJjb250cm9sIiwidHlwZSIsIm9wdGlvbnMiLCJjb21wb25lbnQiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwidGFncyIsInRpdGxlIiwiUHJpbWFyeSIsImFyZ3MiLCJTZWNvbmRhcnkiLCJPdXRsaW5lIiwiU21hbGwiLCJMYXJnZSIsIkRpc2FibGVkIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsV0FBVyxRQUFRO0FBWTFCLE1BQU1DLFNBQWdDLENBQUMsRUFDckNDLFFBQVEsRUFDUkMsV0FBVyxLQUFLLEVBQ2hCQyxPQUFPLEVBQ1BDLE9BQU8sSUFBSSxFQUNYQyxVQUFVLFNBQVMsRUFDcEI7SUFDQyxNQUFNQyxjQUFjO0lBRXBCLE1BQU1DLGlCQUFpQjtRQUNyQkMsU0FBUztRQUNUQyxTQUFTO1FBQ1RDLFdBQVc7SUFDYjtJQUVBLE1BQU1DLGNBQWM7UUFDbEJDLElBQUk7UUFDSkMsSUFBSTtRQUNKQyxJQUFJO0lBQ047SUFFQSxNQUFNQyxrQkFBa0JiLFdBQVcsa0NBQWtDO0lBRXJFLE1BQU1jLFVBQVUsR0FBR1YsWUFBWSxDQUFDLEVBQUVDLGNBQWMsQ0FBQ0YsUUFBUSxDQUFDLENBQUMsRUFBRU0sV0FBVyxDQUFDUCxLQUFLLENBQUMsQ0FBQyxFQUFFVyxpQkFBaUI7SUFFbkcscUJBQ0UsS0FBQ0U7UUFDQ0MsV0FBV0Y7UUFDWGQsVUFBVUE7UUFDVkMsU0FBU0E7a0JBRVJGOztBQUdQO0FBRUEsTUFBTWtCLE9BQTRCO0lBQ2hDQyxVQUFVO1FBQ1JsQixVQUFVO1lBQ1JtQixTQUFTO2dCQUFDQyxNQUFNO1lBQVM7UUFDM0I7UUFDQWxCLE1BQU07WUFDSmlCLFNBQVM7Z0JBQUNDLE1BQU07WUFBUTtZQUN4QkMsU0FBUztnQkFBQztnQkFBTTtnQkFBTTthQUFLO1FBQzdCO1FBQ0FsQixTQUFTO1lBQ1BnQixTQUFTO2dCQUFDQyxNQUFNO1lBQVE7WUFDeEJDLFNBQVM7Z0JBQUM7Z0JBQVc7Z0JBQWE7YUFBVTtRQUM5QztJQUNGO0lBQ0FDLFdBQVd4QjtJQUNYeUIsWUFBWTtRQUNWQyxRQUFRO0lBQ1Y7SUFDQUMsTUFBTTtRQUFDO0tBQVc7SUFDbEJDLE9BQU87QUFDVDtBQUVBLGVBQWVULEtBQUs7QUFHcEIsT0FBTyxNQUFNVSxVQUFpQjtJQUM1QkMsTUFBTTtRQUNKN0IsVUFBVTtRQUNWSSxTQUFTO0lBQ1g7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNMEIsWUFBbUI7SUFDOUJELE1BQU07UUFDSjdCLFVBQVU7UUFDVkksU0FBUztJQUNYO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTTJCLFVBQWlCO0lBQzVCRixNQUFNO1FBQ0o3QixVQUFVO1FBQ1ZJLFNBQVM7SUFDWDtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU00QixRQUFlO0lBQzFCSCxNQUFNO1FBQ0o3QixVQUFVO1FBQ1ZHLE1BQU07SUFDUjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU04QixRQUFlO0lBQzFCSixNQUFNO1FBQ0o3QixVQUFVO1FBQ1ZHLE1BQU07SUFDUjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU0rQixXQUFrQjtJQUM3QkwsTUFBTTtRQUNKN0IsVUFBVTtRQUNWQyxVQUFVO0lBQ1o7QUFDRixFQUFFIn0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CdXR0b24uc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAc3Rvcnlib29rL3JlYWN0JztcblxuaW50ZXJmYWNlIEJ1dHRvblByb3BzIHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKCk9PiB2b2lkO1xuICBzaXplPzogJ2xnJyB8ICdtZCcgfCAnc20nO1xuICB2YXJpYW50PzogJ291dGxpbmUnIHwgJ3ByaW1hcnknIHwgJ3NlY29uZGFyeSc7XG59XG5cbmNvbnN0IEJ1dHRvbjogUmVhY3QuRkM8QnV0dG9uUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIG9uQ2xpY2ssXG4gIHNpemUgPSAnbWQnLFxuICB2YXJpYW50ID0gJ3ByaW1hcnknXG59KSA9PiB7XG4gIGNvbnN0IGJhc2VDbGFzc2VzID0gJ2ZvbnQtbWVkaXVtIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1vZmZzZXQtMic7XG5cbiAgY29uc3QgdmFyaWFudENsYXNzZXMgPSB7XG4gICAgb3V0bGluZTogJ2JvcmRlci0yIGJvcmRlci1ibHVlLTYwMCB0ZXh0LWJsdWUtNjAwIGhvdmVyOmJnLWJsdWUtNTAgZm9jdXM6cmluZy1ibHVlLTUwMCcsXG4gICAgcHJpbWFyeTogJ2JnLWJsdWUtNjAwIHRleHQtd2hpdGUgaG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6cmluZy1ibHVlLTUwMCcsXG4gICAgc2Vjb25kYXJ5OiAnYmctZ3JheS02MDAgdGV4dC13aGl0ZSBob3ZlcjpiZy1ncmF5LTcwMCBmb2N1czpyaW5nLWdyYXktNTAwJ1xuICB9O1xuXG4gIGNvbnN0IHNpemVDbGFzc2VzID0ge1xuICAgIGxnOiAncHgtNiBweS0zIHRleHQtbGcnLFxuICAgIG1kOiAncHgtNCBweS0yIHRleHQtYmFzZScsXG4gICAgc206ICdweC0zIHB5LTEuNSB0ZXh0LXNtJ1xuICB9O1xuXG4gIGNvbnN0IGRpc2FibGVkQ2xhc3NlcyA9IGRpc2FibGVkID8gJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJyA6ICdjdXJzb3ItcG9pbnRlcic7XG5cbiAgY29uc3QgY2xhc3NlcyA9IGAke2Jhc2VDbGFzc2VzfSAke3ZhcmlhbnRDbGFzc2VzW3ZhcmlhbnRdfSAke3NpemVDbGFzc2VzW3NpemVdfSAke2Rpc2FibGVkQ2xhc3Nlc31gO1xuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9idXR0b24+XG4gICk7XG59O1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBCdXR0b24+ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGRpc2FibGVkOiB7XG4gICAgICBjb250cm9sOiB7dHlwZTogJ2Jvb2xlYW4nfVxuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgY29udHJvbDoge3R5cGU6ICdzZWxlY3QnfSxcbiAgICAgIG9wdGlvbnM6IFsnc20nLCAnbWQnLCAnbGcnXVxuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgY29udHJvbDoge3R5cGU6ICdzZWxlY3QnfSxcbiAgICAgIG9wdGlvbnM6IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAnb3V0bGluZSddXG4gICAgfVxuICB9LFxuICBjb21wb25lbnQ6IEJ1dHRvbixcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2NlbnRlcmVkJ1xuICB9LFxuICB0YWdzOiBbJ2F1dG9kb2NzJ10sXG4gIHRpdGxlOiAnQ29tcG9uZW50cy9CdXR0b24nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xudHlwZSBTdG9yeSA9IFN0b3J5T2JqPHR5cGVvZiBtZXRhPjtcblxuZXhwb3J0IGNvbnN0IFByaW1hcnk6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY2hpbGRyZW46ICdQcmltYXJ5IEJ1dHRvbicsXG4gICAgdmFyaWFudDogJ3ByaW1hcnknXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBTZWNvbmRhcnk6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY2hpbGRyZW46ICdTZWNvbmRhcnkgQnV0dG9uJyxcbiAgICB2YXJpYW50OiAnc2Vjb25kYXJ5J1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgT3V0bGluZTogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjaGlsZHJlbjogJ091dGxpbmUgQnV0dG9uJyxcbiAgICB2YXJpYW50OiAnb3V0bGluZSdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFNtYWxsOiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIGNoaWxkcmVuOiAnU21hbGwgQnV0dG9uJyxcbiAgICBzaXplOiAnc20nXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMYXJnZTogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjaGlsZHJlbjogJ0xhcmdlIEJ1dHRvbicsXG4gICAgc2l6ZTogJ2xnJ1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGlzYWJsZWQ6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY2hpbGRyZW46ICdEaXNhYmxlZCBCdXR0b24nLFxuICAgIGRpc2FibGVkOiB0cnVlXG4gIH1cbn07Il0sIm5hbWVzIjpbIlJlYWN0IiwiQnV0dG9uIiwiY2hpbGRyZW4iLCJkaXNhYmxlZCIsIm9uQ2xpY2siLCJzaXplIiwidmFyaWFudCIsImJhc2VDbGFzc2VzIiwidmFyaWFudENsYXNzZXMiLCJvdXRsaW5lIiwicHJpbWFyeSIsInNlY29uZGFyeSIsInNpemVDbGFzc2VzIiwibGciLCJtZCIsInNtIiwiZGlzYWJsZWRDbGFzc2VzIiwiY2xhc3NlcyIsImJ1dHRvbiIsImNsYXNzTmFtZSIsIm1ldGEiLCJhcmdUeXBlcyIsImNvbnRyb2wiLCJ0eXBlIiwib3B0aW9ucyIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJ0YWdzIiwidGl0bGUiLCJQcmltYXJ5IiwiYXJncyIsIlNlY29uZGFyeSIsIk91dGxpbmUiLCJTbWFsbCIsIkxhcmdlIiwiRGlzYWJsZWQiXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFZMUIsTUFBTUMsU0FBZ0MsQ0FBQyxFQUNyQ0MsUUFBUSxFQUNSQyxXQUFXLEtBQUssRUFDaEJDLE9BQU8sRUFDUEMsT0FBTyxJQUFJLEVBQ1hDLFVBQVUsU0FBUyxFQUNwQjtJQUNDLE1BQU1DLGNBQWM7SUFFcEIsTUFBTUMsaUJBQWlCO1FBQ3JCQyxTQUFTO1FBQ1RDLFNBQVM7UUFDVEMsV0FBVztJQUNiO0lBRUEsTUFBTUMsY0FBYztRQUNsQkMsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLElBQUk7SUFDTjtJQUVBLE1BQU1DLGtCQUFrQmIsV0FBVyxrQ0FBa0M7SUFFckUsTUFBTWMsVUFBVSxHQUFHVixZQUFZLENBQUMsRUFBRUMsY0FBYyxDQUFDRixRQUFRLENBQUMsQ0FBQyxFQUFFTSxXQUFXLENBQUNQLEtBQUssQ0FBQyxDQUFDLEVBQUVXLGlCQUFpQjtJQUVuRyxxQkFDRSxLQUFDRTtRQUNDQyxXQUFXRjtRQUNYZCxVQUFVQTtRQUNWQyxTQUFTQTtrQkFFUkY7O0FBR1A7QUFFQSxNQUFNa0IsT0FBNEI7SUFDaENDLFVBQVU7UUFDUmxCLFVBQVU7WUFDUm1CLFNBQVM7Z0JBQUNDLE1BQU07WUFBUztRQUMzQjtRQUNBbEIsTUFBTTtZQUNKaUIsU0FBUztnQkFBQ0MsTUFBTTtZQUFRO1lBQ3hCQyxTQUFTO2dCQUFDO2dCQUFNO2dCQUFNO2FBQUs7UUFDN0I7UUFDQWxCLFNBQVM7WUFDUGdCLFNBQVM7Z0JBQUNDLE1BQU07WUFBUTtZQUN4QkMsU0FBUztnQkFBQztnQkFBVztnQkFBYTthQUFVO1FBQzlDO0lBQ0Y7SUFDQUMsV0FBV3hCO0lBQ1h5QixZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxNQUFNO1FBQUM7S0FBVztJQUNsQkMsT0FBTztBQUNUO0FBRUEsZUFBZVQsS0FBSztBQUdwQixPQUFPLE1BQU1VLFVBQWlCO0lBQzVCQyxNQUFNO1FBQ0o3QixVQUFVO1FBQ1ZJLFNBQVM7SUFDWDtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU0wQixZQUFtQjtJQUM5QkQsTUFBTTtRQUNKN0IsVUFBVTtRQUNWSSxTQUFTO0lBQ1g7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNMkIsVUFBaUI7SUFDNUJGLE1BQU07UUFDSjdCLFVBQVU7UUFDVkksU0FBUztJQUNYO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTTRCLFFBQWU7SUFDMUJILE1BQU07UUFDSjdCLFVBQVU7UUFDVkcsTUFBTTtJQUNSO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTThCLFFBQWU7SUFDMUJKLE1BQU07UUFDSjdCLFVBQVU7UUFDVkcsTUFBTTtJQUNSO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTStCLFdBQWtCO0lBQzdCTCxNQUFNO1FBQ0o3QixVQUFVO1FBQ1ZDLFVBQVU7SUFDWjtBQUNGLEVBQUUifQ==
@@ -124,7 +124,7 @@ export declare class LexConfig {
124
124
  static addConfigParams(cmd: any, params: LexConfigType): void;
125
125
  static parseConfig(cmd: any, isRoot?: boolean): Promise<void>;
126
126
  static checkTypescriptConfig(): void;
127
- static checkCompileTypescriptConfig(): void;
127
+ static getTypeScriptDeclarationFlags(): string[];
128
128
  static checkLintTypescriptConfig(): void;
129
129
  static checkTestTypescriptConfig(): void;
130
130
  }
package/lib/LexConfig.js CHANGED
@@ -15,7 +15,7 @@ function _define_property(obj, key, value) {
15
15
  * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
16
16
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
17
17
  */ import { existsSync, readFileSync, writeFileSync } from 'fs';
18
- import { dirname, extname as pathExtname, resolve as pathResolve } from 'path';
18
+ import { dirname, extname as pathExtname, relative as pathRelative, resolve as pathResolve } from 'path';
19
19
  import { URL } from 'url';
20
20
  import { getDirName, getLexPackageJsonPath, relativeFilePath } from './utils/file.js';
21
21
  import { log } from './utils/log.js';
@@ -42,6 +42,8 @@ export const defaultConfigValues = {
42
42
  sourceFullPath: pathResolve(cwd, './src'),
43
43
  sourcePath: './src',
44
44
  swc: {
45
+ inlineSourcesContent: true,
46
+ isModule: true,
45
47
  jsc: {
46
48
  externalHelpers: false,
47
49
  keepClassNames: false,
@@ -59,6 +61,7 @@ export const defaultConfigValues = {
59
61
  }
60
62
  }
61
63
  },
64
+ minify: false,
62
65
  module: {
63
66
  lazy: false,
64
67
  noInterop: false,
@@ -66,9 +69,6 @@ export const defaultConfigValues = {
66
69
  strictMode: true,
67
70
  type: 'es6'
68
71
  },
69
- inlineSourcesContent: true,
70
- isModule: true,
71
- minify: false,
72
72
  sourceMaps: 'inline'
73
73
  },
74
74
  targetEnvironment: 'web',
@@ -153,13 +153,18 @@ export class LexConfig {
153
153
  static addConfigParams(cmd, params) {
154
154
  const nameProperty = '_name';
155
155
  const { environment, outputPath, sourcePath, typescript } = cmd;
156
+ const currentCwd = process.cwd();
156
157
  if (outputPath !== undefined) {
157
158
  params.outputPath = outputPath;
158
- params.outputFullPath = pathResolve(cwd, outputPath);
159
+ params.outputFullPath = pathResolve(currentCwd, outputPath);
160
+ } else if (params.outputPath && !params.outputFullPath) {
161
+ params.outputFullPath = pathResolve(currentCwd, params.outputPath);
159
162
  }
160
163
  if (sourcePath !== undefined) {
161
164
  params.sourcePath = sourcePath;
162
- params.sourceFullPath = pathResolve(cwd, sourcePath);
165
+ params.sourceFullPath = pathResolve(currentCwd, sourcePath);
166
+ } else if (params.sourcePath && !params.sourceFullPath) {
167
+ params.sourceFullPath = pathResolve(currentCwd, params.sourcePath);
163
168
  }
164
169
  if (typescript !== undefined) {
165
170
  params.useTypescript = true;
@@ -271,15 +276,37 @@ export class LexConfig {
271
276
  writeFileSync(tsconfigPath, readFileSync(pathResolve(dirName, '../../../tsconfig.base.json')));
272
277
  }
273
278
  }
274
- static checkCompileTypescriptConfig() {
275
- const lexDir = LexConfig.getLexDir();
276
- const tsconfigCompilePath = pathResolve(lexDir, './tsconfig.build.json');
277
- if (!existsSync(tsconfigCompilePath)) {
278
- const templatePath = pathResolve(lexDir, 'tsconfig.build.json');
279
- if (existsSync(templatePath)) {
280
- writeFileSync(tsconfigCompilePath, readFileSync(templatePath));
281
- }
282
- }
279
+ static getTypeScriptDeclarationFlags() {
280
+ const cwd = process.cwd();
281
+ const outputPath = LexConfig.config.outputPath || './lib';
282
+ const outputFullPath = LexConfig.config.outputFullPath || pathResolve(cwd, outputPath);
283
+ const sourcePath = LexConfig.config.sourcePath || './src';
284
+ const sourceFullPath = LexConfig.config.sourceFullPath || pathResolve(cwd, sourcePath);
285
+ const relativeOutDir = pathRelative(cwd, outputFullPath) || './lib';
286
+ const relativeRootDir = pathRelative(cwd, sourceFullPath) || './src';
287
+ return [
288
+ '--emitDeclarationOnly',
289
+ '--declaration',
290
+ '--declarationMap',
291
+ '--outDir',
292
+ relativeOutDir,
293
+ '--rootDir',
294
+ relativeRootDir,
295
+ '--skipLibCheck',
296
+ '--esModuleInterop',
297
+ '--allowSyntheticDefaultImports',
298
+ '--module',
299
+ 'NodeNext',
300
+ '--moduleResolution',
301
+ 'NodeNext',
302
+ '--target',
303
+ 'ESNext',
304
+ '--jsx',
305
+ 'react-jsx',
306
+ '--isolatedModules',
307
+ '--resolveJsonModule',
308
+ '--allowJs'
309
+ ];
283
310
  }
284
311
  static checkLintTypescriptConfig() {
285
312
  const lexDir = LexConfig.getLexDir();
@@ -306,4 +333,4 @@ _define_property(LexConfig, "config", {
306
333
  ...defaultConfigValues
307
334
  });
308
335
 
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9MZXhDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2Rpcm5hbWUsIGV4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7Z2V0RGlyTmFtZSwgZ2V0TGV4UGFja2FnZUpzb25QYXRoLCByZWxhdGl2ZUZpbGVQYXRofSBmcm9tICcuL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4vdXRpbHMvbG9nLmpzJztcblxuaW1wb3J0IHR5cGUge0xpbnRlcn0gZnJvbSAnZXNsaW50JztcblxuY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSmVzdENvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIHJvb3RzPzogc3RyaW5nW107XG4gIHRlc3RFbnZpcm9ubWVudD86IHN0cmluZztcbiAgdHJhbnNmb3JtPzogUmVjb3JkPHN0cmluZywgW3N0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5dPjtcbiAgdHJhbnNmb3JtSWdub3JlUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgbW9kdWxlTmFtZU1hcHBlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGV4dGVuc2lvbnNUb1RyZWF0QXNFc20/OiBzdHJpbmdbXTtcbiAgcHJlc2V0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYnBhY2tDb25maWcge1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICBlbnRyeT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBvdXRwdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbW9kdWxlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBsdWdpbnM/OiB1bmtub3duW107XG4gIHN0YXRpY1BhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQUlDb25maWcge1xuICBwcm92aWRlcj86ICdjdXJzb3InIHwgJ2NvcGlsb3QnIHwgJ29wZW5haScgfCAnYW50aHJvcGljJyB8ICdub25lJztcbiAgYXBpS2V5Pzogc3RyaW5nO1xuICBtb2RlbD86IHN0cmluZztcbiAgbWF4VG9rZW5zPzogbnVtYmVyO1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFU0xpbnRDb25maWcge1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICBleHRlbmRzPzogc3RyaW5nW107XG4gIHJ1bGVzPzogTGludGVyLlJ1bGVzUmVjb3JkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNXQ0NvbmZpZyB7XG4gIGpzYz86IHtcbiAgICBwYXJzZXI/OiB7XG4gICAgICBzeW50YXg/OiAndHlwZXNjcmlwdCcgfCAnZWNtYXNjcmlwdCc7XG4gICAgICB0c3g/OiBib29sZWFuO1xuICAgICAgZGVjb3JhdG9ycz86IGJvb2xlYW47XG4gICAgICBkeW5hbWljSW1wb3J0PzogYm9vbGVhbjtcbiAgICB9O1xuICAgIHRhcmdldD86ICdlczMnIHwgJ2VzNScgfCAnZXMyMDE1JyB8ICdlczIwMTYnIHwgJ2VzMjAxNycgfCAnZXMyMDE4JyB8ICdlczIwMTknIHwgJ2VzMjAyMCcgfCAnZXMyMDIxJyB8ICdlczIwMjInIHwgJ2VzMjAyMyc7XG4gICAgdHJhbnNmb3JtPzoge1xuICAgICAgcmVhY3Q/OiB7XG4gICAgICAgIHJ1bnRpbWU/OiAnYXV0b21hdGljJyB8ICdjbGFzc2ljJztcbiAgICAgICAgcHJhZ21hPzogc3RyaW5nO1xuICAgICAgICBwcmFnbWFGcmFnPzogc3RyaW5nO1xuICAgICAgICB0aHJvd0lmTmFtZXNwYWNlPzogYm9vbGVhbjtcbiAgICAgICAgZGV2ZWxvcG1lbnQ/OiBib29sZWFuO1xuICAgICAgICB1c2VCdWlsdGlucz86IGJvb2xlYW47XG4gICAgICAgIHJlZnJlc2g/OiBib29sZWFuO1xuICAgICAgfTtcbiAgICB9O1xuICAgIGV4dGVybmFsSGVscGVycz86IGJvb2xlYW47XG4gICAga2VlcENsYXNzTmFtZXM/OiBib29sZWFuO1xuICAgIGxvb3NlPzogYm9vbGVhbjtcbiAgICBtaW5pZnk/OiB7XG4gICAgICBjb21wcmVzcz86IGJvb2xlYW47XG4gICAgICBtYW5nbGU/OiBib29sZWFuO1xuICAgIH07XG4gIH07XG4gIG1vZHVsZT86IHtcbiAgICB0eXBlPzogJ2VzNicgfCAnY29tbW9uanMnIHwgJ2FtZCcgfCAndW1kJyB8ICdzeXN0ZW1qcyc7XG4gICAgc3RyaWN0PzogYm9vbGVhbjtcbiAgICBzdHJpY3RNb2RlPzogYm9vbGVhbjtcbiAgICBsYXp5PzogYm9vbGVhbjtcbiAgICBub0ludGVyb3A/OiBib29sZWFuO1xuICB9O1xuICBtaW5pZnk/OiBib29sZWFuO1xuICBzb3VyY2VNYXBzPzogYm9vbGVhbiB8ICdpbmxpbmUnO1xuICBpbmxpbmVTb3VyY2VzQ29udGVudD86IGJvb2xlYW47XG4gIGlzTW9kdWxlPzogYm9vbGVhbjtcbiAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIGNvbmZpZ0ZpbGU/OiBzdHJpbmc7XG4gIHN3Y3JjPzogYm9vbGVhbjtcbiAgZW52Pzoge1xuICAgIHRhcmdldHM/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgbW9kZT86ICd1c2FnZScgfCAnZW50cnknO1xuICAgIGNvcmVKcz86IHN0cmluZztcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBkeW5hbWljSW1wb3J0PzogYm9vbGVhbjtcbiAgICBsb29zZT86IGJvb2xlYW47XG4gICAgYnVnZml4ZXM/OiBib29sZWFuO1xuICAgIGluY2x1ZGU/OiBzdHJpbmdbXTtcbiAgICBleGNsdWRlPzogc3RyaW5nW107XG4gICAgZm9yY2VBbGxUcmFuc2Zvcm1zPzogYm9vbGVhbjtcbiAgICBtb2R1bGVzPzogJ2FtZCcgfCAndW1kJyB8ICdzeXN0ZW1qcycgfCAnYXV0bycgfCBmYWxzZTtcbiAgICBzaGlwcGVkUHJvcG9zYWxzPzogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXhDb25maWdUeXBlIHtcbiAgYWk/OiBBSUNvbmZpZztcbiAgY29uZmlnRmlsZXM/OiBzdHJpbmdbXTtcbiAgY29weUZpbGVzPzogc3RyaW5nW107XG4gIGVudHJ5SFRNTD86IHN0cmluZztcbiAgZW50cnlKcz86IHN0cmluZztcbiAgZW52Pzogb2JqZWN0O1xuICBlc2xpbnQ/OiBFU0xpbnRDb25maWc7XG4gIGdpdFVybD86IHN0cmluZztcbiAgamVzdD86IEplc3RDb25maWc7XG4gIGxpYnJhcnlOYW1lPzogc3RyaW5nO1xuICBsaWJyYXJ5VGFyZ2V0Pzogc3RyaW5nO1xuICBvdXRwdXRGaWxlPzogc3RyaW5nO1xuICBvdXRwdXRGdWxsUGF0aD86IHN0cmluZztcbiAgb3V0cHV0SGFzaD86IGJvb2xlYW47XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIHBhY2thZ2VNYW5hZ2VyPzogJ25wbScgfCAneWFybic7XG4gIHByZXNldD86ICd3ZWInIHwgJ25vZGUnIHwgJ2xhbWJkYScgfCAnbW9iaWxlJztcbiAgc291cmNlRnVsbFBhdGg/OiBzdHJpbmc7XG4gIHNvdXJjZVBhdGg/OiBzdHJpbmc7XG4gIHN3Yz86IFNXQ0NvbmZpZztcbiAgdGFyZ2V0RW52aXJvbm1lbnQ/OiAnbm9kZScgfCAnd2ViJztcbiAgdXNlR3JhcGhRbD86IGJvb2xlYW47XG4gIHVzZVR5cGVzY3JpcHQ/OiBib29sZWFuO1xuICB3ZWJwYWNrPzogV2VicGFja0NvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnID0gTGV4Q29uZmlnVHlwZTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25maWdWYWx1ZXM6IExleENvbmZpZ1R5cGUgPSB7XG4gIGFpOiB7XG4gICAgbWF4VG9rZW5zOiA0MDAwLFxuICAgIG1vZGVsOiAnZ3B0LTRvJyxcbiAgICBwcm92aWRlcjogJ25vbmUnLFxuICAgIHRlbXBlcmF0dXJlOiAwLjFcbiAgfSxcbiAgY29uZmlnRmlsZXM6IFtdLFxuICBjb3B5RmlsZXM6IFtdLFxuICBlbnRyeUhUTUw6ICdpbmRleC5odG1sJyxcbiAgZW50cnlKczogJ2luZGV4LmpzJyxcbiAgZW52OiBudWxsLFxuICBlc2xpbnQ6IHt9LFxuICBqZXN0OiB7fSxcbiAgb3V0cHV0RnVsbFBhdGg6IHBhdGhSZXNvbHZlKGN3ZCwgJy4vbGliJyksXG4gIG91dHB1dEhhc2g6IGZhbHNlLFxuICBvdXRwdXRQYXRoOiAnLi9saWInLFxuICBwYWNrYWdlTWFuYWdlcjogJ25wbScsXG4gIHByZXNldDogJ3dlYicsXG4gIHNvdXJjZUZ1bGxQYXRoOiBwYXRoUmVzb2x2ZShjd2QsICcuL3NyYycpLFxuICBzb3VyY2VQYXRoOiAnLi9zcmMnLFxuICBzd2M6IHtcbiAgICBqc2M6IHtcbiAgICAgIGV4dGVybmFsSGVscGVyczogZmFsc2UsXG4gICAgICBrZWVwQ2xhc3NOYW1lczogZmFsc2UsXG4gICAgICBsb29zZTogZmFsc2UsXG4gICAgICBwYXJzZXI6IHtcbiAgICAgICAgZGVjb3JhdG9yczogdHJ1ZSxcbiAgICAgICAgZHluYW1pY0ltcG9ydDogdHJ1ZSxcbiAgICAgICAgc3ludGF4OiAndHlwZXNjcmlwdCcsXG4gICAgICAgIHRzeDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHRhcmdldDogJ2VzMjAyMCcsXG4gICAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgcmVhY3Q6IHtcbiAgICAgICAgICBydW50aW1lOiAnYXV0b21hdGljJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBtb2R1bGU6IHtcbiAgICAgIGxhenk6IGZhbHNlLFxuICAgICAgbm9JbnRlcm9wOiBmYWxzZSxcbiAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgICBzdHJpY3RNb2RlOiB0cnVlLFxuICAgICAgdHlwZTogJ2VzNidcbiAgICB9LFxuICAgIGlubGluZVNvdXJjZXNDb250ZW50OiB0cnVlLFxuICAgIGlzTW9kdWxlOiB0cnVlLFxuICAgIG1pbmlmeTogZmFsc2UsXG4gICAgc291cmNlTWFwczogJ2lubGluZSdcbiAgfSxcbiAgdGFyZ2V0RW52aXJvbm1lbnQ6ICd3ZWInLFxuICB1c2VHcmFwaFFsOiBmYWxzZSxcbiAgdXNlVHlwZXNjcmlwdDogZmFsc2UsXG4gIHdlYnBhY2s6IHtcbiAgICBzdGF0aWNQYXRoOiAnLi9zcmMvc3RhdGljJ1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVNjcmlwdENvbmZpZ1BhdGggPSAoY29uZmlnTmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcblxuICBpZihjb25maWdOYW1lID09PSAndHNjb25maWcuYnVpbGQuanNvbicpIHtcbiAgICBjb25zdCBwcm9qZWN0QnVpbGRDb25maWcgPSBwYXRoUmVzb2x2ZShjd2QsICd0c2NvbmZpZy5idWlsZC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwcm9qZWN0QnVpbGRDb25maWcpKSB7XG4gICAgICByZXR1cm4gcHJvamVjdEJ1aWxkQ29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIGlmKGNvbmZpZ05hbWUgPT09ICd0c2NvbmZpZy5saW50Lmpzb24nKSB7XG4gICAgY29uc3QgcHJvamVjdExpbnRDb25maWcgPSBwYXRoUmVzb2x2ZShjd2QsICd0c2NvbmZpZy5lc2xpbnQuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmMocHJvamVjdExpbnRDb25maWcpKSB7XG4gICAgICByZXR1cm4gcHJvamVjdExpbnRDb25maWc7XG4gICAgfVxuICB9XG5cbiAgaWYoY29uZmlnTmFtZSA9PT0gJ3RzY29uZmlnLnRlc3QuanNvbicpIHtcbiAgICBjb25zdCBwcm9qZWN0VGVzdENvbmZpZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJ3RzY29uZmlnLnRlc3QuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmMocHJvamVjdFRlc3RDb25maWcpKSB7XG4gICAgICByZXR1cm4gcHJvamVjdFRlc3RDb25maWc7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwYXRoUmVzb2x2ZShjd2QsIGNvbmZpZ05hbWUpO1xuICBpZihleGlzdHNTeW5jKHByb2plY3RDb25maWdQYXRoKSkge1xuICAgIHJldHVybiBwcm9qZWN0Q29uZmlnUGF0aDtcbiAgfVxuXG4gIGNvbnN0IGxleERpciA9IExleENvbmZpZy5nZXRMZXhEaXIoKTtcbiAgcmV0dXJuIHBhdGhSZXNvbHZlKGxleERpciwgY29uZmlnTmFtZSk7XG59O1xuXG5leHBvcnQgY2xhc3MgTGV4Q29uZmlnIHtcbiAgc3RhdGljIGNvbmZpZzogTGV4Q29uZmlnVHlwZSA9IHtcbiAgICAuLi5kZWZhdWx0Q29uZmlnVmFsdWVzXG4gIH07XG5cbiAgc3RhdGljIHNldCB1c2VUeXBlc2NyaXB0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgTGV4Q29uZmlnLmNvbmZpZy51c2VUeXBlc2NyaXB0ID0gdmFsdWU7XG4gICAgY29uc3Qge3NvdXJjZUZ1bGxQYXRofSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgICBjb25zdCB7ZW50cnlKc30gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gICAgaWYoZW50cnlKcyA9PT0gJ2luZGV4LmpzJyAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgaW5kZXhQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsIHNvdXJjZUZ1bGxQYXRoLCAnaW5kZXgudHN4Jyk7XG4gICAgICBjb25zdCBoYXNJbmRleFRzeDogYm9vbGVhbiA9IGV4aXN0c1N5bmMoaW5kZXhQYXRoKTtcblxuICAgICAgaWYoaGFzSW5kZXhUc3gpIHtcbiAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy5lbnRyeUpzID0gJ2luZGV4LnRzeCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBMZXhDb25maWcuY29uZmlnLmVudHJ5SnMgPSAnaW5kZXgudHMnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRMZXhEaXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGlybmFtZShnZXRMZXhQYWNrYWdlSnNvblBhdGgoKSk7XG4gIH1cblxuICBzdGF0aWMgdXBkYXRlQ29uZmlnKHVwZGF0ZWRDb25maWc6IExleENvbmZpZ1R5cGUpOiBMZXhDb25maWdUeXBlIHtcbiAgICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIG91dHB1dFBhdGgsIHNvdXJjZVBhdGgsIHNvdXJjZUZ1bGxQYXRoLCB1c2VUeXBlc2NyaXB0LCBhaX0gPSB1cGRhdGVkQ29uZmlnO1xuICAgIGNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcblxuICAgIGlmKHVzZVR5cGVzY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgTGV4Q29uZmlnLnVzZVR5cGVzY3JpcHQgPSB1c2VUeXBlc2NyaXB0O1xuICAgIH1cblxuICAgIGlmKG91dHB1dFBhdGggIT09IHVuZGVmaW5lZCAmJiBvdXRwdXRGdWxsUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGVkQ29uZmlnLm91dHB1dEZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBvdXRwdXRQYXRoKTtcbiAgICB9XG5cbiAgICBpZihzb3VyY2VQYXRoICE9PSB1bmRlZmluZWQgJiYgc291cmNlRnVsbFBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlZENvbmZpZy5zb3VyY2VGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlUGF0aCk7XG4gICAgfVxuXG4gICAgaWYoYWkpIHtcbiAgICAgIExleENvbmZpZy5jb25maWcuYWkgPSB7Li4uTGV4Q29uZmlnLmNvbmZpZy5haSwgLi4uYWl9O1xuXG4gICAgICBpZihwcm9jZXNzLmVudi5DVVJTT1JfSURFID09PSAndHJ1ZScgJiYgTGV4Q29uZmlnLmNvbmZpZy5haS5wcm92aWRlciA9PT0gJ25vbmUnKSB7XG4gICAgICAgIExleENvbmZpZy5jb25maWcuYWkucHJvdmlkZXIgPSAnY3Vyc29yJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBMZXhDb25maWcuY29uZmlnID0gey4uLkxleENvbmZpZy5jb25maWcsIC4uLnVwZGF0ZWRDb25maWd9O1xuXG4gICAgcmV0dXJuIExleENvbmZpZy5jb25maWc7XG4gIH1cblxuICBzdGF0aWMgYWRkQ29uZmlnUGFyYW1zKGNtZCwgcGFyYW1zOiBMZXhDb25maWdUeXBlKSB7XG4gICAgY29uc3QgbmFtZVByb3BlcnR5OiBzdHJpbmcgPSAnX25hbWUnO1xuICAgIGNvbnN0IHtlbnZpcm9ubWVudCwgb3V0cHV0UGF0aCwgc291cmNlUGF0aCwgdHlwZXNjcmlwdH0gPSBjbWQ7XG5cbiAgICBpZihvdXRwdXRQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5vdXRwdXRQYXRoID0gb3V0cHV0UGF0aDtcbiAgICAgIHBhcmFtcy5vdXRwdXRGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgb3V0cHV0UGF0aCk7XG4gICAgfVxuXG4gICAgaWYoc291cmNlUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMuc291cmNlUGF0aCA9IHNvdXJjZVBhdGg7XG4gICAgICBwYXJhbXMuc291cmNlRnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIHNvdXJjZVBhdGgpO1xuICAgIH1cblxuICAgIGlmKHR5cGVzY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnVzZVR5cGVzY3JpcHQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmKGVudmlyb25tZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy50YXJnZXRFbnZpcm9ubWVudCA9IGVudmlyb25tZW50ID09PSAnd2ViJyA/ICd3ZWInIDogJ25vZGUnO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZW52LkxFWF9DT05GSUcgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgLi4uTGV4Q29uZmlnLnVwZGF0ZUNvbmZpZyhwYXJhbXMpLFxuICAgICAgICBjb21tYW5kTmFtZTogY21kW25hbWVQcm9wZXJ0eV0sXG4gICAgICAgIGlzU3RhdGljOiBjbWQuc3RhdGljXG4gICAgICB9LCBudWxsLCAwXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwYXJzZUNvbmZpZyhjbWQsIGlzUm9vdDogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBsZXhDb25maWcsIGxleENvbmZpZ05hbWUsIHF1aWV0LCB0eXBlc2NyaXB0LCBkZWJ1ZyA9IGZhbHNlfSA9IGNtZDtcbiAgICBjb25zdCBjb25maWdGb3JtYXRzID0gWydqcycsICdtanMnLCAnY2pzJywgJ3RzJywgJ2pzb24nXTtcbiAgICBjb25zdCBjb25maWdCYXNlTmFtZTogc3RyaW5nID0gbGV4Q29uZmlnTmFtZSB8fCAnbGV4LmNvbmZpZyc7XG4gICAgbGV0IGNvbmZpZ1BhdGg6IHN0cmluZyA9IGxleENvbmZpZyB8fCAnJztcbiAgICBsZXQgY29uZmlnRXhpc3RzOiBib29sZWFuID0gbGV4Q29uZmlnID8gZXhpc3RzU3luYyhjb25maWdQYXRoKSA6IGZhbHNlO1xuXG4gICAgaWYoIWNvbmZpZ1BhdGggfHwgIWNvbmZpZ0V4aXN0cykge1xuICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgbG9nKGBTZWFyY2hpbmcgZm9yIGNvbmZpZyBmaWxlcyB3aXRoIGJhc2UgbmFtZTogJHtjb25maWdCYXNlTmFtZX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIH1cblxuICAgICAgZm9yKGNvbnN0IGZvcm1hdCBvZiBjb25maWdGb3JtYXRzKSB7XG4gICAgICAgIGNvbnN0IHBvdGVudGlhbFBhdGggPSBpc1Jvb3RcbiAgICAgICAgICA/IHBhdGhSZXNvbHZlKGN3ZCwgYC4vJHtjb25maWdCYXNlTmFtZX0uJHtmb3JtYXR9YClcbiAgICAgICAgICA6IHJlbGF0aXZlRmlsZVBhdGgoYCR7Y29uZmlnQmFzZU5hbWV9LiR7Zm9ybWF0fWAsIGN3ZCk7XG5cbiAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICBsb2coYENoZWNraW5nIGZvciBjb25maWcgZmlsZTogJHtwb3RlbnRpYWxQYXRofWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoZXhpc3RzU3luYyhwb3RlbnRpYWxQYXRoKSkge1xuICAgICAgICAgIGNvbmZpZ1BhdGggPSBwb3RlbnRpYWxQYXRoO1xuICAgICAgICAgIGNvbmZpZ0V4aXN0cyA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZihjb25maWdFeGlzdHMpIHtcbiAgICAgIGxvZyhgVXNpbmcgJHtjbGlOYW1lfSBjb25maWd1cmF0aW9uIGZpbGU6ICR7Y29uZmlnUGF0aH1gLCAnbm90ZScsIHF1aWV0KTtcbiAgICAgIGNvbnN0IGV4dDogc3RyaW5nID0gcGF0aEV4dG5hbWUoY29uZmlnUGF0aCk7XG5cbiAgICAgIGlmKGV4dCA9PT0gJy5qc29uJykge1xuICAgICAgICBjb25zdCBjb25maWdDb250ZW50OiBzdHJpbmcgPSByZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0ZjgnKTtcblxuICAgICAgICBpZihjb25maWdDb250ZW50KSB7XG4gICAgICAgICAgbGV0IGNvbmZpZ0pzb246IExleENvbmZpZ1R5cGU7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uZmlnSnNvbiA9IEpTT04ucGFyc2UoY29uZmlnQ29udGVudCk/LmRlZmF1bHQgfHwge307XG4gICAgICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gcGFyc2UgSlNPTiBjb25maWc6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgICBjb25maWdKc29uID0ge307XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgTGV4Q29uZmlnLmFkZENvbmZpZ1BhcmFtcyhjbWQsIGNvbmZpZ0pzb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ29uZmlnIGZpbGUgbWFsZm9ybWVkLCAke2NvbmZpZ1BhdGh9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoWycuanMnLCAnLm1qcycsICcuY2pzJywgJy50cyddLmluY2x1ZGVzKGV4dCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgbGV4Q3VzdG9tQ29uZmlnO1xuXG4gICAgICAgICAgaWYoZXh0ID09PSAnLmNqcycpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVVcmwgPSBuZXcgVVJMKGBmaWxlOi8vLyR7cGF0aFJlc29sdmUoY29uZmlnUGF0aCl9YCkuaHJlZjtcblxuICAgICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgICAgbG9nKGBMb2FkaW5nIENvbW1vbkpTIGNvbmZpZyBmcm9tOiAke2ZpbGVVcmx9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXhDdXN0b21Db25maWcgPSBhd2FpdCBpbXBvcnQoZmlsZVVybCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgICAgIGxvZyhgTG9hZGluZyBFU00vVFMgY29uZmlnIGZyb206ICR7Y29uZmlnUGF0aH1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV4Q3VzdG9tQ29uZmlnID0gYXdhaXQgaW1wb3J0KGNvbmZpZ1BhdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGxleEN1c3RvbUNvbmZpZy5kZWZhdWx0IHx8IGxleEN1c3RvbUNvbmZpZztcblxuICAgICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgICBsb2coYExvYWRlZCBjb25maWc6ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZighY29uZmlnKSB7XG4gICAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gV2FybmluZzogQ29uZmlnIGZpbGUgbG9hZGVkIGJ1dCBubyBjb25maWd1cmF0aW9uIGZvdW5kYCwgJ3dhcm4nLCBxdWlldCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgTGV4Q29uZmlnLmFkZENvbmZpZ1BhcmFtcyhjbWQsIGNvbmZpZyB8fCB7fSk7XG4gICAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENvbmZpZyBmaWxlIG11c3QgYmUgYSBKUywgQ0pTLCBNSlMsIFRTLCBvciBKU09OIGZpbGUuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coJ05vIGNvbmZpZyBmaWxlIGZvdW5kLiBVc2luZyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIExleENvbmZpZy51c2VUeXBlc2NyaXB0ID0gISF0eXBlc2NyaXB0O1xuICAgICAgTGV4Q29uZmlnLmFkZENvbmZpZ1BhcmFtcyhjbWQsIExleENvbmZpZy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjaGVja1R5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgdHNjb25maWdQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsICcuL3RzY29uZmlnLmpzb24nKTtcblxuICAgIGlmKCFleGlzdHNTeW5jKHRzY29uZmlnUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG4gICAgICB3cml0ZUZpbGVTeW5jKHRzY29uZmlnUGF0aCwgcmVhZEZpbGVTeW5jKHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLi90c2NvbmZpZy5iYXNlLmpzb24nKSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjaGVja0NvbXBpbGVUeXBlc2NyaXB0Q29uZmlnKCkge1xuICAgIGNvbnN0IGxleERpciA9IExleENvbmZpZy5nZXRMZXhEaXIoKTtcbiAgICBjb25zdCB0c2NvbmZpZ0NvbXBpbGVQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShsZXhEaXIsICcuL3RzY29uZmlnLmJ1aWxkLmpzb24nKTtcblxuICAgIGlmKCFleGlzdHNTeW5jKHRzY29uZmlnQ29tcGlsZVBhdGgpKSB7XG4gICAgICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsICd0c2NvbmZpZy5idWlsZC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ0NvbXBpbGVQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNoZWNrTGludFR5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgIGNvbnN0IHRzY29uZmlnTGludFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJy4vdHNjb25maWcubGludC5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ0xpbnRQYXRoKSkge1xuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCAndHNjb25maWcubGludC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ0xpbnRQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNoZWNrVGVzdFR5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgIGNvbnN0IHRzY29uZmlnVGVzdFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJy4vdHNjb25maWcudGVzdC5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ1Rlc3RQYXRoKSkge1xuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCAndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ1Rlc3RQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59Il0sIm5hbWVzIjpbImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwiZGlybmFtZSIsImV4dG5hbWUiLCJwYXRoRXh0bmFtZSIsInJlc29sdmUiLCJwYXRoUmVzb2x2ZSIsIlVSTCIsImdldERpck5hbWUiLCJnZXRMZXhQYWNrYWdlSnNvblBhdGgiLCJyZWxhdGl2ZUZpbGVQYXRoIiwibG9nIiwiY3dkIiwicHJvY2VzcyIsImRlZmF1bHRDb25maWdWYWx1ZXMiLCJhaSIsIm1heFRva2VucyIsIm1vZGVsIiwicHJvdmlkZXIiLCJ0ZW1wZXJhdHVyZSIsImNvbmZpZ0ZpbGVzIiwiY29weUZpbGVzIiwiZW50cnlIVE1MIiwiZW50cnlKcyIsImVudiIsImVzbGludCIsImplc3QiLCJvdXRwdXRGdWxsUGF0aCIsIm91dHB1dEhhc2giLCJvdXRwdXRQYXRoIiwicGFja2FnZU1hbmFnZXIiLCJwcmVzZXQiLCJzb3VyY2VGdWxsUGF0aCIsInNvdXJjZVBhdGgiLCJzd2MiLCJqc2MiLCJleHRlcm5hbEhlbHBlcnMiLCJrZWVwQ2xhc3NOYW1lcyIsImxvb3NlIiwicGFyc2VyIiwiZGVjb3JhdG9ycyIsImR5bmFtaWNJbXBvcnQiLCJzeW50YXgiLCJ0c3giLCJ0YXJnZXQiLCJ0cmFuc2Zvcm0iLCJyZWFjdCIsInJ1bnRpbWUiLCJtb2R1bGUiLCJsYXp5Iiwibm9JbnRlcm9wIiwic3RyaWN0Iiwic3RyaWN0TW9kZSIsInR5cGUiLCJpbmxpbmVTb3VyY2VzQ29udGVudCIsImlzTW9kdWxlIiwibWluaWZ5Iiwic291cmNlTWFwcyIsInRhcmdldEVudmlyb25tZW50IiwidXNlR3JhcGhRbCIsInVzZVR5cGVzY3JpcHQiLCJ3ZWJwYWNrIiwic3RhdGljUGF0aCIsImdldFR5cGVTY3JpcHRDb25maWdQYXRoIiwiY29uZmlnTmFtZSIsInByb2plY3RCdWlsZENvbmZpZyIsInByb2plY3RMaW50Q29uZmlnIiwicHJvamVjdFRlc3RDb25maWciLCJwcm9qZWN0Q29uZmlnUGF0aCIsImxleERpciIsIkxleENvbmZpZyIsImdldExleERpciIsInZhbHVlIiwiY29uZmlnIiwiaW5kZXhQYXRoIiwiaGFzSW5kZXhUc3giLCJ1cGRhdGVDb25maWciLCJ1cGRhdGVkQ29uZmlnIiwidW5kZWZpbmVkIiwiQ1VSU09SX0lERSIsImFkZENvbmZpZ1BhcmFtcyIsImNtZCIsInBhcmFtcyIsIm5hbWVQcm9wZXJ0eSIsImVudmlyb25tZW50IiwidHlwZXNjcmlwdCIsIkxFWF9DT05GSUciLCJKU09OIiwic3RyaW5naWZ5IiwiY29tbWFuZE5hbWUiLCJpc1N0YXRpYyIsInN0YXRpYyIsInBhcnNlQ29uZmlnIiwiaXNSb290IiwiY2xpTmFtZSIsImxleENvbmZpZyIsImxleENvbmZpZ05hbWUiLCJxdWlldCIsImRlYnVnIiwiY29uZmlnRm9ybWF0cyIsImNvbmZpZ0Jhc2VOYW1lIiwiY29uZmlnUGF0aCIsImNvbmZpZ0V4aXN0cyIsImZvcm1hdCIsInBvdGVudGlhbFBhdGgiLCJleHQiLCJjb25maWdDb250ZW50IiwiY29uZmlnSnNvbiIsInBhcnNlIiwiZGVmYXVsdCIsImVycm9yIiwibWVzc2FnZSIsImluY2x1ZGVzIiwibGV4Q3VzdG9tQ29uZmlnIiwiZmlsZVVybCIsImhyZWYiLCJjb25zb2xlIiwiY2hlY2tUeXBlc2NyaXB0Q29uZmlnIiwidHNjb25maWdQYXRoIiwiZGlyTmFtZSIsImNoZWNrQ29tcGlsZVR5cGVzY3JpcHRDb25maWciLCJ0c2NvbmZpZ0NvbXBpbGVQYXRoIiwidGVtcGxhdGVQYXRoIiwiY2hlY2tMaW50VHlwZXNjcmlwdENvbmZpZyIsInRzY29uZmlnTGludFBhdGgiLCJjaGVja1Rlc3RUeXBlc2NyaXB0Q29uZmlnIiwidHNjb25maWdUZXN0UGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLFFBQU8sS0FBSztBQUMzRCxTQUFRQyxPQUFPLEVBQUVDLFdBQVdDLFdBQVcsRUFBRUMsV0FBV0MsV0FBVyxRQUFPLE9BQU87QUFDN0UsU0FBUUMsR0FBRyxRQUFPLE1BQU07QUFFeEIs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
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9MZXhDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge1xuICBkaXJuYW1lLFxuICBleHRuYW1lIGFzIHBhdGhFeHRuYW1lLFxuICByZWxhdGl2ZSBhcyBwYXRoUmVsYXRpdmUsXG4gIHJlc29sdmUgYXMgcGF0aFJlc29sdmVcbn0gZnJvbSAncGF0aCc7XG5pbXBvcnQge1VSTH0gZnJvbSAndXJsJztcblxuaW1wb3J0IHtnZXREaXJOYW1lLCBnZXRMZXhQYWNrYWdlSnNvblBhdGgsIHJlbGF0aXZlRmlsZVBhdGh9IGZyb20gJy4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi91dGlscy9sb2cuanMnO1xuXG5pbXBvcnQgdHlwZSB7TGludGVyfSBmcm9tICdlc2xpbnQnO1xuXG5jb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cblxuZXhwb3J0IGludGVyZmFjZSBKZXN0Q29uZmlnIHtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgcm9vdHM/OiBzdHJpbmdbXTtcbiAgdGVzdEVudmlyb25tZW50Pzogc3RyaW5nO1xuICB0cmFuc2Zvcm0/OiBSZWNvcmQ8c3RyaW5nLCBbc3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPl0+O1xuICB0cmFuc2Zvcm1JZ25vcmVQYXR0ZXJucz86IHN0cmluZ1tdO1xuICBtb2R1bGVOYW1lTWFwcGVyPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgZXh0ZW5zaW9uc1RvVHJlYXRBc0VzbT86IHN0cmluZ1tdO1xuICBwcmVzZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2VicGFja0NvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIGVudHJ5Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIG91dHB1dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBtb2R1bGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcGx1Z2lucz86IHVua25vd25bXTtcbiAgc3RhdGljUGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBSUNvbmZpZyB7XG4gIHByb3ZpZGVyPzogJ2N1cnNvcicgfCAnY29waWxvdCcgfCAnb3BlbmFpJyB8ICdhbnRocm9waWMnIHwgJ25vbmUnO1xuICBhcGlLZXk/OiBzdHJpbmc7XG4gIG1vZGVsPzogc3RyaW5nO1xuICBtYXhUb2tlbnM/OiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVTTGludENvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIGV4dGVuZHM/OiBzdHJpbmdbXTtcbiAgcnVsZXM/OiBMaW50ZXIuUnVsZXNSZWNvcmQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1dDQ29uZmlnIHtcbiAganNjPzoge1xuICAgIHBhcnNlcj86IHtcbiAgICAgIHN5bnRheD86ICd0eXBlc2NyaXB0JyB8ICdlY21hc2NyaXB0JztcbiAgICAgIHRzeD86IGJvb2xlYW47XG4gICAgICBkZWNvcmF0b3JzPzogYm9vbGVhbjtcbiAgICAgIGR5bmFtaWNJbXBvcnQ/OiBib29sZWFuO1xuICAgIH07XG4gICAgdGFyZ2V0PzogJ2VzMycgfCAnZXM1JyB8ICdlczIwMTUnIHwgJ2VzMjAxNicgfCAnZXMyMDE3JyB8ICdlczIwMTgnIHwgJ2VzMjAxOScgfCAnZXMyMDIwJyB8ICdlczIwMjEnIHwgJ2VzMjAyMicgfCAnZXMyMDIzJztcbiAgICB0cmFuc2Zvcm0/OiB7XG4gICAgICByZWFjdD86IHtcbiAgICAgICAgcnVudGltZT86ICdhdXRvbWF0aWMnIHwgJ2NsYXNzaWMnO1xuICAgICAgICBwcmFnbWE/OiBzdHJpbmc7XG4gICAgICAgIHByYWdtYUZyYWc/OiBzdHJpbmc7XG4gICAgICAgIHRocm93SWZOYW1lc3BhY2U/OiBib29sZWFuO1xuICAgICAgICBkZXZlbG9wbWVudD86IGJvb2xlYW47XG4gICAgICAgIHVzZUJ1aWx0aW5zPzogYm9vbGVhbjtcbiAgICAgICAgcmVmcmVzaD86IGJvb2xlYW47XG4gICAgICB9O1xuICAgIH07XG4gICAgZXh0ZXJuYWxIZWxwZXJzPzogYm9vbGVhbjtcbiAgICBrZWVwQ2xhc3NOYW1lcz86IGJvb2xlYW47XG4gICAgbG9vc2U/OiBib29sZWFuO1xuICAgIG1pbmlmeT86IHtcbiAgICAgIGNvbXByZXNzPzogYm9vbGVhbjtcbiAgICAgIG1hbmdsZT86IGJvb2xlYW47XG4gICAgfTtcbiAgfTtcbiAgbW9kdWxlPzoge1xuICAgIHR5cGU/OiAnZXM2JyB8ICdjb21tb25qcycgfCAnYW1kJyB8ICd1bWQnIHwgJ3N5c3RlbWpzJztcbiAgICBzdHJpY3Q/OiBib29sZWFuO1xuICAgIHN0cmljdE1vZGU/OiBib29sZWFuO1xuICAgIGxhenk/OiBib29sZWFuO1xuICAgIG5vSW50ZXJvcD86IGJvb2xlYW47XG4gIH07XG4gIG1pbmlmeT86IGJvb2xlYW47XG4gIHNvdXJjZU1hcHM/OiBib29sZWFuIHwgJ2lubGluZSc7XG4gIGlubGluZVNvdXJjZXNDb250ZW50PzogYm9vbGVhbjtcbiAgaXNNb2R1bGU/OiBib29sZWFuO1xuICBmaWxlbmFtZT86IHN0cmluZztcbiAgY29uZmlnRmlsZT86IHN0cmluZztcbiAgc3djcmM/OiBib29sZWFuO1xuICBlbnY/OiB7XG4gICAgdGFyZ2V0cz86IHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBtb2RlPzogJ3VzYWdlJyB8ICdlbnRyeSc7XG4gICAgY29yZUpzPzogc3RyaW5nO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICAgIGR5bmFtaWNJbXBvcnQ/OiBib29sZWFuO1xuICAgIGxvb3NlPzogYm9vbGVhbjtcbiAgICBidWdmaXhlcz86IGJvb2xlYW47XG4gICAgaW5jbHVkZT86IHN0cmluZ1tdO1xuICAgIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgICBmb3JjZUFsbFRyYW5zZm9ybXM/OiBib29sZWFuO1xuICAgIG1vZHVsZXM/OiAnYW1kJyB8ICd1bWQnIHwgJ3N5c3RlbWpzJyB8ICdhdXRvJyB8IGZhbHNlO1xuICAgIHNoaXBwZWRQcm9wb3NhbHM/OiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExleENvbmZpZ1R5cGUge1xuICBhaT86IEFJQ29uZmlnO1xuICBjb25maWdGaWxlcz86IHN0cmluZ1tdO1xuICBjb3B5RmlsZXM/OiBzdHJpbmdbXTtcbiAgZW50cnlIVE1MPzogc3RyaW5nO1xuICBlbnRyeUpzPzogc3RyaW5nO1xuICBlbnY/OiBvYmplY3Q7XG4gIGVzbGludD86IEVTTGludENvbmZpZztcbiAgZ2l0VXJsPzogc3RyaW5nO1xuICBqZXN0PzogSmVzdENvbmZpZztcbiAgbGlicmFyeU5hbWU/OiBzdHJpbmc7XG4gIGxpYnJhcnlUYXJnZXQ/OiBzdHJpbmc7XG4gIG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIG91dHB1dEZ1bGxQYXRoPzogc3RyaW5nO1xuICBvdXRwdXRIYXNoPzogYm9vbGVhbjtcbiAgb3V0cHV0UGF0aD86IHN0cmluZztcbiAgcGFja2FnZU1hbmFnZXI/OiAnbnBtJyB8ICd5YXJuJztcbiAgcHJlc2V0PzogJ3dlYicgfCAnbm9kZScgfCAnbGFtYmRhJyB8ICdtb2JpbGUnO1xuICBzb3VyY2VGdWxsUGF0aD86IHN0cmluZztcbiAgc291cmNlUGF0aD86IHN0cmluZztcbiAgc3djPzogU1dDQ29uZmlnO1xuICB0YXJnZXRFbnZpcm9ubWVudD86ICdub2RlJyB8ICd3ZWInO1xuICB1c2VHcmFwaFFsPzogYm9vbGVhbjtcbiAgdXNlVHlwZXNjcmlwdD86IGJvb2xlYW47XG4gIHdlYnBhY2s/OiBXZWJwYWNrQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBDb25maWcgPSBMZXhDb25maWdUeXBlO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbmZpZ1ZhbHVlczogTGV4Q29uZmlnVHlwZSA9IHtcbiAgYWk6IHtcbiAgICBtYXhUb2tlbnM6IDQwMDAsXG4gICAgbW9kZWw6ICdncHQtNG8nLFxuICAgIHByb3ZpZGVyOiAnbm9uZScsXG4gICAgdGVtcGVyYXR1cmU6IDAuMVxuICB9LFxuICBjb25maWdGaWxlczogW10sXG4gIGNvcHlGaWxlczogW10sXG4gIGVudHJ5SFRNTDogJ2luZGV4Lmh0bWwnLFxuICBlbnRyeUpzOiAnaW5kZXguanMnLFxuICBlbnY6IG51bGwsXG4gIGVzbGludDoge30sXG4gIGplc3Q6IHt9LFxuICBvdXRwdXRGdWxsUGF0aDogcGF0aFJlc29sdmUoY3dkLCAnLi9saWInKSxcbiAgb3V0cHV0SGFzaDogZmFsc2UsXG4gIG91dHB1dFBhdGg6ICcuL2xpYicsXG4gIHBhY2thZ2VNYW5hZ2VyOiAnbnBtJyxcbiAgcHJlc2V0OiAnd2ViJyxcbiAgc291cmNlRnVsbFBhdGg6IHBhdGhSZXNvbHZlKGN3ZCwgJy4vc3JjJyksXG4gIHNvdXJjZVBhdGg6ICcuL3NyYycsXG4gIHN3Yzoge1xuICAgIGlubGluZVNvdXJjZXNDb250ZW50OiB0cnVlLFxuICAgIGlzTW9kdWxlOiB0cnVlLFxuICAgIGpzYzoge1xuICAgICAgZXh0ZXJuYWxIZWxwZXJzOiBmYWxzZSxcbiAgICAgIGtlZXBDbGFzc05hbWVzOiBmYWxzZSxcbiAgICAgIGxvb3NlOiBmYWxzZSxcbiAgICAgIHBhcnNlcjoge1xuICAgICAgICBkZWNvcmF0b3JzOiB0cnVlLFxuICAgICAgICBkeW5hbWljSW1wb3J0OiB0cnVlLFxuICAgICAgICBzeW50YXg6ICd0eXBlc2NyaXB0JyxcbiAgICAgICAgdHN4OiB0cnVlXG4gICAgICB9LFxuICAgICAgdGFyZ2V0OiAnZXMyMDIwJyxcbiAgICAgIHRyYW5zZm9ybToge1xuICAgICAgICByZWFjdDoge1xuICAgICAgICAgIHJ1bnRpbWU6ICdhdXRvbWF0aWMnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG1pbmlmeTogZmFsc2UsXG4gICAgbW9kdWxlOiB7XG4gICAgICBsYXp5OiBmYWxzZSxcbiAgICAgIG5vSW50ZXJvcDogZmFsc2UsXG4gICAgICBzdHJpY3Q6IGZhbHNlLFxuICAgICAgc3RyaWN0TW9kZTogdHJ1ZSxcbiAgICAgIHR5cGU6ICdlczYnXG4gICAgfSxcbiAgICBzb3VyY2VNYXBzOiAnaW5saW5lJ1xuICB9LFxuICB0YXJnZXRFbnZpcm9ubWVudDogJ3dlYicsXG4gIHVzZUdyYXBoUWw6IGZhbHNlLFxuICB1c2VUeXBlc2NyaXB0OiBmYWxzZSxcbiAgd2VicGFjazoge1xuICAgIHN0YXRpY1BhdGg6ICcuL3NyYy9zdGF0aWMnXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCA9IChjb25maWdOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIGlmKGNvbmZpZ05hbWUgPT09ICd0c2NvbmZpZy5idWlsZC5qc29uJykge1xuICAgIGNvbnN0IHByb2plY3RCdWlsZENvbmZpZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJ3RzY29uZmlnLmJ1aWxkLmpzb24nKTtcbiAgICBpZihleGlzdHNTeW5jKHByb2plY3RCdWlsZENvbmZpZykpIHtcbiAgICAgIHJldHVybiBwcm9qZWN0QnVpbGRDb25maWc7XG4gICAgfVxuICB9XG5cbiAgaWYoY29uZmlnTmFtZSA9PT0gJ3RzY29uZmlnLmxpbnQuanNvbicpIHtcbiAgICBjb25zdCBwcm9qZWN0TGludENvbmZpZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJ3RzY29uZmlnLmVzbGludC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwcm9qZWN0TGludENvbmZpZykpIHtcbiAgICAgIHJldHVybiBwcm9qZWN0TGludENvbmZpZztcbiAgICB9XG4gIH1cblxuICBpZihjb25maWdOYW1lID09PSAndHNjb25maWcudGVzdC5qc29uJykge1xuICAgIGNvbnN0IHByb2plY3RUZXN0Q29uZmlnID0gcGF0aFJlc29sdmUoY3dkLCAndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwcm9qZWN0VGVzdENvbmZpZykpIHtcbiAgICAgIHJldHVybiBwcm9qZWN0VGVzdENvbmZpZztcbiAgICB9XG4gIH1cblxuICBjb25zdCBwcm9qZWN0Q29uZmlnUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgY29uZmlnTmFtZSk7XG4gIGlmKGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGgpKSB7XG4gICAgcmV0dXJuIHByb2plY3RDb25maWdQYXRoO1xuICB9XG5cbiAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICByZXR1cm4gcGF0aFJlc29sdmUobGV4RGlyLCBjb25maWdOYW1lKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBMZXhDb25maWcge1xuICBzdGF0aWMgY29uZmlnOiBMZXhDb25maWdUeXBlID0ge1xuICAgIC4uLmRlZmF1bHRDb25maWdWYWx1ZXNcbiAgfTtcblxuICBzdGF0aWMgc2V0IHVzZVR5cGVzY3JpcHQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBMZXhDb25maWcuY29uZmlnLnVzZVR5cGVzY3JpcHQgPSB2YWx1ZTtcbiAgICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICAgIGNvbnN0IHtlbnRyeUpzfSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgICBpZihlbnRyeUpzID09PSAnaW5kZXguanMnICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBpbmRleFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlRnVsbFBhdGgsICdpbmRleC50c3gnKTtcbiAgICAgIGNvbnN0IGhhc0luZGV4VHN4OiBib29sZWFuID0gZXhpc3RzU3luYyhpbmRleFBhdGgpO1xuXG4gICAgICBpZihoYXNJbmRleFRzeCkge1xuICAgICAgICBMZXhDb25maWcuY29uZmlnLmVudHJ5SnMgPSAnaW5kZXgudHN4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIExleENvbmZpZy5jb25maWcuZW50cnlKcyA9ICdpbmRleC50cyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldExleERpcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBkaXJuYW1lKGdldExleFBhY2thZ2VKc29uUGF0aCgpKTtcbiAgfVxuXG4gIHN0YXRpYyB1cGRhdGVDb25maWcodXBkYXRlZENvbmZpZzogTGV4Q29uZmlnVHlwZSk6IExleENvbmZpZ1R5cGUge1xuICAgIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgb3V0cHV0UGF0aCwgc291cmNlUGF0aCwgc291cmNlRnVsbFBhdGgsIHVzZVR5cGVzY3JpcHQsIGFpfSA9IHVwZGF0ZWRDb25maWc7XG4gICAgY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgaWYodXNlVHlwZXNjcmlwdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBMZXhDb25maWcudXNlVHlwZXNjcmlwdCA9IHVzZVR5cGVzY3JpcHQ7XG4gICAgfVxuXG4gICAgaWYob3V0cHV0UGF0aCAhPT0gdW5kZWZpbmVkICYmIG91dHB1dEZ1bGxQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZWRDb25maWcub3V0cHV0RnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIG91dHB1dFBhdGgpO1xuICAgIH1cblxuICAgIGlmKHNvdXJjZVBhdGggIT09IHVuZGVmaW5lZCAmJiBzb3VyY2VGdWxsUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGVkQ29uZmlnLnNvdXJjZUZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBzb3VyY2VQYXRoKTtcbiAgICB9XG5cbiAgICBpZihhaSkge1xuICAgICAgTGV4Q29uZmlnLmNvbmZpZy5haSA9IHsuLi5MZXhDb25maWcuY29uZmlnLmFpLCAuLi5haX07XG5cbiAgICAgIGlmKHByb2Nlc3MuZW52LkNVUlNPUl9JREUgPT09ICd0cnVlJyAmJiBMZXhDb25maWcuY29uZmlnLmFpLnByb3ZpZGVyID09PSAnbm9uZScpIHtcbiAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy5haS5wcm92aWRlciA9ICdjdXJzb3InO1xuICAgICAgfVxuICAgIH1cblxuICAgIExleENvbmZpZy5jb25maWcgPSB7Li4uTGV4Q29uZmlnLmNvbmZpZywgLi4udXBkYXRlZENvbmZpZ307XG5cbiAgICByZXR1cm4gTGV4Q29uZmlnLmNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhZGRDb25maWdQYXJhbXMoY21kLCBwYXJhbXM6IExleENvbmZpZ1R5cGUpIHtcbiAgICBjb25zdCBuYW1lUHJvcGVydHk6IHN0cmluZyA9ICdfbmFtZSc7XG4gICAgY29uc3Qge2Vudmlyb25tZW50LCBvdXRwdXRQYXRoLCBzb3VyY2VQYXRoLCB0eXBlc2NyaXB0fSA9IGNtZDtcbiAgICBjb25zdCBjdXJyZW50Q3dkID0gcHJvY2Vzcy5jd2QoKTtcblxuICAgIGlmKG91dHB1dFBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLm91dHB1dFBhdGggPSBvdXRwdXRQYXRoO1xuICAgICAgcGFyYW1zLm91dHB1dEZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3VycmVudEN3ZCwgb3V0cHV0UGF0aCk7XG4gICAgfSBlbHNlIGlmKHBhcmFtcy5vdXRwdXRQYXRoICYmICFwYXJhbXMub3V0cHV0RnVsbFBhdGgpIHtcbiAgICAgIHBhcmFtcy5vdXRwdXRGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN1cnJlbnRDd2QsIHBhcmFtcy5vdXRwdXRQYXRoKTtcbiAgICB9XG5cbiAgICBpZihzb3VyY2VQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5zb3VyY2VQYXRoID0gc291cmNlUGF0aDtcbiAgICAgIHBhcmFtcy5zb3VyY2VGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN1cnJlbnRDd2QsIHNvdXJjZVBhdGgpO1xuICAgIH0gZWxzZSBpZihwYXJhbXMuc291cmNlUGF0aCAmJiAhcGFyYW1zLnNvdXJjZUZ1bGxQYXRoKSB7XG4gICAgICBwYXJhbXMuc291cmNlRnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjdXJyZW50Q3dkLCBwYXJhbXMuc291cmNlUGF0aCk7XG4gICAgfVxuXG4gICAgaWYodHlwZXNjcmlwdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMudXNlVHlwZXNjcmlwdCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYoZW52aXJvbm1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnRhcmdldEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgPT09ICd3ZWInID8gJ3dlYicgOiAnbm9kZSc7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5lbnYuTEVYX0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICAuLi5MZXhDb25maWcudXBkYXRlQ29uZmlnKHBhcmFtcyksXG4gICAgICAgIGNvbW1hbmROYW1lOiBjbWRbbmFtZVByb3BlcnR5XSxcbiAgICAgICAgaXNTdGF0aWM6IGNtZC5zdGF0aWNcbiAgICAgIH0sIG51bGwsIDBcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHBhcnNlQ29uZmlnKGNtZCwgaXNSb290OiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGxleENvbmZpZywgbGV4Q29uZmlnTmFtZSwgcXVpZXQsIHR5cGVzY3JpcHQsIGRlYnVnID0gZmFsc2V9ID0gY21kO1xuICAgIGNvbnN0IGNvbmZpZ0Zvcm1hdHMgPSBbJ2pzJywgJ21qcycsICdjanMnLCAndHMnLCAnanNvbiddO1xuICAgIGNvbnN0IGNvbmZpZ0Jhc2VOYW1lOiBzdHJpbmcgPSBsZXhDb25maWdOYW1lIHx8ICdsZXguY29uZmlnJztcbiAgICBsZXQgY29uZmlnUGF0aDogc3RyaW5nID0gbGV4Q29uZmlnIHx8ICcnO1xuICAgIGxldCBjb25maWdFeGlzdHM6IGJvb2xlYW4gPSBsZXhDb25maWcgPyBleGlzdHNTeW5jKGNvbmZpZ1BhdGgpIDogZmFsc2U7XG5cbiAgICBpZighY29uZmlnUGF0aCB8fCAhY29uZmlnRXhpc3RzKSB7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coYFNlYXJjaGluZyBmb3IgY29uZmlnIGZpbGVzIHdpdGggYmFzZSBuYW1lOiAke2NvbmZpZ0Jhc2VOYW1lfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgfVxuXG4gICAgICBmb3IoY29uc3QgZm9ybWF0IG9mIGNvbmZpZ0Zvcm1hdHMpIHtcbiAgICAgICAgY29uc3QgcG90ZW50aWFsUGF0aCA9IGlzUm9vdFxuICAgICAgICAgID8gcGF0aFJlc29sdmUoY3dkLCBgLi8ke2NvbmZpZ0Jhc2VOYW1lfS4ke2Zvcm1hdH1gKVxuICAgICAgICAgIDogcmVsYXRpdmVGaWxlUGF0aChgJHtjb25maWdCYXNlTmFtZX0uJHtmb3JtYXR9YCwgY3dkKTtcblxuICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgIGxvZyhgQ2hlY2tpbmcgZm9yIGNvbmZpZyBmaWxlOiAke3BvdGVudGlhbFBhdGh9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZihleGlzdHNTeW5jKHBvdGVudGlhbFBhdGgpKSB7XG4gICAgICAgICAgY29uZmlnUGF0aCA9IHBvdGVudGlhbFBhdGg7XG4gICAgICAgICAgY29uZmlnRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmKGNvbmZpZ0V4aXN0cykge1xuICAgICAgbG9nKGBVc2luZyAke2NsaU5hbWV9IGNvbmZpZ3VyYXRpb24gZmlsZTogJHtjb25maWdQYXRofWAsICdub3RlJywgcXVpZXQpO1xuICAgICAgY29uc3QgZXh0OiBzdHJpbmcgPSBwYXRoRXh0bmFtZShjb25maWdQYXRoKTtcblxuICAgICAgaWYoZXh0ID09PSAnLmpzb24nKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0NvbnRlbnQ6IHN0cmluZyA9IHJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmOCcpO1xuXG4gICAgICAgIGlmKGNvbmZpZ0NvbnRlbnQpIHtcbiAgICAgICAgICBsZXQgY29uZmlnSnNvbjogTGV4Q29uZmlnVHlwZTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25maWdKc29uID0gSlNPTi5wYXJzZShjb25maWdDb250ZW50KT8uZGVmYXVsdCB8fCB7fTtcbiAgICAgICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwYXJzZSBKU09OIGNvbmZpZzogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICAgIGNvbmZpZ0pzb24gPSB7fTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBMZXhDb25maWcuYWRkQ29uZmlnUGFyYW1zKGNtZCwgY29uZmlnSnNvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb25maWcgZmlsZSBtYWxmb3JtZWQsICR7Y29uZmlnUGF0aH1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZihbJy5qcycsICcubWpzJywgJy5janMnLCAnLnRzJ10uaW5jbHVkZXMoZXh0KSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCBsZXhDdXN0b21Db25maWc7XG5cbiAgICAgICAgICBpZihleHQgPT09ICcuY2pzJykge1xuICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IG5ldyBVUkwoYGZpbGU6Ly8vJHtwYXRoUmVzb2x2ZShjb25maWdQYXRoKX1gKS5ocmVmO1xuXG4gICAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgICBsb2coYExvYWRpbmcgQ29tbW9uSlMgY29uZmlnIGZyb206ICR7ZmlsZVVybH1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxleEN1c3RvbUNvbmZpZyA9IGF3YWl0IGltcG9ydChmaWxlVXJsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgICAgbG9nKGBMb2FkaW5nIEVTTS9UUyBjb25maWcgZnJvbTogJHtjb25maWdQYXRofWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXhDdXN0b21Db25maWcgPSBhd2FpdCBpbXBvcnQoY29uZmlnUGF0aCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29uZmlnID0gbGV4Q3VzdG9tQ29uZmlnLmRlZmF1bHQgfHwgbGV4Q3VzdG9tQ29uZmlnO1xuXG4gICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgIGxvZyhgTG9hZGVkIGNvbmZpZzogJHtKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmKCFjb25maWcpIHtcbiAgICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBDb25maWcgZmlsZSBsb2FkZWQgYnV0IG5vIGNvbmZpZ3VyYXRpb24gZm91bmRgLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBMZXhDb25maWcuYWRkQ29uZmlnUGFyYW1zKGNtZCwgY29uZmlnIHx8IHt9KTtcbiAgICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGU6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ29uZmlnIGZpbGUgbXVzdCBiZSBhIEpTLCBDSlMsIE1KUywgVFMsIG9yIEpTT04gZmlsZS5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgIGxvZygnTm8gY29uZmlnIGZpbGUgZm91bmQuIFVzaW5nIGRlZmF1bHQgY29uZmlndXJhdGlvbi4nLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIH1cblxuICAgICAgTGV4Q29uZmlnLnVzZVR5cGVzY3JpcHQgPSAhIXR5cGVzY3JpcHQ7XG4gICAgICBMZXhDb25maWcuYWRkQ29uZmlnUGFyYW1zKGNtZCwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNoZWNrVHlwZXNjcmlwdENvbmZpZygpIHtcbiAgICBjb25zdCB0c2NvbmZpZ1BhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJy4vdHNjb25maWcuanNvbicpO1xuXG4gICAgaWYoIWV4aXN0c1N5bmModHNjb25maWdQYXRoKSkge1xuICAgICAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgICAgIHdyaXRlRmlsZVN5bmModHNjb25maWdQYXRoLCByZWFkRmlsZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uL3RzY29uZmlnLmJhc2UuanNvbicpKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldFR5cGVTY3JpcHREZWNsYXJhdGlvbkZsYWdzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG91dHB1dFBhdGggPSBMZXhDb25maWcuY29uZmlnLm91dHB1dFBhdGggfHwgJy4vbGliJztcbiAgICBjb25zdCBvdXRwdXRGdWxsUGF0aCA9IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgcGF0aFJlc29sdmUoY3dkLCBvdXRwdXRQYXRoKTtcbiAgICBjb25zdCBzb3VyY2VQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VQYXRoIHx8ICcuL3NyYyc7XG4gICAgY29uc3Qgc291cmNlRnVsbFBhdGggPSBMZXhDb25maWcuY29uZmlnLnNvdXJjZUZ1bGxQYXRoIHx8IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlUGF0aCk7XG4gICAgY29uc3QgcmVsYXRpdmVPdXREaXIgPSBwYXRoUmVsYXRpdmUoY3dkLCBvdXRwdXRGdWxsUGF0aCkgfHwgJy4vbGliJztcbiAgICBjb25zdCByZWxhdGl2ZVJvb3REaXIgPSBwYXRoUmVsYXRpdmUoY3dkLCBzb3VyY2VGdWxsUGF0aCkgfHwgJy4vc3JjJztcblxuICAgIHJldHVybiBbXG4gICAgICAnLS1lbWl0RGVjbGFyYXRpb25Pbmx5JywgLy8gQ1JJVElDQUw6IE9ubHkgZW1pdCAuZC50cyBmaWxlcywgbm8gSlMgZmlsZXNcbiAgICAgICctLWRlY2xhcmF0aW9uJywgLy8gR2VuZXJhdGUgZGVjbGFyYXRpb24gZmlsZXNcbiAgICAgICctLWRlY2xhcmF0aW9uTWFwJywgLy8gR2VuZXJhdGUgc291cmNlIG1hcHMgZm9yIGRlY2xhcmF0aW9uc1xuICAgICAgJy0tb3V0RGlyJywgcmVsYXRpdmVPdXREaXIsXG4gICAgICAnLS1yb290RGlyJywgcmVsYXRpdmVSb290RGlyLFxuICAgICAgJy0tc2tpcExpYkNoZWNrJywgLy8gU2tpcCB0eXBlIGNoZWNraW5nIG9mIGRlY2xhcmF0aW9uIGZpbGVzIChmYXN0ZXIsIG1vcmUgbGVuaWVudClcbiAgICAgICctLWVzTW9kdWxlSW50ZXJvcCcsXG4gICAgICAnLS1hbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzJyxcbiAgICAgICctLW1vZHVsZScsICdOb2RlTmV4dCcsXG4gICAgICAnLS1tb2R1bGVSZXNvbHV0aW9uJywgJ05vZGVOZXh0JyxcbiAgICAgICctLXRhcmdldCcsICdFU05leHQnLFxuICAgICAgJy0tanN4JywgJ3JlYWN0LWpzeCcsXG4gICAgICAnLS1pc29sYXRlZE1vZHVsZXMnLFxuICAgICAgJy0tcmVzb2x2ZUpzb25Nb2R1bGUnLFxuICAgICAgJy0tYWxsb3dKcydcbiAgICAgIC8vIE5vdGU6IC0tbm9VbnVzZWRMb2NhbHMgYW5kIC0tbm9VbnVzZWRQYXJhbWV0ZXJzIGFyZSBub3QgbmVlZGVkIGZvciBkZWNsYXJhdGlvbiBnZW5lcmF0aW9uXG4gICAgICAvLyBhbmQgd291bGQgYWN0dWFsbHkgZW5hYmxlIHN0cmljdCBjaGVja2luZywgd2hpY2ggd2Ugd2FudCB0byBhdm9pZCBmb3IgZmFzdGVyIGRlY2xhcmF0aW9uIGdlbmVyYXRpb25cbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIGNoZWNrTGludFR5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgIGNvbnN0IHRzY29uZmlnTGludFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJy4vdHNjb25maWcubGludC5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ0xpbnRQYXRoKSkge1xuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCAndHNjb25maWcubGludC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ0xpbnRQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNoZWNrVGVzdFR5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgIGNvbnN0IHRzY29uZmlnVGVzdFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJy4vdHNjb25maWcudGVzdC5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ1Rlc3RQYXRoKSkge1xuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCAndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ1Rlc3RQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59Il0sIm5hbWVzIjpbImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwiZGlybmFtZSIsImV4dG5hbWUiLCJwYXRoRXh0bmFtZSIsInJlbGF0aXZlIiwicGF0aFJlbGF0aXZlIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiVVJMIiwiZ2V0RGlyTmFtZSIsImdldExleFBhY2thZ2VKc29uUGF0aCIsInJlbGF0aXZlRmlsZVBhdGgiLCJsb2ciLCJjd2QiLCJwcm9jZXNzIiwiZGVmYXVsdENvbmZpZ1ZhbHVlcyIsImFpIiwibWF4VG9rZW5zIiwibW9kZWwiLCJwcm92aWRlciIsInRlbXBlcmF0dXJlIiwiY29uZmlnRmlsZXMiLCJjb3B5RmlsZXMiLCJlbnRyeUhUTUwiLCJlbnRyeUpzIiwiZW52IiwiZXNsaW50IiwiamVzdCIsIm91dHB1dEZ1bGxQYXRoIiwib3V0cHV0SGFzaCIsIm91dHB1dFBhdGgiLCJwYWNrYWdlTWFuYWdlciIsInByZXNldCIsInNvdXJjZUZ1bGxQYXRoIiwic291cmNlUGF0aCIsInN3YyIsImlubGluZVNvdXJjZXNDb250ZW50IiwiaXNNb2R1bGUiLCJqc2MiLCJleHRlcm5hbEhlbHBlcnMiLCJrZWVwQ2xhc3NOYW1lcyIsImxvb3NlIiwicGFyc2VyIiwiZGVjb3JhdG9ycyIsImR5bmFtaWNJbXBvcnQiLCJzeW50YXgiLCJ0c3giLCJ0YXJnZXQiLCJ0cmFuc2Zvcm0iLCJyZWFjdCIsInJ1bnRpbWUiLCJtaW5pZnkiLCJtb2R1bGUiLCJsYXp5Iiwibm9JbnRlcm9wIiwic3RyaWN0Iiwic3RyaWN0TW9kZSIsInR5cGUiLCJzb3VyY2VNYXBzIiwidGFyZ2V0RW52aXJvbm1lbnQiLCJ1c2VHcmFwaFFsIiwidXNlVHlwZXNjcmlwdCIsIndlYnBhY2siLCJzdGF0aWNQYXRoIiwiZ2V0VHlwZVNjcmlwdENvbmZpZ1BhdGgiLCJjb25maWdOYW1lIiwicHJvamVjdEJ1aWxkQ29uZmlnIiwicHJvamVjdExpbnRDb25maWciLCJwcm9qZWN0VGVzdENvbmZpZyIsInByb2plY3RDb25maWdQYXRoIiwibGV4RGlyIiwiTGV4Q29uZmlnIiwiZ2V0TGV4RGlyIiwidmFsdWUiLCJjb25maWciLCJpbmRleFBhdGgiLCJoYXNJbmRleFRzeCIsInVwZGF0ZUNvbmZpZyIsInVwZGF0ZWRDb25maWciLCJ1bmRlZmluZWQiLCJDVVJTT1JfSURFIiwiYWRkQ29uZmlnUGFyYW1zIiwiY21kIiwicGFyYW1zIiwibmFtZVByb3BlcnR5IiwiZW52aXJvbm1lbnQiLCJ0eXBlc2NyaXB0IiwiY3VycmVudEN3ZCIsIkxFWF9DT05GSUciLCJKU09OIiwic3RyaW5naWZ5IiwiY29tbWFuZE5hbWUiLCJpc1N0YXRpYyIsInN0YXRpYyIsInBhcnNlQ29uZmlnIiwiaXNSb290IiwiY2xpTmFtZSIsImxleENvbmZpZyIsImxleENvbmZpZ05hbWUiLCJxdWlldCIsImRlYnVnIiwiY29uZmlnRm9ybWF0cyIsImNvbmZpZ0Jhc2VOYW1lIiwiY29uZmlnUGF0aCIsImNvbmZpZ0V4aXN0cyIsImZvcm1hdCIsInBvdGVudGlhbFBhdGgiLCJleHQiLCJjb25maWdDb250ZW50IiwiY29uZmlnSnNvbiIsInBhcnNlIiwiZGVmYXVsdCIsImVycm9yIiwibWVzc2FnZSIsImluY2x1ZGVzIiwibGV4Q3VzdG9tQ29uZmlnIiwiZmlsZVVybCIsImhyZWYiLCJjb25zb2xlIiwiY2hlY2tUeXBlc2NyaXB0Q29uZmlnIiwidHNjb25maWdQYXRoIiwiZGlyTmFtZSIsImdldFR5cGVTY3JpcHREZWNsYXJhdGlvbkZsYWdzIiwicmVsYXRpdmVPdXREaXIiLCJyZWxhdGl2ZVJvb3REaXIiLCJjaGVja0xpbnRUeXBlc2NyaXB0Q29uZmlnIiwidHNjb25maWdMaW50UGF0aCIsInRlbXBsYXRlUGF0aCIsImNoZWNrVGVzdFR5cGVzY3JpcHRDb25maWciLCJ0c2NvbmZpZ1Rlc3RQYXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7OztDQUdDLEdBQ0QsU0FBUUEsVUFBVSxFQUFFQyxZQUFZLEVBQUVDLGFBQWEsUUFBTyxLQUFLO0FBQzNELFNBQ0VDLE9BQU8sRUFDUEMsV0FBV0MsV0FBVyxFQUN0QkMsWUFBWUMsWUFBWSxFQUN4QkMsV0FBV0MsV0FBVyxRQUNqQixPQUFPO0FBQ2QsU0FBUUMsR0FBRyxRQUFPLE1BQU07QUFFeEIsU0FBUUMsVUFBVSxFQUFFQyxxQkFBcUIsRUFBRUMsZ0JBQWdCLFFBQU8sa0JBQWtCO0FBQ3BGLFNBQVFDLEdBQUcsUUFBTyxpQkFBaUI7QUFJbkMsTUFBTUMsTUFBY0MsUUFBUUQsR0FBRztBQTZIL0IsT0FBTyxNQUFNRSxzQkFBcUM7SUFDaERDLElBQUk7UUFDRkMsV0FBVztRQUNYQyxPQUFPO1FBQ1BDLFVBQVU7UUFDVkMsYUFBYTtJQUNmO0lBQ0FDLGFBQWEsRUFBRTtJQUNmQyxXQUFXLEVBQUU7SUFDYkMsV0FBVztJQUNYQyxTQUFTO0lBQ1RDLEtBQUs7SUFDTEMsUUFBUSxDQUFDO0lBQ1RDLE1BQU0sQ0FBQztJQUNQQyxnQkFBZ0JyQixZQUFZTSxLQUFLO0lBQ2pDZ0IsWUFBWTtJQUNaQyxZQUFZO0lBQ1pDLGdCQUFnQjtJ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