@piserve-tech/form-submission 1.3.322 → 1.3.323
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.
|
@@ -144,6 +144,10 @@ export class WhenClauseService {
|
|
|
144
144
|
// if (typeof answer === 'string' && answer === '') return false;
|
|
145
145
|
if (Array.isArray(answer) && answer.length === 0)
|
|
146
146
|
return false;
|
|
147
|
+
// ✅ If answer contains a pipe, take only the part AFTER the pipe
|
|
148
|
+
if (typeof answer === 'string' && answer.indexOf('|') !== -1) {
|
|
149
|
+
answer = answer.split('|').pop();
|
|
150
|
+
}
|
|
147
151
|
// helpers to normalize values to arrays of lower-case strings (for string ops)
|
|
148
152
|
const toStr = (v) => v === null || v === undefined ? '' : String(v).toLowerCase();
|
|
149
153
|
const ensureArray = (v) => {
|
|
@@ -420,4 +424,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
420
424
|
providedIn: 'root',
|
|
421
425
|
}]
|
|
422
426
|
}], ctorParameters: function () { return []; } });
|
|
423
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlbkNsYXVzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy93aGVuQ2xhdXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS2hELE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFQUSwwQkFBcUIsR0FBVSxFQUFFLENBQUM7UUFDbEMsc0JBQWlCLEdBQWtDLEVBQUUsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO1FBSTlELGtCQUFhLEdBQVksSUFBSSxDQUFDO0lBQ2YsQ0FBQztJQUVoQixpQkFBaUI7UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBR0M7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxJQUFTO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxVQUFVLENBQUM7UUFDOUIsT0FBTyxDQUFDLENBQUMsQ0FDUCxJQUFJO1lBQ0osSUFBSSxDQUFDLFFBQVE7WUFDYixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFTO1FBQ2YsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sTUFB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LENBQUM7SUFFRCxZQUFZO1FBQ1Ysc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFaEMscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFNUIsMENBQTBDO0lBQzVDLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQzsrR0E3ZVUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1Ym1pc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvc3VibWlzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJqZWN0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdoZW5DbGF1c2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhY3RpdmVXaGVuQ2xhdXNlR3JpZHM6IGFueVtdID0gW107XG4gIHByaXZhdGUgcXVlc3Rpb25BbnN3ZXJNYXA6IHsgW3F1ZXN0aW9uSWQ6IHN0cmluZ106IGFueSB9ID0ge307XG5wcml2YXRlIHF1ZXN0aW9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHsgcXVlc3Rpb25JZDogc3RyaW5nIH0+KCk7XG5cblxuXG4gIGlzSW5pdGlhbExvYWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbWFya0xvYWRDb21wbGV0ZWQoKSB7XG4gICAgdGhpcy5pc0luaXRpYWxMb2FkID0gZmFsc2U7XG4gIH1cblxuICBvblF1ZXN0aW9uQ2hhbmdlKCkge1xuICByZXR1cm4gdGhpcy5xdWVzdGlvbkNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG59XG5cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBncmlkIGhhcyBhbiBhY3RpdmUgd2hlbiBjbGF1c2VcbiAgICovXG4gIGlzQWN0aXZlV2hlbkNsYXVzZShncmlkOiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB3aGVuID0gZ3JpZD8ud2hlbkNsYXVzZTtcbiAgICByZXR1cm4gISEoXG4gICAgICB3aGVuICYmXG4gICAgICB3aGVuLmFjdGl2YXRlICYmXG4gICAgICBBcnJheS5pc0FycmF5KHdoZW4ud2hlbkNsYXVzZUNvbmRpdGlvbikgJiZcbiAgICAgIHdoZW4ud2hlbkNsYXVzZUNvbmRpdGlvbi5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBncmlkIHRvIHRyYWNraW5nIGxpc3QgaWYgaXQgaGFzIGFuIGFjdGl2ZSB3aGVuIGNsYXVzZVxuICAgKi9cbiAgYWRkR3JpZChncmlkOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWdyaWQpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmlzQWN0aXZlV2hlbkNsYXVzZShncmlkKSkge1xuICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5hY3RpdmVXaGVuQ2xhdXNlR3JpZHMuc29tZShcbiAgICAgICAgKGcpID0+IGcuZWxlbWVudD8uaWQgPT09IGdyaWQuZWxlbWVudD8uaWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlV2hlbkNsYXVzZUdyaWRzLnB1c2goZ3JpZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0UXVlc3Rpb25BbnN3ZXIocXVlc3Rpb25JZDogc3RyaW5nLCBhbnN3ZXI6IGFueSxpbml0aWFsOmJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghcXVlc3Rpb25JZCkgcmV0dXJuO1xuICAgIHRoaXMucXVlc3Rpb25BbnN3ZXJNYXBbcXVlc3Rpb25JZF0gPSBhbnN3ZXI7XG4gICAgdGhpcy5ldmFsdWF0ZUFsbFdoZW5DbGF1c2VzKGluaXRpYWwpO1xuICAgICAgdGhpcy5xdWVzdGlvbkNoYW5nZSQubmV4dCh7IHF1ZXN0aW9uSWQgfSk7XG4gIH1cblxuICBnZXRBbnN3ZXIocXVlc3Rpb25JZDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5xdWVzdGlvbkFuc3dlck1hcFtxdWVzdGlvbklkXTtcbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVBbGxXaGVuQ2xhdXNlcyhpbml0aWFsOmJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlR3JpZHM6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGdyaWQgb2YgdGhpcy5hY3RpdmVXaGVuQ2xhdXNlR3JpZHMpIHtcbiAgICAgIGNvbnN0IHdoZW4gPSBncmlkLndoZW5DbGF1c2U7XG4gICAgICBjb25zdCBjb25kaXRpb25zID0gd2hlbi53aGVuQ2xhdXNlQ29uZGl0aW9uO1xuXG4gICAgICBpZiAoIWNvbmRpdGlvbnMgfHwgIWNvbmRpdGlvbnMubGVuZ3RoKSBjb250aW51ZTtcblxuICAgICAgbGV0IG92ZXJhbGxSZXN1bHQgPSB0cnVlO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2xhdXNlID0gY29uZGl0aW9uc1tpXTtcbiAgICAgICAgY29uc3QgbG9naWMgPSAoY2xhdXNlLmxvZ2ljIHx8IChpID09PSAwID8gJ0FORCcgOiAnQU5EJykpLnRvVXBwZXJDYXNlKCk7IC8vIERlZmF1bHQgdG8gQU5EIGZvciBmaXJzdFxuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLmdldEFuc3dlcihjbGF1c2UucXVlc3Rpb25pZCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZXZhbHVhdGVDb25kaXRpb24oXG4gICAgICAgICAgYW5zd2VyLFxuICAgICAgICAgIGNsYXVzZS5jb25kaXRpb24sXG4gICAgICAgICAgY2xhdXNlLnZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQ29tYmluZSByZXN1bHRzIGJhc2VkIG9uIGxvZ2ljIChBTkQgLyBPUilcbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICBvdmVyYWxsUmVzdWx0ID0gcmVzdWx0OyAvLyBpbml0aWFsaXplIHdpdGggZmlyc3QgY29uZGl0aW9uXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGxvZ2ljID09PSAnQU5EJykge1xuICAgICAgICAgICAgb3ZlcmFsbFJlc3VsdCA9IG92ZXJhbGxSZXN1bHQgJiYgcmVzdWx0O1xuICAgICAgICAgIH0gZWxzZSBpZiAobG9naWMgPT09ICdPUicpIHtcbiAgICAgICAgICAgIG92ZXJhbGxSZXN1bHQgPSBvdmVyYWxsUmVzdWx0IHx8IHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHNhZmUgcmVhZCBhY3Rpb25zIChjb3VsZCBiZSB1bmRlZmluZWQpXG4gICAgY29uc3QgYWN0aW9uczogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KHdoZW4/LndoZW5DbGF1c2VBY3Rpb25zKVxuICAgID8gd2hlbi53aGVuQ2xhdXNlQWN0aW9ucy5tYXAoU3RyaW5nKVxuICAgIDogW107XG5cbiAgLy8gY2hvb3NlIHRoZSBkZWNpc2l2ZSBhY3Rpb24gKHVzZSBsYXN0IGlmIG11bHRpcGxlKVxuICBjb25zdCBhY3Rpb24gPSBhY3Rpb25zLmxlbmd0aCA+IDAgPyBhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cbiAgaWYgKG92ZXJhbGxSZXN1bHQpIHtcbiAgICAvLyBDb25kaXRpb24ocykgc2F0aXNmaWVkIC0+IHBlcmZvcm0gdGhlIGFjdGlvblxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdTSE9XJzpcbiAgICAgICAgZ3JpZC5zaG93ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdISURFJzpcbiAgICAgICAgZ3JpZC5zaG93ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTUFSS19BU19SRVFVSVJFRCc6XG4gICAgICAgIGlmIChncmlkLmVsZW1lbnQpIGdyaWQuZWxlbWVudC5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTUFSS19BU19PUFRJT05BTCc6XG4gICAgICAgIGlmIChncmlkLmVsZW1lbnQpIGdyaWQuZWxlbWVudC5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIG5vIHNob3cvaGlkZSBhY3Rpb24g4oCUIGtlZXAgY3VycmVudCBiZWhhdmlvciAoeW91IGNhbiBjaG9vc2UgZGVmYXVsdCBoZXJlKVxuICAgICAgICAvLyBGb3Igc2FmZXR5LCBpZiBubyBleHBsaWNpdCBhY3Rpb24sIHdlJ2xsIGxlYXZlIGdyaWQuc2hvdyB1bmNoYW5nZWQuXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIHZpc2libGUsIGNvbGxlY3RcbiAgICBpZiAoZ3JpZC5zaG93KSB2aXNpYmxlR3JpZHMucHVzaChncmlkKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDb25kaXRpb24ocykgbm90IHNhdGlzZmllZCAtPiByZXZlcnQgdGhlIGFjdGlvbidzIGVmZmVjdFxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdTSE9XJzpcbiAgICAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciB0cnVlID0+IGhpZGUgKHJldmVydClcbiAgICAgICAgZ3JpZC5zaG93ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSElERSc6XG4gICAgICAgIC8vIGNvbmRpdGlvbiBubyBsb25nZXIgdHJ1ZSA9PiBzaG93IChyZXZlcnQpXG4gICAgICAgIGdyaWQuc2hvdyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTUFSS19BU19SRVFVSVJFRCc6XG4gICAgICAgIGlmIChncmlkLmVsZW1lbnQpIGdyaWQuZWxlbWVudC5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ01BUktfQVNfT1BUSU9OQUwnOlxuICAgICAgICBpZiAoZ3JpZC5lbGVtZW50KSBncmlkLmVsZW1lbnQucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIG5vdGhpbmcgdG8gcmV2ZXJ0XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBpZiB3ZSBoaWQgaXQgYmVjYXVzZSBvdmVyYWxsUmVzdWx0IGZhbHNlIGFuZCBpdCdzIG5vdCBpbml0aWFsLCBjbGVhciBhbnN3ZXJcbiAgICBpZiAoIW92ZXJhbGxSZXN1bHQgJiYgIWluaXRpYWwgJiYgIWdyaWQuc2hvdykge1xuICAgICAgZ3JpZC5lbGVtZW50LmFuc3dlciA9IG51bGw7XG4gICAgfVxuICB9XG4gICAgICBpZiAob3ZlcmFsbFJlc3VsdCkgdmlzaWJsZUdyaWRzLnB1c2goZ3JpZCk7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGVDb25kaXRpb24oYW5zd2VyOiBhbnksIG9wZXJhdG9yOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblxuICAgIC8vIHRyZWF0IG51bGwvdW5kZWZpbmVkL2VtcHR5LXN0cmluZy9lbXB0eS1hcnJheSBhcyBcIm5vIGFuc3dlclwiXG4gICAgaWYgKGFuc3dlciA9PT0gbnVsbCB8fCBhbnN3ZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGlmICh0eXBlb2YgYW5zd2VyID09PSAnc3RyaW5nJyAmJiBhbnN3ZXIgPT09ICcnKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSAmJiBhbnN3ZXIubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBoZWxwZXJzIHRvIG5vcm1hbGl6ZSB2YWx1ZXMgdG8gYXJyYXlzIG9mIGxvd2VyLWNhc2Ugc3RyaW5ncyAoZm9yIHN0cmluZyBvcHMpXG4gICAgY29uc3QgdG9TdHIgPSAodjogYW55KSA9PlxuICAgICAgdiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgPyAnJyA6IFN0cmluZyh2KS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgY29uc3QgZW5zdXJlQXJyYXkgPSAodjogYW55KTogc3RyaW5nW10gPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHJldHVybiB2Lm1hcCgoeCkgPT4gdG9TdHIoeCkpO1xuICAgICAgLy8gaWYgY29tbWEtc2VwYXJhdGVkIHN0cmluZyA9PiBzcGxpdCwgZWxzZSBzaW5nbGUgZWxlbWVudCBhcnJheVxuICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2LmluZGV4T2YoJywnKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgIC5tYXAoKHgpID0+IHgudHJpbSgpKVxuICAgICAgICAgIC5tYXAoKHgpID0+IHRvU3RyKHgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbdG9TdHIodildO1xuICAgIH07XG5cbiAgICBjb25zdCBhbnNBcnIgPSBlbnN1cmVBcnJheShhbnN3ZXIpO1xuICAgIGNvbnN0IHZhbEFyciA9IGVuc3VyZUFycmF5KHZhbHVlKTtcblxuICAgIC8vIG51bWVyaWMgY29tcGFyaXNvbnM6IG9ubHkgd2hlbiBib3RoIHNpZGVzIGFyZSBzY2FsYXJzIChub24tYXJyYXkpIGFuZCBudW1lcmljXG4gICAgY29uc3QgaXNOdW1lcmljU2NhbGFyID0gKHg6IGFueSkgPT5cbiAgICAgICFBcnJheS5pc0FycmF5KHgpICYmIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHgpKTtcblxuICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgJzwnOlxuICAgICAgICBpZiAoaXNOdW1lcmljU2NhbGFyKGFuc3dlcikgJiYgaXNOdW1lcmljU2NhbGFyKHZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGFuc3dlcikgPCBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICc+JzpcbiAgICAgICAgaWYgKGlzTnVtZXJpY1NjYWxhcihhbnN3ZXIpICYmIGlzTnVtZXJpY1NjYWxhcih2YWx1ZSkpXG4gICAgICAgICAgcmV0dXJuIE51bWJlcihhbnN3ZXIpID4gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnPD0nOlxuICAgICAgICBpZiAoaXNOdW1lcmljU2NhbGFyKGFuc3dlcikgJiYgaXNOdW1lcmljU2NhbGFyKHZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGFuc3dlcikgPD0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnPj0nOlxuICAgICAgICBpZiAoaXNOdW1lcmljU2NhbGFyKGFuc3dlcikgJiYgaXNOdW1lcmljU2NhbGFyKHZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGFuc3dlcikgPj0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBlcXVhbGl0eTogdHJ1ZSBpZiBhbnkgYW5zd2VyIGVsZW1lbnQgZXF1YWxzIGFueSB2YWx1ZSBlbGVtZW50XG4gICAgICBjYXNlICc9JzpcbiAgICAgICAgcmV0dXJuIGFuc0Fyci5zb21lKChhKSA9PiB2YWxBcnIuc29tZSgodikgPT4gYSA9PT0gdikpO1xuXG4gICAgICBjYXNlICchPSc6XG4gICAgICAgIHJldHVybiAhYW5zQXJyLnNvbWUoKGEpID0+IHZhbEFyci5zb21lKCh2KSA9PiBhID09PSB2KSk7XG5cbiAgICAgIC8vIExJS0UgLyBOT1QgTElLRTogY2hlY2sgc3Vic3RyaW5nIG1hdGNoIGFueXdoZXJlIGluIGFueSBhbnN3ZXIgZWxlbWVudFxuICAgICAgY2FzZSAnTElLRSc6XG4gICAgICAgIHJldHVybiBhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLnNvbWUoKHYpID0+IGEuaW5jbHVkZXModikpKTtcbiAgICAgIGNhc2UgJ05PVCBMSUtFJzpcbiAgICAgICAgcmV0dXJuICFhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLnNvbWUoKHYpID0+IGEuaW5jbHVkZXModikpKTtcblxuICAgICAgY2FzZSAnQkVHSU4gV0lUSCc6XG4gICAgICAgIHJldHVybiBhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLnNvbWUoKHYpID0+IGEuc3RhcnRzV2l0aCh2KSkpO1xuICAgICAgY2FzZSAnRU5EIFdJVEgnOlxuICAgICAgICByZXR1cm4gYW5zQXJyLnNvbWUoKGEpID0+IHZhbEFyci5zb21lKCh2KSA9PiBhLmVuZHNXaXRoKHYpKSk7XG5cbiAgICAgIC8vIElOIC8gTk9UIElOOiB0cnVlIGlmIGFueSBhbnN3ZXIgZWxlbWVudCBleGlzdHMgaW4gdmFsdWUgbGlzdFxuICAgICAgY2FzZSAnSU4nOlxuICAgICAgICByZXR1cm4gYW5zQXJyLnNvbWUoKGEpID0+IHZhbEFyci5pbmNsdWRlcyhhKSk7XG4gICAgICBjYXNlICdOT1QgSU4nOlxuICAgICAgICByZXR1cm4gIWFuc0Fyci5zb21lKChhKSA9PiB2YWxBcnIuaW5jbHVkZXMoYSkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYWRkR3JpZHNGcm9tU3ViZm9ybShzdWJmb3JtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXN1YmZvcm0gfHwgIUFycmF5LmlzQXJyYXkoc3ViZm9ybS5yb3dzKSkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCByb3cgb2Ygc3ViZm9ybS5yb3dzKSB7XG4gICAgICBpZiAoIXJvdy5ncmlkIHx8ICFBcnJheS5pc0FycmF5KHJvdy5ncmlkKSkgY29udGludWU7XG5cbiAgICAgIGZvciAoY29uc3QgZ3JpZCBvZiByb3cuZ3JpZCkge1xuICAgICAgICAvLyAx77iP4oOjIEFkZCB0aGlzIGdyaWQgaXRzZWxmIGlmIGl0IGhhcyBhbiBhY3RpdmUgd2hlbkNsYXVzZVxuICAgICAgICB0aGlzLmFkZEdyaWQoZ3JpZCk7XG5cbiAgICAgICAgLy8gMu+4j+KDoyBUaGVuLCByZWN1cnNpdmVseSBwcm9jZXNzIG5lc3RlZCBjaGlsZExvZ2ljcyBpbnNpZGUgaXRzIGVsZW1lbnRcbiAgICAgICAgaWYgKGdyaWQuZWxlbWVudD8uY2hpbGRMb2dpY3M/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0NoaWxkTG9naWNzKGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgcHJvY2VzcyBjaGlsZExvZ2ljcyBzdHJ1Y3R1cmVcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc0NoaWxkTG9naWNzKGNoaWxkTG9naWNzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZExvZ2ljcykpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgbG9naWMgb2YgY2hpbGRMb2dpY3MpIHtcbiAgICAgIC8vIDHvuI/ig6MgRWFjaCBsb2dpYyBtYXkgaGF2ZSBpdHMgb3duIHJvd3MgKHNpbWlsYXIgdG8gc3ViZm9ybSByb3dzKVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9naWMucm93cykpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbG9naWMucm93cykge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvdy5ncmlkKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBncmlkIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgICAgICAgIC8vIENoZWNrIHdoZW5DbGF1c2UgZm9yIHRoaXMgbmVzdGVkIGdyaWRcbiAgICAgICAgICAgICAgdGhpcy5hZGRHcmlkKGdyaWQpO1xuXG4gICAgICAgICAgICAgIC8vIDLvuI/ig6MgUmVjdXJzZSBhZ2FpbiBpZiB0aGlzIG5lc3RlZCBxdWVzdGlvbiBhbHNvIGhhcyBpdHMgb3duIGNoaWxkTG9naWNzXG4gICAgICAgICAgICAgIGlmIChncmlkLmVsZW1lbnQ/LmNoaWxkTG9naWNzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NDaGlsZExvZ2ljcyhncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIDPvuI/ig6MgQSBsb2dpYyBpdHNlbGYgbWlnaHQgZGlyZWN0bHkgY29udGFpbiBuZXN0ZWQgbG9naWNzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2dpYy5jaGlsZExvZ2ljcykpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ2hpbGRMb2dpY3MobG9naWMuY2hpbGRMb2dpY3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gQUxMIGVsZW1lbnRzIHdpdGggYW4gYWN0aXZlIHdoZW5DbGF1c2UgaW5zaWRlIGEgc3ViZm9ybSxcbiAgICogaW5jbHVkaW5nIG5lc3RlZCBjaGlsZExvZ2ljcyAocmVjdXJzaXZlKVxuICAgKi9cbiAgZ2V0V2hlbkNsYXVzZUVsZW1lbnRzKHN1YmZvcm06IGFueSk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cbiAgICBpZiAoIXN1YmZvcm0gfHwgIUFycmF5LmlzQXJyYXkoc3ViZm9ybS5yb3dzKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJvdyBvZiBzdWJmb3JtLnJvd3MpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb3cuZ3JpZCkpIGNvbnRpbnVlO1xuXG4gICAgICBmb3IgKGNvbnN0IGdyaWQgb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgLy8gMe+4j+KDoyBBZGQgdGhpcyBncmlkIGlmIGl0IGhhcyBhbiBhY3RpdmUgd2hlbkNsYXVzZVxuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZVdoZW5DbGF1c2UoZ3JpZCkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChncmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDLvuI/ig6MgUHJvY2VzcyBuZXN0ZWQgY2hpbGRMb2dpY3MgaW5zaWRlIHRoaXMgZWxlbWVudFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncmlkLmVsZW1lbnQ/LmNoaWxkTG9naWNzKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgLi4udGhpcy5nZXRFbGVtZW50c0Zyb21DaGlsZExvZ2ljcyhncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgZ2F0aGVyIGdyaWRzIHdpdGggYWN0aXZlIHdoZW5DbGF1c2UgaW5zaWRlIGNoaWxkTG9naWNzXG4gICAqL1xuICBwcml2YXRlIGdldEVsZW1lbnRzRnJvbUNoaWxkTG9naWNzKGNoaWxkTG9naWNzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCBmb3VuZDogYW55W10gPSBbXTtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZExvZ2ljcykpIHJldHVybiBmb3VuZDtcblxuICAgIGZvciAoY29uc3QgbG9naWMgb2YgY2hpbGRMb2dpY3MpIHtcbiAgICAgIC8vIEVhY2ggbG9naWMgY2FuIGhhdmUgcm93c1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9naWMucm93cykpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbG9naWMucm93cykge1xuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb3cuZ3JpZCkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBncmlkIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZVdoZW5DbGF1c2UoZ3JpZCkpIHtcbiAgICAgICAgICAgICAgZm91bmQucHVzaChncmlkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVjdXJzZSBkZWVwZXIgaWYgdGhpcyBncmlkIGhhcyBuZXN0ZWQgY2hpbGRMb2dpY3NcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyaWQuZWxlbWVudD8uY2hpbGRMb2dpY3MpKSB7XG4gICAgICAgICAgICAgIGZvdW5kLnB1c2goXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRFbGVtZW50c0Zyb21DaGlsZExvZ2ljcyhncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIExvZ2ljIGl0c2VsZiBtYXkgaGF2ZSBuZXN0ZWQgY2hpbGRMb2dpY3NcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvZ2ljLmNoaWxkTG9naWNzKSkge1xuICAgICAgICBmb3VuZC5wdXNoKC4uLnRoaXMuZ2V0RWxlbWVudHNGcm9tQ2hpbGRMb2dpY3MobG9naWMuY2hpbGRMb2dpY3MpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICBjaGVja0VsZW1lbnRWaXNpYmlsaXR5KGlkOiBzdHJpbmcsIHN1Ym1pc3Npb246IFN1Ym1pc3Npb24pOiBib29sZWFuIHtcbiAgICBpZiAoIWlkIHx8ICFzdWJtaXNzaW9uIHx8ICFBcnJheS5pc0FycmF5KHN1Ym1pc3Npb24uYW5zd2VycykpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBkZWZhdWx0IHZpc2libGUgaWYgaW52YWxpZCBpbnB1dFxuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoZWRBbnN3ZXIgPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgIChhbnMpID0+IGFucy5xdWVzdGlvbklkID09PSBpZFxuICAgICk7XG5cbiAgICAvLyBSZXR1cm4gdGhlICdzaG93JyBmbGFnIGlmIGZvdW5kLCBlbHNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgIHJldHVybiBtYXRjaGVkQW5zd2VyID8gbWF0Y2hlZEFuc3dlci5zaG93ID8/IHRydWUgOiB0cnVlO1xuICB9XG5cbiAgZXZhbHVhdGVTdWJmb3JtV2hlbkNsYXVzZXMoXG4gICAgY2hhbmdlZEFuc3dlcjogYW55LFxuICAgIHN1Ym1pc3Npb246IFN1Ym1pc3Npb24sXG4gICAgY2hhbmdlZFF1ZXN0aW9uSWQ6IHN0cmluZyxcbiAgICBlbGVtZW50c1dpdGhXaGVuQ2xhdXNlOiBhbnlcbiAgKSB7XG4gICAgaWYgKCFlbGVtZW50c1dpdGhXaGVuQ2xhdXNlLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBncmlkIG9mIGVsZW1lbnRzV2l0aFdoZW5DbGF1c2UpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGdyaWQuZWxlbWVudC5pZDtcbiAgICAgIGNvbnN0IHdoZW4gPSBncmlkLndoZW5DbGF1c2U7XG4gICAgICBjb25zdCBjb25kaXRpb25zID0gd2hlbi53aGVuQ2xhdXNlQ29uZGl0aW9uO1xuXG4gICAgICBpZiAoIWNvbmRpdGlvbnM/Lmxlbmd0aCkgY29udGludWU7XG5cbiAgICAgIGxldCBvdmVyYWxsUmVzdWx0ID0gdHJ1ZTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25kaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNsYXVzZSA9IGNvbmRpdGlvbnNbaV07XG5cbiAgICAgICAgY29uc3QgbG9naWMgPSAoY2xhdXNlLmxvZ2ljIHx8IChpID09PSAwID8gJ0FORCcgOiAnQU5EJykpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGFuc3dlciB0byB1c2UgZm9yIHRoaXMgY29uZGl0aW9uXG4gICAgICAgIGxldCBhbnN3ZXJUb0NoZWNrOiBhbnk7XG5cbiAgICAgICAgaWYgKGNsYXVzZS5xdWVzdGlvbmlkID09PSBjaGFuZ2VkUXVlc3Rpb25JZCkge1xuICAgICAgICAgIC8vIFVzZSB1cGRhdGVkIGFuc3dlciBmb3IgdGhlIGNoYW5nZWQgcXVlc3Rpb25cbiAgICAgICAgICBhbnN3ZXJUb0NoZWNrID0gY2hhbmdlZEFuc3dlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGZXRjaCBleGlzdGluZyB2YWx1ZSBmcm9tIHN1Ym1pc3Npb24gZm9yIG90aGVyIHF1ZXN0aW9uc1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gc3VibWlzc2lvbi5hbnN3ZXJzLmZpbmQoXG4gICAgICAgICAgICAoYSkgPT4gYS5xdWVzdGlvbklkID09PSBjbGF1c2UucXVlc3Rpb25pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgYW5zd2VyVG9DaGVjayA9IGV4aXN0aW5nPy5hbnN3ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKFxuICAgICAgICAgIGFuc3dlclRvQ2hlY2ssXG4gICAgICAgICAgY2xhdXNlLmNvbmRpdGlvbixcbiAgICAgICAgICBjbGF1c2UudmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBBcHBseSBBTkQvT1IgbG9naWNcbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICBvdmVyYWxsUmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG92ZXJhbGxSZXN1bHQgPVxuICAgICAgICAgICAgbG9naWMgPT09ICdBTkQnID8gb3ZlcmFsbFJlc3VsdCAmJiByZXN1bHQgOiBvdmVyYWxsUmVzdWx0IHx8IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgc2hvdyBmbGFnIGZvciB0aGUgZWxlbWVudCBjb250cm9sbGVkIGJ5IHRoaXMgd2hlbkNsYXVzZVxuICAgICAgY29uc3QgbWF0Y2hlZEFuc3dlciA9IHN1Ym1pc3Npb24uYW5zd2Vycy5maW5kKFxuICAgICAgICAoYW5zKSA9PiBhbnMucXVlc3Rpb25JZCA9PT0gZWxlbWVudElkXG4gICAgICApO1xuXG4gICAgICBjb25zdCBhY3Rpb25zOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkod2hlbj8ud2hlbkNsYXVzZUFjdGlvbnMpXG4gICAgPyB3aGVuLndoZW5DbGF1c2VBY3Rpb25zLm1hcChTdHJpbmcpXG4gICAgOiBbXTtcblxuICAgICAgLy8gY2hvb3NlIHRoZSBkZWNpc2l2ZSBhY3Rpb24gKHVzZSBsYXN0IGlmIG11bHRpcGxlKVxuICAgICAgY29uc3QgYWN0aW9uID0gYWN0aW9ucy5sZW5ndGggPiAwID8gYWN0aW9uc1thY3Rpb25zLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuXG5cbiAgICAgIGlmIChtYXRjaGVkQW5zd2VyKSB7XG4gICAgICAgIGlmIChvdmVyYWxsUmVzdWx0KSB7XG4gICAgICAgICAgLy8gQ29uZGl0aW9uKHMpIHNhdGlzZmllZCAtPiBwZXJmb3JtIHRoZSBhY3Rpb25cbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnU0hPVyc6XG4gICAgICAgICAgICAgIG1hdGNoZWRBbnN3ZXIuc2hvdyA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSElERSc6XG4gICAgICAgICAgICAgIG1hdGNoZWRBbnN3ZXIuc2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ01BUktfQVNfUkVRVUlSRUQnOlxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNQVJLX0FTX09QVElPTkFMJzpcbiAgICAgICAgICAgICAgbWF0Y2hlZEFuc3dlci5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIC8vIG5vIHNob3cvaGlkZSBhY3Rpb24g4oCUIGtlZXAgY3VycmVudCBiZWhhdmlvciAoeW91IGNhbiBjaG9vc2UgZGVmYXVsdCBoZXJlKVxuICAgICAgICAgICAgICAvLyBGb3Igc2FmZXR5LCBpZiBubyBleHBsaWNpdCBhY3Rpb24sIHdlJ2xsIGxlYXZlIGdyaWQuc2hvdyB1bmNoYW5nZWQuXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIENvbmRpdGlvbihzKSBub3Qgc2F0aXNmaWVkIC0+IHJldmVydCB0aGUgYWN0aW9uJ3MgZWZmZWN0XG4gICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ1NIT1cnOlxuICAgICAgICAgICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIHRydWUgPT4gaGlkZSAocmV2ZXJ0KVxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdISURFJzpcbiAgICAgICAgICAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciB0cnVlID0+IHNob3cgKHJldmVydClcbiAgICAgICAgICAgICAgbWF0Y2hlZEFuc3dlci5zaG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNQVJLX0FTX1JFUVVJUkVEJzpcbiAgICAgICAgICAgICAgbWF0Y2hlZEFuc3dlci5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ01BUktfQVNfT1BUSU9OQUwnOlxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAvLyBub3RoaW5nIHRvIHJldmVydFxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG5cblxuICAgICAgLy8gaWYgKG1hdGNoZWRBbnN3ZXIpIHtcbiAgICAgIC8vICAgbWF0Y2hlZEFuc3dlci5zaG93ID0gb3ZlcmFsbFJlc3VsdDtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH1cblxuICByZXNldFNlcnZpY2UoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgdHJhY2tlZCBncmlkc1xuICAgIHRoaXMuYWN0aXZlV2hlbkNsYXVzZUdyaWRzID0gW107XG5cbiAgICAvLyBDbGVhciBzdG9yZWQgcXVlc3Rpb24g4oaSIGFuc3dlciBtYXBcbiAgICB0aGlzLnF1ZXN0aW9uQW5zd2VyTWFwID0ge307XG5cbiAgICAvLyBSZXNldCB2aXNpYmlsaXR5IGxvZ2ljIHRvIGluaXRpYWwgc3RhdGVcbiAgfVxuXG4gIGdldEFjdGl2ZVdoZW5DbGF1c2VHcmlkcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlV2hlbkNsYXVzZUdyaWRzO1xuICB9XG59XG4iXX0=
|
|
427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlbkNsYXVzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy93aGVuQ2xhdXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS2hELE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFQUSwwQkFBcUIsR0FBVSxFQUFFLENBQUM7UUFDbEMsc0JBQWlCLEdBQWtDLEVBQUUsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO1FBSTlELGtCQUFhLEdBQVksSUFBSSxDQUFDO0lBQ2YsQ0FBQztJQUVoQixpQkFBaUI7UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBR0M7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxJQUFTO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxVQUFVLENBQUM7UUFDOUIsT0FBTyxDQUFDLENBQUMsQ0FDUCxJQUFJO1lBQ0osSUFBSSxDQUFDLFFBQVE7WUFDYixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFTO1FBQ2YsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sTUFB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QUMvQixNQUFNO3dCQUNSLEtBQUssa0JBQWtCOzRCQUNyQixhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzs0QkFDOUIsTUFBTTt3QkFDUjs0QkFDRSxvQkFBb0I7NEJBQ3BCLE1BQU07cUJBQ1Q7aUJBQ0Y7YUFDRjtZQUtELHVCQUF1QjtZQUN2Qix3Q0FBd0M7WUFDeEMsSUFBSTtTQUNMO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUVoQyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUU1QiwwQ0FBMEM7SUFDNUMsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDOytHQWxmVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3VibWlzc2lvbiB9IGZyb20gJy4uL21vZGVscy9zdWJtaXNzaW9uLm1vZGVsJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2hlbkNsYXVzZVNlcnZpY2Uge1xuICBwcml2YXRlIGFjdGl2ZVdoZW5DbGF1c2VHcmlkczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBxdWVzdGlvbkFuc3dlck1hcDogeyBbcXVlc3Rpb25JZDogc3RyaW5nXTogYW55IH0gPSB7fTtcbnByaXZhdGUgcXVlc3Rpb25DaGFuZ2UkID0gbmV3IFN1YmplY3Q8eyBxdWVzdGlvbklkOiBzdHJpbmcgfT4oKTtcblxuXG5cbiAgaXNJbml0aWFsTG9hZDogYm9vbGVhbiA9IHRydWU7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBtYXJrTG9hZENvbXBsZXRlZCgpIHtcbiAgICB0aGlzLmlzSW5pdGlhbExvYWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uUXVlc3Rpb25DaGFuZ2UoKSB7XG4gIHJldHVybiB0aGlzLnF1ZXN0aW9uQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbn1cblxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGdyaWQgaGFzIGFuIGFjdGl2ZSB3aGVuIGNsYXVzZVxuICAgKi9cbiAgaXNBY3RpdmVXaGVuQ2xhdXNlKGdyaWQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHdoZW4gPSBncmlkPy53aGVuQ2xhdXNlO1xuICAgIHJldHVybiAhIShcbiAgICAgIHdoZW4gJiZcbiAgICAgIHdoZW4uYWN0aXZhdGUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkod2hlbi53aGVuQ2xhdXNlQ29uZGl0aW9uKSAmJlxuICAgICAgd2hlbi53aGVuQ2xhdXNlQ29uZGl0aW9uLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGdyaWQgdG8gdHJhY2tpbmcgbGlzdCBpZiBpdCBoYXMgYW4gYWN0aXZlIHdoZW4gY2xhdXNlXG4gICAqL1xuICBhZGRHcmlkKGdyaWQ6IGFueSk6IHZvaWQge1xuICAgIGlmICghZ3JpZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaXNBY3RpdmVXaGVuQ2xhdXNlKGdyaWQpKSB7XG4gICAgICBjb25zdCBleGlzdHMgPSB0aGlzLmFjdGl2ZVdoZW5DbGF1c2VHcmlkcy5zb21lKFxuICAgICAgICAoZykgPT4gZy5lbGVtZW50Py5pZCA9PT0gZ3JpZC5lbGVtZW50Py5pZFxuICAgICAgKTtcblxuICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVXaGVuQ2xhdXNlR3JpZHMucHVzaChncmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRRdWVzdGlvbkFuc3dlcihxdWVzdGlvbklkOiBzdHJpbmcsIGFuc3dlcjogYW55LGluaXRpYWw6Ym9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCFxdWVzdGlvbklkKSByZXR1cm47XG4gICAgdGhpcy5xdWVzdGlvbkFuc3dlck1hcFtxdWVzdGlvbklkXSA9IGFuc3dlcjtcbiAgICB0aGlzLmV2YWx1YXRlQWxsV2hlbkNsYXVzZXMoaW5pdGlhbCk7XG4gICAgICB0aGlzLnF1ZXN0aW9uQ2hhbmdlJC5uZXh0KHsgcXVlc3Rpb25JZCB9KTtcbiAgfVxuXG4gIGdldEFuc3dlcihxdWVzdGlvbklkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uQW5zd2VyTWFwW3F1ZXN0aW9uSWRdO1xuICB9XG5cbiAgcHJpdmF0ZSBldmFsdWF0ZUFsbFdoZW5DbGF1c2VzKGluaXRpYWw6Ym9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHZpc2libGVHcmlkczogYW55W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZ3JpZCBvZiB0aGlzLmFjdGl2ZVdoZW5DbGF1c2VHcmlkcykge1xuICAgICAgY29uc3Qgd2hlbiA9IGdyaWQud2hlbkNsYXVzZTtcbiAgICAgIGNvbnN0IGNvbmRpdGlvbnMgPSB3aGVuLndoZW5DbGF1c2VDb25kaXRpb247XG5cbiAgICAgIGlmICghY29uZGl0aW9ucyB8fCAhY29uZGl0aW9ucy5sZW5ndGgpIGNvbnRpbnVlO1xuXG4gICAgICBsZXQgb3ZlcmFsbFJlc3VsdCA9IHRydWU7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZGl0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjbGF1c2UgPSBjb25kaXRpb25zW2ldO1xuICAgICAgICBjb25zdCBsb2dpYyA9IChjbGF1c2UubG9naWMgfHwgKGkgPT09IDAgPyAnQU5EJyA6ICdBTkQnKSkudG9VcHBlckNhc2UoKTsgLy8gRGVmYXVsdCB0byBBTkQgZm9yIGZpcnN0XG4gICAgICAgIGNvbnN0IGFuc3dlciA9IHRoaXMuZ2V0QW5zd2VyKGNsYXVzZS5xdWVzdGlvbmlkKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihcbiAgICAgICAgICBhbnN3ZXIsXG4gICAgICAgICAgY2xhdXNlLmNvbmRpdGlvbixcbiAgICAgICAgICBjbGF1c2UudmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBDb21iaW5lIHJlc3VsdHMgYmFzZWQgb24gbG9naWMgKEFORCAvIE9SKVxuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIG92ZXJhbGxSZXN1bHQgPSByZXN1bHQ7IC8vIGluaXRpYWxpemUgd2l0aCBmaXJzdCBjb25kaXRpb25cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobG9naWMgPT09ICdBTkQnKSB7XG4gICAgICAgICAgICBvdmVyYWxsUmVzdWx0ID0gb3ZlcmFsbFJlc3VsdCAmJiByZXN1bHQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChsb2dpYyA9PT0gJ09SJykge1xuICAgICAgICAgICAgb3ZlcmFsbFJlc3VsdCA9IG92ZXJhbGxSZXN1bHQgfHwgcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gc2FmZSByZWFkIGFjdGlvbnMgKGNvdWxkIGJlIHVuZGVmaW5lZClcbiAgICBjb25zdCBhY3Rpb25zOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkod2hlbj8ud2hlbkNsYXVzZUFjdGlvbnMpXG4gICAgPyB3aGVuLndoZW5DbGF1c2VBY3Rpb25zLm1hcChTdHJpbmcpXG4gICAgOiBbXTtcblxuICAvLyBjaG9vc2UgdGhlIGRlY2lzaXZlIGFjdGlvbiAodXNlIGxhc3QgaWYgbXVsdGlwbGUpXG4gIGNvbnN0IGFjdGlvbiA9IGFjdGlvbnMubGVuZ3RoID4gMCA/IGFjdGlvbnNbYWN0aW9ucy5sZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcblxuICBpZiAob3ZlcmFsbFJlc3VsdCkge1xuICAgIC8vIENvbmRpdGlvbihzKSBzYXRpc2ZpZWQgLT4gcGVyZm9ybSB0aGUgYWN0aW9uXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ1NIT1cnOlxuICAgICAgICBncmlkLnNob3cgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hJREUnOlxuICAgICAgICBncmlkLnNob3cgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdNQVJLX0FTX1JFUVVJUkVEJzpcbiAgICAgICAgaWYgKGdyaWQuZWxlbWVudCkgZ3JpZC5lbGVtZW50LnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdNQVJLX0FTX09QVElPTkFMJzpcbiAgICAgICAgaWYgKGdyaWQuZWxlbWVudCkgZ3JpZC5lbGVtZW50LnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gbm8gc2hvdy9oaWRlIGFjdGlvbiDigJQga2VlcCBjdXJyZW50IGJlaGF2aW9yICh5b3UgY2FuIGNob29zZSBkZWZhdWx0IGhlcmUpXG4gICAgICAgIC8vIEZvciBzYWZldHksIGlmIG5vIGV4cGxpY2l0IGFjdGlvbiwgd2UnbGwgbGVhdmUgZ3JpZC5zaG93IHVuY2hhbmdlZC5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gaWYgdmlzaWJsZSwgY29sbGVjdFxuICAgIGlmIChncmlkLnNob3cpIHZpc2libGVHcmlkcy5wdXNoKGdyaWQpO1xuICB9IGVsc2Uge1xuICAgIC8vIENvbmRpdGlvbihzKSBub3Qgc2F0aXNmaWVkIC0+IHJldmVydCB0aGUgYWN0aW9uJ3MgZWZmZWN0XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ1NIT1cnOlxuICAgICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIHRydWUgPT4gaGlkZSAocmV2ZXJ0KVxuICAgICAgICBncmlkLnNob3cgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdISURFJzpcbiAgICAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciB0cnVlID0+IHNob3cgKHJldmVydClcbiAgICAgICAgZ3JpZC5zaG93ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdNQVJLX0FTX1JFUVVJUkVEJzpcbiAgICAgICAgaWYgKGdyaWQuZWxlbWVudCkgZ3JpZC5lbGVtZW50LnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTUFSS19BU19PUFRJT05BTCc6XG4gICAgICAgIGlmIChncmlkLmVsZW1lbnQpIGdyaWQuZWxlbWVudC5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gbm90aGluZyB0byByZXZlcnRcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIGlmIHdlIGhpZCBpdCBiZWNhdXNlIG92ZXJhbGxSZXN1bHQgZmFsc2UgYW5kIGl0J3Mgbm90IGluaXRpYWwsIGNsZWFyIGFuc3dlclxuICAgIGlmICghb3ZlcmFsbFJlc3VsdCAmJiAhaW5pdGlhbCAmJiAhZ3JpZC5zaG93KSB7XG4gICAgICBncmlkLmVsZW1lbnQuYW5zd2VyID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgICAgIGlmIChvdmVyYWxsUmVzdWx0KSB2aXNpYmxlR3JpZHMucHVzaChncmlkKTtcbiAgICB9XG4gIH1cblxuICBldmFsdWF0ZUNvbmRpdGlvbihhbnN3ZXI6IGFueSwgb3BlcmF0b3I6IHN0cmluZywgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuXG4gICAgLy8gdHJlYXQgbnVsbC91bmRlZmluZWQvZW1wdHktc3RyaW5nL2VtcHR5LWFycmF5IGFzIFwibm8gYW5zd2VyXCJcbiAgICBpZiAoYW5zd2VyID09PSBudWxsIHx8IGFuc3dlciA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gaWYgKHR5cGVvZiBhbnN3ZXIgPT09ICdzdHJpbmcnICYmIGFuc3dlciA9PT0gJycpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpICYmIGFuc3dlci5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcblxuICAgIC8vIOKchSBJZiBhbnN3ZXIgY29udGFpbnMgYSBwaXBlLCB0YWtlIG9ubHkgdGhlIHBhcnQgQUZURVIgdGhlIHBpcGVcbiAgICBpZiAodHlwZW9mIGFuc3dlciA9PT0gJ3N0cmluZycgJiYgYW5zd2VyLmluZGV4T2YoJ3wnKSAhPT0gLTEpIHtcbiAgICAgIGFuc3dlciA9IGFuc3dlci5zcGxpdCgnfCcpLnBvcCgpO1xuICAgIH1cblxuICAgIC8vIGhlbHBlcnMgdG8gbm9ybWFsaXplIHZhbHVlcyB0byBhcnJheXMgb2YgbG93ZXItY2FzZSBzdHJpbmdzIChmb3Igc3RyaW5nIG9wcylcbiAgICBjb25zdCB0b1N0ciA9ICh2OiBhbnkpID0+XG4gICAgICB2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCA/ICcnIDogU3RyaW5nKHYpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBjb25zdCBlbnN1cmVBcnJheSA9ICh2OiBhbnkpOiBzdHJpbmdbXSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkgcmV0dXJuIHYubWFwKCh4KSA9PiB0b1N0cih4KSk7XG4gICAgICAvLyBpZiBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nID0+IHNwbGl0LCBlbHNlIHNpbmdsZSBlbGVtZW50IGFycmF5XG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYuaW5kZXhPZignLCcpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gdlxuICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgLm1hcCgoeCkgPT4geC50cmltKCkpXG4gICAgICAgICAgLm1hcCgoeCkgPT4gdG9TdHIoeCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFt0b1N0cih2KV07XG4gICAgfTtcblxuICAgIGNvbnN0IGFuc0FyciA9IGVuc3VyZUFycmF5KGFuc3dlcik7XG4gICAgY29uc3QgdmFsQXJyID0gZW5zdXJlQXJyYXkodmFsdWUpO1xuXG4gICAgLy8gbnVtZXJpYyBjb21wYXJpc29uczogb25seSB3aGVuIGJvdGggc2lkZXMgYXJlIHNjYWxhcnMgKG5vbi1hcnJheSkgYW5kIG51bWVyaWNcbiAgICBjb25zdCBpc051bWVyaWNTY2FsYXIgPSAoeDogYW55KSA9PlxuICAgICAgIUFycmF5LmlzQXJyYXkoeCkgJiYgeCAhPT0gbnVsbCAmJiB4ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTihOdW1iZXIoeCkpO1xuXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgY2FzZSAnPCc6XG4gICAgICAgIGlmIChpc051bWVyaWNTY2FsYXIoYW5zd2VyKSAmJiBpc051bWVyaWNTY2FsYXIodmFsdWUpKVxuICAgICAgICAgIHJldHVybiBOdW1iZXIoYW5zd2VyKSA8IE51bWJlcih2YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJz4nOlxuICAgICAgICBpZiAoaXNOdW1lcmljU2NhbGFyKGFuc3dlcikgJiYgaXNOdW1lcmljU2NhbGFyKHZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGFuc3dlcikgPiBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICc8PSc6XG4gICAgICAgIGlmIChpc051bWVyaWNTY2FsYXIoYW5zd2VyKSAmJiBpc051bWVyaWNTY2FsYXIodmFsdWUpKVxuICAgICAgICAgIHJldHVybiBOdW1iZXIoYW5zd2VyKSA8PSBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICc+PSc6XG4gICAgICAgIGlmIChpc051bWVyaWNTY2FsYXIoYW5zd2VyKSAmJiBpc051bWVyaWNTY2FsYXIodmFsdWUpKVxuICAgICAgICAgIHJldHVybiBOdW1iZXIoYW5zd2VyKSA+PSBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIGVxdWFsaXR5OiB0cnVlIGlmIGFueSBhbnN3ZXIgZWxlbWVudCBlcXVhbHMgYW55IHZhbHVlIGVsZW1lbnRcbiAgICAgIGNhc2UgJz0nOlxuICAgICAgICByZXR1cm4gYW5zQXJyLnNvbWUoKGEpID0+IHZhbEFyci5zb21lKCh2KSA9PiBhID09PSB2KSk7XG5cbiAgICAgIGNhc2UgJyE9JzpcbiAgICAgICAgcmV0dXJuICFhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLnNvbWUoKHYpID0+IGEgPT09IHYpKTtcblxuICAgICAgLy8gTElLRSAvIE5PVCBMSUtFOiBjaGVjayBzdWJzdHJpbmcgbWF0Y2ggYW55d2hlcmUgaW4gYW55IGFuc3dlciBlbGVtZW50XG4gICAgICBjYXNlICdMSUtFJzpcbiAgICAgICAgcmV0dXJuIGFuc0Fyci5zb21lKChhKSA9PiB2YWxBcnIuc29tZSgodikgPT4gYS5pbmNsdWRlcyh2KSkpO1xuICAgICAgY2FzZSAnTk9UIExJS0UnOlxuICAgICAgICByZXR1cm4gIWFuc0Fyci5zb21lKChhKSA9PiB2YWxBcnIuc29tZSgodikgPT4gYS5pbmNsdWRlcyh2KSkpO1xuXG4gICAgICBjYXNlICdCRUdJTiBXSVRIJzpcbiAgICAgICAgcmV0dXJuIGFuc0Fyci5zb21lKChhKSA9PiB2YWxBcnIuc29tZSgodikgPT4gYS5zdGFydHNXaXRoKHYpKSk7XG4gICAgICBjYXNlICdFTkQgV0lUSCc6XG4gICAgICAgIHJldHVybiBhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLnNvbWUoKHYpID0+IGEuZW5kc1dpdGgodikpKTtcblxuICAgICAgLy8gSU4gLyBOT1QgSU46IHRydWUgaWYgYW55IGFuc3dlciBlbGVtZW50IGV4aXN0cyBpbiB2YWx1ZSBsaXN0XG4gICAgICBjYXNlICdJTic6XG4gICAgICAgIHJldHVybiBhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLmluY2x1ZGVzKGEpKTtcbiAgICAgIGNhc2UgJ05PVCBJTic6XG4gICAgICAgIHJldHVybiAhYW5zQXJyLnNvbWUoKGEpID0+IHZhbEFyci5pbmNsdWRlcyhhKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhZGRHcmlkc0Zyb21TdWJmb3JtKHN1YmZvcm06IGFueSk6IHZvaWQge1xuICAgIGlmICghc3ViZm9ybSB8fCAhQXJyYXkuaXNBcnJheShzdWJmb3JtLnJvd3MpKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHJvdyBvZiBzdWJmb3JtLnJvd3MpIHtcbiAgICAgIGlmICghcm93LmdyaWQgfHwgIUFycmF5LmlzQXJyYXkocm93LmdyaWQpKSBjb250aW51ZTtcblxuICAgICAgZm9yIChjb25zdCBncmlkIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgIC8vIDHvuI/ig6MgQWRkIHRoaXMgZ3JpZCBpdHNlbGYgaWYgaXQgaGFzIGFuIGFjdGl2ZSB3aGVuQ2xhdXNlXG4gICAgICAgIHRoaXMuYWRkR3JpZChncmlkKTtcblxuICAgICAgICAvLyAy77iP4oOjIFRoZW4sIHJlY3Vyc2l2ZWx5IHByb2Nlc3MgbmVzdGVkIGNoaWxkTG9naWNzIGluc2lkZSBpdHMgZWxlbWVudFxuICAgICAgICBpZiAoZ3JpZC5lbGVtZW50Py5jaGlsZExvZ2ljcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzQ2hpbGRMb2dpY3MoZ3JpZC5lbGVtZW50LmNoaWxkTG9naWNzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBwcm9jZXNzIGNoaWxkTG9naWNzIHN0cnVjdHVyZVxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzQ2hpbGRMb2dpY3MoY2hpbGRMb2dpY3M6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNoaWxkTG9naWNzKSkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBsb2dpYyBvZiBjaGlsZExvZ2ljcykge1xuICAgICAgLy8gMe+4j+KDoyBFYWNoIGxvZ2ljIG1heSBoYXZlIGl0cyBvd24gcm93cyAoc2ltaWxhciB0byBzdWJmb3JtIHJvd3MpXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2dpYy5yb3dzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBsb2dpYy5yb3dzKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93LmdyaWQpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyaWQgb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgd2hlbkNsYXVzZSBmb3IgdGhpcyBuZXN0ZWQgZ3JpZFxuICAgICAgICAgICAgICB0aGlzLmFkZEdyaWQoZ3JpZCk7XG5cbiAgICAgICAgICAgICAgLy8gMu+4j+KDoyBSZWN1cnNlIGFnYWluIGlmIHRoaXMgbmVzdGVkIHF1ZXN0aW9uIGFsc28gaGFzIGl0cyBvd24gY2hpbGRMb2dpY3NcbiAgICAgICAgICAgICAgaWYgKGdyaWQuZWxlbWVudD8uY2hpbGRMb2dpY3M/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0NoaWxkTG9naWNzKGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gM++4j+KDoyBBIGxvZ2ljIGl0c2VsZiBtaWdodCBkaXJlY3RseSBjb250YWluIG5lc3RlZCBsb2dpY3NcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvZ2ljLmNoaWxkTG9naWNzKSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NDaGlsZExvZ2ljcyhsb2dpYy5jaGlsZExvZ2ljcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBBTEwgZWxlbWVudHMgd2l0aCBhbiBhY3RpdmUgd2hlbkNsYXVzZSBpbnNpZGUgYSBzdWJmb3JtLFxuICAgKiBpbmNsdWRpbmcgbmVzdGVkIGNoaWxkTG9naWNzIChyZWN1cnNpdmUpXG4gICAqL1xuICBnZXRXaGVuQ2xhdXNlRWxlbWVudHMoc3ViZm9ybTogYW55KTogYW55W10ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcblxuICAgIGlmICghc3ViZm9ybSB8fCAhQXJyYXkuaXNBcnJheShzdWJmb3JtLnJvd3MpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgcm93IG9mIHN1YmZvcm0ucm93cykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJvdy5ncmlkKSkgY29udGludWU7XG5cbiAgICAgIGZvciAoY29uc3QgZ3JpZCBvZiByb3cuZ3JpZCkge1xuICAgICAgICAvLyAx77iP4oOjIEFkZCB0aGlzIGdyaWQgaWYgaXQgaGFzIGFuIGFjdGl2ZSB3aGVuQ2xhdXNlXG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlV2hlbkNsYXVzZShncmlkKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGdyaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMu+4j+KDoyBQcm9jZXNzIG5lc3RlZCBjaGlsZExvZ2ljcyBpbnNpZGUgdGhpcyBlbGVtZW50XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyaWQuZWxlbWVudD8uY2hpbGRMb2dpY3MpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICAuLi50aGlzLmdldEVsZW1lbnRzRnJvbUNoaWxkTG9naWNzKGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBnYXRoZXIgZ3JpZHMgd2l0aCBhY3RpdmUgd2hlbkNsYXVzZSBpbnNpZGUgY2hpbGRMb2dpY3NcbiAgICovXG4gIHByaXZhdGUgZ2V0RWxlbWVudHNGcm9tQ2hpbGRMb2dpY3MoY2hpbGRMb2dpY3M6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IGZvdW5kOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNoaWxkTG9naWNzKSkgcmV0dXJuIGZvdW5kO1xuXG4gICAgZm9yIChjb25zdCBsb2dpYyBvZiBjaGlsZExvZ2ljcykge1xuICAgICAgLy8gRWFjaCBsb2dpYyBjYW4gaGF2ZSByb3dzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2dpYy5yb3dzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBsb2dpYy5yb3dzKSB7XG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJvdy5ncmlkKSkgY29udGludWU7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGdyaWQgb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQWN0aXZlV2hlbkNsYXVzZShncmlkKSkge1xuICAgICAgICAgICAgICBmb3VuZC5wdXNoKGdyaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZWN1cnNlIGRlZXBlciBpZiB0aGlzIGdyaWQgaGFzIG5lc3RlZCBjaGlsZExvZ2ljc1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JpZC5lbGVtZW50Py5jaGlsZExvZ2ljcykpIHtcbiAgICAgICAgICAgICAgZm91bmQucHVzaChcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldEVsZW1lbnRzRnJvbUNoaWxkTG9naWNzKGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTG9naWMgaXRzZWxmIG1heSBoYXZlIG5lc3RlZCBjaGlsZExvZ2ljc1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9naWMuY2hpbGRMb2dpY3MpKSB7XG4gICAgICAgIGZvdW5kLnB1c2goLi4udGhpcy5nZXRFbGVtZW50c0Zyb21DaGlsZExvZ2ljcyhsb2dpYy5jaGlsZExvZ2ljcykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmb3VuZDtcbiAgfVxuXG4gIGNoZWNrRWxlbWVudFZpc2liaWxpdHkoaWQ6IHN0cmluZywgc3VibWlzc2lvbjogU3VibWlzc2lvbik6IGJvb2xlYW4ge1xuICAgIGlmICghaWQgfHwgIXN1Ym1pc3Npb24gfHwgIUFycmF5LmlzQXJyYXkoc3VibWlzc2lvbi5hbnN3ZXJzKSkge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIGRlZmF1bHQgdmlzaWJsZSBpZiBpbnZhbGlkIGlucHV0XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hlZEFuc3dlciA9IHN1Ym1pc3Npb24uYW5zd2Vycy5maW5kKFxuICAgICAgKGFucykgPT4gYW5zLnF1ZXN0aW9uSWQgPT09IGlkXG4gICAgKTtcblxuICAgIC8vIFJldHVybiB0aGUgJ3Nob3cnIGZsYWcgaWYgZm91bmQsIGVsc2UgZGVmYXVsdCB0byB0cnVlXG4gICAgcmV0dXJuIG1hdGNoZWRBbnN3ZXIgPyBtYXRjaGVkQW5zd2VyLnNob3cgPz8gdHJ1ZSA6IHRydWU7XG4gIH1cblxuICBldmFsdWF0ZVN1YmZvcm1XaGVuQ2xhdXNlcyhcbiAgICBjaGFuZ2VkQW5zd2VyOiBhbnksXG4gICAgc3VibWlzc2lvbjogU3VibWlzc2lvbixcbiAgICBjaGFuZ2VkUXVlc3Rpb25JZDogc3RyaW5nLFxuICAgIGVsZW1lbnRzV2l0aFdoZW5DbGF1c2U6IGFueVxuICApIHtcbiAgICBpZiAoIWVsZW1lbnRzV2l0aFdoZW5DbGF1c2UubGVuZ3RoKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IGdyaWQgb2YgZWxlbWVudHNXaXRoV2hlbkNsYXVzZSkge1xuICAgICAgY29uc3QgZWxlbWVudElkID0gZ3JpZC5lbGVtZW50LmlkO1xuICAgICAgY29uc3Qgd2hlbiA9IGdyaWQud2hlbkNsYXVzZTtcbiAgICAgIGNvbnN0IGNvbmRpdGlvbnMgPSB3aGVuLndoZW5DbGF1c2VDb25kaXRpb247XG5cbiAgICAgIGlmICghY29uZGl0aW9ucz8ubGVuZ3RoKSBjb250aW51ZTtcblxuICAgICAgbGV0IG92ZXJhbGxSZXN1bHQgPSB0cnVlO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2xhdXNlID0gY29uZGl0aW9uc1tpXTtcblxuICAgICAgICBjb25zdCBsb2dpYyA9IChjbGF1c2UubG9naWMgfHwgKGkgPT09IDAgPyAnQU5EJyA6ICdBTkQnKSkudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggYW5zd2VyIHRvIHVzZSBmb3IgdGhpcyBjb25kaXRpb25cbiAgICAgICAgbGV0IGFuc3dlclRvQ2hlY2s6IGFueTtcblxuICAgICAgICBpZiAoY2xhdXNlLnF1ZXN0aW9uaWQgPT09IGNoYW5nZWRRdWVzdGlvbklkKSB7XG4gICAgICAgICAgLy8gVXNlIHVwZGF0ZWQgYW5zd2VyIGZvciB0aGUgY2hhbmdlZCBxdWVzdGlvblxuICAgICAgICAgIGFuc3dlclRvQ2hlY2sgPSBjaGFuZ2VkQW5zd2VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZldGNoIGV4aXN0aW5nIHZhbHVlIGZyb20gc3VibWlzc2lvbiBmb3Igb3RoZXIgcXVlc3Rpb25zXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgICAgICAgIChhKSA9PiBhLnF1ZXN0aW9uSWQgPT09IGNsYXVzZS5xdWVzdGlvbmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhbnN3ZXJUb0NoZWNrID0gZXhpc3Rpbmc/LmFuc3dlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZXZhbHVhdGVDb25kaXRpb24oXG4gICAgICAgICAgYW5zd2VyVG9DaGVjayxcbiAgICAgICAgICBjbGF1c2UuY29uZGl0aW9uLFxuICAgICAgICAgIGNsYXVzZS52YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEFwcGx5IEFORC9PUiBsb2dpY1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIG92ZXJhbGxSZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3ZlcmFsbFJlc3VsdCA9XG4gICAgICAgICAgICBsb2dpYyA9PT0gJ0FORCcgPyBvdmVyYWxsUmVzdWx0ICYmIHJlc3VsdCA6IG92ZXJhbGxSZXN1bHQgfHwgcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBzaG93IGZsYWcgZm9yIHRoZSBlbGVtZW50IGNvbnRyb2xsZWQgYnkgdGhpcyB3aGVuQ2xhdXNlXG4gICAgICBjb25zdCBtYXRjaGVkQW5zd2VyID0gc3VibWlzc2lvbi5hbnN3ZXJzLmZpbmQoXG4gICAgICAgIChhbnMpID0+IGFucy5xdWVzdGlvbklkID09PSBlbGVtZW50SWRcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGFjdGlvbnM6IHN0cmluZ1tdID0gQXJyYXkuaXNBcnJheSh3aGVuPy53aGVuQ2xhdXNlQWN0aW9ucylcbiAgICA/IHdoZW4ud2hlbkNsYXVzZUFjdGlvbnMubWFwKFN0cmluZylcbiAgICA6IFtdO1xuXG4gICAgICAvLyBjaG9vc2UgdGhlIGRlY2lzaXZlIGFjdGlvbiAodXNlIGxhc3QgaWYgbXVsdGlwbGUpXG4gICAgICBjb25zdCBhY3Rpb24gPSBhY3Rpb25zLmxlbmd0aCA+IDAgPyBhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cblxuICAgICAgaWYgKG1hdGNoZWRBbnN3ZXIpIHtcbiAgICAgICAgaWYgKG92ZXJhbGxSZXN1bHQpIHtcbiAgICAgICAgICAvLyBDb25kaXRpb24ocykgc2F0aXNmaWVkIC0+IHBlcmZvcm0gdGhlIGFjdGlvblxuICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdTSE9XJzpcbiAgICAgICAgICAgICAgbWF0Y2hlZEFuc3dlci5zaG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdISURFJzpcbiAgICAgICAgICAgICAgbWF0Y2hlZEFuc3dlci5zaG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTUFSS19BU19SRVFVSVJFRCc6XG4gICAgICAgICAgICAgIG1hdGNoZWRBbnN3ZXIucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ01BUktfQVNfT1BUSU9OQUwnOlxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgLy8gbm8gc2hvdy9oaWRlIGFjdGlvbiDigJQga2VlcCBjdXJyZW50IGJlaGF2aW9yICh5b3UgY2FuIGNob29zZSBkZWZhdWx0IGhlcmUpXG4gICAgICAgICAgICAgIC8vIEZvciBzYWZldHksIGlmIG5vIGV4cGxpY2l0IGFjdGlvbiwgd2UnbGwgbGVhdmUgZ3JpZC5zaG93IHVuY2hhbmdlZC5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQ29uZGl0aW9uKHMpIG5vdCBzYXRpc2ZpZWQgLT4gcmV2ZXJ0IHRoZSBhY3Rpb24ncyBlZmZlY3RcbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnU0hPVyc6XG4gICAgICAgICAgICAgIC8vIGNvbmRpdGlvbiBubyBsb25nZXIgdHJ1ZSA9PiBoaWRlIChyZXZlcnQpXG4gICAgICAgICAgICAgIG1hdGNoZWRBbnN3ZXIuc2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0hJREUnOlxuICAgICAgICAgICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIHRydWUgPT4gc2hvdyAocmV2ZXJ0KVxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnNob3cgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ01BUktfQVNfUkVRVUlSRUQnOlxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTUFSS19BU19PUFRJT05BTCc6XG4gICAgICAgICAgICAgIG1hdGNoZWRBbnN3ZXIucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gcmV2ZXJ0XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG5cblxuXG4gICAgICAvLyBpZiAobWF0Y2hlZEFuc3dlcikge1xuICAgICAgLy8gICBtYXRjaGVkQW5zd2VyLnNob3cgPSBvdmVyYWxsUmVzdWx0O1xuICAgICAgLy8gfVxuICAgIH1cbiAgfVxuXG4gIHJlc2V0U2VydmljZSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhciB0cmFja2VkIGdyaWRzXG4gICAgdGhpcy5hY3RpdmVXaGVuQ2xhdXNlR3JpZHMgPSBbXTtcblxuICAgIC8vIENsZWFyIHN0b3JlZCBxdWVzdGlvbiDihpIgYW5zd2VyIG1hcFxuICAgIHRoaXMucXVlc3Rpb25BbnN3ZXJNYXAgPSB7fTtcblxuICAgIC8vIFJlc2V0IHZpc2liaWxpdHkgbG9naWMgdG8gaW5pdGlhbCBzdGF0ZVxuICB9XG5cbiAgZ2V0QWN0aXZlV2hlbkNsYXVzZUdyaWRzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVXaGVuQ2xhdXNlR3JpZHM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -883,6 +883,10 @@ class WhenClauseService {
|
|
|
883
883
|
// if (typeof answer === 'string' && answer === '') return false;
|
|
884
884
|
if (Array.isArray(answer) && answer.length === 0)
|
|
885
885
|
return false;
|
|
886
|
+
// ✅ If answer contains a pipe, take only the part AFTER the pipe
|
|
887
|
+
if (typeof answer === 'string' && answer.indexOf('|') !== -1) {
|
|
888
|
+
answer = answer.split('|').pop();
|
|
889
|
+
}
|
|
886
890
|
// helpers to normalize values to arrays of lower-case strings (for string ops)
|
|
887
891
|
const toStr = (v) => v === null || v === undefined ? '' : String(v).toLowerCase();
|
|
888
892
|
const ensureArray = (v) => {
|
|
@@ -11361,7 +11365,7 @@ class SubmitFormComponent {
|
|
|
11361
11365
|
const question = this.findQuestionById(element.element.rows, answerObj.questionId);
|
|
11362
11366
|
const ans = answerObj.answer;
|
|
11363
11367
|
// Required question check
|
|
11364
|
-
if ((
|
|
11368
|
+
if ((answerObj.required) &&
|
|
11365
11369
|
(ans === '' || ans === null || ans === undefined || ans?.length === 0)) {
|
|
11366
11370
|
const key = `${submissionIndex}-${question.id}`;
|
|
11367
11371
|
this.inValidQuestions.set(key, 'This is a required question');
|