construct-hub 0.4.16 → 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
@@ -113,6 +113,8 @@ class CouchChanges extends events_1.EventEmitter {
113
113
  retry();
114
114
  }
115
115
  else {
116
+ Error.captureStackTrace(err);
117
+ console.log('[NON-RETRYABLE]', err);
116
118
  ko(err);
117
119
  }
118
120
  };
@@ -122,6 +124,7 @@ class CouchChanges extends events_1.EventEmitter {
122
124
  json.once('error', onError);
123
125
  const plainPayload = res.headers['content-encoding'] === 'gzip' ? gunzip(res) : res;
124
126
  plainPayload.pipe(json, { end: true });
127
+ plainPayload.once('error', onError);
125
128
  });
126
129
  req.end(body && JSON.stringify(body, null, 2));
127
130
  });
@@ -133,4 +136,4 @@ function gunzip(readable) {
133
136
  readable.pipe(gz, { end: true });
134
137
  return gz;
135
138
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291Y2gtY2hhbmdlcy5sYW1iZGEtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jb3VjaC1jaGFuZ2VzLmxhbWJkYS1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNDO0FBRXRDLGlDQUF1QztBQUV2Qyw2QkFBMEI7QUFDMUIsK0JBQW9DO0FBQ3BDLHlDQUF5QztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSxxQkFBWTtJQUk1Qzs7O09BR0c7SUFDSCxZQUFtQixPQUFlLEVBQUUsUUFBZ0I7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFDUix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGFBQUssQ0FBQztZQUNyQixTQUFTLEVBQUUsSUFBSTtZQUNmLGNBQWMsRUFBRSxJQUFLO1lBQ3JCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsT0FBTyxFQUFFLEtBQU07U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFNBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQVEsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQ2xCLEtBQXNCLEVBQ3RCLElBQXNDO1FBRXRDLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxTQUFTLElBQUksR0FBRyxDQUFDO1FBRXpDLE1BQU0sVUFBVSxHQUFHLElBQUksU0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFH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SUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUU1QixNQUFNLFlBQVksR0FDaEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2pFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUNGLENBQUM7WUFDRixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpLRCxvQ0FpS0M7QUFpRUQsU0FBUyxNQUFNLENBQUMsUUFBa0I7SUFDaEMsTUFBTSxFQUFFLEdBQUcsbUJBQVksRUFBRSxDQUFDO0lBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IE91dGdvaW5nSHR0cEhlYWRlcnMgfSBmcm9tICdodHRwJztcbmltcG9ydCB7IEFnZW50LCByZXF1ZXN0IH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tICdzdHJlYW0nO1xuaW1wb3J0IHsgVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IGNyZWF0ZUd1bnppcCB9IGZyb20gJ3psaWInO1xuaW1wb3J0ICogYXMgSlNPTlN0cmVhbSBmcm9tICdKU09OU3RyZWFtJztcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdGhhdCBoZWxwcyB3aXRoIHRyYXZlcnNpbmcgQ291Y2hEQiBkYXRhYmFzZSBjaGFuZ2VzIHN0cmVhbXNcbiAqIGluIGEgcHJvbWlzZS1iYXNlZCwgcGFnZS1ieS1wYWdlIG1hbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIENvdWNoQ2hhbmdlcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWdlbnQ6IEFnZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IFVSTDtcblxuICAvKipcbiAgICogQHBhcmFtIGJhc2VVcmwgIHRoZSBDb3VjaERCIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGRhdGFiYXNlIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBmb3Igd2hpY2ggY2hhbmdlcyBhcmUgZmV0Y2hlZC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihiYXNlVXJsOiBzdHJpbmcsIGRhdGFiYXNlOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIFNldHRpbmcgdXAgZm9yIGtlZXAtYWxpdmUgY29ubmVjdGlvbnMuXG4gICAgdGhpcy5hZ2VudCA9IG5ldyBBZ2VudCh7XG4gICAgICBrZWVwQWxpdmU6IHRydWUsXG4gICAgICBrZWVwQWxpdmVNc2VjczogNV8wMDAsXG4gICAgICBtYXhTb2NrZXRzOiA0LFxuICAgICAgdGltZW91dDogNjBfMDAwLFxuICAgIH0pO1xuICAgIHRoaXMuYmFzZVVybCA9IG5ldyBVUkwoZGF0YWJhc2UsIGJhc2VVcmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN1bW1hcnkgaW5mb3JtYXRpb25zIGFib3V0IHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpbmZvKCk6IFByb21pc2U8RGF0YWJhc2VJbmZvcz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5odHRwcygnZ2V0JywgdGhpcy5iYXNlVXJsKSkgYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbnMgYSBiYXRjaCBvZiBjaGFuZ2VzIGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2luY2UgICAgIHRoZSBzZXF1ZW5jZSB2YWx1ZSBzaW5jZSB3aGVuIGhpc3Rvcnkgc2hvdWxkIGJlIGZldGNoZWQuXG4gICAqIEBwYXJhbSBiYXRjaFNpemUgdGhlIG1heGltdW0gYW1vdW50IG9mIGNoYW5nZXMgdG8gcmV0dXJuIGluIGEgc2luZ2xlIHBhZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgcGFnZSBvZiBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoYW5nZXMoXG4gICAgc2luY2U6IHN0cmluZyB8IG51bWJlcixcbiAgICBvcHRzPzogeyByZWFkb25seSBiYXRjaFNpemU/OiBudW1iZXIgfVxuICApOiBQcm9taXNlPERhdGFiYXNlQ2hhbmdlcz4ge1xuICAgIGNvbnN0IGJhdGNoU2l6ZSA9IG9wdHM/LmJhdGNoU2l6ZSA/PyAxMDA7XG5cbiAgICBjb25zdCBjaGFuZ2VzVXJsID0gbmV3IFVSTCgnX2NoYW5nZXMnLCB0aGlzLmJhc2VVcmwpO1xuICAgIGNoYW5nZXNVcmwuc2VhcmNoUGFyYW1zLnNldCgnaW5jbHVkZV9kb2NzJywgJ3RydWUnKTtcbiAgICBjaGFuZ2VzVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2xpbWl0JywgYmF0Y2hTaXplLnRvRml4ZWQoKSk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCdzZWxlY3RvcicsICdfZmlsdGVyJyk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCdzZXFfaW50ZXJ2YWwnLCBiYXRjaFNpemUudG9GaXhlZCgpKTtcbiAgICBjaGFuZ2VzVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3NpbmNlJywgc2luY2UudG9TdHJpbmcoKSk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCd0aW1lb3V0JywgJzIwMDAwJyAvKiBtcyAqLyk7XG5cbiAgICBjb25zdCBmaWx0ZXIgPSB7IG5hbWU6IHsgJGd0OiBudWxsIH0gfTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBzKCdwb3N0JywgY2hhbmdlc1VybCwgZmlsdGVyKSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZXMgYW4gSFRUUHMgcmVxdWVzdCB1c2luZyB0aGUgcHJvdmlkZWQgbWV0aG9kLCB1cmwsIGFuZCBvcHRpb25hbGx5IHBheWxvYWQuIFRoaXMgZnVuY3Rpb25cbiAgICogcHJvcGVybHkgaGFuZGxlcyBpbnB1dCB0aGF0IGlzIHJlY2VpdmVkIHdpdGggYENvbnRlbnQtVHlwZTogZ3ppcGAgYW5kIGF1dG9tYXRpY2FsbHkgcmV0cmllc1xuICAgKiB0eXBpY2FsIHRyYW5zaWVudCBlcnJvcnMgKEhUVFAgNVhYLCBFQ09OTlJFU0VULCBldGMuLi4pIHdpdGggbGluZWFyIGJhY2stb2ZmIGFuZCBubyBtYXhpbXVtXG4gICAqIHJldHJ5IGNvdW50ICh0aGlzIGlzIHVzZWQgaW4gTGFtYmRhIGZ1bmN0aW9ucywgd2hpY2ggZGUtZmFjdG8gY2FwcyB0aGUgYW1vdW50IG9mIGF0dGVtcHRzXG4gICAqIHRoYXQgd2lsbCBiZSBtYWRlIGR1ZSB0byB0aGUgZnVuY3Rpb24gdGltZSBvdXQpLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kIHRoZSBIVFRQIG1ldGhvZCB1c2VkIGZvciB0aGUgcmVxdWVzdCAoZS5nOiAnZ2V0JywgJ3Bvc3QnLCAuLi4pLlxuICAgKiBAcGFyYW0gdXJsICAgIHRoZSBVUkwgdG8gcmVxdWVzdC5cbiAgICogQHBhcmFtIGJvZHkgICBhbiBvcHRpb25hbCBIVFRQIHJlcXVlc3QgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBKU09OLWVuY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSBhdHRlbXB0IHRoZSByZXF1ZXN0IGF0dGVtcHQgbnVtYmVyICh1c2VkIHRvIGRldGVybWluZSBiYWNrLW9mZiAvIHJldHJ5KS5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIEpTT04tZGVjb2RlZCByZXNwb25zZSBib2R5LlxuICAgKi9cbiAgcHJpdmF0ZSBodHRwcyhcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IFVSTCxcbiAgICBib2R5PzogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0sXG4gICAgYXR0ZW1wdCA9IDFcbiAgKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgICBjb25zdCByZXRyeSA9ICgpID0+XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBSZXRyeWluZyAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3VybH1gKTtcbiAgICAgICAgICB0aGlzLmh0dHBzKG1ldGhvZCwgdXJsLCBib2R5LCBhdHRlbXB0ICsgMSkudGhlbihvaywga28pO1xuICAgICAgICB9LCBNYXRoLm1pbig1MDAgKiBhdHRlbXB0LCA1XzAwMCkpO1xuXG4gICAgICBjb25zdCBoZWFkZXJzOiBPdXRnb2luZ0h0dHBIZWFkZXJzID0ge1xuICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJyxcbiAgICAgIH07XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKGBSZXF1ZXN0OiAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3VybH1gKTtcbiAgICAgIGNvbnN0IHJlcSA9IHJlcXVlc3QoXG4gICAgICAgIHVybCxcbiAgICAgICAge1xuICAgICAgICAgIGFnZW50OiB0aGlzLmFnZW50LFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBvcnQ6IDQ0MyxcbiAgICAgICAgICBzZXJ2ZXJuYW1lOiB1cmwuaG9zdG5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBbRkFUQUxdIFJlcXVlc3QgZmFpbGVkOiAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3VybH1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBSZXNwb25zZTogJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHt1cmx9ID0+IEhUVFAgJHtcbiAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGVcbiAgICAgICAgICAgIH0gKCR7cmVzLnN0YXR1c01lc3NhZ2V9KWBcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gVHJhbnNpZW50IChzZXJ2ZXIpIGVycm9yczpcbiAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPj0gNTAwICYmIHJlcy5zdGF0dXNDb2RlIDwgNjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBgW1JFVFJZQUJMRV0gSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAoJHtcbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzTWVzc2FnZVxuICAgICAgICAgICAgICB9KSAtICR7bWV0aG9kLnRvVXBwZXJDYXNlKCl9ICR7dXJsfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBDYWxsIGFnYWluIGFmdGVyIGEgc2hvcnQgYmFjay1vZmZcbiAgICAgICAgICAgIHJldHVybiByZXRyeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBQZXJtYW5lbnQgKGNsaWVudCkgZXJyb3JzOlxuICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA0MDAgJiYgcmVzLnN0YXR1c0NvZGUgPCA1MDApIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgW0ZBVEFMXSBIVFRQICR7cmVzLnN0YXR1c0NvZGV9ICgke1xuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNNZXNzYWdlXG4gICAgICAgICAgICAgIH0pIC0gJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHt1cmx9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBrbyhlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnI6IEVycm9yICYgeyBjb2RlPzogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VDT05OUkVTRVQnKSB7XG4gICAgICAgICAgICAgIC8vIFRyYW5zaWVudCBuZXR3b3JraW5nIHByb2JsZW0/XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgYFtSRVRSWUFCTEVdICR7ZXJyLmNvZGV9IC0gJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHt1cmx9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXRyeSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAga28oZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmVzLm9uY2UoJ2Vycm9yJywgb25FcnJvcik7XG5cbiAgICAgICAgICBjb25zdCBqc29uID0gSlNPTlN0cmVhbS5wYXJzZSh0cnVlKTtcbiAgICAgICAgICBqc29uLm9uY2UoJ2RhdGEnLCBvayk7XG4gICAgICAgICAganNvbi5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuXG4gICAgICAgICAgY29uc3QgcGxhaW5QYXlsb2FkID1cbiAgICAgICAgICAgIHJlcy5oZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPT09ICdnemlwJyA/IGd1bnppcChyZXMpIDogcmVzO1xuICAgICAgICAgIHBsYWluUGF5bG9hZC5waXBlKGpzb24sIHsgZW5kOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmVxLmVuZChib2R5ICYmIEpTT04uc3RyaW5naWZ5KGJvZHksIG51bGwsIDIpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgbGFzdCBzZXF1ZW5jZSBJRCBmcm9tIHRoaXMgY2hhbmdlIHNldC4gVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCBzaG91bGQgYmVcbiAgICogcGFzc2VkIHRvIHRoZSBzdWJzZXF1ZW50IGAuY2hhbmdlc2AgY2FsbCB0byBmZXRjaCB0aGUgbmV4dCBwYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdF9zZXE6IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBwZW5kaW5nIGNoYW5nZXMgZnJvbSB0aGUgc2VydmVyLiBUaGlzIHZhbHVlIGlzIG5vdCBhbHdheXNcbiAgICogcmV0dXJuZWQgYnkgdGhlIHNlcnZlcnMuXG4gICAqL1xuICByZWFkb25seSBwZW5kaW5nPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhbmdlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgYmF0Y2guXG4gICAqL1xuICByZWFkb25seSByZXN1bHRzOiByZWFkb25seSBEYXRhYmFzZUNoYW5nZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBzZXQgb2YgcmV2aXNpb25zIHRvIHRoZSBvYmplY3QgdGhhdCB3ZXJlIHJlc29sdmVkIGFzIHBhcnQgb2YgdGhpc1xuICAgKiBjaGFuZ2UuXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzOiBSZWFkb25seUFycmF5PHsgcmVhZG9ubHkgcmV2OiBzdHJpbmcgfT47XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZG9jdW1lbnQgdGhhdCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXF1ZW5jZSBJRCBmb3IgdGhpcyBjaGFuZ2UgaW4gdGhlIHN0cmVhbS4gSXQgbWF5IG5vdCBiZSBwcmVzZW50IGZvclxuICAgKiBhbGwgKG9yIGFueSkgZW50cmllcyBpbiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2VxPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY2hhbmdlIGNvcnJlc3BvbmRzIHRvIHRoaXMgZG9jdW1lbnQgYmVpbmcgZGVsZXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHByZXNlbnQsIHRoZSByZXNvbHZlZCBkb2N1bWVudCBhZnRlciB0aGUgY2hhbmdlIGhhcyBiZWVuIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBkb2M/OiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUluZm9zIHtcbiAgcmVhZG9ubHkgZGJfbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkaXNrX2Zvcm1hdF92ZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRvY19jb3VudDogbnVtYmVyO1xuICByZWFkb25seSBkb2NfZGVsX2NvdW50OiBudW1iZXI7XG4gIHJlYWRvbmx5IGluc3RhbmNlX3N0YXJ0X3RpbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcHVyZ2Vfc2VxOiBzdHJpbmcgfCBudW1iZXI7XG4gIHJlYWRvbmx5IHNpemVzOiB7XG4gICAgcmVhZG9ubHkgYWN0aXZlOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgZXh0ZXJuYWw6IG51bWJlcjtcbiAgICByZWFkb25seSBmaWxlOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHVwZGF0ZV9zZXE6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gZ3VuemlwKHJlYWRhYmxlOiBSZWFkYWJsZSk6IFJlYWRhYmxlIHtcbiAgY29uc3QgZ3ogPSBjcmVhdGVHdW56aXAoKTtcbiAgcmVhZGFibGUucGlwZShneiwgeyBlbmQ6IHRydWUgfSk7XG4gIHJldHVybiBnejtcbn1cbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291Y2gtY2hhbmdlcy5sYW1iZGEtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jb3VjaC1jaGFuZ2VzLmxhbWJkYS1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNDO0FBRXRDLGlDQUF1QztBQUV2Qyw2QkFBMEI7QUFDMUIsK0JBQW9DO0FBQ3BDLHlDQUF5QztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSxxQkFBWTtJQUk1Qzs7O09BR0c7SUFDSCxZQUFtQixPQUFlLEVBQUUsUUFBZ0I7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFDUix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGFBQUssQ0FBQztZQUNyQixTQUFTLEVBQUUsSUFBSTtZQUNmLGNBQWMsRUFBRSxJQUFLO1lBQ3JCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsT0FBTyxFQUFFLEtBQU07U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFNBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQVEsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQ2xCLEtBQXNCLEVBQ3RCLElBQXNDO1FBRXRDLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxTQUFTLElBQUksR0FBRyxDQUFDO1FBRXpDLE1BQU0sVUFBVSxHQUFHLElBQUksU0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbkQsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RCxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpELE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFFdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFRLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0ssS0FBSyxDQUNYLE1BQWMsRUFDZCxHQUFRLEVBQ1IsSUFBaUMsRUFDakMsT0FBTyxHQUFHLENBQUM7UUFFWCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQzVCLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUNqQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxRCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxFQUFFLElBQUssQ0FBQyxDQUFDLENBQUM7WUFFckMsTUFBTSxPQUFPLEdBQXdCO2dCQUNuQyxNQUFNLEVBQUUsa0JBQWtCO2dCQUMxQixpQkFBaUIsRUFBRSxNQUFNO2FBQzFCLENBQUM7WUFDRixJQUFJLElBQUksRUFBRTtnQkFDUixPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7YUFDOUM7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkQsTUFBTSxHQUFHLEdBQUcsZUFBTyxDQUNqQixHQUFHLEVBQ0g7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixPQUFPO2dCQUNQLE1BQU07Z0JBQ04sSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRO2FBQ3pCLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO29CQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FDckIsMkJBQTJCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FDekQsQ0FBQztvQkFDRixLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQy9CLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNsQjtnQkFFRCxPQUFPLENBQUMsR0FBRyxDQUNULGFBQWEsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsWUFDdEMsR0FBRyxDQUFDLFVBQ04sS0FBSyxHQUFHLENBQUMsYUFBYSxHQUFHLENBQzFCLENBQUM7Z0JBRUYsNkJBQTZCO2dCQUM3QixJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFO29CQUNqRCxPQUFPLENBQUMsS0FBSyxDQUNYLG9CQUFvQixHQUFHLENBQUMsVUFBVSxLQUNoQyxHQUFHLENBQUMsYUFDTixPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FDckMsQ0FBQztvQkFDRixvQ0FBb0M7b0JBQ3BDLE9BQU8sS0FBSyxFQUFFLENBQUM7aUJBQ2hCO2dCQUNELDZCQUE2QjtnQkFDN0IsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRTtvQkFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQ3JCLGdCQUFnQixHQUFHLENBQUMsVUFBVSxLQUM1QixHQUFHLENBQUMsYUFDTixPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FDckMsQ0FBQztvQkFDRixLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQy9CLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNsQjtnQkFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQThCLEVBQUUsRUFBRTtvQkFDakQsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTt3QkFDN0IsZ0NBQWdDO3dCQUNoQyxPQUFPLENBQUMsS0FBSyxDQUNYLGVBQWUsR0FBRyxDQUFDLElBQUksTUFBTSxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxFQUFFLENBQzNELENBQUM7d0JBQ0YsS0FBSyxFQUFFLENBQUM7cUJBQ1Q7eUJBQU07d0JBQ0wsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNwQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ1Q7Z0JBQ0gsQ0FBQyxDQUFDO2dCQUVGLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUUzQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRTVCLE1BQU0sWUFBWSxHQUNoQixHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDakUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDdkMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUNGLENBQUM7WUFDRixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXBLRCxvQ0FvS0M7QUFpRUQsU0FBUyxNQUFNLENBQUMsUUFBa0I7SUFDaEMsTUFBTSxFQUFFLEdBQUcsbUJBQVksRUFBRSxDQUFDO0lBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IE91dGdvaW5nSHR0cEhlYWRlcnMgfSBmcm9tICdodHRwJztcbmltcG9ydCB7IEFnZW50LCByZXF1ZXN0IH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tICdzdHJlYW0nO1xuaW1wb3J0IHsgVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IGNyZWF0ZUd1bnppcCB9IGZyb20gJ3psaWInO1xuaW1wb3J0ICogYXMgSlNPTlN0cmVhbSBmcm9tICdKU09OU3RyZWFtJztcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdGhhdCBoZWxwcyB3aXRoIHRyYXZlcnNpbmcgQ291Y2hEQiBkYXRhYmFzZSBjaGFuZ2VzIHN0cmVhbXNcbiAqIGluIGEgcHJvbWlzZS1iYXNlZCwgcGFnZS1ieS1wYWdlIG1hbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIENvdWNoQ2hhbmdlcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWdlbnQ6IEFnZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IFVSTDtcblxuICAvKipcbiAgICogQHBhcmFtIGJhc2VVcmwgIHRoZSBDb3VjaERCIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGRhdGFiYXNlIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBmb3Igd2hpY2ggY2hhbmdlcyBhcmUgZmV0Y2hlZC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihiYXNlVXJsOiBzdHJpbmcsIGRhdGFiYXNlOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIFNldHRpbmcgdXAgZm9yIGtlZXAtYWxpdmUgY29ubmVjdGlvbnMuXG4gICAgdGhpcy5hZ2VudCA9IG5ldyBBZ2VudCh7XG4gICAgICBrZWVwQWxpdmU6IHRydWUsXG4gICAgICBrZWVwQWxpdmVNc2VjczogNV8wMDAsXG4gICAgICBtYXhTb2NrZXRzOiA0LFxuICAgICAgdGltZW91dDogNjBfMDAwLFxuICAgIH0pO1xuICAgIHRoaXMuYmFzZVVybCA9IG5ldyBVUkwoZGF0YWJhc2UsIGJhc2VVcmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN1bW1hcnkgaW5mb3JtYXRpb25zIGFib3V0IHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpbmZvKCk6IFByb21pc2U8RGF0YWJhc2VJbmZvcz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5odHRwcygnZ2V0JywgdGhpcy5iYXNlVXJsKSkgYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbnMgYSBiYXRjaCBvZiBjaGFuZ2VzIGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2luY2UgICAgIHRoZSBzZXF1ZW5jZSB2YWx1ZSBzaW5jZSB3aGVuIGhpc3Rvcnkgc2hvdWxkIGJlIGZldGNoZWQuXG4gICAqIEBwYXJhbSBiYXRjaFNpemUgdGhlIG1heGltdW0gYW1vdW50IG9mIGNoYW5nZXMgdG8gcmV0dXJuIGluIGEgc2luZ2xlIHBhZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgcGFnZSBvZiBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoYW5nZXMoXG4gICAgc2luY2U6IHN0cmluZyB8IG51bWJlcixcbiAgICBvcHRzPzogeyByZWFkb25seSBiYXRjaFNpemU/OiBudW1iZXIgfVxuICApOiBQcm9taXNlPERhdGFiYXNlQ2hhbmdlcz4ge1xuICAgIGNvbnN0IGJhdGNoU2l6ZSA9IG9wdHM/LmJhdGNoU2l6ZSA/PyAxMDA7XG5cbiAgICBjb25zdCBjaGFuZ2VzVXJsID0gbmV3IFVSTCgnX2NoYW5nZXMnLCB0aGlzLmJhc2VVcmwpO1xuICAgIGNoYW5nZXNVcmwuc2VhcmNoUGFyYW1zLnNldCgnaW5jbHVkZV9kb2NzJywgJ3RydWUnKTtcbiAgICBjaGFuZ2VzVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2xpbWl0JywgYmF0Y2hTaXplLnRvRml4ZWQoKSk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCdzZWxlY3RvcicsICdfZmlsdGVyJyk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCdzZXFfaW50ZXJ2YWwnLCBiYXRjaFNpemUudG9GaXhlZCgpKTtcbiAgICBjaGFuZ2VzVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3NpbmNlJywgc2luY2UudG9TdHJpbmcoKSk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCd0aW1lb3V0JywgJzIwMDAwJyAvKiBtcyAqLyk7XG5cbiAgICBjb25zdCBmaWx0ZXIgPSB7IG5hbWU6IHsgJGd0OiBudWxsIH0gfTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBzKCdwb3N0JywgY2hhbmdlc1VybCwgZmlsdGVyKSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZXMgYW4gSFRUUHMgcmVxdWVzdCB1c2luZyB0aGUgcHJvdmlkZWQgbWV0aG9kLCB1cmwsIGFuZCBvcHRpb25hbGx5IHBheWxvYWQuIFRoaXMgZnVuY3Rpb25cbiAgICogcHJvcGVybHkgaGFuZGxlcyBpbnB1dCB0aGF0IGlzIHJlY2VpdmVkIHdpdGggYENvbnRlbnQtVHlwZTogZ3ppcGAgYW5kIGF1dG9tYXRpY2FsbHkgcmV0cmllc1xuICAgKiB0eXBpY2FsIHRyYW5zaWVudCBlcnJvcnMgKEhUVFAgNVhYLCBFQ09OTlJFU0VULCBldGMuLi4pIHdpdGggbGluZWFyIGJhY2stb2ZmIGFuZCBubyBtYXhpbXVtXG4gICAqIHJldHJ5IGNvdW50ICh0aGlzIGlzIHVzZWQgaW4gTGFtYmRhIGZ1bmN0aW9ucywgd2hpY2ggZGUtZmFjdG8gY2FwcyB0aGUgYW1vdW50IG9mIGF0dGVtcHRzXG4gICAqIHRoYXQgd2lsbCBiZSBtYWRlIGR1ZSB0byB0aGUgZnVuY3Rpb24gdGltZSBvdXQpLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kIHRoZSBIVFRQIG1ldGhvZCB1c2VkIGZvciB0aGUgcmVxdWVzdCAoZS5nOiAnZ2V0JywgJ3Bvc3QnLCAuLi4pLlxuICAgKiBAcGFyYW0gdXJsICAgIHRoZSBVUkwgdG8gcmVxdWVzdC5cbiAgICogQHBhcmFtIGJvZHkgICBhbiBvcHRpb25hbCBIVFRQIHJlcXVlc3QgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBKU09OLWVuY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSBhdHRlbXB0IHRoZSByZXF1ZXN0IGF0dGVtcHQgbnVtYmVyICh1c2VkIHRvIGRldGVybWluZSBiYWNrLW9mZiAvIHJldHJ5KS5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIEpTT04tZGVjb2RlZCByZXNwb25zZSBib2R5LlxuICAgKi9cbiAgcHJpdmF0ZSBodHRwcyhcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IFVSTCxcbiAgICBib2R5PzogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0sXG4gICAgYXR0ZW1wdCA9IDFcbiAgKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgICBjb25zdCByZXRyeSA9ICgpID0+XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBSZXRyeWluZyAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3VybH1gKTtcbiAgICAgICAgICB0aGlzLmh0dHBzKG1ldGhvZCwgdXJsLCBib2R5LCBhdHRlbXB0ICsgMSkudGhlbihvaywga28pO1xuICAgICAgICB9LCBNYXRoLm1pbig1MDAgKiBhdHRlbXB0LCA1XzAwMCkpO1xuXG4gICAgICBjb25zdCBoZWFkZXJzOiBPdXRnb2luZ0h0dHBIZWFkZXJzID0ge1xuICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJyxcbiAgICAgIH07XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKGBSZXF1ZXN0OiAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3VybH1gKTtcbiAgICAgIGNvbnN0IHJlcSA9IHJlcXVlc3QoXG4gICAgICAgIHVybCxcbiAgICAgICAge1xuICAgICAgICAgIGFnZW50OiB0aGlzLmFnZW50LFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBvcnQ6IDQ0MyxcbiAgICAgICAgICBzZXJ2ZXJuYW1lOiB1cmwuaG9zdG5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBbRkFUQUxdIFJlcXVlc3QgZmFpbGVkOiAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3VybH1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBSZXNwb25zZTogJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHt1cmx9ID0+IEhUVFAgJHtcbiAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGVcbiAgICAgICAgICAgIH0gKCR7cmVzLnN0YXR1c01lc3NhZ2V9KWBcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gVHJhbnNpZW50IChzZXJ2ZXIpIGVycm9yczpcbiAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPj0gNTAwICYmIHJlcy5zdGF0dXNDb2RlIDwgNjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBgW1JFVFJZQUJMRV0gSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAoJHtcbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzTWVzc2FnZVxuICAgICAgICAgICAgICB9KSAtICR7bWV0aG9kLnRvVXBwZXJDYXNlKCl9ICR7dXJsfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBDYWxsIGFnYWluIGFmdGVyIGEgc2hvcnQgYmFjay1vZmZcbiAgICAgICAgICAgIHJldHVybiByZXRyeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBQZXJtYW5lbnQgKGNsaWVudCkgZXJyb3JzOlxuICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA0MDAgJiYgcmVzLnN0YXR1c0NvZGUgPCA1MDApIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgW0ZBVEFMXSBIVFRQICR7cmVzLnN0YXR1c0NvZGV9ICgke1xuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNNZXNzYWdlXG4gICAgICAgICAgICAgIH0pIC0gJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHt1cmx9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBrbyhlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnI6IEVycm9yICYgeyBjb2RlPzogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VDT05OUkVTRVQnKSB7XG4gICAgICAgICAgICAgIC8vIFRyYW5zaWVudCBuZXR3b3JraW5nIHByb2JsZW0/XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgYFtSRVRSWUFCTEVdICR7ZXJyLmNvZGV9IC0gJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHt1cmx9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXRyeSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tOT04tUkVUUllBQkxFXScsIGVycik7XG4gICAgICAgICAgICAgIGtvKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJlcy5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuXG4gICAgICAgICAgY29uc3QganNvbiA9IEpTT05TdHJlYW0ucGFyc2UodHJ1ZSk7XG4gICAgICAgICAganNvbi5vbmNlKCdkYXRhJywgb2spO1xuICAgICAgICAgIGpzb24ub25jZSgnZXJyb3InLCBvbkVycm9yKTtcblxuICAgICAgICAgIGNvbnN0IHBsYWluUGF5bG9hZCA9XG4gICAgICAgICAgICByZXMuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddID09PSAnZ3ppcCcgPyBndW56aXAocmVzKSA6IHJlcztcbiAgICAgICAgICBwbGFpblBheWxvYWQucGlwZShqc29uLCB7IGVuZDogdHJ1ZSB9KTtcbiAgICAgICAgICBwbGFpblBheWxvYWQub25jZSgnZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHJlcS5lbmQoYm9keSAmJiBKU09OLnN0cmluZ2lmeShib2R5LCBudWxsLCAyKSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUNoYW5nZXMge1xuICAvKipcbiAgICogVGhlIGxhc3Qgc2VxdWVuY2UgSUQgZnJvbSB0aGlzIGNoYW5nZSBzZXQuIFRoaXMgaXMgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlXG4gICAqIHBhc3NlZCB0byB0aGUgc3Vic2VxdWVudCBgLmNoYW5nZXNgIGNhbGwgdG8gZmV0Y2ggdGhlIG5leHQgcGFnZS5cbiAgICovXG4gIHJlYWRvbmx5IGxhc3Rfc2VxOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgcGVuZGluZyBjaGFuZ2VzIGZyb20gdGhlIHNlcnZlci4gVGhpcyB2YWx1ZSBpcyBub3QgYWx3YXlzXG4gICAqIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGVuZGluZz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGNoYW5nZXMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdWx0czogcmVhZG9ubHkgRGF0YWJhc2VDaGFuZ2VbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgc2V0IG9mIHJldmlzaW9ucyB0byB0aGUgb2JqZWN0IHRoYXQgd2VyZSByZXNvbHZlZCBhcyBwYXJ0IG9mIHRoaXNcbiAgICogY2hhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlczogUmVhZG9ubHlBcnJheTx7IHJlYWRvbmx5IHJldjogc3RyaW5nIH0+O1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGRvY3VtZW50IHRoYXQgaGFzIGNoYW5nZWQuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VxdWVuY2UgSUQgZm9yIHRoaXMgY2hhbmdlIGluIHRoZSBzdHJlYW0uIEl0IG1heSBub3QgYmUgcHJlc2VudCBmb3JcbiAgICogYWxsIChvciBhbnkpIGVudHJpZXMgaW4gdGhlIHJlc3VsdC5cbiAgICovXG4gIHJlYWRvbmx5IHNlcT86IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGNoYW5nZSBjb3JyZXNwb25kcyB0byB0aGlzIGRvY3VtZW50IGJlaW5nIGRlbGV0ZWQuXG4gICAqL1xuICByZWFkb25seSBkZWxldGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBwcmVzZW50LCB0aGUgcmVzb2x2ZWQgZG9jdW1lbnQgYWZ0ZXIgdGhlIGNoYW5nZSBoYXMgYmVlbiBhcHBsaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VJbmZvcyB7XG4gIHJlYWRvbmx5IGRiX25hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGlza19mb3JtYXRfdmVyc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBkb2NfY291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgZG9jX2RlbF9jb3VudDogbnVtYmVyO1xuICByZWFkb25seSBpbnN0YW5jZV9zdGFydF90aW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHB1cmdlX3NlcTogc3RyaW5nIHwgbnVtYmVyO1xuICByZWFkb25seSBzaXplczoge1xuICAgIHJlYWRvbmx5IGFjdGl2ZTogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGV4dGVybmFsOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgZmlsZTogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSB1cGRhdGVfc2VxOiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGd1bnppcChyZWFkYWJsZTogUmVhZGFibGUpOiBSZWFkYWJsZSB7XG4gIGNvbnN0IGd6ID0gY3JlYXRlR3VuemlwKCk7XG4gIHJlYWRhYmxlLnBpcGUoZ3osIHsgZW5kOiB0cnVlIH0pO1xuICByZXR1cm4gZ3o7XG59XG4iXX0=
@@ -9470,6 +9470,8 @@ var CouchChanges = class extends import_events.EventEmitter {
9470
9470
  console.error(`[RETRYABLE] ${err.code} - ${method.toUpperCase()} ${url}`);
9471
9471
  retry();
9472
9472
  } else {
9473
+ Error.captureStackTrace(err);
9474
+ console.log("[NON-RETRYABLE]", err);
9473
9475
  ko(err);
9474
9476
  }
9475
9477
  };
@@ -9479,6 +9481,7 @@ var CouchChanges = class extends import_events.EventEmitter {
9479
9481
  json.once("error", onError);
9480
9482
  const plainPayload = res.headers["content-encoding"] === "gzip" ? gunzip(res) : res;
9481
9483
  plainPayload.pipe(json, { end: true });
9484
+ plainPayload.once("error", onError);
9482
9485
  });
9483
9486
  req.end(body && JSON.stringify(body, null, 2));
9484
9487
  });
@@ -9518,6 +9521,7 @@ async function handler(event, context) {
9518
9521
  do {
9519
9522
  await (0, import_aws_embedded_metrics.metricScope)((metrics) => async () => {
9520
9523
  var _a;
9524
+ console2.log("Polling changes from npm replica");
9521
9525
  const changes = await npm.changes(updatedMarker);
9522
9526
  metrics.setDimensions();
9523
9527
  metrics.setProperty("StartSeq", updatedMarker);
@@ -9556,6 +9560,7 @@ async function handler(event, context) {
9556
9560
  tarballUrl: infos.dist.tarball,
9557
9561
  version: infos.version
9558
9562
  };
9563
+ console2.log(`Sending ${invokeArgs.tarballUrl} for staging`);
9559
9564
  await lambda().invokeAsync({
9560
9565
  FunctionName: stagingFunction,
9561
9566
  InvokeArgs: JSON.stringify(invokeArgs, null, 2)
@@ -9564,6 +9569,7 @@ async function handler(event, context) {
9564
9569
  }));
9565
9570
  }
9566
9571
  await saveLastTransactionMarker(context, stagingBucket, updatedMarker, knownVersions);
9572
+ console2.log("Successfully updated marker");
9567
9573
  } finally {
9568
9574
  if (typeof updatedMarker === "number" || /^\d+$/.test(updatedMarker)) {
9569
9575
  metrics.putMetric("LastSeq" /* LAST_SEQ */, typeof updatedMarker === "number" ? updatedMarker : parseInt(updatedMarker), import_aws_embedded_metrics.Unit.None);