construct-hub 0.4.18 → 0.4.19

Sign up to get free protection for your applications and to get access to all the features.
@@ -130,7 +130,8 @@ async function handler(event) {
130
130
  }
131
131
  catch (error) {
132
132
  if (error instanceof HTTPError &&
133
- (error.httpStatusCode === 502 || error.httpStatusCode === 504)) {
133
+ error.httpStatusCode &&
134
+ error.httpStatusCode >= 500) {
134
135
  // This is an HTTP 5XX from a dependency, so we'll log this out, and pretend it did not fail...
135
136
  console.error('HTTP 5XX from a dependency, assuming this is transient:', error);
136
137
  await aws_embedded_metrics_1.metricScope((metrics) => async () => {
@@ -415,4 +416,4 @@ function gunzip(readable) {
415
416
  readable.pipe(gz, { end: true });
416
417
  return gz;
417
418
  }
418
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMtcGFja2FnZS1jYW5hcnkubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jYW5hcnkvbnBtanMtcGFja2FnZS1jYW5hcnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBRS9CLCtCQUFvQztBQUNwQywrREFBd0U7QUFFeEUseUNBQXlDO0FBRXpDLGlFQUFpRTtBQUNqRSxpRkFBdUU7QUFDdkUsMkNBS3FCO0FBRXJCLG9DQUFhLENBQUMsU0FBUyxHQUFHLDZCQUFpQixDQUFDO0FBRTVDLE1BQU0sMEJBQTBCLEdBQUcsS0FBTSxDQUFDO0FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBYztJQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV4RCxNQUFNLFdBQVcsR0FBRyw4QkFBVSxtQ0FBMEIsQ0FBQztJQUN6RCxNQUFNLFdBQVcsR0FBRyw4QkFBVSwrREFBd0MsQ0FBQztJQUN2RSxNQUFNLG9CQUFvQixHQUFHLDhCQUFVLHVEQUFvQyxDQUFDO0lBRTVFLE1BQU0sWUFBWSxHQUFHLElBQUksa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUU1RCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFnQixDQUFDLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJO1lBQ25FLGtGQUFrRjtZQUNsRixN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YXMgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tICdzdHJlYW0nO1xuaW1wb3J0IHsgY3JlYXRlR3VuemlwIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBtZXRyaWNTY29wZSwgQ29uZmlndXJhdGlvbiwgVW5pdCB9IGZyb20gJ2F3cy1lbWJlZGRlZC1tZXRyaWNzJztcbmltcG9ydCB0eXBlIHsgQVdTRXJyb3IsIFMzIH0gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgKiBhcyBKU09OU3RyZWFtIGZyb20gJ0pTT05TdHJlYW0nO1xuaW1wb3J0IHsgQ2F0YWxvZ01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vYmFja2VuZCc7XG5pbXBvcnQgKiBhcyBhd3MgZnJvbSAnLi4vLi4vLi4vYmFja2VuZC9zaGFyZWQvYXdzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgcmVxdWlyZUVudiB9IGZyb20gJy4uLy4uLy4uL2JhY2tlbmQvc2hhcmVkL2Vudi5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7XG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxuICBNZXRyaWNOYW1lLFxuICBFbnZpcm9ubWVudCxcbiAgT2JqZWN0S2V5LFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbkNvbmZpZ3VyYXRpb24ubmFtZXNwYWNlID0gTUVUUklDU19OQU1FU1BBQ0U7XG5cbmNvbnN0IFJFUExJQ0FfUkVRVUVTVF9USU1FT1VUX01TID0gMzBfMDAwO1xuXG4vKipcbiAqIFRoaXMgcGFja2FnZSBjYW5hcnkgbW9uaXRvcnMgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgdmVyc2lvbnMgb2YgYSBzcGVjaWZpZWRcbiAqIHBhY2thZ2UgaW4gdGhlIENvbnN0cnVjdEh1YiBjYXRhbG9nLiBJdCBwdWJsaXNoZXMgbWV0cmljcyB0aGF0IGhlbHBcbiAqIHVuZGVyc3RhbmQgaG93IG11Y2ggdGltZSBwYXNzZXMgYmV0d2VlbiBhIHBha2NhZ2UgYXBwZWFyaW5nIGluIHRoZSBwdWJsaWNcbiAqIHJlZ2lzdHJ5IGFuZCBpdCdzIGF2YWlsYWJpbGl0eSBpbiB0aGUgQ29uc3RydWN0SHViIGluc3RhbmNlLlxuICpcbiAqIEZyb20gdGhlIG1vbWVudCBhIHBhY2thZ2UgaGFzIGJlZW4gcHVibGlzaGVkLCBhbmQgdW50aWwgaXQgYXBwZWFyZWQgaW5cbiAqIGNhdGFsb2csIHRoZSBgTWV0cmljTmFtZS5EV0VMTF9USU1FYCBtZXRyaWMgaXMgZW1pdHRlZC5cbiAqXG4gKiBPbmNlIHRoZSBwYWNrYWdlIGhhcyBhcHBlYXJlZCBpbiBjYXRhbG9nLCBhbmQgdW50aWwgYSBuZXcgcGFja2FnZSB2ZXJzaW9uIGlzXG4gKiBpZGVudGlmaWVkIGluIG5wbWpzLmNvbSwgdGhlIGBNZXRyaWNOYW1lLlRJTUVfVE9fQ0FUQUxPR2AgbWV0cmljIGlzIGVtaXR0ZWQuXG4gKlxuICogSWYgYSBuZXcgcGFja2FnZSB2ZXJzaW9uIGlzIHB1Ymxpc2hlZCBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBoYXMgYXBwZWFyZWRcbiAqIGluIGNhdGFsb2csIGJvdGggdmVyc2lvbnMgd2lsbCBiZSB0cmFja2VkIGF0IHRoZSBzYW1lIHRpbWUsIGFuZCB0aGUgbWV0cmljc1xuICogd2lsbCByZWNlaXZlIG9uZSBzYW1wbGUgcGVyIHRyYWNrZWQgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5sb2coYEV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKX1gKTtcblxuICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcXVpcmVFbnYoRW52aXJvbm1lbnQuUEFDS0FHRV9OQU1FKTtcbiAgY29uc3Qgc3RhdGVCdWNrZXQgPSByZXF1aXJlRW52KEVudmlyb25tZW50LlBBQ0tBR0VfQ0FOQVJZX0JVQ0tFVF9OQU1FKTtcbiAgY29uc3QgY29uc3RydWN0SHViRW5kcG9pbnQgPSByZXF1aXJlRW52KEVudmlyb25tZW50LkNPTlNUUlVDVF9IVUJfQkFTRV9VUkwpO1xuXG4gIGNvbnN0IHN0YXRlU2VydmljZSA9IG5ldyBDYW5hcnlTdGF0ZVNlcnZpY2Uoc3RhdGVCdWNrZXQpO1xuICBjb25zdCBjb25zdHJ1Y3RIdWIgPSBuZXcgQ29uc3RydWN0SHViKGNvbnN0cnVjdEh1YkVuZHBvaW50KTtcblxuICB0cnkge1xuICAgIGNvbnN0IGxhdGVzdCA9IGF3YWl0IHN0YXRlU2VydmljZS5sYXRlc3QocGFja2FnZU5hbWUpO1xuICAgIGNvbnN0IHN0YXRlOiBDYW5hcnlTdGF0ZSA9IChhd2FpdCBzdGF0ZVNlcnZpY2UubG9hZChwYWNrYWdlTmFtZSkpID8/IHtcbiAgICAgIC8vIElmIHdlIGRpZCBub3QgaGF2ZSBhbnkgc3RhdGUsIHdlJ2xsIGJvb3RzdHJhcCB1c2luZyB0aGUgY3VycmVudCBsYXRlc3QgdmVyc2lvbi5cbiAgICAgIGxhdGVzdDoge1xuICAgICAgICAuLi5sYXRlc3QsXG4gICAgICAgIC8vIElmIHRoYXQgbGF0ZXN0IHZlcnNpb24gaXMgQUxSRUFEWSBpbiBjYXRhbG9nLCBwcmV0ZW5kIGl0IHdhc1xuICAgICAgICAvLyBcImluc3RhbnRhbmVvdXNseVwiIHRoZXJlLCBzbyB3ZSBhdm9pZCBwb3NzaWJseSByZXBvcnRpbmcgYW4gYnJlYWNoIG9mXG4gICAgICAgIC8vIFNMQSBhbGFybSwgd2hlbiB3ZSByZWFsbHkganVzdCBvYnNlcnZlZCBwcmVzZW5jZSBvZiB0aGUgcGFja2FnZSBpblxuICAgICAgICAvLyBjYXRhbG9nIHRvbyBsYXRlLCBmb3IgZXhhbXBsZSBvbiBmaXJzdCBkZXBsb3ltZW50IG9mIHRoZSBjYW5hcnkuXG4gICAgICAgIGF2YWlsYWJsZUF0OiAoYXdhaXQgY29uc3RydWN0SHViLmlzSW5DYXRhbG9nKFxuICAgICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICAgIGxhdGVzdC52ZXJzaW9uXG4gICAgICAgICkpXG4gICAgICAgICAgPyBsYXRlc3QucHVibGlzaGVkQXRcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBwZW5kaW5nOiB7fSxcbiAgICB9O1xuXG4gICAgY29uc29sZS5sb2coYEluaXRpYWwgc3RhdGU6ICR7SlNPTi5zdHJpbmdpZnkoc3RhdGUsIG51bGwsIDIpfWApO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgXCJsYXRlc3RcIiBpc24ndCB0aGUgb25lIGZyb20gc3RhdGUsIGl0IG5lZWRzIHVwZGF0aW5nLlxuICAgIHVwZGF0ZUxhdGVzdElmTmVlZGVkKHN0YXRlLCBsYXRlc3QpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcGxpY2FMYWcgPSBhd2FpdCBzdGF0ZVNlcnZpY2UubnBtUmVwbGljYUxhZ1NlY29uZHMocGFja2FnZU5hbWUpO1xuXG4gICAgICBhd2FpdCBtZXRyaWNTY29wZSgobWV0cmljcykgPT4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgIE1ldHJpY05hbWUuVFJBQ0tFRF9WRVJTSU9OX0NPVU5ULFxuICAgICAgICAgIE9iamVjdC5rZXlzKHN0YXRlLnBlbmRpbmcpLmxlbmd0aCArIDEsXG4gICAgICAgICAgVW5pdC5Db3VudFxuICAgICAgICApO1xuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICBNZXRyaWNOYW1lLk5QTV9SRVBMSUNBX0RPV04sXG4gICAgICAgICAgKGF3YWl0IHN0YXRlU2VydmljZS5pc05wbVJlcGxpY2FEb3duKCkpID8gMSA6IDAsXG4gICAgICAgICAgVW5pdC5Ob25lXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgd2Ugd2VyZW4ndCBhYmxlIHRvIGNhbGN1bGF0ZSB0aGUgcmVwbGljYSdzIGxhZywgdGhlbiBzaW1wbHlcbiAgICAgICAgLy8gZG9uJ3QgcmVwb3J0IHRoZSBtZXRyaWMuXG4gICAgICAgIGlmIChyZXBsaWNhTGFnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgIE1ldHJpY05hbWUuTlBNX1JFUExJQ0FfTEFHLFxuICAgICAgICAgICAgcmVwbGljYUxhZyxcbiAgICAgICAgICAgIFVuaXQuU2Vjb25kc1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG5cbiAgICAgIGZvciAoY29uc3QgdmVyc2lvblN0YXRlIG9mIFtcbiAgICAgICAgc3RhdGUubGF0ZXN0LFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKHN0YXRlLnBlbmRpbmcgPz8ge30pLFxuICAgICAgXSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgQ2hlY2tpbmcgc3RhdGUgb2YgJHt2ZXJzaW9uU3RhdGUudmVyc2lvbn0sIGN1cnJlbnQ6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB2ZXJzaW9uU3RhdGUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgMlxuICAgICAgICAgICl9YFxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IG1ldHJpY1Njb3BlKChtZXRyaWNzKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgLy8gQ2xlYXIgb3V0IGRlZmF1bHQgZGltZW5zaW9ucyBhcyB3ZSBkb24ndCBuZWVkIHRob3NlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWVtYmVkZGVkLW1ldHJpY3Mtbm9kZS9pc3N1ZXMvNzMuXG4gICAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG4gICAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnUGFja2FnZU5hbWUnLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnUGFja2FnZVZlcnNpb24nLCB2ZXJzaW9uU3RhdGUudmVyc2lvbik7XG4gICAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICdJc0xhdGVzdCcsXG4gICAgICAgICAgICBzdGF0ZS5sYXRlc3QudmVyc2lvbiA9PT0gdmVyc2lvblN0YXRlLnZlcnNpb25cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCF2ZXJzaW9uU3RhdGUuYXZhaWxhYmxlQXQpIHtcbiAgICAgICAgICAgIGlmICh2ZXJzaW9uU3RhdGUudmVyc2lvbiA9PT0gc3RhdGUubGF0ZXN0LnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGF3YWl0IGNvbnN0cnVjdEh1Yi5pc0luQ2F0YWxvZyhcbiAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLnZlcnNpb25cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZlcnNpb25TdGF0ZS5hdmFpbGFibGVBdCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIE5vbi1jdXJyZW50IHZlcnNpb25zIHdpbGwgcHJvYmFibHkgbmV2ZXIgbWFrZSBpdCB0byBjYXRhbG9nICh0aGV5J3JlIG9sZGVyIHRoYW4gdGhlXG4gICAgICAgICAgICAgIC8vIGN1cnJlbnQgdmVyc2lvbiksIHNvIGluc3RlYWQsIHdlIGNoZWNrIHdoZXRoZXIgdGhleSBoYXZlIFR5cGVTY3JpcHQgZG9jdW1lbnRhdGlvbi5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGF3YWl0IGNvbnN0cnVjdEh1Yi5oYXNUeXBlU2NyaXB0RG9jdW1lbnRhdGlvbihcbiAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLnZlcnNpb25cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZlcnNpb25TdGF0ZS5hdmFpbGFibGVBdCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2lvblN0YXRlLmF2YWlsYWJsZUF0KSB7XG4gICAgICAgICAgICAvLyBUZWxscyB1cyBob3cgbG9uZyBpdCdzIHRha2VuIGZvciB0aGUgcGFja2FnZSB0byBtYWtlIGl0IHRvIGNhdGFsb2cgYWZ0ZXIgaXQgd2FzIHB1Ymxpc2hlZC5cbiAgICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgICBNZXRyaWNOYW1lLlRJTUVfVE9fQ0FUQUxPRyxcbiAgICAgICAgICAgICAgKHZlcnNpb25TdGF0ZS5hdmFpbGFibGVBdC5nZXRUaW1lKCkgLVxuICAgICAgICAgICAgICAgIHZlcnNpb25TdGF0ZS5wdWJsaXNoZWRBdC5nZXRUaW1lKCkpIC9cbiAgICAgICAgICAgICAgICAxXzAwMCxcbiAgICAgICAgICAgICAgVW5pdC5TZWNvbmRzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBTdG9wIHRyYWNraW5nIHRoYXQgdmVyc2lvbiwgYXMgaXQncyBub3cgYXZhaWxhYmxlLlxuICAgICAgICAgICAgaWYgKHZlcnNpb25TdGF0ZS52ZXJzaW9uIGluIHN0YXRlLnBlbmRpbmcpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHN0YXRlLnBlbmRpbmdbdmVyc2lvblN0YXRlLnZlcnNpb25dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUZWxscyB1cyBob3cgbG9uZyB3ZSd2ZSBiZWVuIHdhaXRpbmcgZm9yIHRoaXMgdmVyc2lvbiB0byBzaG93IHVwLCBzbyBmYXIuXG4gICAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgICAgTWV0cmljTmFtZS5EV0VMTF9USU1FLFxuICAgICAgICAgICAgICAoRGF0ZS5ub3coKSAtIHZlcnNpb25TdGF0ZS5wdWJsaXNoZWRBdC5nZXRUaW1lKCkpIC8gMV8wMDAsXG4gICAgICAgICAgICAgIFVuaXQuU2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBOb3RpbmcgdGhhdCB3ZSBkaWQgbm90IGVub2N1bnRlciBhIGdhdGV3YXkgZXJyb3IsIHNvIHRoZSBtZXRyaWMgaGFzIGEgbmljZSBhbmQgY2xlYW4gMFxuICAgICAgICAgIC8vIHZhbHVlIGluc3RlYWQgb2YgaGF2aW5nIHRvIHRyZWF0IG1pc3NpbmcgZGF0YSBhcyBub3QgYnJlYWNoaW5nLlxuICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuSFRUUF9HQVRFV0FZX0VSUk9SUywgMCwgVW5pdC5Db3VudCk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHN0YXRlU2VydmljZS5zYXZlKHBhY2thZ2VOYW1lLCBzdGF0ZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChcbiAgICAgIGVycm9yIGluc3RhbmNlb2YgSFRUUEVycm9yICYmXG4gICAgICAoZXJyb3IuaHR0cFN0YXR1c0NvZGUgPT09IDUwMiB8fCBlcnJvci5odHRwU3RhdHVzQ29kZSA9PT0gNTA0KVxuICAgICkge1xuICAgICAgLy8gVGhpcyBpcyBhbiBIVFRQIDVYWCBmcm9tIGEgZGVwZW5kZW5jeSwgc28gd2UnbGwgbG9nIHRoaXMgb3V0LCBhbmQgcHJldGVuZCBpdCBkaWQgbm90IGZhaWwuLi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdIVFRQIDVYWCBmcm9tIGEgZGVwZW5kZW5jeSwgYXNzdW1pbmcgdGhpcyBpcyB0cmFuc2llbnQ6JyxcbiAgICAgICAgZXJyb3JcbiAgICAgICk7XG4gICAgICBhd2FpdCBtZXRyaWNTY29wZSgobWV0cmljcykgPT4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG4gICAgICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ0Vycm9yQ29kZScsIGVycm9yLmh0dHBTdGF0dXNDb2RlKTtcbiAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnRXJyb3JNZXNzYWdlJywgZXJyb3IubWVzc2FnZSk7XG5cbiAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5IVFRQX0dBVEVXQVlfRVJST1JTLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIH0pKCk7XG4gICAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIFRpbWVvdXRFcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFJlcXVlc3QgdGltZW91dCBmcm9tIGEgZGVwZW5kZW5jeSwgYXNzdW1pbmcgdGhpcyBpcyB0cmFuc2llbnQ6YCxcbiAgICAgICAgZXJyb3JcbiAgICAgICk7XG4gICAgICBhd2FpdCBtZXRyaWNTY29wZSgobWV0cmljcykgPT4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG4gICAgICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ0Vycm9yQ29kZScsICdSRVFVRVNUX1RJTUVPVVQnKTtcbiAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnRXJyb3JNZXNzYWdlJywgZXJyb3IubWVzc2FnZSk7XG5cbiAgICAgICAgLy8gVGhpcyBpcyBzbGlndGhseSBhYnVzaXZlLCBidXQuLi4gSFRUUCA1MDQgKEdhdGV3YXkgVGltZW91dCkgZnJvbSB0aGUgbnBtIHJlcGxpY2EgYXJlXG4gICAgICAgIC8vIHJldHVybmVkIGFmdGVyIG1vcmUgdGhhbiAzMCBzZWNvbmRzIGhhcyBwYXNzZWQgYW5kIHRoaXMgaXMgd2F5IHRvbyBsb25nLi4uIHNvIHdlXG4gICAgICAgIC8vIGFwcHJveGltYXRlIGEgYml0IGhlcmUuLi5cbiAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5IVFRQX0dBVEVXQVlfRVJST1JTLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIH0pKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgbm90IGFuIEhUVFAgNVhYIGZyb20gYSBkZXBlbmRlbmN5LCBzbyB3ZSdsbCBqdXN0IHJldGhyb3cgYW5kIGZhaWwuLi5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBDb25zdHJ1Y3RIdWIge1xuICAjY2F0YWxvZz86IENhdGFsb2dNb2RlbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZykge31cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgcGFja2FnZSB2ZXJzaW9uIGlzIHByZXNlbnQgaW4gdGhlIGNhdGFsb2dcbiAgICogb2JqZWN0IG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHBhY2thZ2VOYW1lICAgIHRoZSBuYW1lIG9mIHRoZSBjaGVja2VkIHBhY2thZ2UuXG4gICAqIEBwYXJhbSBwYWNrYWdlVmVyc2lvbiB0aGUgdmVyc2lvbiBvZiB0aGUgY2hlY2tlZCBwYWNrYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgSUlGIHRoZSBleGFjdCBwYWNrYWdlIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIGNhdGFsb2cuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNJbkNhdGFsb2coXG4gICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICBwYWNrYWdlVmVyc2lvbjogc3RyaW5nXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNhdGFsb2cgPSBhd2FpdCB0aGlzLmdldENhdGFsb2coKTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IGNhdGFsb2cucGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHA6IGFueSkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSAmJiBwLnZlcnNpb24gPT09IHBhY2thZ2VWZXJzaW9uXG4gICAgKTtcblxuICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGb3VuZCBtdWx0aXBsZSBlbnRyaWVzIGZvciAke3BhY2thZ2VOYW1lfUAke3BhY2thZ2VWZXJzaW9ufSBpbiBjYXRhbG9nYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWQubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIFR5cGVTY3JpcHQgZG9jdW1lbnRhdGlvbiBleGlzdHMgaW4gQ29uc3RydWN0SHViIGZvciB0aGVcbiAgICogc3BlY2lmaWVkIHBhY2thZ2UgdmVyc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIHBhY2thZ2VOYW1lICAgIHRoZSBuYW1lIG9mIHRoZSBjaGVja2VkIHBhY2thZ2UuXG4gICAqIEBwYXJhbSBwYWNrYWdlVmVyc2lvbiB0aGUgdmVyc2lvbiBvZiB0aGUgY2hlY2tlZCBwYWNrYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgSUlGIHRoZSBgZG9jcy10eXBlc2NyaXB0Lm1kYCBkb2N1bWVudCBleGlzdHMgZm9yIHRoZVxuICAgKiAgICAgICAgICBzcGVjaWZpZWQgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNUeXBlU2NyaXB0RG9jdW1lbnRhdGlvbihcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIHBhY2thZ2VWZXJzaW9uOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0vZGF0YS8ke3BhY2thZ2VOYW1lfS92JHtwYWNrYWdlVmVyc2lvbn0vZG9jcy10eXBlc2NyaXB0Lm1kYDtcbiAgICAgIGh0dHBzXG4gICAgICAgIC5yZXF1ZXN0KHVybCwgeyBtZXRob2Q6ICdIRUFEJyB9LCAocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgIC8vIFRoaXMgcmV0dXJucyBIVFRQIDIwMCB3aXRoIHRleHQvaHRtbCBpZiBpdCdzIGEgNDA0LCBkdWUgdG8gaG93XG4gICAgICAgICAgICAvLyB3ZSBjb25maWd1cmVkIENsb3VkRnJvbnQgYmVoYXZpb3JzLlxuICAgICAgICAgICAgcmV0dXJuIG9rKFxuICAgICAgICAgICAgICAhIXJlcy5oZWFkZXJzWydjb250ZW50LXR5cGUnXT8uc3RhcnRzV2l0aCgndGV4dC9tYXJrZG93bicpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgSFRUUEVycm9yKFxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICBgSEVBRCAke3VybH0gLS0gSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAoJHtyZXMuc3RhdHVzTWVzc2FnZX0pYFxuICAgICAgICAgICk7XG4gICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyKTtcbiAgICAgICAgICBrbyhlcnIpO1xuICAgICAgICB9KVxuICAgICAgICAuZW5kKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENhdGFsb2coKTogUHJvbWlzZTxDYXRhbG9nTW9kZWw+IHtcbiAgICBpZiAodGhpcy4jY2F0YWxvZykge1xuICAgICAgcmV0dXJuIHRoaXMuI2NhdGFsb2c7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy4jY2F0YWxvZyA9IGF3YWl0IGdldEpTT04oYCR7dGhpcy5iYXNlVXJsfS9jYXRhbG9nLmpzb25gKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhbmFyeVN0YXRlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnVja2V0TmFtZTogc3RyaW5nKSB7fVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBzdGF0ZSB0byB0aGUgYnVja2V0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmUocGFja2FnZU5hbWU6IHN0cmluZywgc3RhdGU6IENhbmFyeVN0YXRlKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy51cmwocGFja2FnZU5hbWUpO1xuXG4gICAgY29uc29sZS5sb2coYFNhdmluZyB0byAke3VybH06ICR7SlNPTi5zdHJpbmdpZnkoc3RhdGUsIG51bGwsIDIpfWApO1xuICAgIGF3YWl0IGF3c1xuICAgICAgLnMzKClcbiAgICAgIC5wdXRPYmplY3Qoe1xuICAgICAgICBCdWNrZXQ6IHRoaXMuYnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiB0aGlzLmtleShwYWNrYWdlTmFtZSksXG4gICAgICAgIEJvZHk6IEpTT04uc3RyaW5naWZ5KHN0YXRlLCBudWxsLCAyKSxcbiAgICAgICAgQ29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIHN0YXRlIGZpbGUgZm9yIHRoaXMgcGFja2FnZSBmcm9tIHRoZSBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZChwYWNrYWdlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDYW5hcnlTdGF0ZSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIHN0YXRlIGZvciBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSdgKTtcblxuICAgIGNvbnN0IG9iamVjdEtleSA9IHRoaXMua2V5KHBhY2thZ2VOYW1lKTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVybChwYWNrYWdlTmFtZSk7XG5cbiAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmc6ICR7dXJsfWApO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhd3NcbiAgICAgIC5zMygpXG4gICAgICAuZ2V0T2JqZWN0KHsgQnVja2V0OiB0aGlzLmJ1Y2tldE5hbWUsIEtleTogb2JqZWN0S2V5IH0pXG4gICAgICAucHJvbWlzZSgpXG4gICAgICAuY2F0Y2goKGVycjogQVdTRXJyb3IpID0+XG4gICAgICAgIGVyci5jb2RlICE9PSAnTm9TdWNoS2V5J1xuICAgICAgICAgID8gUHJvbWlzZS5yZWplY3QoZXJyKVxuICAgICAgICAgIDogUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgICAgLyogbm8gZGF0YSAqL1xuICAgICAgICAgICAgfSBhcyBTMy5HZXRPYmplY3RPdXRwdXQpXG4gICAgICApO1xuXG4gICAgaWYgKCFkYXRhPy5Cb2R5KSB7XG4gICAgICBjb25zb2xlLmxvZyhgTm90IGZvdW5kOiAke3VybH1gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYExvYWRlZDogJHt1cmx9YCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YS5Cb2R5LnRvU3RyaW5nKCd1dGYtOCcpLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gJ3B1Ymxpc2hlZEF0JyB8fCBrZXkgPT09ICdhdmFpbGFibGVBdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzdGF0ZSBmcm9tIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsYXRlc3QocGFja2FnZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Q2FuYXJ5U3RhdGVbJ2xhdGVzdCddPiB7XG4gICAgY29uc29sZS5sb2coYEZldGNoaW5nIGxhdGVzdCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gTlBNOiAke3BhY2thZ2VOYW1lfWApO1xuICAgIGNvbnN0IHZlcnNpb24gPSBhd2FpdCBnZXRKU09OKFxuICAgICAgYGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhY2thZ2VOYW1lKX0vbGF0ZXN0YCxcbiAgICAgIHsganNvblBhdGg6IFsndmVyc2lvbiddIH1cbiAgICApO1xuICAgIGNvbnN0IHB1Ymxpc2hlZEF0ID0gYXdhaXQgZ2V0SlNPTihcbiAgICAgIGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8ke2VuY29kZVVSSUNvbXBvbmVudChwYWNrYWdlTmFtZSl9YCxcbiAgICAgIHsganNvblBhdGg6IFsndGltZScsIHZlcnNpb25dIH1cbiAgICApO1xuXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgUGFja2FnZTogJHtwYWNrYWdlTmFtZX0gfCBWZXJzaW9uIDogJHt2ZXJzaW9ufSB8IFB1Ymxpc2hlZCBBdDogJHtwdWJsaXNoZWRBdH1gXG4gICAgKTtcblxuICAgIHJldHVybiB7IHZlcnNpb24sIHB1Ymxpc2hlZEF0OiBuZXcgRGF0ZShwdWJsaXNoZWRBdCkgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpc05wbVJlcGxpY2FEb3duKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBnZXRKU09OKCdodHRwczovL3JlcGxpY2F0ZS5ucG1qcy5jb20vJywge1xuICAgICAgICB0aW1lb3V0TWlsbGlzOiBSRVBMSUNBX1JFUVVFU1RfVElNRU9VVF9NUyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFc3RpbWF0ZSBob3cgZmFyIGJlaGluZCB0aGUgTlBNIHJlcGxpY2EgaXMgY29tcGFyZWQgdG8gdGhlIGxpdmUgTlBNXG4gICAqIHJlZ2lzdHJ5LiBJZiB0aGUgTlBNIHJlcGxpY2EgaXMgZG93biwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBucG1SZXBsaWNhTGFnU2Vjb25kcyhcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZW5jb2RlZFBhY2thZ2VOYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhY2thZ2VOYW1lKTtcblxuICAgIGNvbnNvbGUubG9nKGBNZWFzdXJpbmcgTlBNIHJlcGxpY2EgbGFnIHVzaW5nICR7cGFja2FnZU5hbWV9Li4uYCk7XG5cbiAgICBjb25zdCBwcmltYXJ5RGF0ZSA9IGF3YWl0IGdldE1vZGlmaWVkVGltZXN0YW1wKGByZWdpc3RyeS5ucG1qcy5vcmdgKTtcblxuICAgIGxldCByZXBsaWNhRGF0ZTtcbiAgICB0cnkge1xuICAgICAgcmVwbGljYURhdGUgPSBhd2FpdCBnZXRNb2RpZmllZFRpbWVzdGFtcChcbiAgICAgICAgYHJlcGxpY2F0ZS5ucG1qcy5jb20vcmVnaXN0cnlgLFxuICAgICAgICBSRVBMSUNBX1JFUVVFU1RfVElNRU9VVF9NU1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUubWVzc2FnZS5pbmNsdWRlcygnSFRUUCA1MDQnKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgV2FybmluZzogZXJyb3IgZmV0Y2hpbmcgcmVwbGljYXRlLm5wbWpzLmNvbTogJHtlLnRvU3RyaW5nKCl9YFxuICAgICAgICApO1xuICAgICAgICAvLyBUaGVyZSBpcyBubyB2YWx1ZSB0byByZXBvcnRcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGVsdGFNcyA9IHByaW1hcnlEYXRlLmdldFRpbWUoKSAtIHJlcGxpY2FEYXRlLmdldFRpbWUoKTtcblxuICAgIGNvbnNvbGUubG9nKGBUaW1lc3RhbXAgb24gcHJpbWFyeTogJHtwcmltYXJ5RGF0ZS50b0lTT1N0cmluZygpfWApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYFRpbWVzdGFtcCBvbiByZXBsaWNhOiAke3JlcGxpY2FEYXRlLnRvSVNPU3RyaW5nKCl9ICgke1xuICAgICAgICBkZWx0YU1zIC8gM182MDBfMDAwXG4gICAgICB9IGhvdXJzIGJlaGluZClgXG4gICAgKTtcblxuICAgIC8vIFdlIHJldHVybiBpbiBzZWNvbmRzLi4uIFRoZSBtaWxsaXNlY29uZCByZXNvbHV0aW9uIGlzIHNpbGx5IGhlcmUgc2luY2UgdGhlIHByb2JlIHBhY2thZ2UgaXNcbiAgICAvLyBvbmx5IHB1Ymxpc2hlZCBhcHByb3hpbWF0ZWx5IG9uY2UgZXZlcnkgdGhyZWUgaG91cnMuIFdlIHVzZSBzZWNvbmRzIG9ubHkgYmVjYXVzZSB0aGlzIGlzIHRoZVxuICAgIC8vIGxhcmdlc3QgYXZhaWxhYmxlIHRpbWUgdW5pdCBpbiBDbG91ZFdhdGNoLlxuICAgIHJldHVybiBkZWx0YU1zIC8gMV8wMDA7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBnZXRNb2RpZmllZFRpbWVzdGFtcChcbiAgICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICAgIHRpbWVvdXRNaWxsaXM/OiBudW1iZXJcbiAgICApIHtcbiAgICAgIGNvbnN0IGlzb0RhdGUgPSBhd2FpdCBnZXRKU09OKFxuICAgICAgICBgaHR0cHM6Ly8ke2Jhc2VVcmx9LyR7ZW5jb2RlZFBhY2thZ2VOYW1lfWAsXG4gICAgICAgIHsganNvblBhdGg6IFsndGltZScsICdtb2RpZmllZCddLCB0aW1lb3V0TWlsbGlzIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4gbmV3IERhdGUoaXNvRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBrZXkocGFja2FnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke09iamVjdEtleS5TVEFURV9QUkVGSVh9JHtwYWNrYWdlTmFtZX0ke09iamVjdEtleS5TVEFURV9TVUZGSVh9YDtcbiAgfVxuXG4gIHByaXZhdGUgdXJsKHBhY2thZ2VOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYHMzOi8vJHt0aGlzLmJ1Y2tldE5hbWV9LyR7dGhpcy5rZXkocGFja2FnZU5hbWUpfWA7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhUVFBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBodHRwU3RhdHVzQ29kZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBIVFRQRXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBUaW1lb3V0RXJyb3IpO1xuICB9XG59XG5cbmludGVyZmFjZSBDYW5hcnlTdGF0ZSB7XG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IHBhY2thZ2UgdmVyc2lvbiwgYXMgb2YgdGhlIGxhc3QgZXhlY3V0aW9uIG9mIHRoZSBjYW5hcnkuXG4gICAqL1xuICBsYXRlc3Q6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiB3ZSBhcmUgdHJhY2tpbmcuXG4gICAgICovXG4gICAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHB1Ymxpc2ggZGF0ZSBvZiB0aGUgdmVyc2lvbi5cbiAgICAgKi9cbiAgICByZWFkb25seSBwdWJsaXNoZWRBdDogRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRlIGF0IHdoaWNoIHRoZSB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBvbiB0aGUgaHViLlxuICAgICAqL1xuICAgIGF2YWlsYWJsZUF0PzogRGF0ZTtcbiAgfTtcblxuICAvKipcbiAgICogRWFjaCBleGlzdGluZywgYnV0IG5vdC15ZXQtZm91bmQgdmVyc2lvbnMgdGhhdCBhcmUgc3RpbGwgdHJhY2tlZC5cbiAgICovXG4gIHBlbmRpbmc6IHtcbiAgICBbdmVyc2lvbjogc3RyaW5nXToge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdmVyc2lvbiB3ZSBhcmUgdHJhY2tpbmcuXG4gICAgICAgKi9cbiAgICAgIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgcHVibGlzaCBkYXRlIG9mIHRoZSB2ZXJzaW9uLlxuICAgICAgICovXG4gICAgICByZWFkb25seSBwdWJsaXNoZWRBdDogRGF0ZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGVzZSBwZW5kaW5nIHBhY2thZ2VzIGFyZSBORVZFUiBhdmFpbGFibGUgYXQgdGhpcyBwb2ludC5cbiAgICAgICAqL1xuICAgICAgYXZhaWxhYmxlQXQ6IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIE1ha2VzIGEgcmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgVVJMIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBhZnRlciBoYXZpbmdcbiAqIHBhcnNlZCBpdCBmcm9tIEpTT04uXG4gKlxuICogQHBhcmFtIHVybCB0aGUgVVJMIHRvIGdldC5cbiAqIEBwYXJhbSBqc29uUGF0aCBhIEpTT04gcGF0aCB0byBleHRyYWN0IG9ubHkgYSBzdWJzZXQgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSB0aW1lb3V0TWlsbGlzIHRoZSBzb2NrZXQgdGltZW91dCwgaW4gbWlsbGlzZWNvbmRzLlxuICovXG5mdW5jdGlvbiBnZXRKU09OKFxuICB1cmw6IHN0cmluZyxcbiAge1xuICAgIGpzb25QYXRoLFxuICAgIHRpbWVvdXRNaWxsaXMsXG4gIH06IHsganNvblBhdGg/OiBzdHJpbmdbXTsgdGltZW91dE1pbGxpcz86IG51bWJlciB9ID0ge31cbik6IFByb21pc2U8YW55PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgaHR0cHNcbiAgICAgIC5nZXQoXG4gICAgICAgIHVybCxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdpZGVudGl0eScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aW1lb3V0OiB0aW1lb3V0TWlsbGlzLFxuICAgICAgICB9LFxuICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEhUVFBFcnJvcihcbiAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICAgIGBHRVQgJHt1cmx9IC0gSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAoJHtyZXMuc3RhdHVzTWVzc2FnZX0pYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBrbyhlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzLm9uY2UoJ2Vycm9yJywga28pO1xuXG4gICAgICAgICAgcmVzLm9uY2UoJ3RpbWVvdXQnLCAoKSA9PiB7XG4gICAgICAgICAgICAvLyBVcG9uIHNvY2tldCB0aW1lb3V0LCBmYWlsIHdpdGggYSBUaW1lb3V0RXJyb3JcbiAgICAgICAgICAgIGtvKFxuICAgICAgICAgICAgICBuZXcgVGltZW91dEVycm9yKFxuICAgICAgICAgICAgICAgIGBSZXF1ZXN0IHRpbWVkIG91dCAoYWZ0ZXIgJHtcbiAgICAgICAgICAgICAgICAgIHRpbWVvdXRNaWxsaXMgPz8gJ04vQSdcbiAgICAgICAgICAgICAgICB9IG1zKTogR0VUICR7dXJsfWBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGpzb24gPSBKU09OU3RyZWFtLnBhcnNlKGpzb25QYXRoKTtcbiAgICAgICAgICBqc29uLm9uY2UoJ2RhdGEnLCBvayk7XG4gICAgICAgICAganNvbi5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgICAgICAgIGNvbnN0IHBsYWluUGF5bG9hZCA9XG4gICAgICAgICAgICByZXMuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddID09PSAnZ3ppcCcgPyBndW56aXAocmVzKSA6IHJlcztcbiAgICAgICAgICBwbGFpblBheWxvYWQucGlwZShqc29uLCB7IGVuZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLm9uY2UoJ3RpbWVvdXQnLCAoKSA9PiB7XG4gICAgICAgIC8vIFVwb24gc29ja2V0IHRpbWVvdXQsIGZhaWwgd2l0aCBhIFRpbWVvdXRFcnJvclxuICAgICAgICBrbyhcbiAgICAgICAgICBuZXcgVGltZW91dEVycm9yKFxuICAgICAgICAgICAgYFJlcXVlc3QgdGltZWQgb3V0IChhZnRlciAke3RpbWVvdXRNaWxsaXMgPz8gJ04vQSd9IG1zKTogR0VUICR7dXJsfWBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgYGxhdGVzdGAgcHJvcGVydHkgb2YgYHN0YXRlYCB0aSB0aGUgcHJvdmlkZWQgYGxhdGVzdGAgdmFsdWUsXG4gKiB1bmxlc3MgdGhpcyBpcyBhbHJlYWR5IHRoZSBjdXJyZW50IGxhdGVzdC5cbiAqXG4gKiBJZiB0aGUgcHJldmlvdXMgbGF0ZXN0IHZlcnNpb24gZG9lcyBub3QgaGF2ZSB0aGUgYGF2YWlsYWJsZUF0YCBwcm9wZXJ0eSwgYWRkc1xuICogdGhhdCB0byB0aGUgYHBlbmRpbmdgIHNldC5cbiAqXG4gKiBAcGFyYW0gc3RhdGUgIHRoZSBzdGF0ZSB0byBiZSB1cGRhdGVkLlxuICogQHBhcmFtIGxhdGVzdCB0aGUgY3VycmVudCBcImxhdGVzdFwiIHZlcnNpb24gb2YgdGhlIHRyYWNrZWQgcGFja2FnZS5cbiAqL1xuZnVuY3Rpb24gdXBkYXRlTGF0ZXN0SWZOZWVkZWQoXG4gIHN0YXRlOiBDYW5hcnlTdGF0ZSxcbiAgbGF0ZXN0OiBDYW5hcnlTdGF0ZVsnbGF0ZXN0J11cbik6IHZvaWQge1xuICBpZiAoc3RhdGUubGF0ZXN0LnZlcnNpb24gPT09IGxhdGVzdC52ZXJzaW9uKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gSWYgdGhlIGN1cnJlbnQgXCJsYXRlc3RcIiBpc24ndCBhdmFpbGFibGUgeWV0LCBhZGQgaXQgdG8gdGhlIGBwZW5kaW5nYCB2ZXJzaW9ucy5cbiAgaWYgKHN0YXRlLmxhdGVzdC5hdmFpbGFibGVBdCA9PSBudWxsKSB7XG4gICAgLy8gVGhlIFR5cGVTY3JpcHQgdmVyc2lvbiBvZiBqc2lpIGRvZXNuJ3QgZG8gY29udHJvbCBmbG93IGFuYWx5c2lzIHdlbGwgZW5vdWdoIGhlcmUgdG9cbiAgICAvLyBkZXRlcm1pbmUgdGhhdCB0aGVgaWZgIGJyYW5jaCBndWFyYW50ZWVzIGBhdmFpbGFibGVBdGAgaXMgdW5kZWZpbmVkIGhlcmUuXG4gICAgc3RhdGUucGVuZGluZ1tzdGF0ZS5sYXRlc3QudmVyc2lvbl0gPSB7XG4gICAgICAuLi5zdGF0ZS5sYXRlc3QsXG4gICAgICBhdmFpbGFibGVBdDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBzdGF0ZS5sYXRlc3QgPSBsYXRlc3Q7XG59XG5cbmZ1bmN0aW9uIGd1bnppcChyZWFkYWJsZTogUmVhZGFibGUpOiBSZWFkYWJsZSB7XG4gIGNvbnN0IGd6ID0gY3JlYXRlR3VuemlwKCk7XG4gIHJlYWRhYmxlLnBpcGUoZ3osIHsgZW5kOiB0cnVlIH0pO1xuICByZXR1cm4gZ3o7XG59XG4iXX0=
419
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMtcGFja2FnZS1jYW5hcnkubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jYW5hcnkvbnBtanMtcGFja2FnZS1jYW5hcnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBRS9CLCtCQUFvQztBQUNwQywrREFBd0U7QUFFeEUseUNBQXlDO0FBRXpDLGlFQUFpRTtBQUNqRSxpRkFBdUU7QUFDdkUsMkNBS3FCO0FBRXJCLG9DQUFhLENBQUMsU0FBUyxHQUFHLDZCQUFpQixDQUFDO0FBRTVDLE1BQU0sMEJBQTBCLEdBQUcsS0FBTSxDQUFDO0FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBYztJQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV4RCxNQUFNLFdBQVcsR0FBRyw4QkFBVSxtQ0FBMEIsQ0FBQztJQUN6RCxNQUFNLFdBQVcsR0FBRyw4QkFBVSwrREFBd0MsQ0FBQztJQUN2RSxNQUFNLG9CQUFvQixHQUFHLDhCQUFVLHVEQUFvQyxDQUFDO0lBRTVFLE1BQU0sWUFBWSxHQUFHLElBQUksa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUU1RCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFnQixDQUFDLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJO1lBQ25FLGtGQUFrRjtZQUNsRixN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cyc7XG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBjcmVhdGVHdW56aXAgfSBmcm9tICd6bGliJztcbmltcG9ydCB7IG1ldHJpY1Njb3BlLCBDb25maWd1cmF0aW9uLCBVbml0IH0gZnJvbSAnYXdzLWVtYmVkZGVkLW1ldHJpY3MnO1xuaW1wb3J0IHR5cGUgeyBBV1NFcnJvciwgUzMgfSBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIEpTT05TdHJlYW0gZnJvbSAnSlNPTlN0cmVhbSc7XG5pbXBvcnQgeyBDYXRhbG9nTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9iYWNrZW5kJztcbmltcG9ydCAqIGFzIGF3cyBmcm9tICcuLi8uLi8uLi9iYWNrZW5kL3NoYXJlZC9hd3MubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyByZXF1aXJlRW52IH0gZnJvbSAnLi4vLi4vLi4vYmFja2VuZC9zaGFyZWQvZW52LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHtcbiAgTUVUUklDU19OQU1FU1BBQ0UsXG4gIE1ldHJpY05hbWUsXG4gIEVudmlyb25tZW50LFxuICBPYmplY3RLZXksXG59IGZyb20gJy4vY29uc3RhbnRzJztcblxuQ29uZmlndXJhdGlvbi5uYW1lc3BhY2UgPSBNRVRSSUNTX05BTUVTUEFDRTtcblxuY29uc3QgUkVQTElDQV9SRVFVRVNUX1RJTUVPVVRfTVMgPSAzMF8wMDA7XG5cbi8qKlxuICogVGhpcyBwYWNrYWdlIGNhbmFyeSBtb25pdG9ycyB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSB2ZXJzaW9ucyBvZiBhIHNwZWNpZmllZFxuICogcGFja2FnZSBpbiB0aGUgQ29uc3RydWN0SHViIGNhdGFsb2cuIEl0IHB1Ymxpc2hlcyBtZXRyaWNzIHRoYXQgaGVscFxuICogdW5kZXJzdGFuZCBob3cgbXVjaCB0aW1lIHBhc3NlcyBiZXR3ZWVuIGEgcGFrY2FnZSBhcHBlYXJpbmcgaW4gdGhlIHB1YmxpY1xuICogcmVnaXN0cnkgYW5kIGl0J3MgYXZhaWxhYmlsaXR5IGluIHRoZSBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gKlxuICogRnJvbSB0aGUgbW9tZW50IGEgcGFja2FnZSBoYXMgYmVlbiBwdWJsaXNoZWQsIGFuZCB1bnRpbCBpdCBhcHBlYXJlZCBpblxuICogY2F0YWxvZywgdGhlIGBNZXRyaWNOYW1lLkRXRUxMX1RJTUVgIG1ldHJpYyBpcyBlbWl0dGVkLlxuICpcbiAqIE9uY2UgdGhlIHBhY2thZ2UgaGFzIGFwcGVhcmVkIGluIGNhdGFsb2csIGFuZCB1bnRpbCBhIG5ldyBwYWNrYWdlIHZlcnNpb24gaXNcbiAqIGlkZW50aWZpZWQgaW4gbnBtanMuY29tLCB0aGUgYE1ldHJpY05hbWUuVElNRV9UT19DQVRBTE9HYCBtZXRyaWMgaXMgZW1pdHRlZC5cbiAqXG4gKiBJZiBhIG5ldyBwYWNrYWdlIHZlcnNpb24gaXMgcHVibGlzaGVkIGJlZm9yZSB0aGUgcHJldmlvdXMgb25lIGhhcyBhcHBlYXJlZFxuICogaW4gY2F0YWxvZywgYm90aCB2ZXJzaW9ucyB3aWxsIGJlIHRyYWNrZWQgYXQgdGhlIHNhbWUgdGltZSwgYW5kIHRoZSBtZXRyaWNzXG4gKiB3aWxsIHJlY2VpdmUgb25lIHNhbXBsZSBwZXIgdHJhY2tlZCB2ZXJzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zb2xlLmxvZyhgRXZlbnQ6ICR7SlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpfWApO1xuXG4gIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxdWlyZUVudihFbnZpcm9ubWVudC5QQUNLQUdFX05BTUUpO1xuICBjb25zdCBzdGF0ZUJ1Y2tldCA9IHJlcXVpcmVFbnYoRW52aXJvbm1lbnQuUEFDS0FHRV9DQU5BUllfQlVDS0VUX05BTUUpO1xuICBjb25zdCBjb25zdHJ1Y3RIdWJFbmRwb2ludCA9IHJlcXVpcmVFbnYoRW52aXJvbm1lbnQuQ09OU1RSVUNUX0hVQl9CQVNFX1VSTCk7XG5cbiAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gbmV3IENhbmFyeVN0YXRlU2VydmljZShzdGF0ZUJ1Y2tldCk7XG4gIGNvbnN0IGNvbnN0cnVjdEh1YiA9IG5ldyBDb25zdHJ1Y3RIdWIoY29uc3RydWN0SHViRW5kcG9pbnQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbGF0ZXN0ID0gYXdhaXQgc3RhdGVTZXJ2aWNlLmxhdGVzdChwYWNrYWdlTmFtZSk7XG4gICAgY29uc3Qgc3RhdGU6IENhbmFyeVN0YXRlID0gKGF3YWl0IHN0YXRlU2VydmljZS5sb2FkKHBhY2thZ2VOYW1lKSkgPz8ge1xuICAgICAgLy8gSWYgd2UgZGlkIG5vdCBoYXZlIGFueSBzdGF0ZSwgd2UnbGwgYm9vdHN0cmFwIHVzaW5nIHRoZSBjdXJyZW50IGxhdGVzdCB2ZXJzaW9uLlxuICAgICAgbGF0ZXN0OiB7XG4gICAgICAgIC4uLmxhdGVzdCxcbiAgICAgICAgLy8gSWYgdGhhdCBsYXRlc3QgdmVyc2lvbiBpcyBBTFJFQURZIGluIGNhdGFsb2csIHByZXRlbmQgaXQgd2FzXG4gICAgICAgIC8vIFwiaW5zdGFudGFuZW91c2x5XCIgdGhlcmUsIHNvIHdlIGF2b2lkIHBvc3NpYmx5IHJlcG9ydGluZyBhbiBicmVhY2ggb2ZcbiAgICAgICAgLy8gU0xBIGFsYXJtLCB3aGVuIHdlIHJlYWxseSBqdXN0IG9ic2VydmVkIHByZXNlbmNlIG9mIHRoZSBwYWNrYWdlIGluXG4gICAgICAgIC8vIGNhdGFsb2cgdG9vIGxhdGUsIGZvciBleGFtcGxlIG9uIGZpcnN0IGRlcGxveW1lbnQgb2YgdGhlIGNhbmFyeS5cbiAgICAgICAgYXZhaWxhYmxlQXQ6IChhd2FpdCBjb25zdHJ1Y3RIdWIuaXNJbkNhdGFsb2coXG4gICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgbGF0ZXN0LnZlcnNpb25cbiAgICAgICAgKSlcbiAgICAgICAgICA/IGxhdGVzdC5wdWJsaXNoZWRBdFxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIHBlbmRpbmc6IHt9LFxuICAgIH07XG5cbiAgICBjb25zb2xlLmxvZyhgSW5pdGlhbCBzdGF0ZTogJHtKU09OLnN0cmluZ2lmeShzdGF0ZSwgbnVsbCwgMil9YCk7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudCBcImxhdGVzdFwiIGlzbid0IHRoZSBvbmUgZnJvbSBzdGF0ZSwgaXQgbmVlZHMgdXBkYXRpbmcuXG4gICAgdXBkYXRlTGF0ZXN0SWZOZWVkZWQoc3RhdGUsIGxhdGVzdCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVwbGljYUxhZyA9IGF3YWl0IHN0YXRlU2VydmljZS5ucG1SZXBsaWNhTGFnU2Vjb25kcyhwYWNrYWdlTmFtZSk7XG5cbiAgICAgIGF3YWl0IG1ldHJpY1Njb3BlKChtZXRyaWNzKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIENsZWFyIG91dCBkZWZhdWx0IGRpbWVuc2lvbnMgYXMgd2UgZG9uJ3QgbmVlZCB0aG9zZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2F3cy1lbWJlZGRlZC1tZXRyaWNzLW5vZGUvaXNzdWVzLzczLlxuICAgICAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoKTtcbiAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgTWV0cmljTmFtZS5UUkFDS0VEX1ZFUlNJT05fQ09VTlQsXG4gICAgICAgICAgT2JqZWN0LmtleXMoc3RhdGUucGVuZGluZykubGVuZ3RoICsgMSxcbiAgICAgICAgICBVbml0LkNvdW50XG4gICAgICAgICk7XG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgIE1ldHJpY05hbWUuTlBNX1JFUExJQ0FfRE9XTixcbiAgICAgICAgICAoYXdhaXQgc3RhdGVTZXJ2aWNlLmlzTnBtUmVwbGljYURvd24oKSkgPyAxIDogMCxcbiAgICAgICAgICBVbml0Lk5vbmVcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBJZiB3ZSB3ZXJlbid0IGFibGUgdG8gY2FsY3VsYXRlIHRoZSByZXBsaWNhJ3MgbGFnLCB0aGVuIHNpbXBseVxuICAgICAgICAvLyBkb24ndCByZXBvcnQgdGhlIG1ldHJpYy5cbiAgICAgICAgaWYgKHJlcGxpY2FMYWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgTWV0cmljTmFtZS5OUE1fUkVQTElDQV9MQUcsXG4gICAgICAgICAgICByZXBsaWNhTGFnLFxuICAgICAgICAgICAgVW5pdC5TZWNvbmRzXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcblxuICAgICAgZm9yIChjb25zdCB2ZXJzaW9uU3RhdGUgb2YgW1xuICAgICAgICBzdGF0ZS5sYXRlc3QsXG4gICAgICAgIC4uLk9iamVjdC52YWx1ZXMoc3RhdGUucGVuZGluZyA/PyB7fSksXG4gICAgICBdKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBDaGVja2luZyBzdGF0ZSBvZiAke3ZlcnNpb25TdGF0ZS52ZXJzaW9ufSwgY3VycmVudDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHZlcnNpb25TdGF0ZSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKX1gXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgbWV0cmljU2NvcGUoKG1ldHJpY3MpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICAgICAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoKTtcbiAgICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdQYWNrYWdlTmFtZScsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdQYWNrYWdlVmVyc2lvbicsIHZlcnNpb25TdGF0ZS52ZXJzaW9uKTtcbiAgICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgJ0lzTGF0ZXN0JyxcbiAgICAgICAgICAgIHN0YXRlLmxhdGVzdC52ZXJzaW9uID09PSB2ZXJzaW9uU3RhdGUudmVyc2lvblxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIXZlcnNpb25TdGF0ZS5hdmFpbGFibGVBdCkge1xuICAgICAgICAgICAgaWYgKHZlcnNpb25TdGF0ZS52ZXJzaW9uID09PSBzdGF0ZS5sYXRlc3QudmVyc2lvbikge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgYXdhaXQgY29uc3RydWN0SHViLmlzSW5DYXRhbG9nKFxuICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICB2ZXJzaW9uU3RhdGUudmVyc2lvblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLmF2YWlsYWJsZUF0ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gTm9uLWN1cnJlbnQgdmVyc2lvbnMgd2lsbCBwcm9iYWJseSBuZXZlciBtYWtlIGl0IHRvIGNhdGFsb2cgKHRoZXkncmUgb2xkZXIgdGhhbiB0aGVcbiAgICAgICAgICAgICAgLy8gY3VycmVudCB2ZXJzaW9uKSwgc28gaW5zdGVhZCwgd2UgY2hlY2sgd2hldGhlciB0aGV5IGhhdmUgVHlwZVNjcmlwdCBkb2N1bWVudGF0aW9uLlxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgYXdhaXQgY29uc3RydWN0SHViLmhhc1R5cGVTY3JpcHREb2N1bWVudGF0aW9uKFxuICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICB2ZXJzaW9uU3RhdGUudmVyc2lvblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLmF2YWlsYWJsZUF0ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzaW9uU3RhdGUuYXZhaWxhYmxlQXQpIHtcbiAgICAgICAgICAgIC8vIFRlbGxzIHVzIGhvdyBsb25nIGl0J3MgdGFrZW4gZm9yIHRoZSBwYWNrYWdlIHRvIG1ha2UgaXQgdG8gY2F0YWxvZyBhZnRlciBpdCB3YXMgcHVibGlzaGVkLlxuICAgICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICAgIE1ldHJpY05hbWUuVElNRV9UT19DQVRBTE9HLFxuICAgICAgICAgICAgICAodmVyc2lvblN0YXRlLmF2YWlsYWJsZUF0LmdldFRpbWUoKSAtXG4gICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLnB1Ymxpc2hlZEF0LmdldFRpbWUoKSkgL1xuICAgICAgICAgICAgICAgIDFfMDAwLFxuICAgICAgICAgICAgICBVbml0LlNlY29uZHNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFN0b3AgdHJhY2tpbmcgdGhhdCB2ZXJzaW9uLCBhcyBpdCdzIG5vdyBhdmFpbGFibGUuXG4gICAgICAgICAgICBpZiAodmVyc2lvblN0YXRlLnZlcnNpb24gaW4gc3RhdGUucGVuZGluZykge1xuICAgICAgICAgICAgICBkZWxldGUgc3RhdGUucGVuZGluZ1t2ZXJzaW9uU3RhdGUudmVyc2lvbl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRlbGxzIHVzIGhvdyBsb25nIHdlJ3ZlIGJlZW4gd2FpdGluZyBmb3IgdGhpcyB2ZXJzaW9uIHRvIHNob3cgdXAsIHNvIGZhci5cbiAgICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgICBNZXRyaWNOYW1lLkRXRUxMX1RJTUUsXG4gICAgICAgICAgICAgIChEYXRlLm5vdygpIC0gdmVyc2lvblN0YXRlLnB1Ymxpc2hlZEF0LmdldFRpbWUoKSkgLyAxXzAwMCxcbiAgICAgICAgICAgICAgVW5pdC5TZWNvbmRzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE5vdGluZyB0aGF0IHdlIGRpZCBub3QgZW5vY3VudGVyIGEgZ2F0ZXdheSBlcnJvciwgc28gdGhlIG1ldHJpYyBoYXMgYSBuaWNlIGFuZCBjbGVhbiAwXG4gICAgICAgICAgLy8gdmFsdWUgaW5zdGVhZCBvZiBoYXZpbmcgdG8gdHJlYXQgbWlzc2luZyBkYXRhIGFzIG5vdCBicmVhY2hpbmcuXG4gICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5IVFRQX0dBVEVXQVlfRVJST1JTLCAwLCBVbml0LkNvdW50KTtcbiAgICAgICAgfSkoKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgc3RhdGVTZXJ2aWNlLnNhdmUocGFja2FnZU5hbWUsIHN0YXRlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKFxuICAgICAgZXJyb3IgaW5zdGFuY2VvZiBIVFRQRXJyb3IgJiZcbiAgICAgIGVycm9yLmh0dHBTdGF0dXNDb2RlICYmXG4gICAgICBlcnJvci5odHRwU3RhdHVzQ29kZSA+PSA1MDBcbiAgICApIHtcbiAgICAgIC8vIFRoaXMgaXMgYW4gSFRUUCA1WFggZnJvbSBhIGRlcGVuZGVuY3ksIHNvIHdlJ2xsIGxvZyB0aGlzIG91dCwgYW5kIHByZXRlbmQgaXQgZGlkIG5vdCBmYWlsLi4uXG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnSFRUUCA1WFggZnJvbSBhIGRlcGVuZGVuY3ksIGFzc3VtaW5nIHRoaXMgaXMgdHJhbnNpZW50OicsXG4gICAgICAgIGVycm9yXG4gICAgICApO1xuICAgICAgYXdhaXQgbWV0cmljU2NvcGUoKG1ldHJpY3MpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gQ2xlYXIgb3V0IGRlZmF1bHQgZGltZW5zaW9ucyBhcyB3ZSBkb24ndCBuZWVkIHRob3NlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWVtYmVkZGVkLW1ldHJpY3Mtbm9kZS9pc3N1ZXMvNzMuXG4gICAgICAgIG1ldHJpY3Muc2V0RGltZW5zaW9ucygpO1xuICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdFcnJvckNvZGUnLCBlcnJvci5odHRwU3RhdHVzQ29kZSk7XG4gICAgICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ0Vycm9yTWVzc2FnZScsIGVycm9yLm1lc3NhZ2UpO1xuXG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuSFRUUF9HQVRFV0FZX0VSUk9SUywgMSwgVW5pdC5Db3VudCk7XG4gICAgICB9KSgpO1xuICAgIH0gZWxzZSBpZiAoZXJyb3IgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSZXF1ZXN0IHRpbWVvdXQgZnJvbSBhIGRlcGVuZGVuY3ksIGFzc3VtaW5nIHRoaXMgaXMgdHJhbnNpZW50OmAsXG4gICAgICAgIGVycm9yXG4gICAgICApO1xuICAgICAgYXdhaXQgbWV0cmljU2NvcGUoKG1ldHJpY3MpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gQ2xlYXIgb3V0IGRlZmF1bHQgZGltZW5zaW9ucyBhcyB3ZSBkb24ndCBuZWVkIHRob3NlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWVtYmVkZGVkLW1ldHJpY3Mtbm9kZS9pc3N1ZXMvNzMuXG4gICAgICAgIG1ldHJpY3Muc2V0RGltZW5zaW9ucygpO1xuICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdFcnJvckNvZGUnLCAnUkVRVUVTVF9USU1FT1VUJyk7XG4gICAgICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ0Vycm9yTWVzc2FnZScsIGVycm9yLm1lc3NhZ2UpO1xuXG4gICAgICAgIC8vIFRoaXMgaXMgc2xpZ3RobHkgYWJ1c2l2ZSwgYnV0Li4uIEhUVFAgNTA0IChHYXRld2F5IFRpbWVvdXQpIGZyb20gdGhlIG5wbSByZXBsaWNhIGFyZVxuICAgICAgICAvLyByZXR1cm5lZCBhZnRlciBtb3JlIHRoYW4gMzAgc2Vjb25kcyBoYXMgcGFzc2VkIGFuZCB0aGlzIGlzIHdheSB0b28gbG9uZy4uLiBzbyB3ZVxuICAgICAgICAvLyBhcHByb3hpbWF0ZSBhIGJpdCBoZXJlLi4uXG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuSFRUUF9HQVRFV0FZX0VSUk9SUywgMSwgVW5pdC5Db3VudCk7XG4gICAgICB9KSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIG5vdCBhbiBIVFRQIDVYWCBmcm9tIGEgZGVwZW5kZW5jeSwgc28gd2UnbGwganVzdCByZXRocm93IGFuZCBmYWlsLi4uXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgQ29uc3RydWN0SHViIHtcbiAgI2NhdGFsb2c/OiBDYXRhbG9nTW9kZWw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBiYXNlVXJsOiBzdHJpbmcpIHt9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIHBhY2thZ2UgdmVyc2lvbiBpcyBwcmVzZW50IGluIHRoZSBjYXRhbG9nXG4gICAqIG9iamVjdCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSBwYWNrYWdlTmFtZSAgICB0aGUgbmFtZSBvZiB0aGUgY2hlY2tlZCBwYWNrYWdlLlxuICAgKiBAcGFyYW0gcGFja2FnZVZlcnNpb24gdGhlIHZlcnNpb24gb2YgdGhlIGNoZWNrZWQgcGFja2FnZS5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIElJRiB0aGUgZXhhY3QgcGFja2FnZSB2ZXJzaW9uIGlzIGZvdW5kIGluIHRoZSBjYXRhbG9nLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzSW5DYXRhbG9nKFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgcGFja2FnZVZlcnNpb246IHN0cmluZ1xuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjYXRhbG9nID0gYXdhaXQgdGhpcy5nZXRDYXRhbG9nKCk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSBjYXRhbG9nLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwOiBhbnkpID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUgJiYgcC52ZXJzaW9uID09PSBwYWNrYWdlVmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAoZmlsdGVyZWQubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRm91bmQgbXVsdGlwbGUgZW50cmllcyBmb3IgJHtwYWNrYWdlTmFtZX1AJHtwYWNrYWdlVmVyc2lvbn0gaW4gY2F0YWxvZ2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcmVkLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBUeXBlU2NyaXB0IGRvY3VtZW50YXRpb24gZXhpc3RzIGluIENvbnN0cnVjdEh1YiBmb3IgdGhlXG4gICAqIHNwZWNpZmllZCBwYWNrYWdlIHZlcnNpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwYWNrYWdlTmFtZSAgICB0aGUgbmFtZSBvZiB0aGUgY2hlY2tlZCBwYWNrYWdlLlxuICAgKiBAcGFyYW0gcGFja2FnZVZlcnNpb24gdGhlIHZlcnNpb24gb2YgdGhlIGNoZWNrZWQgcGFja2FnZS5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIElJRiB0aGUgYGRvY3MtdHlwZXNjcmlwdC5tZGAgZG9jdW1lbnQgZXhpc3RzIGZvciB0aGVcbiAgICogICAgICAgICAgc3BlY2lmaWVkIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzVHlwZVNjcmlwdERvY3VtZW50YXRpb24oXG4gICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICBwYWNrYWdlVmVyc2lvbjogc3RyaW5nXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2RhdGEvJHtwYWNrYWdlTmFtZX0vdiR7cGFja2FnZVZlcnNpb259L2RvY3MtdHlwZXNjcmlwdC5tZGA7XG4gICAgICBodHRwc1xuICAgICAgICAucmVxdWVzdCh1cmwsIHsgbWV0aG9kOiAnSEVBRCcgfSwgKHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBUaGlzIHJldHVybnMgSFRUUCAyMDAgd2l0aCB0ZXh0L2h0bWwgaWYgaXQncyBhIDQwNCwgZHVlIHRvIGhvd1xuICAgICAgICAgICAgLy8gd2UgY29uZmlndXJlZCBDbG91ZEZyb250IGJlaGF2aW9ycy5cbiAgICAgICAgICAgIHJldHVybiBvayhcbiAgICAgICAgICAgICAgISFyZXMuaGVhZGVyc1snY29udGVudC10eXBlJ10/LnN0YXJ0c1dpdGgoJ3RleHQvbWFya2Rvd24nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXJyID0gbmV3IEhUVFBFcnJvcihcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgYEhFQUQgJHt1cmx9IC0tIEhUVFAgJHtyZXMuc3RhdHVzQ29kZX0gKCR7cmVzLnN0YXR1c01lc3NhZ2V9KWBcbiAgICAgICAgICApO1xuICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycik7XG4gICAgICAgICAga28oZXJyKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmVuZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDYXRhbG9nKCk6IFByb21pc2U8Q2F0YWxvZ01vZGVsPiB7XG4gICAgaWYgKHRoaXMuI2NhdGFsb2cpIHtcbiAgICAgIHJldHVybiB0aGlzLiNjYXRhbG9nO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMuI2NhdGFsb2cgPSBhd2FpdCBnZXRKU09OKGAke3RoaXMuYmFzZVVybH0vY2F0YWxvZy5qc29uYCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5hcnlTdGF0ZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJ1Y2tldE5hbWU6IHN0cmluZykge31cblxuICAvKipcbiAgICogU2F2ZSB0aGUgc3RhdGUgdG8gdGhlIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzYXZlKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHN0YXRlOiBDYW5hcnlTdGF0ZSkge1xuICAgIGNvbnN0IHVybCA9IHRoaXMudXJsKHBhY2thZ2VOYW1lKTtcblxuICAgIGNvbnNvbGUubG9nKGBTYXZpbmcgdG8gJHt1cmx9OiAke0pTT04uc3RyaW5naWZ5KHN0YXRlLCBudWxsLCAyKX1gKTtcbiAgICBhd2FpdCBhd3NcbiAgICAgIC5zMygpXG4gICAgICAucHV0T2JqZWN0KHtcbiAgICAgICAgQnVja2V0OiB0aGlzLmJ1Y2tldE5hbWUsXG4gICAgICAgIEtleTogdGhpcy5rZXkocGFja2FnZU5hbWUpLFxuICAgICAgICBCb2R5OiBKU09OLnN0cmluZ2lmeShzdGF0ZSwgbnVsbCwgMiksXG4gICAgICAgIENvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9KVxuICAgICAgLnByb21pc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBzdGF0ZSBmaWxlIGZvciB0aGlzIHBhY2thZ2UgZnJvbSB0aGUgYnVja2V0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWQocGFja2FnZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Q2FuYXJ5U3RhdGUgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBzdGF0ZSBmb3IgcGFja2FnZSAnJHtwYWNrYWdlTmFtZX0nYCk7XG5cbiAgICBjb25zdCBvYmplY3RLZXkgPSB0aGlzLmtleShwYWNrYWdlTmFtZSk7XG4gICAgY29uc3QgdXJsID0gdGhpcy51cmwocGFja2FnZU5hbWUpO1xuXG4gICAgY29uc29sZS5sb2coYEZldGNoaW5nOiAke3VybH1gKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgYXdzXG4gICAgICAuczMoKVxuICAgICAgLmdldE9iamVjdCh7IEJ1Y2tldDogdGhpcy5idWNrZXROYW1lLCBLZXk6IG9iamVjdEtleSB9KVxuICAgICAgLnByb21pc2UoKVxuICAgICAgLmNhdGNoKChlcnI6IEFXU0Vycm9yKSA9PlxuICAgICAgICBlcnIuY29kZSAhPT0gJ05vU3VjaEtleSdcbiAgICAgICAgICA/IFByb21pc2UucmVqZWN0KGVycilcbiAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICAgIC8qIG5vIGRhdGEgKi9cbiAgICAgICAgICAgIH0gYXMgUzMuR2V0T2JqZWN0T3V0cHV0KVxuICAgICAgKTtcblxuICAgIGlmICghZGF0YT8uQm9keSkge1xuICAgICAgY29uc29sZS5sb2coYE5vdCBmb3VuZDogJHt1cmx9YCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGBMb2FkZWQ6ICR7dXJsfWApO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEuQm9keS50b1N0cmluZygndXRmLTgnKSwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgPT09ICdwdWJsaXNoZWRBdCcgfHwga2V5ID09PSAnYXZhaWxhYmxlQXQnKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc3RhdGUgZnJvbSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGF0ZXN0KHBhY2thZ2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPENhbmFyeVN0YXRlWydsYXRlc3QnXT4ge1xuICAgIGNvbnNvbGUubG9nKGBGZXRjaGluZyBsYXRlc3QgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIE5QTTogJHtwYWNrYWdlTmFtZX1gKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gYXdhaXQgZ2V0SlNPTihcbiAgICAgIGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8ke2VuY29kZVVSSUNvbXBvbmVudChwYWNrYWdlTmFtZSl9L2xhdGVzdGAsXG4gICAgICB7IGpzb25QYXRoOiBbJ3ZlcnNpb24nXSB9XG4gICAgKTtcbiAgICBjb25zdCBwdWJsaXNoZWRBdCA9IGF3YWl0IGdldEpTT04oXG4gICAgICBgaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJHtlbmNvZGVVUklDb21wb25lbnQocGFja2FnZU5hbWUpfWAsXG4gICAgICB7IGpzb25QYXRoOiBbJ3RpbWUnLCB2ZXJzaW9uXSB9XG4gICAgKTtcblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYFBhY2thZ2U6ICR7cGFja2FnZU5hbWV9IHwgVmVyc2lvbiA6ICR7dmVyc2lvbn0gfCBQdWJsaXNoZWQgQXQ6ICR7cHVibGlzaGVkQXR9YFxuICAgICk7XG5cbiAgICByZXR1cm4geyB2ZXJzaW9uLCBwdWJsaXNoZWRBdDogbmV3IERhdGUocHVibGlzaGVkQXQpIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNOcG1SZXBsaWNhRG93bigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZ2V0SlNPTignaHR0cHM6Ly9yZXBsaWNhdGUubnBtanMuY29tLycsIHtcbiAgICAgICAgdGltZW91dE1pbGxpczogUkVQTElDQV9SRVFVRVNUX1RJTUVPVVRfTVMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXN0aW1hdGUgaG93IGZhciBiZWhpbmQgdGhlIE5QTSByZXBsaWNhIGlzIGNvbXBhcmVkIHRvIHRoZSBsaXZlIE5QTVxuICAgKiByZWdpc3RyeS4gSWYgdGhlIE5QTSByZXBsaWNhIGlzIGRvd24sIHJldHVybiB1bmRlZmluZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbnBtUmVwbGljYUxhZ1NlY29uZHMoXG4gICAgcGFja2FnZU5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGVuY29kZWRQYWNrYWdlTmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChwYWNrYWdlTmFtZSk7XG5cbiAgICBjb25zb2xlLmxvZyhgTWVhc3VyaW5nIE5QTSByZXBsaWNhIGxhZyB1c2luZyAke3BhY2thZ2VOYW1lfS4uLmApO1xuXG4gICAgY29uc3QgcHJpbWFyeURhdGUgPSBhd2FpdCBnZXRNb2RpZmllZFRpbWVzdGFtcChgcmVnaXN0cnkubnBtanMub3JnYCk7XG5cbiAgICBsZXQgcmVwbGljYURhdGU7XG4gICAgdHJ5IHtcbiAgICAgIHJlcGxpY2FEYXRlID0gYXdhaXQgZ2V0TW9kaWZpZWRUaW1lc3RhbXAoXG4gICAgICAgIGByZXBsaWNhdGUubnBtanMuY29tL3JlZ2lzdHJ5YCxcbiAgICAgICAgUkVQTElDQV9SRVFVRVNUX1RJTUVPVVRfTVNcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLm1lc3NhZ2UuaW5jbHVkZXMoJ0hUVFAgNTA0JykpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYFdhcm5pbmc6IGVycm9yIGZldGNoaW5nIHJlcGxpY2F0ZS5ucG1qcy5jb206ICR7ZS50b1N0cmluZygpfWBcbiAgICAgICAgKTtcbiAgICAgICAgLy8gVGhlcmUgaXMgbm8gdmFsdWUgdG8gcmVwb3J0XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRlbHRhTXMgPSBwcmltYXJ5RGF0ZS5nZXRUaW1lKCkgLSByZXBsaWNhRGF0ZS5nZXRUaW1lKCk7XG5cbiAgICBjb25zb2xlLmxvZyhgVGltZXN0YW1wIG9uIHByaW1hcnk6ICR7cHJpbWFyeURhdGUudG9JU09TdHJpbmcoKX1gKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBUaW1lc3RhbXAgb24gcmVwbGljYTogJHtyZXBsaWNhRGF0ZS50b0lTT1N0cmluZygpfSAoJHtcbiAgICAgICAgZGVsdGFNcyAvIDNfNjAwXzAwMFxuICAgICAgfSBob3VycyBiZWhpbmQpYFxuICAgICk7XG5cbiAgICAvLyBXZSByZXR1cm4gaW4gc2Vjb25kcy4uLiBUaGUgbWlsbGlzZWNvbmQgcmVzb2x1dGlvbiBpcyBzaWxseSBoZXJlIHNpbmNlIHRoZSBwcm9iZSBwYWNrYWdlIGlzXG4gICAgLy8gb25seSBwdWJsaXNoZWQgYXBwcm94aW1hdGVseSBvbmNlIGV2ZXJ5IHRocmVlIGhvdXJzLiBXZSB1c2Ugc2Vjb25kcyBvbmx5IGJlY2F1c2UgdGhpcyBpcyB0aGVcbiAgICAvLyBsYXJnZXN0IGF2YWlsYWJsZSB0aW1lIHVuaXQgaW4gQ2xvdWRXYXRjaC5cbiAgICByZXR1cm4gZGVsdGFNcyAvIDFfMDAwO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0TW9kaWZpZWRUaW1lc3RhbXAoXG4gICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICB0aW1lb3V0TWlsbGlzPzogbnVtYmVyXG4gICAgKSB7XG4gICAgICBjb25zdCBpc29EYXRlID0gYXdhaXQgZ2V0SlNPTihcbiAgICAgICAgYGh0dHBzOi8vJHtiYXNlVXJsfS8ke2VuY29kZWRQYWNrYWdlTmFtZX1gLFxuICAgICAgICB7IGpzb25QYXRoOiBbJ3RpbWUnLCAnbW9kaWZpZWQnXSwgdGltZW91dE1pbGxpcyB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGlzb0RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUga2V5KHBhY2thZ2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtPYmplY3RLZXkuU1RBVEVfUFJFRklYfSR7cGFja2FnZU5hbWV9JHtPYmplY3RLZXkuU1RBVEVfU1VGRklYfWA7XG4gIH1cblxuICBwcml2YXRlIHVybChwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBzMzovLyR7dGhpcy5idWNrZXROYW1lfS8ke3RoaXMua2V5KHBhY2thZ2VOYW1lKX1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIVFRQRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgaHR0cFN0YXR1c0NvZGU6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgSFRUUEVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgVGltZW91dEVycm9yKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ2FuYXJ5U3RhdGUge1xuICAvKipcbiAgICogVGhlIGxhdGVzdCBwYWNrYWdlIHZlcnNpb24sIGFzIG9mIHRoZSBsYXN0IGV4ZWN1dGlvbiBvZiB0aGUgY2FuYXJ5LlxuICAgKi9cbiAgbGF0ZXN0OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHZlcnNpb24gd2UgYXJlIHRyYWNraW5nLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBwdWJsaXNoIGRhdGUgb2YgdGhlIHZlcnNpb24uXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHVibGlzaGVkQXQ6IERhdGU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGF0ZSBhdCB3aGljaCB0aGUgdmVyc2lvbiBpcyBhdmFpbGFibGUgb24gdGhlIGh1Yi5cbiAgICAgKi9cbiAgICBhdmFpbGFibGVBdD86IERhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEVhY2ggZXhpc3RpbmcsIGJ1dCBub3QteWV0LWZvdW5kIHZlcnNpb25zIHRoYXQgYXJlIHN0aWxsIHRyYWNrZWQuXG4gICAqL1xuICBwZW5kaW5nOiB7XG4gICAgW3ZlcnNpb246IHN0cmluZ106IHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIHZlcnNpb24gd2UgYXJlIHRyYWNraW5nLlxuICAgICAgICovXG4gICAgICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIHB1Ymxpc2ggZGF0ZSBvZiB0aGUgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgcmVhZG9ubHkgcHVibGlzaGVkQXQ6IERhdGU7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlc2UgcGVuZGluZyBwYWNrYWdlcyBhcmUgTkVWRVIgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQuXG4gICAgICAgKi9cbiAgICAgIGF2YWlsYWJsZUF0OiB1bmRlZmluZWQ7XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhIHJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIFVSTCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgYWZ0ZXIgaGF2aW5nXG4gKiBwYXJzZWQgaXQgZnJvbSBKU09OLlxuICpcbiAqIEBwYXJhbSB1cmwgdGhlIFVSTCB0byBnZXQuXG4gKiBAcGFyYW0ganNvblBhdGggYSBKU09OIHBhdGggdG8gZXh0cmFjdCBvbmx5IGEgc3Vic2V0IG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gdGltZW91dE1pbGxpcyB0aGUgc29ja2V0IHRpbWVvdXQsIGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZnVuY3Rpb24gZ2V0SlNPTihcbiAgdXJsOiBzdHJpbmcsXG4gIHtcbiAgICBqc29uUGF0aCxcbiAgICB0aW1lb3V0TWlsbGlzLFxuICB9OiB7IGpzb25QYXRoPzogc3RyaW5nW107IHRpbWVvdXRNaWxsaXM/OiBudW1iZXIgfSA9IHt9XG4pOiBQcm9taXNlPGFueT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGh0dHBzXG4gICAgICAuZ2V0KFxuICAgICAgICB1cmwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnaWRlbnRpdHknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZW91dDogdGltZW91dE1pbGxpcyxcbiAgICAgICAgfSxcbiAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBIVFRQRXJyb3IoXG4gICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgICBgR0VUICR7dXJsfSAtIEhUVFAgJHtyZXMuc3RhdHVzQ29kZX0gKCR7cmVzLnN0YXR1c01lc3NhZ2V9KWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4ga28oZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgICAgICAgIHJlcy5vbmNlKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgICAgICAgLy8gVXBvbiBzb2NrZXQgdGltZW91dCwgZmFpbCB3aXRoIGEgVGltZW91dEVycm9yXG4gICAgICAgICAgICBrbyhcbiAgICAgICAgICAgICAgbmV3IFRpbWVvdXRFcnJvcihcbiAgICAgICAgICAgICAgICBgUmVxdWVzdCB0aW1lZCBvdXQgKGFmdGVyICR7XG4gICAgICAgICAgICAgICAgICB0aW1lb3V0TWlsbGlzID8/ICdOL0EnXG4gICAgICAgICAgICAgICAgfSBtcyk6IEdFVCAke3VybH1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBqc29uID0gSlNPTlN0cmVhbS5wYXJzZShqc29uUGF0aCk7XG4gICAgICAgICAganNvbi5vbmNlKCdkYXRhJywgb2spO1xuICAgICAgICAgIGpzb24ub25jZSgnZXJyb3InLCBrbyk7XG5cbiAgICAgICAgICBjb25zdCBwbGFpblBheWxvYWQgPVxuICAgICAgICAgICAgcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXSA9PT0gJ2d6aXAnID8gZ3VuemlwKHJlcykgOiByZXM7XG4gICAgICAgICAgcGxhaW5QYXlsb2FkLnBpcGUoanNvbiwgeyBlbmQ6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5vbmNlKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgICAvLyBVcG9uIHNvY2tldCB0aW1lb3V0LCBmYWlsIHdpdGggYSBUaW1lb3V0RXJyb3JcbiAgICAgICAga28oXG4gICAgICAgICAgbmV3IFRpbWVvdXRFcnJvcihcbiAgICAgICAgICAgIGBSZXF1ZXN0IHRpbWVkIG91dCAoYWZ0ZXIgJHt0aW1lb3V0TWlsbGlzID8/ICdOL0EnfSBtcyk6IEdFVCAke3VybH1gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGBsYXRlc3RgIHByb3BlcnR5IG9mIGBzdGF0ZWAgdGkgdGhlIHByb3ZpZGVkIGBsYXRlc3RgIHZhbHVlLFxuICogdW5sZXNzIHRoaXMgaXMgYWxyZWFkeSB0aGUgY3VycmVudCBsYXRlc3QuXG4gKlxuICogSWYgdGhlIHByZXZpb3VzIGxhdGVzdCB2ZXJzaW9uIGRvZXMgbm90IGhhdmUgdGhlIGBhdmFpbGFibGVBdGAgcHJvcGVydHksIGFkZHNcbiAqIHRoYXQgdG8gdGhlIGBwZW5kaW5nYCBzZXQuXG4gKlxuICogQHBhcmFtIHN0YXRlICB0aGUgc3RhdGUgdG8gYmUgdXBkYXRlZC5cbiAqIEBwYXJhbSBsYXRlc3QgdGhlIGN1cnJlbnQgXCJsYXRlc3RcIiB2ZXJzaW9uIG9mIHRoZSB0cmFja2VkIHBhY2thZ2UuXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUxhdGVzdElmTmVlZGVkKFxuICBzdGF0ZTogQ2FuYXJ5U3RhdGUsXG4gIGxhdGVzdDogQ2FuYXJ5U3RhdGVbJ2xhdGVzdCddXG4pOiB2b2lkIHtcbiAgaWYgKHN0YXRlLmxhdGVzdC52ZXJzaW9uID09PSBsYXRlc3QudmVyc2lvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIHRoZSBjdXJyZW50IFwibGF0ZXN0XCIgaXNuJ3QgYXZhaWxhYmxlIHlldCwgYWRkIGl0IHRvIHRoZSBgcGVuZGluZ2AgdmVyc2lvbnMuXG4gIGlmIChzdGF0ZS5sYXRlc3QuYXZhaWxhYmxlQXQgPT0gbnVsbCkge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IHZlcnNpb24gb2YganNpaSBkb2Vzbid0IGRvIGNvbnRyb2wgZmxvdyBhbmFseXNpcyB3ZWxsIGVub3VnaCBoZXJlIHRvXG4gICAgLy8gZGV0ZXJtaW5lIHRoYXQgdGhlYGlmYCBicmFuY2ggZ3VhcmFudGVlcyBgYXZhaWxhYmxlQXRgIGlzIHVuZGVmaW5lZCBoZXJlLlxuICAgIHN0YXRlLnBlbmRpbmdbc3RhdGUubGF0ZXN0LnZlcnNpb25dID0ge1xuICAgICAgLi4uc3RhdGUubGF0ZXN0LFxuICAgICAgYXZhaWxhYmxlQXQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGUubGF0ZXN0ID0gbGF0ZXN0O1xufVxuXG5mdW5jdGlvbiBndW56aXAocmVhZGFibGU6IFJlYWRhYmxlKTogUmVhZGFibGUge1xuICBjb25zdCBneiA9IGNyZWF0ZUd1bnppcCgpO1xuICByZWFkYWJsZS5waXBlKGd6LCB7IGVuZDogdHJ1ZSB9KTtcbiAgcmV0dXJuIGd6O1xufVxuIl19
@@ -529,7 +529,7 @@ class NpmJs {
529
529
  }
530
530
  exports.NpmJs = NpmJs;
531
531
  _a = JSII_RTTI_SYMBOL_1;
532
- NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.18" };
532
+ NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.19" };
533
533
  /**
534
534
  * How often 'rate' goes into 'duration' (rounded up)
535
535
  */
@@ -50,7 +50,7 @@ class TagCondition {
50
50
  }
51
51
  exports.TagCondition = TagCondition;
52
52
  _a = JSII_RTTI_SYMBOL_1;
53
- TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.18" };
53
+ TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.19" };
54
54
  /**
55
55
  * Logic operators for performing specific conditional logic.
56
56
  */
@@ -130,7 +130,7 @@ class TagConditionField {
130
130
  }
131
131
  exports.TagConditionField = TagConditionField;
132
132
  _b = JSII_RTTI_SYMBOL_1;
133
- TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.18" };
133
+ TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.19" };
134
134
  /**
135
135
  * Target the README of the package to dictate whether a tag is relevant.
136
136
  */
@@ -147,5 +147,5 @@ class TagConditionReadme {
147
147
  }
148
148
  exports.TagConditionReadme = TagConditionReadme;
149
149
  _c = JSII_RTTI_SYMBOL_1;
150
- TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.18" };
150
+ TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.19" };
151
151
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE4RUEsSUFBWSxrQkFHWDtBQUhELFdBQVksa0JBQWtCO0lBQzVCLG1EQUE2QixDQUFBO0lBQzdCLHVDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxrQkFBa0IsR0FBbEIsMEJBQWtCLEtBQWxCLDBCQUFrQixRQUc3QjtBQXNCRDs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUFDaEM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQXFCO1FBQ2pDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFxQjtRQUNoQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFxQjtRQUNqQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFjO1FBQzVCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNYLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O0FBdkNILG9DQTBDQzs7O0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0Isb0NBQVcsQ0FBQTtJ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dCB7IFBhY2thZ2VUYWdHcm91cCB9IGZyb20gJy4uL3BhY2thZ2UtdGFnLWdyb3VwJztcblxuaW50ZXJmYWNlIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIHRhZyBiZWluZyBhcHBsaWVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaGV4IHZhbHVlIHN0cmluZyBmb3IgdGhlIGNvbG9yIG9mIHRoZSB0YWcgd2hlbiBkaXNwbGF5ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQgZXh0ZW5kcyBQYWNrYWdlVGFnUHJlc2VudGF0aW9uQmFzZSB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodCBleHRlbmRzIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIEljb24gZGlzcGxheWVkIG5leHQgdG8gaGlnaGxpZ2h0IG9uIHBhY2thZ2UgY2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hGaWx0ZXIge1xuICAvKipcbiAgICogRGlzcGxheSBuYW1lIGZvciBmaWx0ZXJcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXk6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiBncm91cCB0byBpbmNsdWRlIGZpbHRlciBpblxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGdyb3VwYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBncm91cEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlVGFnR3JvdXAgdG8gaW5jbHVkZSBmaWx0ZXIgaW5cbiAgICovXG4gIHJlYWRvbmx5IGdyb3VwPzogUGFja2FnZVRhZ0dyb3VwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgZm9yIHRhZywgdXNlZCBmb3Igc2VhcmNoLiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHRhZ3MuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBoaWdsaWdodGluZyB0YWcgb24gcGFja2FnZSBjYXJkXG4gICAqIEBkZWZhdWx0IGRvbid0IGhpZ2hsaWdodCB0YWdcbiAgICovXG4gIHJlYWRvbmx5IGhpZ2hsaWdodD86IEhpZ2hsaWdodDtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3Igc2hvd2luZyB0YWcgYXMga2V5d29yZFxuICAgKiBAZGVmYXVsdCBkb24ndCBzaG93IHRhZyBpbiBrZXl3b3JkIGxpc3RcbiAgICovXG4gIHJlYWRvbmx5IGtleXdvcmQ/OiBLZXl3b3JkO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBzaG93aW5nIHRhZyBhcyBzZWFyY2ggZmlsdGVyXG4gICAqIEBkZWZhdWx0IGRvbid0IHNob3cgdGFnIGluIHNlYXJjaCBmaWx0ZXJzXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hGaWx0ZXI/OiBTZWFyY2hGaWx0ZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYXBwbHlpbmcgY3VzdG9tIHRhZ3MgdG8gcmVsZXZhbnQgcGFja2FnZXMuIEN1c3RvbSB0YWdzIGFyZVxuICogZGlzcGxheWVkIG9uIHRoZSBwYWNrYWdlIGRldGFpbHMgcGFnZSwgYW5kIGNhbiBiZSB1c2VkIGZvciBzZWFyY2hpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZyBleHRlbmRzIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbG9naWMgdGhhdCBkaWN0YXRlcyB3aGV0aGVyIHRoZVxuICAgKiBwYWNrYWdlIGhhcyB0aGUgdGFnIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gVGFnQ29uZGl0aW9uU291cmNlIHtcbiAgUEFDS0FHRV9KU09OID0gJ1BBQ0tBR0VfSlNPTicsXG4gIFJFQURNRSA9ICdSRUFETUUnLFxufVxuXG4vKipcbiAqIFNlcmlhbGl6ZWQgY29uZmlnIGZvciBhIHRhZyBjb25kaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdDb25kaXRpb25Db25maWcge1xuICByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGU7XG4gIHJlYWRvbmx5IHNvdXJjZT86IFRhZ0NvbmRpdGlvblNvdXJjZTtcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBUYWdDb25kaXRpb25Db25maWdbXTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVkIHRhZyBkZWNsYXJhdGlvbiB0byBiZSBwYXNzZWQgdG8gbGFtYmRhcyB2aWEgZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVGFnQ29uZmlnIGV4dGVuZHMgUGFja2FnZVRhZ0Jhc2Uge1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBDb25kaXRpb24gZm9yIGFwcGx5aW5nIGEgY3VzdG9tIHRhZyB0byBhIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWdDb25kaXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuICYmIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIG9ubHkgd2hlbiBhbGwgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmVcbiAgICogdHJ1ZS5cbiAgICovXG4gIHN0YXRpYyBhbmQoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5BTkQsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gfHwgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgYW55IG9mIHRoZSBjb25kaXRpb24gYXJndW1lbnRzIGFyZVxuICAgKiB0cnVlLlxuICAgKi9cbiAgc3RhdGljIG9yKC4uLmNvbmRzOiBUYWdDb25kaXRpb25bXSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25Mb2dpYyhUYWdDb25kaXRpb25Mb2dpY1R5cGUuT1IsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSAhIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBjb25kaXRpb24gYXJndW1lbnQgaXMgZmFsc2VcbiAgICovXG4gIHN0YXRpYyBub3QoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5OT1QsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYXJnZXQgYSBmaWVsZCB3aXRoaW4gdGhlIGBwYWNrYWdlLmpzb25gIHRvIGFzc2VydCBhZ2FpbnN0LiBOZXN0ZWQgZmllbGRzXG4gICAqIGNhbiBiZSBhY2Nlc3NlZCBieSBwYXNzaW5nIG11bHRpcGxlIGtleXMuXG4gICAqIGBUYWdDb25kaXRpb24uZmllbGQoJ2tleTEnLCAna2V5MicpYCB3aWxsIGFjY2Vzc1xuICAgKiBgcGFja2FnZUpzb24/LmtleTE/LmtleTJgLlxuICAgKi9cbiAgc3RhdGljIGZpZWxkKC4uLmtleXM6IHN0cmluZ1tdKTogVGFnQ29uZGl0aW9uRmllbGQge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uRmllbGQoa2V5cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29uZGl0aW9uIHdpdGggbG9naWMgdGFyZ2V0aW5nIHRoZSBSRUFETUUgb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICBzdGF0aWMgcmVhZG1lKCk6IFRhZ0NvbmRpdGlvblJlYWRtZSB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25SZWFkbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBMb2dpYyBvcGVyYXRvcnMgZm9yIHBlcmZvcm1pbmcgc3BlY2lmaWMgY29uZGl0aW9uYWwgbG9naWMuXG4gKi9cbmV4cG9ydCBlbnVtIFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZSB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUicsXG4gIE5PVCA9ICdOT1QnLFxuICBFUVVBTFMgPSAnRVFVQUxTJyxcbiAgSU5DTFVERVMgPSAnSU5DTFVERVMnLFxuICBTVEFSVFNfV0lUSCA9ICdTVEFSVFNfV0lUSCcsXG59XG5cbmNsYXNzIFRhZ0NvbmRpdGlvbkxvZ2ljIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzTG9naWMgPSB0cnVlO1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGlsZHJlbjogVGFnQ29uZGl0aW9uW11cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNoaWxkcmVuLm1hcCgoY29uZCkgPT4gY29uZC5iaW5kKCkpLFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgVGFnQ29uZGl0aW9uUHJlZGljYXRlIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJlZGljYXRlID0gdHJ1ZTtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogVGFnQ29uZGl0aW9uTG9naWNUeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc291cmNlPzogVGFnQ29uZGl0aW9uU291cmNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Pzogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZT86IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM/OiBUYWdDb25kaXRpb25JbmNsdWRlc09wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRhcmdldCBhIGZpZWxkIHRvIHVzZSBpbiBsb2dpYyB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25GaWVsZCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBzdHJpbmdbXSkge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgPT09IGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBzcGVjaWZpZWQgZmllbGQgd2l0aGluIHRoZVxuICAgKiBwYWNrYWdlJ3MgcGFja2FnZS5qc29uIGlzIGVxdWFsIHRvIHRoZSBwYXNzZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgZXEodmFsdWU6IGFueSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuRVFVQUxTLFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIHNwZWNpZmllZFxuICAgKiBmaWVsZCB3aXRoaW4gdGhlIHBhY2thZ2UncyBwYWNrYWdlLmpzb24gaW5jbHVkZXMgdGhlIHZhbHVlLiBUaGlzIHdvcmtzIGZvclxuICAgKiBhcnJheXMgb3Igc3RyaW5ncy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUEFDS0FHRV9KU09OLFxuICAgICAgdGhpcy5maWVsZCxcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLnN0YXJ0c1dpdGgodmFsdWUpYCBjb25kaXRpb24gd2hpY2ggYXBwbGllcyBpZiB0aGUgc3BlY2lmaWVkXG4gICAqIGZpZWxkIHdpdGhpbiB0aGUgcGFja2FnZSdzIHBhY2thZ2UuanNvbiBiZWdpbnMgd2l0aCB0aGUgdmFsdWUuIFRoaXMgd29ya3NcbiAgICogb25seSBmb3Igc3RyaW5nIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGFydHNXaXRoKHZhbHVlOiBzdHJpbmcpOiBUYWdDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uUHJlZGljYXRlKFxuICAgICAgVGFnQ29uZGl0aW9uTG9naWNUeXBlLlNUQVJUU19XSVRILFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUYXJnZXQgdGhlIFJFQURNRSBvZiB0aGUgcGFja2FnZSB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25SZWFkbWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgcmVhZG1lLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIFJFQURNRVxuICAgKiBpbmNsdWRlcyB0aGUgc3BlY2lmaWVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUkVBRE1FLFxuICAgICAgdW5kZWZpbmVkLCAvLyBubyBrZXlcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgaW5jbHVkZXNgIG9wZXJhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBhcHBlYXIgYXQgbGVhc3QgdGhpcyBtYW55IHRpbWVzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBhdExlYXN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdHJpbmcgbWF0Y2hlcyBtdXN0IG1hdGNoIHRoZSBjYXNpbmcgb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gVGhpcyBvcHRpb25cbiAgICogaXMgaWdub3JlZCBpZiB0aGUgdmFsdWUgd2UgYXJlIGNoZWNraW5nIGlzIGFuIGFycmF5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XG59XG4iXX0=
@@ -13,7 +13,7 @@ class FilterType {
13
13
  }
14
14
  exports.FilterType = FilterType;
15
15
  _a = JSII_RTTI_SYMBOL_1;
16
- FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.18" };
16
+ FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.19" };
17
17
  class FilterTypeRadio extends FilterType {
18
18
  bind() {
19
19
  return { type: 'radio' };
@@ -45,5 +45,5 @@ class PackageTagGroup {
45
45
  }
46
46
  exports.PackageTagGroup = PackageTagGroup;
47
47
  _b = JSII_RTTI_SYMBOL_1;
48
- PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.18" };
48
+ PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.19" };
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWctZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxNQUFzQixVQUFVO0lBQzlCLE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBUEgsZ0NBVUM7OztBQUVELE1BQU0sZUFBZ0IsU0FBUSxVQUFVO0lBQy9CLElBQUk7UUFDVCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sa0JBQW1CLFNBQVEsVUFBVTtJQUNsQyxJQUFJO1FBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUF3QkQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFLMUIsWUFBNEIsRUFBVSxFQUFFLEtBQTRCO1FBQXhDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0UsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztJQUNKLENBQUM7O0FBbEJILDBDQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyVHlwZVZhbHVlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2NoZWNrYm94JyB8ICdyYWRpbyc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWx0ZXJUeXBlIHtcbiAgc3RhdGljIGNoZWNrYm94KCk6IEZpbHRlclR5cGUge1xuICAgIHJldHVybiBuZXcgRmlsdGVyVHlwZUNoZWNrYm94KCk7XG4gIH1cblxuICBzdGF0aWMgcmFkaW8oKTogRmlsdGVyVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJUeXBlUmFkaW8oKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZTtcbn1cblxuY2xhc3MgRmlsdGVyVHlwZVJhZGlvIGV4dGVuZHMgRmlsdGVyVHlwZSB7XG4gIHB1YmxpYyBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZSB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ3JhZGlvJyB9O1xuICB9XG59XG5cbmNsYXNzIEZpbHRlclR5cGVDaGVja2JveCBleHRlbmRzIEZpbHRlclR5cGUge1xuICBwdWJsaWMgYmluZCgpOiBGaWx0ZXJUeXBlVmFsdWUge1xuICAgIHJldHVybiB7IHR5cGU6ICdjaGVja2JveCcgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdHcm91cFByb3BzIHtcbiAgLyoqXG4gICAqIEdyb3VwIGxhYmVsIHRvIGRpc3BsYXkuIEZhbGxzIGJhY2sgdG8gaWQgaWYgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1lc3NhZ2UgdG8gc2hvdyB3aXRoaW4gYSB0b29sdGlwIG5leHQgdG8gdGhlIGZpbHRlciBsYWJlbFxuICAgKi9cbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzcGVjaWZ5IHRoZSBncm91cCBmaWx0ZXIgdHlwZS4gRGVmYXVsdHMgdG8gY2hlY2tib3ggaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyVHlwZT86IEZpbHRlclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIGN1c3RvbSBwYWNrYWdlIHRhZyBncm91cFxuICovXG5leHBvcnQgY2xhc3MgUGFja2FnZVRhZ0dyb3VwIHtcbiAgcHVibGljIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsIHByb3BzPzogUGFja2FnZVRhZ0dyb3VwUHJvcHMpIHtcbiAgICB0aGlzLmxhYmVsID0gcHJvcHM/LmxhYmVsO1xuICAgIHRoaXMudG9vbHRpcCA9IHByb3BzPy50b29sdGlwO1xuICAgIHRoaXMuZmlsdGVyVHlwZSA9IChwcm9wcz8uZmlsdGVyVHlwZSA/PyBGaWx0ZXJUeXBlLmNoZWNrYm94KCkpLmJpbmQoKS50eXBlO1xuICB9XG5cbiAgcHVibGljIGJpbmQoKTogUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgIHRvb2x0aXA6IHRoaXMudG9vbHRpcCxcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMuZmlsdGVyVHlwZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -31,5 +31,5 @@ class PreloadFile {
31
31
  }
32
32
  exports.PreloadFile = PreloadFile;
33
33
  _a = JSII_RTTI_SYMBOL_1;
34
- PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.18" };
34
+ PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.19" };
35
35
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJlbG9hZC1maWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQWtDO0FBRWxDOzs7R0FHRztBQUNILE1BQWEsV0FBVztJQWdCdEIsWUFBNkIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDO0lBZjdDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGlCQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBSU0sSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDOztBQXBCSCxrQ0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGphdmFzY3JpcHQgZmlsZSB0byBsb2FkIGJlZm9yZSB0aGUgd2ViYXBwLlxuICogVGhpcyBjYW4gYWxsb3cgb3BlcmF0b3JzIHRvIGFkZCB0aGVpciBvd24gY2xpZW50IG1vbml0b3JzIG9yIGFuYWx5dGljcyBpZiB0aGV5IHdpc2hcbiAqL1xuZXhwb3J0IGNsYXNzIFByZWxvYWRGaWxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQcmVsb2FkRmlsZSBpbnN0YW5jZSBmcm9tIGEgZmlsZXBhdGggdG8gbG9hZFxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlKHBhdGg6IHN0cmluZyk6IFByZWxvYWRGaWxlIHtcbiAgICBjb25zdCBkYXRhID0gcmVhZEZpbGVTeW5jKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgcmV0dXJuIG5ldyBQcmVsb2FkRmlsZShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUHJlbG9hZEZpbGUgaW5zdGFuY2UgZGlyZWN0bHkgZnJvbSBzb3VyY2UgY29kZVxuICAgKi9cbiAgc3RhdGljIGZyb21Db2RlKGNvZGU6IHN0cmluZyk6IFByZWxvYWRGaWxlIHtcbiAgICByZXR1cm4gbmV3IFByZWxvYWRGaWxlKGNvZGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYXRhOiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIGJpbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG59XG4iXX0=
package/lib/s3/storage.js CHANGED
@@ -52,6 +52,6 @@ class S3StorageFactory extends constructs_1.Construct {
52
52
  }
53
53
  exports.S3StorageFactory = S3StorageFactory;
54
54
  _a = JSII_RTTI_SYMBOL_1;
55
- S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.18" };
55
+ S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.19" };
56
56
  S3StorageFactory.UID = 'S3StorageFactory';
57
57
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zMy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXFEO0FBQ3JELHlDQUF5QztBQUN6QywyQ0FBdUM7QUFjdkM7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBc0I3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixRQUErQixFQUFFO1FBRWpDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBNUJEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUN2QixLQUFnQixFQUNoQixRQUErQixFQUFFO1FBRWpDLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFxQixDQUFDO0lBQ3hFLENBQUM7SUFlRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUNkLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQjtRQUV0QixTQUFTLFdBQVcsQ0FBQyxNQUFpQjtZQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0Qsa0JBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUzQyxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUN0QyxXQUFXLEVBQUUsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDM0MsS0FBSyxFQUFFLG9CQUFvQixNQUFNLENBQUMsVUFBVSxTQUFTLFNBQVMsQ0FBQyxVQUFVLEVBQUU7YUFDNUUsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELDZFQUE2RTtRQUM3RSxrRkFBa0Y7UUFDbEYseUJBQXlCO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xELENBQUM7O0FBNURILDRDQTZEQzs7O0FBM0N5QixvQkFBRyxHQUFHLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBTdGFjaywgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgUzNTdG9yYWdlRmFjdG9yeWBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM1N0b3JhZ2VGYWN0b3J5UHJvcHMge1xuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZmFjdG9yeSB3aWxsIHJldHVybiB0aGUgZmFpbG92ZXIgYnVja2V0cyBpbnN0ZWFkIG9mIHRoZSBwcmltYXJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbG92ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBzMyBzdG9yYWdlIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFMzU3RvcmFnZUZhY3RvcnkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0cmlldmUgb3IgY3JlYXRlIHRoZSBzdG9yYWdlIGZhY3RvcnkgZm9yIHRoZSBjdXJyZW50IHNjb3BlLlxuICAgKlxuICAgKiBUaGlzIGlzIHN0YWNrIHNpbmdsZXRvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcm9wczogUzNTdG9yYWdlRmFjdG9yeVByb3BzID0ge31cbiAgKTogUzNTdG9yYWdlRmFjdG9yeSB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gICAgY29uc3QgZmFjdG9yeSA9IHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKFMzU3RvcmFnZUZhY3RvcnkuVUlEKTtcbiAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgIHJldHVybiBuZXcgUzNTdG9yYWdlRmFjdG9yeShzdGFjaywgUzNTdG9yYWdlRmFjdG9yeS5VSUQsIHByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWNrLm5vZGUuZmluZENoaWxkKFMzU3RvcmFnZUZhY3RvcnkuVUlEKSBhcyBTM1N0b3JhZ2VGYWN0b3J5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVUlEID0gJ1MzU3RvcmFnZUZhY3RvcnknO1xuXG4gIHByaXZhdGUgZmFpbG92ZXJBY3RpdmU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFMzU3RvcmFnZUZhY3RvcnlQcm9wcyA9IHt9XG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5mYWlsb3ZlckFjdGl2ZSA9IHByb3BzLmZhaWxvdmVyID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBidWNrZXQgaW4gYSBzdG9yYWdlIGNvbmZpZyBhd2FyZSBtYW5uZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHMzLkJ1Y2tldFxuICAgKi9cbiAgcHVibGljIG5ld0J1Y2tldChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBzMy5CdWNrZXRQcm9wc1xuICApOiBzMy5CdWNrZXQge1xuICAgIGZ1bmN0aW9uIGZhaWxvdmVyRm9yKGJ1Y2tldDogczMuQnVja2V0KTogczMuQnVja2V0IHtcbiAgICAgIGNvbnN0IF9mYWlsb3ZlciA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGBGYWlsb3ZlciR7aWR9YCwgcHJvcHMpO1xuICAgICAgVGFncy5vZihfZmFpbG92ZXIpLmFkZCgnZmFpbG92ZXInLCAndHJ1ZScpO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCAnU25hcHNob3RDb21tYW5kJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogYFNuYXBzaG90ICR7YnVja2V0Lm5vZGUucGF0aH1gLFxuICAgICAgICB2YWx1ZTogYGF3cyBzMyBzeW5jIHMzOi8vJHtidWNrZXQuYnVja2V0TmFtZX0gczM6Ly8ke19mYWlsb3Zlci5idWNrZXROYW1lfWAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBfZmFpbG92ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgcHJpbWFyeSA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBub3RlIHRoYXQgd2UgY3JlYXRlIHRoZSBmYWlsb3ZlciBidWNrZXQgZXZlbiBpZiB3ZSBkb24ndCBjdXJyZW50bHkgdXNlIGl0LlxuICAgIC8vIHRoaXMgaXMgYmVjYXVzZSBjb25kaXRpb25pbmcgYnVja2V0IGNyZWF0aW9uIHdpbGwgZXZlbnR1YWxseSBmYWlsIHNpbmNlIGJ1Y2tldHNcbiAgICAvLyBhcmUgbm9ybWFsbHkgcmV0YWluZWQuXG4gICAgY29uc3QgZmFpbG92ZXIgPSBmYWlsb3ZlckZvcihwcmltYXJ5KTtcblxuICAgIHJldHVybiB0aGlzLmZhaWxvdmVyQWN0aXZlID8gZmFpbG92ZXIgOiBwcmltYXJ5O1xuICB9XG59XG4iXX0=
@@ -245,7 +245,7 @@ class SpdxLicense {
245
245
  }
246
246
  exports.SpdxLicense = SpdxLicense;
247
247
  _a = JSII_RTTI_SYMBOL_1;
248
- SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.4.18" };
248
+ SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.4.19" };
249
249
  SpdxLicense._ALL = new Map();
250
250
  //#region Individual SPDX Licenses
251
251
  /**
package/package.json CHANGED
@@ -183,7 +183,7 @@
183
183
  "main": "lib/index.js",
184
184
  "license": "Apache-2.0",
185
185
  "homepage": "https://github.com/cdklabs",
186
- "version": "0.4.18",
186
+ "version": "0.4.19",
187
187
  "jest": {
188
188
  "maxConcurrency": 2,
189
189
  "moduleNameMapper": {