obsidian-dev-utils 33.1.0 → 34.0.0

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.
@@ -368,4 +368,4 @@ function getTseslintConfigs() {
368
368
  export {
369
369
  obsidianDevUtilsConfigs
370
370
  };
371
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL0VTTGludC9lc2xpbnQuY29uZmlnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEVTTGludCBjb25maWd1cmF0aW9uIGZvciBUeXBlU2NyaXB0IHByb2plY3RzIHdpdGggdmFyaW91cyBwbHVnaW5zLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgRVNMaW50IGNvbmZpZ3VyYXRpb25zIGZvciBUeXBlU2NyaXB0IHByb2plY3RzLCBpbnRlZ3JhdGluZyBtdWx0aXBsZSBFU0xpbnQgcGx1Z2luc1xuICogc3VjaCBhcyBgQHR5cGVzY3JpcHQtZXNsaW50L3BhcnNlcmAsIGBAdHlwZXNjcmlwdC1lc2xpbnQvZXNsaW50LXBsdWdpbmAsXG4gKiBgZXNsaW50LXBsdWdpbi1tb2R1bGVzLW5ld2xpbmVzYCwgYEBzdHlsaXN0aWMvZXNsaW50LXBsdWdpbmAuXG4gKiBJdCBzZXRzIHVwIHBhcnNlcnMsIHBsdWdpbnMsIGFuZCBydWxlcyBmb3IgbWFpbnRhaW5pbmcgY29kZSBxdWFsaXR5IGFuZCBjb25zaXN0ZW5jeS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1tYWdpYy1udW1iZXJzICovXG5cbmltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSAnZXNsaW50JztcbmltcG9ydCB0eXBlIHsgSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzIH0gZnJvbSAndHlwZXNjcmlwdC1lc2xpbnQnO1xuXG5pbXBvcnQgZXNsaW50IGZyb20gJ0Blc2xpbnQvanMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0XG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBmbGF0Q29uZmlncyBhcyBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLWltcG9ydC14JztcbmltcG9ydCBlc2xpbnRQbHVnaW5Nb2R1bGVzTmV3bGluZXMgZnJvbSAnZXNsaW50LXBsdWdpbi1tb2R1bGVzLW5ld2xpbmVzJztcbmltcG9ydCBwZXJmZWN0aW9uaXN0IGZyb20gJ2VzbGludC1wbHVnaW4tcGVyZmVjdGlvbmlzdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHRcbmltcG9ydCB0c2VzbGludCBmcm9tICd0eXBlc2NyaXB0LWVzbGludCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4vUGx1Z2luL09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi8uLi9QYXRoLnRzJztcbmltcG9ydCB7IGdldFJvb3RGb2xkZXIgfSBmcm9tICcuLi9Sb290LnRzJztcblxuLyoqXG4gKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zIGZvciBUeXBlU2NyaXB0IHByb2plY3RzLlxuICovXG5leHBvcnQgY29uc3Qgb2JzaWRpYW5EZXZVdGlsc0NvbmZpZ3M6IExpbnRlci5Db25maWdbXSA9IHRzZXNsaW50LmNvbmZpZyhcbiAge1xuICAgIGZpbGVzOiBbXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55VHMpLFxuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzeCksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNjcmlwdHMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzKSxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkVzbGludENvbmZpZ0N0cyxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkVzbGludENvbmZpZ1RzLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzXG4gICAgXVxuICB9LFxuICB7XG4gICAgaWdub3JlczogW1xuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlQYXRoLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlDanMpLFxuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlQYXRoLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlKcyksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueU1qcyksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3QsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgpXG4gICAgXVxuICB9LFxuICAuLi5nZXRFc2xpbnRDb25maWdzKCksXG4gIC4uLmdldFRzZXNsaW50Q29uZmlncygpLFxuICAuLi5nZXRTdHlsaXN0aWNDb25maWdzKCksXG4gIC4uLmdldEltcG9ydFhDb25maWdzKCksXG4gIC4uLmdldFBlcmZlY3Rpb25pc3RDb25maWdzKCksXG4gIC4uLmdldE1vZHVsZXNOZXdsaW5lc0NvbmZpZ3MoKSxcbiAgLi4uZ2V0TW9kdWxlc05ld2xpbmVzQ29uZmlncygpLFxuICAuLi5nZXRFc2xpbnRJbXBvcnRSZXNvbHZlclR5cGVzY3JpcHRDb25maWdzKClcbikgYXMgTGludGVyLkNvbmZpZ1tdO1xuXG5mdW5jdGlvbiBleGNsdWRlRmlsZXNQcm9wZXJ0eTxDb25maWcgZXh0ZW5kcyB7IGZpbGVzPzogdW5rbm93biB9Pihjb25maWc6IENvbmZpZyk6IENvbmZpZyB7XG4gIGNvbnN0IG5ld0NvbmZpZyA9IHsgLi4uY29uZmlnIH07XG4gIGRlbGV0ZSBuZXdDb25maWcuZmlsZXM7XG4gIHJldHVybiBuZXdDb25maWc7XG59XG5cbmZ1bmN0aW9uIGdldEVzbGludENvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIGVzbGludC5jb25maWdzLnJlY29tbWVuZGVkLFxuICAgIHtcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdhY2Nlc3Nvci1wYWlycyc6ICdlcnJvcicsXG4gICAgICAgICdhcnJheS1jYWxsYmFjay1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAnY2FtZWxjYXNlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhcGl0YWxpemVkLWNvbW1lbnRzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NvbXBsZXhpdHknOiAnZXJyb3InLFxuICAgICAgICAnY29uc2lzdGVudC10aGlzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2N1cmx5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LXBhcmFtLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZXFlcWVxJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZS1tYXRjaGluZyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZGVjbGFyYXRpb24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93QXJyb3dGdW5jdGlvbnM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnZ3JvdXBlZC1hY2Nlc3Nvci1wYWlycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdnZXRCZWZvcmVTZXQnXG4gICAgICAgIF0sXG4gICAgICAgICdndWFyZC1mb3ItaW4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICduby1jYWxsZXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tY29uc29sZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWNvbnN0cnVjdG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1kaXYtcmVnZXgnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZWxzZS1yZXR1cm4nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Vsc2VJZjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1lbXB0eS1mdW5jdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1leHRlbmQtbmF0aXZlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtbGFiZWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnISEnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWlubmVyLWRlY2xhcmF0aW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbC12YXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmUtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmVseS1pZic6ICdlcnJvcicsXG4gICAgICAgICduby1sb29wLWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbWFnaWMtbnVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGVjdE9iamVjdHM6IHRydWUsXG4gICAgICAgICAgICBlbmZvcmNlQ29uc3Q6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmU6IFtcbiAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1tdWx0aS1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbXVsdGktc3RyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lZ2F0ZWQtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lc3RlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICduby1vYmplY3QtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldEVzbGludEltcG9ydFJlc29sdmVyVHlwZXNjcmlwdENvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICdpbXBvcnQvcmVzb2x2ZXInOiB7XG4gICAgICAgICAgdHlwZXNjcmlwdDoge1xuICAgICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydFhDb25maWdzKCk6IEluZmluaXRlRGVwdGhDb25maWdXaXRoRXh0ZW5kc1tdIHtcbiAgcmV0dXJuIFtcbiAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzLnR5cGVzY3JpcHQsXG4gICAgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzLmVycm9ycyxcbiAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3MsXG4gICAge1xuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVzZWxlc3MtcGF0aC1zZWdtZW50cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby13ZWJwYWNrLWxvYWRlci1zeW50YXgnOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5mdW5jdGlvbiBnZXRNb2R1bGVzTmV3bGluZXNDb25maWdzKCk6IEluZmluaXRlRGVwdGhDb25maWdXaXRoRXh0ZW5kc1tdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgICdtb2R1bGVzLW5ld2xpbmVzJzogZXNsaW50UGx1Z2luTW9kdWxlc05ld2xpbmVzXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ21vZHVsZXMtbmV3bGluZXMvZXhwb3J0LWRlY2xhcmF0aW9uLW5ld2xpbmUnOiAnZXJyb3InLFxuICAgICAgICAnbW9kdWxlcy1uZXdsaW5lcy9pbXBvcnQtZGVjbGFyYXRpb24tbmV3bGluZSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldFBlcmZlY3Rpb25pc3RDb25maWdzKCk6IEluZmluaXRlRGVwdGhDb25maWdXaXRoRXh0ZW5kc1tdIHtcbiAgcmV0dXJuIFtcbiAgICBwZXJmZWN0aW9uaXN0LmNvbmZpZ3NbJ3JlY29tbWVuZGVkLWFscGhhYmV0aWNhbCddXG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldFN0eWxpc3RpY0NvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIHN0eWxpc3RpYy5jb25maWdzLnJlY29tbWVuZGVkLFxuICAgIHN0eWxpc3RpYy5jb25maWdzLmN1c3RvbWl6ZSh7XG4gICAgICBhcnJvd1BhcmVuczogdHJ1ZSxcbiAgICAgIGJyYWNlU3R5bGU6ICcxdGJzJyxcbiAgICAgIGNvbW1hRGFuZ2xlOiAnbmV2ZXInLFxuICAgICAgc2VtaTogdHJ1ZVxuICAgIH0pLFxuICAgIHtcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAc3R5bGlzdGljL2luZGVudCc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9pbmRlbnQtYmluYXJ5LW9wcyc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9qc3gtb25lLWV4cHJlc3Npb24tcGVyLWxpbmUnOiAnb2ZmJyxcbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tZXh0cmEtc2VtaSc6ICdlcnJvcicsXG4gICAgICAgICdAc3R5bGlzdGljL29iamVjdC1jdXJseS1uZXdsaW5lJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgRXhwb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9vcGVyYXRvci1saW5lYnJlYWsnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnYmVmb3JlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgJz0nOiAnYWZ0ZXInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9xdW90ZXMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnc2luZ2xlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd1RlbXBsYXRlTGl0ZXJhbHM6ICduZXZlcidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldFRzZXNsaW50Q29uZmlncygpOiBJbmZpbml0ZURlcHRoQ29uZmlnV2l0aEV4dGVuZHNbXSB7XG4gIHJldHVybiBbXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyXG4gICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZC5tYXAoZXhjbHVkZUZpbGVzUHJvcGVydHkpLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlclxuICAgIC4uLnRzZXNsaW50LmNvbmZpZ3Muc3R5bGlzdGljVHlwZUNoZWNrZWQubWFwKGV4Y2x1ZGVGaWxlc1Byb3BlcnR5KSxcbiAgICB7XG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9qZWN0U2VydmljZTogdHJ1ZSxcbiAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGdldFJvb3RGb2xkZXIoKSA/PyAnJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBydWxlczoge1xuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tZW1iZXItYWNjZXNzaWJpbGl0eSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGUnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGFsbG93QXNUaGlzUGFyYW1ldGVyOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXMnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGFsbG93ZWROYW1lczogW1xuICAgICAgICAgICAgJ3RoYXQnXG4gICAgICAgICAgXVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFyZ3M6ICdhbGwnLFxuICAgICAgICAgICAgYXJnc0lnbm9yZVBhdHRlcm46ICdeXycsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnM6ICdhbGwnLFxuICAgICAgICAgICAgY2F1Z2h0RXJyb3JzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGRlc3RydWN0dXJlZEFycmF5SWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGlnbm9yZVJlc3RTaWJsaW5nczogdHJ1ZSxcbiAgICAgICAgICAgIHZhcnNJZ25vcmVQYXR0ZXJuOiAnXl8nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICByZWFjdDoge1xuICAgICAgICAgIHZlcnNpb246ICdkZXRlY3QnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBZ0JBLE9BQU8sWUFBWTtBQUVuQixPQUFPLGVBQWU7QUFDdEIsU0FBUyxlQUFlLHNDQUFzQztBQUM5RCxPQUFPLGlDQUFpQztBQUN4QyxPQUFPLG1CQUFtQjtBQUUxQixPQUFPLGNBQWM7QUFFckIsU0FBUywrQkFBK0I7QUFDeEMsU0FBUyxZQUFZO0FBQ3JCLFNBQVMscUJBQXFCO0FBS3ZCLE1BQU0sMEJBQTJDLFNBQVM7QUFBQSxFQUMvRDtBQUFBLElBQ0UsT0FBTztBQUFBLE1BQ0wsS0FBSyx3QkFBd0IsS0FBSyx3QkFBd0IsU0FBUyx3QkFBd0IsS0FBSztBQUFBLE1BQ2hHLEtBQUssd0JBQXdCLEtBQUssd0JBQXdCLFNBQVMsd0JBQXdCLE1BQU07QUFBQSxNQUNqRyxLQUFLLHdCQUF3QixTQUFTLHdCQUF3QixTQUFTLHdCQUF3QixLQUFLO0FBQUEsTUFDcEcsd0JBQXdCO0FBQUEsTUFDeEIsd0JBQXdCO0FBQUEsTUFDeEIsd0JBQXdCO0FBQUEsSUFDMUI7QUFBQSxFQUNGO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLE1BQ1AsS0FBSyx3QkFBd0IsU0FBUyx3QkFBd0IsTUFBTTtBQUFBLE1BQ3BFLEtBQUssd0JBQXdCLFNBQVMsd0JBQXdCLEtBQUs7QUFBQSxNQUNuRSxLQUFLLHdCQUF3QixTQUFTLHdCQUF3QixNQUFNO0FBQUEsTUFDcEUsS0FBSyx3QkFBd0IsTUFBTSx3QkFBd0IsT0FBTztBQUFBLElBQ3BFO0FBQUEsRUFDRjtBQUFBLEVBQ0EsR0FBRyxpQkFBaUI7QUFBQSxFQUNwQixHQUFHLG1CQUFtQjtBQUFBLEVBQ3RCLEdBQUcsb0JBQW9CO0FBQUEsRUFDdkIsR0FBRyxrQkFBa0I7QUFBQSxFQUNyQixHQUFHLHdCQUF3QjtBQUFBLEVBQzNCLEdBQUcsMEJBQTBCO0FBQUEsRUFDN0IsR0FBRywwQkFBMEI7QUFBQSxFQUM3QixHQUFHLHlDQUF5QztBQUM5QztBQUVBLFNBQVMscUJBQXlELFFBQXdCO0FBQ3hGLFFBQU0sWUFBWSxFQUFFLEdBQUcsT0FBTztBQUM5QixTQUFPLFVBQVU7QUFDakIsU0FBTztBQUNUO0FBRUEsU0FBUyxtQkFBcUQ7QUFDNUQsU0FBTztBQUFBLElBQ0wsT0FBTyxRQUFRO0FBQUEsSUFDZjtBQUFBLE1BQ0UsT0FBTztBQUFBLFFBQ0wsa0JBQWtCO0FBQUEsUUFDbEIseUJBQXlCO0FBQUEsUUFDekIsYUFBYTtBQUFBLFFBQ2Isd0JBQXdCO0FBQUEsUUFDeEIsY0FBYztBQUFBLFFBQ2QsbUJBQW1CO0FBQUEsUUFDbkIsU0FBUztBQUFBLFFBQ1QsZ0JBQWdCO0FBQUEsUUFDaEIscUJBQXFCO0FBQUEsUUFDckIsc0JBQXNCO0FBQUEsUUFDdEIsVUFBVTtBQUFBLFFBQ1Ysc0JBQXNCO0FBQUEsUUFDdEIsY0FBYztBQUFBLFFBQ2QsY0FBYztBQUFBLFVBQ1o7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFlBQ0UscUJBQXFCO0FBQUEsVUFDdkI7QUFBQSxRQUNGO0FBQUEsUUFDQSwwQkFBMEI7QUFBQSxVQUN4QjtBQUFBLFVBQ0E7QUFBQSxRQUNGO0FBQUEsUUFDQSxnQkFBZ0I7QUFBQSxRQUNoQixZQUFZO0FBQUEsUUFDWix3QkFBd0I7QUFBQSxRQUN4QixjQUFjO0FBQUEsUUFDZCxhQUFhO0FBQUEsUUFDYixjQUFjO0FBQUEsVUFDWjtBQUFBLFVBQ0E7QUFBQSxZQUNFLE9BQU87QUFBQSxjQUNMO0FBQUEsY0FDQTtBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLFFBQ0EseUJBQXlCO0FBQUEsUUFDekIsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsVUFDaEI7QUFBQSxVQUNBO0FBQUEsWUFDRSxhQUFhO0FBQUEsVUFDZjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLHFCQUFxQjtBQUFBLFFBQ3JCLG9CQUFvQjtBQUFBLFFBQ3BCLGlCQUFpQjtBQUFBLFFBQ2pCLGtCQUFrQjtBQUFBLFFBQ2xCLHdCQUF3QjtBQUFBLFVBQ3RCO0FBQUEsVUFDQTtBQUFBLFlBQ0UsT0FBTztBQUFBLGNBQ0w7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLG1CQUFtQjtBQUFBLFFBQ25CLHlCQUF5QjtBQUFBLFFBQ3pCLGVBQWU7QUFBQSxRQUNmLGdCQUFnQjtBQUFBLFFBQ2hCLGFBQWE7QUFBQSxRQUNiLGtCQUFrQjtBQUFBLFFBQ2xCLGdCQUFnQjtBQUFBLFFBQ2hCLGdCQUFnQjtBQUFBLFFBQ2hCLG9CQUFvQjtBQUFBLFVBQ2xCO0FBQUEsVUFDQTtBQUFBLFlBQ0UsZUFBZTtBQUFBLFlBQ2YsY0FBYztBQUFBLFlBQ2QsUUFBUTtBQUFBLGNBQ047QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLFFBQ0EsbUJBQW1CO0FBQUEsUUFDbkIsZ0JBQWdCO0FBQUEsUUFDaEIsd0JBQXdCO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsUUFDckIsZUFBZTtBQUFBLFFBQ2YsbUJBQW1CO0FBQUEsUUFDbkIseUJBQXlCO0FBQUEsUUFDekIsbUJBQW1CO0FBQUEsUUFDbkIsOEJBQThCO0FBQUEsUUFDOUIsWUFBWTtBQUFBLFFBQ1osb0JBQW9CO0FBQUEsUUFDcEIsaUJBQWlCO0FBQUEsUUFDakIsbUJBQW1CO0FBQUEsUUFDbkIsZ0JBQWdCO0FBQUEsUUFDaEIsYUFBYTtBQUFBLFFBQ2IsK0JBQStCO0FBQUEsUUFDL0Isb0JBQW9CO0FBQUEsUUFDcEIsZ0NBQWdDO0FBQUEsUUFDaEMsdUJBQXVCO0FBQUEsUUFDdkIsdUJBQXVCO0FBQUEsUUFDdkIseUJBQXlCO0FBQUEsUUFDekIseUJBQXlCO0FBQUEsUUFDekIsbUJBQW1CO0FBQUEsUUFDbkIsMkJBQTJCO0FBQUEsUUFDM0IscUJBQXFCO0FBQUEsUUFDckIsMEJBQTBCO0FBQUEsUUFDMUIscUJBQXFCO0FBQUEsUUFDckIscUJBQXFCO0FBQUEsUUFDckIsVUFBVTtBQUFBLFFBQ1YsV0FBVztBQUFBLFFBQ1gsb0JBQW9CO0FBQUEsUUFDcEIsdUJBQXVCO0FBQUEsUUFDdkIseUJBQXlCO0FBQUEsUUFDekIsZ0JBQWdCO0FBQUEsUUFDaEIsa0NBQWtDO0FBQUEsUUFDbEMsOEJBQThCO0FBQUEsUUFDOUIsMkJBQTJCO0FBQUEsUUFDM0IseUJBQXlCO0FBQUEsUUFDekIsd0JBQXdCO0FBQUEsUUFDeEIsZ0NBQWdDO0FBQUEsUUFDaEMseUJBQXlCO0FBQUEsUUFDekIsc0JBQXNCO0FBQUEsUUFDdEIsaUJBQWlCO0FBQUEsUUFDakIsbUJBQW1CO0FBQUEsUUFDbkIsU0FBUztBQUFBLFFBQ1QsMEJBQTBCO0FBQUEsUUFDMUIsaUJBQWlCO0FBQUEsUUFDakIsc0JBQXNCO0FBQUEsUUFDdEIsZUFBZTtBQUFBLFFBQ2YsZUFBZTtBQUFBLFFBQ2YsUUFBUTtBQUFBLE1BQ1Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUywyQ0FBNkU7QUFDcEYsU0FBTztBQUFBLElBQ0w7QUFBQSxNQUNFLFVBQVU7QUFBQSxRQUNSLG1CQUFtQjtBQUFBLFVBQ2pCLFlBQVk7QUFBQSxZQUNWLGdCQUFnQjtBQUFBLFVBQ2xCO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUyxvQkFBc0Q7QUFDN0QsU0FBTztBQUFBLElBQ0wsK0JBQStCO0FBQUEsSUFDL0IsK0JBQStCO0FBQUEsSUFDL0IsK0JBQStCO0FBQUEsSUFDL0IsK0JBQStCO0FBQUEsSUFDL0I7QUFBQSxNQUNFLE9BQU87QUFBQSxRQUNMLDRDQUE0QztBQUFBLFFBQzVDLHVCQUF1QixDQUFDLFNBQVMsZ0JBQWdCO0FBQUEsUUFDakQsa0JBQWtCO0FBQUEsUUFDbEIsMEJBQTBCO0FBQUEsUUFDMUIsaUNBQWlDO0FBQUEsUUFDakMsNkJBQTZCO0FBQUEsUUFDN0IsbUJBQW1CO0FBQUEsUUFDbkIsd0NBQXdDO0FBQUEsUUFDeEMsd0JBQXdCO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsUUFDckIsOEJBQThCO0FBQUEsUUFDOUIsMEJBQTBCO0FBQUEsUUFDMUIsMEJBQTBCO0FBQUEsUUFDMUIsK0JBQStCO0FBQUEsUUFDL0Isa0NBQWtDO0FBQUEsUUFDbEMsdUNBQXVDO0FBQUEsUUFDdkMscUNBQXFDO0FBQUEsUUFDckMsK0JBQStCO0FBQUEsUUFDL0IsNkJBQTZCO0FBQUEsUUFDN0IseUJBQXlCO0FBQUEsUUFDekIsOEJBQThCO0FBQUEsUUFDOUIsaUNBQWlDO0FBQUEsUUFDakMsZ0NBQWdDO0FBQUEsUUFDaEMsMkJBQTJCO0FBQUEsUUFDM0IsaUNBQWlDO0FBQUEsVUFDL0I7QUFBQSxVQUNBO0FBQUEsWUFDRSxPQUFPO0FBQUEsY0FDTDtBQUFBLGNBQ0E7QUFBQSxjQUNBO0FBQUEsWUFDRjtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsUUFDQSw4QkFBOEI7QUFBQSxRQUM5QixxQ0FBcUM7QUFBQSxRQUNyQyxxQ0FBcUM7QUFBQSxNQUN2QztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLDRCQUE4RDtBQUNyRSxTQUFPO0FBQUEsSUFDTDtBQUFBLE1BQ0UsU0FBUztBQUFBLFFBQ1Asb0JBQW9CO0FBQUEsTUFDdEI7QUFBQSxNQUNBLE9BQU87QUFBQSxRQUNMLCtDQUErQztBQUFBLFFBQy9DLCtDQUErQztBQUFBLE1BQ2pEO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsMEJBQTREO0FBQ25FLFNBQU87QUFBQSxJQUNMLGNBQWMsUUFBUSwwQkFBMEI7QUFBQSxFQUNsRDtBQUNGO0FBRUEsU0FBUyxzQkFBd0Q7QUFDL0QsU0FBTztBQUFBLElBQ0wsVUFBVSxRQUFRO0FBQUEsSUFDbEIsVUFBVSxRQUFRLFVBQVU7QUFBQSxNQUMxQixhQUFhO0FBQUEsTUFDYixZQUFZO0FBQUEsTUFDWixhQUFhO0FBQUEsTUFDYixNQUFNO0FBQUEsSUFDUixDQUFDO0FBQUEsSUFDRDtBQUFBLE1BQ0UsT0FBTztBQUFBLFFBQ0wscUJBQXFCO0FBQUEsUUFDckIsZ0NBQWdDO0FBQUEsUUFDaEMsMENBQTBDO0FBQUEsUUFDMUMsNEJBQTRCO0FBQUEsUUFDNUIsbUNBQW1DO0FBQUEsVUFDakM7QUFBQSxVQUNBO0FBQUEsWUFDRSxtQkFBbUI7QUFBQSxjQUNqQixlQUFlO0FBQUEsY0FDZixXQUFXO0FBQUEsWUFDYjtBQUFBLFlBQ0EsbUJBQW1CO0FBQUEsY0FDakIsZUFBZTtBQUFBLGNBQ2YsV0FBVztBQUFBLFlBQ2I7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLFFBQ0EsaUNBQWlDO0FBQUEsVUFDL0I7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFlBQ0UsV0FBVztBQUFBLGNBQ1QsS0FBSztBQUFBLFlBQ1A7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLFFBQ0EscUJBQXFCO0FBQUEsVUFDbkI7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFlBQ0UsdUJBQXVCO0FBQUEsVUFDekI7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLHFCQUF1RDtBQUM5RCxTQUFPO0FBQUE7QUFBQSxJQUVMLEdBQUcsU0FBUyxRQUFRLGtCQUFrQixJQUFJLG9CQUFvQjtBQUFBO0FBQUEsSUFFOUQsR0FBRyxTQUFTLFFBQVEscUJBQXFCLElBQUksb0JBQW9CO0FBQUEsSUFDakU7QUFBQSxNQUNFLGlCQUFpQjtBQUFBLFFBQ2YsZUFBZTtBQUFBLFVBQ2IsY0FBYztBQUFBLFlBQ1osS0FBSztBQUFBLFVBQ1A7QUFBQSxVQUNBLGdCQUFnQjtBQUFBLFVBQ2hCLGlCQUFpQixjQUFjLEtBQUs7QUFBQSxRQUN0QztBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLE1BQ0UsT0FBTztBQUFBLFFBQ0wsb0RBQW9EO0FBQUEsUUFDcEQsb0RBQW9EO0FBQUEsUUFDcEQsMkNBQTJDLENBQUMsU0FBUztBQUFBLFVBQ25ELHNCQUFzQjtBQUFBLFFBQ3hCLENBQUM7QUFBQSxRQUNELG9DQUFvQyxDQUFDLFNBQVM7QUFBQSxVQUM1QyxjQUFjO0FBQUEsWUFDWjtBQUFBLFVBQ0Y7QUFBQSxRQUNGLENBQUM7QUFBQSxRQUNELHFDQUFxQztBQUFBLFVBQ25DO0FBQUEsVUFDQTtBQUFBLFlBQ0UsTUFBTTtBQUFBLFlBQ04sbUJBQW1CO0FBQUEsWUFDbkIsY0FBYztBQUFBLFlBQ2QsMkJBQTJCO0FBQUEsWUFDM0IsZ0NBQWdDO0FBQUEsWUFDaEMsb0JBQW9CO0FBQUEsWUFDcEIsbUJBQW1CO0FBQUEsVUFDckI7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsTUFDRSxVQUFVO0FBQUEsUUFDUixPQUFPO0FBQUEsVUFDTCxTQUFTO0FBQUEsUUFDWDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
371
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL0VTTGludC9lc2xpbnQuY29uZmlnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEVTTGludCBjb25maWd1cmF0aW9uIGZvciBUeXBlU2NyaXB0IHByb2plY3RzIHdpdGggdmFyaW91cyBwbHVnaW5zLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgRVNMaW50IGNvbmZpZ3VyYXRpb25zIGZvciBUeXBlU2NyaXB0IHByb2plY3RzLCBpbnRlZ3JhdGluZyBtdWx0aXBsZSBFU0xpbnQgcGx1Z2luc1xuICogc3VjaCBhcyBgQHR5cGVzY3JpcHQtZXNsaW50L3BhcnNlcmAsIGBAdHlwZXNjcmlwdC1lc2xpbnQvZXNsaW50LXBsdWdpbmAsXG4gKiBgZXNsaW50LXBsdWdpbi1tb2R1bGVzLW5ld2xpbmVzYCwgYEBzdHlsaXN0aWMvZXNsaW50LXBsdWdpbmAuXG4gKiBJdCBzZXRzIHVwIHBhcnNlcnMsIHBsdWdpbnMsIGFuZCBydWxlcyBmb3IgbWFpbnRhaW5pbmcgY29kZSBxdWFsaXR5IGFuZCBjb25zaXN0ZW5jeS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1tYWdpYy1udW1iZXJzICovXG5cbmltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSAnZXNsaW50JztcbmltcG9ydCB0eXBlIHsgSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzIH0gZnJvbSAndHlwZXNjcmlwdC1lc2xpbnQnO1xuXG5pbXBvcnQgZXNsaW50IGZyb20gJ0Blc2xpbnQvanMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0XG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBmbGF0Q29uZmlncyBhcyBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLWltcG9ydC14JztcbmltcG9ydCBlc2xpbnRQbHVnaW5Nb2R1bGVzTmV3bGluZXMgZnJvbSAnZXNsaW50LXBsdWdpbi1tb2R1bGVzLW5ld2xpbmVzJztcbmltcG9ydCBwZXJmZWN0aW9uaXN0IGZyb20gJ2VzbGludC1wbHVnaW4tcGVyZmVjdGlvbmlzdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHRcbmltcG9ydCB0c2VzbGludCBmcm9tICd0eXBlc2NyaXB0LWVzbGludCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4vUGx1Z2luL09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi8uLi9QYXRoLnRzJztcbmltcG9ydCB7IGdldFJvb3RGb2xkZXIgfSBmcm9tICcuLi9Sb290LnRzJztcblxuLyoqXG4gKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zIGZvciBUeXBlU2NyaXB0IHByb2plY3RzLlxuICovXG5leHBvcnQgY29uc3Qgb2JzaWRpYW5EZXZVdGlsc0NvbmZpZ3M6IExpbnRlci5Db25maWdbXSA9IHRzZXNsaW50LmNvbmZpZyhcbiAge1xuICAgIGZpbGVzOiBbXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55VHMpLFxuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzeCksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNjcmlwdHMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzKSxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkVzbGludENvbmZpZ0N0cyxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkVzbGludENvbmZpZ1RzLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzXG4gICAgXVxuICB9LFxuICB7XG4gICAgaWdub3JlczogW1xuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlQYXRoLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlDanMpLFxuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlQYXRoLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlKcyksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueU1qcyksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3QsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgpXG4gICAgXVxuICB9LFxuICAuLi5nZXRFc2xpbnRDb25maWdzKCksXG4gIC4uLmdldFRzZXNsaW50Q29uZmlncygpLFxuICAuLi5nZXRTdHlsaXN0aWNDb25maWdzKCksXG4gIC4uLmdldEltcG9ydFhDb25maWdzKCksXG4gIC4uLmdldFBlcmZlY3Rpb25pc3RDb25maWdzKCksXG4gIC4uLmdldE1vZHVsZXNOZXdsaW5lc0NvbmZpZ3MoKSxcbiAgLi4uZ2V0TW9kdWxlc05ld2xpbmVzQ29uZmlncygpLFxuICAuLi5nZXRFc2xpbnRJbXBvcnRSZXNvbHZlclR5cGVzY3JpcHRDb25maWdzKClcbikgYXMgTGludGVyLkNvbmZpZ1tdO1xuXG5mdW5jdGlvbiBleGNsdWRlRmlsZXNQcm9wZXJ0eTxDb25maWc+KGNvbmZpZzogQ29uZmlnKTogQ29uZmlnIHtcbiAgdHlwZSBDb25maWdXaXRoRmlsZXMgPSB7IGZpbGVzPzogdW5rbm93biB9ICYgQ29uZmlnO1xuICBjb25zdCBuZXdDb25maWcgPSB7IC4uLmNvbmZpZyB9IGFzIENvbmZpZ1dpdGhGaWxlcztcbiAgZGVsZXRlIG5ld0NvbmZpZy5maWxlcztcbiAgcmV0dXJuIG5ld0NvbmZpZztcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50Q29uZmlncygpOiBJbmZpbml0ZURlcHRoQ29uZmlnV2l0aEV4dGVuZHNbXSB7XG4gIHJldHVybiBbXG4gICAgZXNsaW50LmNvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAge1xuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2FjY2Vzc29yLXBhaXJzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2FycmF5LWNhbGxiYWNrLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICdjYW1lbGNhc2UnOiAnZXJyb3InLFxuICAgICAgICAnY2FwaXRhbGl6ZWQtY29tbWVudHMnOiAnZXJyb3InLFxuICAgICAgICAnY29tcGxleGl0eSc6ICdlcnJvcicsXG4gICAgICAgICdjb25zaXN0ZW50LXRoaXMnOiAnZXJyb3InLFxuICAgICAgICAnY3VybHknOiAnZXJyb3InLFxuICAgICAgICAnZGVmYXVsdC1jYXNlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZS1sYXN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtcGFyYW0tbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdlcWVxZXEnOiAnZXJyb3InLFxuICAgICAgICAnZnVuYy1uYW1lLW1hdGNoaW5nJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZXMnOiAnZXJyb3InLFxuICAgICAgICAnZnVuYy1zdHlsZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdkZWNsYXJhdGlvbicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3dBcnJvd0Z1bmN0aW9uczogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICdncm91cGVkLWFjY2Vzc29yLXBhaXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ2dldEJlZm9yZVNldCdcbiAgICAgICAgXSxcbiAgICAgICAgJ2d1YXJkLWZvci1pbic6ICdlcnJvcicsXG4gICAgICAgICduby1hbGVydCc6ICdlcnJvcicsXG4gICAgICAgICduby1hcnJheS1jb25zdHJ1Y3Rvcic6ICdlcnJvcicsXG4gICAgICAgICduby1iaXR3aXNlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWNhbGxlcic6ICdlcnJvcicsXG4gICAgICAgICduby1jb25zb2xlJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3c6IFtcbiAgICAgICAgICAgICAgJ3dhcm4nLFxuICAgICAgICAgICAgICAnZXJyb3InXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8tY29uc3RydWN0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWRpdi1yZWdleCc6ICdlcnJvcicsXG4gICAgICAgICduby1lbHNlLXJldHVybic6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93RWxzZUlmOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWVtcHR5LWZ1bmN0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dGVuZC1uYXRpdmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtYmluZCc6ICdlcnJvcicsXG4gICAgICAgICduby1leHRyYS1sYWJlbCc6ICdlcnJvcicsXG4gICAgICAgICduby1pbXBsaWNpdC1jb2VyY2lvbic6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICchISdcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1pbXBsaWVkLWV2YWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW5uZXItZGVjbGFyYXRpb25zJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWl0ZXJhdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxhYmVsLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbHMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbG9uZS1ibG9ja3MnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbG9uZWx5LWlmJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvb3AtZnVuYyc6ICdlcnJvcicsXG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGV0ZWN0T2JqZWN0czogdHJ1ZSxcbiAgICAgICAgICAgIGVuZm9yY2VDb25zdDogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZTogW1xuICAgICAgICAgICAgICAtMSxcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLW11bHRpLWFzc2lnbic6ICdlcnJvcicsXG4gICAgICAgICduby1tdWx0aS1zdHInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbmVnYXRlZC1jb25kaXRpb24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbmVzdGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tbmV3LWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbmV3LXdyYXBwZXJzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW9iamVjdC1jb25zdHJ1Y3Rvcic6ICdlcnJvcicsXG4gICAgICAgICduby1vY3RhbC1lc2NhcGUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tcHJvbWlzZS1leGVjdXRvci1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tcHJvdG8nOiAnZXJyb3InLFxuICAgICAgICAnbm8tcmV0dXJuLWFzc2lnbic6ICdlcnJvcicsXG4gICAgICAgICduby1zY3JpcHQtdXJsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNlbGYtY29tcGFyZSc6ICdlcnJvcicsXG4gICAgICAgICduby1zZXF1ZW5jZXMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2hhZG93JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZyc6ICdlcnJvcicsXG4gICAgICAgICduby10aHJvdy1saXRlcmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubW9kaWZpZWQtbG9vcC1jb25kaXRpb24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5uZWVkZWQtdGVybmFyeSc6ICdlcnJvcicsXG4gICAgICAgICduby11bnJlYWNoYWJsZS1sb29wJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVudXNlZC1leHByZXNzaW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWFzc2lnbm1lbnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1jYWxsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY29tcHV0ZWQta2V5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY29uY2F0JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1yZW5hbWUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tdmFyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZvaWQnOiAnZXJyb3InLFxuICAgICAgICAnb2JqZWN0LXNob3J0aGFuZCc6ICdlcnJvcicsXG4gICAgICAgICdvcGVyYXRvci1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1hcnJvdy1jYWxsYmFjayc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItY29uc3QnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1uYW1lZC1jYXB0dXJlLWdyb3VwJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1udW1lcmljLWxpdGVyYWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1vYmplY3QtaGFzLW93bic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LXNwcmVhZCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcHJvbWlzZS1yZWplY3QtZXJyb3JzJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1yZWdleC1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVzdC1wYXJhbXMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXNwcmVhZCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItdGVtcGxhdGUnOiAnZXJyb3InLFxuICAgICAgICAncmFkaXgnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hdG9taWMtdXBkYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdyZXF1aXJlLWF3YWl0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3N5bWJvbC1kZXNjcmlwdGlvbic6ICdlcnJvcicsXG4gICAgICAgICd1bmljb2RlLWJvbSc6ICdlcnJvcicsXG4gICAgICAgICd2YXJzLW9uLXRvcCc6ICdlcnJvcicsXG4gICAgICAgICd5b2RhJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpOiBJbmZpbml0ZURlcHRoQ29uZmlnV2l0aEV4dGVuZHNbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgJ2ltcG9ydC9yZXNvbHZlcic6IHtcbiAgICAgICAgICB0eXBlc2NyaXB0OiB7XG4gICAgICAgICAgICBhbHdheXNUcnlUeXBlczogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0SW1wb3J0WENvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy5yZWNvbW1lbmRlZCxcbiAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MudHlwZXNjcmlwdCxcbiAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MuZXJyb3JzLFxuICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy53YXJuaW5ncyxcbiAgICB7XG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvY29uc2lzdGVudC10eXBlLXNwZWNpZmllci1zdHlsZSc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9leHRlbnNpb25zJzogWydlcnJvcicsICdpZ25vcmVQYWNrYWdlcyddLFxuICAgICAgICAnaW1wb3J0LXgvZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvaW1wb3J0cy1maXJzdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uZXdsaW5lLWFmdGVyLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hYnNvbHV0ZS1wYXRoJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWFtZCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbm9ueW1vdXMtZGVmYXVsdC1leHBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tY29tbW9uanMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tY3ljbGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZGVwcmVjYXRlZCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1kdXBsaWNhdGVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWR5bmFtaWMtcmVxdWlyZSc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1lbXB0eS1uYW1lZC1ibG9ja3MnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8taW1wb3J0LW1vZHVsZS1leHBvcnRzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLW11dGFibGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lZC1kZWZhdWx0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLW5hbWVzcGFjZSc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1yZWxhdGl2ZS1wYWNrYWdlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1yZXN0cmljdGVkLXBhdGhzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLXNlbGYtaW1wb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVuYXNzaWduZWQtaW1wb3J0JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxsb3c6IFtcbiAgICAgICAgICAgICAgJyoqLyouY3NzJyxcbiAgICAgICAgICAgICAgJyoqLyouc2FzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNjc3MnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnaW1wb3J0LXgvbm8tdW51c2VkLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tdXNlbGVzcy1wYXRoLXNlZ21lbnRzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLXdlYnBhY2stbG9hZGVyLXN5bnRheCc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldE1vZHVsZXNOZXdsaW5lc0NvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgJ21vZHVsZXMtbmV3bGluZXMnOiBlc2xpbnRQbHVnaW5Nb2R1bGVzTmV3bGluZXNcbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnbW9kdWxlcy1uZXdsaW5lcy9leHBvcnQtZGVjbGFyYXRpb24tbmV3bGluZSc6ICdlcnJvcicsXG4gICAgICAgICdtb2R1bGVzLW5ld2xpbmVzL2ltcG9ydC1kZWNsYXJhdGlvbi1uZXdsaW5lJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIHBlcmZlY3Rpb25pc3QuY29uZmlnc1sncmVjb21tZW5kZWQtYWxwaGFiZXRpY2FsJ11cbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0U3R5bGlzdGljQ29uZmlncygpOiBJbmZpbml0ZURlcHRoQ29uZmlnV2l0aEV4dGVuZHNbXSB7XG4gIHJldHVybiBbXG4gICAgc3R5bGlzdGljLmNvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgc3R5bGlzdGljLmNvbmZpZ3MuY3VzdG9taXplKHtcbiAgICAgIGFycm93UGFyZW5zOiB0cnVlLFxuICAgICAgYnJhY2VTdHlsZTogJzF0YnMnLFxuICAgICAgY29tbWFEYW5nbGU6ICduZXZlcicsXG4gICAgICBzZW1pOiB0cnVlXG4gICAgfSksXG4gICAge1xuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0BzdHlsaXN0aWMvaW5kZW50JzogJ29mZicsXG4gICAgICAgICdAc3R5bGlzdGljL2luZGVudC1iaW5hcnktb3BzJzogJ29mZicsXG4gICAgICAgICdAc3R5bGlzdGljL2pzeC1vbmUtZXhwcmVzc2lvbi1wZXItbGluZSc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9uby1leHRyYS1zZW1pJzogJ2Vycm9yJyxcbiAgICAgICAgJ0BzdHlsaXN0aWMvb2JqZWN0LWN1cmx5LW5ld2xpbmUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBFeHBvcnREZWNsYXJhdGlvbjoge1xuICAgICAgICAgICAgICBtaW5Qcm9wZXJ0aWVzOiAyLFxuICAgICAgICAgICAgICBtdWx0aWxpbmU6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBJbXBvcnREZWNsYXJhdGlvbjoge1xuICAgICAgICAgICAgICBtaW5Qcm9wZXJ0aWVzOiAyLFxuICAgICAgICAgICAgICBtdWx0aWxpbmU6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICdAc3R5bGlzdGljL29wZXJhdG9yLWxpbmVicmVhayc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdiZWZvcmUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAgICAgICAnPSc6ICdhZnRlcidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICdAc3R5bGlzdGljL3F1b3Rlcyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdzaW5nbGUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93VGVtcGxhdGVMaXRlcmFsczogJ25ldmVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0VHNlc2xpbnRDb25maWdzKCk6IEluZmluaXRlRGVwdGhDb25maWdXaXRoRXh0ZW5kc1tdIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tbmFtZWQtYXMtZGVmYXVsdC1tZW1iZXJcbiAgICAuLi50c2VzbGludC5jb25maWdzLnN0cmljdFR5cGVDaGVja2VkLm1hcChleGNsdWRlRmlsZXNQcm9wZXJ0eSksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyXG4gICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHlsaXN0aWNUeXBlQ2hlY2tlZC5tYXAoZXhjbHVkZUZpbGVzUHJvcGVydHkpLFxuICAgIHtcbiAgICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgICAgZWNtYUZlYXR1cmVzOiB7XG4gICAgICAgICAgICBqc3g6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb2plY3RTZXJ2aWNlOiB0cnVlLFxuICAgICAgICAgIHRzY29uZmlnUm9vdERpcjogZ2V0Um9vdEZvbGRlcigpID8/ICcnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGUnOiAnZXJyb3InLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1lbWJlci1hY2Nlc3NpYmlsaXR5JzogJ2Vycm9yJyxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZSc6IFsnZXJyb3InLCB7XG4gICAgICAgICAgYWxsb3dBc1RoaXNQYXJhbWV0ZXI6IHRydWVcbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcyc6IFsnZXJyb3InLCB7XG4gICAgICAgICAgYWxsb3dlZE5hbWVzOiBbXG4gICAgICAgICAgICAndGhhdCdcbiAgICAgICAgICBdXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXJnczogJ2FsbCcsXG4gICAgICAgICAgICBhcmdzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGNhdWdodEVycm9yczogJ2FsbCcsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnNJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgZGVzdHJ1Y3R1cmVkQXJyYXlJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgaWdub3JlUmVzdFNpYmxpbmdzOiB0cnVlLFxuICAgICAgICAgICAgdmFyc0lnbm9yZVBhdHRlcm46ICdeXydcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIHJlYWN0OiB7XG4gICAgICAgICAgdmVyc2lvbjogJ2RldGVjdCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFnQkEsT0FBTyxZQUFZO0FBRW5CLE9BQU8sZUFBZTtBQUN0QixTQUFTLGVBQWUsc0NBQXNDO0FBQzlELE9BQU8saUNBQWlDO0FBQ3hDLE9BQU8sbUJBQW1CO0FBRTFCLE9BQU8sY0FBYztBQUVyQixTQUFTLCtCQUErQjtBQUN4QyxTQUFTLFlBQVk7QUFDckIsU0FBUyxxQkFBcUI7QUFLdkIsTUFBTSwwQkFBMkMsU0FBUztBQUFBLEVBQy9EO0FBQUEsSUFD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
@@ -62,6 +62,22 @@ export declare function ensureStartsWith(str: string, prefix: string): string;
62
62
  * @returns The escaped string.
63
63
  */
64
64
  export declare function escape(str: string): string;
65
+ /**
66
+ * Checks if a string has a single occurrence of a search value.
67
+ *
68
+ * @param str - The string to check.
69
+ * @param searchValue - The search value to check for.
70
+ * @returns `true` if the string has a single occurrence of the search value, `false` otherwise.
71
+ */
72
+ export declare function hasSingleOccurrence(str: string, searchValue: string): boolean;
73
+ /**
74
+ * Indents a string by adding a prefix to each line.
75
+ *
76
+ * @param text - The string to indent.
77
+ * @param prefix - The prefix to add to each line.
78
+ * @returns The indented string.
79
+ */
80
+ export declare function indent(text: string, prefix: string): string;
65
81
  /**
66
82
  * Inserts a substring at a specified position in a string.
67
83
  *
@@ -142,4 +158,13 @@ export declare function trimStart(str: string, prefix: string, validate?: boolea
142
158
  * @returns The unescaped string.
143
159
  */
144
160
  export declare function unescape(str: string): string;
161
+ /**
162
+ * Unindents a string by removing a prefix from each line.
163
+ *
164
+ * @param text - The string to unindent.
165
+ * @param prefix - The prefix to remove from each line.
166
+ * @param shouldThrowIfNotIndented - If `true`, throws an error if a line is not indented with the prefix.
167
+ * @returns The unindented string.
168
+ */
169
+ export declare function unindent(text: string, prefix: string, shouldThrowIfNotIndented?: boolean): string;
145
170
  export {};
@@ -32,6 +32,14 @@ function ensureStartsWith(str, prefix) {
32
32
  function escape(str) {
33
33
  return replace(str, ESCAPE_MAP);
34
34
  }
35
+ function hasSingleOccurrence(str, searchValue) {
36
+ const firstIndex = str.indexOf(searchValue);
37
+ const lastIndex = str.lastIndexOf(searchValue);
38
+ return firstIndex !== -1 && firstIndex === lastIndex;
39
+ }
40
+ function indent(text, prefix) {
41
+ return text.split("\n").map((line) => `${prefix}${line}`).join("\n");
42
+ }
35
43
  function insertAt(str, substring, startIndex, endIndex) {
36
44
  endIndex ??= startIndex;
37
45
  return str.slice(0, startIndex) + substring + str.slice(endIndex);
@@ -120,10 +128,23 @@ function trimStart(str, prefix, validate) {
120
128
  function unescape(str) {
121
129
  return replace(str, UNESCAPE_MAP);
122
130
  }
131
+ function unindent(text, prefix, shouldThrowIfNotIndented = false) {
132
+ return text.split("\n").map((line) => {
133
+ if (line.startsWith(prefix)) {
134
+ return line.slice(prefix.length);
135
+ }
136
+ if (shouldThrowIfNotIndented) {
137
+ throw new Error(`Line "${line}" is not indented with "${prefix}"`);
138
+ }
139
+ return line;
140
+ }).join("\n");
141
+ }
123
142
  export {
124
143
  ensureEndsWith,
125
144
  ensureStartsWith,
126
145
  escape,
146
+ hasSingleOccurrence,
147
+ indent,
127
148
  insertAt,
128
149
  makeValidVariableName,
129
150
  normalize,
@@ -132,6 +153,7 @@ export {
132
153
  replaceAllAsync,
133
154
  trimEnd,
134
155
  trimStart,
135
- unescape
156
+ unescape,
157
+ unindent
136
158
  };
137
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICcuL1JlZ0V4cC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG4vKipcbiAqIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXT47XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBmb3IgdGhlIGByZXBsYWNlQWxsYC9gcmVwbGFjZUFsbEFzeW5jYCBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvbW1vbkFyZ3Mge1xuICAvKipcbiAgICogVGhlIGdyb3VwcyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBncm91cHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRpY2VzIG9mIHRoZSBncm91cHMgdGhhdCB3ZXJlIG5vdCBmb3VuZCBpbiB0aGUgbWF0Y2guXG4gICAqL1xuICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogVGhlIG9mZnNldCBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1YnN0cmluZyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzdWJzdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVwbGFjZXI8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPiA9ICgoLi4uYXJnczogW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXSkgPT4gU3RyaW5nUmVwbGFjZW1lbnQpIHwgU3RyaW5nUmVwbGFjZW1lbnQ7XG5cbnR5cGUgU3RyaW5nUmVwbGFjZW1lbnQgPSBNYXliZVJldHVybjxzdHJpbmc+O1xuXG4vKipcbiAqIE1hcHBpbmcgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIGVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBFU0NBUEVfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnXFxuJzogJ1xcXFxuJyxcbiAgJ1xccic6ICdcXFxccicsXG4gICdcXHQnOiAnXFxcXHQnLFxuICAnXFxiJzogJ1xcXFxiJyxcbiAgJ1xcZic6ICdcXFxcZicsXG4gICdcXCcnOiAnXFxcXFxcJycsXG4gICdcIic6ICdcXFxcXCInLFxuICAnXFxcXCc6ICdcXFxcXFxcXCdcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogTWFwcGluZyBvZiBlc2NhcGVkIHNwZWNpYWwgY2hhcmFjdGVycyB0byB0aGVpciB1bmVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBVTkVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEVTQ0FQRV9NQVApKSB7XG4gIFVORVNDQVBFX01BUFt2YWx1ZV0gPSBrZXk7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBlbmRzIHdpdGggdGhlIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUVuZHNXaXRoKHN0cjogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIuZW5kc1dpdGgoc3VmZml4KSA/IHN0ciA6IHN0ciArIHN1ZmZpeDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBlbnN1cmUuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHRoYXQgc3RhcnRzIHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0YXJ0c1dpdGgoc3RyOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5zdGFydHNXaXRoKHByZWZpeCkgPyBzdHIgOiBwcmVmaXggKyBzdHI7XG59XG5cbi8qKlxuICogRXNjYXBlcyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBFU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGEgc3Vic3RyaW5nIGF0IGEgc3BlY2lmaWVkIHBvc2l0aW9uIGluIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGluc2VydCB0aGUgc3Vic3RyaW5nIGludG8uXG4gKiBAcGFyYW0gc3Vic3RyaW5nIC0gVGhlIHN1YnN0cmluZyB0byBpbnNlcnQuXG4gKiBAcGFyYW0gc3RhcnRJbmRleCAtIFRoZSBpbmRleCB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBhdC5cbiAqIEBwYXJhbSBlbmRJbmRleCAtIFRoZSBpbmRleCB0byBlbmQgdGhlIHN1YnN0cmluZyBhdC5cbiAqIEByZXR1cm5zIFRoZSBtb2RpZmllZCBzdHJpbmcgd2l0aCB0aGUgc3Vic3RyaW5nIGluc2VydGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QXQoc3RyOiBzdHJpbmcsIHN1YnN0cmluZzogc3RyaW5nLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgZW5kSW5kZXggPz89IHN0YXJ0SW5kZXg7XG4gIHJldHVybiBzdHIuc2xpY2UoMCwgc3RhcnRJbmRleCkgKyBzdWJzdHJpbmcgKyBzdHIuc2xpY2UoZW5kSW5kZXgpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIGludG8gYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlIG5hbWUgYnkgcmVwbGFjaW5nIGludmFsaWQgY2hhcmFjdGVycyB3aXRoIHVuZGVyc2NvcmVzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWQgdmFyaWFibGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VWYWxpZFZhcmlhYmxlTmFtZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgL1teYS16QS1aMC05X10vZywgJ18nKTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgc3RyaW5nIGJ5IGNvbnZlcnRpbmcgaXQgdG8gdGhlIE5GQyBmb3JtIGFuZCByZXBsYWNpbmcgbm9uLWJyZWFraW5nIHNwYWNlcyB3aXRoIHJlZ3VsYXIgc3BhY2VzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgL1xcdTAwQTB8XFx1MjAyRi9nLCAnICcpLm5vcm1hbGl6ZSgnTkZDJyk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgb2NjdXJyZW5jZXMgb2Ygc3RyaW5ncyBpbiBhIGdpdmVuIHN0cmluZyBiYXNlZCBvbiBhIHJlcGxhY2VtZW50cyBtYXAuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gcGVyZm9ybSByZXBsYWNlbWVudHMgb24uXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRzTWFwIC0gQW4gb2JqZWN0IG1hcHBpbmcgc3RyaW5ncyB0byB0aGVpciByZXBsYWNlbWVudCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlKHN0cjogc3RyaW5nLCByZXBsYWNlbWVudHNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKHJlcGxhY2VtZW50c01hcCkubWFwKChzb3VyY2UpID0+IGVzY2FwZVJlZ0V4cChzb3VyY2UpKS5qb2luKCd8JyksICdnJyk7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgcmVnRXhwLCAoeyBzdWJzdHJpbmc6IHNvdXJjZSB9KSA9PiByZXBsYWNlbWVudHNNYXBbc291cmNlXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKGBVbmV4cGVjdGVkIHJlcGxhY2VtZW50IHNvdXJjZTogJHtzb3VyY2V9YCkpKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggc3RyaW5nIG9yIHBhdHRlcm4gd2l0aCB0aGUgcmVzdWx0cyBvZiBhbiByZXBsYWNlciBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlcGxhY2VHcm91cEFyZ3MgLSBUaGUgdHlwZSBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHJlcGxhY2VyIC0gQSByZXBsYWNlciBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUFsbDxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+KFxuICBzdHI6IHN0cmluZyxcbiAgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgcmVwbGFjZXI6IFJlcGxhY2VyPFJlcGxhY2VHcm91cEFyZ3M+XG4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBpZiAoc2VhcmNoVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXNlYXJjaFZhbHVlLmdsb2JhbCkge1xuICAgIHNlYXJjaFZhbHVlID0gbmV3IFJlZ0V4cChzZWFyY2hWYWx1ZS5zb3VyY2UsIGAke3NlYXJjaFZhbHVlLmZsYWdzfWdgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoc2VhcmNoVmFsdWUsIChzdWJzdHJpbmc6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgY29uc3QgU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHID0gMjtcbiAgICBjb25zdCBoYXNHcm91cHNBcmcgPSB0eXBlb2YgYXJncy5hdCgtMSkgPT09ICdvYmplY3QnO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gaGFzR3JvdXBzQXJnID8gYXJncy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiBhcmdzLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCBjb21tb25BcmdzOiBSZXBsYWNlQ29tbW9uQXJncyA9IHtcbiAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJnID8gYXJncy5hdCgtMSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6IHVuZGVmaW5lZCxcbiAgICAgIG1pc3NpbmdHcm91cEluZGljZXM6IFtdLFxuICAgICAgb2Zmc2V0OiBhcmdzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgc291cmNlOiBhcmdzLmF0KHNvdXJjZUluZGV4KSBhcyBzdHJpbmcsXG4gICAgICBzdWJzdHJpbmdcbiAgICB9O1xuXG4gICAgY29uc3QgZ3JvdXBBcmdzID0gYXJncy5zbGljZSgwLCBzb3VyY2VJbmRleCAtIDEpLm1hcCgoYXJnLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb21tb25BcmdzLm1pc3NpbmdHcm91cEluZGljZXMucHVzaChpbmRleCk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGFyZ3VtZW50IHR5cGU6ICR7dHlwZW9mIGFyZ31gKTtcbiAgICB9KSBhcyBSZXBsYWNlR3JvdXBBcmdzO1xuXG4gICAgcmV0dXJuIChyZXBsYWNlcihjb21tb25BcmdzLCAuLi5ncm91cEFyZ3MpIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gY29tbW9uQXJncy5zdWJzdHJpbmc7XG4gIH0pO1xufVxuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IHJlcGxhY2VzIGFsbCBvY2N1cnJlbmNlcyBvZiBhIHNlYXJjaCBzdHJpbmcgb3IgcGF0dGVybiB3aXRoIHRoZSByZXN1bHRzIG9mIGFuIGFzeW5jaHJvbm91cyByZXBsYWNlciBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlcGxhY2VHcm91cEFyZ3MgLSBUaGUgdHlwZSBvZiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHJlcGxhY2VyIC0gQSBzeW5jaHJvbm91cy9hc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbGFjZUFsbEFzeW5jPFJlcGxhY2VHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4oXG4gIHN0cjogc3RyaW5nLFxuICBzZWFyY2hWYWx1ZTogUmVnRXhwIHwgc3RyaW5nLFxuICByZXBsYWNlcjogQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzPixcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgYWJvcnRTaWduYWwgPz89IGFib3J0U2lnbmFsTmV2ZXIoKTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICBjb25zdCByZXBsYWNlbWVudEFzeW5jRm5zOiAoKCkgPT4gUHJvbWlzZTxTdHJpbmdSZXBsYWNlbWVudD4pW10gPSBbXTtcblxuICByZXBsYWNlQWxsPFJlcGxhY2VHcm91cEFyZ3M+KHN0ciwgc2VhcmNoVmFsdWUsIChjb21tb25BcmdzLCAuLi5ncm91cEFyZ3MpID0+IHtcbiAgICByZXBsYWNlbWVudEFzeW5jRm5zLnB1c2goKCkgPT4gcmVzb2x2ZVZhbHVlKHJlcGxhY2VyLCBhYm9ydFNpZ25hbCwgY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSk7XG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICBjb25zdCByZXBsYWNlbWVudHM6IFN0cmluZ1JlcGxhY2VtZW50W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFzeW5jRm4gb2YgcmVwbGFjZW1lbnRBc3luY0Zucykge1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgcmVwbGFjZW1lbnRzLnB1c2goYXdhaXQgYXN5bmNGbigpKTtcbiAgfVxuXG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIHJldHVybiByZXBsYWNlQWxsKHN0ciwgc2VhcmNoVmFsdWUsIChhcmdzKTogc3RyaW5nID0+IHJlcGxhY2VtZW50cy5zaGlmdCgpID8/IGFyZ3Muc3Vic3RyaW5nKTtcbn1cblxuLyoqXG4gKiBUcmltcyB0aGUgc3BlY2lmaWVkIHN1ZmZpeCBmcm9tIHRoZSBlbmQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBzaG91bGRWYWxpZGF0ZSAtIElmIHRydWUsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RyaW5nIGRvZXMgbm90IGVuZCB3aXRoIHRoZSBzdWZmaXguXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGB2YWxpZGF0ZWAgaXMgdHJ1ZSBhbmQgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbUVuZChzdHI6IHN0cmluZywgc3VmZml4OiBzdHJpbmcsIHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuZW5kc1dpdGgoc3VmZml4KSkge1xuICAgIHJldHVybiBzdHIuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IGVuZCB3aXRoIHN1ZmZpeCAke3N1ZmZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHZhbGlkYXRlIC0gSWYgdHJ1ZSwgdGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIHRydWUgYW5kIHRoZSBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgcHJlZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cjogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgdmFsaWRhdGU/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKHN0ci5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4gc3RyLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IHN0YXJ0IHdpdGggcHJlZml4ICR7cHJlZml4fWApO1xuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiBVbmVzY2FwZXMgYSBzdHJpbmcgYnkgcmVwbGFjaW5nIGVzY2FwZSBzZXF1ZW5jZXMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdW5lc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgdW5lc2NhcGVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBVTkVTQ0FQRV9NQVApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQVNBLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsb0JBQW9CO0FBK0M3QixNQUFNLGFBQXFDO0FBQUEsRUFDekMsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sS0FBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sS0FBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUNSO0FBS0EsTUFBTSxlQUF1QyxDQUFDO0FBQzlDLFdBQVcsQ0FBQyxLQUFLLEtBQUssS0FBSyxPQUFPLFFBQVEsVUFBVSxHQUFHO0FBQ3JELGVBQWEsS0FBSyxJQUFJO0FBQ3hCO0FBU08sU0FBUyxlQUFlLEtBQWEsUUFBd0I7QUFDbEUsU0FBTyxJQUFJLFNBQVMsTUFBTSxJQUFJLE1BQU0sTUFBTTtBQUM1QztBQVNPLFNBQVMsaUJBQWlCLEtBQWEsUUFBd0I7QUFDcEUsU0FBTyxJQUFJLFdBQVcsTUFBTSxJQUFJLE1BQU0sU0FBUztBQUNqRDtBQVFPLFNBQVMsT0FBTyxLQUFxQjtB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
159
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igc3RyaW5nIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgdGhyb3dFeHByZXNzaW9uIH0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICcuL1JlZ0V4cC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuXG4vKipcbiAqIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXT47XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBmb3IgdGhlIGByZXBsYWNlQWxsYC9gcmVwbGFjZUFsbEFzeW5jYCBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvbW1vbkFyZ3Mge1xuICAvKipcbiAgICogVGhlIGdyb3VwcyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBncm91cHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRpY2VzIG9mIHRoZSBncm91cHMgdGhhdCB3ZXJlIG5vdCBmb3VuZCBpbiB0aGUgbWF0Y2guXG4gICAqL1xuICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogVGhlIG9mZnNldCBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1YnN0cmluZyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzdWJzdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVwbGFjZXI8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPiA9ICgoLi4uYXJnczogW1JlcGxhY2VDb21tb25BcmdzLCAuLi5SZXBsYWNlR3JvdXBBcmdzXSkgPT4gU3RyaW5nUmVwbGFjZW1lbnQpIHwgU3RyaW5nUmVwbGFjZW1lbnQ7XG5cbnR5cGUgU3RyaW5nUmVwbGFjZW1lbnQgPSBNYXliZVJldHVybjxzdHJpbmc+O1xuXG4vKipcbiAqIE1hcHBpbmcgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIGVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBFU0NBUEVfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnXFxuJzogJ1xcXFxuJyxcbiAgJ1xccic6ICdcXFxccicsXG4gICdcXHQnOiAnXFxcXHQnLFxuICAnXFxiJzogJ1xcXFxiJyxcbiAgJ1xcZic6ICdcXFxcZicsXG4gICdcXCcnOiAnXFxcXFxcJycsXG4gICdcIic6ICdcXFxcXCInLFxuICAnXFxcXCc6ICdcXFxcXFxcXCdcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogTWFwcGluZyBvZiBlc2NhcGVkIHNwZWNpYWwgY2hhcmFjdGVycyB0byB0aGVpciB1bmVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBVTkVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEVTQ0FQRV9NQVApKSB7XG4gIFVORVNDQVBFX01BUFt2YWx1ZV0gPSBrZXk7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBlbmRzIHdpdGggdGhlIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUVuZHNXaXRoKHN0cjogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIuZW5kc1dpdGgoc3VmZml4KSA/IHN0ciA6IHN0ciArIHN1ZmZpeDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBlbnN1cmUuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHRoYXQgc3RhcnRzIHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0YXJ0c1dpdGgoc3RyOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5zdGFydHNXaXRoKHByZWZpeCkgPyBzdHIgOiBwcmVmaXggKyBzdHI7XG59XG5cbi8qKlxuICogRXNjYXBlcyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBFU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgYSBzZWFyY2ggdmFsdWUuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc2VhcmNoIHZhbHVlIHRvIGNoZWNrIGZvci5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgc3RyaW5nIGhhcyBhIHNpbmdsZSBvY2N1cnJlbmNlIG9mIHRoZSBzZWFyY2ggdmFsdWUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzU2luZ2xlT2NjdXJyZW5jZShzdHI6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBmaXJzdEluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICBjb25zdCBsYXN0SW5kZXggPSBzdHIubGFzdEluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICByZXR1cm4gZmlyc3RJbmRleCAhPT0gLTEgJiYgZmlyc3RJbmRleCA9PT0gbGFzdEluZGV4O1xufVxuXG4vKipcbiAqIEluZGVudHMgYSBzdHJpbmcgYnkgYWRkaW5nIGEgcHJlZml4IHRvIGVhY2ggbGluZS5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSBzdHJpbmcgdG8gaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gYWRkIHRvIGVhY2ggbGluZS5cbiAqIEByZXR1cm5zIFRoZSBpbmRlbnRlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IGAke3ByZWZpeH0ke2xpbmV9YCkuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIHN1YnN0cmluZyBhdCBhIHNwZWNpZmllZCBwb3NpdGlvbiBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBpbnRvLlxuICogQHBhcmFtIHN1YnN0cmluZyAtIFRoZSBzdWJzdHJpbmcgdG8gaW5zZXJ0LlxuICogQHBhcmFtIHN0YXJ0SW5kZXggLSBUaGUgaW5kZXggdG8gaW5zZXJ0IHRoZSBzdWJzdHJpbmcgYXQuXG4gKiBAcGFyYW0gZW5kSW5kZXggLSBUaGUgaW5kZXggdG8gZW5kIHRoZSBzdWJzdHJpbmcgYXQuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggdGhlIHN1YnN0cmluZyBpbnNlcnRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF0KHN0cjogc3RyaW5nLCBzdWJzdHJpbmc6IHN0cmluZywgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleD86IG51bWJlcik6IHN0cmluZyB7XG4gIGVuZEluZGV4ID8/PSBzdGFydEluZGV4O1xuICByZXR1cm4gc3RyLnNsaWNlKDAsIHN0YXJ0SW5kZXgpICsgc3Vic3RyaW5nICsgc3RyLnNsaWNlKGVuZEluZGV4KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBpbnRvIGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZSBuYW1lIGJ5IHJlcGxhY2luZyBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aCB1bmRlcnNjb3Jlcy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHZhbGlkIHZhcmlhYmxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVmFsaWRWYXJpYWJsZU5hbWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHN0cmluZyBieSBjb252ZXJ0aW5nIGl0IHRvIHRoZSBORkMgZm9ybSBhbmQgcmVwbGFjaW5nIG5vbi1icmVha2luZyBzcGFjZXMgd2l0aCByZWd1bGFyIHNwYWNlcy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIC9cXHUwMEEwfFxcdTIwMkYvZywgJyAnKS5ub3JtYWxpemUoJ05GQycpO1xufVxuXG4vKipcbiAqIFJlcGxhY2VzIG9jY3VycmVuY2VzIG9mIHN0cmluZ3MgaW4gYSBnaXZlbiBzdHJpbmcgYmFzZWQgb24gYSByZXBsYWNlbWVudHMgbWFwLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzIG9uLlxuICogQHBhcmFtIHJlcGxhY2VtZW50c01hcCAtIEFuIG9iamVjdCBtYXBwaW5nIHN0cmluZ3MgdG8gdGhlaXIgcmVwbGFjZW1lbnQgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHJlcGxhY2VtZW50cyBhcHBsaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShzdHI6IHN0cmluZywgcmVwbGFjZW1lbnRzTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhyZXBsYWNlbWVudHNNYXApLm1hcCgoc291cmNlKSA9PiBlc2NhcGVSZWdFeHAoc291cmNlKSkuam9pbignfCcpLCAnZycpO1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHJlZ0V4cCwgKHsgc3Vic3RyaW5nOiBzb3VyY2UgfSkgPT4gcmVwbGFjZW1lbnRzTWFwW3NvdXJjZV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcihgVW5leHBlY3RlZCByZXBsYWNlbWVudCBzb3VyY2U6ICR7c291cmNlfWApKSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgcmVwbGFjZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VBbGw8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPihcbiAgc3RyOiBzdHJpbmcsXG4gIHNlYXJjaFZhbHVlOiBSZWdFeHAgfCBzdHJpbmcsXG4gIHJlcGxhY2VyOiBSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmdzPlxuKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgaWYgKHNlYXJjaFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwICYmICFzZWFyY2hWYWx1ZS5nbG9iYWwpIHtcbiAgICBzZWFyY2hWYWx1ZSA9IG5ldyBSZWdFeHAoc2VhcmNoVmFsdWUuc291cmNlLCBgJHtzZWFyY2hWYWx1ZS5mbGFnc31nYCk7XG4gIH1cblxuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHIucmVwbGFjZUFsbChzZWFyY2hWYWx1ZSwgcmVwbGFjZXIpO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCAoc3Vic3RyaW5nOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgIGNvbnN0IFNPVVJDRV9JTkRFWF9PRkZTRVRfRk9SX0dST1VQX0FSRyA9IDI7XG4gICAgY29uc3QgaGFzR3JvdXBzQXJnID0gdHlwZW9mIGFyZ3MuYXQoLTEpID09PSAnb2JqZWN0JztcbiAgICBjb25zdCBzb3VyY2VJbmRleCA9IGhhc0dyb3Vwc0FyZyA/IGFyZ3MubGVuZ3RoIC0gU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHIDogYXJncy5sZW5ndGggLSAxO1xuXG4gICAgY29uc3QgY29tbW9uQXJnczogUmVwbGFjZUNvbW1vbkFyZ3MgPSB7XG4gICAgICBncm91cHM6IGhhc0dyb3Vwc0FyZyA/IGFyZ3MuYXQoLTEpIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gOiB1bmRlZmluZWQsXG4gICAgICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBbXSxcbiAgICAgIG9mZnNldDogYXJncy5hdChzb3VyY2VJbmRleCAtIDEpIGFzIG51bWJlcixcbiAgICAgIHNvdXJjZTogYXJncy5hdChzb3VyY2VJbmRleCkgYXMgc3RyaW5nLFxuICAgICAgc3Vic3RyaW5nXG4gICAgfTtcblxuICAgIGNvbnN0IGdyb3VwQXJncyA9IGFyZ3Muc2xpY2UoMCwgc291cmNlSW5kZXggLSAxKS5tYXAoKGFyZywgaW5kZXgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29tbW9uQXJncy5taXNzaW5nR3JvdXBJbmRpY2VzLnB1c2goaW5kZXgpO1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBhcmd1bWVudCB0eXBlOiAke3R5cGVvZiBhcmd9YCk7XG4gICAgfSkgYXMgUmVwbGFjZUdyb3VwQXJncztcblxuICAgIHJldHVybiAocmVwbGFjZXIoY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/IGNvbW1vbkFyZ3Muc3Vic3RyaW5nO1xuICB9KTtcbn1cblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSByZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggc3RyaW5nIG9yIHBhdHRlcm4gd2l0aCB0aGUgcmVzdWx0cyBvZiBhbiBhc3luY2hyb25vdXMgcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgc3luY2hyb25vdXMvYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcGxhY2VBbGxBc3luYzxSZXBsYWNlR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+KFxuICBzdHI6IHN0cmluZyxcbiAgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgcmVwbGFjZXI6IEFzeW5jUmVwbGFjZXI8UmVwbGFjZUdyb3VwQXJncz4sXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGFib3J0U2lnbmFsID8/PSBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZXIpO1xuICB9XG5cbiAgY29uc3QgcmVwbGFjZW1lbnRBc3luY0ZuczogKCgpID0+IFByb21pc2U8U3RyaW5nUmVwbGFjZW1lbnQ+KVtdID0gW107XG5cbiAgcmVwbGFjZUFsbDxSZXBsYWNlR3JvdXBBcmdzPihzdHIsIHNlYXJjaFZhbHVlLCAoY29tbW9uQXJncywgLi4uZ3JvdXBBcmdzKSA9PiB7XG4gICAgcmVwbGFjZW1lbnRBc3luY0Zucy5wdXNoKCgpID0+IHJlc29sdmVWYWx1ZShyZXBsYWNlciwgYWJvcnRTaWduYWwsIGNvbW1vbkFyZ3MsIC4uLmdyb3VwQXJncykpO1xuICAgIHJldHVybiAnJztcbiAgfSk7XG5cbiAgY29uc3QgcmVwbGFjZW1lbnRzOiBTdHJpbmdSZXBsYWNlbWVudFtdID0gW107XG5cbiAgZm9yIChjb25zdCBhc3luY0ZuIG9mIHJlcGxhY2VtZW50QXN5bmNGbnMpIHtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIHJlcGxhY2VtZW50cy5wdXNoKGF3YWl0IGFzeW5jRm4oKSk7XG4gIH1cblxuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICByZXR1cm4gcmVwbGFjZUFsbChzdHIsIHNlYXJjaFZhbHVlLCAoYXJncyk6IHN0cmluZyA9PiByZXBsYWNlbWVudHMuc2hpZnQoKSA/PyBhcmdzLnN1YnN0cmluZyk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBzdWZmaXggZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcGFyYW0gc3VmZml4IC0gVGhlIHN1ZmZpeCB0byByZW1vdmUgZnJvbSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0gc2hvdWxkVmFsaWRhdGUgLSBJZiB0cnVlLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIHRydWUgYW5kIHRoZSBzdHJpbmcgZG9lcyBub3QgZW5kIHdpdGggdGhlIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1FbmQoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nLCBzaG91bGRWYWxpZGF0ZT86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoc3RyLmVuZHNXaXRoKHN1ZmZpeCkpIHtcbiAgICByZXR1cm4gc3RyLnNsaWNlKDAsIC1zdWZmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmIChzaG91bGRWYWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBlbmQgd2l0aCBzdWZmaXggJHtzdWZmaXh9YCk7XG4gIH1cblxuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgcHJlZml4IGZyb20gdGhlIHN0YXJ0IG9mIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byByZW1vdmUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB2YWxpZGF0ZSAtIElmIHRydWUsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqIEByZXR1cm5zIFRoZSB0cmltbWVkIHN0cmluZy5cbiAqIEB0aHJvd3MgSWYgYHZhbGlkYXRlYCBpcyB0cnVlIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHByZWZpeCAke3ByZWZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBlc2NhcGUgc2VxdWVuY2VzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlKHN0ciwgVU5FU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBVbmluZGVudHMgYSBzdHJpbmcgYnkgcmVtb3ZpbmcgYSBwcmVmaXggZnJvbSBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICogQHBhcmFtIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCAtIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHVuaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gbGluZS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICB9XG4gICAgaWYgKHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMaW5lIFwiJHtsaW5lfVwiIGlzIG5vdCBpbmRlbnRlZCB3aXRoIFwiJHtwcmVmaXh9XCJgKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0pLmpvaW4oJ1xcbicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQVNBLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsb0JBQW9CO0FBK0M3QixNQUFNLGFBQXFDO0FBQUEsRUFDekMsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sS0FBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sS0FBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUNSO0FBS0EsTUFBTSxlQUF1QyxDQUFDO0FBQzlDLFdBQVcsQ0FBQyxLQUFLLEtBQUssS0FBSyxPQUFPLFFBQVEsVUFBVSxHQUFHO0FBQ3JELGVBQWEsS0FBSyxJQUFJO0FBQ3hCO0FBU08sU0FBUyxlQUFlLEtBQWEsUUFBd0I7QUFDbEUsU0FBTyxJQUFJLFNBQVMsTUFBTSxJQUFJLE1BQU0sTUFBTTtBQUM1QztBQVNPLFNBQVMsaUJBQWlCLEtBQWEsUUFBd0I7QUFDcEUsU0FBTyxJQUFJLFdBQVcsTUFBTSxJQUFJLE1BQU0sU0FBUztBQUNqRDtBQVFPLFNBQVMsT0FBTyxLQUFxQjtBQUMxQyxTQUFPLFFBQVEsS0FBSyxVQUFVO0FBQ2hDO0FBU08sU0FBUyxvQkFBb0IsS0FBYSxhQUE4QjtBQUM3RSxRQUFNLGFBQWEsSUFBSSxRQUFRLFdBQVc7QUFDMUMsUUFBTSxZQUFZLElBQUksWUFBWSxXQUFXO0FBQzdDLFNBQU8sZUFBZSxNQUFNLGVBQWU7QUFDN0M7QUFTTyxTQUFTLE9BQU8sTUFBYyxRQUF3QjtBQUMzRCxTQUFPLEtBQUssTUFBTSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEdB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
@@ -3,23 +3,119 @@
3
3
  *
4
4
  * This module provides utility functions for processing code blocks in Obsidian.
5
5
  */
6
- import type { App, MarkdownPostProcessorContext } from 'obsidian';
6
+ import type { App, MarkdownPostProcessorContext, MarkdownSectionInformation } from 'obsidian';
7
7
  import type { ValueProvider } from '../ValueProvider.mjs';
8
8
  /**
9
- * Retrieves the argument of a code block from the given MarkdownPostProcessorContext and HTMLElement.
9
+ * Represents the information about a code block in a Markdown section.
10
+ */
11
+ export interface CodeBlockMarkdownSectionInformation extends MarkdownSectionInformation {
12
+ /**
13
+ * The arguments of the code block.
14
+ */
15
+ args: string;
16
+ /**
17
+ * The end delimiter of the code block.
18
+ */
19
+ endDelimiter: string;
20
+ /**
21
+ * The language of the code block.
22
+ */
23
+ language: string;
24
+ /**
25
+ * The prefix of the code block.
26
+ */
27
+ prefix: string;
28
+ /**
29
+ * The start delimiter of the code block.
30
+ */
31
+ startDelimiter: string;
32
+ }
33
+ /**
34
+ * Represents the options for getting the information about a code block in a Markdown section.
35
+ */
36
+ export interface GetCodeBlockSectionInfoOptions {
37
+ /**
38
+ * The Obsidian App object.
39
+ */
40
+ app: App;
41
+ /**
42
+ * The MarkdownPostProcessorContext object.
43
+ */
44
+ ctx: MarkdownPostProcessorContext;
45
+ /**
46
+ * The HTMLElement representing the code block.
47
+ */
48
+ el: HTMLElement;
49
+ /**
50
+ * The source of the code block.
51
+ */
52
+ source: string;
53
+ }
54
+ /**
55
+ * Represents the options for inserting text after a code block.
56
+ */
57
+ export interface InsertCodeBlockOptions extends GetCodeBlockSectionInfoOptions {
58
+ /**
59
+ * The number of lines to offset the insertion by. Default is `0`.
60
+ */
61
+ lineOffset?: number;
62
+ /**
63
+ * Whether to preserve the line prefix of the code block. Default is `false`.
64
+ */
65
+ shouldPreserveLinePrefix?: boolean;
66
+ /**
67
+ * The text to insert after the code block.
68
+ */
69
+ text: string;
70
+ }
71
+ /**
72
+ * Represents the options for replacing a code block.
73
+ */
74
+ export interface ReplaceCodeBlockOptions extends GetCodeBlockSectionInfoOptions {
75
+ /**
76
+ * The abort signal to control the execution of the function.
77
+ */
78
+ abortSignal?: AbortSignal;
79
+ /**
80
+ * The provider that provides the new code block.
81
+ */
82
+ codeBlockProvider: ValueProvider<string, [string]>;
83
+ /**
84
+ * Whether to preserve the line prefix of the code block. Default is `false`.
85
+ */
86
+ shouldPreserveLinePrefix?: boolean;
87
+ }
88
+ /**
89
+ * Gets the information about a code block in a Markdown section.
90
+ *
91
+ * @param options - The options for the function.
92
+ * @returns The information about the code block in the Markdown section.
93
+ *
94
+ * @throws If no suitable code block is found.
95
+ * @throws If multiple suitable code blocks are found. Happens when the code block is in a callout. Caused by the bug in Obsidian: {@link https://forum.obsidian.md/t/bug-getsectioninfo-is-inaccurate-inside-callouts/104289}
96
+ */
97
+ export declare function getCodeBlockSectionInfo(options: GetCodeBlockSectionInfoOptions): Promise<CodeBlockMarkdownSectionInformation>;
98
+ /**
99
+ * Inserts text after the code block.
100
+ *
101
+ * @param options - The options for the function.
102
+ */
103
+ export declare function insertAfterCodeBlock(options: InsertCodeBlockOptions): Promise<void>;
104
+ /**
105
+ * Inserts text before the code block.
106
+ *
107
+ * @param options - The options for the function.
108
+ */
109
+ export declare function insertBeforeCodeBlock(options: InsertCodeBlockOptions): Promise<void>;
110
+ /**
111
+ * Removes the code block.
10
112
  *
11
- * @param ctx - The MarkdownPostProcessorContext object.
12
- * @param el - The HTMLElement representing the code block.
13
- * @returns The argument of the code block as a string, or null if no argument is found.
113
+ * @param options - The options for the function.
14
114
  */
15
- export declare function getCodeBlockArguments(ctx: MarkdownPostProcessorContext, el: HTMLElement): string[];
115
+ export declare function removeCodeBlock(options: GetCodeBlockSectionInfoOptions): Promise<void>;
16
116
  /**
17
117
  * Replaces the code block.
18
118
  *
19
- * @param app - The Obsidian App object.
20
- * @param ctx - The MarkdownPostProcessorContext object.
21
- * @param el - The HTMLElement representing the code block.
22
- * @param codeBlockProvider - The ValueProvider that provides the new code block.
23
- * @param abortSignal - The abort signal to control the execution of the function.
119
+ * @param options - The options for the function.
24
120
  */
25
- export declare function replaceCodeBlock(app: App, ctx: MarkdownPostProcessorContext, el: HTMLElement, codeBlockProvider: ValueProvider<string, [string]>, abortSignal?: AbortSignal): Promise<void>;
121
+ export declare function replaceCodeBlock(options: ReplaceCodeBlockOptions): Promise<void>;