israeli-bank-scrapers 3.4.1 → 3.7.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.
Files changed (58) hide show
  1. package/README.md +42 -0
  2. package/lib/definitions.d.ts +6 -1
  3. package/lib/definitions.js +6 -1
  4. package/lib/helpers/fetch.d.ts +2 -1
  5. package/lib/helpers/fetch.js +26 -9
  6. package/lib/helpers/storage.d.ts +2 -0
  7. package/lib/helpers/storage.js +17 -0
  8. package/lib/index.d.ts +2 -1
  9. package/lib/index.js +47 -3
  10. package/lib/scrapers/amex.d.ts +1 -1
  11. package/lib/scrapers/amex.js +1 -1
  12. package/lib/scrapers/amex.test.js +3 -2
  13. package/lib/scrapers/base-beinleumi-group.d.ts +7 -4
  14. package/lib/scrapers/base-beinleumi-group.js +1 -1
  15. package/lib/scrapers/base-isracard-amex.d.ts +8 -3
  16. package/lib/scrapers/base-isracard-amex.js +13 -11
  17. package/lib/scrapers/base-scraper-with-browser.d.ts +6 -3
  18. package/lib/scrapers/base-scraper-with-browser.js +14 -11
  19. package/lib/scrapers/base-scraper.d.ts +9 -119
  20. package/lib/scrapers/base-scraper.js +34 -50
  21. package/lib/scrapers/beyahad-bishvilha.d.ts +6 -3
  22. package/lib/scrapers/beyahad-bishvilha.js +1 -1
  23. package/lib/scrapers/discount.d.ts +9 -4
  24. package/lib/scrapers/discount.js +4 -4
  25. package/lib/scrapers/discount.test.js +4 -3
  26. package/lib/scrapers/errors.d.ts +16 -0
  27. package/lib/scrapers/errors.js +37 -0
  28. package/lib/scrapers/factory.d.ts +2 -16
  29. package/lib/scrapers/factory.js +6 -1
  30. package/lib/scrapers/hapoalim.d.ts +6 -3
  31. package/lib/scrapers/hapoalim.js +1 -1
  32. package/lib/scrapers/hapoalim.test.js +2 -2
  33. package/lib/scrapers/interface.d.ts +146 -0
  34. package/lib/scrapers/interface.js +2 -0
  35. package/lib/scrapers/isracard.d.ts +1 -1
  36. package/lib/scrapers/isracard.js +1 -1
  37. package/lib/scrapers/isracard.test.js +4 -3
  38. package/lib/scrapers/leumi.d.ts +8 -4
  39. package/lib/scrapers/leumi.js +1 -1
  40. package/lib/scrapers/max.d.ts +6 -3
  41. package/lib/scrapers/max.js +1 -1
  42. package/lib/scrapers/mizrahi.d.ts +7 -3
  43. package/lib/scrapers/mizrahi.js +11 -9
  44. package/lib/scrapers/one-zero-queries.d.ts +2 -0
  45. package/lib/scrapers/one-zero-queries.js +562 -0
  46. package/lib/scrapers/one-zero.d.ts +36 -0
  47. package/lib/scrapers/one-zero.js +304 -0
  48. package/lib/scrapers/one-zero.test.d.ts +1 -0
  49. package/lib/scrapers/one-zero.test.js +67 -0
  50. package/lib/scrapers/otsar-hahayal.d.ts +6 -3
  51. package/lib/scrapers/otsar-hahayal.js +1 -1
  52. package/lib/scrapers/union-bank.d.ts +6 -3
  53. package/lib/scrapers/union-bank.js +1 -1
  54. package/lib/scrapers/visa-cal.d.ts +103 -15
  55. package/lib/scrapers/visa-cal.js +154 -265
  56. package/lib/scrapers/yahav.d.ts +7 -3
  57. package/lib/scrapers/yahav.js +1 -1
  58. package/package.json +2 -2
package/README.md CHANGED
@@ -29,6 +29,7 @@ Currently only the following banks are supported:
29
29
  - Massad
30
30
  - Yahav (Thanks to [@gczobel](https://github.com/gczobel))
31
31
  - Beyhad Bishvilha - [ביחד בשבילך](https://www.hist.org.il/) (thanks [@esakal](https://github.com/esakal))
32
+ - OneZero (Experimental) (thanks [@orzarchi](https://github.com/orzarchi))
32
33
 
33
34
  # Prerequisites
34
35
  To use this you will need to have [Node.js](https://nodejs.org) >= 10.x installed.
@@ -127,6 +128,47 @@ The return value is a list of scraper metadata:
127
128
  }
128
129
  ```
129
130
 
131
+ ## Two-Factor Authentication Scrapers
132
+ Some companies require two-factor authentication, and as such the scraper cannot be fully automated. When using the relevant scrapers, you have two options:
133
+ 1. Provide an async callback that knows how to retrieve real time secrets like OTP codes.
134
+ 2. When supported by the scraper - provide a "long term token". These are usually available if the financial provider only requires Two-Factor authentication periodically, and not on every login. You can retrieve your long term token from the relevant credit/banking app using reverse engineering and a MITM proxy, or use helper functions that are provided by some Two-Factor Auth scrapers (e.g. OneZero).
135
+
136
+
137
+ ```node
138
+ import { CompanyTypes, createScraper } from 'israeli-bank-scrapers';
139
+ import { prompt } from 'enquirer';
140
+
141
+ // Option 1 - Provide a callback
142
+
143
+ const result = await scraper.login({
144
+ email: relevantAccount.credentials.email,
145
+ password: relevantAccount.credentials.password,
146
+ phoneNumber,
147
+ otpCodeRetriever: async () => {
148
+ let otpCode;
149
+ while (!otpCode) {
150
+ otpCode = await questions('OTP Code?');
151
+ }
152
+
153
+ return otpCode[0];
154
+ }
155
+ });
156
+
157
+ // Option 2 - Retrieve a long term otp token (OneZero)
158
+ await scraper.triggerTwoFactorAuth(phoneNumber);
159
+
160
+ // OTP is sent, retrieve it somehow
161
+ const otpCode='...';
162
+
163
+ const result = scraper.getLongTermTwoFactorToken(otpCode);
164
+ /*
165
+ result = {
166
+ success: true;
167
+ longTermTwoFactorAuthToken: 'eyJraWQiOiJiNzU3OGM5Yy0wM2YyLTRkMzktYjBm...';
168
+ }
169
+ */
170
+ ```
171
+
130
172
  # Getting deployed version of latest changes in master
131
173
  This library is deployed automatically to NPM with any change merged into the master branch.
132
174
 
@@ -15,7 +15,8 @@ export declare enum CompanyTypes {
15
15
  leumi = "leumi",
16
16
  massad = "massad",
17
17
  yahav = "yahav",
18
- beyahadBishvilha = "beyahadBishvilha"
18
+ beyahadBishvilha = "beyahadBishvilha",
19
+ oneZero = "oneZero"
19
20
  }
20
21
  export declare const SCRAPERS: {
21
22
  hapoalim: {
@@ -82,4 +83,8 @@ export declare const SCRAPERS: {
82
83
  name: string;
83
84
  loginFields: string[];
84
85
  };
86
+ oneZero: {
87
+ name: string;
88
+ loginFields: string[];
89
+ };
85
90
  };
@@ -27,6 +27,7 @@ exports.CompanyTypes = CompanyTypes;
27
27
  CompanyTypes["massad"] = "massad";
28
28
  CompanyTypes["yahav"] = "yahav";
29
29
  CompanyTypes["beyahadBishvilha"] = "beyahadBishvilha";
30
+ CompanyTypes["oneZero"] = "oneZero";
30
31
  })(CompanyTypes || (exports.CompanyTypes = CompanyTypes = {}));
31
32
 
32
33
  const SCRAPERS = {
@@ -95,7 +96,11 @@ const SCRAPERS = {
95
96
  [CompanyTypes.beyahadBishvilha]: {
96
97
  name: 'Beyahad Bishvilha',
97
98
  loginFields: ['id', PASSWORD_FIELD]
99
+ },
100
+ [CompanyTypes.oneZero]: {
101
+ name: 'One Zero',
102
+ loginFields: ['email', PASSWORD_FIELD, 'otpCodeRetriever', 'phoneNumber', 'otpLongTermToken']
98
103
  }
99
104
  };
100
105
  exports.SCRAPERS = SCRAPERS;
101
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9ucy50cyJdLCJuYW1lcyI6WyJQQVNTV09SRF9GSUVMRCIsIkNvbXBhbnlUeXBlcyIsIlNDUkFQRVJTIiwiaGFwb2FsaW0iLCJuYW1lIiwibG9naW5GaWVsZHMiLCJoYXBvYWxpbUJlT25saW5lIiwibGV1bWkiLCJtaXpyYWhpIiwiZGlzY291bnQiLCJvdHNhckhhaGF5YWwiLCJsZXVtaUNhcmQiLCJtYXgiLCJ2aXNhQ2FsIiwiaXNyYWNhcmQiLCJhbWV4IiwidW5pb24iLCJiZWlubGV1bWkiLCJtYXNzYWQiLCJ5YWhhdiIsImJleWFoYWRCaXNodmlsaGEiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBRU8sTUFBTUEsY0FBYyxHQUFHLFVBQXZCOztJQUVLQyxZOzs7V0FBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0dBQUFBLFksNEJBQUFBLFk7O0FBbUJMLE1BQU1DLFFBQVEsR0FBRztBQUN0QixHQUFDRCxZQUFZLENBQUNFLFFBQWQsR0FBeUI7QUFDdkJDLElBQUFBLElBQUksRUFBRSxlQURpQjtBQUV2QkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRlUsR0FESDtBQUt0QixHQUFDQyxZQUFZLENBQUNLLGdCQUFkLEdBQWlDO0FBQUU7QUFDakNGLElBQUFBLElBQUksRUFBRSxlQUR5QjtBQUUvQkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRmtCLEdBTFg7QUFTdEIsR0FBQ0MsWUFBWSxDQUFDTSxLQUFkLEdBQXNCO0FBQ3BCSCxJQUFBQSxJQUFJLEVBQUUsWUFEYztBQUVwQkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRk8sR0FUQTtBQWF0QixHQUFDQyxZQUFZLENBQUNPLE9BQWQsR0FBd0I7QUFDdEJKLElBQUFBLElBQUksRUFBRSxjQURnQjtBQUV0QkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRlMsR0FiRjtBQWlCdEIsR0FBQ0MsWUFBWSxDQUFDUSxRQUFkLEdBQXlCO0FBQ3ZCTCxJQUFBQSxJQUFJLEVBQUUsZUFEaUI7QUFFdkJDLElBQUFBLFdBQVcsRUFBRSxDQUFDLElBQUQsRUFBT0wsY0FBUCxFQUF1QixLQUF2QjtBQUZVLEdBakJIO0FBcUJ0QixHQUFDQyxZQUFZLENBQUNTLFlBQWQsR0FBNkI7QUFDM0JOLElBQUFBLElBQUksRUFBRSxvQkFEcUI7QUFFM0JDLElBQUFBLFdBQVcsRUFBRSxDQUFDLFVBQUQsRUFBYUwsY0FBYjtBQUZjLEdBckJQO0FBeUJ0QixHQUFDQyxZQUFZLENBQUNVLFNBQWQsR0FBMEI7QUFBRTtBQUMxQlAsSUFBQUEsSUFBSSxFQUFFLFlBRGtCO0FBRXhCQyxJQUFBQSxXQUFXLEVBQUUsQ0FBQyxVQUFELEVBQWFMLGNBQWI7QUFGVyxHQXpCSjtBQTZCdEIsR0FBQ0MsWUFBWSxDQUFDVyxHQUFkLEdBQW9CO0FBQ2xCUixJQUFBQSxJQUFJLEVBQUUsS0FEWTtBQUVsQkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRkssR0E3QkU7QUFpQ3RCLEdBQUNDLFlBQVksQ0FBQ1ksT0FBZCxHQUF3QjtBQUN0QlQsSUFBQUEsSUFBSSxFQUFFLFVBRGdCO0FBRXRCQyxJQUFBQSxXQUFXLEVBQUUsQ0FBQyxVQUFELEVBQWFMLGNBQWI7QUFGUyxHQWpDRjtBQXFDdEIsR0FBQ0MsWUFBWSxDQUFDYSxRQUFkLEdBQXlCO0FBQ3ZCVixJQUFBQSxJQUFJLEVBQUUsVUFEaUI7QUFFdkJDLElBQUFBLFdBQVcsRUFBRSxDQUFDLElBQUQsRUFBTyxhQUFQLEVBQXNCTCxjQUF0QjtBQUZVLEdBckNIO0FBeUN0QixHQUFDQyxZQUFZLENBQUNjLElBQWQsR0FBcUI7QUFDbkJYLElBQUFBLElBQUksRUFBRSxNQURhO0FBRW5CQyxJQUFBQSxXQUFXLEVBQUUsQ0FBQyxJQUFELEVBQU8sYUFBUCxFQUFzQkwsY0FBdEI7QUFGTSxHQXpDQztBQTZDdEIsR0FBQ0MsWUFBWSxDQUFDZSxLQUFkLEdBQXNCO0FBQ3BCWixJQUFBQSxJQUFJLEVBQUUsT0FEYztBQUVwQkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRk8sR0E3Q0E7QUFpRHRCLEdBQUNDLFlBQVksQ0FBQ2dCLFNBQWQsR0FBMEI7QUFDeEJiLElBQUFBLElBQUksRUFBRSxXQURrQjtBQUV4QkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRlcsR0FqREo7QUFxRHRCLEdBQUNDLFlBQVksQ0FBQ2lCLE1BQWQsR0FBdUI7QUFDckJkLElBQUFBLElBQUksRUFBRSxRQURlO0FBRXJCQyxJQUFBQSxXQUFXLEVBQUUsQ0FBQyxVQUFELEVBQWFMLGNBQWI7QUFGUSxHQXJERDtBQXlEdEIsR0FBQ0MsWUFBWSxDQUFDa0IsS0FBZCxHQUFzQjtBQUNwQmYsSUFBQUEsSUFBSSxFQUFFLFlBRGM7QUFFcEJDLElBQUFBLFdBQVcsRUFBRSxDQUFDLFVBQUQsRUFBYSxZQUFiLEVBQTJCTCxjQUEzQjtBQUZPLEdBekRBO0FBNkR0QixHQUFDQyxZQUFZLENBQUNtQixnQkFBZCxHQUFpQztBQUMvQmhCLElBQUFBLElBQUksRUFBRSxtQkFEeUI7QUFFL0JDLElBQUFBLFdBQVcsRUFBRSxDQUFDLElBQUQsRUFBT0wsY0FBUDtBQUZrQjtBQTdEWCxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIE5PVElDRTogYXZvaWQgY2hhbmdpbmcgZXhwb3J0ZWQga2V5cyBhcyB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBwdWJsaWMgYXBpXG5cbmV4cG9ydCBjb25zdCBQQVNTV09SRF9GSUVMRCA9ICdwYXNzd29yZCc7XG5cbmV4cG9ydCBlbnVtIENvbXBhbnlUeXBlcyB7XG4gIGhhcG9hbGltID0gJ2hhcG9hbGltJyxcbiAgaGFwb2FsaW1CZU9ubGluZSA9ICdoYXBvYWxpbUJlT25saW5lJyxcbiAgYmVpbmxldW1pID0gJ2JlaW5sZXVtaScsXG4gIHVuaW9uID0gJ3VuaW9uJyxcbiAgYW1leCA9ICdhbWV4JyxcbiAgaXNyYWNhcmQgPSAnaXNyYWNhcmQnLFxuICB2aXNhQ2FsID0gJ3Zpc2FDYWwnLFxuICBtYXggPSAnbWF4JyxcbiAgbGV1bWlDYXJkID0gJ2xldW1pQ2FyZCcsXG4gIG90c2FySGFoYXlhbCA9ICdvdHNhckhhaGF5YWwnLFxuICBkaXNjb3VudCA9ICdkaXNjb3VudCcsXG4gIG1penJhaGkgPSAnbWl6cmFoaScsXG4gIGxldW1pID0gJ2xldW1pJyxcbiAgbWFzc2FkID0gJ21hc3NhZCcsXG4gIHlhaGF2ID0gJ3lhaGF2JyxcbiAgYmV5YWhhZEJpc2h2aWxoYSA9ICdiZXlhaGFkQmlzaHZpbGhhJ1xufVxuXG5leHBvcnQgY29uc3QgU0NSQVBFUlMgPSB7XG4gIFtDb21wYW55VHlwZXMuaGFwb2FsaW1dOiB7XG4gICAgbmFtZTogJ0JhbmsgSGFwb2FsaW0nLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJDb2RlJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLmhhcG9hbGltQmVPbmxpbmVdOiB7IC8vIFRPRE8gcmVtb3ZlIGluIE1ham9yIHZlcnNpb25cbiAgICBuYW1lOiAnQmFuayBIYXBvYWxpbScsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlckNvZGUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMubGV1bWldOiB7XG4gICAgbmFtZTogJ0JhbmsgTGV1bWknLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm1penJhaGldOiB7XG4gICAgbmFtZTogJ01penJhaGkgQmFuaycsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuZGlzY291bnRdOiB7XG4gICAgbmFtZTogJ0Rpc2NvdW50IEJhbmsnLFxuICAgIGxvZ2luRmllbGRzOiBbJ2lkJywgUEFTU1dPUkRfRklFTEQsICdudW0nXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5vdHNhckhhaGF5YWxdOiB7XG4gICAgbmFtZTogJ0JhbmsgT3RzYXIgSGFoYXlhbCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMubGV1bWlDYXJkXTogeyAvLyBUT0RPIHJlbW92ZSBpbiBNYWpvciB2ZXJzaW9uXG4gICAgbmFtZTogJ0xldW1pIENhcmQnLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm1heF06IHtcbiAgICBuYW1lOiAnTWF4JyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy52aXNhQ2FsXToge1xuICAgIG5hbWU6ICdWaXNhIENhbCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuaXNyYWNhcmRdOiB7XG4gICAgbmFtZTogJ0lzcmFjYXJkJyxcbiAgICBsb2dpbkZpZWxkczogWydpZCcsICdjYXJkNkRpZ2l0cycsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5hbWV4XToge1xuICAgIG5hbWU6ICdBbWV4JyxcbiAgICBsb2dpbkZpZWxkczogWydpZCcsICdjYXJkNkRpZ2l0cycsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy51bmlvbl06IHtcbiAgICBuYW1lOiAnVW5pb24nLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLmJlaW5sZXVtaV06IHtcbiAgICBuYW1lOiAnQmVpbmxldW1pJyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5tYXNzYWRdOiB7XG4gICAgbmFtZTogJ01hc3NhZCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMueWFoYXZdOiB7XG4gICAgbmFtZTogJ0JhbmsgWWFoYXYnLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgJ25hdGlvbmFsSUQnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuYmV5YWhhZEJpc2h2aWxoYV06IHtcbiAgICBuYW1lOiAnQmV5YWhhZCBCaXNodmlsaGEnLFxuICAgIGxvZ2luRmllbGRzOiBbJ2lkJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxufTtcbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9ucy50cyJdLCJuYW1lcyI6WyJQQVNTV09SRF9GSUVMRCIsIkNvbXBhbnlUeXBlcyIsIlNDUkFQRVJTIiwiaGFwb2FsaW0iLCJuYW1lIiwibG9naW5GaWVsZHMiLCJoYXBvYWxpbUJlT25saW5lIiwibGV1bWkiLCJtaXpyYWhpIiwiZGlzY291bnQiLCJvdHNhckhhaGF5YWwiLCJsZXVtaUNhcmQiLCJtYXgiLCJ2aXNhQ2FsIiwiaXNyYWNhcmQiLCJhbWV4IiwidW5pb24iLCJiZWlubGV1bWkiLCJtYXNzYWQiLCJ5YWhhdiIsImJleWFoYWRCaXNodmlsaGEiLCJvbmVaZXJvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUVPLE1BQU1BLGNBQWMsR0FBRyxVQUF2Qjs7SUFFS0MsWTs7O1dBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0dBQUFBLFksNEJBQUFBLFk7O0FBb0JMLE1BQU1DLFFBQVEsR0FBRztBQUN0QixHQUFDRCxZQUFZLENBQUNFLFFBQWQsR0FBeUI7QUFDdkJDLElBQUFBLElBQUksRUFBRSxlQURpQjtBQUV2QkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRlUsR0FESDtBQUt0QixHQUFDQyxZQUFZLENBQUNLLGdCQUFkLEdBQWlDO0FBQUU7QUFDakNGLElBQUFBLElBQUksRUFBRSxlQUR5QjtBQUUvQkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRmtCLEdBTFg7QUFT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QUFFLENBQUMsT0FBRCxFQUFVTCxjQUFWLEVBQTBCLGtCQUExQixFQUE4QyxhQUE5QyxFQUE2RCxrQkFBN0Q7QUFGUztBQWpFRixDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIE5PVElDRTogYXZvaWQgY2hhbmdpbmcgZXhwb3J0ZWQga2V5cyBhcyB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBwdWJsaWMgYXBpXG5cbmV4cG9ydCBjb25zdCBQQVNTV09SRF9GSUVMRCA9ICdwYXNzd29yZCc7XG5cbmV4cG9ydCBlbnVtIENvbXBhbnlUeXBlcyB7XG4gIGhhcG9hbGltID0gJ2hhcG9hbGltJyxcbiAgaGFwb2FsaW1CZU9ubGluZSA9ICdoYXBvYWxpbUJlT25saW5lJyxcbiAgYmVpbmxldW1pID0gJ2JlaW5sZXVtaScsXG4gIHVuaW9uID0gJ3VuaW9uJyxcbiAgYW1leCA9ICdhbWV4JyxcbiAgaXNyYWNhcmQgPSAnaXNyYWNhcmQnLFxuICB2aXNhQ2FsID0gJ3Zpc2FDYWwnLFxuICBtYXggPSAnbWF4JyxcbiAgbGV1bWlDYXJkID0gJ2xldW1pQ2FyZCcsXG4gIG90c2FySGFoYXlhbCA9ICdvdHNhckhhaGF5YWwnLFxuICBkaXNjb3VudCA9ICdkaXNjb3VudCcsXG4gIG1penJhaGkgPSAnbWl6cmFoaScsXG4gIGxldW1pID0gJ2xldW1pJyxcbiAgbWFzc2FkID0gJ21hc3NhZCcsXG4gIHlhaGF2ID0gJ3lhaGF2JyxcbiAgYmV5YWhhZEJpc2h2aWxoYSA9ICdiZXlhaGFkQmlzaHZpbGhhJyxcbiAgb25lWmVybyA9ICdvbmVaZXJvJ1xufVxuXG5leHBvcnQgY29uc3QgU0NSQVBFUlMgPSB7XG4gIFtDb21wYW55VHlwZXMuaGFwb2FsaW1dOiB7XG4gICAgbmFtZTogJ0JhbmsgSGFwb2FsaW0nLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJDb2RlJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLmhhcG9hbGltQmVPbmxpbmVdOiB7IC8vIFRPRE8gcmVtb3ZlIGluIE1ham9yIHZlcnNpb25cbiAgICBuYW1lOiAnQmFuayBIYXBvYWxpbScsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlckNvZGUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMubGV1bWldOiB7XG4gICAgbmFtZTogJ0JhbmsgTGV1bWknLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm1penJhaGldOiB7XG4gICAgbmFtZTogJ01penJhaGkgQmFuaycsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuZGlzY291bnRdOiB7XG4gICAgbmFtZTogJ0Rpc2NvdW50IEJhbmsnLFxuICAgIGxvZ2luRmllbGRzOiBbJ2lkJywgUEFTU1dPUkRfRklFTEQsICdudW0nXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5vdHNhckhhaGF5YWxdOiB7XG4gICAgbmFtZTogJ0JhbmsgT3RzYXIgSGFoYXlhbCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMubGV1bWlDYXJkXTogeyAvLyBUT0RPIHJlbW92ZSBpbiBNYWpvciB2ZXJzaW9uXG4gICAgbmFtZTogJ0xldW1pIENhcmQnLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm1heF06IHtcbiAgICBuYW1lOiAnTWF4JyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy52aXNhQ2FsXToge1xuICAgIG5hbWU6ICdWaXNhIENhbCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuaXNyYWNhcmRdOiB7XG4gICAgbmFtZTogJ0lzcmFjYXJkJyxcbiAgICBsb2dpbkZpZWxkczogWydpZCcsICdjYXJkNkRpZ2l0cycsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5hbWV4XToge1xuICAgIG5hbWU6ICdBbWV4JyxcbiAgICBsb2dpbkZpZWxkczogWydpZCcsICdjYXJkNkRpZ2l0cycsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy51bmlvbl06IHtcbiAgICBuYW1lOiAnVW5pb24nLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLmJlaW5sZXVtaV06IHtcbiAgICBuYW1lOiAnQmVpbmxldW1pJyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5tYXNzYWRdOiB7XG4gICAgbmFtZTogJ01hc3NhZCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMueWFoYXZdOiB7XG4gICAgbmFtZTogJ0JhbmsgWWFoYXYnLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgJ25hdGlvbmFsSUQnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuYmV5YWhhZEJpc2h2aWxoYV06IHtcbiAgICBuYW1lOiAnQmV5YWhhZCBCaXNodmlsaGEnLFxuICAgIGxvZ2luRmllbGRzOiBbJ2lkJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm9uZVplcm9dOiB7XG4gICAgbmFtZTogJ09uZSBaZXJvJyxcbiAgICBsb2dpbkZpZWxkczogWydlbWFpbCcsIFBBU1NXT1JEX0ZJRUxELCAnb3RwQ29kZVJldHJpZXZlcicsICdwaG9uZU51bWJlcicsICdvdHBMb25nVGVybVRva2VuJ10sXG4gIH0sXG59O1xuIl19
@@ -1,5 +1,6 @@
1
1
  import { Page } from 'puppeteer';
2
2
  export declare function fetchGet<TResult>(url: string, extraHeaders: Record<string, any>): Promise<TResult>;
3
- export declare function fetchPost(url: string, data: Record<string, any>, extraHeaders: Record<string, any>): Promise<any>;
3
+ export declare function fetchPost(url: string, data: Record<string, any>, extraHeaders?: Record<string, any>): Promise<any>;
4
+ export declare function fetchGraphql<TResult>(url: string, query: string, variables?: Record<string, unknown>, extraHeaders?: Record<string, any>): Promise<TResult>;
4
5
  export declare function fetchGetWithinPage<TResult>(page: Page, url: string): Promise<TResult | null>;
5
6
  export declare function fetchPostWithinPage<TResult>(page: Page, url: string, data: Record<string, any>, extraHeaders?: Record<string, any>): Promise<TResult | null>;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.fetchGet = fetchGet;
9
9
  exports.fetchPost = fetchPost;
10
+ exports.fetchGraphql = fetchGraphql;
10
11
  exports.fetchGetWithinPage = fetchGetWithinPage;
11
12
  exports.fetchPostWithinPage = fetchPostWithinPage;
12
13
 
@@ -14,6 +15,12 @@ var _nodeFetch = _interopRequireDefault(require("node-fetch"));
14
15
 
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17
 
18
+ 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; }
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+
17
24
  const JSON_CONTENT_TYPE = 'application/json';
18
25
 
19
26
  function getJsonHeaders() {
@@ -43,22 +50,32 @@ async function fetchGet(url, extraHeaders) {
43
50
  return fetchResult.json();
44
51
  }
45
52
 
46
- async function fetchPost(url, data, extraHeaders) {
47
- let headers = getJsonHeaders();
48
-
49
- if (extraHeaders) {
50
- headers = Object.assign(headers, extraHeaders);
51
- }
52
-
53
+ async function fetchPost(url, data, extraHeaders = {}) {
53
54
  const request = {
54
55
  method: 'POST',
55
- headers,
56
+ headers: _objectSpread({}, getJsonHeaders(), {}, extraHeaders),
56
57
  body: JSON.stringify(data)
57
58
  };
58
59
  const result = await (0, _nodeFetch.default)(url, request);
59
60
  return result.json();
60
61
  }
61
62
 
63
+ async function fetchGraphql(url, query, variables = {}, extraHeaders = {}) {
64
+ var _result$errors;
65
+
66
+ const result = await fetchPost(url, {
67
+ operationName: null,
68
+ query,
69
+ variables
70
+ }, extraHeaders);
71
+
72
+ if ((_result$errors = result.errors) === null || _result$errors === void 0 ? void 0 : _result$errors.length) {
73
+ throw new Error(result.errors[0].message);
74
+ }
75
+
76
+ return result.data;
77
+ }
78
+
62
79
  function fetchGetWithinPage(page, url) {
63
80
  return page.evaluate(url => {
64
81
  return new Promise((resolve, reject) => {
@@ -101,4 +118,4 @@ function fetchPostWithinPage(page, url, data, extraHeaders = {}) {
101
118
  });
102
119
  }, url, data, extraHeaders);
103
120
  }
104
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2ZldGNoLnRzIl0sIm5hbWVzIjpbIkpTT05fQ09OVEVOVF9UWVBFIiwiZ2V0SnNvbkhlYWRlcnMiLCJBY2NlcHQiLCJmZXRjaEdldCIsInVybCIsImV4dHJhSGVhZGVycyIsImhlYWRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZXF1ZXN0IiwibWV0aG9kIiwiZmV0Y2hSZXN1bHQiLCJzdGF0dXMiLCJFcnJvciIsImpzb24iLCJmZXRjaFBvc3QiLCJkYXRhIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXN1bHQiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJwYWdlIiwiZXZhbHVhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZldGNoIiwiY3JlZGVudGlhbHMiLCJ0aGVuIiwiY2F0Y2giLCJlIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFHQSxNQUFNQSxpQkFBaUIsR0FBRyxrQkFBMUI7O0FBRUEsU0FBU0MsY0FBVCxHQUEwQjtBQUN4QixTQUFPO0FBQ0xDLElBQUFBLE1BQU0sRUFBRUYsaUJBREg7QUFFTCxvQkFBZ0JBO0FBRlgsR0FBUDtBQUlEOztBQUVNLGVBQWVHLFFBQWYsQ0FBaUNDLEdBQWpDLEVBQ0xDLFlBREssRUFDZ0Q7QUFDckQsTUFBSUMsT0FBTyxHQUFHTCxjQUFjLEVBQTVCOztBQUNBLE1BQUlJLFlBQUosRUFBa0I7QUFDaEJDLElBQUFBLE9BQU8sR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWNGLE9BQWQsRUFBdUJELFlBQXZCLENBQVY7QUFDRDs7QUFDRCxRQUFNSSxPQUFPLEdBQUc7QUFDZEMsSUFBQUEsTUFBTSxFQUFFLEtBRE07QUFFZEosSUFBQUE7QUFGYyxHQUFoQjtBQUlBLFFBQU1LLFdBQVcsR0FBRyxNQUFNLHdCQUFVUCxHQUFWLEVBQWVLLE9BQWYsQ0FBMUI7O0FBRUEsTUFBSUUsV0FBVyxDQUFDQyxNQUFaLEtB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LENBQVA7QUFrQkQsR0FwQk0sRUFvQkozQixHQXBCSSxFQW9CQ1ksSUFwQkQsRUFvQk9YLFlBcEJQLENBQVA7QUFxQkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9kZUZldGNoIGZyb20gJ25vZGUtZmV0Y2gnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5cbmNvbnN0IEpTT05fQ09OVEVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuXG5mdW5jdGlvbiBnZXRKc29uSGVhZGVycygpIHtcbiAgcmV0dXJuIHtcbiAgICBBY2NlcHQ6IEpTT05fQ09OVEVOVF9UWVBFLFxuICAgICdDb250ZW50LVR5cGUnOiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoR2V0PFRSZXN1bHQ+KHVybDogc3RyaW5nLFxuICBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPFRSZXN1bHQ+IHtcbiAgbGV0IGhlYWRlcnMgPSBnZXRKc29uSGVhZGVycygpO1xuICBpZiAoZXh0cmFIZWFkZXJzKSB7XG4gICAgaGVhZGVycyA9IE9iamVjdC5hc3NpZ24oaGVhZGVycywgZXh0cmFIZWFkZXJzKTtcbiAgfVxuICBjb25zdCByZXF1ZXN0ID0ge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVycyxcbiAgfTtcbiAgY29uc3QgZmV0Y2hSZXN1bHQgPSBhd2FpdCBub2RlRmV0Y2godXJsLCByZXF1ZXN0KTtcblxuICBpZiAoZmV0Y2hSZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHNlbmRpbmcgYSByZXF1ZXN0IHRvIHRoZSBpbnN0aXR1dGUgc2VydmVyIHJldHVybmVkIHdpdGggc3RhdHVzIGNvZGUgJHtmZXRjaFJlc3VsdC5zdGF0dXN9YCk7XG4gIH1cblxuICByZXR1cm4gZmV0Y2hSZXN1bHQuanNvbigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQb3N0KHVybDogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgbGV0IGhlYWRlcnMgPSBnZXRKc29uSGVhZGVycygpO1xuICBpZiAoZXh0cmFIZWFkZXJzKSB7XG4gICAgaGVhZGVycyA9IE9iamVjdC5hc3NpZ24oaGVhZGVycywgZXh0cmFIZWFkZXJzKTtcbiAgfVxuICBjb25zdCByZXF1ZXN0ID0ge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnMsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gIH07XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vZGVGZXRjaCh1cmwsIHJlcXVlc3QpO1xuICByZXR1cm4gcmVzdWx0Lmpzb24oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoR2V0V2l0aGluUGFnZTxUUmVzdWx0PihwYWdlOiBQYWdlLCB1cmw6IHN0cmluZyk6IFByb21pc2U8VFJlc3VsdCB8IG51bGw+IHtcbiAgcmV0dXJuIHBhZ2UuZXZhbHVhdGUoKHVybCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQuanNvbigpKTtcbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaFBvc3RXaXRoaW5QYWdlPFRSZXN1bHQ+KHBhZ2U6IFBhZ2UsIHVybDogc3RyaW5nLFxuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSk6IFByb21pc2U8VFJlc3VsdCB8IG51bGw+IHtcbiAgcmV0dXJuIHBhZ2UuZXZhbHVhdGU8KC4uLmFyZ3M6IGFueVtdKSA9PiBQcm9taXNlPFRSZXN1bHQgfCBudWxsPj4oKHVybDogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLW9iamVjdC1zcHJlYWRcbiAgICAgICAgaGVhZGVyczogT2JqZWN0LmFzc2lnbih7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04JyB9LCBleHRyYUhlYWRlcnMpLFxuICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgICAvLyBObyBjb250ZW50IHJlc3BvbnNlXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uKCkpO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSwgdXJsLCBkYXRhLCBleHRyYUhlYWRlcnMpO1xufVxuIl19
121
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2ZldGNoLnRzIl0sIm5hbWVzIjpbIkpTT05fQ09OVEVOVF9UWVBFIiwiZ2V0SnNvbkhlYWRlcnMiLCJBY2NlcHQiLCJmZXRjaEdldCIsInVybCIsImV4dHJhSGVhZGVycyIsImhlYWRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZXF1ZXN0IiwibWV0aG9kIiwiZmV0Y2hSZXN1bHQiLCJzdGF0dXMiLCJFcnJvciIsImpzb24iLCJmZXRjaFBvc3QiLCJkYXRhIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXN1bHQiLCJmZXRjaEdyYXBocWwiLCJxdWVyeSIsInZhcmlhYmxlcyIsIm9wZXJhdGlvbk5hbWUiLCJlcnJvcnMiLCJsZW5ndGgiLCJtZXNzYWdlIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwicGFnZSIsImV2YWx1YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGhlbiIsImNhdGNoIiwiZSIsImZldGNoUG9zdFdpdGhpblBhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7OztBQUdBLE1BQU1BLGlCQUFpQixHQUFHLGtCQUExQjs7QUFFQSxTQUFTQyxjQUFULEdBQTBCO0FBQ3hCLFNBQU87QUFDTEMsSUFBQUEsTUFBTSxFQUFFRixpQkFESDtBQUVMLG9CQUFnQkE7QUFGWCxHQUFQO0FBSUQ7O0FBRU0sZUFBZUcsUUFBZixDQUFpQ0MsR0FBakMsRUFDTEMsWUFESyxFQUNnRDtBQUNyRCxNQUFJQyxPQUFPLEdBQUdMLGNBQWMsRUFBNUI7O0FBQ0EsTUFBSUksWUFBSixFQUFrQjtBQUNoQkMsSUFBQUEsT0FBTyxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBY0YsT0FBZCxFQUF1QkQsWUFBdkIsQ0FBVjtBQUNEOztBQUNELFFBQU1JLE9BQU8sR0FBRztBQUNkQyxJQUFBQSxNQUFNLEVBQUUsS0FETTtBQUVkSixJQUFBQTtBQUZjLEdBQWhC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SCxJQUFmLENBRkc7QUFHVG1CLFFBQUFBLFdBQVcsRUFBRSxTQUhKO0FBSVQ7QUFDQTdCLFFBQUFBLE9BQU8sRUFBRUMsTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFBRSwwQkFBZ0I7QUFBbEIsU0FBZCxFQUFzRkgsWUFBdEY7QUFMQSxPQUFOLENBQUwsQ0FNRytCLElBTkgsQ0FNU2hCLE1BQUQsSUFBWTtBQUNsQixZQUFJQSxNQUFNLENBQUNSLE1BQVAsS0FBa0IsR0FBdEIsRUFBMkI7QUFDekI7QUFDQW9CLFVBQUFBLE9BQU8sQ0FBQyxJQUFELENBQVA7QUFDRCxTQUhELE1BR087QUFDTEEsVUFBQUEsT0FBTyxDQUFDWixNQUFNLENBQUNOLElBQVAsRUFBRCxDQUFQO0FBQ0Q7QUFDRixPQWJELEVBYUd1QixLQWJILENBYVVDLENBQUQsSUFBTztBQUNkTCxRQUFBQSxNQUFNLENBQUNLLENBQUQsQ0FBTjtBQUNELE9BZkQ7QUFnQkQsS0FqQk0sQ0FBUDtBQWtCRCxHQXBCTSxFQW9CSmxDLEdBcEJJLEVBb0JDWSxJQXBCRCxFQW9CT1gsWUFwQlAsQ0FBUDtBQXFCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub2RlRmV0Y2ggZnJvbSAnbm9kZS1mZXRjaCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcblxuY29uc3QgSlNPTl9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vanNvbic7XG5cbmZ1bmN0aW9uIGdldEpzb25IZWFkZXJzKCkge1xuICByZXR1cm4ge1xuICAgIEFjY2VwdDogSlNPTl9DT05URU5UX1RZUEUsXG4gICAgJ0NvbnRlbnQtVHlwZSc6IEpTT05fQ09OVEVOVF9UWVBFLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHZXQ8VFJlc3VsdD4odXJsOiBzdHJpbmcsXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBsZXQgaGVhZGVycyA9IGdldEpzb25IZWFkZXJzKCk7XG4gIGlmIChleHRyYUhlYWRlcnMpIHtcbiAgICBoZWFkZXJzID0gT2JqZWN0LmFzc2lnbihoZWFkZXJzLCBleHRyYUhlYWRlcnMpO1xuICB9XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzLFxuICB9O1xuICBjb25zdCBmZXRjaFJlc3VsdCA9IGF3YWl0IG5vZGVGZXRjaCh1cmwsIHJlcXVlc3QpO1xuXG4gIGlmIChmZXRjaFJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc2VuZGluZyBhIHJlcXVlc3QgdG8gdGhlIGluc3RpdHV0ZSBzZXJ2ZXIgcmV0dXJuZWQgd2l0aCBzdGF0dXMgY29kZSAke2ZldGNoUmVzdWx0LnN0YXR1c31gKTtcbiAgfVxuXG4gIHJldHVybiBmZXRjaFJlc3VsdC5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFBvc3QodXJsOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAuLi5nZXRKc29uSGVhZGVycygpLCAuLi5leHRyYUhlYWRlcnMgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgfTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9kZUZldGNoKHVybCwgcmVxdWVzdCk7XG4gIHJldHVybiByZXN1bHQuanNvbigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHcmFwaHFsPFRSZXN1bHQ+KHVybDogc3RyaW5nLCBxdWVyeTogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KTogUHJvbWlzZTxUUmVzdWx0PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdCh1cmwsIHsgb3BlcmF0aW9uTmFtZTogbnVsbCwgcXVlcnksIHZhcmlhYmxlcyB9LCBleHRyYUhlYWRlcnMpO1xuICBpZiAocmVzdWx0LmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5kYXRhIGFzIFByb21pc2U8VFJlc3VsdD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaEdldFdpdGhpblBhZ2U8VFJlc3VsdD4ocGFnZTogUGFnZSwgdXJsOiBzdHJpbmcpOiBQcm9taXNlPFRSZXN1bHQgfCBudWxsPiB7XG4gIHJldHVybiBwYWdlLmV2YWx1YXRlKCh1cmwpID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VFJlc3VsdCB8IG51bGw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGZldGNoKHVybCwge1xuICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb24oKSk7XG4gICAgICAgIH1cbiAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LCB1cmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2hQb3N0V2l0aGluUGFnZTxUUmVzdWx0PihwYWdlOiBQYWdlLCB1cmw6IHN0cmluZyxcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiwgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pOiBQcm9taXNlPFRSZXN1bHQgfCBudWxsPiB7XG4gIHJldHVybiBwYWdlLmV2YWx1YXRlPCguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4+KCh1cmw6IHN0cmluZywgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1vYmplY3Qtc3ByZWFkXG4gICAgICAgIGhlYWRlcnM6IE9iamVjdC5hc3NpZ24oeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCcgfSwgZXh0cmFIZWFkZXJzKSxcbiAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgLy8gTm8gY29udGVudCByZXNwb25zZVxuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQuanNvbigpKTtcbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHVybCwgZGF0YSwgZXh0cmFIZWFkZXJzKTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import { Page } from 'puppeteer';
2
+ export declare function getFromSessionStorage<T>(page: Page, key: string): Promise<T | null>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.promise");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getFromSessionStorage = getFromSessionStorage;
9
+
10
+ async function getFromSessionStorage(page, key) {
11
+ const strData = await page.evaluate(k => {
12
+ return sessionStorage.getItem(k);
13
+ }, key);
14
+ if (!strData) return null;
15
+ return JSON.parse(strData);
16
+ }
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3N0b3JhZ2UudHMiXSwibmFtZXMiOlsiZ2V0RnJvbVNlc3Npb25TdG9yYWdlIiwicGFnZSIsImtleSIsInN0ckRhdGEiLCJldmFsdWF0ZSIsImsiLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJKU09OIiwicGFyc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVPLGVBQWVBLHFCQUFmLENBQXdDQyxJQUF4QyxFQUFvREMsR0FBcEQsRUFBb0Y7QUFDekYsUUFBTUMsT0FBTyxHQUFHLE1BQU1GLElBQUksQ0FBQ0csUUFBTCxDQUFlQyxDQUFELElBQWU7QUFDakQsV0FBT0MsY0FBYyxDQUFDQyxPQUFmLENBQXVCRixDQUF2QixDQUFQO0FBQ0QsR0FGcUIsRUFFbkJILEdBRm1CLENBQXRCO0FBSUEsTUFBSSxDQUFDQyxPQUFMLEVBQWMsT0FBTyxJQUFQO0FBRWQsU0FBT0ssSUFBSSxDQUFDQyxLQUFMLENBQVdOLE9BQVgsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGcm9tU2Vzc2lvblN0b3JhZ2U8VD4ocGFnZTogUGFnZSwga2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gIGNvbnN0IHN0ckRhdGEgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKChrOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrKTtcbiAgfSwga2V5KTtcblxuICBpZiAoIXN0ckRhdGEpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBKU09OLnBhcnNlKHN0ckRhdGEpIGFzIFQ7XG59XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { default as createScraper } from './scrapers/factory';
2
2
  export { SCRAPERS, CompanyTypes } from './definitions';
3
- export { ScraperOptions } from './scrapers/base-scraper';
3
+ export { ScraperOptions, ScraperScrapingResult as ScaperScrapingResult, ScraperScrapingResult, ScraperLoginResult as ScaperLoginResult, ScraperLoginResult, Scraper, ScraperCredentials, } from './scrapers/interface';
4
+ export { default as OneZeroScraper } from './scrapers/one-zero';
4
5
  export declare function getPuppeteerConfig(): {
5
6
  __comment: string;
6
7
  chromiumRevision: string;
package/lib/index.js CHANGED
@@ -25,7 +25,49 @@ Object.defineProperty(exports, "CompanyTypes", {
25
25
  Object.defineProperty(exports, "ScraperOptions", {
26
26
  enumerable: true,
27
27
  get: function () {
28
- return _baseScraper.ScraperOptions;
28
+ return _interface.ScraperOptions;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "ScaperScrapingResult", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _interface.ScraperScrapingResult;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "ScraperScrapingResult", {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _interface.ScraperScrapingResult;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "ScaperLoginResult", {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _interface.ScraperLoginResult;
47
+ }
48
+ });
49
+ Object.defineProperty(exports, "ScraperLoginResult", {
50
+ enumerable: true,
51
+ get: function () {
52
+ return _interface.ScraperLoginResult;
53
+ }
54
+ });
55
+ Object.defineProperty(exports, "Scraper", {
56
+ enumerable: true,
57
+ get: function () {
58
+ return _interface.Scraper;
59
+ }
60
+ });
61
+ Object.defineProperty(exports, "ScraperCredentials", {
62
+ enumerable: true,
63
+ get: function () {
64
+ return _interface.ScraperCredentials;
65
+ }
66
+ });
67
+ Object.defineProperty(exports, "OneZeroScraper", {
68
+ enumerable: true,
69
+ get: function () {
70
+ return _oneZero.default;
29
71
  }
30
72
  });
31
73
 
@@ -35,7 +77,9 @@ var _factory = _interopRequireDefault(require("./scrapers/factory"));
35
77
 
36
78
  var _definitions = require("./definitions");
37
79
 
38
- var _baseScraper = require("./scrapers/base-scraper");
80
+ var _interface = require("./scrapers/interface");
81
+
82
+ var _oneZero = _interopRequireDefault(require("./scrapers/one-zero"));
39
83
 
40
84
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
85
 
@@ -48,4 +92,4 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
48
92
  function getPuppeteerConfig() {
49
93
  return _objectSpread({}, _puppeteerConfig.default);
50
94
  }
51
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJnZXRQdXBwZXRlZXJDb25maWciLCJwdXBwZXRlZXJDb25maWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVPLFNBQVNBLGtCQUFULEdBQThCO0FBQ25DLDJCQUFZQyx3QkFBWjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHB1cHBldGVlckNvbmZpZyBmcm9tICcuL3B1cHBldGVlci1jb25maWcuanNvbic7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlU2NyYXBlciB9IGZyb20gJy4vc2NyYXBlcnMvZmFjdG9yeSc7XG5leHBvcnQgeyBTQ1JBUEVSUywgQ29tcGFueVR5cGVzIH0gZnJvbSAnLi9kZWZpbml0aW9ucyc7XG5leHBvcnQgeyBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vc2NyYXBlcnMvYmFzZS1zY3JhcGVyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFB1cHBldGVlckNvbmZpZygpIHtcbiAgcmV0dXJuIHsgLi4ucHVwcGV0ZWVyQ29uZmlnIH07XG59XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJnZXRQdXBwZXRlZXJDb25maWciLCJwdXBwZXRlZXJDb25maWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFHQTs7QUFVQTs7Ozs7Ozs7OztBQUVPLFNBQVNBLGtCQUFULEdBQThCO0FBQ25DLDJCQUFZQyx3QkFBWjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHB1cHBldGVlckNvbmZpZyBmcm9tICcuL3B1cHBldGVlci1jb25maWcuanNvbic7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlU2NyYXBlciB9IGZyb20gJy4vc2NyYXBlcnMvZmFjdG9yeSc7XG5leHBvcnQgeyBTQ1JBUEVSUywgQ29tcGFueVR5cGVzIH0gZnJvbSAnLi9kZWZpbml0aW9ucyc7XG5cbi8vIE5vdGU6IHRoZSB0eXBvIFNjYXBlclNjcmFwaW5nUmVzdWx0ICYgU2NyYXBlckxvZ2luUmVzdWx0IChzaWMpIGFyZSBleHBvcnRlZCBoZXJlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQge1xuICBTY3JhcGVyT3B0aW9ucyxcbiAgU2NyYXBlclNjcmFwaW5nUmVzdWx0IGFzIFNjYXBlclNjcmFwaW5nUmVzdWx0LFxuICBTY3JhcGVyU2NyYXBpbmdSZXN1bHQsXG4gIFNjcmFwZXJMb2dpblJlc3VsdCBhcyBTY2FwZXJMb2dpblJlc3VsdCxcbiAgU2NyYXBlckxvZ2luUmVzdWx0LFxuICBTY3JhcGVyLFxuICBTY3JhcGVyQ3JlZGVudGlhbHMsXG59IGZyb20gJy4vc2NyYXBlcnMvaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBPbmVaZXJvU2NyYXBlciB9IGZyb20gJy4vc2NyYXBlcnMvb25lLXplcm8nO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVwcGV0ZWVyQ29uZmlnKCkge1xuICByZXR1cm4geyAuLi5wdXBwZXRlZXJDb25maWcgfTtcbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import IsracardAmexBaseScraper from './base-isracard-amex';
2
- import { ScraperOptions } from './base-scraper';
2
+ import { ScraperOptions } from './interface';
3
3
  declare class AmexScraper extends IsracardAmexBaseScraper {
4
4
  constructor(options: ScraperOptions);
5
5
  }
@@ -21,4 +21,4 @@ class AmexScraper extends _baseIsracardAmex.default {
21
21
 
22
22
  var _default = AmexScraper;
23
23
  exports.default = _default;
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9hbWV4LnRzIl0sIm5hbWVzIjpbIkJBU0VfVVJMIiwiQ09NUEFOWV9DT0RFIiwiQW1leFNjcmFwZXIiLCJJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLGtDQUFqQjtBQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFyQjs7QUFFQSxNQUFNQyxXQUFOLFNBQTBCQyx5QkFBMUIsQ0FBa0Q7QUFDaERDLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUEwQjtBQUNuQyxVQUFNQSxPQUFOLEVBQWVMLFFBQWYsRUFBeUJDLFlBQXpCO0FBQ0Q7O0FBSCtDOztlQU1uQ0MsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciBmcm9tICcuL2Jhc2UtaXNyYWNhcmQtYW1leCc7XG5pbXBvcnQgeyBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9oZS5hbWVyaWNhbmV4cHJlc3MuY28uaWwnO1xuY29uc3QgQ09NUEFOWV9DT0RFID0gJzc3JztcblxuY2xhc3MgQW1leFNjcmFwZXIgZXh0ZW5kcyBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucywgQkFTRV9VUkwsIENPTVBBTllfQ09ERSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQW1leFNjcmFwZXI7XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9hbWV4LnRzIl0sIm5hbWVzIjpbIkJBU0VfVVJMIiwiQ09NUEFOWV9DT0RFIiwiQW1leFNjcmFwZXIiLCJJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLGtDQUFqQjtBQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFyQjs7QUFFQSxNQUFNQyxXQUFOLFNBQTBCQyx5QkFBMUIsQ0FBa0Q7QUFDaERDLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUEwQjtBQUNuQyxVQUFNQSxPQUFOLEVBQWVMLFFBQWYsRUFBeUJDLFlBQXpCO0FBQ0Q7O0FBSCtDOztlQU1uQ0MsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciBmcm9tICcuL2Jhc2UtaXNyYWNhcmQtYW1leCc7XG5pbXBvcnQgeyBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9oZS5hbWVyaWNhbmV4cHJlc3MuY28uaWwnO1xuY29uc3QgQ09NUEFOWV9DT0RFID0gJzc3JztcblxuY2xhc3MgQW1leFNjcmFwZXIgZXh0ZW5kcyBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucywgQkFTRV9VUkwsIENPTVBBTllfQ09ERSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQW1leFNjcmFwZXI7XG4iXX0=
@@ -40,7 +40,8 @@ describe('AMEX legacy scraper', () => {
40
40
 
41
41
  const scraper = new _amex.default(options);
42
42
  const result = await scraper.scrape({
43
- username: 'e10s12',
43
+ id: 'e10s12',
44
+ card6Digits: '123456',
44
45
  password: '3f3ss3d'
45
46
  });
46
47
  expect(result).toBeDefined();
@@ -61,4 +62,4 @@ describe('AMEX legacy scraper', () => {
61
62
  (0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
62
63
  });
63
64
  });
64
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9hbWV4LnRlc3QudHMiXSwibmFtZXMiOlsiQ09NUEFOWV9JRCIsInRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJhbWV4IiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsImNvbmZpZyIsImNvbXBhbnlBUEkiLCJpbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY29tcGFueUlkIiwic2NyYXBlciIsIkFNRVhTY3JhcGVyIiwicmVzdWx0Iiwic2NyYXBlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsInN1Y2Nlc3MiLCJ0b0JlRmFsc3kiLCJlcnJvclR5cGUiLCJ0b0JlIiwiTG9naW5SZXN1bHRzIiwiSW52YWxpZFBhc3N3b3JkIiwiY3JlZGVudGlhbHMiLCJlcnJvciIsImVycm9yTWVzc2FnZSIsInRyaW0iLCJ0b0JlVHJ1dGh5IiwiYWNjb3VudHMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUdBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLE1BQW5CLEMsQ0FBMkI7O0FBQzNCLE1BQU1DLFdBQVcsR0FBRyxpQ0FBcEI7QUFFQUMsUUFBUSxDQUFDLHFCQUFELEVBQXdCLE1BQU07QUFDcENDLEVBQUFBLFNBQVMsQ0FBQyxNQUFNO0FBQ2QsMENBRGMsQ0FDUTtBQUN2QixHQUZRLENBQVQ7QUFJQUMsRUFBQUEsSUFBSSxDQUFDLGlEQUFELEVBQW9ELE1BQU07QUFDNURDLElBQUFBLE1BQU0sQ0FBQ0Msc0JBQVNDLElBQVYsQ0FBTixDQUFzQkMsV0FBdEI7QUFDQUgsSUFBQUEsTUFBTSxDQUFDQyxzQkFBU0MsSUFBVCxDQUFjRSxXQUFmLENBQU4sQ0FBa0NDLFNBQWxDLENBQTRDLElBQTVDO0FBQ0FMLElBQUFBLE1BQU0sQ0FBQ0Msc0JBQVNDLElBQVQsQ0FBY0UsV0FBZixDQUFOLENBQWtDQyxTQUFsQyxDQUE0QyxhQUE1QztBQUNBTCxJQUFBQSxNQUFNLENBQUNDLHNCQUFTQyxJQUFULENBQWNFLFdBQWYsQ0FBTixDQUFrQ0MsU0FBbEMsQ0FBNEMsVUFBNUM7QUFDRCxHQUxHLENBQUo7QUFPQSx1Q0FBb0JWLFVBQXBCLEVBQWlDVyxNQUFELElBQVlBLE1BQU0sQ0FBQ0MsVUFBUCxDQUFrQkMsZUFBOUQsRUFBK0UsdUNBQS9FLEVBQXdILFlBQVk7QUFDbEksVUFBTUMsT0FBTyxxQkFDUmIsV0FBVyxDQUFDYSxPQURKO0FBRVhDLE1BQUFBLFNBQVMsRUFBRWY7QUFGQSxNQUFiOztBQUtBLFVBQU1nQixPQUFPLEdBQUcsSUFBSUMsYUFBSixDQUFnQkgsT0FBaEIsQ0FBaEI7QUFFQSxVQUFNSSxNQUFNLEdBQUcsTUFBTUYsT0FBTyxDQUFDRyxNQUFSLENBQWU7QUFBRUMsTUFBQUEsUUFBUSxFQUFFLFFBQVo7QUFBc0JDLE1BQUFBLFFBQVEsRUFBRTtBQUFoQyxLQUFmLENBQXJCO0FBRUFoQixJQUFBQSxNQUFNLENBQUNhLE1BQUQsQ0FBTixDQUFlVixXQUFmO0FBQ0FILElBQUFBLE1BQU0sQ0FBQ2EsTUFBTSxDQUFDSSxPQUFSLENBQU4sQ0FBdUJDLFNBQXZCO0FBQ0FsQixJQUFBQSxNQUFNLENBQUNhLE1BQU0sQ0FBQ00sU0FBUixDQUFOLENBQXlCQyxJQUF6QixDQUE4QkMscUNBQWFDLGVBQTNDO0FBQ0QsR0FiRDtBQWVBLHVDQUFvQjNCLFVBQXBCLEVBQWdDLDZCQUFoQyxFQUErRCxZQUFZO0FBQ3pFLFVBQU1jLE9BQU8scUJBQ1JiLFdBQVcsQ0FBQ2EsT0FESjtBQUVYQyxNQUFBQSxTQUFTLEVBQUVmO0FBRkEsTUFBYjs7QUFLQSxVQUFNZ0IsT0FBTyxHQUFHLElBQUlDLGFBQUosQ0FBZ0JILE9BQWhCLENBQWhCO0FBQ0EsVUFBTUksTUFBTSxHQUFHLE1BQU1GLE9BQU8sQ0FBQ0csTUFBUixDQUFlbEIsV0FBVyxDQUFDMkIsV0FBWixDQUF3QnJCLElBQXZDLENBQXJCO0FBQ0FGLElBQUFBLE1BQU0sQ0FBQ2EsTUFBRCxDQUFOLENBQWVWLFdBQWY7QUFDQSxVQUFNcUIsS0FBSyxHQUFJLEdBQUVYLE1BQU0sQ0FBQ00sU0FBUCxJQUFvQixFQUFHLElBQUdOLE1BQU0sQ0FBQ1ksWUFBUCxJQUF1QixFQUFHLEVBQXZELENBQXlEQyxJQUF6RCxFQUFkO0FBQ0ExQixJQUFBQSxNQUFNLENBQUN3QixLQUFELENBQU4sQ0FBY0osSUFBZCxDQUFtQixFQUFuQjtBQUNBcEIsSUFBQUEsTUFBTSxDQUFDYSxNQUFNLENBQUNJLE9BQVIsQ0FBTixDQUF1QlUsVUFBdkI7QUFFQSx3Q0FBbUJoQyxVQUFuQixFQUErQmtCLE1BQU0sQ0FBQ2UsUUFBUCxJQUFtQixFQUFsRDtBQUNELEdBZEQ7QUFlRCxDQTFDTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFNRVhTY3JhcGVyIGZyb20gJy4vYW1leCc7XG5pbXBvcnQge1xuICBtYXliZVRlc3RDb21wYW55QVBJLCBleHRlbmRBc3luY1RpbWVvdXQsIGdldFRlc3RzQ29uZmlnLCBleHBvcnRUcmFuc2FjdGlvbnMsXG59IGZyb20gJy4uL3Rlc3RzL3Rlc3RzLXV0aWxzJztcbmltcG9ydCB7IFNDUkFQRVJTIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcblxuY29uc3QgQ09NUEFOWV9JRCA9ICdhbWV4JzsgLy8gVE9ETyB0aGlzIHByb3BlcnR5IHNob3VsZCBiZSBoYXJkLWNvZGVkIGluIHRoZSBwcm92aWRlclxuY29uc3QgdGVzdHNDb25maWcgPSBnZXRUZXN0c0NvbmZpZygpO1xuXG5kZXNjcmliZSgnQU1FWCBsZWdhY3kgc2NyYXBlcicsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBleHRlbmRBc3luY1RpbWVvdXQoKTsgLy8gVGhlIGRlZmF1bHQgdGltZW91dCBpcyA1IHNlY29uZHMgcGVyIGFzeW5jIHRlc3QsIHRoaXMgZnVuY3Rpb24gZXh0ZW5kcyB0aGUgdGltZW91dCB2YWx1ZVxuICB9KTtcblxuICB0ZXN0KCdzaG91bGQgZXhwb3NlIGxvZ2luIGZpZWxkcyBpbiBzY3JhcGVycyBjb25zdGFudCcsICgpID0+IHtcbiAgICBleHBlY3QoU0NSQVBFUlMuYW1leCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuYW1leC5sb2dpbkZpZWxkcykudG9Db250YWluKCdpZCcpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5hbWV4LmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ2NhcmQ2RGlnaXRzJyk7XG4gICAgZXhwZWN0KFNDUkFQRVJTLmFtZXgubG9naW5GaWVsZHMpLnRvQ29udGFpbigncGFzc3dvcmQnKTtcbiAgfSk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lELCAoY29uZmlnKSA9PiBjb25maWcuY29tcGFueUFQSS5pbnZhbGlkUGFzc3dvcmQpKCdzaG91bGQgZmFpbCBvbiBpbnZhbGlkIHVzZXIvcGFzc3dvcmRcIicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NyYXBlciA9IG5ldyBBTUVYU2NyYXBlcihvcHRpb25zKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHsgdXNlcm5hbWU6ICdlMTBzMTInLCBwYXNzd29yZDogJzNmM3NzM2QnIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JUeXBlKS50b0JlKExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQpO1xuICB9KTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQpKCdzaG91bGQgc2NyYXBlIHRyYW5zYWN0aW9uc1wiJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAuLi50ZXN0c0NvbmZpZy5vcHRpb25zLFxuICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JhcGVyID0gbmV3IEFNRVhTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHRlc3RzQ29uZmlnLmNyZWRlbnRpYWxzLmFtZXgpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgY29uc3QgZXJyb3IgPSBgJHtyZXN1bHQuZXJyb3JUeXBlIHx8ICcnfSAke3Jlc3VsdC5lcnJvck1lc3NhZ2UgfHwgJyd9YC50cmltKCk7XG4gICAgZXhwZWN0KGVycm9yKS50b0JlKCcnKTtcbiAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVUcnV0aHkoKTtcblxuICAgIGV4cG9ydFRyYW5zYWN0aW9ucyhDT01QQU5ZX0lELCByZXN1bHQuYWNjb3VudHMgfHwgW10pO1xuICB9KTtcbn0pO1xuIl19
65
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9hbWV4LnRlc3QudHMiXSwibmFtZXMiOlsiQ09NUEFOWV9JRCIsInRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJhbWV4IiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsImNvbmZpZyIsImNvbXBhbnlBUEkiLCJpbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY29tcGFueUlkIiwic2NyYXBlciIsIkFNRVhTY3JhcGVyIiwicmVzdWx0Iiwic2NyYXBlIiwiaWQiLCJjYXJkNkRpZ2l0cyIsInBhc3N3b3JkIiwic3VjY2VzcyIsInRvQmVGYWxzeSIsImVycm9yVHlwZSIsInRvQmUiLCJMb2dpblJlc3VsdHMiLCJJbnZhbGlkUGFzc3dvcmQiLCJjcmVkZW50aWFscyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwidHJpbSIsInRvQmVUcnV0aHkiLCJhY2NvdW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxVQUFVLEdBQUcsTUFBbkIsQyxDQUEyQjs7QUFDM0IsTUFBTUMsV0FBVyxHQUFHLGlDQUFwQjtBQUVBQyxRQUFRLENBQUMscUJBQUQsRUFBd0IsTUFBTTtBQUNwQ0MsRUFBQUEsU0FBUyxDQUFDLE1BQU07QUFDZCwwQ0FEYyxDQUNRO0FBQ3ZCLEdBRlEsQ0FBVDtBQUlBQyxFQUFBQSxJQUFJLENBQUMsaURBQUQsRUFBb0QsTUFBTTtBQUM1REMsSUFBQUEsTUFBTSxDQUFDQyxzQkFBU0MsSUFBVixDQUFOLENBQXNCQyxXQUF0QjtBQUNBSCxJQUFBQSxNQUFNLENBQUNDLHNCQUFTQyxJQUFULENBQWNFLFdBQWYsQ0FBTixDQUFrQ0MsU0FBbEMsQ0FBNEMsSUFBNUM7QUFDQUwsSUFBQUEsTUFBTSxDQUFDQyxzQkFBU0MsSUFBVCxDQUFjRSxXQUFmLENBQU4sQ0FBa0NDLFNBQWxDLENBQTRDLGFBQTVDO0FBQ0FMLElBQUFBLE1BQU0sQ0FBQ0Msc0JBQVNDLElBQVQsQ0FBY0UsV0FBZixDQUFOLENBQWtDQyxTQUFsQyxDQUE0QyxVQUE1QztBQUNELEdBTEcsQ0FBSjtBQU9BLHVDQUFvQlYsVUFBcEIsRUFBaUNXLE1BQUQsSUFBWUEsTUFBTSxDQUFDQyxVQUFQLENBQWtCQyxlQUE5RCxFQUErRSx1Q0FBL0UsRUFBd0gsWUFBWTtBQUNsSSxVQUFNQyxPQUFPLHFCQUNSYixXQUFXLENBQUNhLE9BREo7QUFFWEMsTUFBQUEsU0FBUyxFQUFFZjtBQUZBLE1BQWI7O0FBS0EsVUFBTWdCLE9BQU8sR0FBRyxJQUFJQyxhQUFKLENBQWdCSCxPQUFoQixDQUFoQjtBQUVBLFVBQU1JLE1BQU0sR0FBRyxNQUFNRixPQUFPLENBQUNHLE1BQVIsQ0FBZTtBQUFFQyxNQUFBQSxFQUFFLEVBQUUsUUFBTjtBQUFnQkMsTUFBQUEsV0FBVyxFQUFFLFFBQTdCO0FBQXVDQyxNQUFBQSxRQUFRLEVBQUU7QUFBakQsS0FBZixDQUFyQjtBQUVBakIsSUFBQUEsTUFBTSxDQUFDYSxNQUFELENBQU4sQ0FBZVYsV0FBZjtBQUNBSCxJQUFBQSxNQUFNLENBQUNhLE1BQU0sQ0FBQ0ssT0FBUixDQUFOLENBQXVCQyxTQUF2QjtBQUNBbkIsSUFBQUEsTUFBTSxDQUFDYSxNQUFNLENBQUNPLFNBQVIsQ0FBTixDQUF5QkMsSUFBekIsQ0FBOEJDLHFDQUFhQyxlQUEzQztBQUNELEdBYkQ7QUFlQSx1Q0FBb0I1QixVQUFwQixFQUFnQyw2QkFBaEMsRUFBK0QsWUFBWTtBQUN6RSxVQUFNYyxPQUFPLHFCQUNSYixXQUFXLENBQUNhLE9BREo7QUFFWEMsTUFBQUEsU0FBUyxFQUFFZjtBQUZBLE1BQWI7O0FBS0EsVUFBTWdCLE9BQU8sR0FBRyxJQUFJQyxhQUFKLENBQWdCSCxPQUFoQixDQUFoQjtBQUNBLFVBQU1JLE1BQU0sR0FBRyxNQUFNRixPQUFPLENBQUNHLE1BQVIsQ0FBZWxCLFdBQVcsQ0FBQzRCLFdBQVosQ0FBd0J0QixJQUF2QyxDQUFyQjtBQUNBRixJQUFBQSxNQUFNLENBQUNhLE1BQUQsQ0FBTixDQUFlVixXQUFmO0FBQ0EsVUFBTXNCLEtBQUssR0FBSSxHQUFFWixNQUFNLENBQUNPLFNBQVAsSUFBb0IsRUFBRyxJQUFHUCxNQUFNLENBQUNhLFlBQVAsSUFBdUIsRUFBRyxFQUF2RCxDQUF5REMsSUFBekQsRUFBZDtBQUNBM0IsSUFBQUEsTUFBTSxDQUFDeUIsS0FBRCxDQUFOLENBQWNKLElBQWQsQ0FBbUIsRUFBbkI7QUFDQXJCLElBQUFBLE1BQU0sQ0FBQ2EsTUFBTSxDQUFDSyxPQUFSLENBQU4sQ0FBdUJVLFVBQXZCO0FBRUEsd0NBQW1CakMsVUFBbkIsRUFBK0JrQixNQUFNLENBQUNnQixRQUFQLElBQW1CLEVBQWxEO0FBQ0QsR0FkRDtBQWVELENBMUNPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQU1FWFNjcmFwZXIgZnJvbSAnLi9hbWV4JztcbmltcG9ydCB7XG4gIG1heWJlVGVzdENvbXBhbnlBUEksIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIGV4cG9ydFRyYW5zYWN0aW9ucyxcbn0gZnJvbSAnLi4vdGVzdHMvdGVzdHMtdXRpbHMnO1xuaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuXG5jb25zdCBDT01QQU5ZX0lEID0gJ2FtZXgnOyAvLyBUT0RPIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIGhhcmQtY29kZWQgaW4gdGhlIHByb3ZpZGVyXG5jb25zdCB0ZXN0c0NvbmZpZyA9IGdldFRlc3RzQ29uZmlnKCk7XG5cbmRlc2NyaWJlKCdBTUVYIGxlZ2FjeSBzY3JhcGVyJywgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGV4dGVuZEFzeW5jVGltZW91dCgpOyAvLyBUaGUgZGVmYXVsdCB0aW1lb3V0IGlzIDUgc2Vjb25kcyBwZXIgYXN5bmMgdGVzdCwgdGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSB0aW1lb3V0IHZhbHVlXG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBleHBvc2UgbG9naW4gZmllbGRzIGluIHNjcmFwZXJzIGNvbnN0YW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChTQ1JBUEVSUy5hbWV4KS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5hbWV4LmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ2lkJyk7XG4gICAgZXhwZWN0KFNDUkFQRVJTLmFtZXgubG9naW5GaWVsZHMpLnRvQ29udGFpbignY2FyZDZEaWdpdHMnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuYW1leC5sb2dpbkZpZWxkcykudG9Db250YWluKCdwYXNzd29yZCcpO1xuICB9KTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQsIChjb25maWcpID0+IGNvbmZpZy5jb21wYW55QVBJLmludmFsaWRQYXNzd29yZCkoJ3Nob3VsZCBmYWlsIG9uIGludmFsaWQgdXNlci9wYXNzd29yZFwiJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAuLi50ZXN0c0NvbmZpZy5vcHRpb25zLFxuICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JhcGVyID0gbmV3IEFNRVhTY3JhcGVyKG9wdGlvbnMpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUoeyBpZDogJ2UxMHMxMicsIGNhcmQ2RGlnaXRzOiAnMTIzNDU2JywgcGFzc3dvcmQ6ICczZjNzczNkJyB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QocmVzdWx0LmVycm9yVHlwZSkudG9CZShMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkKTtcbiAgfSk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lEKSgnc2hvdWxkIHNjcmFwZSB0cmFuc2FjdGlvbnNcIicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NyYXBlciA9IG5ldyBBTUVYU2NyYXBlcihvcHRpb25zKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzY3JhcGVyLnNjcmFwZSh0ZXN0c0NvbmZpZy5jcmVkZW50aWFscy5hbWV4KTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBleHBvcnRUcmFuc2FjdGlvbnMoQ09NUEFOWV9JRCwgcmVzdWx0LmFjY291bnRzIHx8IFtdKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,18 +1,21 @@
1
1
  import { Page } from 'puppeteer';
2
2
  import { BaseScraperWithBrowser, PossibleLoginResults } from './base-scraper-with-browser';
3
3
  import { TransactionsAccount } from '../transactions';
4
- import { ScraperCredentials } from './base-scraper';
5
4
  export declare function getPossibleLoginResults(): PossibleLoginResults;
6
- export declare function createLoginFields(credentials: ScraperCredentials): {
5
+ export declare function createLoginFields(credentials: ScraperSpecificCredentials): {
7
6
  selector: string;
8
7
  value: string;
9
8
  }[];
10
9
  export declare function waitForPostLogin(page: Page): Promise<void>;
11
- declare class BeinleumiGroupBaseScraper extends BaseScraperWithBrowser {
10
+ declare type ScraperSpecificCredentials = {
11
+ username: string;
12
+ password: string;
13
+ };
14
+ declare class BeinleumiGroupBaseScraper extends BaseScraperWithBrowser<ScraperSpecificCredentials> {
12
15
  BASE_URL: string;
13
16
  LOGIN_URL: string;
14
17
  TRANSACTIONS_URL: string;
15
- getLoginOptions(credentials: ScraperCredentials): {
18
+ getLoginOptions(credentials: ScraperSpecificCredentials): {
16
19
  loginUrl: string;
17
20
  fields: {
18
21
  selector: string;
@@ -332,4 +332,4 @@ class BeinleumiGroupBaseScraper extends _baseScraperWithBrowser.BaseScraperWithB
332
332
 
333
333
  var _default = BeinleumiGroupBaseScraper;
334
334
  exports.default = _default;
335
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWJlaW5sZXVtaS1ncm91cC50cyJdLCJuYW1lcyI6WyJEQVRFX0ZPUk1BVCIsIk5PX1RSQU5TQUNUSU9OX0lOX0RBVEVfUkFOR0VfVEVYVCIsIkRBVEVfQ09MVU1OX0NMQVNTX0NPTVBMRVRFRCIsIkRBVEVfQ09MVU1OX0NMQVNTX1BFTkRJTkciLCJERVNDUklQVElPTl9DT0xVTU5fQ0xBU1NfQ09NUExFVEVEIiwiREVTQ1JJUFRJT05fQ09MVU1OX0NMQVNTX1BFTkRJTkciLCJSRUZFUkVOQ0VfQ09MVU1OX0NMQVNTIiwiREVCSVRfQ09MVU1OX0NMQVNTIiwiQ1JFRElUX0NPTFVNTl9DTEFTUyIsIkVSUk9SX01FU1NBR0VfQ0xBU1MiLCJBQ0NPVU5UU19OVU1CRVIiLCJDTE9TRV9TRUFSQ0hfQllfREFURVNfQlVUVE9OX0NMQVNTIiwiU0hPV19TRUFSQ0hfQllfREFURVNfQlVUVE9OX1ZBTFVFIiwiQ09NUExFVEVEX1RSQU5TQUNUSU9OU19UQUJMRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX1RBQkxFIiwiTkVYVF9QQUdFX0xJTksiLCJDVVJSRU5UX0JBTEFOQ0UiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNvcHkiLCJyZXBsYWNlIiwicGFyc2VGbG9hdCIsImdldFR4bkFtb3VudCIsInR4biIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsImNvbnZlcnRlZERhdGUiLCJkYXRlIiwidG9JU09TdHJpbmciLCJjb252ZXJ0ZWRBbW91bnQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2UiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50Iiwic3RhdHVzIiwiZGVzY3JpcHRpb24iLCJtZW1vIiwiZ2V0VHJhbnNhY3Rpb25EYXRlIiwidGRzIiwidHJhbnNhY3Rpb25UeXBlIiwidHJhbnNhY3Rpb25zQ29sc1R5cGVzIiwidHJpbSIsImdldFRyYW5zYWN0aW9uRGVzY3JpcHRpb24iLCJnZXRUcmFuc2FjdGlvblJlZmVyZW5jZSIsImdldFRyYW5zYWN0aW9uRGViaXQiLCJnZXRUcmFuc2FjdGlvbkNyZWRpdCIsImV4dHJhY3RUcmFuc2FjdGlvbkRldGFpbHMiLCJ0eG5Sb3ciLCJ0cmFuc2FjdGlvblN0YXR1cyIsImlubmVyVGRzIiwiaXRlbSIsImdldFRyYW5zYWN0aW9uc0NvbHNUeXBlQ2xhc3NlcyIsInBhZ2UiLCJ0YWJsZUxvY2F0b3IiLCJyZXN1bHQiLCJ0eXBlQ2xhc3Nlc09ianMiLCJ0ZCIsImluZGV4IiwiY29sQ2xhc3MiLCJnZXRBdHRyaWJ1dGUiLCJ0eXBlQ2xhc3NPYmoiLCJleHRyYWN0VHJhbnNhY3Rpb24iLCJwdXNoIiwiZXh0cmFjdFRyYW5zYWN0aW9ucyIsInRyYW5zYWN0aW9uc1Jvd3MiLCJ0cnMiLCJ0ciIsIkFycmF5IiwiZnJvbSIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiaW5uZXJUZXh0IiwiaXNOb1RyYW5zYWN0aW9uSW5EYXRlUmFuZ2VFcnJvciIsImhhc0Vycm9ySW5mb0VsZW1lbnQiLCJlcnJvclRleHQiLCIkZXZhbCIsImVycm9yRWxlbWVudCIsInNlYXJjaEJ5RGF0ZXMiLCJzdGFydERhdGUiLCJmb3JtYXQiLCJnZXRBY2NvdW50TnVtYmVyIiwic2VsZWN0ZWRTbmlmQWNjb3VudCIsIm9wdGlvbiIsImNoZWNrSWZIYXNOZXh0UGFnZSIsIm5hdmlnYXRlVG9OZXh0UGFnZSIsInNjcmFwZVRyYW5zYWN0aW9ucyIsIm5lZWRUb1BhZ2luYXRlIiwiaGFzTmV4dFBhZ2UiLCJjdXJyZW50UGFnZVR4bnMiLCJnZXRBY2NvdW50VHJhbnNhY3Rpb25zIiwiUHJvbWlzZSIsInJhY2UiLCJub1RyYW5zYWN0aW9uSW5SYW5nZUVycm9yIiwicGVuZGluZ1R4bnMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsImNvbXBsZXRlZFR4bnMiLCJDb21wbGV0ZWQiLCJnZXRDdXJyZW50QmFsYW5jZSIsImJhbGFuY2VTdHIiLCJ3YWl0Rm9yUG9zdExvZ2luIiwiZmV0Y2hBY2NvdW50RGF0YSIsImFjY291bnROdW1iZXIiLCJiYWxhbmNlIiwiZmV0Y2hBY2NvdW50cyIsImFjY291bnRzIiwiYWNjb3VudERhdGEiLCJCZWlubGV1bWlHcm91cEJhc2VTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiTE9HSU5fVVJMIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwicHJlQWN0aW9uIiwid2FpdEZvclRpbWVvdXQiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsIm9wdGlvbnMiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1vbWVudCIsIm1heCIsIm5hdmlnYXRlVG8iLCJUUkFOU0FDVElPTlNfVVJMIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFPQTs7QUFDQTs7QUFDQTs7Ozs7O0FBS0EsTUFBTUEsV0FBVyxHQUFHLFlBQXBCO0FBQ0EsTUFBTUMsaUNBQWlDLEdBQUcsOEJBQTFDO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsWUFBcEM7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxZQUFsQztB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OEcsTUFBQUEsUUFBUSxFQUFHLEdBQUUsS0FBS0MsU0FBVSxFQUR2QjtBQUVMQyxNQUFBQSxNQUFNLEVBQUVqSCxpQkFBaUIsQ0FBQ0MsV0FBRCxDQUZwQjtBQUdMaUgsTUFBQUEsb0JBQW9CLEVBQUUsY0FIakI7QUFJTEMsTUFBQUEsVUFBVSxFQUFFLFlBQVlkLGdCQUFnQixDQUFDLEtBQUsvQyxJQUFOLENBSm5DO0FBS0w4RCxNQUFBQSxlQUFlLEVBQUV6SCx1QkFBdUIsRUFMbkM7QUFNTDtBQUNBO0FBQ0EwSCxNQUFBQSxTQUFTLEVBQUUsWUFBWTtBQUNyQixjQUFNLEtBQUsvRCxJQUFMLENBQVVnRSxjQUFWLENBQXlCLElBQXpCLENBQU47QUFDRDtBQVZJLEtBQVA7QUFZRDs7QUFFRCxRQUFNQyxTQUFOLEdBQWtCO0FBQ2hCLFVBQU1DLGtCQUFrQixHQUFHLHVCQUFTQyxRQUFULENBQWtCLENBQWxCLEVBQXFCLE9BQXJCLEVBQThCQyxHQUE5QixDQUFrQyxDQUFsQyxFQUFxQyxLQUFyQyxDQUEzQjtBQUNBLFVBQU0zQyxTQUFTLEdBQUcsS0FBSzRDLE9BQUwsQ0FBYTVDLFNBQWIsSUFBMEJ5QyxrQkFBa0IsQ0FBQ0ksTUFBbkIsRUFBNUM7O0FBQ0EsVUFBTUMsV0FBVyxHQUFHQyxnQkFBT0MsR0FBUCxDQUFXUCxrQkFBWCxFQUErQixxQkFBT3pDLFNBQVAsQ0FBL0IsQ0FBcEI7O0FBRUEsVUFBTSxLQUFLaUQsVUFBTCxDQUFnQixLQUFLQyxnQkFBckIsQ0FBTjtBQUVBLFVBQU12QixRQUFRLEdBQUcsTUFBTUQsYUFBYSxDQUFDLEtBQUtuRCxJQUFOLEVBQVl1RSxXQUFaLENBQXBDO0FBRUEsV0FBTztBQUNMSyxNQUFBQSxPQUFPLEVBQUUsSUFESjtBQUVMeEIsTUFBQUE7QUFGSyxLQUFQO0FBSUQ7O0FBbkM0RDs7ZUFzQ2hERSx5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQge1xuICBmaWxsSW5wdXQsXG4gIGNsaWNrQnV0dG9uLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHBhZ2VFdmFsQWxsLFxuICBlbGVtZW50UHJlc2VudE9uUGFnZSxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uc0FjY291bnQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU2NyYXBlckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IE5PX1RSQU5TQUNUSU9OX0lOX0RBVEVfUkFOR0VfVEVYVCA9ICfXnNeQINeg157XpteQ15Ug16DXqteV16DXmdedINeR16DXldep15Ag15TXnteR15XXp9epJztcbmNvbnN0IERBVEVfQ09MVU1OX0NMQVNTX0NPTVBMRVRFRCA9ICdkYXRlIGZpcnN0JztcbmNvbnN0IERBVEVfQ09MVU1OX0NMQVNTX1BFTkRJTkcgPSAnZmlyc3QgZGF0ZSc7XG5jb25zdCBERVNDUklQVElPTl9DT0xVTU5fQ0xBU1NfQ09NUExFVEVEID0gJ3JlZmVyZW5jZSB3cmFwX25vcm1hbCc7XG5jb25zdCBERVNDUklQVElPTl9DT0xVTU5fQ0xBU1NfUEVORElORyA9ICdkZXRhaWxzIHdyYXBfbm9ybWFsJztcbmNvbnN0IFJFRkVSRU5DRV9DT0xVTU5fQ0xBU1MgPSAnZGV0YWlscyc7XG5jb25zdCBERUJJVF9DT0xVTU5fQ0xBU1MgPSAnZGViaXQnO1xuY29uc3QgQ1JFRElUX0NPTFVNTl9DTEFTUyA9ICdjcmVkaXQnO1xuY29uc3QgRVJST1JfTUVTU0FHRV9DTEFTUyA9ICdOT19EQVRBJztcbmNvbnN0IEFDQ09VTlRTX05VTUJFUiA9ICdkaXYuZmliaV9hY2NvdW50IHNwYW4uYWNjX251bSc7XG5jb25zdCBDTE9TRV9TRUFSQ0hfQllfREFURVNfQlVUVE9OX0NMQVNTID0gJ3VpLWRhdGVwaWNrZXItY2xvc2UnO1xuY29uc3QgU0hPV19TRUFSQ0hfQllfREFURVNfQlVUVE9OX1ZBTFVFID0gJ9eU16bXkic7XG5jb25zdCBDT01QTEVURURfVFJBTlNBQ1RJT05TX1RBQkxFID0gJ3RhYmxlI2RhdGFUYWJsZTA3Nyc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19UQUJMRSA9ICd0YWJsZSNkYXRhVGFibGUwMjMnO1xuY29uc3QgTkVYVF9QQUdFX0xJTksgPSAnYSNOcGFnZS5wYWdpbmcnO1xuY29uc3QgQ1VSUkVOVF9CQUxBTkNFID0gJy5tYWluX2JhbGFuY2UnO1xuXG50eXBlIFRyYW5zYWN0aW9uc0NvbHNUeXBlcyA9IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG50eXBlIFRyYW5zYWN0aW9uc1RyVGRzID0gc3RyaW5nW107XG50eXBlIFRyYW5zYWN0aW9uc1RyID0geyBpbm5lclRkczogVHJhbnNhY3Rpb25zVHJUZHMgfTtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIHJlZmVyZW5jZTogc3RyaW5nO1xuICBkYXRlOiBzdHJpbmc7XG4gIGNyZWRpdDogc3RyaW5nO1xuICBkZWJpdDogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXM7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbL0ZpYmlNZW51XFwvT25saW5lL107XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbL0ZpYmlNZW51XFwvTWFya2V0aW5nXFwvUHJpdmF0ZVxcL0hvbWUvXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN1c2VybmFtZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0QW1vdW50RGF0YShhbW91bnRTdHI6IHN0cmluZykge1xuICBjb25zdCBhbW91bnRTdHJDb3B5ID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIHJldHVybiBwYXJzZUZsb2F0KGFtb3VudFN0ckNvcHkpO1xufVxuXG5mdW5jdGlvbiBnZXRUeG5BbW91bnQodHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pIHtcbiAgY29uc3QgY3JlZGl0ID0gZ2V0QW1vdW50RGF0YSh0eG4uY3JlZGl0KTtcbiAgY29uc3QgZGViaXQgPSBnZXRBbW91bnREYXRhKHR4bi5kZWJpdCk7XG4gIHJldHVybiAoTnVtYmVyLmlzTmFOKGNyZWRpdCkgPyAwIDogY3JlZGl0KSAtIChOdW1iZXIuaXNOYU4oZGViaXQpID8gMCA6IGRlYml0KTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAoKHR4bik6IFRyYW5zYWN0aW9uID0+IHtcbiAgICBjb25zdCBjb252ZXJ0ZWREYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSBnZXRUeG5BbW91bnQodHhuKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGNvbnZlcnRlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgc3RhdHVzOiB0eG4uc3RhdHVzLFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbixcbiAgICAgIG1lbW86IHR4bi5tZW1vLFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkRhdGUodGRzOiBUcmFuc2FjdGlvbnNUclRkcywgdHJhbnNhY3Rpb25UeXBlOiBzdHJpbmcsIHRyYW5zYWN0aW9uc0NvbHNUeXBlczogVHJhbnNhY3Rpb25zQ29sc1R5cGVzKSB7XG4gIGlmICh0cmFuc2FjdGlvblR5cGUgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgcmV0dXJuICh0ZHNbdHJhbnNhY3Rpb25zQ29sc1R5cGVzW0RBVEVfQ09MVU1OX0NMQVNTX0NPTVBMRVRFRF1dIHx8ICcnKS50cmltKCk7XG4gIH1cbiAgcmV0dXJuICh0ZHNbdHJhbnNhY3Rpb25zQ29sc1R5cGVzW0RBVEVfQ09MVU1OX0NMQVNTX1BFTkRJTkddXSB8fCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkRlc2NyaXB0aW9uKHRkczogVHJhbnNhY3Rpb25zVHJUZHMsIHRyYW5zYWN0aW9uVHlwZTogc3RyaW5nLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXM6IFRyYW5zYWN0aW9uc0NvbHNUeXBlcykge1xuICBpZiAodHJhbnNhY3Rpb25UeXBlID09PSAnY29tcGxldGVkJykge1xuICAgIHJldHVybiAodGRzW3RyYW5zYWN0aW9uc0NvbHNUeXBlc1tERVNDUklQVElPTl9DT0xVTU5fQ0xBU1NfQ09NUExFVEVEXV0gfHwgJycpLnRyaW0oKTtcbiAgfVxuICByZXR1cm4gKHRkc1t0cmFuc2FjdGlvbnNDb2xzVHlwZXNbREVTQ1JJUFRJT05fQ09MVU1OX0NMQVNTX1BFTkRJTkddXSB8fCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblJlZmVyZW5jZSh0ZHM6IFRyYW5zYWN0aW9uc1RyVGRzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXM6IFRyYW5zYWN0aW9uc0NvbHNUeXBlcykge1xuICByZXR1cm4gKHRkc1t0cmFuc2FjdGlvbnNDb2xzVHlwZXNbUkVGRVJFTkNFX0NPTFVNTl9DTEFTU11dIHx8ICcnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRGViaXQodGRzOiBUcmFuc2FjdGlvbnNUclRkcywgdHJhbnNhY3Rpb25zQ29sc1R5cGVzOiBUcmFuc2FjdGlvbnNDb2xzVHlwZXMpIHtcbiAgcmV0dXJuICh0ZHNbdHJhbnNhY3Rpb25zQ29sc1R5cGVzW0RFQklUX0NPTFVNTl9DTEFTU11dIHx8ICcnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uQ3JlZGl0KHRkczogVHJhbnNhY3Rpb25zVHJUZHMsIHRyYW5zYWN0aW9uc0NvbHNUeXBlczogVHJhbnNhY3Rpb25zQ29sc1R5cGVzKSB7XG4gIHJldHVybiAodGRzW3RyYW5zYWN0aW9uc0NvbHNUeXBlc1tDUkVESVRfQ09MVU1OX0NMQVNTXV0gfHwgJycpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zYWN0aW9uRGV0YWlscyh0eG5Sb3c6IFRyYW5zYWN0aW9uc1RyLCB0cmFuc2FjdGlvblN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcywgdHJhbnNhY3Rpb25zQ29sc1R5cGVzOiBUcmFuc2FjdGlvbnNDb2xzVHlwZXMpOiBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBjb25zdCB0ZHMgPSB0eG5Sb3cuaW5uZXJUZHM7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgc3RhdHVzOiB0cmFuc2FjdGlvblN0YXR1cyxcbiAgICBkYXRlOiBnZXRUcmFuc2FjdGlvbkRhdGUodGRzLCB0cmFuc2FjdGlvblN0YXR1cywgdHJhbnNhY3Rpb25zQ29sc1R5cGVzKSxcbiAgICBkZXNjcmlwdGlvbjogZ2V0VHJhbnNhY3Rpb25EZXNjcmlwdGlvbih0ZHMsIHRyYW5zYWN0aW9uU3RhdHVzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXMpLFxuICAgIHJlZmVyZW5jZTogZ2V0VHJhbnNhY3Rpb25SZWZlcmVuY2UodGRzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXMpLFxuICAgIGRlYml0OiBnZXRUcmFuc2FjdGlvbkRlYml0KHRkcywgdHJhbnNhY3Rpb25zQ29sc1R5cGVzKSxcbiAgICBjcmVkaXQ6IGdldFRyYW5zYWN0aW9uQ3JlZGl0KHRkcywgdHJhbnNhY3Rpb25zQ29sc1R5cGVzKSxcbiAgfTtcblxuICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zQ29sc1R5cGVDbGFzc2VzKHBhZ2U6IFBhZ2UsIHRhYmxlTG9jYXRvcjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNDb2xzVHlwZXM+IHtcbiAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbnNDb2xzVHlwZXMgPSB7fTtcbiAgY29uc3QgdHlwZUNsYXNzZXNPYmpzID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgYCR7dGFibGVMb2NhdG9yfSB0Ym9keSB0cjpmaXJzdC1vZi10eXBlIHRkYCwgbnVsbCwgKHRkcykgPT4ge1xuICAgIHJldHVybiB0ZHMubWFwKCh0ZCwgaW5kZXgpID0+ICh7XG4gICAgICBjb2xDbGFzczogdGQuZ2V0QXR0cmlidXRlKCdjbGFzcycpLFxuICAgICAgaW5kZXgsXG4gICAgfSkpO1xuICB9KTtcblxuICBmb3IgKGNvbnN0IHR5cGVDbGFzc09iaiBvZiB0eXBlQ2xhc3Nlc09ianMpIHtcbiAgICBpZiAodHlwZUNsYXNzT2JqLmNvbENsYXNzKSB7XG4gICAgICByZXN1bHRbdHlwZUNsYXNzT2JqLmNvbENsYXNzXSA9IHR5cGVDbGFzc09iai5pbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zYWN0aW9uKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLCB0cmFuc2FjdGlvblN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcywgdHhuUm93OiBUcmFuc2FjdGlvbnNUciwgdHJhbnNhY3Rpb25zQ29sc1R5cGVzOiBUcmFuc2FjdGlvbnNDb2xzVHlwZXMpIHtcbiAgY29uc3QgdHhuID0gZXh0cmFjdFRyYW5zYWN0aW9uRGV0YWlscyh0eG5Sb3csIHRyYW5zYWN0aW9uU3RhdHVzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXMpO1xuICBpZiAodHhuLmRhdGUgIT09ICcnKSB7XG4gICAgdHhucy5wdXNoKHR4bik7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCB0YWJsZUxvY2F0b3I6IHN0cmluZywgdHJhbnNhY3Rpb25TdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMpIHtcbiAgY29uc3QgdHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgY29uc3QgdHJhbnNhY3Rpb25zQ29sc1R5cGVzID0gYXdhaXQgZ2V0VHJhbnNhY3Rpb25zQ29sc1R5cGVDbGFzc2VzKHBhZ2UsIHRhYmxlTG9jYXRvcik7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb25zUm93cyA9IGF3YWl0IHBhZ2VFdmFsQWxsPFRyYW5zYWN0aW9uc1RyW10+KHBhZ2UsIGAke3RhYmxlTG9jYXRvcn0gdGJvZHkgdHJgLCBbXSwgKHRycykgPT4ge1xuICAgIHJldHVybiB0cnMubWFwKCh0cikgPT4gKHtcbiAgICAgIGlubmVyVGRzOiBBcnJheS5mcm9tKHRyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZCcpKS5tYXAoKHRkKSA9PiB0ZC5pbm5lclRleHQpLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgZm9yIChjb25zdCB0eG5Sb3cgb2YgdHJhbnNhY3Rpb25zUm93cykge1xuICAgIGV4dHJhY3RUcmFuc2FjdGlvbih0eG5zLCB0cmFuc2FjdGlvblN0YXR1cywgdHhuUm93LCB0cmFuc2FjdGlvbnNDb2xzVHlwZXMpO1xuICB9XG4gIHJldHVybiB0eG5zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc05vVHJhbnNhY3Rpb25JbkRhdGVSYW5nZUVycm9yKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgaGFzRXJyb3JJbmZvRWxlbWVudCA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIGAuJHtFUlJPUl9NRVNTQUdFX0NMQVNTfWApO1xuICBpZiAoaGFzRXJyb3JJbmZvRWxlbWVudCkge1xuICAgIGNvbnN0IGVycm9yVGV4dCA9IGF3YWl0IHBhZ2UuJGV2YWwoYC4ke0VSUk9SX01FU1NBR0VfQ0xBU1N9YCwgKGVycm9yRWxlbWVudCkgPT4ge1xuICAgICAgcmV0dXJuIChlcnJvckVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICB9KTtcbiAgICByZXR1cm4gZXJyb3JUZXh0LnRyaW0oKSA9PT0gTk9fVFJBTlNBQ1RJT05fSU5fREFURV9SQU5HRV9URVhUO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VhcmNoQnlEYXRlcyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCkge1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnYSN0YWJIZWFkZXI0Jyk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZGl2I2ZpYmlfZGF0ZXMnKTtcbiAgYXdhaXQgZmlsbElucHV0KFxuICAgIHBhZ2UsXG4gICAgJ2lucHV0I2Zyb21EYXRlJyxcbiAgICBzdGFydERhdGUuZm9ybWF0KERBVEVfRk9STUFUKSxcbiAgKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgYGJ1dHRvbltjbGFzcyo9JHtDTE9TRV9TRUFSQ0hfQllfREFURVNfQlVUVE9OX0NMQVNTfV1gKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgYGlucHV0W3ZhbHVlPSR7U0hPV19TRUFSQ0hfQllfREFURVNfQlVUVE9OX1ZBTFVFfV1gKTtcbiAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24ocGFnZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnROdW1iZXIocGFnZTogUGFnZSkge1xuICBjb25zdCBzZWxlY3RlZFNuaWZBY2NvdW50ID0gYXdhaXQgcGFnZS4kZXZhbChBQ0NPVU5UU19OVU1CRVIsIChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gKG9wdGlvbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcblxuICByZXR1cm4gc2VsZWN0ZWRTbmlmQWNjb3VudC5yZXBsYWNlKCcvJywgJ18nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2hlY2tJZkhhc05leHRQYWdlKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIE5FWFRfUEFHRV9MSU5LKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVUb05leHRQYWdlKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgTkVYVF9QQUdFX0xJTkspO1xuICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbn1cblxuLyogQ291bGRuJ3QgcmVwcm9kdWNlIHNjZW5hcmlvIHdpdGggbXVsdGlwbGUgcGFnZXMgb2YgcGVuZGluZyB0cmFuc2FjdGlvbnMgLSBTaG91bGQgc3VwcG9ydCBpZiBleGlzdHMgc3VjaCBjYXNlLlxuICAgbmVlZFRvUGFnaW5hdGUgaXMgZmFsc2UgaWYgc2NyYXBpbmcgcGVuZGluZyB0cmFuc2FjdGlvbnMgKi9cbmFzeW5jIGZ1bmN0aW9uIHNjcmFwZVRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCB0YWJsZUxvY2F0b3I6IHN0cmluZywgdHJhbnNhY3Rpb25TdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMsIG5lZWRUb1BhZ2luYXRlOiBib29sZWFuKSB7XG4gIGNvbnN0IHR4bnMgPSBbXTtcbiAgbGV0IGhhc05leHRQYWdlID0gZmFsc2U7XG5cbiAgZG8ge1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlVHhucyA9IGF3YWl0IGV4dHJhY3RUcmFuc2FjdGlvbnMocGFnZSwgdGFibGVMb2NhdG9yLCB0cmFuc2FjdGlvblN0YXR1cyk7XG4gICAgdHhucy5wdXNoKC4uLmN1cnJlbnRQYWdlVHhucyk7XG4gICAgaWYgKG5lZWRUb1BhZ2luYXRlKSB7XG4gICAgICBoYXNOZXh0UGFnZSA9IGF3YWl0IGNoZWNrSWZIYXNOZXh0UGFnZShwYWdlKTtcbiAgICAgIGlmIChoYXNOZXh0UGFnZSkge1xuICAgICAgICBhd2FpdCBuYXZpZ2F0ZVRvTmV4dFBhZ2UocGFnZSk7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChoYXNOZXh0UGFnZSk7XG5cbiAgcmV0dXJuIGNvbnZlcnRUcmFuc2FjdGlvbnModHhucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnRUcmFuc2FjdGlvbnMocGFnZTogUGFnZSkge1xuICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZGl2W2lkKj1cXCdkaXZUYWJsZVxcJ10nLCBmYWxzZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAuJHtFUlJPUl9NRVNTQUdFX0NMQVNTfWAsIGZhbHNlKSxcbiAgXSk7XG5cbiAgY29uc3Qgbm9UcmFuc2FjdGlvbkluUmFuZ2VFcnJvciA9IGF3YWl0IGlzTm9UcmFuc2FjdGlvbkluRGF0ZVJhbmdlRXJyb3IocGFnZSk7XG4gIGlmIChub1RyYW5zYWN0aW9uSW5SYW5nZUVycm9yKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgcGVuZGluZ1R4bnMgPSBhd2FpdCBzY3JhcGVUcmFuc2FjdGlvbnMocGFnZSwgUEVORElOR19UUkFOU0FDVElPTlNfVEFCTEUsXG4gICAgVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLCBmYWxzZSk7XG4gIGNvbnN0IGNvbXBsZXRlZFR4bnMgPSBhd2FpdCBzY3JhcGVUcmFuc2FjdGlvbnMocGFnZSwgQ09NUExFVEVEX1RSQU5TQUNUSU9OU19UQUJMRSxcbiAgICBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCwgdHJ1ZSk7XG4gIGNvbnN0IHR4bnMgPSBbXG4gICAgLi4ucGVuZGluZ1R4bnMsXG4gICAgLi4uY29tcGxldGVkVHhucyxcbiAgXTtcbiAgcmV0dXJuIHR4bnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRCYWxhbmNlKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgYmFsYW5jZVN0ciA9IGF3YWl0IHBhZ2UuJGV2YWwoQ1VSUkVOVF9CQUxBTkNFLCAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuIChvcHRpb24gYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgfSk7XG4gIHJldHVybiBnZXRBbW91bnREYXRhKGJhbGFuY2VTdHIpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvclBvc3RMb2dpbihwYWdlOiBQYWdlKSB7XG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnI21hdGFmTG9nb3V0TGluaycsIHRydWUpLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnI3ZhbGlkYXRpb25Nc2cnLCB0cnVlKSxcbiAgXSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudERhdGEocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgYXdhaXQgc2VhcmNoQnlEYXRlcyhwYWdlLCBzdGFydERhdGUpO1xuICBjb25zdCBhY2NvdW50TnVtYmVyID0gYXdhaXQgZ2V0QWNjb3VudE51bWJlcihwYWdlKTtcbiAgY29uc3QgYmFsYW5jZSA9IGF3YWl0IGdldEN1cnJlbnRCYWxhbmNlKHBhZ2UpO1xuICBjb25zdCB0eG5zID0gYXdhaXQgZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlKTtcblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgdHhucyxcbiAgICBiYWxhbmNlLFxuICB9O1xufVxuXG4vLyBUT0RPOiBBZGQgc3VwcG9ydCBvZiBtdWx0aXBsZSBhY2NvdW50c1xuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50cyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCkge1xuICBjb25zdCBhY2NvdW50czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG4gIGNvbnN0IGFjY291bnREYXRhID0gYXdhaXQgZmV0Y2hBY2NvdW50RGF0YShwYWdlLCBzdGFydERhdGUpO1xuICBhY2NvdW50cy5wdXNoKGFjY291bnREYXRhKTtcbiAgcmV0dXJuIGFjY291bnRzO1xufVxuXG5jbGFzcyBCZWlubGV1bWlHcm91cEJhc2VTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB7XG4gIEJBU0VfVVJMID0gJyc7XG5cbiAgTE9HSU5fVVJMID0gJyc7XG5cbiAgVFJBTlNBQ1RJT05TX1VSTCA9ICcnO1xuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHt0aGlzLkxPR0lOX1VSTH1gLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJyNjb250aW51ZUJ0bicsXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB3YWl0Rm9yUG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgICAvLyBIQUNLOiBGb3Igc29tZSByZWFzb24sIHRob3VnaCB0aGUgbG9naW4gYnV0dG9uICgjY29udGludWVCdG4pIGlzIHByZXNlbnQgYW5kIHZpc2libGUsIHRoZSBjbGljayBhY3Rpb24gZG9lcyBub3QgcGVyZm9ybS5cbiAgICAgIC8vIEFkZGluZyB0aGlzIGRlbGF5IGZpeGVzIHRoZSBpc3N1ZS5cbiAgICAgIHByZUFjdGlvbjogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclRpbWVvdXQoMTAwMCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8odGhpcy5UUkFOU0FDVElPTlNfVVJMKTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hBY2NvdW50cyh0aGlzLnBhZ2UsIHN0YXJ0TW9tZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCZWlubGV1bWlHcm91cEJhc2VTY3JhcGVyO1xuIl19
335
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWJlaW5sZXVtaS1ncm91cC50cyJdLCJuYW1lcyI6WyJEQVRFX0ZPUk1BVCIsIk5PX1RSQU5TQUNUSU9OX0lOX0RBVEVfUkFOR0VfVEVYVCIsIkRBVEVfQ09MVU1OX0NMQVNTX0NPTVBMRVRFRCIsIkRBVEVfQ09MVU1OX0NMQVNTX1BFTkRJTkciLCJERVNDUklQVElPTl9DT0xVTU5fQ0xBU1NfQ09NUExFVEVEIiwiREVTQ1JJUFRJT05fQ09MVU1OX0NMQVNTX1BFTkRJTkciLCJSRUZFUkVOQ0VfQ09MVU1OX0NMQVNTIiwiREVCSVRfQ09MVU1OX0NMQVNTIiwiQ1JFRElUX0NPTFVNTl9DTEFTUyIsIkVSUk9SX01FU1NBR0VfQ0xBU1MiLCJBQ0NPVU5UU19OVU1CRVIiLCJDTE9TRV9TRUFSQ0hfQllfREFURVNfQlVUVE9OX0NMQVNTIiwiU0hPV19TRUFSQ0hfQllfREFURVNfQlVUVE9OX1ZBTFVFIiwiQ09NUExFVEVEX1RSQU5TQUNUSU9OU19UQUJMRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX1RBQkxFIiwiTkVYVF9QQUdFX0xJTksiLCJDVVJSRU5UX0JBTEFOQ0UiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNvcHkiLCJyZXBsYWNlIiwicGFyc2VGbG9hdCIsImdldFR4bkFtb3VudCIsInR4biIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsImNvbnZlcnRlZERhdGUiLCJkYXRlIiwidG9JU09TdHJpbmciLCJjb252ZXJ0ZWRBbW91bnQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2UiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50Iiwic3RhdHVzIiwiZGVzY3JpcHRpb24iLCJtZW1vIiwiZ2V0VHJhbnNhY3Rpb25EYXRlIiwidGRzIiwidHJhbnNhY3Rpb25UeXBlIiwidHJhbnNhY3Rpb25zQ29sc1R5cGVzIiwidHJpbSIsImdldFRyYW5zYWN0aW9uRGVzY3JpcHRpb24iLCJnZXRUcmFuc2FjdGlvblJlZmVyZW5jZSIsImdldFRyYW5zYWN0aW9uRGViaXQiLCJnZXRUcmFuc2FjdGlvbkNyZWRpdCIsImV4dHJhY3RUcmFuc2FjdGlvbkRldGFpbHMiLCJ0eG5Sb3ciLCJ0cmFuc2FjdGlvblN0YXR1cyIsImlubmVyVGRzIiwiaXRlbSIsImdldFRyYW5zYWN0aW9uc0NvbHNUeXBlQ2xhc3NlcyIsInBhZ2UiLCJ0YWJsZUxvY2F0b3IiLCJyZXN1bHQiLCJ0eXBlQ2xhc3Nlc09ianMiLCJ0ZCIsImluZGV4IiwiY29sQ2xhc3MiLCJnZXRBdHRyaWJ1dGUiLCJ0eXBlQ2xhc3NPYmoiLCJleHRyYWN0VHJhbnNhY3Rpb24iLCJwdXNoIiwiZXh0cmFjdFRyYW5zYWN0aW9ucyIsInRyYW5zYWN0aW9uc1Jvd3MiLCJ0cnMiLCJ0ciIsIkFycmF5IiwiZnJvbSIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiaW5uZXJUZXh0IiwiaXNOb1RyYW5zYWN0aW9uSW5EYXRlUmFuZ2VFcnJvciIsImhhc0Vycm9ySW5mb0VsZW1lbnQiLCJlcnJvclRleHQiLCIkZXZhbCIsImVycm9yRWxlbWVudCIsInNlYXJjaEJ5RGF0ZXMiLCJzdGFydERhdGUiLCJmb3JtYXQiLCJnZXRBY2NvdW50TnVtYmVyIiwic2VsZWN0ZWRTbmlmQWNjb3VudCIsIm9wdGlvbiIsImNoZWNrSWZIYXNOZXh0UGFnZSIsIm5hdmlnYXRlVG9OZXh0UGFnZSIsInNjcmFwZVRyYW5zYWN0aW9ucyIsIm5lZWRUb1BhZ2luYXRlIiwiaGFzTmV4dFBhZ2UiLCJjdXJyZW50UGFnZVR4bnMiLCJnZXRBY2NvdW50VHJhbnNhY3Rpb25zIiwiUHJvbWlzZSIsInJhY2UiLCJub1RyYW5zYWN0aW9uSW5SYW5nZUVycm9yIiwicGVuZGluZ1R4bnMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsImNvbXBsZXRlZFR4bnMiLCJDb21wbGV0ZWQiLCJnZXRDdXJyZW50QmFsYW5jZSIsImJhbGFuY2VTdHIiLCJ3YWl0Rm9yUG9zdExvZ2luIiwiZmV0Y2hBY2NvdW50RGF0YSIsImFjY291bnROdW1iZXIiLCJiYWxhbmNlIiwiZmV0Y2hBY2NvdW50cyIsImFjY291bnRzIiwiYWNjb3VudERhdGEiLCJCZWlubGV1bWlHcm91cEJhc2VTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiTE9HSU5fVVJMIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwicHJlQWN0aW9uIiwid2FpdEZvclRpbWVvdXQiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsIm9wdGlvbnMiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1vbWVudCIsIm1heCIsIm5hdmlnYXRlVG8iLCJUUkFOU0FDVElPTlNfVVJMIiwic3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFPQTs7QUFDQTs7QUFDQTs7Ozs7O0FBSUEsTUFBTUEsV0FBVyxHQUFHLFlBQXBCO0FBQ0EsTUFBTUMsaUNBQWlDLEdBQUcsOEJBQTFDO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsWUFBcEM7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxZQUFsQztB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OEcsTUFBQUEsUUFBUSxFQUFHLEdBQUUsS0FBS0MsU0FBVSxFQUR2QjtBQUVMQyxNQUFBQSxNQUFNLEVBQUVqSCxpQkFBaUIsQ0FBQ0MsV0FBRCxDQUZwQjtBQUdMaUgsTUFBQUEsb0JBQW9CLEVBQUUsY0FIakI7QUFJTEMsTUFBQUEsVUFBVSxFQUFFLFlBQVlkLGdCQUFnQixDQUFDLEtBQUsvQyxJQUFOLENBSm5DO0FBS0w4RCxNQUFBQSxlQUFlLEVBQUV6SCx1QkFBdUIsRUFMbkM7QUFNTDtBQUNBO0FBQ0EwSCxNQUFBQSxTQUFTLEVBQUUsWUFBWTtBQUNyQixjQUFNLEtBQUsvRCxJQUFMLENBQVVnRSxjQUFWLENBQXlCLElBQXpCLENBQU47QUFDRDtBQVZJLEtBQVA7QUFZRDs7QUFFRCxRQUFNQyxTQUFOLEdBQWtCO0FBQ2hCLFVBQU1DLGtCQUFrQixHQUFHLHVCQUFTQyxRQUFULENBQWtCLENBQWxCLEVBQXFCLE9BQXJCLEVBQThCQyxHQUE5QixDQUFrQyxDQUFsQyxFQUFxQyxLQUFyQyxDQUEzQjtBQUNBLFVBQU0zQyxTQUFTLEdBQUcsS0FBSzRDLE9BQUwsQ0FBYTVDLFNBQWIsSUFBMEJ5QyxrQkFBa0IsQ0FBQ0ksTUFBbkIsRUFBNUM7O0FBQ0EsVUFBTUMsV0FBVyxHQUFHQyxnQkFBT0MsR0FBUCxDQUFXUCxrQkFBWCxFQUErQixxQkFBT3pDLFNBQVAsQ0FBL0IsQ0FBcEI7O0FBRUEsVUFBTSxLQUFLaUQsVUFBTCxDQUFnQixLQUFLQyxnQkFBckIsQ0FBTjtBQUVBLFVBQU12QixRQUFRLEdBQUcsTUFBTUQsYUFBYSxDQUFDLEtBQUtuRCxJQUFOLEVBQVl1RSxXQUFaLENBQXBDO0FBRUEsV0FBTztBQUNMSyxNQUFBQSxPQUFPLEVBQUUsSUFESjtBQUVMeEIsTUFBQUE7QUFGSyxLQUFQO0FBSUQ7O0FBbkN3Rjs7ZUFzQzVFRSx5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQge1xuICBmaWxsSW5wdXQsXG4gIGNsaWNrQnV0dG9uLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHBhZ2VFdmFsQWxsLFxuICBlbGVtZW50UHJlc2VudE9uUGFnZSxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uc0FjY291bnQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IE5PX1RSQU5TQUNUSU9OX0lOX0RBVEVfUkFOR0VfVEVYVCA9ICfXnNeQINeg157XpteQ15Ug16DXqteV16DXmdedINeR16DXldep15Ag15TXnteR15XXp9epJztcbmNvbnN0IERBVEVfQ09MVU1OX0NMQVNTX0NPTVBMRVRFRCA9ICdkYXRlIGZpcnN0JztcbmNvbnN0IERBVEVfQ09MVU1OX0NMQVNTX1BFTkRJTkcgPSAnZmlyc3QgZGF0ZSc7XG5jb25zdCBERVNDUklQVElPTl9DT0xVTU5fQ0xBU1NfQ09NUExFVEVEID0gJ3JlZmVyZW5jZSB3cmFwX25vcm1hbCc7XG5jb25zdCBERVNDUklQVElPTl9DT0xVTU5fQ0xBU1NfUEVORElORyA9ICdkZXRhaWxzIHdyYXBfbm9ybWFsJztcbmNvbnN0IFJFRkVSRU5DRV9DT0xVTU5fQ0xBU1MgPSAnZGV0YWlscyc7XG5jb25zdCBERUJJVF9DT0xVTU5fQ0xBU1MgPSAnZGViaXQnO1xuY29uc3QgQ1JFRElUX0NPTFVNTl9DTEFTUyA9ICdjcmVkaXQnO1xuY29uc3QgRVJST1JfTUVTU0FHRV9DTEFTUyA9ICdOT19EQVRBJztcbmNvbnN0IEFDQ09VTlRTX05VTUJFUiA9ICdkaXYuZmliaV9hY2NvdW50IHNwYW4uYWNjX251bSc7XG5jb25zdCBDTE9TRV9TRUFSQ0hfQllfREFURVNfQlVUVE9OX0NMQVNTID0gJ3VpLWRhdGVwaWNrZXItY2xvc2UnO1xuY29uc3QgU0hPV19TRUFSQ0hfQllfREFURVNfQlVUVE9OX1ZBTFVFID0gJ9eU16bXkic7XG5jb25zdCBDT01QTEVURURfVFJBTlNBQ1RJT05TX1RBQkxFID0gJ3RhYmxlI2RhdGFUYWJsZTA3Nyc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19UQUJMRSA9ICd0YWJsZSNkYXRhVGFibGUwMjMnO1xuY29uc3QgTkVYVF9QQUdFX0xJTksgPSAnYSNOcGFnZS5wYWdpbmcnO1xuY29uc3QgQ1VSUkVOVF9CQUxBTkNFID0gJy5tYWluX2JhbGFuY2UnO1xuXG50eXBlIFRyYW5zYWN0aW9uc0NvbHNUeXBlcyA9IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG50eXBlIFRyYW5zYWN0aW9uc1RyVGRzID0gc3RyaW5nW107XG50eXBlIFRyYW5zYWN0aW9uc1RyID0geyBpbm5lclRkczogVHJhbnNhY3Rpb25zVHJUZHMgfTtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIHJlZmVyZW5jZTogc3RyaW5nO1xuICBkYXRlOiBzdHJpbmc7XG4gIGNyZWRpdDogc3RyaW5nO1xuICBkZWJpdDogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXM7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbL0ZpYmlNZW51XFwvT25saW5lL107XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbL0ZpYmlNZW51XFwvTWFya2V0aW5nXFwvUHJpdmF0ZVxcL0hvbWUvXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXJuYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBnZXRBbW91bnREYXRhKGFtb3VudFN0cjogc3RyaW5nKSB7XG4gIGNvbnN0IGFtb3VudFN0ckNvcHkgPSBhbW91bnRTdHIucmVwbGFjZSgnLCcsICcnKTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoYW1vdW50U3RyQ29weSk7XG59XG5cbmZ1bmN0aW9uIGdldFR4bkFtb3VudCh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbikge1xuICBjb25zdCBjcmVkaXQgPSBnZXRBbW91bnREYXRhKHR4bi5jcmVkaXQpO1xuICBjb25zdCBkZWJpdCA9IGdldEFtb3VudERhdGEodHhuLmRlYml0KTtcbiAgcmV0dXJuIChOdW1iZXIuaXNOYU4oY3JlZGl0KSA/IDAgOiBjcmVkaXQpIC0gKE51bWJlci5pc05hTihkZWJpdCkgPyAwIDogZGViaXQpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKTogVHJhbnNhY3Rpb24gPT4ge1xuICAgIGNvbnN0IGNvbnZlcnRlZERhdGUgPSBtb21lbnQodHhuLmRhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IGNvbnZlcnRlZEFtb3VudCA9IGdldFR4bkFtb3VudCh0eG4pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIGlkZW50aWZpZXI6IHR4bi5yZWZlcmVuY2UgPyBwYXJzZUludCh0eG4ucmVmZXJlbmNlLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICBkYXRlOiBjb252ZXJ0ZWREYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBjb252ZXJ0ZWRBbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBjb252ZXJ0ZWRBbW91bnQsXG4gICAgICBzdGF0dXM6IHR4bi5zdGF0dXMsXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmRlc2NyaXB0aW9uLFxuICAgICAgbWVtbzogdHhuLm1lbW8sXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRGF0ZSh0ZHM6IFRyYW5zYWN0aW9uc1RyVGRzLCB0cmFuc2FjdGlvblR5cGU6IHN0cmluZywgdHJhbnNhY3Rpb25zQ29sc1R5cGVzOiBUcmFuc2FjdGlvbnNDb2xzVHlwZXMpIHtcbiAgaWYgKHRyYW5zYWN0aW9uVHlwZSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICByZXR1cm4gKHRkc1t0cmFuc2FjdGlvbnNDb2xzVHlwZXNbREFURV9DT0xVTU5fQ0xBU1NfQ09NUExFVEVEXV0gfHwgJycpLnRyaW0oKTtcbiAgfVxuICByZXR1cm4gKHRkc1t0cmFuc2FjdGlvbnNDb2xzVHlwZXNbREFURV9DT0xVTU5fQ0xBU1NfUEVORElOR11dIHx8ICcnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRGVzY3JpcHRpb24odGRzOiBUcmFuc2FjdGlvbnNUclRkcywgdHJhbnNhY3Rpb25UeXBlOiBzdHJpbmcsIHRyYW5zYWN0aW9uc0NvbHNUeXBlczogVHJhbnNhY3Rpb25zQ29sc1R5cGVzKSB7XG4gIGlmICh0cmFuc2FjdGlvblR5cGUgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgcmV0dXJuICh0ZHNbdHJhbnNhY3Rpb25zQ29sc1R5cGVzW0RFU0NSSVBUSU9OX0NPTFVNTl9DTEFTU19DT01QTEVURURdXSB8fCAnJykudHJpbSgpO1xuICB9XG4gIHJldHVybiAodGRzW3RyYW5zYWN0aW9uc0NvbHNUeXBlc1tERVNDUklQVElPTl9DT0xVTU5fQ0xBU1NfUEVORElOR11dIHx8ICcnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uUmVmZXJlbmNlKHRkczogVHJhbnNhY3Rpb25zVHJUZHMsIHRyYW5zYWN0aW9uc0NvbHNUeXBlczogVHJhbnNhY3Rpb25zQ29sc1R5cGVzKSB7XG4gIHJldHVybiAodGRzW3RyYW5zYWN0aW9uc0NvbHNUeXBlc1tSRUZFUkVOQ0VfQ09MVU1OX0NMQVNTXV0gfHwgJycpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25EZWJpdCh0ZHM6IFRyYW5zYWN0aW9uc1RyVGRzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXM6IFRyYW5zYWN0aW9uc0NvbHNUeXBlcykge1xuICByZXR1cm4gKHRkc1t0cmFuc2FjdGlvbnNDb2xzVHlwZXNbREVCSVRfQ09MVU1OX0NMQVNTXV0gfHwgJycpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25DcmVkaXQodGRzOiBUcmFuc2FjdGlvbnNUclRkcywgdHJhbnNhY3Rpb25zQ29sc1R5cGVzOiBUcmFuc2FjdGlvbnNDb2xzVHlwZXMpIHtcbiAgcmV0dXJuICh0ZHNbdHJhbnNhY3Rpb25zQ29sc1R5cGVzW0NSRURJVF9DT0xVTU5fQ0xBU1NdXSB8fCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VHJhbnNhY3Rpb25EZXRhaWxzKHR4blJvdzogVHJhbnNhY3Rpb25zVHIsIHRyYW5zYWN0aW9uU3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXM6IFRyYW5zYWN0aW9uc0NvbHNUeXBlcyk6IFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IHRkcyA9IHR4blJvdy5pbm5lclRkcztcbiAgY29uc3QgaXRlbSA9IHtcbiAgICBzdGF0dXM6IHRyYW5zYWN0aW9uU3RhdHVzLFxuICAgIGRhdGU6IGdldFRyYW5zYWN0aW9uRGF0ZSh0ZHMsIHRyYW5zYWN0aW9uU3RhdHVzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXMpLFxuICAgIGRlc2NyaXB0aW9uOiBnZXRUcmFuc2FjdGlvbkRlc2NyaXB0aW9uKHRkcywgdHJhbnNhY3Rpb25TdGF0dXMsIHRyYW5zYWN0aW9uc0NvbHNUeXBlcyksXG4gICAgcmVmZXJlbmNlOiBnZXRUcmFuc2FjdGlvblJlZmVyZW5jZSh0ZHMsIHRyYW5zYWN0aW9uc0NvbHNUeXBlcyksXG4gICAgZGViaXQ6IGdldFRyYW5zYWN0aW9uRGViaXQodGRzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXMpLFxuICAgIGNyZWRpdDogZ2V0VHJhbnNhY3Rpb25DcmVkaXQodGRzLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXMpLFxuICB9O1xuXG4gIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNDb2xzVHlwZUNsYXNzZXMocGFnZTogUGFnZSwgdGFibGVMb2NhdG9yOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0NvbHNUeXBlcz4ge1xuICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uc0NvbHNUeXBlcyA9IHt9O1xuICBjb25zdCB0eXBlQ2xhc3Nlc09ianMgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCBgJHt0YWJsZUxvY2F0b3J9IHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGRgLCBudWxsLCAodGRzKSA9PiB7XG4gICAgcmV0dXJuIHRkcy5tYXAoKHRkLCBpbmRleCkgPT4gKHtcbiAgICAgIGNvbENsYXNzOiB0ZC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyksXG4gICAgICBpbmRleCxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIGZvciAoY29uc3QgdHlwZUNsYXNzT2JqIG9mIHR5cGVDbGFzc2VzT2Jqcykge1xuICAgIGlmICh0eXBlQ2xhc3NPYmouY29sQ2xhc3MpIHtcbiAgICAgIHJlc3VsdFt0eXBlQ2xhc3NPYmouY29sQ2xhc3NdID0gdHlwZUNsYXNzT2JqLmluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VHJhbnNhY3Rpb24odHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHRyYW5zYWN0aW9uU3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLCB0eG5Sb3c6IFRyYW5zYWN0aW9uc1RyLCB0cmFuc2FjdGlvbnNDb2xzVHlwZXM6IFRyYW5zYWN0aW9uc0NvbHNUeXBlcykge1xuICBjb25zdCB0eG4gPSBleHRyYWN0VHJhbnNhY3Rpb25EZXRhaWxzKHR4blJvdywgdHJhbnNhY3Rpb25TdGF0dXMsIHRyYW5zYWN0aW9uc0NvbHNUeXBlcyk7XG4gIGlmICh0eG4uZGF0ZSAhPT0gJycpIHtcbiAgICB0eG5zLnB1c2godHhuKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0VHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIHRhYmxlTG9jYXRvcjogc3RyaW5nLCB0cmFuc2FjdGlvblN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcykge1xuICBjb25zdCB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSA9IFtdO1xuICBjb25zdCB0cmFuc2FjdGlvbnNDb2xzVHlwZXMgPSBhd2FpdCBnZXRUcmFuc2FjdGlvbnNDb2xzVHlwZUNsYXNzZXMocGFnZSwgdGFibGVMb2NhdG9yKTtcblxuICBjb25zdCB0cmFuc2FjdGlvbnNSb3dzID0gYXdhaXQgcGFnZUV2YWxBbGw8VHJhbnNhY3Rpb25zVHJbXT4ocGFnZSwgYCR7dGFibGVMb2NhdG9yfSB0Ym9keSB0cmAsIFtdLCAodHJzKSA9PiB7XG4gICAgcmV0dXJuIHRycy5tYXAoKHRyKSA9PiAoe1xuICAgICAgaW5uZXJUZHM6IEFycmF5LmZyb20odHIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RkJykpLm1hcCgodGQpID0+IHRkLmlubmVyVGV4dCksXG4gICAgfSkpO1xuICB9KTtcblxuICBmb3IgKGNvbnN0IHR4blJvdyBvZiB0cmFuc2FjdGlvbnNSb3dzKSB7XG4gICAgZXh0cmFjdFRyYW5zYWN0aW9uKHR4bnMsIHRyYW5zYWN0aW9uU3RhdHVzLCB0eG5Sb3csIHRyYW5zYWN0aW9uc0NvbHNUeXBlcyk7XG4gIH1cbiAgcmV0dXJuIHR4bnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzTm9UcmFuc2FjdGlvbkluRGF0ZVJhbmdlRXJyb3IocGFnZTogUGFnZSkge1xuICBjb25zdCBoYXNFcnJvckluZm9FbGVtZW50ID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgYC4ke0VSUk9SX01FU1NBR0VfQ0xBU1N9YCk7XG4gIGlmIChoYXNFcnJvckluZm9FbGVtZW50KSB7XG4gICAgY29uc3QgZXJyb3JUZXh0ID0gYXdhaXQgcGFnZS4kZXZhbChgLiR7RVJST1JfTUVTU0FHRV9DTEFTU31gLCAoZXJyb3JFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gKGVycm9yRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgIH0pO1xuICAgIHJldHVybiBlcnJvclRleHQudHJpbSgpID09PSBOT19UUkFOU0FDVElPTl9JTl9EQVRFX1JBTkdFX1RFWFQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZWFyY2hCeURhdGVzKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KSB7XG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICdhI3RhYkhlYWRlcjQnKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdkaXYjZmliaV9kYXRlcycpO1xuICBhd2FpdCBmaWxsSW5wdXQoXG4gICAgcGFnZSxcbiAgICAnaW5wdXQjZnJvbURhdGUnLFxuICAgIHN0YXJ0RGF0ZS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICApO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBgYnV0dG9uW2NsYXNzKj0ke0NMT1NFX1NFQVJDSF9CWV9EQVRFU19CVVRUT05fQ0xBU1N9XWApO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBgaW5wdXRbdmFsdWU9JHtTSE9XX1NFQVJDSF9CWV9EQVRFU19CVVRUT05fVkFMVUV9XWApO1xuICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudE51bWJlcihwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IHNlbGVjdGVkU25pZkFjY291bnQgPSBhd2FpdCBwYWdlLiRldmFsKEFDQ09VTlRTX05VTUJFUiwgKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiAob3B0aW9uIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pO1xuXG4gIHJldHVybiBzZWxlY3RlZFNuaWZBY2NvdW50LnJlcGxhY2UoJy8nLCAnXycpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjaGVja0lmSGFzTmV4dFBhZ2UocGFnZTogUGFnZSkge1xuICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgTkVYVF9QQUdFX0xJTkspO1xufVxuXG5hc3luYyBmdW5jdGlvbiBuYXZpZ2F0ZVRvTmV4dFBhZ2UocGFnZTogUGFnZSkge1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBORVhUX1BBR0VfTElOSyk7XG4gIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xufVxuXG4vKiBDb3VsZG4ndCByZXByb2R1Y2Ugc2NlbmFyaW8gd2l0aCBtdWx0aXBsZSBwYWdlcyBvZiBwZW5kaW5nIHRyYW5zYWN0aW9ucyAtIFNob3VsZCBzdXBwb3J0IGlmIGV4aXN0cyBzdWNoIGNhc2UuXG4gICBuZWVkVG9QYWdpbmF0ZSBpcyBmYWxzZSBpZiBzY3JhcGluZyBwZW5kaW5nIHRyYW5zYWN0aW9ucyAqL1xuYXN5bmMgZnVuY3Rpb24gc2NyYXBlVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIHRhYmxlTG9jYXRvcjogc3RyaW5nLCB0cmFuc2FjdGlvblN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcywgbmVlZFRvUGFnaW5hdGU6IGJvb2xlYW4pIHtcbiAgY29uc3QgdHhucyA9IFtdO1xuICBsZXQgaGFzTmV4dFBhZ2UgPSBmYWxzZTtcblxuICBkbyB7XG4gICAgY29uc3QgY3VycmVudFBhZ2VUeG5zID0gYXdhaXQgZXh0cmFjdFRyYW5zYWN0aW9ucyhwYWdlLCB0YWJsZUxvY2F0b3IsIHRyYW5zYWN0aW9uU3RhdHVzKTtcbiAgICB0eG5zLnB1c2goLi4uY3VycmVudFBhZ2VUeG5zKTtcbiAgICBpZiAobmVlZFRvUGFnaW5hdGUpIHtcbiAgICAgIGhhc05leHRQYWdlID0gYXdhaXQgY2hlY2tJZkhhc05leHRQYWdlKHBhZ2UpO1xuICAgICAgaWYgKGhhc05leHRQYWdlKSB7XG4gICAgICAgIGF3YWl0IG5hdmlnYXRlVG9OZXh0UGFnZShwYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGhhc05leHRQYWdlKTtcblxuICByZXR1cm4gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlKSB7XG4gIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdkaXZbaWQqPVxcJ2RpdlRhYmxlXFwnXScsIGZhbHNlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYC4ke0VSUk9SX01FU1NBR0VfQ0xBU1N9YCwgZmFsc2UpLFxuICBdKTtcblxuICBjb25zdCBub1RyYW5zYWN0aW9uSW5SYW5nZUVycm9yID0gYXdhaXQgaXNOb1RyYW5zYWN0aW9uSW5EYXRlUmFuZ2VFcnJvcihwYWdlKTtcbiAgaWYgKG5vVHJhbnNhY3Rpb25JblJhbmdlRXJyb3IpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwZW5kaW5nVHhucyA9IGF3YWl0IHNjcmFwZVRyYW5zYWN0aW9ucyhwYWdlLCBQRU5ESU5HX1RSQU5TQUNUSU9OU19UQUJMRSxcbiAgICBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcsIGZhbHNlKTtcbiAgY29uc3QgY29tcGxldGVkVHhucyA9IGF3YWl0IHNjcmFwZVRyYW5zYWN0aW9ucyhwYWdlLCBDT01QTEVURURfVFJBTlNBQ1RJT05TX1RBQkxFLFxuICAgIFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLCB0cnVlKTtcbiAgY29uc3QgdHhucyA9IFtcbiAgICAuLi5wZW5kaW5nVHhucyxcbiAgICAuLi5jb21wbGV0ZWRUeG5zLFxuICBdO1xuICByZXR1cm4gdHhucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudEJhbGFuY2UocGFnZTogUGFnZSkge1xuICBjb25zdCBiYWxhbmNlU3RyID0gYXdhaXQgcGFnZS4kZXZhbChDVVJSRU5UX0JBTEFOQ0UsIChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gKG9wdGlvbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcbiAgcmV0dXJuIGdldEFtb3VudERhdGEoYmFsYW5jZVN0cik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yUG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjbWF0YWZMb2dvdXRMaW5rJywgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjdmFsaWRhdGlvbk1zZycsIHRydWUpLFxuICBdKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCkge1xuICBhd2FpdCBzZWFyY2hCeURhdGVzKHBhZ2UsIHN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBhd2FpdCBnZXRBY2NvdW50TnVtYmVyKHBhZ2UpO1xuICBjb25zdCBiYWxhbmNlID0gYXdhaXQgZ2V0Q3VycmVudEJhbGFuY2UocGFnZSk7XG4gIGNvbnN0IHR4bnMgPSBhd2FpdCBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKHBhZ2UpO1xuXG4gIHJldHVybiB7XG4gICAgYWNjb3VudE51bWJlcixcbiAgICB0eG5zLFxuICAgIGJhbGFuY2UsXG4gIH07XG59XG5cbi8vIFRPRE86IEFkZCBzdXBwb3J0IG9mIG11bHRpcGxlIGFjY291bnRzXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KSB7XG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcbiAgY29uc3QgYWNjb3VudERhdGEgPSBhd2FpdCBmZXRjaEFjY291bnREYXRhKHBhZ2UsIHN0YXJ0RGF0ZSk7XG4gIGFjY291bnRzLnB1c2goYWNjb3VudERhdGEpO1xuICByZXR1cm4gYWNjb3VudHM7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7dXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZ307XG5cbmNsYXNzIEJlaW5sZXVtaUdyb3VwQmFzZVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIEJBU0VfVVJMID0gJyc7XG5cbiAgTE9HSU5fVVJMID0gJyc7XG5cbiAgVFJBTlNBQ1RJT05TX1VSTCA9ICcnO1xuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke3RoaXMuTE9HSU5fVVJMfWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnI2NvbnRpbnVlQnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHdhaXRGb3JQb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICAgIC8vIEhBQ0s6IEZvciBzb21lIHJlYXNvbiwgdGhvdWdoIHRoZSBsb2dpbiBidXR0b24gKCNjb250aW51ZUJ0bikgaXMgcHJlc2VudCBhbmQgdmlzaWJsZSwgdGhlIGNsaWNrIGFjdGlvbiBkb2VzIG5vdCBwZXJmb3JtLlxuICAgICAgLy8gQWRkaW5nIHRoaXMgZGVsYXkgZml4ZXMgdGhlIGlzc3VlLlxuICAgICAgcHJlQWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yVGltZW91dCgxMDAwKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyh0aGlzLlRSQU5TQUNUSU9OU19VUkwpO1xuXG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaEFjY291bnRzKHRoaXMucGFnZSwgc3RhcnRNb21lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJlaW5sZXVtaUdyb3VwQmFzZVNjcmFwZXI7XG4iXX0=
@@ -1,12 +1,17 @@
1
1
  import { BaseScraperWithBrowser } from './base-scraper-with-browser';
2
2
  import { Transaction } from '../transactions';
3
- import { ScraperOptions, ScaperScrapingResult, ScraperCredentials } from './base-scraper';
4
- declare class IsracardAmexBaseScraper extends BaseScraperWithBrowser {
3
+ import { ScraperScrapingResult, ScraperOptions } from './interface';
4
+ declare type ScraperSpecificCredentials = {
5
+ id: string;
6
+ password: string;
7
+ card6Digits: string;
8
+ };
9
+ declare class IsracardAmexBaseScraper extends BaseScraperWithBrowser<ScraperSpecificCredentials> {
5
10
  private baseUrl;
6
11
  private companyCode;
7
12
  private servicesUrl;
8
13
  constructor(options: ScraperOptions, baseUrl: string, companyCode: string);
9
- login(credentials: ScraperCredentials): Promise<ScaperScrapingResult>;
14
+ login(credentials: ScraperSpecificCredentials): Promise<ScraperScrapingResult>;
10
15
  fetchData(): Promise<{
11
16
  success: boolean;
12
17
  accounts: {