israeli-bank-scrapers 6.1.0 → 6.1.1
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.
- package/lib/assertNever.js +5 -7
- package/lib/constants.js +13 -16
- package/lib/definitions.js +109 -113
- package/lib/helpers/browser.js +9 -16
- package/lib/helpers/dates.js +18 -19
- package/lib/helpers/debug.js +9 -9
- package/lib/helpers/elements-interactions.js +78 -84
- package/lib/helpers/fetch.js +82 -89
- package/lib/helpers/navigation.js +24 -31
- package/lib/helpers/storage.js +10 -12
- package/lib/helpers/transactions.js +33 -35
- package/lib/helpers/waiting.js +45 -44
- package/lib/index.js +15 -82
- package/lib/scrapers/amex.js +11 -13
- package/lib/scrapers/base-beinleumi-group.js +233 -252
- package/lib/scrapers/base-isracard-amex.js +273 -286
- package/lib/scrapers/base-scraper-with-browser.js +240 -274
- package/lib/scrapers/base-scraper.js +82 -86
- package/lib/scrapers/behatsdaa.js +98 -107
- package/lib/scrapers/beinleumi.js +11 -20
- package/lib/scrapers/beyahad-bishvilha.js +132 -138
- package/lib/scrapers/discount.js +97 -103
- package/lib/scrapers/errors.js +22 -25
- package/lib/scrapers/factory.js +66 -67
- package/lib/scrapers/hapoalim.js +162 -182
- package/lib/scrapers/interface.js +2 -5
- package/lib/scrapers/isracard.js +11 -13
- package/lib/scrapers/leumi.js +167 -176
- package/lib/scrapers/massad.js +11 -20
- package/lib/scrapers/max.js +256 -268
- package/lib/scrapers/mercantile.js +14 -20
- package/lib/scrapers/mizrahi.js +158 -159
- package/lib/scrapers/one-zero-queries.js +4 -7
- package/lib/scrapers/one-zero.js +176 -240
- package/lib/scrapers/otsar-hahayal.js +11 -20
- package/lib/scrapers/pagi.js +11 -20
- package/lib/scrapers/union-bank.js +172 -179
- package/lib/scrapers/visa-cal.js +254 -263
- package/lib/scrapers/yahav.js +190 -211
- package/lib/transactions.js +13 -16
- package/package.json +12 -14
- package/lib/scrapers/amex.test.d.ts +0 -1
- package/lib/scrapers/amex.test.js +0 -54
- package/lib/scrapers/base-scraper-with-browser.test.d.ts +0 -1
- package/lib/scrapers/base-scraper-with-browser.test.js +0 -58
- package/lib/scrapers/behatsdaa.test.d.ts +0 -1
- package/lib/scrapers/behatsdaa.test.js +0 -50
- package/lib/scrapers/beinleumi.test.d.ts +0 -1
- package/lib/scrapers/beinleumi.test.js +0 -52
- package/lib/scrapers/beyahad-bishvilha.test.d.ts +0 -1
- package/lib/scrapers/beyahad-bishvilha.test.js +0 -52
- package/lib/scrapers/discount.test.d.ts +0 -1
- package/lib/scrapers/discount.test.js +0 -54
- package/lib/scrapers/factory.test.d.ts +0 -1
- package/lib/scrapers/factory.test.js +0 -19
- package/lib/scrapers/hapoalim.test.d.ts +0 -1
- package/lib/scrapers/hapoalim.test.js +0 -52
- package/lib/scrapers/isracard.test.d.ts +0 -1
- package/lib/scrapers/isracard.test.js +0 -54
- package/lib/scrapers/leumi.test.d.ts +0 -1
- package/lib/scrapers/leumi.test.js +0 -52
- package/lib/scrapers/max.test.d.ts +0 -1
- package/lib/scrapers/max.test.js +0 -71
- package/lib/scrapers/mercantile.test.d.ts +0 -1
- package/lib/scrapers/mercantile.test.js +0 -50
- package/lib/scrapers/mizrahi.test.d.ts +0 -1
- package/lib/scrapers/mizrahi.test.js +0 -58
- package/lib/scrapers/one-zero.test.d.ts +0 -1
- package/lib/scrapers/one-zero.test.js +0 -56
- package/lib/scrapers/otsar-hahayal.test.d.ts +0 -1
- package/lib/scrapers/otsar-hahayal.test.js +0 -52
- package/lib/scrapers/pagi.test.d.ts +0 -1
- package/lib/scrapers/pagi.test.js +0 -52
- package/lib/scrapers/union-bank.test.d.ts +0 -1
- package/lib/scrapers/union-bank.test.js +0 -52
- package/lib/scrapers/visa-cal.test.d.ts +0 -1
- package/lib/scrapers/visa-cal.test.js +0 -54
- package/lib/scrapers/yahav.test.d.ts +0 -1
- package/lib/scrapers/yahav.test.js +0 -54
|
@@ -1,155 +1,149 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
require("
|
|
8
|
-
require("
|
|
9
|
-
require("
|
|
10
|
-
require("
|
|
11
|
-
require("
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var _debug = require("../helpers/debug");
|
|
15
|
-
var _elementsInteractions = require("../helpers/elements-interactions");
|
|
16
|
-
var _transactions = require("../helpers/transactions");
|
|
17
|
-
var _transactions2 = require("../transactions");
|
|
18
|
-
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
19
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
|
-
const debug = (0, _debug.getDebug)('beyahadBishvilha');
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const moment_1 = __importDefault(require("moment"));
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
const debug_1 = require("../helpers/debug");
|
|
9
|
+
const elements_interactions_1 = require("../helpers/elements-interactions");
|
|
10
|
+
const transactions_1 = require("../helpers/transactions");
|
|
11
|
+
const transactions_2 = require("../transactions");
|
|
12
|
+
const base_scraper_with_browser_1 = require("./base-scraper-with-browser");
|
|
13
|
+
const debug = (0, debug_1.getDebug)('beyahadBishvilha');
|
|
21
14
|
const DATE_FORMAT = 'DD/MM/YY';
|
|
22
15
|
const LOGIN_URL = 'https://www.hist.org.il/login';
|
|
23
16
|
const SUCCESS_URL = 'https://www.hist.org.il/';
|
|
24
17
|
const CARD_URL = 'https://www.hist.org.il/card/balanceAndUses';
|
|
25
18
|
function getAmountData(amountStr) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
19
|
+
const amountStrCln = amountStr.replace(',', '');
|
|
20
|
+
let currency = null;
|
|
21
|
+
let amount = null;
|
|
22
|
+
if (amountStrCln.includes(constants_1.SHEKEL_CURRENCY_SYMBOL)) {
|
|
23
|
+
amount = parseFloat(amountStrCln.replace(constants_1.SHEKEL_CURRENCY_SYMBOL, ''));
|
|
24
|
+
currency = constants_1.SHEKEL_CURRENCY;
|
|
25
|
+
}
|
|
26
|
+
else if (amountStrCln.includes(constants_1.DOLLAR_CURRENCY_SYMBOL)) {
|
|
27
|
+
amount = parseFloat(amountStrCln.replace(constants_1.DOLLAR_CURRENCY_SYMBOL, ''));
|
|
28
|
+
currency = constants_1.DOLLAR_CURRENCY;
|
|
29
|
+
}
|
|
30
|
+
else if (amountStrCln.includes(constants_1.EURO_CURRENCY_SYMBOL)) {
|
|
31
|
+
amount = parseFloat(amountStrCln.replace(constants_1.EURO_CURRENCY_SYMBOL, ''));
|
|
32
|
+
currency = constants_1.EURO_CURRENCY;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const parts = amountStrCln.split(' ');
|
|
36
|
+
[currency] = parts;
|
|
37
|
+
amount = parseFloat(parts[1]);
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
amount,
|
|
41
|
+
currency,
|
|
42
|
+
};
|
|
47
43
|
}
|
|
48
44
|
function convertTransactions(txns) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
45
|
+
debug(`convert ${txns.length} raw transactions to official Transaction structure`);
|
|
46
|
+
return txns.map(txn => {
|
|
47
|
+
const chargedAmountTuple = getAmountData(txn.chargedAmount || '');
|
|
48
|
+
const txnProcessedDate = (0, moment_1.default)(txn.date, DATE_FORMAT);
|
|
49
|
+
const result = {
|
|
50
|
+
type: transactions_2.TransactionTypes.Normal,
|
|
51
|
+
status: transactions_2.TransactionStatuses.Completed,
|
|
52
|
+
date: txnProcessedDate.toISOString(),
|
|
53
|
+
processedDate: txnProcessedDate.toISOString(),
|
|
54
|
+
originalAmount: chargedAmountTuple.amount,
|
|
55
|
+
originalCurrency: chargedAmountTuple.currency,
|
|
56
|
+
chargedAmount: chargedAmountTuple.amount,
|
|
57
|
+
chargedCurrency: chargedAmountTuple.currency,
|
|
58
|
+
description: txn.description || '',
|
|
59
|
+
memo: '',
|
|
60
|
+
identifier: txn.identifier,
|
|
61
|
+
};
|
|
62
|
+
return result;
|
|
63
|
+
});
|
|
68
64
|
}
|
|
69
65
|
async function fetchTransactions(page, options) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
66
|
+
await page.goto(CARD_URL);
|
|
67
|
+
await (0, elements_interactions_1.waitUntilElementFound)(page, '.react-loading.hide', false);
|
|
68
|
+
const defaultStartMoment = (0, moment_1.default)().subtract(1, 'years');
|
|
69
|
+
const startDate = options.startDate || defaultStartMoment.toDate();
|
|
70
|
+
const startMoment = moment_1.default.max(defaultStartMoment, (0, moment_1.default)(startDate));
|
|
71
|
+
const accountNumber = await (0, elements_interactions_1.pageEval)(page, '.wallet-details div:nth-of-type(2)', null, element => {
|
|
72
|
+
return element.innerText.replace('מספר כרטיס ', '');
|
|
73
|
+
});
|
|
74
|
+
const balance = await (0, elements_interactions_1.pageEval)(page, '.wallet-details div:nth-of-type(4) > span:nth-of-type(2)', null, element => {
|
|
75
|
+
return element.innerText;
|
|
76
|
+
});
|
|
77
|
+
debug('fetch raw transactions from page');
|
|
78
|
+
const rawTransactions = await (0, elements_interactions_1.pageEvalAll)(page, '.transaction-container, .transaction-component-container', [], items => {
|
|
79
|
+
return items.map(el => {
|
|
80
|
+
const columns = el.querySelectorAll('.transaction-item > span');
|
|
81
|
+
if (columns.length === 7) {
|
|
82
|
+
return {
|
|
83
|
+
date: columns[0].innerText,
|
|
84
|
+
identifier: columns[1].innerText,
|
|
85
|
+
description: columns[3].innerText,
|
|
86
|
+
type: columns[5].innerText,
|
|
87
|
+
chargedAmount: columns[6].innerText,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
});
|
|
96
92
|
});
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
93
|
+
debug(`fetched ${rawTransactions.length} raw transactions from page`);
|
|
94
|
+
const accountTransactions = convertTransactions(rawTransactions.filter(item => !!item));
|
|
95
|
+
debug('filer out old transactions');
|
|
96
|
+
const txns = (options.outputData?.enableTransactionsFilterByDate ?? true)
|
|
97
|
+
? (0, transactions_1.filterOldTransactions)(accountTransactions, startMoment, false)
|
|
98
|
+
: accountTransactions;
|
|
99
|
+
debug(`found ${txns.length} valid transactions out of ${accountTransactions.length} transactions for account ending with ${accountNumber.substring(accountNumber.length - 2)}`);
|
|
100
|
+
return {
|
|
101
|
+
accountNumber,
|
|
102
|
+
balance: getAmountData(balance).amount,
|
|
103
|
+
txns,
|
|
104
|
+
};
|
|
108
105
|
}
|
|
109
106
|
function getPossibleLoginResults() {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
107
|
+
const urls = {};
|
|
108
|
+
urls[base_scraper_with_browser_1.LoginResults.Success] = [SUCCESS_URL];
|
|
109
|
+
urls[base_scraper_with_browser_1.LoginResults.ChangePassword] = []; // TODO
|
|
110
|
+
urls[base_scraper_with_browser_1.LoginResults.InvalidPassword] = []; // TODO
|
|
111
|
+
urls[base_scraper_with_browser_1.LoginResults.UnknownError] = []; // TODO
|
|
112
|
+
return urls;
|
|
116
113
|
}
|
|
117
114
|
function createLoginFields(credentials) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
selector: '#loginPassword',
|
|
123
|
-
value: credentials.password
|
|
124
|
-
}];
|
|
115
|
+
return [
|
|
116
|
+
{ selector: '#loginId', value: credentials.id },
|
|
117
|
+
{ selector: '#loginPassword', value: credentials.password },
|
|
118
|
+
];
|
|
125
119
|
}
|
|
126
|
-
class BeyahadBishvilhaScraper extends
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
120
|
+
class BeyahadBishvilhaScraper extends base_scraper_with_browser_1.BaseScraperWithBrowser {
|
|
121
|
+
getViewPort() {
|
|
122
|
+
return {
|
|
123
|
+
width: 1500,
|
|
124
|
+
height: 800,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
getLoginOptions(credentials) {
|
|
128
|
+
return {
|
|
129
|
+
loginUrl: LOGIN_URL,
|
|
130
|
+
fields: createLoginFields(credentials),
|
|
131
|
+
submitButtonSelector: async () => {
|
|
132
|
+
const button = await this.page.$('xpath//button[contains(., "התחבר")]');
|
|
133
|
+
if (button) {
|
|
134
|
+
await button.click();
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
possibleResults: getPossibleLoginResults(),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
async fetchData() {
|
|
141
|
+
const account = await fetchTransactions(this.page, this.options);
|
|
142
|
+
return {
|
|
143
|
+
success: true,
|
|
144
|
+
accounts: [account],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
153
147
|
}
|
|
154
|
-
|
|
155
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX3RyYW5zYWN0aW9ucyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZWJ1ZyIsImdldERlYnVnIiwiREFURV9GT1JNQVQiLCJMT0dJTl9VUkwiLCJTVUNDRVNTX1VSTCIsIkNBUkRfVVJMIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNsbiIsInJlcGxhY2UiLCJjdXJyZW5jeSIsImFtb3VudCIsImluY2x1ZGVzIiwiU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCIsInBhcnNlRmxvYXQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MIiwiRE9MTEFSX0NVUlJFTkNZIiwiRVVST19DVVJSRU5DWV9TWU1CT0wiLCJFVVJPX0NVUlJFTkNZIiwicGFydHMiLCJzcGxpdCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibGVuZ3RoIiwibWFwIiwidHhuIiwiY2hhcmdlZEFtb3VudFR1cGxlIiwiY2hhcmdlZEFtb3VudCIsInR4blByb2Nlc3NlZERhdGUiLCJtb21lbnQiLCJkYXRlIiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwidG9JU09TdHJpbmciLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJtZW1vIiwiaWRlbnRpZmllciIsImZldGNoVHJhbnNhY3Rpb25zIiwicGFnZSIsIm9wdGlvbnMiLCJfb3B0aW9ucyRvdXRwdXREYXRhJGUiLCJfb3B0aW9ucyRvdXRwdXREYXRhIiwiZ290byIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJhY2NvdW50TnVtYmVyIiwicGFnZUV2YWwiLCJlbGVtZW50IiwiaW5uZXJUZXh0IiwiYmFsYW5jZSIsInJhd1RyYW5zYWN0aW9ucyIsInBhZ2VFdmFsQWxsIiwiaXRlbXMiLCJlbCIsImNvbHVtbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiYWNjb3VudFRyYW5zYWN0aW9ucyIsImZpbHRlciIsIml0ZW0iLCJvdXRwdXREYXRhIiwiZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlIiwiZmlsdGVyT2xkVHJhbnNhY3Rpb25zIiwic3Vic3RyaW5nIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkNoYW5nZVBhc3N3b3JkIiwiSW52YWxpZFBhc3N3b3JkIiwiVW5rbm93bkVycm9yIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJpZCIsInBhc3N3b3JkIiwiQmV5YWhhZEJpc2h2aWxoYVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0Vmlld1BvcnQiLCJ3aWR0aCIsImhlaWdodCIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJidXR0b24iLCIkIiwiY2xpY2siLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJhY2NvdW50Iiwic3VjY2VzcyIsImFjY291bnRzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2JleWFoYWQtYmlzaHZpbGhhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQge1xuICBET0xMQVJfQ1VSUkVOQ1ksXG4gIERPTExBUl9DVVJSRU5DWV9TWU1CT0wsIEVVUk9fQ1VSUkVOQ1ksXG4gIEVVUk9fQ1VSUkVOQ1lfU1lNQk9MLFxuICBTSEVLRUxfQ1VSUkVOQ1ksXG4gIFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgcGFnZUV2YWwsIHBhZ2VFdmFsQWxsLCB3YWl0VW50aWxFbGVtZW50Rm91bmQgfSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdiZXlhaGFkQmlzaHZpbGhhJyk7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZJztcbmNvbnN0IExPR0lOX1VSTCA9ICdodHRwczovL3d3dy5oaXN0Lm9yZy5pbC9sb2dpbic7XG5jb25zdCBTVUNDRVNTX1VSTCA9ICdodHRwczovL3d3dy5oaXN0Lm9yZy5pbC8nO1xuY29uc3QgQ0FSRF9VUkwgPSAnaHR0cHM6Ly93d3cuaGlzdC5vcmcuaWwvY2FyZC9iYWxhbmNlQW5kVXNlcyc7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBkYXRlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgY2hhcmdlZEFtb3VudDogc3RyaW5nO1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEFtb3VudERhdGEoYW1vdW50U3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgYW1vdW50U3RyQ2xuID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIGxldCBjdXJyZW5jeTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCBhbW91bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gU0hFS0VMX0NVUlJFTkNZO1xuICB9IGVsc2UgaWYgKGFtb3VudFN0ckNsbi5pbmNsdWRlcyhET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MKSkge1xuICAgIGFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuLnJlcGxhY2UoRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IERPTExBUl9DVVJSRU5DWTtcbiAgfSBlbHNlIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoRVVST19DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShFVVJPX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IEVVUk9fQ1VSUkVOQ1k7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGFydHMgPSBhbW91bnRTdHJDbG4uc3BsaXQoJyAnKTtcbiAgICBbY3VycmVuY3ldID0gcGFydHM7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChwYXJ0c1sxXSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFtb3VudCxcbiAgICBjdXJyZW5jeSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICBkZWJ1ZyhgY29udmVydCAke3R4bnMubGVuZ3RofSByYXcgdHJhbnNhY3Rpb25zIHRvIG9mZmljaWFsIFRyYW5zYWN0aW9uIHN0cnVjdHVyZWApO1xuICByZXR1cm4gdHhucy5tYXAoKHR4bikgPT4ge1xuICAgIGNvbnN0IGNoYXJnZWRBbW91bnRUdXBsZSA9IGdldEFtb3VudERhdGEodHhuLmNoYXJnZWRBbW91bnQgfHwgJycpO1xuICAgIGNvbnN0IHR4blByb2Nlc3NlZERhdGUgPSBtb21lbnQodHhuLmRhdGUsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBkYXRlOiB0eG5Qcm9jZXNzZWREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiB0eG5Qcm9jZXNzZWREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogY2hhcmdlZEFtb3VudFR1cGxlLmFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IGNoYXJnZWRBbW91bnRUdXBsZS5jdXJyZW5jeSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGNoYXJnZWRBbW91bnRUdXBsZS5hbW91bnQsXG4gICAgICBjaGFyZ2VkQ3VycmVuY3k6IGNoYXJnZWRBbW91bnRUdXBsZS5jdXJyZW5jeSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBtZW1vOiAnJyxcbiAgICAgIGlkZW50aWZpZXI6IHR4bi5pZGVudGlmaWVyLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgb3B0aW9uczogU2NyYXBlck9wdGlvbnMpIHtcbiAgYXdhaXQgcGFnZS5nb3RvKENBUkRfVVJMKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucmVhY3QtbG9hZGluZy5oaWRlJywgZmFsc2UpO1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgY29uc3QgYWNjb3VudE51bWJlciA9IGF3YWl0IHBhZ2VFdmFsKHBhZ2UsICcud2FsbGV0LWRldGFpbHMgZGl2Om50aC1vZi10eXBlKDIpJywgbnVsbCwgKGVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gKGVsZW1lbnQgYXMgYW55KS5pbm5lclRleHQucmVwbGFjZSgn157Xodek16gg15vXqNeY15nXoSAnLCAnJyk7XG4gIH0pO1xuXG4gIGNvbnN0IGJhbGFuY2UgPSBhd2FpdCBwYWdlRXZhbChwYWdlLCAnLndhbGxldC1kZXRhaWxzIGRpdjpudGgtb2YtdHlwZSg0KSA+IHNwYW46bnRoLW9mLXR5cGUoMiknLCBudWxsLCAoZWxlbWVudCkgPT4ge1xuICAgIHJldHVybiAoZWxlbWVudCBhcyBhbnkpLmlubmVyVGV4dDtcbiAgfSk7XG5cbiAgZGVidWcoJ2ZldGNoIHJhdyB0cmFuc2FjdGlvbnMgZnJvbSBwYWdlJyk7XG5cbiAgY29uc3QgcmF3VHJhbnNhY3Rpb25zOiAoU2NyYXBlZFRyYW5zYWN0aW9uIHwgbnVsbClbXSA9IGF3YWl0IHBhZ2VFdmFsQWxsPChTY3JhcGVkVHJhbnNhY3Rpb24gfCBudWxsKVtdPihwYWdlLCAnLnRyYW5zYWN0aW9uLWNvbnRhaW5lciwgLnRyYW5zYWN0aW9uLWNvbXBvbmVudC1jb250YWluZXInLCBbXSwgKGl0ZW1zKSA9PiB7XG4gICAgcmV0dXJuIChpdGVtcykubWFwKChlbCkgPT4ge1xuICAgICAgY29uc3QgY29sdW1uczogTm9kZUxpc3RPZjxIVE1MU3BhbkVsZW1lbnQ+ID0gZWwucXVlcnlTZWxlY3RvckFsbCgnLnRyYW5zYWN0aW9uLWl0ZW0gPiBzcGFuJyk7XG4gICAgICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRlOiBjb2x1bW5zWzBdLmlubmVyVGV4dCxcbiAgICAgICAgICBpZGVudGlmaWVyOiBjb2x1bW5zWzFdLmlubmVyVGV4dCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogY29sdW1uc1szXS5pbm5lclRleHQsXG4gICAgICAgICAgdHlwZTogY29sdW1uc1s1XS5pbm5lclRleHQsXG4gICAgICAgICAgY2hhcmdlZEFtb3VudDogY29sdW1uc1s2XS5pbm5lclRleHQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfSk7XG4gIGRlYnVnKGBmZXRjaGVkICR7cmF3VHJhbnNhY3Rpb25zLmxlbmd0aH0gcmF3IHRyYW5zYWN0aW9ucyBmcm9tIHBhZ2VgKTtcblxuICBjb25zdCBhY2NvdW50VHJhbnNhY3Rpb25zID0gY29udmVydFRyYW5zYWN0aW9ucyhyYXdUcmFuc2FjdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pIGFzIFNjcmFwZWRUcmFuc2FjdGlvbltdKTtcblxuICBkZWJ1ZygnZmlsZXIgb3V0IG9sZCB0cmFuc2FjdGlvbnMnKTtcbiAgY29uc3QgdHhucyA9IChvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSA/XG4gICAgZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGFjY291bnRUcmFuc2FjdGlvbnMsIHN0YXJ0TW9tZW50LCBmYWxzZSkgOlxuICAgIGFjY291bnRUcmFuc2FjdGlvbnM7XG4gIGRlYnVnKGBmb3VuZCAke3R4bnMubGVuZ3RofSB2YWxpZCB0cmFuc2FjdGlvbnMgb3V0IG9mICR7YWNjb3VudFRyYW5zYWN0aW9ucy5sZW5ndGh9IHRyYW5zYWN0aW9ucyBmb3IgYWNjb3VudCBlbmRpbmcgd2l0aCAke2FjY291bnROdW1iZXIuc3Vic3RyaW5nKGFjY291bnROdW1iZXIubGVuZ3RoIC0gMil9YCk7XG5cbiAgcmV0dXJuIHtcbiAgICBhY2NvdW50TnVtYmVyLFxuICAgIGJhbGFuY2U6IGdldEFtb3VudERhdGEoYmFsYW5jZSkuYW1vdW50LFxuICAgIHR4bnMsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbU1VDQ0VTU19VUkxdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbXTsgLy8gVE9ET1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW107IC8vIFRPRE9cbiAgdXJsc1tMb2dpblJlc3VsdHMuVW5rbm93bkVycm9yXSA9IFtdOyAvLyBUT0RPXG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI2xvZ2luSWQnLCB2YWx1ZTogY3JlZGVudGlhbHMuaWQgfSxcbiAgICB7IHNlbGVjdG9yOiAnI2xvZ2luUGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgaWQ6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBCZXlhaGFkQmlzaHZpbGhhU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJvdGVjdGVkIGdldFZpZXdQb3J0KCk6IHsgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiAxNTAwLFxuICAgICAgaGVpZ2h0OiA4MDAsXG4gICAgfTtcbiAgfVxuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnV0dG9uID0gYXdhaXQgdGhpcy5wYWdlLiQoJ3hwYXRoLy9idXR0b25bY29udGFpbnMoLiwgXCLXlNeq15fXkdeoXCIpXScpO1xuICAgICAgICBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCB0aGlzLm9wdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHM6IFthY2NvdW50XSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJleWFoYWRCaXNodmlsaGFTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQU9BLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHFCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQThHLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRzlHLE1BQU1HLEtBQUssR0FBRyxJQUFBQyxlQUFRLEVBQUMsa0JBQWtCLENBQUM7QUFFMUMsTUFBTUMsV0FBVyxHQUFHLFVBQVU7QUFDOUIsTUFBTUMsU0FBUyxHQUFHLCtCQUErQjtBQUNqRCxNQUFNQyxXQUFXLEdBQUcsMEJBQTBCO0FBQzlDLE1BQU1DLFFBQVEsR0FBRyw2Q0FBNkM7QUFVOUQsU0FBU0MsYUFBYUEsQ0FBQ0MsU0FBaUIsRUFBRTtFQUN4QyxNQUFNQyxZQUFZLEdBQUdELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7RUFDL0MsSUFBSUMsUUFBdUIsR0FBRyxJQUFJO0VBQ2xDLElBQUlDLE1BQXFCLEdBQUcsSUFBSTtFQUNoQyxJQUFJSCxZQUFZLENBQUNJLFFBQVEsQ0FBQ0MsaUNBQXNCLENBQUMsRUFBRTtJQUNqREYsTUFBTSxHQUFHRyxVQUFVLENBQUNOLFlBQVksQ0FBQ0MsT0FBTyxDQUFDSSxpQ0FBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRUgsUUFBUSxHQUFHSyww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
|
|
148
|
+
exports.default = BeyahadBishvilhaScraper;
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV5YWhhZC1iaXNodmlsaGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvYmV5YWhhZC1iaXNodmlsaGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsNENBT3NCO0FBQ3RCLDRDQUE0QztBQUM1Qyw0RUFBZ0c7QUFDaEcsMERBQWdFO0FBQ2hFLGtEQUEwRjtBQUMxRiwyRUFBOEc7QUFHOUcsTUFBTSxLQUFLLEdBQUcsSUFBQSxnQkFBUSxFQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFM0MsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDO0FBQy9CLE1BQU0sU0FBUyxHQUFHLCtCQUErQixDQUFDO0FBQ2xELE1BQU0sV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBQy9DLE1BQU0sUUFBUSxHQUFHLDZDQUE2QyxDQUFDO0FBVS9ELFNBQVMsYUFBYSxDQUFDLFNBQWlCO0lBQ3RDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELElBQUksUUFBUSxHQUFrQixJQUFJLENBQUM7SUFDbkMsSUFBSSxNQUFNLEdBQWtCLElBQUksQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsa0NBQXNCLENBQUMsRUFBRTtRQUNqRCxNQUFNLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0NBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RSxRQUFRLEdBQUcsMkJBQWUsQ0FBQztLQUM1QjtTQUFNLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxrQ0FBc0IsQ0FBQyxFQUFFO1FBQ3hELE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQ0FBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLFFBQVEsR0FBRywyQkFBZSxDQUFDO0tBQzVCO1NBQU0sSUFBSSxZ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O1FBQ3JELE9BQU87WUFDTCxRQUFRLEVBQUUsU0FBUztZQUNuQixNQUFNLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDO1lBQ3RDLG9CQUFvQixFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUMvQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksTUFBTSxFQUFFO29CQUNWLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUN0QjtZQUNILENBQUM7WUFDRCxlQUFlLEVBQUUsdUJBQXVCLEVBQUU7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sT0FBTyxHQUFHLE1BQU0saUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO1NBQ3BCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxrQkFBZSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQge1xuICBET0xMQVJfQ1VSUkVOQ1ksXG4gIERPTExBUl9DVVJSRU5DWV9TWU1CT0wsXG4gIEVVUk9fQ1VSUkVOQ1ksXG4gIEVVUk9fQ1VSUkVOQ1lfU1lNQk9MLFxuICBTSEVLRUxfQ1VSUkVOQ1ksXG4gIFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgcGFnZUV2YWwsIHBhZ2VFdmFsQWxsLCB3YWl0VW50aWxFbGVtZW50Rm91bmQgfSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdiZXlhaGFkQmlzaHZpbGhhJyk7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZJztcbmNvbnN0IExPR0lOX1VSTCA9ICdodHRwczovL3d3dy5oaXN0Lm9yZy5pbC9sb2dpbic7XG5jb25zdCBTVUNDRVNTX1VSTCA9ICdodHRwczovL3d3dy5oaXN0Lm9yZy5pbC8nO1xuY29uc3QgQ0FSRF9VUkwgPSAnaHR0cHM6Ly93d3cuaGlzdC5vcmcuaWwvY2FyZC9iYWxhbmNlQW5kVXNlcyc7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBkYXRlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgY2hhcmdlZEFtb3VudDogc3RyaW5nO1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEFtb3VudERhdGEoYW1vdW50U3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgYW1vdW50U3RyQ2xuID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIGxldCBjdXJyZW5jeTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCBhbW91bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBpZiAoYW1vdW50U3RyQ2xuLmluY2x1ZGVzKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MLCAnJykpO1xuICAgIGN1cnJlbmN5ID0gU0hFS0VMX0NVUlJFTkNZO1xuICB9IGVsc2UgaWYgKGFtb3VudFN0ckNsbi5pbmNsdWRlcyhET0xMQVJfQ1VSUkVOQ1lfU1lNQk9MKSkge1xuICAgIGFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuLnJlcGxhY2UoRE9MTEFSX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IERPTExBUl9DVVJSRU5DWTtcbiAgfSBlbHNlIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoRVVST19DVVJSRU5DWV9TWU1CT0wpKSB7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChhbW91bnRTdHJDbG4ucmVwbGFjZShFVVJPX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IEVVUk9fQ1VSUkVOQ1k7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGFydHMgPSBhbW91bnRTdHJDbG4uc3BsaXQoJyAnKTtcbiAgICBbY3VycmVuY3ldID0gcGFydHM7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChwYXJ0c1sxXSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFtb3VudCxcbiAgICBjdXJyZW5jeSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICBkZWJ1ZyhgY29udmVydCAke3R4bnMubGVuZ3RofSByYXcgdHJhbnNhY3Rpb25zIHRvIG9mZmljaWFsIFRyYW5zYWN0aW9uIHN0cnVjdHVyZWApO1xuICByZXR1cm4gdHhucy5tYXAodHhuID0+IHtcbiAgICBjb25zdCBjaGFyZ2VkQW1vdW50VHVwbGUgPSBnZXRBbW91bnREYXRhKHR4bi5jaGFyZ2VkQW1vdW50IHx8ICcnKTtcbiAgICBjb25zdCB0eG5Qcm9jZXNzZWREYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgZGF0ZTogdHhuUHJvY2Vzc2VkRGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogdHhuUHJvY2Vzc2VkRGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGNoYXJnZWRBbW91bnRUdXBsZS5hbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBjaGFyZ2VkQW1vdW50VHVwbGUuY3VycmVuY3ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBjaGFyZ2VkQW1vdW50VHVwbGUuYW1vdW50LFxuICAgICAgY2hhcmdlZEN1cnJlbmN5OiBjaGFyZ2VkQW1vdW50VHVwbGUuY3VycmVuY3ksXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgbWVtbzogJycsXG4gICAgICBpZGVudGlmaWVyOiB0eG4uaWRlbnRpZmllcixcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIGF3YWl0IHBhZ2UuZ290byhDQVJEX1VSTCk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnLnJlYWN0LWxvYWRpbmcuaGlkZScsIGZhbHNlKTtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBhd2FpdCBwYWdlRXZhbChwYWdlLCAnLndhbGxldC1kZXRhaWxzIGRpdjpudGgtb2YtdHlwZSgyKScsIG51bGwsIGVsZW1lbnQgPT4ge1xuICAgIHJldHVybiAoZWxlbWVudCBhcyBhbnkpLmlubmVyVGV4dC5yZXBsYWNlKCfXnteh16TXqCDXm9eo15jXmdehICcsICcnKTtcbiAgfSk7XG5cbiAgY29uc3QgYmFsYW5jZSA9IGF3YWl0IHBhZ2VFdmFsKHBhZ2UsICcud2FsbGV0LWRldGFpbHMgZGl2Om50aC1vZi10eXBlKDQpID4gc3BhbjpudGgtb2YtdHlwZSgyKScsIG51bGwsIGVsZW1lbnQgPT4ge1xuICAgIHJldHVybiAoZWxlbWVudCBhcyBhbnkpLmlubmVyVGV4dDtcbiAgfSk7XG5cbiAgZGVidWcoJ2ZldGNoIHJhdyB0cmFuc2FjdGlvbnMgZnJvbSBwYWdlJyk7XG5cbiAgY29uc3QgcmF3VHJhbnNhY3Rpb25zOiAoU2NyYXBlZFRyYW5zYWN0aW9uIHwgbnVsbClbXSA9IGF3YWl0IHBhZ2VFdmFsQWxsPChTY3JhcGVkVHJhbnNhY3Rpb24gfCBudWxsKVtdPihcbiAgICBwYWdlLFxuICAgICcudHJhbnNhY3Rpb24tY29udGFpbmVyLCAudHJhbnNhY3Rpb24tY29tcG9uZW50LWNvbnRhaW5lcicsXG4gICAgW10sXG4gICAgaXRlbXMgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW1zLm1hcChlbCA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IE5vZGVMaXN0T2Y8SFRNTFNwYW5FbGVtZW50PiA9IGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy50cmFuc2FjdGlvbi1pdGVtID4gc3BhbicpO1xuICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDcpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0ZTogY29sdW1uc1swXS5pbm5lclRleHQsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBjb2x1bW5zWzFdLmlubmVyVGV4dCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb2x1bW5zWzNdLmlubmVyVGV4dCxcbiAgICAgICAgICAgIHR5cGU6IGNvbHVtbnNbNV0uaW5uZXJUZXh0LFxuICAgICAgICAgICAgY2hhcmdlZEFtb3VudDogY29sdW1uc1s2XS5pbm5lclRleHQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgIH0sXG4gICk7XG4gIGRlYnVnKGBmZXRjaGVkICR7cmF3VHJhbnNhY3Rpb25zLmxlbmd0aH0gcmF3IHRyYW5zYWN0aW9ucyBmcm9tIHBhZ2VgKTtcblxuICBjb25zdCBhY2NvdW50VHJhbnNhY3Rpb25zID0gY29udmVydFRyYW5zYWN0aW9ucyhyYXdUcmFuc2FjdGlvbnMuZmlsdGVyKGl0ZW0gPT4gISFpdGVtKSBhcyBTY3JhcGVkVHJhbnNhY3Rpb25bXSk7XG5cbiAgZGVidWcoJ2ZpbGVyIG91dCBvbGQgdHJhbnNhY3Rpb25zJyk7XG4gIGNvbnN0IHR4bnMgPVxuICAgIChvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKVxuICAgICAgPyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMoYWNjb3VudFRyYW5zYWN0aW9ucywgc3RhcnRNb21lbnQsIGZhbHNlKVxuICAgICAgOiBhY2NvdW50VHJhbnNhY3Rpb25zO1xuICBkZWJ1ZyhcbiAgICBgZm91bmQgJHt0eG5zLmxlbmd0aH0gdmFsaWQgdHJhbnNhY3Rpb25zIG91dCBvZiAke2FjY291bnRUcmFuc2FjdGlvbnMubGVuZ3RofSB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgZW5kaW5nIHdpdGggJHthY2NvdW50TnVtYmVyLnN1YnN0cmluZyhhY2NvdW50TnVtYmVyLmxlbmd0aCAtIDIpfWAsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBhY2NvdW50TnVtYmVyLFxuICAgIGJhbGFuY2U6IGdldEFtb3VudERhdGEoYmFsYW5jZSkuYW1vdW50LFxuICAgIHR4bnMsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbU1VDQ0VTU19VUkxdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbXTsgLy8gVE9ET1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW107IC8vIFRPRE9cbiAgdXJsc1tMb2dpblJlc3VsdHMuVW5rbm93bkVycm9yXSA9IFtdOyAvLyBUT0RPXG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI2xvZ2luSWQnLCB2YWx1ZTogY3JlZGVudGlhbHMuaWQgfSxcbiAgICB7IHNlbGVjdG9yOiAnI2xvZ2luUGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBCZXlhaGFkQmlzaHZpbGhhU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJvdGVjdGVkIGdldFZpZXdQb3J0KCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiAxNTAwLFxuICAgICAgaGVpZ2h0OiA4MDAsXG4gICAgfTtcbiAgfVxuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnV0dG9uID0gYXdhaXQgdGhpcy5wYWdlLiQoJ3hwYXRoLy9idXR0b25bY29udGFpbnMoLiwgXCLXlNeq15fXkdeoXCIpXScpO1xuICAgICAgICBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCB0aGlzLm9wdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHM6IFthY2NvdW50XSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJleWFoYWRCaXNodmlsaGFTY3JhcGVyO1xuIl19
|