israeli-bank-scrapers 3.4.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,7 @@ const BASE_APP_URL = 'https://mto.mizrahi-tefahot.co.il';
33
33
  const AFTER_LOGIN_BASE_URL = /https:\/\/mto\.mizrahi-tefahot\.co\.il\/OnlineApp\/.*/;
34
34
  const OSH_PAGE = '/osh/legacy/legacy-Osh-Main';
35
35
  const TRANSACTIONS_PAGE = '/osh/legacy/root-main-osh-p428New';
36
- const TRANSACTIONS_REQUEST_URL = `${BASE_APP_URL}/OnlinePilot/api/SkyOSH/get428Index`;
36
+ const TRANSACTIONS_REQUEST_URLS = [`${BASE_APP_URL}/OnlinePilot/api/SkyOSH/get428Index`, `${BASE_APP_URL}/Online/api/SkyOSH/get428Index`];
37
37
  const PENDING_TRANSACTIONS_PAGE = '/osh/legacy/legacy-Osh-p420';
38
38
  const PENDING_TRANSACTIONS_IFRAME = 'p420.aspx';
39
39
  const CHANGE_PASSWORD_URL = /https:\/\/www\.mizrahi-tefahot\.co\.il\/login\/\w+\/index\.html#\/change-pass/;
@@ -175,10 +175,12 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
175
175
  await this.page.$eval(`a[href*="${OSH_PAGE}"]`, el => el.click());
176
176
  await (0, _elementsInteractions.waitUntilElementFound)(this.page, `a[href*="${TRANSACTIONS_PAGE}"]`);
177
177
  await this.page.$eval(`a[href*="${TRANSACTIONS_PAGE}"]`, el => el.click());
178
- const request = await this.page.waitForRequest(TRANSACTIONS_REQUEST_URL);
179
- const data = createDataFromRequest(request, this.options.startDate);
180
- const headers = createHeadersFromRequest(request);
181
- const response = await (0, _fetch.fetchPostWithinPage)(this.page, TRANSACTIONS_REQUEST_URL, data, headers);
178
+ const response = await Promise.any(TRANSACTIONS_REQUEST_URLS.map(async url => {
179
+ const request = await this.page.waitForRequest(url);
180
+ const data = createDataFromRequest(request, this.options.startDate);
181
+ const headers = createHeadersFromRequest(request);
182
+ return (0, _fetch.fetchPostWithinPage)(this.page, url, data, headers);
183
+ }));
182
184
 
183
185
  if (!response || response.header.success === false) {
184
186
  throw new Error(`Error fetching transaction. Response message: ${response ? response.header.messages[0].text : ''}`);
@@ -205,4 +207,4 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
205
207
 
206
208
  var _default = MizrahiScraper;
207
209
  exports.default = _default;
208
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9taXpyYWhpLnRzIl0sIm5hbWVzIjpbIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkwiLCJQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFIiwiUEVORElOR19UUkFOU0FDVElPTlNfSUZSQU1FIiwiQ0hBTkdFX1BBU1NXT1JEX1VSTCIsIkRBVEVfRk9STUFUIiwiTUFYX1JPV1NfUEVSX1JFUVVFU1QiLCJ1c2VybmFtZVNlbGVjdG9yIiwicGFzc3dvcmRTZWxlY3RvciIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwiaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IiLCJhZnRlckxvZ2luU2VsZWN0b3IiLCJsb2dpblNwaW5uZXJTZWxlY3RvciIsImFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvciIsInBlbmRpbmdUcnhJZGVudGlmaWVySWQiLCJjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lIiwiY2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWUiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInBhZ2UiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiJHgiLCJJbnZhbGlkUGFzc3dvcmQiLCIkIiwiQ2hhbmdlUGFzc3dvcmQiLCJnZXRTdGFydE1vbWVudCIsIm9wdGlvbnNTdGFydERhdGUiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1vbWVudCIsIm1heCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiZm9ybWF0IiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJtYXAiLCJyb3ciLCJ0eG5EYXRlIiwiTUMwMlBldWxhVGFhRVoiLCJIVE1MNV9GTVQiLCJEQVRFVElNRV9MT0NBTF9TRUNPTkRTIiwidG9JU09TdHJpbmciLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlkZW50aWZpZXIiLCJNQzAyQXNtYWh0YU1la29yaXRFWiIsInBhcnNlSW50IiwidW5kZWZpbmVkIiwiZGF0ZSIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIk1DMDJTY2h1bUVaIiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zIiwicGVuZGluZ1R4biIsInRycyIsInRyIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsInRkIiwidGV4dENvbnRlbnQiLCJ0eG4iLCJhbW91bnQiLCJQZW5kaW5nIiwicG9zdExvZ2luIiwiUHJvbWlzZSIsInJhY2UiLCJNaXpyYWhpU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsImNoZWNrUmVhZGluZXNzIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSIsIiRldmFsIiwiZWwiLCJjbGljayIsIm51bU9mQWNjb3VudHMiLCIkJCIsImxlbmd0aCIsInJlc3VsdHMiLCJpIiwicHVzaCIsImZldGNoQWNjb3VudCIsInN1Y2Nlc3MiLCJhY2NvdW50cyIsImUiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkdlbmVyaWMiLCJlcnJvck1lc3NhZ2UiLCJtZXNzYWdlIiwid2FpdEZvclJlcXVlc3QiLCJvcHRpb25zIiwicmVzcG9uc2UiLCJoZWFkZXIiLCJFcnJvciIsIm1lc3NhZ2VzIiwidGV4dCIsInJlbGV2YW50Um93cyIsImJvZHkiLCJyb3dzIiwiZmlsdGVyIiwiUmVjVHlwZVNwZWNpZmllZCIsIm9zaFR4biIsInN0YXJ0TW9tZW50Iiwib3NoVHhuQWZ0ZXJTdGFydERhdGUiLCJpc1NhbWVPckFmdGVyIiwiZnJhbWUiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJhbGxUeG4iLCJjb25jYXQiLCJhY2NvdW50TnVtYmVyIiwiQWNjb3VudE51bWJlciIsImJhbGFuY2UiLCJZaXRyYUxlbG9DaGVraW0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7Ozs7QUEwQkEsTUFBTUEsZ0JBQWdCLEdBQUcsbUNBQXpCO0FBQ0EsTUFBTUMsU0FBUyxHQUFJLEdBQUVELGdCQUFpQixpQ0FBdEM7QUFDQSxNQUFNRSxZQUFZLEdBQUcsbUNBQXJCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsdURBQTdCO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLDZCQUFqQjtBQUNBLE1BQU1DLGlCQUFpQixHQUFHLG1DQUExQjtBQUNBLE1BQU1DLHdCQUF3QixHQUFJLEdBQUVKLFlBQWEscUNBQWpEO0FBQ0EsTUFBTUsseUJBQXlCLEdBQUcsNkJBQWxDO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsV0FBcEM7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRywrRUFBNUI7QUFDQSxNQUFNQyxXQUFXLEdBQUcsWUFBcEI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxXQUE3QjtBQUVBLE1BQU1DLGdCQUFnQixHQUFHLGtCQUF6QjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLHVCQUF6QjtBQUNBLE1B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LGNBQWMsQ0FBQyxLQUFLNkYsT0FBTCxDQUFhekYsU0FBZCxDQUFsQztBQUNBLFVBQU1zRyxvQkFBb0IsR0FBR0YsTUFBTSxDQUFDRixNQUFQLENBQWUzQyxHQUFELElBQVMscUJBQU9BLEdBQUcsQ0FBQ3JCLElBQVgsRUFBaUJxRSxhQUFqQixDQUErQkYsV0FBL0IsQ0FBdkIsQ0FBN0I7QUFFQSxVQUFNLEtBQUtoSCxJQUFMLENBQVVpRixLQUFWLENBQWlCLFlBQVd2Ryx5QkFBMEIsSUFBdEQsRUFBNER3RyxFQUFELElBQVNBLEVBQUQsQ0FBb0JDLEtBQXBCLEVBQW5FLENBQU47QUFDQSxVQUFNZ0MsS0FBSyxHQUFHLE1BQU0sZ0RBQXFCLEtBQUtuSCxJQUExQixFQUFpQ29ILENBQUQsSUFBT0EsQ0FBQyxDQUFDQyxHQUFGLEdBQVFDLFFBQVIsQ0FBaUIzSSwyQkFBakIsQ0FBdkMsQ0FBcEI7QUFDQSxVQUFNLGlEQUFzQndJLEtBQXRCLEVBQTZCN0gsc0JBQTdCLENBQU47QUFDQSxVQUFNb0UsVUFBVSxHQUFHLE1BQU1ELDBCQUEwQixDQUFDMEQsS0FBRCxDQUFuRDtBQUVBLFVBQU1JLE1BQU0sR0FBR04sb0JBQW9CLENBQUNPLE1BQXJCLENBQTRCOUQsVUFBNUIsQ0FBZjtBQUVBLFdBQU87QUFDTCtELE1BQUFBLGFBQWEsRUFBRXBCLFFBQVEsQ0FBQ00sSUFBVCxDQUFjL0IsTUFBZCxDQUFxQjhDLGFBRC9CO0FBRUw1RixNQUFBQSxJQUFJLEVBQUV5RixNQUZEO0FBR0xJLE1BQUFBLE9BQU8sRUFBRSxDQUFDdEIsUUFBUSxDQUFDTSxJQUFULENBQWMvQixNQUFkLENBQXFCZ0Q7QUFIMUIsS0FBUDtBQUtEOztBQTdFaUQ7O2VBZ0ZyQ3BELGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBGcmFtZSwgUGFnZSwgUmVxdWVzdCB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBTSEVLRUxfQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgcGFnZUV2YWxBbGwsIHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCwgd2FpdFVudGlsSWZyYW1lRm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IHdhaXRGb3JVcmwgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uc0FjY291bnQsIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY3JhcGVyQ3JlZGVudGlhbHMsIFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBSZWNUeXBlU3BlY2lmaWVkOiBib29sZWFuO1xuICBNQzAyUGV1bGFUYWFFWjogc3RyaW5nO1xuICBNQzAyU2NodW1FWjogbnVtYmVyO1xuICBNQzAyQXNtYWh0YU1la29yaXRFWjogc3RyaW5nO1xuICBNQzAyVG51YVRldXJFWjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdCB7XG4gIGhlYWRlcjoge1xuICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgbWVzc2FnZXM6IHsgdGV4dDogc3RyaW5nIH1bXTtcbiAgfTtcbiAgYm9keToge1xuICAgIGZpZWxkczoge1xuICAgICAgQWNjb3VudE51bWJlcjogc3RyaW5nO1xuICAgICAgWWl0cmFMZWxvQ2hla2ltOiBzdHJpbmc7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgcm93czogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9XRUJTSVRFX1VSTCA9ICdodHRwczovL3d3dy5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUJTSVRFX1VSTH0vbG9naW4vaW5kZXguaHRtbCMvYXV0aC1wYWdlLWhlYDtcbmNvbnN0IEJBU0VfQVBQX1VSTCA9ICdodHRwczovL210by5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgQUZURVJfTE9HSU5fQkFTRV9VUkwgPSAvaHR0cHM6XFwvXFwvbXRvXFwubWl6cmFoaS10ZWZhaG90XFwuY29cXC5pbFxcL09ubGluZUFwcFxcLy4qLztcbmNvbnN0IE9TSF9QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtTWFpbic7XG5jb25zdCBUUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9yb290LW1haW4tb3NoLXA0MjhOZXcnO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfVVJMID0gYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmVQaWxvdC9hcGkvU2t5T1NIL2dldDQyOEluZGV4YDtcbmNvbnN0IFBFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0UgPSAnL29zaC9sZWdhY3kvbGVnYWN5LU9zaC1wNDIwJztcbmNvbnN0IFBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSA9ICdwNDIwLmFzcHgnO1xuY29uc3QgQ0hBTkdFX1BBU1NXT1JEX1VSTCA9IC9odHRwczpcXC9cXC93d3dcXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvbG9naW5cXC9cXHcrXFwvaW5kZXhcXC5odG1sI1xcL2NoYW5nZS1wYXNzLztcbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuY29uc3QgTUFYX1JPV1NfUEVSX1JFUVVFU1QgPSAxMDAwMDAwMDAwMDtcblxuY29uc3QgdXNlcm5hbWVTZWxlY3RvciA9ICcjZW1haWxEZXNrdG9wSGViJztcbmNvbnN0IHBhc3N3b3JkU2VsZWN0b3IgPSAnI3Bhc3N3b3JkSUREZXNrdG9wSEVCJztcbmNvbnN0IHN1Ym1pdEJ1dHRvblNlbGVjdG9yID0gJy5mb3JtLWRlc2t0b3AgYnV0dG9uJztcbmNvbnN0IGludmFsaWRQYXNzd29yZFNlbGVjdG9yID0gJ2FbaHJlZio9XCJodHRwczovL3NjLm1penJhaGktdGVmYWhvdC5jby5pbC9TQ1NlcnZpY2VzL1NDL1AwMTAuYXNweFwiXSc7XG5jb25zdCBhZnRlckxvZ2luU2VsZWN0b3IgPSAnI2Ryb3Bkb3duQmFzaWMnO1xuY29uc3QgbG9naW5TcGlubmVyU2VsZWN0b3IgPSAnZGl2Lm5neC1vdmVybGF5LmxvYWRpbmctZm9yZWdyb3VuZCc7XG5jb25zdCBhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IgPSAnI0FjY291bnRQaWNrZXIgLml0ZW0nO1xuY29uc3QgcGVuZGluZ1RyeElkZW50aWZpZXJJZCA9ICcjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMl9wYW5lbDEnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZSA9ICfXoteV15HXqCDXldep15EnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWUgPSAnQ2hlY2tpbmcgQWNjb3VudCc7XG5cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6IHVzZXJuYW1lU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6IHBhc3N3b3JkU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICByZXR1cm4ge1xuICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFtBRlRFUl9MT0dJTl9CQVNFX1VSTCwgYXN5bmMgKCkgPT4gISEoYXdhaXQgcGFnZS4keChgLy9hLy9zcGFuW2NvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lfVwiKSBvciBjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWV9XCIpXWApKV0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbYXN5bmMgKCkgPT4gISEoYXdhaXQgcGFnZS4kKGludmFsaWRQYXNzd29yZFNlbGVjdG9yKSldLFxuICAgIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbQ0hBTkdFX1BBU1NXT1JEX1VSTF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnNTdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICByZXR1cm4gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGF0YUZyb21SZXF1ZXN0KHJlcXVlc3Q6IFJlcXVlc3QsIG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdC5wb3N0RGF0YSgpIHx8ICd7fScpO1xuXG4gIGRhdGEuaW5Gcm9tRGF0ZSA9IGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGUpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEuaW5Ub0RhdGUgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLnRhYmxlLm1heFJvdyA9IE1BWF9ST1dTX1BFUl9SRVFVRVNUO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdDogUmVxdWVzdCkge1xuICByZXR1cm4ge1xuICAgIG1penJhaGl4c3JmdG9rZW46IHJlcXVlc3QuaGVhZGVycygpLm1penJhaGl4c3JmdG9rZW4sXG4gICAgJ0NvbnRlbnQtVHlwZSc6IHJlcXVlc3QuaGVhZGVycygpWydjb250ZW50LXR5cGUnXSxcbiAgfTtcbn1cblxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCgocm93KSA9PiB7XG4gICAgY29uc3QgdHhuRGF0ZSA9IG1vbWVudChyb3cuTUMwMlBldWxhVGFhRVosIG1vbWVudC5IVE1MNV9GTVQuREFURVRJTUVfTE9DQUxfU0VDT05EUylcbiAgICAgIC50b0lTT1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogcm93Lk1DMDJBc21haHRhTWVrb3JpdEVaID8gcGFyc2VJbnQocm93Lk1DMDJBc21haHRhTWVrb3JpdEVaLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogdHhuRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiByb3cuTUMwMlNjaHVtRVosXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiByb3cuTUMwMlNjaHVtRVosXG4gICAgICBkZXNjcmlwdGlvbjogcm93Lk1DMDJUbnVhVGV1ckVaLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFBlbmRpbmdUcmFuc2FjdGlvbnMocGFnZTogRnJhbWUpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IHBhZ2VFdmFsQWxsKHBhZ2UsICd0ci5yZ1JvdycsIFtdLCAodHJzKSA9PiB7XG4gICAgcmV0dXJuIHRycy5tYXAoKHRyKSA9PiBBcnJheS5mcm9tKHRyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyksICh0ZDogSFRNTFRhYmxlRGF0YUNlbGxFbGVtZW50KSA9PiB0ZC50ZXh0Q29udGVudCB8fCAnJykpO1xuICB9KTtcblxuICByZXR1cm4gcGVuZGluZ1R4bi5tYXAoKHR4bikgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQodHhuWzBdLCAnREQvTU0vWVknKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IGFtb3VudCA9IHBhcnNlSW50KHR4blszXSwgMTApO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIGRhdGUsXG4gICAgICBwcm9jZXNzZWREYXRlOiBkYXRlLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG5bMV0sXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYWZ0ZXJMb2dpblNlbGVjdG9yKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpLFxuICAgIHdhaXRGb3JVcmwocGFnZSwgQ0hBTkdFX1BBU1NXT1JEX1VSTCksXG4gIF0pO1xufVxuXG5jbGFzcyBNaXpyYWhpU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcixcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHRoaXMucGFnZSwgbG9naW5TcGlubmVyU2VsZWN0b3IpLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoJyNkcm9wZG93bkJhc2ljLCAuaXRlbScsIChlbCkgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IG51bU9mQWNjb3VudHMgPSAoYXdhaXQgdGhpcy5wYWdlLiQkKGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvcikpLmxlbmd0aDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1PZkFjY291bnRzOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKCcjZHJvcGRvd25CYXNpYywgLml0ZW0nLCAoZWwpID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYCR7YWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yfTpudGgtY2hpbGQoJHtpICsgMX0pYCwgKGVsKSA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICByZXN1bHRzLnB1c2goKGF3YWl0IHRoaXMuZmV0Y2hBY2NvdW50KCkpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgYWNjb3VudHM6IHJlc3VsdHMsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQWNjb3VudCgpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWAsIChlbCkgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gLCAoZWwpID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgdGhpcy5wYWdlLndhaXRGb3JSZXF1ZXN0KFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTCk7XG4gICAgY29uc3QgZGF0YSA9IGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0LCB0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICBjb25zdCBoZWFkZXJzID0gY3JlYXRlSGVhZGVyc0Zyb21SZXF1ZXN0KHJlcXVlc3QpO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQ+KHRoaXMucGFnZSxcbiAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTCwgZGF0YSwgaGVhZGVycyk7XG5cbiAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmhlYWRlci5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBmZXRjaGluZyB0cmFuc2FjdGlvbi4gUmVzcG9uc2UgbWVzc2FnZTogJHtyZXNwb25zZSA/IHJlc3BvbnNlLmhlYWRlci5tZXNzYWdlc1swXS50ZXh0IDogJyd9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZXZhbnRSb3dzID0gcmVzcG9uc2UuYm9keS50YWJsZS5yb3dzLmZpbHRlcigocm93KSA9PiByb3cuUmVjVHlwZVNwZWNpZmllZCk7XG4gICAgY29uc3Qgb3NoVHhuID0gY29udmVydFRyYW5zYWN0aW9ucyhyZWxldmFudFJvd3MpO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgYSBidWcgd2hpY2ggdGhlIGJhbmsncyBBUEkgcmV0dXJucyB0cmFuc2FjdGlvbnMgYmVmb3JlIHRoZSByZXF1ZXN0ZWQgc3RhcnQgZGF0ZVxuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gZ2V0U3RhcnRNb21lbnQodGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSk7XG4gICAgY29uc3Qgb3NoVHhuQWZ0ZXJTdGFydERhdGUgPSBvc2hUeG4uZmlsdGVyKCh0eG4pID0+IG1vbWVudCh0eG4uZGF0ZSkuaXNTYW1lT3JBZnRlcihzdGFydE1vbWVudCkpO1xuXG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFfVwiXWAsIChlbCkgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHdhaXRVbnRpbElmcmFtZUZvdW5kKHRoaXMucGFnZSwgKGYpID0+IGYudXJsKCkuaW5jbHVkZXMoUEVORElOR19UUkFOU0FDVElPTlNfSUZSQU1FKSk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCBwZW5kaW5nVHJ4SWRlbnRpZmllcklkKTtcbiAgICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgZXh0cmFjdFBlbmRpbmdUcmFuc2FjdGlvbnMoZnJhbWUpO1xuXG4gICAgY29uc3QgYWxsVHhuID0gb3NoVHhuQWZ0ZXJTdGFydERhdGUuY29uY2F0KHBlbmRpbmdUeG4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXI6IHJlc3BvbnNlLmJvZHkuZmllbGRzLkFjY291bnROdW1iZXIsXG4gICAgICB0eG5zOiBhbGxUeG4sXG4gICAgICBiYWxhbmNlOiArcmVzcG9uc2UuYm9keS5maWVsZHMuWWl0cmFMZWxvQ2hla2ltLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWl6cmFoaVNjcmFwZXI7XG4iXX0=
210
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9taXpyYWhpLnRzIl0sIm5hbWVzIjpbIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIkNIQU5HRV9QQVNTV09SRF9VUkwiLCJEQVRFX0ZPUk1BVCIsIk1BWF9ST1dTX1BFUl9SRVFVRVNUIiwidXNlcm5hbWVTZWxlY3RvciIsInBhc3N3b3JkU2VsZWN0b3IiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImludmFsaWRQYXNzd29yZFNlbGVjdG9yIiwiYWZ0ZXJMb2dpblNlbGVjdG9yIiwibG9naW5TcGlubmVyU2VsZWN0b3IiLCJhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IiLCJwZW5kaW5nVHJ4SWRlbnRpZmllcklkIiwiY2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZSIsImNoZWNraW5nQWNjb3VudFRhYkVuZ2xpc2hOYW1lIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJwYWdlIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIiR4IiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtb21lbnQiLCJtYXgiLCJjcmVhdGVEYXRhRnJvbVJlcXVlc3QiLCJyZXF1ZXN0IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInBvc3REYXRhIiwiaW5Gcm9tRGF0ZSIsImZvcm1hdCIsImluVG9EYXRlIiwidGFibGUiLCJtYXhSb3ciLCJjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QiLCJtaXpyYWhpeHNyZnRva2VuIiwiaGVhZGVycyIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibWFwIiwicm93IiwidHhuRGF0ZSIsIk1DMDJQZXVsYVRhYUVaIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwiTUMwMkFzbWFodGFNZWtvcml0RVoiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsImRhdGUiLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJNQzAyU2NodW1FWiIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJNQzAyVG51YVRldXJFWiIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJ0cnMiLCJ0ciIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwidHhuIiwiYW1vdW50IiwiUGVuZGluZyIsInBvc3RMb2dpbiIsIlByb21pc2UiLCJyYWNlIiwiTWl6cmFoaVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJjaGVja1JlYWRpbmVzcyIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCIkZXZhbCIsImVsIiwiY2xpY2siLCJudW1PZkFjY291bnRzIiwiJCQiLCJsZW5ndGgiLCJyZXN1bHRzIiwiaSIsInB1c2giLCJmZXRjaEFjY291bnQiLCJzdWNjZXNzIiwiYWNjb3VudHMiLCJlIiwiZXJyb3JUeXBlIiwiU2NyYXBlckVycm9yVHlwZXMiLCJHZW5lcmljIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsInJlc3BvbnNlIiwiYW55IiwidXJsIiwid2FpdEZvclJlcXVlc3QiLCJvcHRpb25zIiwiaGVhZGVyIiwiRXJyb3IiLCJtZXNzYWdlcyIsInRleHQiLCJyZWxldmFudFJvd3MiLCJib2R5Iiwicm93cyIsImZpbHRlciIsIlJlY1R5cGVTcGVjaWZpZWQiLCJvc2hUeG4iLCJzdGFydE1vbWVudCIsIm9zaFR4bkFmdGVyU3RhcnREYXRlIiwiaXNTYW1lT3JBZnRlciIsImZyYW1lIiwiZiIsImluY2x1ZGVzIiwiYWxsVHhuIiwiY29uY2F0IiwiYWNjb3VudE51bWJlciIsIkFjY291bnROdW1iZXIiLCJiYWxhbmNlIiwiWWl0cmFMZWxvQ2hla2ltIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOzs7O0FBMEJBLE1BQU1BLGdCQUFnQixHQUFHLG1DQUF6QjtBQUNBLE1BQU1DLFNBQVMsR0FBSSxHQUFFRCxnQkFBaUIsaUNBQXRDO0FBQ0EsTUFBTUUsWUFBWSxHQUFHLG1DQUFyQjtBQUNBLE1BQU1DLG9CQUFvQixHQUFHLHVEQUE3QjtBQUNBLE1BQU1DLFFBQVEsR0FBRyw2QkFBakI7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxtQ0FBMUI7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxDQUMvQixHQUFFSixZQUFhLHFDQURnQixFQUUvQixHQUFFQSxZQUFhLGdDQUZnQixDQUFsQztBQUlBLE1BQU1LLHlCQUF5QixHQUFHLDZCQUFsQztBQUNBLE1BQU1DLDJCQUEyQixHQUFHLFdBQXBDO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsK0VBQTVCO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFlBQXBCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsV0FBN0I7QUFFQSxNQUFNQyxnQkFBZ0IsR0FBRyxr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LGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBGcmFtZSwgUGFnZSwgUmVxdWVzdCB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBTSEVLRUxfQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgcGFnZUV2YWxBbGwsIHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCwgd2FpdFVudGlsSWZyYW1lRm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IHdhaXRGb3JVcmwgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uc0FjY291bnQsIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY3JhcGVyQ3JlZGVudGlhbHMsIFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBSZWNUeXBlU3BlY2lmaWVkOiBib29sZWFuO1xuICBNQzAyUGV1bGFUYWFFWjogc3RyaW5nO1xuICBNQzAyU2NodW1FWjogbnVtYmVyO1xuICBNQzAyQXNtYWh0YU1la29yaXRFWjogc3RyaW5nO1xuICBNQzAyVG51YVRldXJFWjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdCB7XG4gIGhlYWRlcjoge1xuICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgbWVzc2FnZXM6IHsgdGV4dDogc3RyaW5nIH1bXTtcbiAgfTtcbiAgYm9keToge1xuICAgIGZpZWxkczoge1xuICAgICAgQWNjb3VudE51bWJlcjogc3RyaW5nO1xuICAgICAgWWl0cmFMZWxvQ2hla2ltOiBzdHJpbmc7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgcm93czogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9XRUJTSVRFX1VSTCA9ICdodHRwczovL3d3dy5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUJTSVRFX1VSTH0vbG9naW4vaW5kZXguaHRtbCMvYXV0aC1wYWdlLWhlYDtcbmNvbnN0IEJBU0VfQVBQX1VSTCA9ICdodHRwczovL210by5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgQUZURVJfTE9HSU5fQkFTRV9VUkwgPSAvaHR0cHM6XFwvXFwvbXRvXFwubWl6cmFoaS10ZWZhaG90XFwuY29cXC5pbFxcL09ubGluZUFwcFxcLy4qLztcbmNvbnN0IE9TSF9QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtTWFpbic7XG5jb25zdCBUUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9yb290LW1haW4tb3NoLXA0MjhOZXcnO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfVVJMUyA9IFtcbiAgYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmVQaWxvdC9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbiAgYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmUvYXBpL1NreU9TSC9nZXQ0MjhJbmRleGAsXG5dO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9sZWdhY3ktT3NoLXA0MjAnO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfSUZSQU1FID0gJ3A0MjAuYXNweCc7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfVVJMID0gL2h0dHBzOlxcL1xcL3d3d1xcLm1penJhaGktdGVmYWhvdFxcLmNvXFwuaWxcXC9sb2dpblxcL1xcdytcXC9pbmRleFxcLmh0bWwjXFwvY2hhbmdlLXBhc3MvO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5jb25zdCBNQVhfUk9XU19QRVJfUkVRVUVTVCA9IDEwMDAwMDAwMDAwO1xuXG5jb25zdCB1c2VybmFtZVNlbGVjdG9yID0gJyNlbWFpbERlc2t0b3BIZWInO1xuY29uc3QgcGFzc3dvcmRTZWxlY3RvciA9ICcjcGFzc3dvcmRJRERlc2t0b3BIRUInO1xuY29uc3Qgc3VibWl0QnV0dG9uU2VsZWN0b3IgPSAnLmZvcm0tZGVza3RvcCBidXR0b24nO1xuY29uc3QgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IgPSAnYVtocmVmKj1cImh0dHBzOi8vc2MubWl6cmFoaS10ZWZhaG90LmNvLmlsL1NDU2VydmljZXMvU0MvUDAxMC5hc3B4XCJdJztcbmNvbnN0IGFmdGVyTG9naW5TZWxlY3RvciA9ICcjZHJvcGRvd25CYXNpYyc7XG5jb25zdCBsb2dpblNwaW5uZXJTZWxlY3RvciA9ICdkaXYubmd4LW92ZXJsYXkubG9hZGluZy1mb3JlZ3JvdW5kJztcbmNvbnN0IGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvciA9ICcjQWNjb3VudFBpY2tlciAuaXRlbSc7XG5jb25zdCBwZW5kaW5nVHJ4SWRlbnRpZmllcklkID0gJyNjdGwwMF9Db250ZW50UGxhY2VIb2xkZXIyX3BhbmVsMSc7XG5jb25zdCBjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lID0gJ9ei15XXkdeoINeV16nXkSc7XG5jb25zdCBjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSA9ICdDaGVja2luZyBBY2NvdW50JztcblxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogdXNlcm5hbWVTZWxlY3RvciwgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogcGFzc3dvcmRTZWxlY3RvciwgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIHJldHVybiB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogW0FGVEVSX0xPR0lOX0JBU0VfVVJMLCBhc3luYyAoKSA9PiAhIShhd2FpdCBwYWdlLiR4KGAvL2EvL3NwYW5bY29udGFpbnMoLiwgXCIke2NoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWV9XCIpIG9yIGNvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZX1cIildYCkpXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAoKSA9PiAhIShhd2FpdCBwYWdlLiQoaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpKV0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtDSEFOR0VfUEFTU1dPUkRfVVJMXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9uc1N0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIHJldHVybiBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdDogUmVxdWVzdCwgb3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0LnBvc3REYXRhKCkgfHwgJ3t9Jyk7XG5cbiAgZGF0YS5pbkZyb21EYXRlID0gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZSkuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgZGF0YS5pblRvRGF0ZSA9IG1vbWVudCgpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEudGFibGUubWF4Um93ID0gTUFYX1JPV1NfUEVSX1JFUVVFU1Q7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdChyZXF1ZXN0OiBSZXF1ZXN0KSB7XG4gIHJldHVybiB7XG4gICAgbWl6cmFoaXhzcmZ0b2tlbjogcmVxdWVzdC5oZWFkZXJzKCkubWl6cmFoaXhzcmZ0b2tlbixcbiAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5oZWFkZXJzKClbJ2NvbnRlbnQtdHlwZSddLFxuICB9O1xufVxuXG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgcmV0dXJuIHR4bnMubWFwKChyb3cpID0+IHtcbiAgICBjb25zdCB0eG5EYXRlID0gbW9tZW50KHJvdy5NQzAyUGV1bGFUYWFFWiwgbW9tZW50LkhUTUw1X0ZNVC5EQVRFVElNRV9MT0NBTF9TRUNPTkRTKVxuICAgICAgLnRvSVNPU3RyaW5nKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiByb3cuTUMwMkFzbWFodGFNZWtvcml0RVogPyBwYXJzZUludChyb3cuTUMwMkFzbWFodGFNZWtvcml0RVosIDEwKSA6IHVuZGVmaW5lZCxcbiAgICAgIGRhdGU6IHR4bkRhdGUsXG4gICAgICBwcm9jZXNzZWREYXRlOiB0eG5EYXRlLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgIGRlc2NyaXB0aW9uOiByb3cuTUMwMlRudWFUZXVyRVosXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgIH07XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhwYWdlOiBGcmFtZSk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJ3RyLnJnUm93JywgW10sICh0cnMpID0+IHtcbiAgICByZXR1cm4gdHJzLm1hcCgodHIpID0+IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgndGQnKSwgKHRkOiBIVE1MVGFibGVEYXRhQ2VsbEVsZW1lbnQpID0+IHRkLnRleHRDb250ZW50IHx8ICcnKSk7XG4gIH0pO1xuXG4gIHJldHVybiBwZW5kaW5nVHhuLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0eG5bMF0sICdERC9NTS9ZWScpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgYW1vdW50ID0gcGFyc2VJbnQodHhuWzNdLCAxMCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgZGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGRhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogYW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogYW1vdW50LFxuICAgICAgZGVzY3JpcHRpb246IHR4blsxXSxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLFxuICAgIH07XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwb3N0TG9naW4ocGFnZTogUGFnZSkge1xuICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBhZnRlckxvZ2luU2VsZWN0b3IpLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciksXG4gICAgd2FpdEZvclVybChwYWdlLCBDSEFOR0VfUEFTU1dPUkRfVVJMKSxcbiAgXSk7XG59XG5cbmNsYXNzIE1penJhaGlTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIodGhpcy5wYWdlLCBsb2dpblNwaW5uZXJTZWxlY3RvciksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiBwb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgKGVsKSA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuXG4gICAgY29uc3QgbnVtT2ZBY2NvdW50cyA9IChhd2FpdCB0aGlzLnBhZ2UuJCQoYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yKSkubGVuZ3RoO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bU9mQWNjb3VudHM7IGkgKz0gMSkge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoJyNkcm9wZG93bkJhc2ljLCAuaXRlbScsIChlbCkgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgJHthY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3J9Om50aC1jaGlsZCgke2kgKyAxfSlgLCAoZWwpID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIHJlc3VsdHMucHVzaCgoYXdhaXQgdGhpcy5mZXRjaEFjY291bnQoKSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBhY2NvdW50czogcmVzdWx0cyxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBY2NvdW50KCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7T1NIX1BBR0V9XCJdYCwgKGVsKSA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsIGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gKTtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1RSQU5TQUNUSU9OU19QQUdFfVwiXWAsIChlbCkgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5hbnkoVFJBTlNBQ1RJT05TX1JFUVVFU1RfVVJMUy5tYXAoYXN5bmMgKHVybCkgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yUmVxdWVzdCh1cmwpO1xuICAgICAgY29uc3QgZGF0YSA9IGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0LCB0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdCk7XG5cbiAgICAgIHJldHVybiBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQ+KHRoaXMucGFnZSwgdXJsLCBkYXRhLCBoZWFkZXJzKTtcbiAgICB9KSk7XG5cblxuICAgIGlmICghcmVzcG9uc2UgfHwgcmVzcG9uc2UuaGVhZGVyLnN1Y2Nlc3MgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uLiBSZXNwb25zZSBtZXNzYWdlOiAke3Jlc3BvbnNlID8gcmVzcG9uc2UuaGVhZGVyLm1lc3NhZ2VzWzBdLnRleHQgOiAnJ31gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxldmFudFJvd3MgPSByZXNwb25zZS5ib2R5LnRhYmxlLnJvd3MuZmlsdGVyKChyb3cpID0+IHJvdy5SZWNUeXBlU3BlY2lmaWVkKTtcbiAgICBjb25zdCBvc2hUeG4gPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHJlbGV2YW50Um93cyk7XG5cbiAgICAvLyB3b3JrYXJvdW5kIGZvciBhIGJ1ZyB3aGljaCB0aGUgYmFuaydzIEFQSSByZXR1cm5zIHRyYW5zYWN0aW9ucyBiZWZvcmUgdGhlIHJlcXVlc3RlZCBzdGFydCBkYXRlXG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBnZXRTdGFydE1vbWVudCh0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICBjb25zdCBvc2hUeG5BZnRlclN0YXJ0RGF0ZSA9IG9zaFR4bi5maWx0ZXIoKHR4bikgPT4gbW9tZW50KHR4bi5kYXRlKS5pc1NhbWVPckFmdGVyKHN0YXJ0TW9tZW50KSk7XG5cbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1BFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgKGVsKSA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgd2FpdFVudGlsSWZyYW1lRm91bmQodGhpcy5wYWdlLCAoZikgPT4gZi51cmwoKS5pbmNsdWRlcyhQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUpKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsIHBlbmRpbmdUcnhJZGVudGlmaWVySWQpO1xuICAgIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhmcmFtZSk7XG5cbiAgICBjb25zdCBhbGxUeG4gPSBvc2hUeG5BZnRlclN0YXJ0RGF0ZS5jb25jYXQocGVuZGluZ1R4bik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcjogcmVzcG9uc2UuYm9keS5maWVsZHMuQWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGFsbFR4bixcbiAgICAgIGJhbGFuY2U6ICtyZXNwb25zZS5ib2R5LmZpZWxkcy5ZaXRyYUxlbG9DaGVraW0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNaXpyYWhpU2NyYXBlcjtcbiJdfQ==
@@ -8,7 +8,7 @@ declare class OtsarHahayalScraper extends BaseScraperWithBrowser {
8
8
  selector: string;
9
9
  value: string;
10
10
  }[];
11
- submitButtonSelector: string;
11
+ submitButtonSelector: () => Promise<void>;
12
12
  postAction: () => Promise<void>;
13
13
  possibleResults: PossibleLoginResults;
14
14
  };
@@ -199,7 +199,10 @@ class OtsarHahayalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser
199
199
  return {
200
200
  loginUrl: `${BASE_URL}/MatafLoginService/MatafLoginServlet?bankId=OTSARPRTAL&site=Private&KODSAFA=HE`,
201
201
  fields: createLoginFields(credentials),
202
- submitButtonSelector: '#continueBtn',
202
+ submitButtonSelector: async () => {
203
+ await this.page.waitForTimeout(1000);
204
+ await (0, _elementsInteractions.clickButton)(this.page, '#continueBtn');
205
+ },
203
206
  postAction: async () => waitForPostLogin(this.page),
204
207
  possibleResults: getPossibleLoginResults(this.page)
205
208
  };
@@ -224,4 +227,4 @@ class OtsarHahayalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser
224
227
 
225
228
  var _default = OtsarHahayalScraper;
226
229
  exports.default = _default;
227
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vdHNhci1oYWhheWFsLnRzIl0sIm5hbWVzIjpbIkJBU0VfVVJMIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJwYWdlIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJnZXRUcmFuc2FjdGlvbnNVcmwiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJnZXRBbW91bnREYXRhIiwiYW1vdW50U3RyIiwiaGFzQ3VycmVuY3kiLCJhbW91bnRTdHJDbG4iLCJyZXBsYWNlIiwiY3VycmVuY3kiLCJhbW91bnQiLCJwYXJzZUZsb2F0IiwiU0hFS0VMX0NVUlJFTkNZIiwiaW5jbHVkZXMiLCJTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MIiwicGFydHMiLCJzcGxpdCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibWFwIiwidHhuIiwiZGF0ZUZvcm1hdCIsImRhdGUiLCJsZW5ndGgiLCJFcnJvciIsInR4bkRhdGUiLCJ0b0lTT1N0cmluZyIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJyZXN1bHQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImRlc2NyaXB0aW9uIiwibWVtbyIsInBhcnNlVHJhbnNhY3Rpb25QYWdlIiwidGRzVmFsdWVzIiwidHJzIiwiZWwiLCJxdWVyeVNlbGVjdG9yIiwiaW5uZXJUZXh0IiwiYmFsYW5jZSIsImdldEFjY291bnRTdW1tYXJ5IiwiYmFsYW5jZUVsbSIsIiQiLCJiYWxhbmNlSW5uZXJUZXh0RWxtIiwiZ2V0UHJvcGVydHkiLCJiYWxhbmNlVGV4dCIsImpzb25WYWx1ZSIsImJhbGFuY2VWYWx1ZSIsImNyZWRpdExpbWl0IiwiY3JlZGl0VXRpbGl6YXRpb24iLCJiYWxhbmNlQ3VycmVuY3kiLCJmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQiLCJzdGFydERhdGUiLCJzdW1tYXJ5IiwiYnJhbmNoTnVtIiwiJGV2YWwiLCJzcGFuIiwiYWNjb3VudE5tYnIiLCJhY2NvdW50TnVtYmVyIiwiZm9ybWF0IiwiaGFzTmV4dFBhZ2UiLCJub1RyYW5zYWN0aW9uRWxtIiwicGFnZVR4bnMiLCJjb25jYXQiLCJidXR0b24iLCJzbGljZSIsImZldGNoVHJhbnNhY3Rpb25zIiwid2FpdEZvclBvc3RMb2dpbiIsIlByb21pc2UiLCJyYWNlIiwiT3RzYXJIYWhheWFsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwiYWRkIiwib3B0aW9ucyIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibW9tZW50IiwibWF4IiwidXJsIiwibmF2aWdhdGVUbyIsImFjY291bnRzIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBT0E7O0FBQ0E7Ozs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsZ0NBQWpCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsWUFBekI7QUFDQSxNQUFNQyxXQUFXLEdBQUcsVUFBcEI7O0FBYUEsU0FBU0MsdUJBQVQsQ0FBaUNDLElBQWpDLEVBQTZDO0FBQzNDLFFBQU1DLElBQTBCLEdBQUcsRUFBbkM7QUFDQUEsRUFBQUEsSUFBSSxDQUFDQyxxQ0FBYUMsT0FBZCxDQUFKLEdBQTZCLENBQUUsR0FBRVAsUUFBUywrQkFBYixDQUE3QjtBQUNBSyxFQUFBQSxJQUFJLENBQUNDLHFDQUFhRSxlQUFkLENBQUosR0FBcUMsQ0FBQyxNQUFNLGdEQUFxQkosSUFBckIsRUFBMkIsZ0JBQTNCLENBQVAsQ0FBckMsQ0FIMkMsQ0FJM0M7O0FBQ0E7O0FBQ0EsU0FBT0MsSUFBUDtBQUNEOztBQUVELFNBQVNJLGtCQUFULEdBQThCO0FBQzVCLFNBQVEsR0FBRVQsUUFBUyxrRkFBbkI7QUFDRDs7QUFFRCxTQUFTVSxpQkFBVCxDQUEyQkMsV0FBM0IsRUFBNEQ7QUFDMUQsU0FBTyxDQUNMO0FBQUVDLElBQUFBLFFBQVEsRUFBRSxXQUFaO0FBQXlCQyxJQUFBQSxLQUFLLEVBQUVGLFdBQVcsQ0FBQ0c7QUFBNUMsR0FESyxFQUVMO0FBQUVGLElBQUFBLFFBQVEsRUFBRSxXQUFaO0FBQXlCQyxJQUFBQSxLQUFLLEVBQUVGLFdBQVcsQ0FBQ0k7QUFBNUMsR0FGSyxDQUFQO0FBSUQ7O0FBRUQsU0FBU0MsYUFBVCxDQUF1QkMsU0FBdkIsRUFBMENDLFdBQVcsR0FBRyxLQUF4RCxFQUErRDtBQUM3RCxRQUFNQyxZQUFZLEdBQUdGLFNBQVMsQ0FBQ0csT0FBVixDQUFrQixHQUFsQixFQUF1QixFQUF2QixDQUFyQjtBQUNBLE1BQUlDLFFBQXVCLEdBQUcsSUFBOUI7QUFDQSxNQUFJQyxNQUFxQixHQUFHLElBQTVCOztBQUNBLE1BQUksQ0FBQ0osV0FBTCxFQUFrQjtBQUNoQkksSUFBQUEsTUFBTSxHQUFHQyxVQUFVLENBQUNKLFlBQUQsQ0FBbkI7QUFDQUUsSUFBQUEsUUFBUSxHQUFHRywwQkFBWDtBQUNELEdBSEQsTUFHTyxJQUFJTCxZQUFZLENBQUNNLFFBQWIsQ0FBc0JDLGlDQUF0QixDQUFKLEVBQW1EO0FBQ3hESixJQUFBQSxNQUFNLEdBQUdDLFVBQVUsQ0FBQ0osWUFBWSxDQUFDQyxPQUFiLENBQXFCTSxpQ0FBckIsRUFBNkMsRUFBN0MsQ0FBRCxDQUFuQjtBQUNBTCxJQUFBQSxRQUFRLEdBQUdHLDBCQUFYO0FBQ0QsR0FITSxNQUdBO0FBQ0wsVUFBTUcsS0FBSyxHQUFHUixZQUFZLENBQUNTLEtBQWIsQ0FBbUIsR0FBbkIsQ0FBZDtBQUNBTixJQUFBQSxNQUFNLEdBQUdDLFVBQVUsQ0FBQ0ksS0FBSyxDQUFDLENBQUQsQ0FBTixDQUFuQjtBQUNBLE9BQUdOLFFBQUgsSUFBZU0sS0FBZjtBQUNEOztBQUVELFNBQU87QUFDTEwsSUFBQUEsTUFESztBQUVMRCxJQUFBQTtBQUZLLEdBQVA7QUFJRDs7QUFFRCxTQUFTUSxtQkFBVCxDQUE2QkMsSUFBN0IsRUFBd0U7QUFDdEUsU0FBT0EsSUFBSSxDQUFDQyxHQUFMLENBQVVDLEdBQUQsSUFBUztBQUN2QixVQUFNQyxVQUFVLEdBQ1pELEdBQUcsQ0FBQ0UsSUFBSixDQUFTQyxNQUFULEtBQW9CLENBQXBCLEdBQ0VqQyxXQURGLEdBRUU4QixHQUFHLENBQUNFLElBQUosQ0FBU0MsTUFBVCxLQUFvQixFQUFwQixHQUNFbEMsZ0JBREYsR0FFRSxJQUxSOztBQU1BLFFBQUksQ0FBQ2dDLFVBQUwsRUFBaUI7QUFDZixZQUFNLElBQUlHLEtBQUosQ0FBVSxxQkFBVixDQUFOO0FBQ0Q7O0FBQ0QsVUFBTUMsT0FBTyxHQUFHLHFCQUFPTCxHQUFHLENBQUNFLElBQVgsRUFBaUJELFVBQWpCLEVBQTZCSyxXQUE3QixFQUFoQjtBQUNBLFVBQU1DLE1BQU0sR0FBR3ZCLGFBQWEsQ0FBQ2dCLEdBQUcsQ0FBQ08sTUFBSixJQUFjLEVBQWYsQ0FBYixDQUFnQ2pCLE1BQS9DO0FBQ0EsVUFBTWtCLEtBQUssR0FBR3hCLGFBQWEsQ0FBQ2dCLEdBQUcsQ0FBQ1EsS0FBSixJQUFhLEVBQWQsQ0FBYixDQUErQmxCLE1BQTdDO0FBQ0EsVUFBTUEsTUFBTSxHQUFHLENBQUNtQixNQUFNLENBQUNDLEtBQVAsQ0FBYUgsTUFBYixJQUF1QixDQUF2QixHQUEyQkEsTUFBNUIsS0FBdUNFLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhRixLQUFiLElBQXNCLENBQXRCLEdBQTBCQSxLQUFqRSxDQUFmO0FBRUEsVUFBTUcsTUFBbUIsR0FBRztBQUMxQkMsTUFBQUEsSUFBSSxFQUFFQywrQkFBaUJDLE1BREc7QUFFMUJDLE1BQUFBLE1BQU0sRUFBRUMsa0NBQW9CQyxTQUZGO0FBRzFCQyxNQUFBQSxVQUFVLEVBQUVsQixHQUFHLENBQUNtQixTQUFKLEdBQWdCQyxRQUFRLENBQUNwQixHQUFHLENBQUNtQixTQUFMLEVBQWdCLEVBQWhCLENBQXhCLEdBQThDRSxTQUhoQztBQUkxQm5CLE1BQUFBLElBQUksRUFBRUcsT0FKb0I7QUFLMUJpQixNQUFBQSxhQUFhLEVBQUVqQixPQUxXO0FBTTFCa0IsTUFBQUEsY0FBYyxFQUFFakMsTUFOVTtBQU8xQmtDLE1BQUFBLGdCQUFnQixFQUFFaEMsMEJBUFE7QUFRMUJpQyxNQUFBQSxhQUFhLEVBQUVuQyxNQVJXO0FBUzFCb0MsTUFBQUEsV0FBVyxFQUFFMUIsR0FBRyxDQUFDMEIsV0FBSixJQUFtQixFQVROO0FBVTFCQyxNQUFBQSxJQUFJLEVBQUU7QUFWb0IsS0FBNUI7QUFhQSxXQUFPaEIsTUFBUDtBQUNELEdBN0JNLENBQVA7QUE4QkQ7O0FBRUQsZUFBZWlCLG9CQUFmLENBQW9DeEQsSUFBcEMsRUFBK0U7QUFDN0UsUUFBTXlELFNBQVMsR0FBRyxNQUFNLHVDQUFZekQsSUFBWixFQUFrQix3QkFBbEIsRUFBNEMsRUFBNUMsRUFBaUQwRCxHQUFELElBQVM7QUFDL0UsV0FBUUEsR0FBRCxDQUFNL0IsR0FBTixDQUFXZ0MsRUFBRCxLQUFTO0FBQ3hCN0IsTUFBQUEsSUFBSSxFQUFHNkIsRUFBRSxDQUFDQyxhQUFILENBQWlCLE9BQWpCLENBQUQsQ0FBMkNDLFNBRHpCO0FBRXhCO0FBQ0FQLE1BQUFBLFdBQVcsRUFBR0ssRUFBRSxDQUFDQyxhQUFILENBQWlCLFlBQWpCLENBQUQsQ0FBZ0RDLFNBSHJDO0FBSXhCZCxNQUFBQSxTQUFTLEVBQUdZLEVBQUUsQ0FBQ0MsYUFBSCxDQUFpQixVQUFqQixDQUFELENBQThDQyxTQUpqQztBQUt4QjFCLE1BQUFBLE1BQU0sRUFBR3dCLEVBQUUsQ0FBQ0MsYUFBSCxDQUFpQixTQUFqQixDQUFELENBQTZDQyxTQUw3QjtBQU14QnpCLE1BQUFBLEtBQUssRUFBR3VCLEVBQUUsQ0FBQ0MsYUFBSCxDQUFpQixRQUFqQixDQUFELENBQTRDQyxTQU4zQjtBQU94QkMsTUFBQUEsT0FBTyxFQUFHSCxFQUFFLENBQUNDLGFBQUgsQ0FBaUIsVUFBakIsQ0FBRCxDQUE4Q0M7QUFQL0IsS0FBVCxDQUFWLENBQVA7QUFTRCxHQVZ1QixDQUF4QjtBQVlBLFNBQU9KLFNBQVA7QUFDRDs7QUFFRCxlQUFlTSxpQkFBZixDQUFpQy9ELElBQWpDLEVBQTZDO0FBQzNDLFFBQU1nRSxVQUFVLEdBQUcsTUFBTWhFLElBQUksQ0FBQ2lFLENBQUwsQ0FBTyxrQkFBUCxDQUF6QjtBQUNBLFFBQU1DLG1CQUFtQixHQUFHLE1BQU1GLFVBQVUsQ0FBRUcsV0FBWixDQUF3QixXQUF4QixDQUFsQztBQUNBLFFBQU1DLFdBQVcsR0FBRyxNQUFNRixtQkFBbUIsQ0FBQ0csU0FBcEIsRUFBMUI7QUFDQSxRQUFNQyxZQUFZLEdBQUcxRCxhQUFhLENBQUN3RCxXQUFELEVBQXdCLElBQXhCLENBQWxDLENBSjJDLENBSzNDOztBQUNBLFNBQU87QUFDTE4sSUFBQUEsT0FBTyxFQUFFekIsTUFBTSxDQUFDQyxLQUFQLENBQWFnQyxZQUFZLENBQUNwRCxNQUExQixJQUFvQyxDQUFwQyxHQUF3Q29ELFlBQVksQ0FBQ3BELE1BRHpEO0FBRUxxRCxJQUFBQSxXQUFXLEVBQUUsR0FGUjtBQUdMQyxJQUFBQSxpQkFBaUIsRUFBRSxHQUhkO0FBSUxDLElBQUFBLGVBQWUsRUFBRUgsWUFBWSxDQUFDckQ7QUFKekIsR0FBUDtBQU1EOztBQUVELGVBQWV5RCwyQkFBZixDQUEyQzFFLElBQTNDLEVBQXVEMkUsU0FBdkQsRUFBMEU7QUFDeEUsUUFBTUMsT0FBTyxHQUFHLE1BQU1iLGlCQUFpQixDQUFDL0QsSUFBRCxDQUF2QztBQUNBLFFBQU0saURBQXNCQSxJQUF0QixFQUE0QixnQkFBNUIsQ0FBTixDQUZ3RSxDQUd4RTs7QUFDQSxRQUFNNkUsU0FBUyxHQUFHLE1BQU03RSxJQUFJLENBQUM4RSxLQUFMLENBQVcsYUFBWCxFQUEyQkMsSUFBRCxJQUFVO0FBQzFELFdBQVFBLElBQUQsQ0FBc0JsQixTQUE3QjtBQUNELEdBRnVCLENBQXhCO0FBSUEsUUFBTW1CLFdBQVcsR0FBRyxNQUFNaEYsSUFBSSxDQUFDOEUsS0FBTCxDQUFXLFVBQVgsRUFBd0JDLElBQUQsSUFBVTtBQUN6RCxXQUFRQSxJQUFELENBQXNCbEIsU0FBN0I7QUFDRCxHQUZ5QixDQUExQjtBQUdBLFFBQU1vQixhQUFhLEdBQUksTUFBS0osU0FBVSxJQUFHRyxXQUFZLEVBQXJELENBWHdFLENBWXhFOztBQUNBLFFBQU0sdUNBQVloRixJQUFaLEVBQWtCLGFBQWxCLENBQU47QUFDQSxRQUFNLHFDQUNKQSxJQURJLEVBRUosZ0JBRkksRUFHSjJFLFNBQVMsQ0FBQ08sTUFBVixDQUFpQixZQUFqQixDQUhJLENBQU47QUFNQSxRQUFNLHVDQUFZbEYsSUFBWixFQUFrQix3Q0FBbEIsQ0FBTjtBQUNBLFFBQU0sbUNBQWtCQSxJQUFsQixDQUFOO0FBQ0EsUUFBTSxpREFBc0JBLElBQXRCLEVBQTRCLGlDQUE1QixDQUFOO0FBQ0EsTUFBSW1GLFdBQVcsR0FBRyxJQUFsQjtBQUNBLE1BQUl6RCxJQUEwQixHQUFHLEVBQWpDO0FBRUEsUUFBTTBELGdCQUFnQixHQUFHLE1BQU1wRixJQUFJLENBQUNpRSxDQUFMLENBQU8sYUFBUCxDQUEvQjs7QUFDQSxNQUFJbUIsZ0JBQWdCLElBQUksSUFBeEIsRUFBOEI7QUFDNUI7QUFDQSxXQUFPRCxXQUFQLEVBQW9CO0FBQ2xCLFlBQU1FLFFBQVEsR0FBRyxNQUFNN0Isb0JBQW9CLENBQUN4RCxJQUFELENBQTNDO0FBQ0EwQixNQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQzRELE1BQUwsQ0FBWUQsUUFBWixDQUFQO0FBQ0EsWUFBTUUsTUFBTSxHQUFHLE1BQU12RixJQUFJLENBQUNpRSxDQUFMLENBQU8sUUFBUCxDQUFyQjtBQUNBa0IsTUFBQUEsV0FBVyxHQUFHLEtBQWQ7O0FBQ0EsVUFBSUksTUFBTSxJQUFJLElBQWQsRUFBb0I7QUFDbEJKLFFBQUFBLFdBQVcsR0FBRyxJQUFkO0FBQ0Q7O0FBQ0QsVUFBSUEsV0FBSixFQUFpQjtBQUNmLGNBQU0sdUNBQVluRixJQUFaLEVBQWtCLFFBQWxCLENBQU47QUFDQSxjQUFNLG1DQUFrQkEsSUFBbEIsQ0FBTjtBQUNBLGNBQU0saURBQXNCQSxJQUF0QixFQUE0QixvQkFBNUIsQ0FBTjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPO0FBQ0xpRixJQUFBQSxhQURLO0FBRUxMLElBQUFBLE9BRks7QUFHTGxELElBQUFBLElBQUksRUFBRUQsbUJBQW1CLENBQUNDLElBQUksQ0FBQzhELEtBQUwsQ0FBVyxDQUFYLENBQUQsQ0FIcEIsQ0FHcUM7O0FBSHJDLEdBQVA7QUFLRDs7QUFFRCxlQUFlQyxpQkFBZixDQUFpQ3pGLElBQWpDLEVBQTZDMkUsU0FBN0MsRUFBZ0U7QUFDOUQ7QUFDQSxTQUFPLENBQUMsTUFBTUQsMkJBQTJCLENBQUMxRSxJQUFELEVBQU8yRSxTQUFQLENBQWxDLENBQVA7QUFDRDs7QUFFRCxlQUFlZSxnQkFBZixDQUFnQzFGLElBQWhDLEVBQTRDO0FBQzFDO0FBQ0EsU0FBTzJGLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLENBQ2xCLGlEQUFzQjVGLElBQXRCLEVBQTRCLGdCQUE1QixFQUE4QyxJQUE5QyxDQURrQixFQUVsQixpREFBc0JBLElBQXRCLEVBQTRCLGdCQUE1QixDQUZrQixDQUFiLENBQVA7QUFJRDs7QUFFRCxNQUFNNkYsbUJBQU4sU0FBa0NDLDhDQUFsQyxDQUF5RDtBQUN2REMsRUFBQUEsZUFBZSxDQUFDeEYsV0FBRCxFQUFrQztBQUMvQyxXQUFPO0FBQ0x5RixNQUFBQSxRQUFRLEVBQUcsR0FBRXBHLFFBQVMsZ0ZBRGpCO0FBRUxxRyxNQUFBQSxNQUFNLEVBQUUzRixpQkFBaUIsQ0FBQ0MsV0FBRCxDQUZwQjtBQUdMMkYsTUFBQUEsb0JBQW9CLEVBQUUsY0FIakI7QUFJTEMsTUFBQUEsVUFBVSxFQUFFLFlBQVlULGdCQUFnQixDQUFDLEtBQUsxRixJQUFOLENBSm5DO0FBS0xvRyxNQUFBQSxlQUFlLEVBQUVyRyx1QkFBdUIsQ0FBQyxLQUFLQyxJQUFOO0FBTG5DLEtBQVA7QUFPRDs7QUFFRCxRQUFNcUcsU0FBTixHQUFrQjtBQUNoQixVQUFNQyxrQkFBa0IsR0FBRyx1QkFBU0MsUUFBVCxDQUFrQixDQUFsQixFQUFxQixPQUFyQixFQUE4QkMsR0FBOUIsQ0FBa0MsQ0FBbEMsRUFBcUMsS0FBckMsQ0FBM0I7QUFDQSxVQUFNN0IsU0FBUyxHQUFHLEtBQUs4QixPQUFMLENBQWE5QixTQUFiLElBQTBCMkIsa0JBQWtCLENBQUNJLE1BQW5CLEVBQTVDOztBQUNBLFVBQU1DLFdBQVcsR0FBR0MsZ0JBQU9DLEdBQVAsQ0FBV1Asa0JBQVgsRUFBK0IscUJBQU8zQixTQUFQLENBQS9CLENBQXBCOztBQUVBLFVBQU1tQyxHQUFHLEdBQUd6RyxrQkFBa0IsRUFBOUI7QUFDQSxVQUFNLEtBQUswRyxVQUFMLENBQWdCRCxHQUFoQixDQUFOO0FBRUEsVUFBTUUsUUFBUSxHQUFHLE1BQU12QixpQkFBaUIsQ0FBQyxLQUFLekYsSUFBTixFQUFZMkcsV0FBWixDQUF4QztBQUVBLFdBQU87QUFDTE0sTUFBQUEsT0FBTyxFQUFFLElBREo7QUFFTEQsTUFBQUE7QUFGSyxLQUFQO0FBSUQ7O0FBekJzRDs7ZUE0QjFDbkIsbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHtcbiAgZmlsbElucHV0LFxuICBjbGlja0J1dHRvbixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICBwYWdlRXZhbEFsbCxcbiAgZWxlbWVudFByZXNlbnRPblBhZ2UsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcyB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY3JhcGVyQ3JlZGVudGlhbHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5cbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vb25saW5lLmJhbmtvdHNhci5jby5pbCc7XG5jb25zdCBMT05HX0RBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVknO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgYmFsYW5jZT86IHN0cmluZztcbiAgZGViaXQ/OiBzdHJpbmc7XG4gIGNyZWRpdD86IHN0cmluZztcbiAgbWVtbz86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xuICByZWZlcmVuY2U/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkYXRlOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbYCR7QkFTRV9VUkx9L3dwcy9teXBvcnRhbC9GaWJpTWVudS9PbmxpbmVgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFsoKSA9PiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCAnI3ZhbGlkYXRpb25Nc2cnKV07XG4gIC8vIFRPRE86IHN1cHBvcnQgY2hhbmdlIHBhc3N3b3JkXG4gIC8qIHVybHNbTE9HSU5fUkVTVUxULkNIQU5HRV9QQVNTV09SRF0gPSBbYGBdOyAqL1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKCkge1xuICByZXR1cm4gYCR7QkFTRV9VUkx9L3dwcy9teXBvcnRhbC9GaWJpTWVudS9PbmxpbmUvT25BY2NvdW50TW5nbWVudC9PbkJhbGFuY2VUcmFucy9Qcml2YXRlQWNjb3VudEZsb3dgO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN1c2VybmFtZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0QW1vdW50RGF0YShhbW91bnRTdHI6IHN0cmluZywgaGFzQ3VycmVuY3kgPSBmYWxzZSkge1xuICBjb25zdCBhbW91bnRTdHJDbG4gPSBhbW91bnRTdHIucmVwbGFjZSgnLCcsICcnKTtcbiAgbGV0IGN1cnJlbmN5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbGV0IGFtb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGlmICghaGFzQ3VycmVuY3kpIHtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudFN0ckNsbik7XG4gICAgY3VycmVuY3kgPSBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH0gZWxzZSBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gU0hFS0VMX0NVUlJFTkNZO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHBhcnRzID0gYW1vdW50U3RyQ2xuLnNwbGl0KCcgJyk7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChwYXJ0c1swXSk7XG4gICAgWywgY3VycmVuY3ldID0gcGFydHM7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFtb3VudCxcbiAgICBjdXJyZW5jeSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAoKHR4bikgPT4ge1xuICAgIGNvbnN0IGRhdGVGb3JtYXQgPVxuICAgICAgICB0eG4uZGF0ZS5sZW5ndGggPT09IDggP1xuICAgICAgICAgIERBVEVfRk9STUFUIDpcbiAgICAgICAgICB0eG4uZGF0ZS5sZW5ndGggPT09IDEwID9cbiAgICAgICAgICAgIExPTkdfREFURV9GT1JNQVQgOlxuICAgICAgICAgICAgbnVsbDtcbiAgICBpZiAoIWRhdGVGb3JtYXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBkYXRlIGZvcm1hdCcpO1xuICAgIH1cbiAgICBjb25zdCB0eG5EYXRlID0gbW9tZW50KHR4bi5kYXRlLCBkYXRlRm9ybWF0KS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IGNyZWRpdCA9IGdldEFtb3VudERhdGEodHhuLmNyZWRpdCB8fCAnJykuYW1vdW50O1xuICAgIGNvbnN0IGRlYml0ID0gZ2V0QW1vdW50RGF0YSh0eG4uZGViaXQgfHwgJycpLmFtb3VudDtcbiAgICBjb25zdCBhbW91bnQgPSAoTnVtYmVyLmlzTmFOKGNyZWRpdCkgPyAwIDogY3JlZGl0KSAtIChOdW1iZXIuaXNOYU4oZGViaXQpID8gMCA6IGRlYml0KTtcblxuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogdHhuRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IHR4bkRhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogYW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogYW1vdW50LFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIG1lbW86ICcnLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvblBhZ2UocGFnZTogUGFnZSk6IFByb21pc2U8U2NyYXBlZFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgdGRzVmFsdWVzID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJyNkYXRhVGFibGUwNzcgdGJvZHkgdHInLCBbXSwgKHRycykgPT4ge1xuICAgIHJldHVybiAodHJzKS5tYXAoKGVsKSA9PiAoe1xuICAgICAgZGF0ZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5kYXRlJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIC8vIHJlZmVyZW5jZSBhbmQgZGVzY3JpcHRpb24gaGF2ZSB2aWNlLXZlcnNhIGNsYXNzIG5hbWVcbiAgICAgIGRlc2NyaXB0aW9uOiAoZWwucXVlcnlTZWxlY3RvcignLnJlZmVyZW5jZScpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgICByZWZlcmVuY2U6IChlbC5xdWVyeVNlbGVjdG9yKCcuZGV0YWlscycpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgICBjcmVkaXQ6IChlbC5xdWVyeVNlbGVjdG9yKCcuY3JlZGl0JykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIGRlYml0OiAoZWwucXVlcnlTZWxlY3RvcignLmRlYml0JykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIGJhbGFuY2U6IChlbC5xdWVyeVNlbGVjdG9yKCcuYmFsYW5jZScpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgfSkpO1xuICB9KTtcblxuICByZXR1cm4gdGRzVmFsdWVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50U3VtbWFyeShwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGJhbGFuY2VFbG0gPSBhd2FpdCBwYWdlLiQoJy5jdXJyZW50X2JhbGFuY2UnKTtcbiAgY29uc3QgYmFsYW5jZUlubmVyVGV4dEVsbSA9IGF3YWl0IGJhbGFuY2VFbG0hLmdldFByb3BlcnR5KCdpbm5lclRleHQnKTtcbiAgY29uc3QgYmFsYW5jZVRleHQgPSBhd2FpdCBiYWxhbmNlSW5uZXJUZXh0RWxtLmpzb25WYWx1ZSgpO1xuICBjb25zdCBiYWxhbmNlVmFsdWUgPSBnZXRBbW91bnREYXRhKGJhbGFuY2VUZXh0IGFzIHN0cmluZywgdHJ1ZSk7XG4gIC8vIFRPRE86IEZpbmQgdGhlIGNyZWRpdCBmaWVsZCBpbiBiYW5rIHdlYnNpdGUgKGNvdWxkIHNlZSBpdCBpbiBteSBhY2NvdW50KVxuICByZXR1cm4ge1xuICAgIGJhbGFuY2U6IE51bWJlci5pc05hTihiYWxhbmNlVmFsdWUuYW1vdW50KSA/IDAgOiBiYWxhbmNlVmFsdWUuYW1vdW50LFxuICAgIGNyZWRpdExpbWl0OiAwLjAsXG4gICAgY3JlZGl0VXRpbGl6YXRpb246IDAuMCxcbiAgICBiYWxhbmNlQ3VycmVuY3k6IGJhbGFuY2VWYWx1ZS5jdXJyZW5jeSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50KHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KSB7XG4gIGNvbnN0IHN1bW1hcnkgPSBhd2FpdCBnZXRBY2NvdW50U3VtbWFyeShwYWdlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdpbnB1dCNmcm9tRGF0ZScpO1xuICAvLyBHZXQgYWNjb3VudCBudW1iZXJcbiAgY29uc3QgYnJhbmNoTnVtID0gYXdhaXQgcGFnZS4kZXZhbCgnLmJyYW5jaF9udW0nLCAoc3BhbikgPT4ge1xuICAgIHJldHVybiAoc3BhbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcblxuICBjb25zdCBhY2NvdW50Tm1iciA9IGF3YWl0IHBhZ2UuJGV2YWwoJy5hY2NfbnVtJywgKHNwYW4pID0+IHtcbiAgICByZXR1cm4gKHNwYW4gYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgfSk7XG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBgMTQtJHticmFuY2hOdW19LSR7YWNjb3VudE5tYnJ9YDtcbiAgLy8gU2VhcmNoIGZvciByZWxhdmFudCB0cmFuc2FjdGlvbiBmcm9tIHN0YXJ0RGF0ZVxuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnI3RhYkhlYWRlcjQnKTtcbiAgYXdhaXQgZmlsbElucHV0KFxuICAgIHBhZ2UsXG4gICAgJ2lucHV0I2Zyb21EYXRlJyxcbiAgICBzdGFydERhdGUuZm9ybWF0KCdERC9NTS9ZWVlZJyksXG4gICk7XG5cbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJyNmaWJpX3RhYl9kYXRlcyAuZmliaV9idG46bnRoLWNoaWxkKDIpJyk7XG4gIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ3RhYmxlI2RhdGFUYWJsZTA3NywgI05PX0RBVEEwNzcnKTtcbiAgbGV0IGhhc05leHRQYWdlID0gdHJ1ZTtcbiAgbGV0IHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdID0gW107XG5cbiAgY29uc3Qgbm9UcmFuc2FjdGlvbkVsbSA9IGF3YWl0IHBhZ2UuJCgnI05PX0RBVEEwNzcnKTtcbiAgaWYgKG5vVHJhbnNhY3Rpb25FbG0gPT0gbnVsbCkge1xuICAgIC8vIFNjYXBlIHRyYW5zYWN0aW9ucyAodGhpcyBtYXliZSBzcGFubmVkIG9uIG11bHRpcGxlIHBhZ2VzKVxuICAgIHdoaWxlIChoYXNOZXh0UGFnZSkge1xuICAgICAgY29uc3QgcGFnZVR4bnMgPSBhd2FpdCBwYXJzZVRyYW5zYWN0aW9uUGFnZShwYWdlKTtcbiAgICAgIHR4bnMgPSB0eG5zLmNvbmNhdChwYWdlVHhucyk7XG4gICAgICBjb25zdCBidXR0b24gPSBhd2FpdCBwYWdlLiQoJyNOcGFnZScpO1xuICAgICAgaGFzTmV4dFBhZ2UgPSBmYWxzZTtcbiAgICAgIGlmIChidXR0b24gIT0gbnVsbCkge1xuICAgICAgICBoYXNOZXh0UGFnZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaGFzTmV4dFBhZ2UpIHtcbiAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJyNOcGFnZScpO1xuICAgICAgICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICd0YWJsZSNkYXRhVGFibGUwNzcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgc3VtbWFyeSxcbiAgICB0eG5zOiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnMuc2xpY2UoMSkpLCAvLyBSZW1vdmUgZmlyc3QgbGluZSB3aGljaCBpcyBcIm9wZW5pbmcgYmFsYW5jZVwiXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KSB7XG4gIC8vIFRPRE8gbmVlZCB0byBleHRlbmQgdG8gc3VwcG9ydCBtdWx0aXBsZSBhY2NvdW50cyBhbmQgZm9yZWlnbiBhY2NvdW50c1xuICByZXR1cm4gW2F3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudChwYWdlLCBzdGFydERhdGUpXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvclBvc3RMb2dpbihwYWdlOiBQYWdlKSB7XG4gIC8vIFRPRE8gY2hlY2sgZm9yIGNvbmRpdGlvbiB0byBwcm92aWRlIG5ldyBwYXNzd29yZFxuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2Rpdi5sb3R1c0ZyYW1lJywgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjdmFsaWRhdGlvbk1zZycpLFxuICBdKTtcbn1cblxuY2xhc3MgT3RzYXJIYWhheWFsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7QkFTRV9VUkx9L01hdGFmTG9naW5TZXJ2aWNlL01hdGFmTG9naW5TZXJ2bGV0P2JhbmtJZD1PVFNBUlBSVEFMJnNpdGU9UHJpdmF0ZSZLT0RTQUZBPUhFYCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcjY29udGludWVCdG4nLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gd2FpdEZvclBvc3RMb2dpbih0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwoKTtcbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8odXJsKTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCBzdGFydE1vbWVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3RzYXJIYWhheWFsU2NyYXBlcjtcbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vdHNhci1oYWhheWFsLnRzIl0sIm5hbWVzIjpbIkJBU0VfVVJMIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJwYWdlIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJnZXRUcmFuc2FjdGlvbnNVcmwiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJnZXRBbW91bnREYXRhIiwiYW1vdW50U3RyIiwiaGFzQ3VycmVuY3kiLCJhbW91bnRTdHJDbG4iLCJyZXBsYWNlIiwiY3VycmVuY3kiLCJhbW91bnQiLCJwYXJzZUZsb2F0IiwiU0hFS0VMX0NVUlJFTkNZIiwiaW5jbHVkZXMiLCJTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MIiwicGFydHMiLCJzcGxpdCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibWFwIiwidHhuIiwiZGF0ZUZvcm1hdCIsImRhdGUiLCJsZW5ndGgiLCJFcnJvciIsInR4bkRhdGUiLCJ0b0lTT1N0cmluZyIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJyZXN1bHQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImRlc2NyaXB0aW9uIiwibWVtbyIsInBhcnNlVHJhbnNhY3Rpb25QYWdlIiwidGRzVmFsdWVzIiwidHJzIiwiZWwiLCJxdWVyeVNlbGVjdG9yIiwiaW5uZXJUZXh0IiwiYmFsYW5jZSIsImdldEFjY291bnRTdW1tYXJ5IiwiYmFsYW5jZUVsbSIsIiQiLCJiYWxhbmNlSW5uZXJUZXh0RWxtIiwiZ2V0UHJvcGVydHkiLCJiYWxhbmNlVGV4dCIsImpzb25WYWx1ZSIsImJhbGFuY2VWYWx1ZSIsImNyZWRpdExpbWl0IiwiY3JlZGl0VXRpbGl6YXRpb24iLCJiYWxhbmNlQ3VycmVuY3kiLCJmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQiLCJzdGFydERhdGUiLCJzdW1tYXJ5IiwiYnJhbmNoTnVtIiwiJGV2YWwiLCJzcGFuIiwiYWNjb3VudE5tYnIiLCJhY2NvdW50TnVtYmVyIiwiZm9ybWF0IiwiaGFzTmV4dFBhZ2UiLCJub1RyYW5zYWN0aW9uRWxtIiwicGFnZVR4bnMiLCJjb25jYXQiLCJidXR0b24iLCJzbGljZSIsImZldGNoVHJhbnNhY3Rpb25zIiwid2FpdEZvclBvc3RMb2dpbiIsIlByb21pc2UiLCJyYWNlIiwiT3RzYXJIYWhheWFsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwid2FpdEZvclRpbWVvdXQiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJvcHRpb25zIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJ1cmwiLCJuYXZpZ2F0ZVRvIiwiYWNjb3VudHMiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFPQTs7QUFDQTs7OztBQUdBLE1BQU1BLFFBQVEsR0FBRyxnQ0FBakI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxZQUF6QjtBQUNBLE1BQU1DLFdBQVcsR0FBRyxVQUFwQjs7QUFhQSxTQUFTQyx1QkFBVCxDQUFpQ0MsSUFBakMsRUFBNkM7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Z2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQge1xuICBmaWxsSW5wdXQsXG4gIGNsaWNrQnV0dG9uLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHBhZ2VFdmFsQWxsLFxuICBlbGVtZW50UHJlc2VudE9uUGFnZSxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IFNjcmFwZXJDcmVkZW50aWFscyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9vbmxpbmUuYmFua290c2FyLmNvLmlsJztcbmNvbnN0IExPTkdfREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWSc7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBiYWxhbmNlPzogc3RyaW5nO1xuICBkZWJpdD86IHN0cmluZztcbiAgY3JlZGl0Pzogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIHJlZmVyZW5jZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSkge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtgJHtCQVNFX1VSTH0vd3BzL215cG9ydGFsL0ZpYmlNZW51L09ubGluZWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gWygpID0+IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsICcjdmFsaWRhdGlvbk1zZycpXTtcbiAgLy8gVE9ETzogc3VwcG9ydCBjaGFuZ2UgcGFzc3dvcmRcbiAgLyogdXJsc1tMT0dJTl9SRVNVTFQuQ0hBTkdFX1BBU1NXT1JEXSA9IFtgYF07ICovXG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwoKSB7XG4gIHJldHVybiBgJHtCQVNFX1VSTH0vd3BzL215cG9ydGFsL0ZpYmlNZW51L09ubGluZS9PbkFjY291bnRNbmdtZW50L09uQmFsYW5jZVRyYW5zL1ByaXZhdGVBY2NvdW50Rmxvd2A7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXJuYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBnZXRBbW91bnREYXRhKGFtb3VudFN0cjogc3RyaW5nLCBoYXNDdXJyZW5jeSA9IGZhbHNlKSB7XG4gIGNvbnN0IGFtb3VudFN0ckNsbiA9IGFtb3VudFN0ci5yZXBsYWNlKCcsJywgJycpO1xuICBsZXQgY3VycmVuY3k6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBsZXQgYW1vdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgaWYgKCFoYXNDdXJyZW5jeSkge1xuICAgIGFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuKTtcbiAgICBjdXJyZW5jeSA9IFNIRUtFTF9DVVJSRU5DWTtcbiAgfSBlbHNlIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudFN0ckNsbi5yZXBsYWNlKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wsICcnKSk7XG4gICAgY3VycmVuY3kgPSBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGFydHMgPSBhbW91bnRTdHJDbG4uc3BsaXQoJyAnKTtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KHBhcnRzWzBdKTtcbiAgICBbLCBjdXJyZW5jeV0gPSBwYXJ0cztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYW1vdW50LFxuICAgIGN1cnJlbmN5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3QgZGF0ZUZvcm1hdCA9XG4gICAgICAgIHR4bi5kYXRlLmxlbmd0aCA9PT0gOCA/XG4gICAgICAgICAgREFURV9GT1JNQVQgOlxuICAgICAgICAgIHR4bi5kYXRlLmxlbmd0aCA9PT0gMTAgP1xuICAgICAgICAgICAgTE9OR19EQVRFX0ZPUk1BVCA6XG4gICAgICAgICAgICBudWxsO1xuICAgIGlmICghZGF0ZUZvcm1hdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGRhdGUgZm9ybWF0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHR4bkRhdGUgPSBtb21lbnQodHhuLmRhdGUsIGRhdGVGb3JtYXQpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgY3JlZGl0ID0gZ2V0QW1vdW50RGF0YSh0eG4uY3JlZGl0IHx8ICcnKS5hbW91bnQ7XG4gICAgY29uc3QgZGViaXQgPSBnZXRBbW91bnREYXRhKHR4bi5kZWJpdCB8fCAnJykuYW1vdW50O1xuICAgIGNvbnN0IGFtb3VudCA9IChOdW1iZXIuaXNOYU4oY3JlZGl0KSA/IDAgOiBjcmVkaXQpIC0gKE51bWJlci5pc05hTihkZWJpdCkgPyAwIDogZGViaXQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIGlkZW50aWZpZXI6IHR4bi5yZWZlcmVuY2UgPyBwYXJzZUludCh0eG4ucmVmZXJlbmNlLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogdHhuRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgbWVtbzogJycsXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZVRyYW5zYWN0aW9uUGFnZShwYWdlOiBQYWdlKTogUHJvbWlzZTxTY3JhcGVkVHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCB0ZHNWYWx1ZXMgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCAnI2RhdGFUYWJsZTA3NyB0Ym9keSB0cicsIFtdLCAodHJzKSA9PiB7XG4gICAgcmV0dXJuICh0cnMpLm1hcCgoZWwpID0+ICh7XG4gICAgICBkYXRlOiAoZWwucXVlcnlTZWxlY3RvcignLmRhdGUnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgLy8gcmVmZXJlbmNlIGFuZCBkZXNjcmlwdGlvbiBoYXZlIHZpY2UtdmVyc2EgY2xhc3MgbmFtZVxuICAgICAgZGVzY3JpcHRpb246IChlbC5xdWVyeVNlbGVjdG9yKCcucmVmZXJlbmNlJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIHJlZmVyZW5jZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5kZXRhaWxzJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIGNyZWRpdDogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5jcmVkaXQnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgZGViaXQ6IChlbC5xdWVyeVNlbGVjdG9yKCcuZGViaXQnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgYmFsYW5jZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5iYWxhbmNlJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIHJldHVybiB0ZHNWYWx1ZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnRTdW1tYXJ5KHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgYmFsYW5jZUVsbSA9IGF3YWl0IHBhZ2UuJCgnLmN1cnJlbnRfYmFsYW5jZScpO1xuICBjb25zdCBiYWxhbmNlSW5uZXJUZXh0RWxtID0gYXdhaXQgYmFsYW5jZUVsbSEuZ2V0UHJvcGVydHkoJ2lubmVyVGV4dCcpO1xuICBjb25zdCBiYWxhbmNlVGV4dCA9IGF3YWl0IGJhbGFuY2VJbm5lclRleHRFbG0uanNvblZhbHVlKCk7XG4gIGNvbnN0IGJhbGFuY2VWYWx1ZSA9IGdldEFtb3VudERhdGEoYmFsYW5jZVRleHQgYXMgc3RyaW5nLCB0cnVlKTtcbiAgLy8gVE9ETzogRmluZCB0aGUgY3JlZGl0IGZpZWxkIGluIGJhbmsgd2Vic2l0ZSAoY291bGQgc2VlIGl0IGluIG15IGFjY291bnQpXG4gIHJldHVybiB7XG4gICAgYmFsYW5jZTogTnVtYmVyLmlzTmFOKGJhbGFuY2VWYWx1ZS5hbW91bnQpID8gMCA6IGJhbGFuY2VWYWx1ZS5hbW91bnQsXG4gICAgY3JlZGl0TGltaXQ6IDAuMCxcbiAgICBjcmVkaXRVdGlsaXphdGlvbjogMC4wLFxuICAgIGJhbGFuY2VDdXJyZW5jeTogYmFsYW5jZVZhbHVlLmN1cnJlbmN5LFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgY29uc3Qgc3VtbWFyeSA9IGF3YWl0IGdldEFjY291bnRTdW1tYXJ5KHBhZ2UpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0I2Zyb21EYXRlJyk7XG4gIC8vIEdldCBhY2NvdW50IG51bWJlclxuICBjb25zdCBicmFuY2hOdW0gPSBhd2FpdCBwYWdlLiRldmFsKCcuYnJhbmNoX251bScsIChzcGFuKSA9PiB7XG4gICAgcmV0dXJuIChzcGFuIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pO1xuXG4gIGNvbnN0IGFjY291bnRObWJyID0gYXdhaXQgcGFnZS4kZXZhbCgnLmFjY19udW0nLCAoc3BhbikgPT4ge1xuICAgIHJldHVybiAoc3BhbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcbiAgY29uc3QgYWNjb3VudE51bWJlciA9IGAxNC0ke2JyYW5jaE51bX0tJHthY2NvdW50Tm1icn1gO1xuICAvLyBTZWFyY2ggZm9yIHJlbGF2YW50IHRyYW5zYWN0aW9uIGZyb20gc3RhcnREYXRlXG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICcjdGFiSGVhZGVyNCcpO1xuICBhd2FpdCBmaWxsSW5wdXQoXG4gICAgcGFnZSxcbiAgICAnaW5wdXQjZnJvbURhdGUnLFxuICAgIHN0YXJ0RGF0ZS5mb3JtYXQoJ0REL01NL1lZWVknKSxcbiAgKTtcblxuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnI2ZpYmlfdGFiX2RhdGVzIC5maWJpX2J0bjpudGgtY2hpbGQoMiknKTtcbiAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24ocGFnZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAndGFibGUjZGF0YVRhYmxlMDc3LCAjTk9fREFUQTA3NycpO1xuICBsZXQgaGFzTmV4dFBhZ2UgPSB0cnVlO1xuICBsZXQgdHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10gPSBbXTtcblxuICBjb25zdCBub1RyYW5zYWN0aW9uRWxtID0gYXdhaXQgcGFnZS4kKCcjTk9fREFUQTA3NycpO1xuICBpZiAobm9UcmFuc2FjdGlvbkVsbSA9PSBudWxsKSB7XG4gICAgLy8gU2NhcGUgdHJhbnNhY3Rpb25zICh0aGlzIG1heWJlIHNwYW5uZWQgb24gbXVsdGlwbGUgcGFnZXMpXG4gICAgd2hpbGUgKGhhc05leHRQYWdlKSB7XG4gICAgICBjb25zdCBwYWdlVHhucyA9IGF3YWl0IHBhcnNlVHJhbnNhY3Rpb25QYWdlKHBhZ2UpO1xuICAgICAgdHhucyA9IHR4bnMuY29uY2F0KHBhZ2VUeG5zKTtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHBhZ2UuJCgnI05wYWdlJyk7XG4gICAgICBoYXNOZXh0UGFnZSA9IGZhbHNlO1xuICAgICAgaWYgKGJ1dHRvbiAhPSBudWxsKSB7XG4gICAgICAgIGhhc05leHRQYWdlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNOZXh0UGFnZSkge1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnI05wYWdlJyk7XG4gICAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ3RhYmxlI2RhdGFUYWJsZTA3NycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWNjb3VudE51bWJlcixcbiAgICBzdW1tYXJ5LFxuICAgIHR4bnM6IGNvbnZlcnRUcmFuc2FjdGlvbnModHhucy5zbGljZSgxKSksIC8vIFJlbW92ZSBmaXJzdCBsaW5lIHdoaWNoIGlzIFwib3BlbmluZyBiYWxhbmNlXCJcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgLy8gVE9ETyBuZWVkIHRvIGV4dGVuZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjY291bnRzIGFuZCBmb3JlaWduIGFjY291bnRzXG4gIHJldHVybiBbYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50KHBhZ2UsIHN0YXJ0RGF0ZSldO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yUG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgLy8gVE9ETyBjaGVjayBmb3IgY29uZGl0aW9uIHRvIHByb3ZpZGUgbmV3IHBhc3N3b3JkXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZGl2LmxvdHVzRnJhbWUnLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJyN2YWxpZGF0aW9uTXNnJyksXG4gIF0pO1xufVxuXG5jbGFzcyBPdHNhckhhaGF5YWxTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtCQVNFX1VSTH0vTWF0YWZMb2dpblNlcnZpY2UvTWF0YWZMb2dpblNlcnZsZXQ/YmFua0lkPU9UU0FSUFJUQUwmc2l0ZT1Qcml2YXRlJktPRFNBRkE9SEVgLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclRpbWVvdXQoMTAwMCk7XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNjb250aW51ZUJ0bicpO1xuICAgICAgfSxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHdhaXRGb3JQb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgY29uc3QgdXJsID0gZ2V0VHJhbnNhY3Rpb25zVXJsKCk7XG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKHVybCk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zKHRoaXMucGFnZSwgc3RhcnRNb21lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE90c2FySGFoYXlhbFNjcmFwZXI7XG4iXX0=
@@ -31,12 +31,22 @@ var _transactions2 = require("../helpers/transactions");
31
31
 
32
32
  var _debug = require("../helpers/debug");
33
33
 
34
+ var _fetch = require("../helpers/fetch");
35
+
34
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
37
 
38
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
39
+
40
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
41
+
36
42
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
43
 
38
44
  const LOGIN_URL = 'https://www.cal-online.co.il/';
39
45
  const TRANSACTIONS_URL = 'https://services.cal-online.co.il/Card-Holders/Screens/Transactions/Transactions.aspx';
46
+ const GET_TX_DETAILS_URL = 'https://services.cal-online.co.il/Card-Holders/SCREENS/Transactions/Transactions.aspx/GetTransDetails';
47
+ const GET_TX_DETAILS_HEADER = {
48
+ 'Content-Type': 'application/json;charset=UTF-8'
49
+ };
40
50
  const LONG_DATE_FORMAT = 'DD/MM/YYYY';
41
51
  const DATE_FORMAT = 'DD/MM/YY';
42
52
  const InvalidPasswordMessage = 'שם המשתמש או הסיסמה שהוזנו שגויים';
@@ -136,9 +146,38 @@ function getTransactionInstallments(memo) {
136
146
  };
137
147
  }
138
148
 
149
+ function getIdentifierAndNumerator(onclickValue) {
150
+ if (!onclickValue) {
151
+ debug('cannot extract the identifier of a transaction, onclick attribute not found for transaction');
152
+ return {};
153
+ }
154
+
155
+ const expectedStartValue = 'OnMouseClickRow(this, event, "';
156
+
157
+ if (!onclickValue.startsWith(expectedStartValue)) {
158
+ debug(`cannot extract the identifier of a transaction, onclick attribute value doesnt start with expected value '${onclickValue}'`);
159
+ return {};
160
+ }
161
+
162
+ const thirdArgument = onclickValue.substring(expectedStartValue.length, onclickValue.length - 2);
163
+ const splits = thirdArgument.split('|');
164
+
165
+ if (splits.length !== 2) {
166
+ debug(`cannot extract the identifier of a transaction, unexpected 3rd argument in onclick value '${onclickValue}'`);
167
+ return {};
168
+ }
169
+
170
+ return {
171
+ identifier: splits[1],
172
+ numerator: splits[0]
173
+ };
174
+ }
175
+
139
176
  function convertTransactions(txns) {
140
177
  debug(`convert ${txns.length} raw transactions to official Transaction structure`);
141
178
  return txns.map(txn => {
179
+ var _getIdentifierAndNume, _txn$additionalInfo;
180
+
142
181
  const originalAmountTuple = getAmountData(txn.originalAmount || '');
143
182
  const chargedAmountTuple = getAmountData(txn.chargedAmount || '');
144
183
  const installments = getTransactionInstallments(txn.memo);
@@ -151,6 +190,7 @@ function convertTransactions(txns) {
151
190
 
152
191
  const txnProcessedDate = (0, _moment.default)(txn.processedDate, processedDateFormat);
153
192
  const result = {
193
+ identifier: (_getIdentifierAndNume = getIdentifierAndNumerator(txn.onclick)) === null || _getIdentifierAndNume === void 0 ? void 0 : _getIdentifierAndNume.identifier,
154
194
  type: installments ? _transactions.TransactionTypes.Installments : _transactions.TransactionTypes.Normal,
155
195
  status: _transactions.TransactionStatuses.Completed,
156
196
  date: installments ? txnDate.add(installments.number - 1, 'month').toISOString() : txnDate.toISOString(),
@@ -160,7 +200,8 @@ function convertTransactions(txns) {
160
200
  chargedAmount: chargedAmountTuple.amount,
161
201
  chargedCurrency: chargedAmountTuple.currency,
162
202
  description: txn.description || '',
163
- memo: txn.memo || ''
203
+ memo: txn.memo || '',
204
+ category: (_txn$additionalInfo = txn.additionalInfo) === null || _txn$additionalInfo === void 0 ? void 0 : _txn$additionalInfo.category
164
205
  };
165
206
 
166
207
  if (installments) {
@@ -171,6 +212,38 @@ function convertTransactions(txns) {
171
212
  });
172
213
  }
173
214
 
215
+ async function getAdditionalTxInfo(tx, page) {
216
+ var _result$d, _result$d$Data, _result$d$Data$Mercha;
217
+
218
+ const {
219
+ identifier,
220
+ numerator
221
+ } = getIdentifierAndNumerator(tx.onclick);
222
+
223
+ if (identifier === undefined || numerator === undefined) {
224
+ return null;
225
+ }
226
+
227
+ const result = await (0, _fetch.fetchPostWithinPage)(page, GET_TX_DETAILS_URL, {
228
+ Identifier: identifier,
229
+ Numerator: numerator
230
+ }, GET_TX_DETAILS_HEADER);
231
+ return {
232
+ category: ((_result$d = result.d) === null || _result$d === void 0 ? void 0 : (_result$d$Data = _result$d.Data) === null || _result$d$Data === void 0 ? void 0 : (_result$d$Data$Mercha = _result$d$Data.MerchantDetails) === null || _result$d$Data$Mercha === void 0 ? void 0 : _result$d$Data$Mercha.SectorName) || undefined
233
+ };
234
+ }
235
+
236
+ async function getAdditionalTxsInfoIfNeeded(txs, scraperOptions, page) {
237
+ if (!scraperOptions.additionalTransactionInformation) {
238
+ return txs;
239
+ }
240
+
241
+ const promises = txs.map(async x => _objectSpread({}, x, {
242
+ additionalInfo: await getAdditionalTxInfo(x, page)
243
+ }));
244
+ return Promise.all(promises);
245
+ }
246
+
174
247
  async function fetchTransactionsForAccount(page, startDate, accountNumber, scraperOptions) {
175
248
  var _scraperOptions$outpu, _scraperOptions$outpu2;
176
249
 
@@ -239,9 +312,11 @@ async function fetchTransactionsForAccount(page, startDate, accountNumber, scrap
239
312
  const rawTransactions = await (0, _elementsInteractions.pageEvalAll)(page, '#ctlMainGrid > tbody tr, #ctlSecondaryGrid > tbody tr', [], (items, billingDate) => {
240
313
  return items.map(el => {
241
314
  const columns = el.getElementsByTagName('td');
315
+ const onclick = el.getAttribute('onclick');
242
316
 
243
317
  if (columns.length === 6) {
244
318
  return {
319
+ onclick,
245
320
  processedDate: columns[0].innerText,
246
321
  date: columns[1].innerText,
247
322
  description: columns[2].innerText,
@@ -253,6 +328,7 @@ async function fetchTransactionsForAccount(page, startDate, accountNumber, scrap
253
328
 
254
329
  if (columns.length === 5) {
255
330
  return {
331
+ onclick,
256
332
  processedDate: billingDate,
257
333
  date: columns[0].innerText,
258
334
  description: columns[1].innerText,
@@ -266,8 +342,10 @@ async function fetchTransactionsForAccount(page, startDate, accountNumber, scrap
266
342
  });
267
343
  }, billingDate);
268
344
  debug(`fetched ${rawTransactions.length} raw transactions from page`);
269
- accountTransactions.push(...convertTransactions(rawTransactions.filter(item => !!item)));
270
- debug('check for existance of another page');
345
+ const existsTxs = rawTransactions.filter(item => !!item);
346
+ const fullScrappedTxs = await getAdditionalTxsInfoIfNeeded(existsTxs, scraperOptions, page);
347
+ accountTransactions.push(...convertTransactions(fullScrappedTxs));
348
+ debug('check for existence of another page');
271
349
  hasNextPage = await (0, _elementsInteractions.elementPresentOnPage)(page, nextPageSelector);
272
350
 
273
351
  if (hasNextPage) {
@@ -414,4 +492,4 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
414
492
 
415
493
  var _default = VisaCalScraper;
416
494
  exports.default = _default;
417
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJUUkFOU0FDVElPTlNfVVJMIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiSW52YWxpZFBhc3N3b3JkTWVzc2FnZSIsImRlYnVnIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZXJyb3JNZXNzYWdlIiwiaXRlbSIsImlubmVyVGV4dCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNsbiIsInJlcGxhY2UiLCJjdXJyZW5jeSIsImFtb3VudCIsIlNIRUtFTF9DVVJSRU5DWV9TWU1CT0wiLCJwYXJzZUZsb2F0IiwiU0hFS0VMX0NVUlJFTkNZIiwiRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCIsIkRPTExBUl9DVVJSRU5DWSIsIkVVUk9fQ1VSUkVOQ1lfU1lNQk9MIiwiRVVST19DVVJSRU5DWSIsInBhcnRzIiwic3BsaXQiLCJnZXRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyIsIm1lbW8iLCJwYXJzZWRNZW1vIiwiZXhlYyIsImxlbmd0aCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsInR4biIsIm9yaWdpbmFsQW1vdW50VHVwbGUiLCJvcmlnaW5hbEFtb3VudCIsImNoYXJnZWRBbW91bnRUdXBsZSIsImNoYXJnZWRBbW91bnQiLCJpbnN0YWxsbWVudHMiLCJ0eG5EYXRlIiwiZGF0ZSIsInByb2Nlc3NlZERhdGVGb3JtYXQiLCJwcm9jZXNzZWREYXRlIiwidHhuUHJvY2Vzc2VkRGF0ZSIsInJlc3VsdCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwib3JpZ2luYWxDdXJyZW5jeSIsImNoYXJnZWRDdXJyZW5jeSIsImRlc2NyaXB0aW9uIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50Iiwic3RhcnREYXRlIiwiYWNjb3VudE51bWJlciIsInNjcmFwZXJPcHRpb25zIiwic3RhcnREYXRlVmFsdWUiLCJmb3JtYXQiLCJkYXRlU2VsZWN0b3IiLCJkYXRlSGlkZGVuRmllbGRTZWxlY3RvciIsImJ1dHRvblNlbGVjdG9yIiwibmV4dFBhZ2VTZWxlY3RvciIsImJpbGxpbmdMYWJlbFNlbGVjdG9yIiwic2Vjb25kYXJ5QmlsbGluZ0xhYmVsU2VsZWN0b3IiLCJub0RhdGFTZWxlY3RvciIsIml0ZW1zIiwiZWwiLCJzdGFydERhdGVJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImFjY291bnRUcmFuc2FjdGlvbnMiLCJjdXJyZW50RGF0ZUluZGV4Iiwid2FpdEZvclRpbWVvdXQiLCJhbGwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbCIsInBhZ2VIYXNOb1RyYW5zYWN0aW9ucyIsImVsZW1lbnQiLCJzaXRlVmFsdWUiLCJiaWxsaW5nRGF0ZUxhYmVsIiwic2V0dGxlbWVudERhdGVSZWdleCIsImJpbGxpbmdEYXRlIiwiaGFzTmV4dFBhZ2UiLCJyYXdUcmFuc2FjdGlvbnMiLCJjb2x1bW5zIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJwdXNoIiwiZmlsdGVyIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJzdWJzdHJpbmciLCJnZXRBY2NvdW50TnVtYmVycyIsImVsZW1lbnRzIiwiZSIsInRleHQiLCJ0aGVuIiwicmVzIiwidHJpbSIsInNldEFjY291bnQiLCJhY2NvdW50IiwiZWxlbSIsImEiLCJjbGljayIsImZldGNoVHJhbnNhY3Rpb25zIiwiYWNjb3VudE51bWJlcnMiLCJhY2NvdW50cyIsImZldGNoRnV0dXJlRGViaXRzIiwiZnV0dXJlRGViaXRzU2VsZWN0b3IiLCJkZWJpdE1vdW50Q2xhc3MiLCJkZWJpdFdoZW5DaGFyZ2VDbGFzcyIsImRlYml0QmFua051bWJlckNsYXNzIiwiY3VyckJhbmtFbCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJ3aGVuQ2hhcmdlIiwiYmFua051bWJlciIsImZ1dHVyZURlYml0cyIsImFtb3VudERhdGEiLCJjaGFyZ2VEYXRlIiwiYmFua0FjY291bnROdW1iZXIiLCJhbW91bnRDdXJyZW5jeSIsIlZpc2FDYWxTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3NzaWJsZVJlc3VsdHMiLCJjaGVja1JlYWRpbmVzcyIsInByZUFjdGlvbiIsIm9wZW5Mb2dpblBvcHVwIiwidXNlckFnZW50IiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1vbWVudCIsIm1heCIsIm5hdmlnYXRlVG8iLCJ1bmRlZmluZWQiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUdBOztBQVFBOztBQUdBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsK0JBQWxCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsdUZBQXpCO0FBQ0EsTUFBTUMs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THdLLE1BQUFBLE9BQU8sRUFBRSxJQURKO0FBRUxuQyxNQUFBQSxRQUZLO0FBR0xVLE1BQUFBO0FBSEssS0FBUDtBQUtEOztBQW5EaUQ7O2VBc0RyQ0ssYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEZyYW1lLCBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luT3B0aW9ucywgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7XG4gIGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHBhZ2VFdmFsQWxsLCBzZXRWYWx1ZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxufSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMsXG4gIFRyYW5zYWN0aW9uc0FjY291bnQsXG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4gIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBTY3JhcGVyT3B0aW9ucywgU2NhcGVyU2NyYXBpbmdSZXN1bHQsIFNjcmFwZXJDcmVkZW50aWFscyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyJztcbmltcG9ydCB7XG4gIERPTExBUl9DVVJSRU5DWSwgRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCwgRVVST19DVVJSRU5DWSwgRVVST19DVVJSRU5DWV9TWU1CT0wsIFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCxcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cuY2FsLW9ubGluZS5jby5pbC8nO1xuY29uc3QgVFJBTlNBQ1RJT05TX1VSTCA9ICdodHRwczovL3NlcnZpY2VzLmNhbC1vbmxpbmUuY28uaWwvQ2FyZC1Ib2xkZXJzL1NjcmVlbnMvVHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9ucy5hc3B4JztcbmNvbnN0IExPTkdfREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWSc7XG5jb25zdCBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlID0gJ9ep150g15TXntep16rXntepINeQ15Ug15TXodeZ16HXnteUINep15TXldeW16DXlSDXqdeS15XXmdeZ150nO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCd2aXNhLWNhbCcpO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgZGF0ZTogc3RyaW5nO1xuICBwcm9jZXNzZWREYXRlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG9yaWdpbmFsQW1vdW50OiBzdHJpbmc7XG4gIGNoYXJnZWRBbW91bnQ6IHN0cmluZztcbiAgbWVtbzogc3RyaW5nO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRMb2dpbkZyYW1lKHBhZ2U6IFBhZ2UpIHtcbiAgbGV0IGZyYW1lOiBGcmFtZSB8IG51bGwgPSBudWxsO1xuICBkZWJ1Zygnd2FpdCB1bnRpbCBsb2dpbiBmcmFtZSBmb3VuZCcpO1xuICBhd2FpdCB3YWl0VW50aWwoKCkgPT4ge1xuICAgIGZyYW1lID0gcGFnZVxuICAgICAgLmZyYW1lcygpXG4gICAgICAuZmluZCgoZikgPT4gZi51cmwoKS5pbmNsdWRlcygnY2FsY29ubmVjdCcpKSB8fCBudWxsO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoISFmcmFtZSk7XG4gIH0sICd3YWl0IGZvciBpZnJhbWUgd2l0aCBsb2dpbiBmb3JtJywgMTAwMDAsIDEwMDApO1xuXG4gIGlmICghZnJhbWUpIHtcbiAgICBkZWJ1ZygnZmFpbGVkIHRvIGZpbmQgbG9naW4gZnJhbWUgZm9yIDEwIHNlY29uZHMnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBleHRyYWN0IGxvZ2luIGlmcmFtZScpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGZyYW1lID0gYXdhaXQgZ2V0TG9naW5GcmFtZShwYWdlKTtcbiAgY29uc3QgZXJyb3JGb3VuZCA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnKTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3JGb3VuZCA/IGF3YWl0IHBhZ2VFdmFsKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnLCAnJywgKGl0ZW0pID0+IHtcbiAgICByZXR1cm4gKGl0ZW0gYXMgSFRNTERpdkVsZW1lbnQpLmlubmVyVGV4dDtcbiAgfSkgOiAnJztcbiAgcmV0dXJuIGVycm9yTWVzc2FnZSA9PT0gSW52YWxpZFBhc3N3b3JkTWVzc2FnZTtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSB7XG4gIGRlYnVnKCdyZXR1cm4gcG9zc2libGUgbG9naW4gcmVzdWx0cycpO1xuICBjb25zdCB1cmxzOiBMb2dpbk9wdGlvbnNbJ3Bvc3NpYmxlUmVzdWx0cyddID0ge1xuICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFsvQWNjb3VudE1hbmFnZW1lbnQvaV0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbYXN5bmMgKG9wdGlvbnM/OiB7IHBhZ2U/OiBQYWdlfSkgPT4ge1xuICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnM/LnBhZ2U7XG4gICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2UpO1xuICAgIH1dLFxuICAgIC8vIFtMb2dpblJlc3VsdHMuQWNjb3VudEJsb2NrZWRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gICAgLy8gW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtdLCAvLyBUT0RPIGFkZCB3aGVuIHJlYWNoaW5nIHRoaXMgc2NlbmFyaW9cbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpIHtcbiAgZGVidWcoJ2NyZWF0ZSBsb2dpbiBmaWVsZHMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCcpO1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwidXNlck5hbWVcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiAnW2Zvcm1jb250cm9sbmFtZT1cInBhc3N3b3JkXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cblxuZnVuY3Rpb24gZ2V0QW1vdW50RGF0YShhbW91bnRTdHI6IHN0cmluZykge1xuICBjb25zdCBhbW91bnRTdHJDbG4gPSBhbW91bnRTdHIucmVwbGFjZSgnLCcsICcnKTtcbiAgbGV0IGN1cnJlbmN5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbGV0IGFtb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSAtcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gU0hFS0VMX0NVUlJFTkNZO1xuICB9IGVsc2UgaWYgKGFtb3VudFN0ckNsbi5pbmNsdWRlcyhET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MKSkge1xuICAgIGFtb3VudCA9IC1wYXJzZUZsb2F0KGFtb3VudFN0ckNsbi5yZXBsYWNlKERPTExBUl9DVVJSRU5DWV9TWU1CT0wsICcnKSk7XG4gICAgY3VycmVuY3kgPSBET0xMQVJfQ1VSUkVOQ1k7XG4gIH0gZWxzZSBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKEVVUk9fQ1VSUkVOQ1lfU1lNQk9MKSkge1xuICAgIGFtb3VudCA9IC1wYXJzZUZsb2F0KGFtb3VudFN0ckNsbi5yZXBsYWNlKEVVUk9fQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gRVVST19DVVJSRU5DWTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXJ0cyA9IGFtb3VudFN0ckNsbi5zcGxpdCgnICcpO1xuICAgIFtjdXJyZW5jeV0gPSBwYXJ0cztcbiAgICBhbW91bnQgPSAtcGFyc2VGbG9hdChwYXJ0c1sxXSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFtb3VudCxcbiAgICBjdXJyZW5jeSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25JbnN0YWxsbWVudHMobWVtbzogc3RyaW5nKTogVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMgfCBudWxsIHtcbiAgY29uc3QgcGFyc2VkTWVtbyA9ICgv16rXqdec15XXnSAoXFxkKykg157XqteV15ogKFxcZCspLykuZXhlYyhtZW1vIHx8ICcnKTtcblxuICBpZiAoIXBhcnNlZE1lbW8gfHwgcGFyc2VkTWVtby5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChwYXJzZWRNZW1vWzFdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KHBhcnNlZE1lbW9bMl0sIDEwKSxcbiAgfTtcbn1cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgZGVidWcoYGNvbnZlcnQgJHt0eG5zLmxlbmd0aH0gcmF3IHRyYW5zYWN0aW9ucyB0byBvZmZpY2lhbCBUcmFuc2FjdGlvbiBzdHJ1Y3R1cmVgKTtcbiAgcmV0dXJuIHR4bnMubWFwKCh0eG4pID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbEFtb3VudFR1cGxlID0gZ2V0QW1vdW50RGF0YSh0eG4ub3JpZ2luYWxBbW91bnQgfHwgJycpO1xuICAgIGNvbnN0IGNoYXJnZWRBbW91bnRUdXBsZSA9IGdldEFtb3VudERhdGEodHhuLmNoYXJnZWRBbW91bnQgfHwgJycpO1xuXG4gICAgY29uc3QgaW5zdGFsbG1lbnRzID0gZ2V0VHJhbnNhY3Rpb25JbnN0YWxsbWVudHModHhuLm1lbW8pO1xuICAgIGNvbnN0IHR4bkRhdGUgPSBtb21lbnQodHhuLmRhdGUsIERBVEVfRk9STUFUKTtcbiAgICBjb25zdCBwcm9jZXNzZWREYXRlRm9ybWF0ID1cbiAgICAgIHR4bi5wcm9jZXNzZWREYXRlLmxlbmd0aCA9PT0gOCA/XG4gICAgICAgIERBVEVfRk9STUFUIDpcbiAgICAgICAgdHhuLnByb2Nlc3NlZERhdGUubGVuZ3RoID09PSA5IHx8IHR4bi5wcm9jZXNzZWREYXRlLmxlbmd0aCA9PT0gMTAgP1xuICAgICAgICAgIExPTkdfREFURV9GT1JNQVQgOlxuICAgICAgICAgIG51bGw7XG4gICAgaWYgKCFwcm9jZXNzZWREYXRlRm9ybWF0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcHJvY2Vzc2VkIGRhdGUnKTtcbiAgICB9XG4gICAgY29uc3QgdHhuUHJvY2Vzc2VkRGF0ZSA9IG1vbWVudCh0eG4ucHJvY2Vzc2VkRGF0ZSwgcHJvY2Vzc2VkRGF0ZUZvcm1hdCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogaW5zdGFsbG1lbnRzID8gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMgOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBkYXRlOiBpbnN0YWxsbWVudHMgPyB0eG5EYXRlLmFkZChpbnN0YWxsbWVudHMubnVtYmVyIC0gMSwgJ21vbnRoJykudG9JU09TdHJpbmcoKSA6IHR4bkRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IHR4blByb2Nlc3NlZERhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBvcmlnaW5hbEFtb3VudFR1cGxlLmFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IG9yaWdpbmFsQW1vdW50VHVwbGUuY3VycmVuY3ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBjaGFyZ2VkQW1vdW50VHVwbGUuYW1vdW50LFxuICAgICAgY2hhcmdlZEN1cnJlbmN5OiBjaGFyZ2VkQW1vdW50VHVwbGUuY3VycmVuY3ksXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgbWVtbzogdHhuLm1lbW8gfHwgJycsXG4gICAgfTtcblxuICAgIGlmIChpbnN0YWxsbWVudHMpIHtcbiAgICAgIHJlc3VsdC5pbnN0YWxsbWVudHMgPSBpbnN0YWxsbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudChwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCwgYWNjb3VudE51bWJlcjogc3RyaW5nLCBzY3JhcGVyT3B0aW9uczogU2NyYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgY29uc3Qgc3RhcnREYXRlVmFsdWUgPSBzdGFydERhdGUuZm9ybWF0KCdNTS9ZWVlZJyk7XG4gIGNvbnN0IGRhdGVTZWxlY3RvciA9ICdbaWQkPVwiRm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jbG5kckRlYml0RGF0ZVNjb3BlX1RleHRCb3hcIl0nO1xuICBjb25zdCBkYXRlSGlkZGVuRmllbGRTZWxlY3RvciA9ICdbaWQkPVwiRm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jbG5kckRlYml0RGF0ZVNjb3BlX0hpZGRlbkZpZWxkXCJdJztcbiAgY29uc3QgYnV0dG9uU2VsZWN0b3IgPSAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsU3VibWl0UmVxdWVzdFwiXSc7XG4gIGNvbnN0IG5leHRQYWdlU2VsZWN0b3IgPSAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsR3JpZFBhZ2VyX2J0bk5leHRcIl0nO1xuICBjb25zdCBiaWxsaW5nTGFiZWxTZWxlY3RvciA9ICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsTWFpblRvb2xCYXJfbGJsQ2FwdGlvbl0nO1xuICBjb25zdCBzZWNvbmRhcnlCaWxsaW5nTGFiZWxTZWxlY3RvciA9ICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsU2Vjb25kYXJ5VG9vbEJhcl9sYmxDYXB0aW9uXSc7XG4gIGNvbnN0IG5vRGF0YVNlbGVjdG9yID0gJ1tpZCQ9Rm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9tc2dib3hFcnJvck1lc3NhZ2VzXSc7XG5cbiAgZGVidWcoJ2ZpbmQgdGhlIHN0YXJ0IGRhdGUgaW5kZXggaW4gdGhlIGRyb3Bib3gnKTtcbiAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHBhZ2VFdmFsQWxsKHBhZ2UsICdbaWQkPVwiRm9ybUFyZWFOb0JvcmRlcl9Gb3JtQXJlYV9jbG5kckRlYml0RGF0ZVNjb3BlX09wdGlvbkxpc3RcIl0gbGknLCBbXSwgKGl0ZW1zKSA9PiB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoZWw6IGFueSkgPT4gZWwuaW5uZXJUZXh0KTtcbiAgfSk7XG4gIGNvbnN0IHN0YXJ0RGF0ZUluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uID09PSBzdGFydERhdGVWYWx1ZSk7XG5cbiAgZGVidWcoYHNjcmFwZSAke29wdGlvbnMubGVuZ3RoIC0gc3RhcnREYXRlSW5kZXh9IGJpbGxpbmcgY3ljbGVzYCk7XG4gIGNvbnN0IGFjY291bnRUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgZm9yIChsZXQgY3VycmVudERhdGVJbmRleCA9IHN0YXJ0RGF0ZUluZGV4OyBjdXJyZW50RGF0ZUluZGV4IDwgb3B0aW9ucy5sZW5ndGg7IGN1cnJlbnREYXRlSW5kZXggKz0gMSkge1xuICAgIGRlYnVnKCd3YWl0IGZvciBkYXRlIHNlbGVjdG9yIHRvIGJlIGZvdW5kJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGRhdGVTZWxlY3RvciwgdHJ1ZSk7XG4gICAgZGVidWcoYHNldCBoaWRkZW4gdmFsdWUgb2YgdGhlIGRhdGUgc2VsZWN0b3IgdG8gYmUgdGhlIGluZGV4ICR7Y3VycmVudERhdGVJbmRleH1gKTtcbiAgICBhd2FpdCBzZXRWYWx1ZShwYWdlLCBkYXRlSGlkZGVuRmllbGRTZWxlY3RvciwgYCR7Y3VycmVudERhdGVJbmRleH1gKTtcbiAgICBkZWJ1Zygnd2FpdCBhIHNlY29uZCB0byB3b3JrYXJvdW5kIG5hdmlnYXRpb24gaXNzdWUgaW4gaGVhZGxlc3MgYnJvd3NlciBtb2RlJyk7XG4gICAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCgxMDAwKTtcbiAgICBkZWJ1ZygnY2xpY2sgb24gdGhlIGZpbHRlciBzdWJtaXQgYnV0dG9uIGFuZCB3YWl0IGZvciBuYXZpZ2F0aW9uJyk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgcGFnZS53YWl0Rm9yTmF2aWdhdGlvbih7IHdhaXRVbnRpbDogJ2RvbWNvbnRlbnRsb2FkZWQnIH0pLFxuICAgICAgY2xpY2tCdXR0b24ocGFnZSwgYnV0dG9uU2VsZWN0b3IpLFxuICAgIF0pO1xuICAgIGRlYnVnKCdjaGVjayBpZiBtb250aCBoYXMgbm8gdHJhbnNhY3Rpb25zJyk7XG4gICAgY29uc3QgcGFnZUhhc05vVHJhbnNhY3Rpb25zID0gYXdhaXQgcGFnZUV2YWwocGFnZSwgbm9EYXRhU2VsZWN0b3IsIGZhbHNlLCAoKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHNpdGVWYWx1ZSA9ICgoZWxlbWVudCBhcyBIVE1MU3BhbkVsZW1lbnQpLmlubmVyVGV4dCB8fCAnJykucmVwbGFjZSgvW14g15At16pdL2csICcnKTtcbiAgICAgIHJldHVybiBzaXRlVmFsdWUgPT09ICfXnNeQINeg157XpteQ15Ug16DXqteV16DXmdedJztcbiAgICB9KSk7XG5cbiAgICBpZiAocGFnZUhhc05vVHJhbnNhY3Rpb25zKSB7XG4gICAgICBkZWJ1ZygncGFnZSBoYXMgbm8gdHJhbnNhY3Rpb25zJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCdmaW5kIHRoZSBiaWxsaW5nIGRhdGUnKTtcbiAgICAgIGxldCBiaWxsaW5nRGF0ZUxhYmVsID0gYXdhaXQgcGFnZUV2YWwocGFnZSwgYmlsbGluZ0xhYmVsU2VsZWN0b3IsICcnLCAoKGVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIChlbGVtZW50IGFzIEhUTUxTcGFuRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgICAgfSkpO1xuICAgICAgbGV0IHNldHRsZW1lbnREYXRlUmVnZXggPSAvXFxkezEsMn1bL11cXGR7Mn1bL11cXGR7Miw0fS87XG5cbiAgICAgIGlmIChiaWxsaW5nRGF0ZUxhYmVsID09PSAnJykge1xuICAgICAgICBiaWxsaW5nRGF0ZUxhYmVsID0gYXdhaXQgcGFnZUV2YWwocGFnZSwgc2Vjb25kYXJ5QmlsbGluZ0xhYmVsU2VsZWN0b3IsICcnLCAoKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKGVsZW1lbnQgYXMgSFRNTFNwYW5FbGVtZW50KS5pbm5lclRleHQ7XG4gICAgICAgIH0pKTtcbiAgICAgICAgc2V0dGxlbWVudERhdGVSZWdleCA9IC9cXGR7MSwyfVsvXVxcZHsyLDR9LztcbiAgICAgIH1cblxuICAgICAgY29uc3QgYmlsbGluZ0RhdGUgPSBzZXR0bGVtZW50RGF0ZVJlZ2V4LmV4ZWMoYmlsbGluZ0RhdGVMYWJlbCk/LlswXTtcblxuICAgICAgaWYgKCFiaWxsaW5nRGF0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBmZXRjaCBwcm9jZXNzIGRhdGUnKTtcbiAgICAgIH1cblxuICAgICAgZGVidWcoYGZvdW5kIHRoZSBiaWxsaW5nIGRhdGUgZm9yIHRoYXQgbW9udGggJHtiaWxsaW5nRGF0ZX1gKTtcbiAgICAgIGxldCBoYXNOZXh0UGFnZSA9IGZhbHNlO1xuICAgICAgZG8ge1xuICAgICAgICBkZWJ1ZygnZmV0Y2ggcmF3IHRyYW5zYWN0aW9ucyBmcm9tIHBhZ2UnKTtcbiAgICAgICAgY29uc3QgcmF3VHJhbnNhY3Rpb25zID0gYXdhaXQgcGFnZUV2YWxBbGw8KFNjcmFwZWRUcmFuc2FjdGlvbiB8IG51bGwpW10+KHBhZ2UsICcjY3RsTWFpbkdyaWQgPiB0Ym9keSB0ciwgI2N0bFNlY29uZGFyeUdyaWQgPiB0Ym9keSB0cicsIFtdLCAoaXRlbXMsIGJpbGxpbmdEYXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChpdGVtcykubWFwKChlbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1ucyA9IGVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZCcpO1xuICAgICAgICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID09PSA2KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogY29sdW1uc1swXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgZGF0ZTogY29sdW1uc1sxXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvbHVtbnNbMl0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsQW1vdW50OiBjb2x1bW5zWzNdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBjaGFyZ2VkQW1vdW50OiBjb2x1bW5zWzRdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBtZW1vOiBjb2x1bW5zWzVdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gNSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZERhdGU6IGJpbGxpbmdEYXRlLFxuICAgICAgICAgICAgICAgIGRhdGU6IGNvbHVtbnNbMF0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb2x1bW5zWzFdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEFtb3VudDogY29sdW1uc1syXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgY2hhcmdlZEFtb3VudDogY29sdW1uc1szXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgbWVtbzogY29sdW1uc1s0XS5pbm5lclRleHQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgYmlsbGluZ0RhdGUpO1xuICAgICAgICBkZWJ1ZyhgZmV0Y2hlZCAke3Jhd1RyYW5zYWN0aW9ucy5sZW5ndGh9IHJhdyB0cmFuc2FjdGlvbnMgZnJvbSBwYWdlYCk7XG4gICAgICAgIGFjY291bnRUcmFuc2FjdGlvbnMucHVzaCguLi5jb252ZXJ0VHJhbnNhY3Rpb25zKChyYXdUcmFuc2FjdGlvbnMgYXMgU2NyYXBlZFRyYW5zYWN0aW9uW10pXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtKSkpO1xuXG4gICAgICAgIGRlYnVnKCdjaGVjayBmb3IgZXhpc3RhbmNlIG9mIGFub3RoZXIgcGFnZScpO1xuICAgICAgICBoYXNOZXh0UGFnZSA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIG5leHRQYWdlU2VsZWN0b3IpO1xuICAgICAgICBpZiAoaGFzTmV4dFBhZ2UpIHtcbiAgICAgICAgICBkZWJ1ZygnaGFzIGFub3RoZXIgcGFnZSwgY2xpY2sgb24gYnV0dG9uIG5leHQgYW5kIHdhaXQgZm9yIHBhZ2UgbmF2aWdhdGlvbicpO1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHBhZ2Uud2FpdEZvck5hdmlnYXRpb24oeyB3YWl0VW50aWw6ICdkb21jb250ZW50bG9hZGVkJyB9KSxcbiAgICAgICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsR3JpZFBhZ2VyX2J0bk5leHRdJyksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKGhhc05leHRQYWdlKTtcbiAgICB9XG4gIH1cblxuICBkZWJ1ZygnZmlsZXIgb3V0IG9sZCB0cmFuc2FjdGlvbnMnKTtcbiAgY29uc3QgdHhucyA9IChzY3JhcGVyT3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkgP1xuICAgIGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhY2NvdW50VHJhbnNhY3Rpb25zLCBzdGFydERhdGUsIHNjcmFwZXJPcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UpIDpcbiAgICBhY2NvdW50VHJhbnNhY3Rpb25zO1xuICBkZWJ1ZyhgZm91bmQgJHt0eG5zLmxlbmd0aH0gdmFsaWQgdHJhbnNhY3Rpb25zIG91dCBvZiAke2FjY291bnRUcmFuc2FjdGlvbnMubGVuZ3RofSB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgZW5kaW5nIHdpdGggJHthY2NvdW50TnVtYmVyLnN1YnN0cmluZyhhY2NvdW50TnVtYmVyLmxlbmd0aCAtIDIpfWApO1xuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgdHhucyxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudE51bWJlcnMocGFnZTogUGFnZSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgcmV0dXJuIHBhZ2VFdmFsQWxsKHBhZ2UsICdbaWQkPWxua0l0ZW1dJywgW10sIChlbGVtZW50cykgPT4gZWxlbWVudHMubWFwKChlKSA9PiAoZSBhcyBIVE1MQW5jaG9yRWxlbWVudCkudGV4dCkpLnRoZW4oKHJlcykgPT4gcmVzLm1hcCgodGV4dCkgPT4gL1xcZCskLy5leGVjKHRleHQudHJpbSgpKT8uWzBdID8/ICcnKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldEFjY291bnQocGFnZTogUGFnZSwgYWNjb3VudDogc3RyaW5nKSB7XG4gIGF3YWl0IHBhZ2VFdmFsQWxsKFxuICAgIHBhZ2UsXG4gICAgJ1tpZCQ9bG5rSXRlbV0nLFxuICAgIG51bGwsXG4gICAgKGVsZW1lbnRzLCBhY2NvdW50KSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW0gb2YgZWxlbWVudHMpIHtcbiAgICAgICAgY29uc3QgYSA9IGVsZW0gYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgICAgIGlmIChhLnRleHQuaW5jbHVkZXMoYWNjb3VudCkpIHtcbiAgICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFjY291bnQsXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50LCBzY3JhcGVyT3B0aW9uczogU2NyYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnRbXT4ge1xuICBjb25zdCBhY2NvdW50TnVtYmVyczogc3RyaW5nW10gPSBhd2FpdCBnZXRBY2NvdW50TnVtYmVycyhwYWdlKTtcbiAgY29uc3QgYWNjb3VudHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYWNjb3VudCBvZiBhY2NvdW50TnVtYmVycykge1xuICAgIGRlYnVnKGBzZXR0aW5nIGFjY291bnQ6ICR7YWNjb3VudH1gKTtcbiAgICBhd2FpdCBzZXRBY2NvdW50KHBhZ2UsIGFjY291bnQpO1xuICAgIGF3YWl0IHBhZ2Uud2FpdEZvclRpbWVvdXQoMTAwMCk7XG4gICAgYWNjb3VudHMucHVzaChcbiAgICAgIGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudChcbiAgICAgICAgcGFnZSxcbiAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICBhY2NvdW50LFxuICAgICAgICBzY3JhcGVyT3B0aW9ucyxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhY2NvdW50cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hGdXR1cmVEZWJpdHMocGFnZTogUGFnZSkge1xuICBjb25zdCBmdXR1cmVEZWJpdHNTZWxlY3RvciA9ICcuaG9tZXBhZ2UtYmFua3MtdG9wJztcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCBmdXR1cmVEZWJpdHNTZWxlY3RvciwgW10sIChpdGVtcykgPT4ge1xuICAgIGNvbnN0IGRlYml0TW91bnRDbGFzcyA9ICdhbW91bnQnO1xuICAgIGNvbnN0IGRlYml0V2hlbkNoYXJnZUNsYXNzID0gJ3doZW4tY2hhcmdlJztcbiAgICBjb25zdCBkZWJpdEJhbmtOdW1iZXJDbGFzcyA9ICdiYW5rRGVzYyc7XG5cbiAgICByZXR1cm4gaXRlbXMubWFwKChjdXJyQmFua0VsOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGFtb3VudCA9IGN1cnJCYW5rRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShkZWJpdE1vdW50Q2xhc3MpWzBdLmlubmVyVGV4dDtcbiAgICAgIGNvbnN0IHdoZW5DaGFyZ2UgPSBjdXJyQmFua0VsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZGViaXRXaGVuQ2hhcmdlQ2xhc3MpWzBdLmlubmVyVGV4dDtcbiAgICAgIGNvbnN0IGJhbmtOdW1iZXIgPSBjdXJyQmFua0VsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZGViaXRCYW5rTnVtYmVyQ2xhc3MpWzBdLmlubmVyVGV4dDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgd2hlbkNoYXJnZSxcbiAgICAgICAgYmFua051bWJlcixcbiAgICAgIH07XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBmdXR1cmVEZWJpdHMgPSByZXN1bHQubWFwKChpdGVtKSA9PiB7XG4gICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEFtb3VudERhdGEoaXRlbS5hbW91bnQpO1xuICAgIGNvbnN0IGNoYXJnZURhdGUgPSAvXFxkezEsMn1bL11cXGR7Mn1bL11cXGR7Miw0fS8uZXhlYyhpdGVtLndoZW5DaGFyZ2UpPy5bMF07XG4gICAgY29uc3QgYmFua0FjY291bnROdW1iZXIgPSAvXFxkKy1cXGQrLy5leGVjKGl0ZW0uYmFua051bWJlcik/LlswXTtcbiAgICByZXR1cm4ge1xuICAgICAgYW1vdW50OiBhbW91bnREYXRhLmFtb3VudCxcbiAgICAgIGFtb3VudEN1cnJlbmN5OiBhbW91bnREYXRhLmN1cnJlbmN5LFxuICAgICAgY2hhcmdlRGF0ZSxcbiAgICAgIGJhbmtBY2NvdW50TnVtYmVyLFxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gZnV0dXJlRGViaXRzO1xufVxuXG5jbGFzcyBWaXNhQ2FsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7TE9HSU5fVVJMfWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0nLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nKSxcbiAgICAgIHByZUFjdGlvbjogdGhpcy5vcGVuTG9naW5Qb3B1cCxcbiAgICAgIHVzZXJBZ2VudDogJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc4LjAuMzkwNC4xMDggU2FmYXJpLzUzNy4zNicsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gICAgZGVidWcoYGZldGNoIHRyYW5zYWN0aW9ucyBzdGFydGluZyAke3N0YXJ0TW9tZW50LmZvcm1hdCgpfWApO1xuXG4gICAgZGVidWcoJ2ZldGNoIGZ1dHVyZSBkZWJpdHMnKTtcbiAgICBjb25zdCBmdXR1cmVEZWJpdHMgPSBhd2FpdCBmZXRjaEZ1dHVyZURlYml0cyh0aGlzLnBhZ2UpO1xuXG4gICAgZGVidWcoJ25hdmlnYXRlIHRvIHRyYW5zYWN0aW9ucyBwYWdlJyk7XG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKFRSQU5TQUNUSU9OU19VUkwsIHVuZGVmaW5lZCwgNjAwMDApO1xuXG4gICAgZGVidWcoJ2ZldGNoIGFjY291bnRzIHRyYW5zYWN0aW9ucycpO1xuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCBzdGFydE1vbWVudCwgdGhpcy5vcHRpb25zKTtcblxuICAgIGRlYnVnKCdyZXR1cm4gdGhlIHNjcmFwZWQgYWNjb3VudHMnKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgICAgZnV0dXJlRGViaXRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzYUNhbFNjcmFwZXI7XG4iXX0=
495
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJUUkFOU0FDVElPTlNfVVJMIiwiR0VUX1RYX0RFVEFJTFNfVVJMIiwiR0VUX1RYX0RFVEFJTFNfSEVBREVSIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiSW52YWxpZFBhc3N3b3JkTWVzc2FnZSIsImRlYnVnIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZXJyb3JNZXNzYWdlIiwiaXRlbSIsImlubmVyVGV4dCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNsbiIsInJlcGxhY2UiLCJjdXJyZW5jeSIsImFtb3VudCIsIlNIRUtFTF9DVVJSRU5DWV9TWU1CT0wiLCJwYXJzZUZsb2F0IiwiU0hFS0VMX0NVUlJFTkNZIiwiRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCIsIkRPTExBUl9DVVJSRU5DWSIsIkVVUk9fQ1VSUkVOQ1lfU1lNQk9MIiwiRVVST19DVVJSRU5DWSIsInBhcnRzIiwic3BsaXQiLCJnZXRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyIsIm1lbW8iLCJwYXJzZWRNZW1vIiwiZXhlYyIsImxlbmd0aCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJnZXRJZGVudGlmaWVyQW5kTnVtZXJhdG9yIiwib25jbGlja1ZhbHVlIiwiZXhwZWN0ZWRTdGFydFZhbHVlIiwic3RhcnRzV2l0aCIsInRoaXJkQXJndW1lbnQiLCJzdWJzdHJpbmciLCJzcGxpdHMiLCJpZGVudGlmaWVyIiwibnVtZXJhdG9yIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJtYXAiLCJ0eG4iLCJvcmlnaW5hbEFtb3VudFR1cGxlIiwib3JpZ2luYWxBbW91bnQiLCJjaGFyZ2VkQW1vdW50VHVwbGUiLCJjaGFyZ2VkQW1vdW50IiwiaW5zdGFsbG1lbnRzIiwidHhuRGF0ZSIsImRhdGUiLCJwcm9jZXNzZWREYXRlRm9ybWF0IiwicHJvY2Vzc2VkRGF0ZSIsInR4blByb2Nlc3NlZERhdGUiLCJyZXN1bHQiLCJvbmNsaWNrIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJJbnN0YWxsbWVudHMiLCJOb3JtYWwiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwiYWRkIiwidG9JU09TdHJpbmciLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJjYXRlZ29yeSIsImFkZGl0aW9uYWxJbmZvIiwiZ2V0QWRkaXRpb25hbFR4SW5mbyIsInR4IiwidW5kZWZpbmVkIiwiSWRlbnRpZmllciIsIk51bWVyYXRvciIsImQiLCJEYXRhIiwiTWVyY2hhbnREZXRhaWxzIiwiU2VjdG9yTmFtZSIsImdldEFkZGl0aW9uYWxUeHNJbmZvSWZOZWVkZWQiLCJ0eHMiLCJzY3JhcGVyT3B0aW9ucyIsImFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIiwicHJvbWlzZXMiLCJ4IiwiYWxsIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50Iiwic3RhcnREYXRlIiwiYWNjb3VudE51bWJlciIsInN0YXJ0RGF0ZVZhbHVlIiwiZm9ybWF0IiwiZGF0ZVNlbGVjdG9yIiwiZGF0ZUhpZGRlbkZpZWxkU2VsZWN0b3IiLCJidXR0b25TZWxlY3RvciIsIm5leHRQYWdlU2VsZWN0b3IiLCJiaWxsaW5nTGFiZWxTZWxlY3RvciIsInNlY29uZGFyeUJpbGxpbmdMYWJlbFNlbGVjdG9yIiwibm9EYXRhU2VsZWN0b3IiLCJpdGVtcyIsImVsIiwic3RhcnREYXRlSW5kZXgiLCJmaW5kSW5kZXgiLCJvcHRpb24iLCJhY2NvdW50VHJhbnNhY3Rpb25zIiwiY3VycmVudERhdGVJbmRleCIsIndhaXRGb3JUaW1lb3V0Iiwid2FpdEZvck5hdmlnYXRpb24iLCJ3YWl0VW50aWwiLCJwYWdlSGFzTm9UcmFuc2FjdGlvbnMiLCJlbGVtZW50Iiwic2l0ZVZhbHVlIiwiYmlsbGluZ0RhdGVMYWJlbCIsInNldHRsZW1lbnREYXRlUmVnZXgiLCJiaWxsaW5nRGF0ZSIsImhhc05leHRQYWdlIiwicmF3VHJhbnNhY3Rpb25zIiwiY29sdW1ucyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0QXR0cmlidXRlIiwiZXhpc3RzVHhzIiwiZmlsdGVyIiwiZnVsbFNjcmFwcGVkVHhzIiwicHVzaCIsIm91dHB1dERhdGEiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZ2V0QWNjb3VudE51bWJlcnMiLCJlbGVtZW50cyIsImUiLCJ0ZXh0IiwidGhlbiIsInJlcyIsInRyaW0iLCJzZXRBY2NvdW50IiwiYWNjb3VudCIsImVsZW0iLCJhIiwiY2xpY2siLCJmZXRjaFRyYW5zYWN0aW9ucyIsImFjY291bnROdW1iZXJzIiwiYWNjb3VudHMiLCJmZXRjaEZ1dHVyZURlYml0cyIsImZ1dHVyZURlYml0c1NlbGVjdG9yIiwiZGViaXRNb3VudENsYXNzIiwiZGViaXRXaGVuQ2hhcmdlQ2xhc3MiLCJkZWJpdEJhbmtOdW1iZXJDbGFzcyIsImN1cnJCYW5rRWwiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwid2hlbkNoYXJnZSIsImJhbmtOdW1iZXIiLCJmdXR1cmVEZWJpdHMiLCJhbW91bnREYXRhIiwiY2hhcmdlRGF0ZSIsImJhbmtBY2NvdW50TnVtYmVyIiwiYW1vdW50Q3VycmVuY3kiLCJWaXNhQ2FsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zc2libGVSZXN1bHRzIiwiY2hlY2tSZWFkaW5lc3MiLCJwcmVBY3Rpb24iLCJvcGVuTG9naW5Qb3B1cCIsInVzZXJBZ2VudCIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJuYXZpZ2F0ZVRvIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFHQTs7QUFRQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLE1BQU1BLFNBQVMsR0FBRywrQkFBbEI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyx1RkFBekI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyx1R0FBM0I7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRztBQUFFLGtCQUFnQjtBQUFsQixDQUE5QjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLFlBQXpCO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFVBQXBCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsbUNBQS9CO0FBRUEsTUFBTUMsS0FBSyxHQUFHLHFCQUFTLFVBQVQsQ0FBZDs7QUFrQkEsZUFBZUMsYUFBZixDQUE2QkMsSUFBN0IsRUFBeUM7QUFDdkMsTUFBSUMsS0FBbUIsR0FBRyxJQUExQjtBQUNBSCxFQUFBQSxLQUFLLENBQUMsOEJBQUQsQ0FBTDtBQUNBLFFBQU0sd0JBQVUsTUFBTTtBQUNwQkcsSUFBQUEsS0FBSyxHQUFHRCxJQUFJLENBQ1RFLE1BREssR0FFTEMsSUFGSyxDQUVDQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsR0FBRixHQUFRQyxRQUFSLENBQWlCLFlBQWpCLENBRlAsS0FFMEMsSUFGbEQ7QUFHQSxXQUFPQyxPQUFPLENBQUND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QUFTLEdBQUcsS0FBS3RGLE9BQUwsQ0FBYXNGLFNBQWIsSUFBMEJnRixrQkFBa0IsQ0FBQ0UsTUFBbkIsRUFBNUM7O0FBQ0EsVUFBTUMsV0FBVyxHQUFHQyxnQkFBT0MsR0FBUCxDQUFXTCxrQkFBWCxFQUErQixxQkFBT2hGLFNBQVAsQ0FBL0IsQ0FBcEI7O0FBQ0E1RyxJQUFBQSxLQUFLLENBQUUsK0JBQThCK0wsV0FBVyxDQUFDaEYsTUFBWixFQUFxQixFQUFyRCxDQUFMO0FBRUEvRyxJQUFBQSxLQUFLLENBQUMscUJBQUQsQ0FBTDtBQUNBLFVBQU0ySyxZQUFZLEdBQUcsTUFBTVQsaUJBQWlCLENBQUMsS0FBS2hLLElBQU4sQ0FBNUM7QUFFQUYsSUFBQUEsS0FBSyxDQUFDLCtCQUFELENBQUw7QUFDQSxVQUFNLEtBQUtrTSxVQUFMLENBQWdCeE0sZ0JBQWhCLEVBQWtDbUcsU0FBbEMsRUFBNkMsS0FBN0MsQ0FBTjtBQUVBN0YsSUFBQUEsS0FBSyxDQUFDLDZCQUFELENBQUw7QUFDQSxVQUFNaUssUUFBUSxHQUFHLE1BQU1GLGlCQUFpQixDQUFDLEtBQUs3SixJQUFOLEVBQVk2TCxXQUFaLEVBQXlCLEtBQUt6SyxPQUE5QixDQUF4QztBQUVBdEIsSUFBQUEsS0FBSyxDQUFDLDZCQUFELENBQUw7QUFDQSxXQUFPO0FBQ0xtTSxNQUFBQSxPQUFPLEVBQUUsSUFESjtBQUVMbEMsTUFBQUEsUUFGSztBQUdMVSxNQUFBQTtBQUhLLEtBQVA7QUFLRDs7QUFuRGlEOztlQXNEckNLLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBGcmFtZSwgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpbk9wdGlvbnMsIExvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsIHBhZ2VFdmFsLCBwYWdlRXZhbEFsbCwgc2V0VmFsdWUsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzLFxuICBUcmFuc2FjdGlvbnNBY2NvdW50LFxuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU2NyYXBlck9wdGlvbnMsIFNjYXBlclNjcmFwaW5nUmVzdWx0LCBTY3JhcGVyQ3JlZGVudGlhbHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQge1xuICBET0xMQVJfQ1VSUkVOQ1ksIERPTExBUl9DVVJSRU5DWV9TWU1CT0wsIEVVUk9fQ1VSUkVOQ1ksIEVVUk9fQ1VSUkVOQ1lfU1lNQk9MLCBTSEVLRUxfQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcblxuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vd3d3LmNhbC1vbmxpbmUuY28uaWwvJztcbmNvbnN0IFRSQU5TQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9zZXJ2aWNlcy5jYWwtb25saW5lLmNvLmlsL0NhcmQtSG9sZGVycy9TY3JlZW5zL1RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbnMuYXNweCc7XG5jb25zdCBHRVRfVFhfREVUQUlMU19VUkwgPSAnaHR0cHM6Ly9zZXJ2aWNlcy5jYWwtb25saW5lLmNvLmlsL0NhcmQtSG9sZGVycy9TQ1JFRU5TL1RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbnMuYXNweC9HZXRUcmFuc0RldGFpbHMnO1xuY29uc3QgR0VUX1RYX0RFVEFJTFNfSEVBREVSID0geyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcgfTtcbmNvbnN0IExPTkdfREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWSc7XG5jb25zdCBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlID0gJ9ep150g15TXntep16rXntepINeQ15Ug15TXodeZ16HXnteUINep15TXldeW16DXlSDXqdeS15XXmdeZ150nO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCd2aXNhLWNhbCcpO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgb25jbGljazogc3RyaW5nIHwgbnVsbDtcbiAgZGF0ZTogc3RyaW5nO1xuICBwcm9jZXNzZWREYXRlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG9yaWdpbmFsQW1vdW50OiBzdHJpbmc7XG4gIGNoYXJnZWRBbW91bnQ6IHN0cmluZztcbiAgbWVtbzogc3RyaW5nO1xuICBhZGRpdGlvbmFsSW5mbz86IFNjcmFwZWRBZGRpdGlvbmFsSW5mbztcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRBZGRpdGlvbmFsSW5mbyB7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGdldExvZ2luRnJhbWUocGFnZTogUGFnZSkge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgbnVsbCA9IG51bGw7XG4gIGRlYnVnKCd3YWl0IHVudGlsIGxvZ2luIGZyYW1lIGZvdW5kJyk7XG4gIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiB7XG4gICAgZnJhbWUgPSBwYWdlXG4gICAgICAuZnJhbWVzKClcbiAgICAgIC5maW5kKChmKSA9PiBmLnVybCgpLmluY2x1ZGVzKCdjYWxjb25uZWN0JykpIHx8IG51bGw7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSghIWZyYW1lKTtcbiAgfSwgJ3dhaXQgZm9yIGlmcmFtZSB3aXRoIGxvZ2luIGZvcm0nLCAxMDAwMCwgMTAwMCk7XG5cbiAgaWYgKCFmcmFtZSkge1xuICAgIGRlYnVnKCdmYWlsZWQgdG8gZmluZCBsb2dpbiBmcmFtZSBmb3IgMTAgc2Vjb25kcycpO1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGV4dHJhY3QgbG9naW4gaWZyYW1lJyk7XG4gIH1cblxuICByZXR1cm4gZnJhbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHBhZ2UpO1xuICBjb25zdCBlcnJvckZvdW5kID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UoZnJhbWUsICdkaXYuZ2VuZXJhbC1lcnJvciA+IGRpdicpO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvckZvdW5kID8gYXdhaXQgcGFnZUV2YWwoZnJhbWUsICdkaXYuZ2VuZXJhbC1lcnJvciA+IGRpdicsICcnLCAoaXRlbSkgPT4ge1xuICAgIHJldHVybiAoaXRlbSBhcyBIVE1MRGl2RWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KSA6ICcnO1xuICByZXR1cm4gZXJyb3JNZXNzYWdlID09PSBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpIHtcbiAgZGVidWcoJ3JldHVybiBwb3NzaWJsZSBsb2dpbiByZXN1bHRzJyk7XG4gIGNvbnN0IHVybHM6IExvZ2luT3B0aW9uc1sncG9zc2libGVSZXN1bHRzJ10gPSB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogWy9BY2NvdW50TWFuYWdlbWVudC9pXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAob3B0aW9ucz86IHsgcGFnZT86IFBhZ2V9KSA9PiB7XG4gICAgICBjb25zdCBwYWdlID0gb3B0aW9ucz8ucGFnZTtcbiAgICAgIGlmICghcGFnZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZSk7XG4gICAgfV0sXG4gICAgLy8gW0xvZ2luUmVzdWx0cy5BY2NvdW50QmxvY2tlZF06IFtdLCAvLyBUT0RPIGFkZCB3aGVuIHJlYWNoaW5nIHRoaXMgc2NlbmFyaW9cbiAgICAvLyBbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXTogW10sIC8vIFRPRE8gYWRkIHdoZW4gcmVhY2hpbmcgdGhpcyBzY2VuYXJpb1xuICB9O1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICBkZWJ1ZygnY3JlYXRlIGxvZ2luIGZpZWxkcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkJyk7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJ1c2VyTmFtZVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwicGFzc3dvcmRcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuXG5mdW5jdGlvbiBnZXRBbW91bnREYXRhKGFtb3VudFN0cjogc3RyaW5nKSB7XG4gIGNvbnN0IGFtb3VudFN0ckNsbiA9IGFtb3VudFN0ci5yZXBsYWNlKCcsJywgJycpO1xuICBsZXQgY3VycmVuY3k6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBsZXQgYW1vdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgaWYgKGFtb3VudFN0ckNsbi5pbmNsdWRlcyhTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MKSkge1xuICAgIGFtb3VudCA9IC1wYXJzZUZsb2F0KGFtb3VudFN0ckNsbi5yZXBsYWNlKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wsICcnKSk7XG4gICAgY3VycmVuY3kgPSBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH0gZWxzZSBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKERPTExBUl9DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gLXBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuLnJlcGxhY2UoRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IERPTExBUl9DVVJSRU5DWTtcbiAgfSBlbHNlIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoRVVST19DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gLXBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuLnJlcGxhY2UoRVVST19DVVJSRU5DWV9TWU1CT0wsICcnKSk7XG4gICAgY3VycmVuY3kgPSBFVVJPX0NVUlJFTkNZO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHBhcnRzID0gYW1vdW50U3RyQ2xuLnNwbGl0KCcgJyk7XG4gICAgW2N1cnJlbmN5XSA9IHBhcnRzO1xuICAgIGFtb3VudCA9IC1wYXJzZUZsb2F0KHBhcnRzWzFdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYW1vdW50LFxuICAgIGN1cnJlbmN5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyhtZW1vOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkluc3RhbGxtZW50cyB8IG51bGwge1xuICBjb25zdCBwYXJzZWRNZW1vID0gKC/Xqtep15zXldedIChcXGQrKSDXnteq15XXmiAoXFxkKykvKS5leGVjKG1lbW8gfHwgJycpO1xuXG4gIGlmICghcGFyc2VkTWVtbyB8fCBwYXJzZWRNZW1vLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KHBhcnNlZE1lbW9bMV0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQocGFyc2VkTWVtb1syXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRJZGVudGlmaWVyQW5kTnVtZXJhdG9yKG9uY2xpY2tWYWx1ZTogc3RyaW5nIHwgbnVsbCk6IHsgaWRlbnRpZmllcj86IHN0cmluZywgbnVtZXJhdG9yPzogc3RyaW5nIH0ge1xuICBpZiAoIW9uY2xpY2tWYWx1ZSkge1xuICAgIGRlYnVnKCdjYW5ub3QgZXh0cmFjdCB0aGUgaWRlbnRpZmllciBvZiBhIHRyYW5zYWN0aW9uLCBvbmNsaWNrIGF0dHJpYnV0ZSBub3QgZm91bmQgZm9yIHRyYW5zYWN0aW9uJyk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGNvbnN0IGV4cGVjdGVkU3RhcnRWYWx1ZSA9ICdPbk1vdXNlQ2xpY2tSb3codGhpcywgZXZlbnQsIFwiJztcbiAgaWYgKCFvbmNsaWNrVmFsdWUuc3RhcnRzV2l0aChleHBlY3RlZFN0YXJ0VmFsdWUpKSB7XG4gICAgZGVidWcoYGNhbm5vdCBleHRyYWN0IHRoZSBpZGVudGlmaWVyIG9mIGEgdHJhbnNhY3Rpb24sIG9uY2xpY2sgYXR0cmlidXRlIHZhbHVlIGRvZXNudCBzdGFydCB3aXRoIGV4cGVjdGVkIHZhbHVlICcke29uY2xpY2tWYWx1ZX0nYCk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgdGhpcmRBcmd1bWVudCA9IG9uY2xpY2tWYWx1ZS5zdWJzdHJpbmcoZXhwZWN0ZWRTdGFydFZhbHVlLmxlbmd0aCwgb25jbGlja1ZhbHVlLmxlbmd0aCAtIDIpO1xuICBjb25zdCBzcGxpdHMgPSB0aGlyZEFyZ3VtZW50LnNwbGl0KCd8Jyk7XG4gIGlmIChzcGxpdHMubGVuZ3RoICE9PSAyKSB7XG4gICAgZGVidWcoYGNhbm5vdCBleHRyYWN0IHRoZSBpZGVudGlmaWVyIG9mIGEgdHJhbnNhY3Rpb24sIHVuZXhwZWN0ZWQgM3JkIGFyZ3VtZW50IGluIG9uY2xpY2sgdmFsdWUgJyR7b25jbGlja1ZhbHVlfSdgKTtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpZGVudGlmaWVyOiBzcGxpdHNbMV0sXG4gICAgbnVtZXJhdG9yOiBzcGxpdHNbMF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgZGVidWcoYGNvbnZlcnQgJHt0eG5zLmxlbmd0aH0gcmF3IHRyYW5zYWN0aW9ucyB0byBvZmZpY2lhbCBUcmFuc2FjdGlvbiBzdHJ1Y3R1cmVgKTtcbiAgcmV0dXJuIHR4bnMubWFwKCh0eG4pID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbEFtb3VudFR1cGxlID0gZ2V0QW1vdW50RGF0YSh0eG4ub3JpZ2luYWxBbW91bnQgfHwgJycpO1xuICAgIGNvbnN0IGNoYXJnZWRBbW91bnRUdXBsZSA9IGdldEFtb3VudERhdGEodHhuLmNoYXJnZWRBbW91bnQgfHwgJycpO1xuXG4gICAgY29uc3QgaW5zdGFsbG1lbnRzID0gZ2V0VHJhbnNhY3Rpb25JbnN0YWxsbWVudHModHhuLm1lbW8pO1xuICAgIGNvbnN0IHR4bkRhdGUgPSBtb21lbnQodHhuLmRhdGUsIERBVEVfRk9STUFUKTtcbiAgICBjb25zdCBwcm9jZXNzZWREYXRlRm9ybWF0ID1cbiAgICAgIHR4bi5wcm9jZXNzZWREYXRlLmxlbmd0aCA9PT0gOCA/XG4gICAgICAgIERBVEVfRk9STUFUIDpcbiAgICAgICAgdHhuLnByb2Nlc3NlZERhdGUubGVuZ3RoID09PSA5IHx8IHR4bi5wcm9jZXNzZWREYXRlLmxlbmd0aCA9PT0gMTAgP1xuICAgICAgICAgIExPTkdfREFURV9GT1JNQVQgOlxuICAgICAgICAgIG51bGw7XG4gICAgaWYgKCFwcm9jZXNzZWREYXRlRm9ybWF0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcHJvY2Vzc2VkIGRhdGUnKTtcbiAgICB9XG4gICAgY29uc3QgdHhuUHJvY2Vzc2VkRGF0ZSA9IG1vbWVudCh0eG4ucHJvY2Vzc2VkRGF0ZSwgcHJvY2Vzc2VkRGF0ZUZvcm1hdCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgaWRlbnRpZmllcjogZ2V0SWRlbnRpZmllckFuZE51bWVyYXRvcih0eG4ub25jbGljayk/LmlkZW50aWZpZXIsXG4gICAgICB0eXBlOiBpbnN0YWxsbWVudHMgPyBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cyA6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIGRhdGU6IGluc3RhbGxtZW50cyA/IHR4bkRhdGUuYWRkKGluc3RhbGxtZW50cy5udW1iZXIgLSAxLCAnbW9udGgnKS50b0lTT1N0cmluZygpIDogdHhuRGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogdHhuUHJvY2Vzc2VkRGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IG9yaWdpbmFsQW1vdW50VHVwbGUuYW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogb3JpZ2luYWxBbW91bnRUdXBsZS5jdXJyZW5jeSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGNoYXJnZWRBbW91bnRUdXBsZS5hbW91bnQsXG4gICAgICBjaGFyZ2VkQ3VycmVuY3k6IGNoYXJnZWRBbW91bnRUdXBsZS5jdXJyZW5jeSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBtZW1vOiB0eG4ubWVtbyB8fCAnJyxcbiAgICAgIGNhdGVnb3J5OiB0eG4uYWRkaXRpb25hbEluZm8/LmNhdGVnb3J5LFxuICAgIH07XG5cbiAgICBpZiAoaW5zdGFsbG1lbnRzKSB7XG4gICAgICByZXN1bHQuaW5zdGFsbG1lbnRzID0gaW5zdGFsbG1lbnRzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBZGRpdGlvbmFsVHhJbmZvKHR4OiBTY3JhcGVkVHJhbnNhY3Rpb24sIHBhZ2U6IFBhZ2UpOiBQcm9taXNlPFNjcmFwZWRBZGRpdGlvbmFsSW5mbyB8IG51bGw+IHtcbiAgY29uc3QgeyBpZGVudGlmaWVyLCBudW1lcmF0b3IgfSA9IGdldElkZW50aWZpZXJBbmROdW1lcmF0b3IodHgub25jbGljayk7XG4gIGlmIChpZGVudGlmaWVyID09PSB1bmRlZmluZWQgfHwgbnVtZXJhdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPGFueT4ocGFnZSwgR0VUX1RYX0RFVEFJTFNfVVJMLCB7XG4gICAgSWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICBOdW1lcmF0b3I6IG51bWVyYXRvcixcbiAgfSwgR0VUX1RYX0RFVEFJTFNfSEVBREVSKTtcblxuICByZXR1cm4ge1xuICAgIGNhdGVnb3J5OiByZXN1bHQuZD8uRGF0YT8uTWVyY2hhbnREZXRhaWxzPy5TZWN0b3JOYW1lIHx8IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWRkaXRpb25hbFR4c0luZm9JZk5lZWRlZCh0eHM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLCBzY3JhcGVyT3B0aW9uczogU2NyYXBlck9wdGlvbnMsIHBhZ2U6IFBhZ2UpOiBQcm9taXNlPFNjcmFwZWRUcmFuc2FjdGlvbltdPiB7XG4gIGlmICghc2NyYXBlck9wdGlvbnMuYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24pIHtcbiAgICByZXR1cm4gdHhzO1xuICB9XG4gIGNvbnN0IHByb21pc2VzID0gdHhzLm1hcChhc3luYyAoeCkgPT4gKHtcbiAgICAuLi54LFxuICAgIGFkZGl0aW9uYWxJbmZvOiBhd2FpdCBnZXRBZGRpdGlvbmFsVHhJbmZvKHgsIHBhZ2UpLFxuICB9KSBhcyBTY3JhcGVkVHJhbnNhY3Rpb24pO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQsIGFjY291bnROdW1iZXI6IHN0cmluZywgc2NyYXBlck9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZVZhbHVlID0gc3RhcnREYXRlLmZvcm1hdCgnTU0vWVlZWScpO1xuICBjb25zdCBkYXRlU2VsZWN0b3IgPSAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY2xuZHJEZWJpdERhdGVTY29wZV9UZXh0Qm94XCJdJztcbiAgY29uc3QgZGF0ZUhpZGRlbkZpZWxkU2VsZWN0b3IgPSAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY2xuZHJEZWJpdERhdGVTY29wZV9IaWRkZW5GaWVsZFwiXSc7XG4gIGNvbnN0IGJ1dHRvblNlbGVjdG9yID0gJ1tpZCQ9XCJGb3JtQXJlYU5vQm9yZGVyX0Zvcm1BcmVhX2N0bFN1Ym1pdFJlcXVlc3RcIl0nO1xuICBjb25zdCBuZXh0UGFnZVNlbGVjdG9yID0gJ1tpZCQ9XCJGb3JtQXJlYU5vQm9yZGVyX0Zvcm1BcmVhX2N0bEdyaWRQYWdlcl9idG5OZXh0XCJdJztcbiAgY29uc3QgYmlsbGluZ0xhYmVsU2VsZWN0b3IgPSAnW2lkJD1Gb3JtQXJlYU5vQm9yZGVyX0Zvcm1BcmVhX2N0bE1haW5Ub29sQmFyX2xibENhcHRpb25dJztcbiAgY29uc3Qgc2Vjb25kYXJ5QmlsbGluZ0xhYmVsU2VsZWN0b3IgPSAnW2lkJD1Gb3JtQXJlYU5vQm9yZGVyX0Zvcm1BcmVhX2N0bFNlY29uZGFyeVRvb2xCYXJfbGJsQ2FwdGlvbl0nO1xuICBjb25zdCBub0RhdGFTZWxlY3RvciA9ICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfbXNnYm94RXJyb3JNZXNzYWdlc10nO1xuXG4gIGRlYnVnKCdmaW5kIHRoZSBzdGFydCBkYXRlIGluZGV4IGluIHRoZSBkcm9wYm94Jyk7XG4gIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCAnW2lkJD1cIkZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY2xuZHJEZWJpdERhdGVTY29wZV9PcHRpb25MaXN0XCJdIGxpJywgW10sIChpdGVtcykgPT4ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGVsOiBhbnkpID0+IGVsLmlubmVyVGV4dCk7XG4gIH0pO1xuICBjb25zdCBzdGFydERhdGVJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbiA9PT0gc3RhcnREYXRlVmFsdWUpO1xuXG4gIGRlYnVnKGBzY3JhcGUgJHtvcHRpb25zLmxlbmd0aCAtIHN0YXJ0RGF0ZUluZGV4fSBiaWxsaW5nIGN5Y2xlc2ApO1xuICBjb25zdCBhY2NvdW50VHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdID0gW107XG4gIGZvciAobGV0IGN1cnJlbnREYXRlSW5kZXggPSBzdGFydERhdGVJbmRleDsgY3VycmVudERhdGVJbmRleCA8IG9wdGlvbnMubGVuZ3RoOyBjdXJyZW50RGF0ZUluZGV4ICs9IDEpIHtcbiAgICBkZWJ1Zygnd2FpdCBmb3IgZGF0ZSBzZWxlY3RvciB0byBiZSBmb3VuZCcpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBkYXRlU2VsZWN0b3IsIHRydWUpO1xuICAgIGRlYnVnKGBzZXQgaGlkZGVuIHZhbHVlIG9mIHRoZSBkYXRlIHNlbGVjdG9yIHRvIGJlIHRoZSBpbmRleCAke2N1cnJlbnREYXRlSW5kZXh9YCk7XG4gICAgYXdhaXQgc2V0VmFsdWUocGFnZSwgZGF0ZUhpZGRlbkZpZWxkU2VsZWN0b3IsIGAke2N1cnJlbnREYXRlSW5kZXh9YCk7XG4gICAgZGVidWcoJ3dhaXQgYSBzZWNvbmQgdG8gd29ya2Fyb3VuZCBuYXZpZ2F0aW9uIGlzc3VlIGluIGhlYWRsZXNzIGJyb3dzZXIgbW9kZScpO1xuICAgIGF3YWl0IHBhZ2Uud2FpdEZvclRpbWVvdXQoMTAwMCk7XG4gICAgZGVidWcoJ2NsaWNrIG9uIHRoZSBmaWx0ZXIgc3VibWl0IGJ1dHRvbiBhbmQgd2FpdCBmb3IgbmF2aWdhdGlvbicpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHBhZ2Uud2FpdEZvck5hdmlnYXRpb24oeyB3YWl0VW50aWw6ICdkb21jb250ZW50bG9hZGVkJyB9KSxcbiAgICAgIGNsaWNrQnV0dG9uKHBhZ2UsIGJ1dHRvblNlbGVjdG9yKSxcbiAgICBdKTtcbiAgICBkZWJ1ZygnY2hlY2sgaWYgbW9udGggaGFzIG5vIHRyYW5zYWN0aW9ucycpO1xuICAgIGNvbnN0IHBhZ2VIYXNOb1RyYW5zYWN0aW9ucyA9IGF3YWl0IHBhZ2VFdmFsKHBhZ2UsIG5vRGF0YVNlbGVjdG9yLCBmYWxzZSwgKChlbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBzaXRlVmFsdWUgPSAoKGVsZW1lbnQgYXMgSFRNTFNwYW5FbGVtZW50KS5pbm5lclRleHQgfHwgJycpLnJlcGxhY2UoL1teINeQLdeqXS9nLCAnJyk7XG4gICAgICByZXR1cm4gc2l0ZVZhbHVlID09PSAn15zXkCDXoNee16bXkNeVINeg16rXldeg15nXnSc7XG4gICAgfSkpO1xuXG4gICAgaWYgKHBhZ2VIYXNOb1RyYW5zYWN0aW9ucykge1xuICAgICAgZGVidWcoJ3BhZ2UgaGFzIG5vIHRyYW5zYWN0aW9ucycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZygnZmluZCB0aGUgYmlsbGluZyBkYXRlJyk7XG4gICAgICBsZXQgYmlsbGluZ0RhdGVMYWJlbCA9IGF3YWl0IHBhZ2VFdmFsKHBhZ2UsIGJpbGxpbmdMYWJlbFNlbGVjdG9yLCAnJywgKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiAoZWxlbWVudCBhcyBIVE1MU3BhbkVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICAgIH0pKTtcbiAgICAgIGxldCBzZXR0bGVtZW50RGF0ZVJlZ2V4ID0gL1xcZHsxLDJ9Wy9dXFxkezJ9Wy9dXFxkezIsNH0vO1xuXG4gICAgICBpZiAoYmlsbGluZ0RhdGVMYWJlbCA9PT0gJycpIHtcbiAgICAgICAgYmlsbGluZ0RhdGVMYWJlbCA9IGF3YWl0IHBhZ2VFdmFsKHBhZ2UsIHNlY29uZGFyeUJpbGxpbmdMYWJlbFNlbGVjdG9yLCAnJywgKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChlbGVtZW50IGFzIEhUTUxTcGFuRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgICAgICB9KSk7XG4gICAgICAgIHNldHRsZW1lbnREYXRlUmVnZXggPSAvXFxkezEsMn1bL11cXGR7Miw0fS87XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJpbGxpbmdEYXRlID0gc2V0dGxlbWVudERhdGVSZWdleC5leGVjKGJpbGxpbmdEYXRlTGFiZWwpPy5bMF07XG5cbiAgICAgIGlmICghYmlsbGluZ0RhdGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZmV0Y2ggcHJvY2VzcyBkYXRlJyk7XG4gICAgICB9XG5cbiAgICAgIGRlYnVnKGBmb3VuZCB0aGUgYmlsbGluZyBkYXRlIGZvciB0aGF0IG1vbnRoICR7YmlsbGluZ0RhdGV9YCk7XG4gICAgICBsZXQgaGFzTmV4dFBhZ2UgPSBmYWxzZTtcbiAgICAgIGRvIHtcbiAgICAgICAgZGVidWcoJ2ZldGNoIHJhdyB0cmFuc2FjdGlvbnMgZnJvbSBwYWdlJyk7XG4gICAgICAgIGNvbnN0IHJhd1RyYW5zYWN0aW9ucyA9IGF3YWl0IHBhZ2VFdmFsQWxsPChTY3JhcGVkVHJhbnNhY3Rpb24gfCBudWxsKVtdPihwYWdlLCAnI2N0bE1haW5HcmlkID4gdGJvZHkgdHIsICNjdGxTZWNvbmRhcnlHcmlkID4gdGJvZHkgdHInLCBbXSwgKGl0ZW1zLCBiaWxsaW5nRGF0ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiAoaXRlbXMpLm1hcCgoZWwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPSBlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGQnKTtcbiAgICAgICAgICAgIGNvbnN0IG9uY2xpY2sgPSBlbC5nZXRBdHRyaWJ1dGUoJ29uY2xpY2snKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gNikge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9uY2xpY2ssXG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogY29sdW1uc1swXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgZGF0ZTogY29sdW1uc1sxXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvbHVtbnNbMl0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsQW1vdW50OiBjb2x1bW5zWzNdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBjaGFyZ2VkQW1vdW50OiBjb2x1bW5zWzRdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBtZW1vOiBjb2x1bW5zWzVdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gNSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9uY2xpY2ssXG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogYmlsbGluZ0RhdGUsXG4gICAgICAgICAgICAgICAgZGF0ZTogY29sdW1uc1swXS5pbm5lclRleHQsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvbHVtbnNbMV0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsQW1vdW50OiBjb2x1bW5zWzJdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBjaGFyZ2VkQW1vdW50OiBjb2x1bW5zWzNdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgICBtZW1vOiBjb2x1bW5zWzRdLmlubmVyVGV4dCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBiaWxsaW5nRGF0ZSk7XG4gICAgICAgIGRlYnVnKGBmZXRjaGVkICR7cmF3VHJhbnNhY3Rpb25zLmxlbmd0aH0gcmF3IHRyYW5zYWN0aW9ucyBmcm9tIHBhZ2VgKTtcbiAgICAgICAgY29uc3QgZXhpc3RzVHhzID0gKHJhd1RyYW5zYWN0aW9ucyBhcyBTY3JhcGVkVHJhbnNhY3Rpb25bXSlcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pO1xuICAgICAgICBjb25zdCBmdWxsU2NyYXBwZWRUeHMgPSBhd2FpdCBnZXRBZGRpdGlvbmFsVHhzSW5mb0lmTmVlZGVkKGV4aXN0c1R4cywgc2NyYXBlck9wdGlvbnMsIHBhZ2UpO1xuXG4gICAgICAgIGFjY291bnRUcmFuc2FjdGlvbnMucHVzaCguLi5jb252ZXJ0VHJhbnNhY3Rpb25zKGZ1bGxTY3JhcHBlZFR4cykpO1xuXG4gICAgICAgIGRlYnVnKCdjaGVjayBmb3IgZXhpc3RlbmNlIG9mIGFub3RoZXIgcGFnZScpO1xuICAgICAgICBoYXNOZXh0UGFnZSA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIG5leHRQYWdlU2VsZWN0b3IpO1xuICAgICAgICBpZiAoaGFzTmV4dFBhZ2UpIHtcbiAgICAgICAgICBkZWJ1ZygnaGFzIGFub3RoZXIgcGFnZSwgY2xpY2sgb24gYnV0dG9uIG5leHQgYW5kIHdhaXQgZm9yIHBhZ2UgbmF2aWdhdGlvbicpO1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHBhZ2Uud2FpdEZvck5hdmlnYXRpb24oeyB3YWl0VW50aWw6ICdkb21jb250ZW50bG9hZGVkJyB9KSxcbiAgICAgICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICdbaWQkPUZvcm1BcmVhTm9Cb3JkZXJfRm9ybUFyZWFfY3RsR3JpZFBhZ2VyX2J0bk5leHRdJyksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKGhhc05leHRQYWdlKTtcbiAgICB9XG4gIH1cblxuICBkZWJ1ZygnZmlsZXIgb3V0IG9sZCB0cmFuc2FjdGlvbnMnKTtcbiAgY29uc3QgdHhucyA9IChzY3JhcGVyT3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkgP1xuICAgIGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhY2NvdW50VHJhbnNhY3Rpb25zLCBzdGFydERhdGUsIHNjcmFwZXJPcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UpIDpcbiAgICBhY2NvdW50VHJhbnNhY3Rpb25zO1xuICBkZWJ1ZyhgZm91bmQgJHt0eG5zLmxlbmd0aH0gdmFsaWQgdHJhbnNhY3Rpb25zIG91dCBvZiAke2FjY291bnRUcmFuc2FjdGlvbnMubGVuZ3RofSB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgZW5kaW5nIHdpdGggJHthY2NvdW50TnVtYmVyLnN1YnN0cmluZyhhY2NvdW50TnVtYmVyLmxlbmd0aCAtIDIpfWApO1xuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgdHhucyxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudE51bWJlcnMocGFnZTogUGFnZSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgcmV0dXJuIHBhZ2VFdmFsQWxsKHBhZ2UsICdbaWQkPWxua0l0ZW1dJywgW10sIChlbGVtZW50cykgPT4gZWxlbWVudHMubWFwKChlKSA9PiAoZSBhcyBIVE1MQW5jaG9yRWxlbWVudCkudGV4dCkpLnRoZW4oKHJlcykgPT4gcmVzLm1hcCgodGV4dCkgPT4gL1xcZCskLy5leGVjKHRleHQudHJpbSgpKT8uWzBdID8/ICcnKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldEFjY291bnQocGFnZTogUGFnZSwgYWNjb3VudDogc3RyaW5nKSB7XG4gIGF3YWl0IHBhZ2VFdmFsQWxsKFxuICAgIHBhZ2UsXG4gICAgJ1tpZCQ9bG5rSXRlbV0nLFxuICAgIG51bGwsXG4gICAgKGVsZW1lbnRzLCBhY2NvdW50KSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW0gb2YgZWxlbWVudHMpIHtcbiAgICAgICAgY29uc3QgYSA9IGVsZW0gYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgICAgIGlmIChhLnRleHQuaW5jbHVkZXMoYWNjb3VudCkpIHtcbiAgICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFjY291bnQsXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50LCBzY3JhcGVyT3B0aW9uczogU2NyYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnRbXT4ge1xuICBjb25zdCBhY2NvdW50TnVtYmVyczogc3RyaW5nW10gPSBhd2FpdCBnZXRBY2NvdW50TnVtYmVycyhwYWdlKTtcbiAgY29uc3QgYWNjb3VudHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYWNjb3VudCBvZiBhY2NvdW50TnVtYmVycykge1xuICAgIGRlYnVnKGBzZXR0aW5nIGFjY291bnQ6ICR7YWNjb3VudH1gKTtcbiAgICBhd2FpdCBzZXRBY2NvdW50KHBhZ2UsIGFjY291bnQpO1xuICAgIGF3YWl0IHBhZ2Uud2FpdEZvclRpbWVvdXQoMTAwMCk7XG4gICAgYWNjb3VudHMucHVzaChcbiAgICAgIGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudChcbiAgICAgICAgcGFnZSxcbiAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICBhY2NvdW50LFxuICAgICAgICBzY3JhcGVyT3B0aW9ucyxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhY2NvdW50cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hGdXR1cmVEZWJpdHMocGFnZTogUGFnZSkge1xuICBjb25zdCBmdXR1cmVEZWJpdHNTZWxlY3RvciA9ICcuaG9tZXBhZ2UtYmFua3MtdG9wJztcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCBmdXR1cmVEZWJpdHNTZWxlY3RvciwgW10sIChpdGVtcykgPT4ge1xuICAgIGNvbnN0IGRlYml0TW91bnRDbGFzcyA9ICdhbW91bnQnO1xuICAgIGNvbnN0IGRlYml0V2hlbkNoYXJnZUNsYXNzID0gJ3doZW4tY2hhcmdlJztcbiAgICBjb25zdCBkZWJpdEJhbmtOdW1iZXJDbGFzcyA9ICdiYW5rRGVzYyc7XG5cbiAgICByZXR1cm4gaXRlbXMubWFwKChjdXJyQmFua0VsOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGFtb3VudCA9IGN1cnJCYW5rRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShkZWJpdE1vdW50Q2xhc3MpWzBdLmlubmVyVGV4dDtcbiAgICAgIGNvbnN0IHdoZW5DaGFyZ2UgPSBjdXJyQmFua0VsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZGViaXRXaGVuQ2hhcmdlQ2xhc3MpWzBdLmlubmVyVGV4dDtcbiAgICAgIGNvbnN0IGJhbmtOdW1iZXIgPSBjdXJyQmFua0VsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZGViaXRCYW5rTnVtYmVyQ2xhc3MpWzBdLmlubmVyVGV4dDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgd2hlbkNoYXJnZSxcbiAgICAgICAgYmFua051bWJlcixcbiAgICAgIH07XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBmdXR1cmVEZWJpdHMgPSByZXN1bHQubWFwKChpdGVtKSA9PiB7XG4gICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEFtb3VudERhdGEoaXRlbS5hbW91bnQpO1xuICAgIGNvbnN0IGNoYXJnZURhdGUgPSAvXFxkezEsMn1bL11cXGR7Mn1bL11cXGR7Miw0fS8uZXhlYyhpdGVtLndoZW5DaGFyZ2UpPy5bMF07XG4gICAgY29uc3QgYmFua0FjY291bnROdW1iZXIgPSAvXFxkKy1cXGQrLy5leGVjKGl0ZW0uYmFua051bWJlcik/LlswXTtcbiAgICByZXR1cm4ge1xuICAgICAgYW1vdW50OiBhbW91bnREYXRhLmFtb3VudCxcbiAgICAgIGFtb3VudEN1cnJlbmN5OiBhbW91bnREYXRhLmN1cnJlbmN5LFxuICAgICAgY2hhcmdlRGF0ZSxcbiAgICAgIGJhbmtBY2NvdW50TnVtYmVyLFxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gZnV0dXJlRGViaXRzO1xufVxuXG5jbGFzcyBWaXNhQ2FsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7TE9HSU5fVVJMfWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0nLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nKSxcbiAgICAgIHByZUFjdGlvbjogdGhpcy5vcGVuTG9naW5Qb3B1cCxcbiAgICAgIHVzZXJBZ2VudDogJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc4LjAuMzkwNC4xMDggU2FmYXJpLzUzNy4zNicsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gICAgZGVidWcoYGZldGNoIHRyYW5zYWN0aW9ucyBzdGFydGluZyAke3N0YXJ0TW9tZW50LmZvcm1hdCgpfWApO1xuXG4gICAgZGVidWcoJ2ZldGNoIGZ1dHVyZSBkZWJpdHMnKTtcbiAgICBjb25zdCBmdXR1cmVEZWJpdHMgPSBhd2FpdCBmZXRjaEZ1dHVyZURlYml0cyh0aGlzLnBhZ2UpO1xuXG4gICAgZGVidWcoJ25hdmlnYXRlIHRvIHRyYW5zYWN0aW9ucyBwYWdlJyk7XG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKFRSQU5TQUNUSU9OU19VUkwsIHVuZGVmaW5lZCwgNjAwMDApO1xuXG4gICAgZGVidWcoJ2ZldGNoIGFjY291bnRzIHRyYW5zYWN0aW9ucycpO1xuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCBzdGFydE1vbWVudCwgdGhpcy5vcHRpb25zKTtcblxuICAgIGRlYnVnKCdyZXR1cm4gdGhlIHNjcmFwZWQgYWNjb3VudHMnKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgICAgZnV0dXJlRGViaXRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzYUNhbFNjcmFwZXI7XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "israeli-bank-scrapers",
3
- "version": "3.4.0",
3
+ "version": "3.6.0",
4
4
  "private": false,
5
5
  "description": "Provide scrapers for all major Israeli banks and credit card companies",
6
6
  "engines": {
@@ -76,7 +76,7 @@
76
76
  "rimraf": "^3.0.0",
77
77
  "source-map-support": "^0.5.16",
78
78
  "ts-jest": "^25.3.0",
79
- "typescript": "^3.8.3"
79
+ "typescript": "^3.9.10"
80
80
  },
81
81
  "dependencies": {
82
82
  "build-url": "^2.0.0",