@pipeline-builder/pipeline-core 3.4.120 → 3.4.121
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/config/billing-config.js +10 -7
- package/package.json +3 -3
|
@@ -89,7 +89,7 @@ export function loadBillingConfig() {
|
|
|
89
89
|
// 5th QuotaTier without a plan here is now a compile error (was a hand-kept
|
|
90
90
|
// 4-element array that silently shipped no plan/price for a new tier). The
|
|
91
91
|
// public `config.plans` shape stays an array, derived below in VALID_TIERS
|
|
92
|
-
// order (developer, pro, team, enterprise) to preserve consumer ordering.
|
|
92
|
+
// order (developer, pro, team, enterprise, unlimited) to preserve consumer ordering.
|
|
93
93
|
const planByTier = {
|
|
94
94
|
developer: {
|
|
95
95
|
id: 'developer',
|
|
@@ -173,7 +173,10 @@ export function loadBillingConfig() {
|
|
|
173
173
|
};
|
|
174
174
|
// Derive the array consumers read (`config.plans`) in canonical tier order.
|
|
175
175
|
const plans = VALID_TIERS.map((tier) => planByTier[tier]);
|
|
176
|
-
|
|
176
|
+
// Build bundles ONCE and thread them into the combo loader (which needs their
|
|
177
|
+
// env-effective prices) — avoids parsing the whole bundle catalog twice per load.
|
|
178
|
+
const bundles = loadBundles();
|
|
179
|
+
return { plans, bundles, comboDiscounts: loadComboDiscounts(bundles) };
|
|
177
180
|
}
|
|
178
181
|
/**
|
|
179
182
|
* Combo discounts (docs/billing-bundles.md §Combo pricing). When an account owns
|
|
@@ -189,7 +192,7 @@ export function loadBillingConfig() {
|
|
|
189
192
|
* together $35/mo ($350/yr) → a $20/mo credit.
|
|
190
193
|
* Prices env-overridable via `BILLING_COMBO_<ID>_MONTHLY` / `_ANNUAL`.
|
|
191
194
|
*/
|
|
192
|
-
function loadComboDiscounts() {
|
|
195
|
+
function loadComboDiscounts(bundles) {
|
|
193
196
|
const c = (id, name, bundleIds, monthly, annual, sortOrder, minQuantities) => ({
|
|
194
197
|
id,
|
|
195
198
|
name,
|
|
@@ -206,7 +209,7 @@ function loadComboDiscounts() {
|
|
|
206
209
|
c('analytics_suite', 'Analytics Suite', ['advanced_reporting', 'team_usage_analytics'], 4000, 40000, 0),
|
|
207
210
|
c('team_growth', 'Team Growth Bundle', ['seat_pack', 'team_usage_analytics'], 3500, 35000, 1, { seat_pack: 1 }),
|
|
208
211
|
];
|
|
209
|
-
warnOnNonDiscountCombos(combos);
|
|
212
|
+
warnOnNonDiscountCombos(combos, bundles);
|
|
210
213
|
return combos;
|
|
211
214
|
}
|
|
212
215
|
/**
|
|
@@ -214,9 +217,9 @@ function loadComboDiscounts() {
|
|
|
214
217
|
* no credit (the credit clamps to $0) and is silently inert. Warn loudly instead so a
|
|
215
218
|
* misconfigured `BILLING_COMBO_*` override is caught. Non-fatal.
|
|
216
219
|
*/
|
|
217
|
-
function warnOnNonDiscountCombos(combos) {
|
|
220
|
+
function warnOnNonDiscountCombos(combos, bundles) {
|
|
218
221
|
// Combo members are always bundles; resolve their (env-effective) unit prices once.
|
|
219
|
-
const byId = new Map(
|
|
222
|
+
const byId = new Map(bundles.map((b) => [b.id, b]));
|
|
220
223
|
for (const combo of combos) {
|
|
221
224
|
for (const interval of ['monthly', 'annual']) {
|
|
222
225
|
const basket = combo.bundleIds.reduce((s, id) => s + (byId.get(id)?.prices[interval] ?? 0) * (combo.minQuantities?.[id] ?? 1), 0);
|
|
@@ -323,4 +326,4 @@ function loadBundles() {
|
|
|
323
326
|
b('team_usage_analytics', 'Team Usage Analytics', 'Per-team usage breakdown across the org → team subtree (all quota dimensions)', {}, 3000, ['pro', 'team'], 9, { features: ['team_usage_analytics'], stackable: false }),
|
|
324
327
|
];
|
|
325
328
|
}
|
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2JpbGxpbmctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQXdDLE1BQU0sNEJBQTRCLENBQUM7QUFPMUssZ0ZBQWdGO0FBQ2hGLDhFQUE4RTtBQUM5RSxrREFBa0Q7QUFDbEQsa0ZBQWtGO0FBQ2xGLGlEQUFpRDtBQUNqRCx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0UsaUZBQWlGO0FBQ2pGLDRFQUE0RTtBQUU1RSx3RkFBd0Y7QUFDeEYsU0FBUyxTQUFTLENBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsTUFBYztJQUNoRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLGFBQWEsTUFBTSxFQUFFLENBQUM7SUFDL0MsT0FBTyxTQUFTLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNyRixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBZSxFQUFFLEtBQWU7SUFDdkQsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxPQUFPO1FBQ0wsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNuQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxDQUFDLENBQUMs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c0U7UUFDdEUsK0VBQStFO1FBQy9FLDhFQUE4RTtRQUM5RSwwRkFBMEY7UUFDMUYsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLCtFQUErRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDM04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBMb2FkIGJpbGxpbmcgcGxhbiBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIFBlci1wbGFuIHByaWNlcyBhcmUgdGhlIG1vc3QgbGlrZWx5IHRvIHZhcnkgYmV0d2VlbiBlbnZpcm9ubWVudHM6XG4gKiAgIEJJTExJTkdfUExBTl97VElFUn1fTU9OVEhMWSAvIEJJTExJTkdfUExBTl97VElFUn1fQU5OVUFMICAoaW4gY2VudHMpXG4gKlxuICogT3B0aW9uYWwgb3ZlcnJpZGVzIGZvciBkZXNjcmlwdGlvbnMgYW5kIGZlYXR1cmVzOlxuICogICBCSUxMSU5HX1BMQU5fe1RJRVJ9X05BTUUgICAgICAgICAgKHBsYWluIHN0cmluZywgZGlzcGxheSBuYW1lKVxuICogICBCSUxMSU5HX1BMQU5fe1RJRVJ9X0RFU0NSSVBUSU9OICAgKHBsYWluIHN0cmluZylcbiAqICAgQklMTElOR19QTEFOX3tUSUVSfV9GRUFUVVJFUyAgICAgIChKU09OIHN0cmluZyBhcnJheSlcbiAqXG4gKiBBbGwgZGVmYXVsdHMgbWF0Y2ggdGhlIG9yaWdpbmFsIGhhcmRjb2RlZCBzZWVkIGRhdGEgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKi9cbmltcG9ydCB7IFFVT1RBX1RJRVJTLCBUSUVSX0ZFQVRVUkVTLCBGRUFUVVJFX01FVEFEQVRBLCBWQUxJRF9USUVSUywgU1RBTkRBUkRfVElFUlMsIGlzVmFsaWRUaWVyLCB0eXBlIFF1b3RhVGllciwgdHlwZSBRdW90YVRpZXJMaW1pdHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJpbGxpbmdDb25maWcsIEJpbGxpbmdQbGFuQ29uZmlnLCBCdW5kbGVDb25maWcsIENvbWJvRGlzY291bnRDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcy5qcyc7XG5cbi8qKiBQZXItdW5pdCBxdW90YSBkZWx0YXMgZm9yIGEgYnVuZGxlIOKAlCBrZXlzIGNvbnN0cmFpbmVkIHRvIHJlYWwgcXVvdGEgZmllbGRzXG4gKiAgKG1hdGNoZXMgYEJ1bmRsZUNvbmZpZy5ncmFudHNgKSwgc28gYSB0eXBvJ2QgZGltZW5zaW9uIGZhaWxzIHRvIGNvbXBpbGUuICovXG50eXBlIEdyYW50TWFwID0gUGFydGlhbDxSZWNvcmQ8a2V5b2YgUXVvdGFUaWVyTGltaXRzLCBudW1iZXI+PjtcblxuLy8gLS0gRGVmYXVsdCBmZWF0dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZSBtYXJrZXRlZCBmZWF0dXJlIGxpc3QgaXMgYnVpbHQgZnJvbSB0d28gZGVyaXZlZCBzb3VyY2VzIHNvIGl0IGNhbiBuZXZlclxuLy8gZHJpZnQgZnJvbSB3aGF0IHRoZSBwbGF0Zm9ybSBhY3R1YWxseSBlbmZvcmNlczpcbi8vICAgMS4gTElNSVQgbGluZXMgZGVyaXZlZCBmcm9tIGVhY2ggdGllcidzIEVGRkVDVElWRSBxdW90YSBsaW1pdHMgKFFVT1RBX1RJRVJTKSxcbi8vICAgICAgc28gdGhleSB0cmFjayBRVU9UQV9USUVSXyogZW52IG92ZXJyaWRlcy5cbi8vICAgMi4gSU5DTFVERUQtRkVBVFVSRSBsaW5lcyBkZXJpdmVkIGZyb20gdGhlIGVuZm9yY2VkIGVudGl0bGVtZW50IHNldFxuLy8gICAgICAoVElFUl9GRUFUVVJFUykgdmlhIEZFQVRVUkVfTUVUQURBVEEgbGFiZWxzIOKAlCBzbyBhbiBhZHZlcnRpc2VkIGJhc2Vcbi8vICAgICAgZmVhdHVyZSBpcyBhbHdheXMgb25lIGByZXF1aXJlRmVhdHVyZWAgYWN0dWFsbHkgZ3JhbnRzIGZvciB0aGF0IHRpZXIuXG4vLyBPbmx5IGdlbnVpbmVseSBub24tZ2F0ZWQgbWFya2V0aW5nIGNvcHkgKHN1cHBvcnQgbGV2ZWwsIGRhc2hib2FyZHMsIFJCQUMpIGlzXG4vLyBoYW5kLWF1dGhvcmVkLCBwYXNzZWQgYXMgYHBlcmtzYC4gUHVyY2hhc2FibGUgYWRkLW9ucyAoc3NvLCBhdWRpdF9sb2cpIGFyZSBOT1Rcbi8vIGxpc3RlZCBhcyBiYXNlIHBlcmtzIGhlcmUg4oCUIHRoZXkgYXJlIHNvbGQgYXMgYnVuZGxlcyAoc2VlIGxvYWRCdW5kbGVzKCkpLlxuXG4vKiogXCJVcCB0byBOIHBsdWdpbnNcIiAvIFwiVW5saW1pdGVkIHBsdWdpbnNcIiBmcm9tIGFuIGVmZmVjdGl2ZSBsaW1pdCAoLTEgPSB1bmxpbWl0ZWQpLiAqL1xuZnVuY3Rpb24gbGltaXRMaW5lKGxpbWl0OiBudW1iZXIsIHNpbmd1bGFyOiBzdHJpbmcsIHBsdXJhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGxpbWl0ID09PSAtMSkgcmV0dXJuIGBVbmxpbWl0ZWQgJHtwbHVyYWx9YDtcbiAgcmV0dXJuIGBVcCB0byAke2xpbWl0LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycpfSAke2xpbWl0ID09PSAxID8gc2luZ3VsYXIgOiBwbHVyYWx9YDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEZlYXR1cmVzKHRpZXI6IFF1b3RhVGllciwgcGVya3M6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBjb25zdCBsID0gUVVPVEFfVElFUlNbdGllcl0ubGltaXRzO1xuICByZXR1cm4gW1xuICAgIGxpbWl0TGluZShsLnNlYXRzLCAnc2VhdCcsICdzZWF0cycpLFxuICAgIGxpbWl0TGluZShsLnBsdWdpbnMsICdwbHVnaW4nLCAncGx1Z2lucycpLFxuICAgIGxpbWl0TGluZShsLnBpcGVsaW5lcywgJ3BpcGVsaW5lJywgJ3BpcGVsaW5lcycpLFxuICAgIGxpbWl0TGluZShsLmFwaUNhbGxzLCAnQVBJIGNhbGwnLCAnQVBJIGNhbGxzJyksXG4gICAgbGltaXRMaW5lKGwuYWlDYWxscywgJ0FJIGNhbGwnLCAnQUkgY2FsbHMnKSxcbiAgICAvLyBFbmZvcmNlZCBlbnRpdGxlbWVudHMg4oaSIGN1c3RvbWVyLWZhY2luZyBsYWJlbHMgKHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgpLlxuICAgIC4uLlRJRVJfRkVBVFVSRVNbdGllcl0ubWFwKChmKSA9PiBGRUFUVVJFX01FVEFEQVRBW2ZdLmxhYmVsKSxcbiAgICAuLi5wZXJrcyxcbiAgXTtcbn1cblxuLy8gTm90ZTogYHBlcmtzYCBhcmUgbm9uLWdhdGVkIG1hcmtldGluZyBsaW5lcyBvbmx5LiBFbmZvcmNlZCBmZWF0dXJlcyAoaW5jbC5cbi8vIFByaW9yaXR5IFN1cHBvcnQgZm9yIHByby90ZWFtL2VudGVycHJpc2UpIGNvbWUgZnJvbSBUSUVSX0ZFQVRVUkVTIGFib3ZlLlxuY29uc3QgREVGQVVMVF9ERVZFTE9QRVJfRkVBVFVSRVMgPSBkZWZhdWx0RmVhdHVyZXMoJ2RldmVsb3BlcicsIFsnQ29tbXVuaXR5IHN1cHBvcnQnXSk7XG5jb25zdCBERUZBVUxUX1BST19GRUFUVVJFUyA9IGRlZmF1bHRGZWF0dXJlcygncHJvJywgWydSZXBvcnRpbmcgZGFzaGJvYXJkJ10pO1xuY29uc3QgREVGQVVMVF9URUFNX0ZFQVRVUkVTID0gZGVmYXVsdEZlYXR1cmVzKCd0ZWFtJywgWydSQkFDICYgdGVhbSByb2xlcyddKTtcbmNvbnN0IERFRkFVTFRfRU5URVJQUklTRV9GRUFUVVJFUyA9IGRlZmF1bHRGZWF0dXJlcygnZW50ZXJwcmlzZScsIFtcbiAgJ1JCQUMgJiB0ZWFtIHJvbGVzJywgJ1JlcG9ydGluZyBkYXNoYm9hcmQnLFxuXSk7XG4vLyBVbmxpbWl0ZWQgaW5jbHVkZXMgZXZlcnkgZmVhdHVyZSAoVElFUl9GRUFUVVJFUy51bmxpbWl0ZWQgPSBhbGwpLlxuY29uc3QgREVGQVVMVF9VTkxJTUlURURfRkVBVFVSRVMgPSBkZWZhdWx0RmVhdHVyZXMoJ3VubGltaXRlZCcsIFtcbiAgJ1VubGltaXRlZCBldmVyeXRoaW5nJywgJ1JCQUMgJiB0ZWFtIHJvbGVzJywgJ1JlcG9ydGluZyBkYXNoYm9hcmQnLFxuXSk7XG5cbi8qKlxuICogUGFyc2UgYSBwcmljZSAoaW4gY2VudHMpIGZyb20gYW4gZW52IHZhciwgZmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0IHdoZW5cbiAqIHVuc2V0IE9SIG1hbGZvcm1lZC4gQSBOYU4gKGUuZy4gYEJJTExJTkdfUExBTl9QUk9fTU9OVEhMWT1hYmNgKSBtdXN0IG5ldmVyXG4gKiBmbG93IGludG8gdGhlIHJldHVybmVkIGNvbmZpZyBhcyBhIHByaWNlLlxuICovXG5mdW5jdGlvbiBlbnZDZW50cyhlbnZWYXI6IHN0cmluZyB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChlbnZWYXIgPT09IHVuZGVmaW5lZCB8fCBlbnZWYXIgPT09ICcnKSByZXR1cm4gZmFsbGJhY2s7XG4gIGNvbnN0IG4gPSBwYXJzZUludChlbnZWYXIsIDEwKTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IGZhbGxiYWNrIDogbjtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIEpTT04gYXJyYXkgZnJvbSBhbiBlbnYgdmFyLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VGZWF0dXJlcyhlbnZWYXI6IHN0cmluZyB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBpZiAoIWVudlZhcikgcmV0dXJuIGZhbGxiYWNrO1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoZW52VmFyKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDogZmFsbGJhY2s7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxufVxuXG4vKipcbiAqIExvYWQgYmlsbGluZyBwbGFuIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQmlsbGluZ0NvbmZpZygpOiBCaWxsaW5nQ29uZmlnIHtcbiAgLy8gS2V5ZWQgYnkgUXVvdGFUaWVyIHNvIHRoZSBjb21waWxlciBmb3JjZXMgYSBwbGFuIGZvciBFVkVSWSB0aWVyIOKAlCBhZGRpbmcgYVxuICAvLyA1dGggUXVvdGFUaWVyIHdpdGhvdXQgYSBwbGFuIGhlcmUgaXMgbm93IGEgY29tcGlsZSBlcnJvciAod2FzIGEgaGFuZC1rZXB0XG4gIC8vIDQtZWxlbWVudCBhcnJheSB0aGF0IHNpbGVudGx5IHNoaXBwZWQgbm8gcGxhbi9wcmljZSBmb3IgYSBuZXcgdGllcikuIFRoZVxuICAvLyBwdWJsaWMgYGNvbmZpZy5wbGFuc2Agc2hhcGUgc3RheXMgYW4gYXJyYXksIGRlcml2ZWQgYmVsb3cgaW4gVkFMSURfVElFUlNcbiAgLy8gb3JkZXIgKGRldmVsb3BlciwgcHJvLCB0ZWFtLCBlbnRlcnByaXNlKSB0byBwcmVzZXJ2ZSBjb25zdW1lciBvcmRlcmluZy5cbiAgY29uc3QgcGxhbkJ5VGllcjogUmVjb3JkPFF1b3RhVGllciwgQmlsbGluZ1BsYW5Db25maWc+ID0ge1xuICAgIGRldmVsb3Blcjoge1xuICAgICAgaWQ6ICdkZXZlbG9wZXInLFxuICAgICAgbmFtZTogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0RFVkVMT1BFUl9OQU1FIHx8ICdEZXZlbG9wZXInLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9ERVZFTE9QRVJfREVTQ1JJUFRJT05cbiAgICAgICAgfHwgJ0ZyZWUgc3RhcnRlciB0aWVyIGZvciBpbmRpdmlkdWFsIGRldmVsb3BlcnMnLFxuICAgICAgdGllcjogJ2RldmVsb3BlcicsXG4gICAgICBwcmljZXM6IHtcbiAgICAgICAgbW9udGhseTogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0RFVkVMT1BFUl9NT05USExZLCAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fREVWRUxPUEVSX0FOTlVBTCwgMCksXG4gICAgICB9LFxuICAgICAgZmVhdHVyZXM6IHBhcnNlRmVhdHVyZXMoXG4gICAgICAgIHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9ERVZFTE9QRVJfRkVBVFVSRVMsXG4gICAgICAgIERFRkFVTFRfREVWRUxPUEVSX0ZFQVRVUkVTLFxuICAgICAgKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgc29ydE9yZGVyOiAwLFxuICAgIH0sXG4gICAgcHJvOiB7XG4gICAgICBpZDogJ3BybycsXG4gICAgICBuYW1lOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fUFJPX05BTUUgfHwgJ1BybycsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19ERVNDUklQVElPTlxuICAgICAgICB8fCAnRm9yIGluZGl2aWR1YWwgcG93ZXIgdXNlcnMgYW5kIHByb2R1Y3Rpb24gd29ya2xvYWRzJyxcbiAgICAgIHRpZXI6ICdwcm8nLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIG1vbnRobHk6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9QUk9fTU9OVEhMWSwgNDkwMCksXG4gICAgICAgIGFubnVhbDogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19BTk5VQUwsIDQ5MDAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9QUk9fRkVBVFVSRVMsXG4gICAgICApLFxuICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgc29ydE9yZGVyOiAxLFxuICAgIH0sXG4gICAgdGVhbToge1xuICAgICAgaWQ6ICd0ZWFtJyxcbiAgICAgIG5hbWU6IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9URUFNX05BTUUgfHwgJ1RlYW0nLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9URUFNX0RFU0NSSVBUSU9OXG4gICAgICAgIHx8ICdGb3IgdGVhbXMgY29sbGFib3JhdGluZyBvbiBzaGFyZWQgcGlwZWxpbmVzJyxcbiAgICAgIHRpZXI6ICd0ZWFtJyxcbiAgICAgIHByaWNlczoge1xuICAgICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVEVBTV9NT05USExZLCAxNDkwMCksXG4gICAgICAgIGFubnVhbDogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1RFQU1fQU5OVUFMLCAxNDkwMDApLFxuICAgICAgfSxcbiAgICAgIGZlYXR1cmVzOiBwYXJzZUZlYXR1cmVzKFxuICAgICAgICBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVEVBTV9GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9URUFNX0ZFQVRVUkVTLFxuICAgICAgKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIHNvcnRPcmRlcjogMixcbiAgICB9LFxuICAgIGVudGVycHJpc2U6IHtcbiAgICAgIGlkOiAnZW50ZXJwcmlzZScsXG4gICAgICBuYW1lOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fRU5URVJQUklTRV9OQU1FIHx8ICdFbnRlcnByaXNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fRU5URVJQUklTRV9ERVNDUklQVElPTlxuICAgICAgICB8fCAnT3JnLXdpZGUgc2NhbGUgd2l0aCB1bmxpbWl0ZWQgc2VhdHMgYW5kIHByaW9yaXR5IHN1cHBvcnQnLFxuICAgICAgdGllcjogJ2VudGVycHJpc2UnLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIG1vbnRobHk6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9FTlRFUlBSSVNFX01PTlRITFksIDM5OTAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fRU5URVJQUklTRV9BTk5VQUwsIDM5OTAwMCksXG4gICAgICB9LFxuICAgICAgZmVhdHVyZXM6IHBhcnNlRmVhdHVyZXMoXG4gICAgICAgIHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9FTlRFUlBSSVNFX0ZFQVRVUkVTLFxuICAgICAgICBERUZBVUxUX0VOVEVSUFJJU0VfRkVBVFVSRVMsXG4gICAgICApLFxuICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgc29ydE9yZGVyOiAzLFxuICAgIH0sXG4gICAgLy8gVGhlIGJpbGxpbmctRElTQUJMRUQgZGVmYXVsdCBwbGFuOiBldmVyeXRoaW5nIHVuY2FwcGVkLCBhbGwgZmVhdHVyZXMsIGZyZWUuXG4gICAgLy8gU2VlZGVkIHNvIHRoZSB0aWVy4oaScGxhbiBtYXBwaW5nIHJlc29sdmVzLCBidXQgbmV2ZXIgb2ZmZXJlZCBmb3Igc2FsZSDigJQgdGhlXG4gICAgLy8gcmVhZC1wbGFucyByb3V0ZSBmaWx0ZXJzIGl0IG91dCAoc2VlIGNyZWF0ZVJlYWRQbGFuUm91dGVzKSwgc28gaXQncyBoaWRkZW5cbiAgICAvLyB3aGVuZXZlciBiaWxsaW5nIGlzIGVuYWJsZWQgKHRoZSBvbmx5IHRpbWUgL3BsYW5zIGlzIHNlcnZlZCkuXG4gICAgdW5saW1pdGVkOiB7XG4gICAgICBpZDogJ3VubGltaXRlZCcsXG4gICAgICBuYW1lOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVU5MSU1JVEVEX05BTUUgfHwgJ1VubGltaXRlZCcsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1VOTElNSVRFRF9ERVNDUklQVElPTlxuICAgICAgICB8fCAnRXZlcnl0aGluZyB1bmNhcHBlZCDigJQgdGhlIGRlZmF1bHQgd2hlbiBiaWxsaW5nIGlzIGRpc2FibGVkJyxcbiAgICAgIHRpZXI6ICd1bmxpbWl0ZWQnLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIG1vbnRobHk6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9VTkxJTUlURURfTU9OVEhMWSwgMCksXG4gICAgICAgIGFubnVhbDogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1VOTElNSVRFRF9BTk5VQUwsIDApLFxuICAgICAgfSxcbiAgICAgIGZlYXR1cmVzOiBwYXJzZUZlYXR1cmVzKFxuICAgICAgICBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVU5MSU1JVEVEX0ZFQVRVUkVTLFxuICAgICAgICBERUZBVUxUX1VOTElNSVRFRF9GRUFUVVJFUyxcbiAgICAgICksXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICBzb3J0T3JkZXI6IDQsXG4gICAgfSxcbiAgfTtcblxuICAvLyBEZXJpdmUgdGhlIGFycmF5IGNvbnN1bWVycyByZWFkIChgY29uZmlnLnBsYW5zYCkgaW4gY2Fub25pY2FsIHRpZXIgb3JkZXIuXG4gIGNvbnN0IHBsYW5zOiBCaWxsaW5nUGxhbkNvbmZpZ1tdID0gVkFMSURfVElFUlMubWFwKCh0aWVyKSA9PiBwbGFuQnlUaWVyW3RpZXJdKTtcblxuICByZXR1cm4geyBwbGFucywgYnVuZGxlczogbG9hZEJ1bmRsZXMoKSwgY29tYm9EaXNjb3VudHM6IGxvYWRDb21ib0Rpc2NvdW50cygpIH07XG59XG5cbi8qKlxuICogQ29tYm8gZGlzY291bnRzIChkb2NzL2JpbGxpbmctYnVuZGxlcy5tZCDCp0NvbWJvIHByaWNpbmcpLiBXaGVuIGFuIGFjY291bnQgb3duc1xuICogZXZlcnkgbWVtYmVyIGJ1bmRsZSAoZWFjaCBhdCDiiaUgaXRzIG1pbmltdW0gcXVhbnRpdHkpLCB0aGUgc2V0IGlzIGJpbGxlZCBhdCB0aGVcbiAqIGNvbWJpbmVkIHByaWNlIGluc3RlYWQgb2YgdGhlIHN1bSBvZiB0aGUgbWVtYmVycyDigJQgcmVhbGl6ZWQgYXMgYSByZWN1cnJpbmcgdXNhZ2VcbiAqIGNyZWRpdCBmb3IgdGhlIGRpZmZlcmVuY2UuIE92ZXJsYXBwaW5nIGNvbWJvcyBhcmUgcmVzb2x2ZWQgYnkgbWF4LXdlaWdodCBwYWNraW5nXG4gKiAoYSBzaGFyZWQgYWRkLW9uIGlzIG5ldmVyIGRpc2NvdW50ZWQgdHdpY2UpOyBgc29ydE9yZGVyYCBicmVha3MgZXF1YWwtdG90YWwgdGllcy5cbiAqXG4gKiBEZWZhdWx0czpcbiAqICAtIFwiQW5hbHl0aWNzIFN1aXRlXCIg4oCUIEFkdmFuY2VkIFJlcG9ydGluZyAoRE9SQSkgKyBUZWFtIFVzYWdlIEFuYWx5dGljcywgZWFjaFxuICogICAgJDMwL21vLCB0b2dldGhlciAkNDAvbW8gKCQ0MDAveXIpIOKGkiBhICQyMC9tbyBjcmVkaXQuXG4gKiAgLSBcIlRlYW0gR3Jvd3RoIEJ1bmRsZVwiIOKAlCDiiaUxIFNlYXQgUGFjayAoJDI1KSArIFRlYW0gVXNhZ2UgQW5hbHl0aWNzICgkMzApLFxuICogICAgdG9nZXRoZXIgJDM1L21vICgkMzUwL3lyKSDihpIgYSAkMjAvbW8gY3JlZGl0LlxuICogUHJpY2VzIGVudi1vdmVycmlkYWJsZSB2aWEgYEJJTExJTkdfQ09NQk9fPElEPl9NT05USExZYCAvIGBfQU5OVUFMYC5cbiAqL1xuZnVuY3Rpb24gbG9hZENvbWJvRGlzY291bnRzKCk6IENvbWJvRGlzY291bnRDb25maWdbXSB7XG4gIGNvbnN0IGMgPSAoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgYnVuZGxlSWRzOiBzdHJpbmdbXSxcbiAgICBtb250aGx5OiBudW1iZXIsXG4gICAgYW5udWFsOiBudW1iZXIsXG4gICAgc29ydE9yZGVyOiBudW1iZXIsXG4gICAgbWluUXVhbnRpdGllcz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gICk6IENvbWJvRGlzY291bnRDb25maWcgPT4gKHtcbiAgICBpZCxcbiAgICBuYW1lLFxuICAgIGJ1bmRsZUlkcyxcbiAgICAuLi4obWluUXVhbnRpdGllcyA/IHsgbWluUXVhbnRpdGllcyB9IDoge30pLFxuICAgIHByaWNlczoge1xuICAgICAgbW9udGhseTogZW52Q2VudHMocHJvY2Vzcy5lbnZbYEJJTExJTkdfQ09NQk9fJHtpZC50b1VwcGVyQ2FzZSgpfV9NT05USExZYF0sIG1vbnRobHkpLFxuICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudltgQklMTElOR19DT01CT18ke2lkLnRvVXBwZXJDYXNlKCl9X0FOTlVBTGBdLCBhbm51YWwpLFxuICAgIH0sXG4gICAgc29ydE9yZGVyLFxuICAgIGlzQWN0aXZlOiB0cnVlLFxuICB9KTtcblxuICBjb25zdCBjb21ib3MgPSBbXG4gICAgYygnYW5hbHl0aWNzX3N1aXRlJywgJ0FuYWx5dGljcyBTdWl0ZScsIFsnYWR2YW5jZWRfcmVwb3J0aW5nJywgJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJ10sIDQwMDAsIDQwMDAwLCAwKSxcbiAgICBjKCd0ZWFtX2dyb3d0aCcsICdUZWFtIEdyb3d0aCBCdW5kbGUnLCBbJ3NlYXRfcGFjaycsICd0ZWFtX3VzYWdlX2FuYWx5dGljcyddLCAzNTAwLCAzNTAwMCwgMSwgeyBzZWF0X3BhY2s6IDEgfSksXG4gIF07XG4gIHdhcm5Pbk5vbkRpc2NvdW50Q29tYm9zKGNvbWJvcyk7XG4gIHJldHVybiBjb21ib3M7XG59XG5cbi8qKlxuICogR3VhcmRyYWlsOiBhIGNvbWJvIHdob3NlIGNvbWJpbmVkIHByaWNlIGlzIOKJpSBpdHMgbWluaW11bS1jb21wb3NpdGlvbiBiYXNrZXQgZ3JhbnRzXG4gKiBubyBjcmVkaXQgKHRoZSBjcmVkaXQgY2xhbXBzIHRvICQwKSBhbmQgaXMgc2lsZW50bHkgaW5lcnQuIFdhcm4gbG91ZGx5IGluc3RlYWQgc28gYVxuICogbWlzY29uZmlndXJlZCBgQklMTElOR19DT01CT18qYCBvdmVycmlkZSBpcyBjYXVnaHQuIE5vbi1mYXRhbC5cbiAqL1xuZnVuY3Rpb24gd2Fybk9uTm9uRGlzY291bnRDb21ib3MoY29tYm9zOiBDb21ib0Rpc2NvdW50Q29uZmlnW10pOiB2b2lkIHtcbiAgLy8gQ29tYm8gbWVtYmVycyBhcmUgYWx3YXlzIGJ1bmRsZXM7IHJlc29sdmUgdGhlaXIgKGVudi1lZmZlY3RpdmUpIHVuaXQgcHJpY2VzIG9uY2UuXG4gIGNvbnN0IGJ5SWQgPSBuZXcgTWFwKGxvYWRCdW5kbGVzKCkubWFwKChiKSA9PiBbYi5pZCwgYl0pKTtcbiAgZm9yIChjb25zdCBjb21ibyBvZiBjb21ib3MpIHtcbiAgICBmb3IgKGNvbnN0IGludGVydmFsIG9mIFsnbW9udGhseScsICdhbm51YWwnXSBhcyBjb25zdCkge1xuICAgICAgY29uc3QgYmFza2V0ID0gY29tYm8uYnVuZGxlSWRzLnJlZHVjZSgocywgaWQpID0+IHMgKyAoYnlJZC5nZXQoaWQpPy5wcmljZXNbaW50ZXJ2YWxdID8/IDApICogKGNvbWJvLm1pblF1YW50aXRpZXM/LltpZF0gPz8gMSksIDApO1xuICAgICAgaWYgKGNvbWJvLnByaWNlc1tpbnRlcnZhbF0gPj0gYmFza2V0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihgW2JpbGxpbmctY29uZmlnXSBDb21ibyBcIiR7Y29tYm8uaWR9XCIgJHtpbnRlcnZhbH0gcHJpY2UgJHtjb21iby5wcmljZXNbaW50ZXJ2YWxdfSDiiaUgbWVtYmVyIGJhc2tldCAke2Jhc2tldH07IGl0IGdyYW50cyBubyBkaXNjb3VudC5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgQlVORExFX0dCID0gMTAyNCAqIDEwMjQgKiAxMDI0O1xuXG4vKipcbiAqIEFwcGx5IGEgcGVyLWJ1bmRsZSBncmFudCBvdmVycmlkZS4gRWFjaCBzdGFja2FibGUgcGFjayBncmFudHMgZXhhY3RseSBvbmVcbiAqIHF1b3RhIGRpbWVuc2lvbiwgc28gYEJJTExJTkdfQlVORExFXzxJRD5fR1JBTlRgIHJldHVuZXMgdGhhdCBhbW91bnQgKGUuZy4gbWFrZVxuICogdGhlIFNlYXQgUGFjayBncmFudCArMTAgaW5zdGVhZCBvZiArNSkg4oCUIHBhcmFsbGVsIHRvIHRoZSBwcmljZSBvdmVycmlkZXMuXG4gKiBJZ25vcmVkIGZvciBtdWx0aS1kaW1lbnNpb24gb3IgZmVhdHVyZS1vbmx5IChlbXB0eS1ncmFudCkgYnVuZGxlcywgYW5kIGZvciBhXG4gKiBtYWxmb3JtZWQvbmVnYXRpdmUgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5R3JhbnRPdmVycmlkZShpZDogc3RyaW5nLCBncmFudHM6IEdyYW50TWFwKTogR3JhbnRNYXAge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltgQklMTElOR19CVU5ETEVfJHtpZC50b1VwcGVyQ2FzZSgpfV9HUkFOVGBdO1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZ3JhbnRzKTtcbiAgaWYgKHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gJycgfHwga2V5cy5sZW5ndGggIT09IDEpIHJldHVybiBncmFudHM7XG4gIGNvbnN0IG4gPSBwYXJzZUludChyYXcsIDEwKTtcbiAgaWYgKE51bWJlci5pc05hTihuKSB8fCBuIDwgMCkgcmV0dXJuIGdyYW50cztcbiAgLy8gYGtleXNgIGNhbWUgZnJvbSBhIEdyYW50TWFwLCBzbyBpdHMgc29sZSBrZXkgaXMgYSBRdW90YVRpZXJMaW1pdHMgZmllbGQuXG4gIHJldHVybiB7IFtrZXlzWzBdIGFzIGtleW9mIFF1b3RhVGllckxpbWl0c106IG4gfTtcbn1cblxuLyoqXG4gKiBBcHBseSBhIHBlci1idW5kbGUgdGllci1hdmFpbGFiaWxpdHkgb3ZlcnJpZGUuIGBCSUxMSU5HX0JVTkRMRV88SUQ+X1RJRVJTYCBpcyBhXG4gKiBKU09OIGFycmF5IG9mIHRpZXIgSURzIHRoYXQgbWF5IHB1cmNoYXNlIHRoZSBidW5kbGUgKGUuZy4gYFtcImRldmVsb3BlclwiLFwicHJvXCJdYClcbiAqIOKAlCBwYXJhbGxlbCB0byB0aGUgcHJpY2UvZ3JhbnQgb3ZlcnJpZGVzLiBGYWxscyBiYWNrIHRvIGBkZWZhdWx0VGllcnNgIHdoZW5cbiAqIHVuc2V0LCBtYWxmb3JtZWQsIGVtcHR5LCBvciBjb250YWluaW5nIGFuIHVua25vd24gdGllci5cbiAqL1xuZnVuY3Rpb24gYXBwbHlUaWVyc092ZXJyaWRlKGlkOiBzdHJpbmcsIGRlZmF1bHRUaWVyczogUXVvdGFUaWVyW10pOiBRdW90YVRpZXJbXSB7XG4gIGNvbnN0IHJhdyA9IHByb2Nlc3MuZW52W2BCSUxMSU5HX0JVTkRMRV8ke2lkLnRvVXBwZXJDYXNlKCl9X1RJRVJTYF07XG4gIGlmICghcmF3KSByZXR1cm4gZGVmYXVsdFRpZXJzO1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSB8fCBwYXJzZWQubGVuZ3RoID09PSAwKSByZXR1cm4gZGVmYXVsdFRpZXJzO1xuICAgIGNvbnN0IHZhbGlkID0gcGFyc2VkLmZpbHRlcigodCk6IHQgaXMgUXVvdGFUaWVyID0+IHR5cGVvZiB0ID09PSAnc3RyaW5nJyAmJiBpc1ZhbGlkVGllcih0KSk7XG4gICAgcmV0dXJuIHZhbGlkLmxlbmd0aCA9PT0gcGFyc2VkLmxlbmd0aCA/IHZhbGlkIDogZGVmYXVsdFRpZXJzO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZGVmYXVsdFRpZXJzO1xuICB9XG59XG5cbi8qKlxuICogUHVyY2hhc2FibGUgYWRkLW9uIGJ1bmRsZXMgKGRvY3MvYmlsbGluZy1idW5kbGVzLm1kIMKnMykuIEdyYW50cyBhcmUgcGVyLXVuaXRcbiAqIGRlbHRhcyBvbiBRdW90YVRpZXJMaW1pdHM7IHByaWNlcyAoY2VudHMsIGBCSUxMSU5HX0JVTkRMRV88SUQ+X01PTlRITFlgIC9cbiAqIGBfQU5OVUFMYCksIHRoZSBzaW5nbGUtZGltZW5zaW9uIGdyYW50IGFtb3VudCAoYEJJTExJTkdfQlVORExFXzxJRD5fR1JBTlRgKSxcbiAqIGFuZCB0aGUgcHVyY2hhc2FibGUtdGllciBsaXN0IChgQklMTElOR19CVU5ETEVfPElEPl9USUVSU2ApIGFyZSBhbGxcbiAqIGVudi1vdmVycmlkYWJsZS4gQW5udWFsIOKJiCAxMMOXIG1vbnRobHkuXG4gKi9cbmZ1bmN0aW9uIGxvYWRCdW5kbGVzKCk6IEJ1bmRsZUNvbmZpZ1tdIHtcbiAgY29uc3QgYiA9IChcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIGdyYW50czogR3JhbnRNYXAsXG4gICAgbW9udGhseTogbnVtYmVyLFxuICAgIGF2YWlsYWJsZUZvclRpZXJzOiBRdW90YVRpZXJbXSxcbiAgICBzb3J0T3JkZXI6IG51bWJlcixcbiAgICBleHRyYTogeyBmZWF0dXJlcz86IHN0cmluZ1tdOyBzdGFja2FibGU/OiBib29sZWFuIH0gPSB7fSxcbiAgKTogQnVuZGxlQ29uZmlnID0+IHtcbiAgICAvLyBSZXNvbHZlIG1vbnRobHkgZmlyc3Qgc28gdGhlIGFubnVhbCBmYWxsYmFjayB0cmFja3MgYSBgX01PTlRITFlgIG92ZXJyaWRlXG4gICAgLy8gKGFubnVhbCDiiYggMTDDlyB0aGUgKmVmZmVjdGl2ZSogbW9udGhseSwgbm90IHRoZSBoYXJkY29kZWQgZGVmYXVsdCkuXG4gICAgY29uc3QgcmVzb2x2ZWRNb250aGx5ID0gZW52Q2VudHMocHJvY2Vzcy5lbnZbYEJJTExJTkdfQlVORExFXyR7aWQudG9VcHBlckNhc2UoKX1fTU9OVEhMWWBdLCBtb250aGx5KTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQsXG4gICAgICBuYW1lLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBncmFudHM6IGFwcGx5R3JhbnRPdmVycmlkZShpZCwgZ3JhbnRzKSxcbiAgICAgIC4uLihleHRyYS5mZWF0dXJlcyA/IHsgZmVhdHVyZXM6IGV4dHJhLmZlYXR1cmVzIH0gOiB7fSksXG4gICAgICBwcmljZXM6IHtcbiAgICAgICAgbW9udGhseTogcmVzb2x2ZWRNb250aGx5LFxuICAgICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52W2BCSUxMSU5HX0JVTkRMRV8ke2lkLnRvVXBwZXJDYXNlKCl9X0FOTlVBTGBdLCByZXNvbHZlZE1vbnRobHkgKiAxMCksXG4gICAgICB9LFxuICAgICAgc3RhY2thYmxlOiBleHRyYS5zdGFja2FibGUgPz8gdHJ1ZSxcbiAgICAgIGF2YWlsYWJsZUZvclRpZXJzOiBhcHBseVRpZXJzT3ZlcnJpZGUoaWQsIGF2YWlsYWJsZUZvclRpZXJzKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgc29ydE9yZGVyLFxuICAgIH07XG4gIH07XG5cbiAgLy8gQnVuZGxlcyBhcmUgcHVyY2hhc2FibGUgb24gZXZlcnkgU0VMRUNUQUJMRSB0aWVyIChleGNsdWRlcyBgdW5saW1pdGVkYCwgd2hpY2hcbiAgLy8gaXMgdGhlIGJpbGxpbmctb2ZmIHRpZXIgYW5kIGJ1eXMgbm90aGluZykg4oCUIHNvIHRoaXMgaXMgZXhhY3RseSBTVEFOREFSRF9USUVSUy5cbiAgY29uc3QgQUxMOiBRdW90YVRpZXJbXSA9IFsuLi5TVEFOREFSRF9USUVSU107XG4gIHJldHVybiBbXG4gICAgLy8gQ2FwYWNpdHkgcGFja3MgKHNlYXRzL3BpcGVsaW5lcy9wbHVnaW5zKSBhcmUgYXZhaWxhYmxlIG9uIEVWRVJZIHRpZXIgc28gYW55XG4gICAgLy8gYWNjb3VudCDigJQgaW5jbHVkaW5nIGZyZWUgKGRldmVsb3Blcikg4oCUIGNhbiBleHBhbmQgaW4gcGxhY2UuIEZlYXR1cmUgYnVuZGxlc1xuICAgIC8vIChhdWRpdF9sb2cvc3NvKSBhbmQgcmF0ZSBwYWNrcyBzdGF5IHRpZXItc2NvcGVkIGJ5IGRlZmF1bHQuXG4gICAgYignc2VhdF9wYWNrJywgJ1NlYXQgUGFjayAoKzUpJywgJzUgYWRkaXRpb25hbCBtZW1iZXIgc2VhdHMnLCB7IHNlYXRzOiA1IH0sIDI1MDAsIEFMTCwgMCksXG4gICAgYigncGlwZWxpbmVfcGFjaycsICdQaXBlbGluZSBQYWNrICgrMTApJywgJzEwIGFkZGl0aW9uYWwgcGlwZWxpbmVzJywgeyBwaXBlbGluZXM6IDEwIH0sIDE1MDAsIEFMTCwgMSksXG4gICAgYigncGx1Z2luX3BhY2snLCAnUGx1Z2luIFBhY2sgKCsxMDApJywgJzEwMCBhZGRpdGlvbmFsIHBsdWdpbnMnLCB7IHBsdWdpbnM6IDEwMCB9LCAxNTAwLCBBTEwsIDIpLFxuICAgIGIoJ2FwaV9wYWNrJywgJ0FQSSBQYWNrICgrMU0pJywgJzEsMDAwLDAwMCBhZGRpdGlvbmFsIEFQSSBjYWxscyAvIHBlcmlvZCcsIHsgYXBpQ2FsbHM6IDFfMDAwXzAwMCB9LCAyMDAwLCBBTEwsIDMpLFxuICAgIGIoJ2FpX3BhY2snLCAnQUkgUGFjayAoKzVrKScsICc1LDAwMCBhZGRpdGlvbmFsIEFJIGNhbGxzIC8gcGVyaW9kJywgeyBhaUNhbGxzOiA1MDAwIH0sIDc1MDAsIEFMTCwgNCksXG4gICAgYignc3RvcmFnZV9wYWNrJywgJ1N0b3JhZ2UgUGFjayAoKzUwIEdCKScsICc1MCBHQiBhZGRpdGlvbmFsIHJlZ2lzdHJ5IHN0b3JhZ2UnLCB7IHN0b3JhZ2VCeXRlczogNTAgKiBCVU5ETEVfR0IgfSwgMjUwMCwgQUxMLCA1KSxcbiAgICBiKCdhdWRpdF9sb2cnLCAnQXVkaXQgTG9nJywgJ0F1ZGl0IGxvZyBjYXBhYmlsaXR5Jywge30sIDIwMDAsIFsncHJvJ10sIDYsIHsgZmVhdHVyZXM6IFsnYXVkaXRfbG9nJ10sIHN0YWNrYWJsZTogZmFsc2UgfSksXG4gICAgLy8gU1NPIGlzIElOQ0xVREVEIGluIFRlYW0gKHNlZSBUSUVSX0ZFQVRVUkVTLnRlYW0pLCBzbyB0aGUgYWRkLW9uIGlzIFByby1vbmx5LlxuICAgIGIoJ3NzbycsICdTU08gLyBJZFAnLCAnU1NPICsgdXAgdG8gNSBJZFAgY29uZmlncycsIHsgaWRwQ29uZmlnczogNSB9LCA0MDAwLCBbJ3BybyddLCA3LCB7IGZlYXR1cmVzOiBbJ3NzbyddLCBzdGFja2FibGU6IGZhbHNlIH0pLFxuICAgIC8vIERPUkEgLyBhZHZhbmNlZCBkZWxpdmVyeSBhbmFseXRpY3MuIElOQ0xVREVEIGluIEVudGVycHJpc2UgKFRJRVJfRkVBVFVSRVMpLFxuICAgIC8vIHNvIHRoZSBhZGQtb24gaXMgb2ZmZXJlZCB0byBldmVyeSBvdGhlciB0aWVyIChkZXZlbG9wZXIvcHJvL3RlYW0pLiBQcmljZWRcbiAgICAvLyBiZXR3ZWVuIEF1ZGl0IExvZyAoJDIwKSBhbmQgU1NPICgkNDApIOKAlCBhIGhpZ2hlci12YWx1ZSwgYWN0aXZlbHktdXNlZFxuICAgIC8vIGFuYWx5dGljcyBzdXJmYWNlIHRoYW4gdGhlIGF1ZGl0IGxvZywgYnV0IGJlbG93IHRoZSBTU08gZW50ZXJwcmlzZSBnYXRlLlxuICAgIGIoJ2FkdmFuY2VkX3JlcG9ydGluZycsICdBZHZhbmNlZCBSZXBvcnRpbmcgKERPUkEpJywgJ0RPUkEgZGVsaXZlcnkgbWV0cmljcyDigJQgZGVwbG95bWVudCBmcmVxdWVuY3ksIGNoYW5nZSBmYWlsdXJlIHJhdGUsIE1UVFIsIGxlYWQtdGltZSBwcm94eSwgcGVyZm9ybWFuY2UgYmFuZHMgKyB0cmVuZCcsIHt9LCAzMDAwLCBbJ2RldmVsb3BlcicsICdwcm8nLCAndGVhbSddLCA4LCB7IGZlYXR1cmVzOiBbJ2FkdmFuY2VkX3JlcG9ydGluZyddLCBzdGFja2FibGU6IGZhbHNlIH0pLFxuICAgIC8vIFBlci10ZWFtIHVzYWdlIGJyZWFrZG93biBhY3Jvc3MgdGhlIG9yZyDihpIgdGVhbSBzdWJ0cmVlLiBJTkNMVURFRCBpblxuICAgIC8vIEVudGVycHJpc2UgKFRJRVJfRkVBVFVSRVMpOyB0aGUgYWRkLW9uIGlzIG9mZmVyZWQgdG8gUHJvL1RlYW0gKGRldmVsb3BlciBoYXNcbiAgICAvLyBubyB0ZWFtcyB0byBicmVhayBkb3duKS4gUHJpY2VkIGF0ICQzMC9tbyAoJDMwMC95cikg4oCUIHBhcml0eSB3aXRoIERPUkEsIGl0c1xuICAgIC8vIGFuYWx5dGljcyBzaWJsaW5nLiBPdmVycmlkYWJsZSB2aWEgQklMTElOR19CVU5ETEVfVEVBTV9VU0FHRV9BTkFMWVRJQ1NfTU9OVEhMWS9fQU5OVUFMLlxuICAgIGIoJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJywgJ1RlYW0gVXNhZ2UgQW5hbHl0aWNzJywgJ1Blci10ZWFtIHVzYWdlIGJyZWFrZG93biBhY3Jvc3MgdGhlIG9yZyDihpIgdGVhbSBzdWJ0cmVlIChhbGwgcXVvdGEgZGltZW5zaW9ucyknLCB7fSwgMzAwMCwgWydwcm8nLCAndGVhbSddLCA5LCB7IGZlYXR1cmVzOiBbJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJ10sIHN0YWNrYWJsZTogZmFsc2UgfSksXG4gIF07XG59XG4iXX0=
|
|
329
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2JpbGxpbmctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQXdDLE1BQU0sNEJBQTRCLENBQUM7QUFPMUssZ0ZBQWdGO0FBQ2hGLDhFQUE4RTtBQUM5RSxrREFBa0Q7QUFDbEQsa0ZBQWtGO0FBQ2xGLGlEQUFpRDtBQUNqRCx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0UsaUZBQWlGO0FBQ2pGLDRFQUE0RTtBQUU1RSx3RkFBd0Y7QUFDeEYsU0FBUyxTQUFTLENBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsTUFBYztJQUNoRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLGFBQWEsTUFBTSxFQUFFLENBQUM7SUFDL0MsT0FBTyxTQUFTLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNyRixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBZSxFQUFFLEtBQWU7SUFDdkQsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxPQUFPO1FBQ0wsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUNuQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxDQUFDLENBQUMs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RSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5USxzRUFBc0U7UUFDdEUsK0VBQStFO1FBQy9FLDhFQUE4RTtRQUM5RSwwRkFBMEY7UUFDMUYsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLCtFQUErRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDM04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBMb2FkIGJpbGxpbmcgcGxhbiBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIFBlci1wbGFuIHByaWNlcyBhcmUgdGhlIG1vc3QgbGlrZWx5IHRvIHZhcnkgYmV0d2VlbiBlbnZpcm9ubWVudHM6XG4gKiAgIEJJTExJTkdfUExBTl97VElFUn1fTU9OVEhMWSAvIEJJTExJTkdfUExBTl97VElFUn1fQU5OVUFMICAoaW4gY2VudHMpXG4gKlxuICogT3B0aW9uYWwgb3ZlcnJpZGVzIGZvciBkZXNjcmlwdGlvbnMgYW5kIGZlYXR1cmVzOlxuICogICBCSUxMSU5HX1BMQU5fe1RJRVJ9X05BTUUgICAgICAgICAgKHBsYWluIHN0cmluZywgZGlzcGxheSBuYW1lKVxuICogICBCSUxMSU5HX1BMQU5fe1RJRVJ9X0RFU0NSSVBUSU9OICAgKHBsYWluIHN0cmluZylcbiAqICAgQklMTElOR19QTEFOX3tUSUVSfV9GRUFUVVJFUyAgICAgIChKU09OIHN0cmluZyBhcnJheSlcbiAqXG4gKiBBbGwgZGVmYXVsdHMgbWF0Y2ggdGhlIG9yaWdpbmFsIGhhcmRjb2RlZCBzZWVkIGRhdGEgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKi9cbmltcG9ydCB7IFFVT1RBX1RJRVJTLCBUSUVSX0ZFQVRVUkVTLCBGRUFUVVJFX01FVEFEQVRBLCBWQUxJRF9USUVSUywgU1RBTkRBUkRfVElFUlMsIGlzVmFsaWRUaWVyLCB0eXBlIFF1b3RhVGllciwgdHlwZSBRdW90YVRpZXJMaW1pdHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJpbGxpbmdDb25maWcsIEJpbGxpbmdQbGFuQ29uZmlnLCBCdW5kbGVDb25maWcsIENvbWJvRGlzY291bnRDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcy5qcyc7XG5cbi8qKiBQZXItdW5pdCBxdW90YSBkZWx0YXMgZm9yIGEgYnVuZGxlIOKAlCBrZXlzIGNvbnN0cmFpbmVkIHRvIHJlYWwgcXVvdGEgZmllbGRzXG4gKiAgKG1hdGNoZXMgYEJ1bmRsZUNvbmZpZy5ncmFudHNgKSwgc28gYSB0eXBvJ2QgZGltZW5zaW9uIGZhaWxzIHRvIGNvbXBpbGUuICovXG50eXBlIEdyYW50TWFwID0gUGFydGlhbDxSZWNvcmQ8a2V5b2YgUXVvdGFUaWVyTGltaXRzLCBudW1iZXI+PjtcblxuLy8gLS0gRGVmYXVsdCBmZWF0dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZSBtYXJrZXRlZCBmZWF0dXJlIGxpc3QgaXMgYnVpbHQgZnJvbSB0d28gZGVyaXZlZCBzb3VyY2VzIHNvIGl0IGNhbiBuZXZlclxuLy8gZHJpZnQgZnJvbSB3aGF0IHRoZSBwbGF0Zm9ybSBhY3R1YWxseSBlbmZvcmNlczpcbi8vICAgMS4gTElNSVQgbGluZXMgZGVyaXZlZCBmcm9tIGVhY2ggdGllcidzIEVGRkVDVElWRSBxdW90YSBsaW1pdHMgKFFVT1RBX1RJRVJTKSxcbi8vICAgICAgc28gdGhleSB0cmFjayBRVU9UQV9USUVSXyogZW52IG92ZXJyaWRlcy5cbi8vICAgMi4gSU5DTFVERUQtRkVBVFVSRSBsaW5lcyBkZXJpdmVkIGZyb20gdGhlIGVuZm9yY2VkIGVudGl0bGVtZW50IHNldFxuLy8gICAgICAoVElFUl9GRUFUVVJFUykgdmlhIEZFQVRVUkVfTUVUQURBVEEgbGFiZWxzIOKAlCBzbyBhbiBhZHZlcnRpc2VkIGJhc2Vcbi8vICAgICAgZmVhdHVyZSBpcyBhbHdheXMgb25lIGByZXF1aXJlRmVhdHVyZWAgYWN0dWFsbHkgZ3JhbnRzIGZvciB0aGF0IHRpZXIuXG4vLyBPbmx5IGdlbnVpbmVseSBub24tZ2F0ZWQgbWFya2V0aW5nIGNvcHkgKHN1cHBvcnQgbGV2ZWwsIGRhc2hib2FyZHMsIFJCQUMpIGlzXG4vLyBoYW5kLWF1dGhvcmVkLCBwYXNzZWQgYXMgYHBlcmtzYC4gUHVyY2hhc2FibGUgYWRkLW9ucyAoc3NvLCBhdWRpdF9sb2cpIGFyZSBOT1Rcbi8vIGxpc3RlZCBhcyBiYXNlIHBlcmtzIGhlcmUg4oCUIHRoZXkgYXJlIHNvbGQgYXMgYnVuZGxlcyAoc2VlIGxvYWRCdW5kbGVzKCkpLlxuXG4vKiogXCJVcCB0byBOIHBsdWdpbnNcIiAvIFwiVW5saW1pdGVkIHBsdWdpbnNcIiBmcm9tIGFuIGVmZmVjdGl2ZSBsaW1pdCAoLTEgPSB1bmxpbWl0ZWQpLiAqL1xuZnVuY3Rpb24gbGltaXRMaW5lKGxpbWl0OiBudW1iZXIsIHNpbmd1bGFyOiBzdHJpbmcsIHBsdXJhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGxpbWl0ID09PSAtMSkgcmV0dXJuIGBVbmxpbWl0ZWQgJHtwbHVyYWx9YDtcbiAgcmV0dXJuIGBVcCB0byAke2xpbWl0LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycpfSAke2xpbWl0ID09PSAxID8gc2luZ3VsYXIgOiBwbHVyYWx9YDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEZlYXR1cmVzKHRpZXI6IFF1b3RhVGllciwgcGVya3M6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBjb25zdCBsID0gUVVPVEFfVElFUlNbdGllcl0ubGltaXRzO1xuICByZXR1cm4gW1xuICAgIGxpbWl0TGluZShsLnNlYXRzLCAnc2VhdCcsICdzZWF0cycpLFxuICAgIGxpbWl0TGluZShsLnBsdWdpbnMsICdwbHVnaW4nLCAncGx1Z2lucycpLFxuICAgIGxpbWl0TGluZShsLnBpcGVsaW5lcywgJ3BpcGVsaW5lJywgJ3BpcGVsaW5lcycpLFxuICAgIGxpbWl0TGluZShsLmFwaUNhbGxzLCAnQVBJIGNhbGwnLCAnQVBJIGNhbGxzJyksXG4gICAgbGltaXRMaW5lKGwuYWlDYWxscywgJ0FJIGNhbGwnLCAnQUkgY2FsbHMnKSxcbiAgICAvLyBFbmZvcmNlZCBlbnRpdGxlbWVudHMg4oaSIGN1c3RvbWVyLWZhY2luZyBsYWJlbHMgKHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgpLlxuICAgIC4uLlRJRVJfRkVBVFVSRVNbdGllcl0ubWFwKChmKSA9PiBGRUFUVVJFX01FVEFEQVRBW2ZdLmxhYmVsKSxcbiAgICAuLi5wZXJrcyxcbiAgXTtcbn1cblxuLy8gTm90ZTogYHBlcmtzYCBhcmUgbm9uLWdhdGVkIG1hcmtldGluZyBsaW5lcyBvbmx5LiBFbmZvcmNlZCBmZWF0dXJlcyAoaW5jbC5cbi8vIFByaW9yaXR5IFN1cHBvcnQgZm9yIHByby90ZWFtL2VudGVycHJpc2UpIGNvbWUgZnJvbSBUSUVSX0ZFQVRVUkVTIGFib3ZlLlxuY29uc3QgREVGQVVMVF9ERVZFTE9QRVJfRkVBVFVSRVMgPSBkZWZhdWx0RmVhdHVyZXMoJ2RldmVsb3BlcicsIFsnQ29tbXVuaXR5IHN1cHBvcnQnXSk7XG5jb25zdCBERUZBVUxUX1BST19GRUFUVVJFUyA9IGRlZmF1bHRGZWF0dXJlcygncHJvJywgWydSZXBvcnRpbmcgZGFzaGJvYXJkJ10pO1xuY29uc3QgREVGQVVMVF9URUFNX0ZFQVRVUkVTID0gZGVmYXVsdEZlYXR1cmVzKCd0ZWFtJywgWydSQkFDICYgdGVhbSByb2xlcyddKTtcbmNvbnN0IERFRkFVTFRfRU5URVJQUklTRV9GRUFUVVJFUyA9IGRlZmF1bHRGZWF0dXJlcygnZW50ZXJwcmlzZScsIFtcbiAgJ1JCQUMgJiB0ZWFtIHJvbGVzJywgJ1JlcG9ydGluZyBkYXNoYm9hcmQnLFxuXSk7XG4vLyBVbmxpbWl0ZWQgaW5jbHVkZXMgZXZlcnkgZmVhdHVyZSAoVElFUl9GRUFUVVJFUy51bmxpbWl0ZWQgPSBhbGwpLlxuY29uc3QgREVGQVVMVF9VTkxJTUlURURfRkVBVFVSRVMgPSBkZWZhdWx0RmVhdHVyZXMoJ3VubGltaXRlZCcsIFtcbiAgJ1VubGltaXRlZCBldmVyeXRoaW5nJywgJ1JCQUMgJiB0ZWFtIHJvbGVzJywgJ1JlcG9ydGluZyBkYXNoYm9hcmQnLFxuXSk7XG5cbi8qKlxuICogUGFyc2UgYSBwcmljZSAoaW4gY2VudHMpIGZyb20gYW4gZW52IHZhciwgZmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0IHdoZW5cbiAqIHVuc2V0IE9SIG1hbGZvcm1lZC4gQSBOYU4gKGUuZy4gYEJJTExJTkdfUExBTl9QUk9fTU9OVEhMWT1hYmNgKSBtdXN0IG5ldmVyXG4gKiBmbG93IGludG8gdGhlIHJldHVybmVkIGNvbmZpZyBhcyBhIHByaWNlLlxuICovXG5mdW5jdGlvbiBlbnZDZW50cyhlbnZWYXI6IHN0cmluZyB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChlbnZWYXIgPT09IHVuZGVmaW5lZCB8fCBlbnZWYXIgPT09ICcnKSByZXR1cm4gZmFsbGJhY2s7XG4gIGNvbnN0IG4gPSBwYXJzZUludChlbnZWYXIsIDEwKTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IGZhbGxiYWNrIDogbjtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIEpTT04gYXJyYXkgZnJvbSBhbiBlbnYgdmFyLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VGZWF0dXJlcyhlbnZWYXI6IHN0cmluZyB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBpZiAoIWVudlZhcikgcmV0dXJuIGZhbGxiYWNrO1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoZW52VmFyKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDogZmFsbGJhY2s7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxufVxuXG4vKipcbiAqIExvYWQgYmlsbGluZyBwbGFuIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQmlsbGluZ0NvbmZpZygpOiBCaWxsaW5nQ29uZmlnIHtcbiAgLy8gS2V5ZWQgYnkgUXVvdGFUaWVyIHNvIHRoZSBjb21waWxlciBmb3JjZXMgYSBwbGFuIGZvciBFVkVSWSB0aWVyIOKAlCBhZGRpbmcgYVxuICAvLyA1dGggUXVvdGFUaWVyIHdpdGhvdXQgYSBwbGFuIGhlcmUgaXMgbm93IGEgY29tcGlsZSBlcnJvciAod2FzIGEgaGFuZC1rZXB0XG4gIC8vIDQtZWxlbWVudCBhcnJheSB0aGF0IHNpbGVudGx5IHNoaXBwZWQgbm8gcGxhbi9wcmljZSBmb3IgYSBuZXcgdGllcikuIFRoZVxuICAvLyBwdWJsaWMgYGNvbmZpZy5wbGFuc2Agc2hhcGUgc3RheXMgYW4gYXJyYXksIGRlcml2ZWQgYmVsb3cgaW4gVkFMSURfVElFUlNcbiAgLy8gb3JkZXIgKGRldmVsb3BlciwgcHJvLCB0ZWFtLCBlbnRlcnByaXNlLCB1bmxpbWl0ZWQpIHRvIHByZXNlcnZlIGNvbnN1bWVyIG9yZGVyaW5nLlxuICBjb25zdCBwbGFuQnlUaWVyOiBSZWNvcmQ8UXVvdGFUaWVyLCBCaWxsaW5nUGxhbkNvbmZpZz4gPSB7XG4gICAgZGV2ZWxvcGVyOiB7XG4gICAgICBpZDogJ2RldmVsb3BlcicsXG4gICAgICBuYW1lOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fREVWRUxPUEVSX05BTUUgfHwgJ0RldmVsb3BlcicsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0RFVkVMT1BFUl9ERVNDUklQVElPTlxuICAgICAgICB8fCAnRnJlZSBzdGFydGVyIHRpZXIgZm9yIGluZGl2aWR1YWwgZGV2ZWxvcGVycycsXG4gICAgICB0aWVyOiAnZGV2ZWxvcGVyJyxcbiAgICAgIHByaWNlczoge1xuICAgICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fREVWRUxPUEVSX01PTlRITFksIDApLFxuICAgICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9ERVZFTE9QRVJfQU5OVUFMLCAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0RFVkVMT1BFUl9GRUFUVVJFUyxcbiAgICAgICAgREVGQVVMVF9ERVZFTE9QRVJfRkVBVFVSRVMsXG4gICAgICApLFxuICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICBpc0RlZmF1bHQ6IHRydWUsXG4gICAgICBzb3J0T3JkZXI6IDAsXG4gICAgfSxcbiAgICBwcm86IHtcbiAgICAgIGlkOiAncHJvJyxcbiAgICAgIG5hbWU6IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9QUk9fTkFNRSB8fCAnUHJvJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fUFJPX0RFU0NSSVBUSU9OXG4gICAgICAgIHx8ICdGb3IgaW5kaXZpZHVhbCBwb3dlciB1c2VycyBhbmQgcHJvZHVjdGlvbiB3b3JrbG9hZHMnLFxuICAgICAgdGllcjogJ3BybycsXG4gICAgICBwcmljZXM6IHtcbiAgICAgICAgbW9udGhseTogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1BST19NT05USExZLCA0OTAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fUFJPX0FOTlVBTCwgNDkwMDApLFxuICAgICAgfSxcbiAgICAgIGZlYXR1cmVzOiBwYXJzZUZlYXR1cmVzKFxuICAgICAgICBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fUFJPX0ZFQVRVUkVTLFxuICAgICAgICBERUZBVUxUX1BST19GRUFUVVJFUyxcbiAgICAgICksXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICBzb3J0T3JkZXI6IDEsXG4gICAgfSxcbiAgICB0ZWFtOiB7XG4gICAgICBpZDogJ3RlYW0nLFxuICAgICAgbmFtZTogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1RFQU1fTkFNRSB8fCAnVGVhbScsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1RFQU1fREVTQ1JJUFRJT05cbiAgICAgICAgfHwgJ0ZvciB0ZWFtcyBjb2xsYWJvcmF0aW5nIG9uIHNoYXJlZCBwaXBlbGluZXMnLFxuICAgICAgdGllcjogJ3RlYW0nLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIG1vbnRobHk6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9URUFNX01PTlRITFksIDE0OTAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVEVBTV9BTk5VQUwsIDE0OTAwMCksXG4gICAgICB9LFxuICAgICAgZmVhdHVyZXM6IHBhcnNlRmVhdHVyZXMoXG4gICAgICAgIHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9URUFNX0ZFQVRVUkVTLFxuICAgICAgICBERUZBVUxUX1RFQU1fRkVBVFVSRVMsXG4gICAgICApLFxuICAgICAgaXNBY3RpdmU6IHRydWUsXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgc29ydE9yZGVyOiAyLFxuICAgIH0sXG4gICAgZW50ZXJwcmlzZToge1xuICAgICAgaWQ6ICdlbnRlcnByaXNlJyxcbiAgICAgIG5hbWU6IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9FTlRFUlBSSVNFX05BTUUgfHwgJ0VudGVycHJpc2UnLFxuICAgICAgZGVzY3JpcHRpb246IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9FTlRFUlBSSVNFX0RFU0NSSVBUSU9OXG4gICAgICAgIHx8ICdPcmctd2lkZSBzY2FsZSB3aXRoIHVubGltaXRlZCBzZWF0cyBhbmQgcHJpb3JpdHkgc3VwcG9ydCcsXG4gICAgICB0aWVyOiAnZW50ZXJwcmlzZScsXG4gICAgICBwcmljZXM6IHtcbiAgICAgICAgbW9udGhseTogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0VOVEVSUFJJU0VfTU9OVEhMWSwgMzk5MDApLFxuICAgICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9FTlRFUlBSSVNFX0FOTlVBTCwgMzk5MDAwKSxcbiAgICAgIH0sXG4gICAgICBmZWF0dXJlczogcGFyc2VGZWF0dXJlcyhcbiAgICAgICAgcHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX0VOVEVSUFJJU0VfRkVBVFVSRVMsXG4gICAgICAgIERFRkFVTFRfRU5URVJQUklTRV9GRUFUVVJFUyxcbiAgICAgICksXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICBzb3J0T3JkZXI6IDMsXG4gICAgfSxcbiAgICAvLyBUaGUgYmlsbGluZy1ESVNBQkxFRCBkZWZhdWx0IHBsYW46IGV2ZXJ5dGhpbmcgdW5jYXBwZWQsIGFsbCBmZWF0dXJlcywgZnJlZS5cbiAgICAvLyBTZWVkZWQgc28gdGhlIHRpZXLihpJwbGFuIG1hcHBpbmcgcmVzb2x2ZXMsIGJ1dCBuZXZlciBvZmZlcmVkIGZvciBzYWxlIOKAlCB0aGVcbiAgICAvLyByZWFkLXBsYW5zIHJvdXRlIGZpbHRlcnMgaXQgb3V0IChzZWUgY3JlYXRlUmVhZFBsYW5Sb3V0ZXMpLCBzbyBpdCdzIGhpZGRlblxuICAgIC8vIHdoZW5ldmVyIGJpbGxpbmcgaXMgZW5hYmxlZCAodGhlIG9ubHkgdGltZSAvcGxhbnMgaXMgc2VydmVkKS5cbiAgICB1bmxpbWl0ZWQ6IHtcbiAgICAgIGlkOiAndW5saW1pdGVkJyxcbiAgICAgIG5hbWU6IHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9VTkxJTUlURURfTkFNRSB8fCAnVW5saW1pdGVkJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVU5MSU1JVEVEX0RFU0NSSVBUSU9OXG4gICAgICAgIHx8ICdFdmVyeXRoaW5nIHVuY2FwcGVkIOKAlCB0aGUgZGVmYXVsdCB3aGVuIGJpbGxpbmcgaXMgZGlzYWJsZWQnLFxuICAgICAgdGllcjogJ3VubGltaXRlZCcsXG4gICAgICBwcmljZXM6IHtcbiAgICAgICAgbW9udGhseTogZW52Q2VudHMocHJvY2Vzcy5lbnYuQklMTElOR19QTEFOX1VOTElNSVRFRF9NT05USExZLCAwKSxcbiAgICAgICAgYW5udWFsOiBlbnZDZW50cyhwcm9jZXNzLmVudi5CSUxMSU5HX1BMQU5fVU5MSU1JVEVEX0FOTlVBTCwgMCksXG4gICAgICB9LFxuICAgICAgZmVhdHVyZXM6IHBhcnNlRmVhdHVyZXMoXG4gICAgICAgIHByb2Nlc3MuZW52LkJJTExJTkdfUExBTl9VTkxJTUlURURfRkVBVFVSRVMsXG4gICAgICAgIERFRkFVTFRfVU5MSU1JVEVEX0ZFQVRVUkVTLFxuICAgICAgKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIHNvcnRPcmRlcjogNCxcbiAgICB9LFxuICB9O1xuXG4gIC8vIERlcml2ZSB0aGUgYXJyYXkgY29uc3VtZXJzIHJlYWQgKGBjb25maWcucGxhbnNgKSBpbiBjYW5vbmljYWwgdGllciBvcmRlci5cbiAgY29uc3QgcGxhbnM6IEJpbGxpbmdQbGFuQ29uZmlnW10gPSBWQUxJRF9USUVSUy5tYXAoKHRpZXIpID0+IHBsYW5CeVRpZXJbdGllcl0pO1xuXG4gIC8vIEJ1aWxkIGJ1bmRsZXMgT05DRSBhbmQgdGhyZWFkIHRoZW0gaW50byB0aGUgY29tYm8gbG9hZGVyICh3aGljaCBuZWVkcyB0aGVpclxuICAvLyBlbnYtZWZmZWN0aXZlIHByaWNlcykg4oCUIGF2b2lkcyBwYXJzaW5nIHRoZSB3aG9sZSBidW5kbGUgY2F0YWxvZyB0d2ljZSBwZXIgbG9hZC5cbiAgY29uc3QgYnVuZGxlcyA9IGxvYWRCdW5kbGVzKCk7XG4gIHJldHVybiB7IHBsYW5zLCBidW5kbGVzLCBjb21ib0Rpc2NvdW50czogbG9hZENvbWJvRGlzY291bnRzKGJ1bmRsZXMpIH07XG59XG5cbi8qKlxuICogQ29tYm8gZGlzY291bnRzIChkb2NzL2JpbGxpbmctYnVuZGxlcy5tZCDCp0NvbWJvIHByaWNpbmcpLiBXaGVuIGFuIGFjY291bnQgb3duc1xuICogZXZlcnkgbWVtYmVyIGJ1bmRsZSAoZWFjaCBhdCDiiaUgaXRzIG1pbmltdW0gcXVhbnRpdHkpLCB0aGUgc2V0IGlzIGJpbGxlZCBhdCB0aGVcbiAqIGNvbWJpbmVkIHByaWNlIGluc3RlYWQgb2YgdGhlIHN1bSBvZiB0aGUgbWVtYmVycyDigJQgcmVhbGl6ZWQgYXMgYSByZWN1cnJpbmcgdXNhZ2VcbiAqIGNyZWRpdCBmb3IgdGhlIGRpZmZlcmVuY2UuIE92ZXJsYXBwaW5nIGNvbWJvcyBhcmUgcmVzb2x2ZWQgYnkgbWF4LXdlaWdodCBwYWNraW5nXG4gKiAoYSBzaGFyZWQgYWRkLW9uIGlzIG5ldmVyIGRpc2NvdW50ZWQgdHdpY2UpOyBgc29ydE9yZGVyYCBicmVha3MgZXF1YWwtdG90YWwgdGllcy5cbiAqXG4gKiBEZWZhdWx0czpcbiAqICAtIFwiQW5hbHl0aWNzIFN1aXRlXCIg4oCUIEFkdmFuY2VkIFJlcG9ydGluZyAoRE9SQSkgKyBUZWFtIFVzYWdlIEFuYWx5dGljcywgZWFjaFxuICogICAgJDMwL21vLCB0b2dldGhlciAkNDAvbW8gKCQ0MDAveXIpIOKGkiBhICQyMC9tbyBjcmVkaXQuXG4gKiAgLSBcIlRlYW0gR3Jvd3RoIEJ1bmRsZVwiIOKAlCDiiaUxIFNlYXQgUGFjayAoJDI1KSArIFRlYW0gVXNhZ2UgQW5hbHl0aWNzICgkMzApLFxuICogICAgdG9nZXRoZXIgJDM1L21vICgkMzUwL3lyKSDihpIgYSAkMjAvbW8gY3JlZGl0LlxuICogUHJpY2VzIGVudi1vdmVycmlkYWJsZSB2aWEgYEJJTExJTkdfQ09NQk9fPElEPl9NT05USExZYCAvIGBfQU5OVUFMYC5cbiAqL1xuZnVuY3Rpb24gbG9hZENvbWJvRGlzY291bnRzKGJ1bmRsZXM6IEJ1bmRsZUNvbmZpZ1tdKTogQ29tYm9EaXNjb3VudENvbmZpZ1tdIHtcbiAgY29uc3QgYyA9IChcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBidW5kbGVJZHM6IHN0cmluZ1tdLFxuICAgIG1vbnRobHk6IG51bWJlcixcbiAgICBhbm51YWw6IG51bWJlcixcbiAgICBzb3J0T3JkZXI6IG51bWJlcixcbiAgICBtaW5RdWFudGl0aWVzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgKTogQ29tYm9EaXNjb3VudENvbmZpZyA9PiAoe1xuICAgIGlkLFxuICAgIG5hbWUsXG4gICAgYnVuZGxlSWRzLFxuICAgIC4uLihtaW5RdWFudGl0aWVzID8geyBtaW5RdWFudGl0aWVzIH0gOiB7fSksXG4gICAgcHJpY2VzOiB7XG4gICAgICBtb250aGx5OiBlbnZDZW50cyhwcm9jZXNzLmVudltgQklMTElOR19DT01CT18ke2lkLnRvVXBwZXJDYXNlKCl9X01PTlRITFlgXSwgbW9udGhseSksXG4gICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52W2BCSUxMSU5HX0NPTUJPXyR7aWQudG9VcHBlckNhc2UoKX1fQU5OVUFMYF0sIGFubnVhbCksXG4gICAgfSxcbiAgICBzb3J0T3JkZXIsXG4gICAgaXNBY3RpdmU6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGNvbWJvcyA9IFtcbiAgICBjKCdhbmFseXRpY3Nfc3VpdGUnLCAnQW5hbHl0aWNzIFN1aXRlJywgWydhZHZhbmNlZF9yZXBvcnRpbmcnLCAndGVhbV91c2FnZV9hbmFseXRpY3MnXSwgNDAwMCwgNDAwMDAsIDApLFxuICAgIGMoJ3RlYW1fZ3Jvd3RoJywgJ1RlYW0gR3Jvd3RoIEJ1bmRsZScsIFsnc2VhdF9wYWNrJywgJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJ10sIDM1MDAsIDM1MDAwLCAxLCB7IHNlYXRfcGFjazogMSB9KSxcbiAgXTtcbiAgd2Fybk9uTm9uRGlzY291bnRDb21ib3MoY29tYm9zLCBidW5kbGVzKTtcbiAgcmV0dXJuIGNvbWJvcztcbn1cblxuLyoqXG4gKiBHdWFyZHJhaWw6IGEgY29tYm8gd2hvc2UgY29tYmluZWQgcHJpY2UgaXMg4omlIGl0cyBtaW5pbXVtLWNvbXBvc2l0aW9uIGJhc2tldCBncmFudHNcbiAqIG5vIGNyZWRpdCAodGhlIGNyZWRpdCBjbGFtcHMgdG8gJDApIGFuZCBpcyBzaWxlbnRseSBpbmVydC4gV2FybiBsb3VkbHkgaW5zdGVhZCBzbyBhXG4gKiBtaXNjb25maWd1cmVkIGBCSUxMSU5HX0NPTUJPXypgIG92ZXJyaWRlIGlzIGNhdWdodC4gTm9uLWZhdGFsLlxuICovXG5mdW5jdGlvbiB3YXJuT25Ob25EaXNjb3VudENvbWJvcyhjb21ib3M6IENvbWJvRGlzY291bnRDb25maWdbXSwgYnVuZGxlczogQnVuZGxlQ29uZmlnW10pOiB2b2lkIHtcbiAgLy8gQ29tYm8gbWVtYmVycyBhcmUgYWx3YXlzIGJ1bmRsZXM7IHJlc29sdmUgdGhlaXIgKGVudi1lZmZlY3RpdmUpIHVuaXQgcHJpY2VzIG9uY2UuXG4gIGNvbnN0IGJ5SWQgPSBuZXcgTWFwKGJ1bmRsZXMubWFwKChiKSA9PiBbYi5pZCwgYl0pKTtcbiAgZm9yIChjb25zdCBjb21ibyBvZiBjb21ib3MpIHtcbiAgICBmb3IgKGNvbnN0IGludGVydmFsIG9mIFsnbW9udGhseScsICdhbm51YWwnXSBhcyBjb25zdCkge1xuICAgICAgY29uc3QgYmFza2V0ID0gY29tYm8uYnVuZGxlSWRzLnJlZHVjZSgocywgaWQpID0+IHMgKyAoYnlJZC5nZXQoaWQpPy5wcmljZXNbaW50ZXJ2YWxdID8/IDApICogKGNvbWJvLm1pblF1YW50aXRpZXM/LltpZF0gPz8gMSksIDApO1xuICAgICAgaWYgKGNvbWJvLnByaWNlc1tpbnRlcnZhbF0gPj0gYmFza2V0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihgW2JpbGxpbmctY29uZmlnXSBDb21ibyBcIiR7Y29tYm8uaWR9XCIgJHtpbnRlcnZhbH0gcHJpY2UgJHtjb21iby5wcmljZXNbaW50ZXJ2YWxdfSDiiaUgbWVtYmVyIGJhc2tldCAke2Jhc2tldH07IGl0IGdyYW50cyBubyBkaXNjb3VudC5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgQlVORExFX0dCID0gMTAyNCAqIDEwMjQgKiAxMDI0O1xuXG4vKipcbiAqIEFwcGx5IGEgcGVyLWJ1bmRsZSBncmFudCBvdmVycmlkZS4gRWFjaCBzdGFja2FibGUgcGFjayBncmFudHMgZXhhY3RseSBvbmVcbiAqIHF1b3RhIGRpbWVuc2lvbiwgc28gYEJJTExJTkdfQlVORExFXzxJRD5fR1JBTlRgIHJldHVuZXMgdGhhdCBhbW91bnQgKGUuZy4gbWFrZVxuICogdGhlIFNlYXQgUGFjayBncmFudCArMTAgaW5zdGVhZCBvZiArNSkg4oCUIHBhcmFsbGVsIHRvIHRoZSBwcmljZSBvdmVycmlkZXMuXG4gKiBJZ25vcmVkIGZvciBtdWx0aS1kaW1lbnNpb24gb3IgZmVhdHVyZS1vbmx5IChlbXB0eS1ncmFudCkgYnVuZGxlcywgYW5kIGZvciBhXG4gKiBtYWxmb3JtZWQvbmVnYXRpdmUgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5R3JhbnRPdmVycmlkZShpZDogc3RyaW5nLCBncmFudHM6IEdyYW50TWFwKTogR3JhbnRNYXAge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltgQklMTElOR19CVU5ETEVfJHtpZC50b1VwcGVyQ2FzZSgpfV9HUkFOVGBdO1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZ3JhbnRzKTtcbiAgaWYgKHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gJycgfHwga2V5cy5sZW5ndGggIT09IDEpIHJldHVybiBncmFudHM7XG4gIGNvbnN0IG4gPSBwYXJzZUludChyYXcsIDEwKTtcbiAgaWYgKE51bWJlci5pc05hTihuKSB8fCBuIDwgMCkgcmV0dXJuIGdyYW50cztcbiAgLy8gYGtleXNgIGNhbWUgZnJvbSBhIEdyYW50TWFwLCBzbyBpdHMgc29sZSBrZXkgaXMgYSBRdW90YVRpZXJMaW1pdHMgZmllbGQuXG4gIHJldHVybiB7IFtrZXlzWzBdIGFzIGtleW9mIFF1b3RhVGllckxpbWl0c106IG4gfTtcbn1cblxuLyoqXG4gKiBBcHBseSBhIHBlci1idW5kbGUgdGllci1hdmFpbGFiaWxpdHkgb3ZlcnJpZGUuIGBCSUxMSU5HX0JVTkRMRV88SUQ+X1RJRVJTYCBpcyBhXG4gKiBKU09OIGFycmF5IG9mIHRpZXIgSURzIHRoYXQgbWF5IHB1cmNoYXNlIHRoZSBidW5kbGUgKGUuZy4gYFtcImRldmVsb3BlclwiLFwicHJvXCJdYClcbiAqIOKAlCBwYXJhbGxlbCB0byB0aGUgcHJpY2UvZ3JhbnQgb3ZlcnJpZGVzLiBGYWxscyBiYWNrIHRvIGBkZWZhdWx0VGllcnNgIHdoZW5cbiAqIHVuc2V0LCBtYWxmb3JtZWQsIGVtcHR5LCBvciBjb250YWluaW5nIGFuIHVua25vd24gdGllci5cbiAqL1xuZnVuY3Rpb24gYXBwbHlUaWVyc092ZXJyaWRlKGlkOiBzdHJpbmcsIGRlZmF1bHRUaWVyczogUXVvdGFUaWVyW10pOiBRdW90YVRpZXJbXSB7XG4gIGNvbnN0IHJhdyA9IHByb2Nlc3MuZW52W2BCSUxMSU5HX0JVTkRMRV8ke2lkLnRvVXBwZXJDYXNlKCl9X1RJRVJTYF07XG4gIGlmICghcmF3KSByZXR1cm4gZGVmYXVsdFRpZXJzO1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSB8fCBwYXJzZWQubGVuZ3RoID09PSAwKSByZXR1cm4gZGVmYXVsdFRpZXJzO1xuICAgIGNvbnN0IHZhbGlkID0gcGFyc2VkLmZpbHRlcigodCk6IHQgaXMgUXVvdGFUaWVyID0+IHR5cGVvZiB0ID09PSAnc3RyaW5nJyAmJiBpc1ZhbGlkVGllcih0KSk7XG4gICAgcmV0dXJuIHZhbGlkLmxlbmd0aCA9PT0gcGFyc2VkLmxlbmd0aCA/IHZhbGlkIDogZGVmYXVsdFRpZXJzO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZGVmYXVsdFRpZXJzO1xuICB9XG59XG5cbi8qKlxuICogUHVyY2hhc2FibGUgYWRkLW9uIGJ1bmRsZXMgKGRvY3MvYmlsbGluZy1idW5kbGVzLm1kIMKnMykuIEdyYW50cyBhcmUgcGVyLXVuaXRcbiAqIGRlbHRhcyBvbiBRdW90YVRpZXJMaW1pdHM7IHByaWNlcyAoY2VudHMsIGBCSUxMSU5HX0JVTkRMRV88SUQ+X01PTlRITFlgIC9cbiAqIGBfQU5OVUFMYCksIHRoZSBzaW5nbGUtZGltZW5zaW9uIGdyYW50IGFtb3VudCAoYEJJTExJTkdfQlVORExFXzxJRD5fR1JBTlRgKSxcbiAqIGFuZCB0aGUgcHVyY2hhc2FibGUtdGllciBsaXN0IChgQklMTElOR19CVU5ETEVfPElEPl9USUVSU2ApIGFyZSBhbGxcbiAqIGVudi1vdmVycmlkYWJsZS4gQW5udWFsIOKJiCAxMMOXIG1vbnRobHkuXG4gKi9cbmZ1bmN0aW9uIGxvYWRCdW5kbGVzKCk6IEJ1bmRsZUNvbmZpZ1tdIHtcbiAgY29uc3QgYiA9IChcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIGdyYW50czogR3JhbnRNYXAsXG4gICAgbW9udGhseTogbnVtYmVyLFxuICAgIGF2YWlsYWJsZUZvclRpZXJzOiBRdW90YVRpZXJbXSxcbiAgICBzb3J0T3JkZXI6IG51bWJlcixcbiAgICBleHRyYTogeyBmZWF0dXJlcz86IHN0cmluZ1tdOyBzdGFja2FibGU/OiBib29sZWFuIH0gPSB7fSxcbiAgKTogQnVuZGxlQ29uZmlnID0+IHtcbiAgICAvLyBSZXNvbHZlIG1vbnRobHkgZmlyc3Qgc28gdGhlIGFubnVhbCBmYWxsYmFjayB0cmFja3MgYSBgX01PTlRITFlgIG92ZXJyaWRlXG4gICAgLy8gKGFubnVhbCDiiYggMTDDlyB0aGUgKmVmZmVjdGl2ZSogbW9udGhseSwgbm90IHRoZSBoYXJkY29kZWQgZGVmYXVsdCkuXG4gICAgY29uc3QgcmVzb2x2ZWRNb250aGx5ID0gZW52Q2VudHMocHJvY2Vzcy5lbnZbYEJJTExJTkdfQlVORExFXyR7aWQudG9VcHBlckNhc2UoKX1fTU9OVEhMWWBdLCBtb250aGx5KTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQsXG4gICAgICBuYW1lLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBncmFudHM6IGFwcGx5R3JhbnRPdmVycmlkZShpZCwgZ3JhbnRzKSxcbiAgICAgIC4uLihleHRyYS5mZWF0dXJlcyA/IHsgZmVhdHVyZXM6IGV4dHJhLmZlYXR1cmVzIH0gOiB7fSksXG4gICAgICBwcmljZXM6IHtcbiAgICAgICAgbW9udGhseTogcmVzb2x2ZWRNb250aGx5LFxuICAgICAgICBhbm51YWw6IGVudkNlbnRzKHByb2Nlc3MuZW52W2BCSUxMSU5HX0JVTkRMRV8ke2lkLnRvVXBwZXJDYXNlKCl9X0FOTlVBTGBdLCByZXNvbHZlZE1vbnRobHkgKiAxMCksXG4gICAgICB9LFxuICAgICAgc3RhY2thYmxlOiBleHRyYS5zdGFja2FibGUgPz8gdHJ1ZSxcbiAgICAgIGF2YWlsYWJsZUZvclRpZXJzOiBhcHBseVRpZXJzT3ZlcnJpZGUoaWQsIGF2YWlsYWJsZUZvclRpZXJzKSxcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgc29ydE9yZGVyLFxuICAgIH07XG4gIH07XG5cbiAgLy8gQnVuZGxlcyBhcmUgcHVyY2hhc2FibGUgb24gZXZlcnkgU0VMRUNUQUJMRSB0aWVyIChleGNsdWRlcyBgdW5saW1pdGVkYCwgd2hpY2hcbiAgLy8gaXMgdGhlIGJpbGxpbmctb2ZmIHRpZXIgYW5kIGJ1eXMgbm90aGluZykg4oCUIHNvIHRoaXMgaXMgZXhhY3RseSBTVEFOREFSRF9USUVSUy5cbiAgY29uc3QgQUxMOiBRdW90YVRpZXJbXSA9IFsuLi5TVEFOREFSRF9USUVSU107XG4gIHJldHVybiBbXG4gICAgLy8gQ2FwYWNpdHkgcGFja3MgKHNlYXRzL3BpcGVsaW5lcy9wbHVnaW5zKSBhcmUgYXZhaWxhYmxlIG9uIEVWRVJZIHRpZXIgc28gYW55XG4gICAgLy8gYWNjb3VudCDigJQgaW5jbHVkaW5nIGZyZWUgKGRldmVsb3Blcikg4oCUIGNhbiBleHBhbmQgaW4gcGxhY2UuIEZlYXR1cmUgYnVuZGxlc1xuICAgIC8vIChhdWRpdF9sb2cvc3NvKSBhbmQgcmF0ZSBwYWNrcyBzdGF5IHRpZXItc2NvcGVkIGJ5IGRlZmF1bHQuXG4gICAgYignc2VhdF9wYWNrJywgJ1NlYXQgUGFjayAoKzUpJywgJzUgYWRkaXRpb25hbCBtZW1iZXIgc2VhdHMnLCB7IHNlYXRzOiA1IH0sIDI1MDAsIEFMTCwgMCksXG4gICAgYigncGlwZWxpbmVfcGFjaycsICdQaXBlbGluZSBQYWNrICgrMTApJywgJzEwIGFkZGl0aW9uYWwgcGlwZWxpbmVzJywgeyBwaXBlbGluZXM6IDEwIH0sIDE1MDAsIEFMTCwgMSksXG4gICAgYigncGx1Z2luX3BhY2snLCAnUGx1Z2luIFBhY2sgKCsxMDApJywgJzEwMCBhZGRpdGlvbmFsIHBsdWdpbnMnLCB7IHBsdWdpbnM6IDEwMCB9LCAxNTAwLCBBTEwsIDIpLFxuICAgIGIoJ2FwaV9wYWNrJywgJ0FQSSBQYWNrICgrMU0pJywgJzEsMDAwLDAwMCBhZGRpdGlvbmFsIEFQSSBjYWxscyAvIHBlcmlvZCcsIHsgYXBpQ2FsbHM6IDFfMDAwXzAwMCB9LCAyMDAwLCBBTEwsIDMpLFxuICAgIGIoJ2FpX3BhY2snLCAnQUkgUGFjayAoKzVrKScsICc1LDAwMCBhZGRpdGlvbmFsIEFJIGNhbGxzIC8gcGVyaW9kJywgeyBhaUNhbGxzOiA1MDAwIH0sIDc1MDAsIEFMTCwgNCksXG4gICAgYignc3RvcmFnZV9wYWNrJywgJ1N0b3JhZ2UgUGFjayAoKzUwIEdCKScsICc1MCBHQiBhZGRpdGlvbmFsIHJlZ2lzdHJ5IHN0b3JhZ2UnLCB7IHN0b3JhZ2VCeXRlczogNTAgKiBCVU5ETEVfR0IgfSwgMjUwMCwgQUxMLCA1KSxcbiAgICBiKCdhdWRpdF9sb2cnLCAnQXVkaXQgTG9nJywgJ0F1ZGl0IGxvZyBjYXBhYmlsaXR5Jywge30sIDIwMDAsIFsncHJvJ10sIDYsIHsgZmVhdHVyZXM6IFsnYXVkaXRfbG9nJ10sIHN0YWNrYWJsZTogZmFsc2UgfSksXG4gICAgLy8gU1NPIGlzIElOQ0xVREVEIGluIFRlYW0gKHNlZSBUSUVSX0ZFQVRVUkVTLnRlYW0pLCBzbyB0aGUgYWRkLW9uIGlzIFByby1vbmx5LlxuICAgIGIoJ3NzbycsICdTU08gLyBJZFAnLCAnU1NPICsgdXAgdG8gNSBJZFAgY29uZmlncycsIHsgaWRwQ29uZmlnczogNSB9LCA0MDAwLCBbJ3BybyddLCA3LCB7IGZlYXR1cmVzOiBbJ3NzbyddLCBzdGFja2FibGU6IGZhbHNlIH0pLFxuICAgIC8vIERPUkEgLyBhZHZhbmNlZCBkZWxpdmVyeSBhbmFseXRpY3MuIElOQ0xVREVEIGluIEVudGVycHJpc2UgKFRJRVJfRkVBVFVSRVMpLFxuICAgIC8vIHNvIHRoZSBhZGQtb24gaXMgb2ZmZXJlZCB0byBldmVyeSBvdGhlciB0aWVyIChkZXZlbG9wZXIvcHJvL3RlYW0pLiBQcmljZWRcbiAgICAvLyBiZXR3ZWVuIEF1ZGl0IExvZyAoJDIwKSBhbmQgU1NPICgkNDApIOKAlCBhIGhpZ2hlci12YWx1ZSwgYWN0aXZlbHktdXNlZFxuICAgIC8vIGFuYWx5dGljcyBzdXJmYWNlIHRoYW4gdGhlIGF1ZGl0IGxvZywgYnV0IGJlbG93IHRoZSBTU08gZW50ZXJwcmlzZSBnYXRlLlxuICAgIGIoJ2FkdmFuY2VkX3JlcG9ydGluZycsICdBZHZhbmNlZCBSZXBvcnRpbmcgKERPUkEpJywgJ0RPUkEgZGVsaXZlcnkgbWV0cmljcyDigJQgZGVwbG95bWVudCBmcmVxdWVuY3ksIGNoYW5nZSBmYWlsdXJlIHJhdGUsIE1UVFIsIGxlYWQtdGltZSBwcm94eSwgcGVyZm9ybWFuY2UgYmFuZHMgKyB0cmVuZCcsIHt9LCAzMDAwLCBbJ2RldmVsb3BlcicsICdwcm8nLCAndGVhbSddLCA4LCB7IGZlYXR1cmVzOiBbJ2FkdmFuY2VkX3JlcG9ydGluZyddLCBzdGFja2FibGU6IGZhbHNlIH0pLFxuICAgIC8vIFBlci10ZWFtIHVzYWdlIGJyZWFrZG93biBhY3Jvc3MgdGhlIG9yZyDihpIgdGVhbSBzdWJ0cmVlLiBJTkNMVURFRCBpblxuICAgIC8vIEVudGVycHJpc2UgKFRJRVJfRkVBVFVSRVMpOyB0aGUgYWRkLW9uIGlzIG9mZmVyZWQgdG8gUHJvL1RlYW0gKGRldmVsb3BlciBoYXNcbiAgICAvLyBubyB0ZWFtcyB0byBicmVhayBkb3duKS4gUHJpY2VkIGF0ICQzMC9tbyAoJDMwMC95cikg4oCUIHBhcml0eSB3aXRoIERPUkEsIGl0c1xuICAgIC8vIGFuYWx5dGljcyBzaWJsaW5nLiBPdmVycmlkYWJsZSB2aWEgQklMTElOR19CVU5ETEVfVEVBTV9VU0FHRV9BTkFMWVRJQ1NfTU9OVEhMWS9fQU5OVUFMLlxuICAgIGIoJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJywgJ1RlYW0gVXNhZ2UgQW5hbHl0aWNzJywgJ1Blci10ZWFtIHVzYWdlIGJyZWFrZG93biBhY3Jvc3MgdGhlIG9yZyDihpIgdGVhbSBzdWJ0cmVlIChhbGwgcXVvdGEgZGltZW5zaW9ucyknLCB7fSwgMzAwMCwgWydwcm8nLCAndGVhbSddLCA5LCB7IGZlYXR1cmVzOiBbJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJ10sIHN0YWNrYWJsZTogZmFsc2UgfSksXG4gIF07XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"constructs": "10.7.0",
|
|
31
31
|
"jsonwebtoken": "9.0.3",
|
|
32
32
|
"uuid": "14.0.1",
|
|
33
|
-
"@pipeline-builder/api-core": "3.4.
|
|
34
|
-
"@pipeline-builder/pipeline-data": "3.4.
|
|
33
|
+
"@pipeline-builder/api-core": "3.4.103",
|
|
34
|
+
"@pipeline-builder/pipeline-data": "3.4.107"
|
|
35
35
|
},
|
|
36
36
|
"keywords": [
|
|
37
37
|
"ci-cd",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"access": "public",
|
|
88
88
|
"registry": "https://registry.npmjs.org/"
|
|
89
89
|
},
|
|
90
|
-
"version": "3.4.
|
|
90
|
+
"version": "3.4.121",
|
|
91
91
|
"bugs": {
|
|
92
92
|
"url": "https://github.com/mwashburn160/pipeline-builder/issues"
|
|
93
93
|
},
|