@agilemotion/oui-react-js 2.0.19 → 2.0.21
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.
|
@@ -546,17 +546,19 @@ const Form = /*#__PURE__*/_react.default.memo(props => {
|
|
|
546
546
|
};
|
|
547
547
|
function doValidateParent(field, invalid) {
|
|
548
548
|
let updateErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
549
|
-
if (
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
549
|
+
if (field) {
|
|
550
|
+
if (!_Utils.default.isNull(field === null || field === void 0 ? void 0 : field.parentId)) {
|
|
551
|
+
let isParentInvalid = invalid;
|
|
552
|
+
for (let i = 0; i < fields.length; i++) {
|
|
553
|
+
if (fields[i] !== field && fields[i].parentId === field.parentId) {
|
|
554
|
+
isParentInvalid = isParentInvalid || !(_Utils.default.isNull(fields[i].error) || fields[i].error.length === 0);
|
|
555
|
+
}
|
|
554
556
|
}
|
|
557
|
+
fieldParentErrors[field.parentId] = isParentInvalid;
|
|
558
|
+
}
|
|
559
|
+
if (updateErrors && !_Utils.default.isNull(containerErrorCallback.current) && _ApplicationManager.default.isFormMarkersEnabled()) {
|
|
560
|
+
containerErrorCallback.current(fieldParentErrors);
|
|
555
561
|
}
|
|
556
|
-
fieldParentErrors[field.parentId] = isParentInvalid;
|
|
557
|
-
}
|
|
558
|
-
if (updateErrors && !_Utils.default.isNull(containerErrorCallback.current) && _ApplicationManager.default.isFormMarkersEnabled()) {
|
|
559
|
-
containerErrorCallback.current(fieldParentErrors);
|
|
560
562
|
}
|
|
561
563
|
return fieldParentErrors;
|
|
562
564
|
}
|
|
@@ -716,4 +718,4 @@ const Form = /*#__PURE__*/_react.default.memo(props => {
|
|
|
716
718
|
}, !_Utils.default.isNull(props.config.id) ? render(props.config) : /*#__PURE__*/_react.default.createElement("div", null, "ERROR: A form must have an ID"));
|
|
717
719
|
});
|
|
718
720
|
var _default = exports.default = Form;
|
|
719
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfVXRpbHMiLCJfU2VjdGlvbiIsIl9SZXN0U2VydmljZSIsIl9hc3luY011dGV4IiwiX09ic2VydmFibGUiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1NlcnZpY2VDYWxsQWN0aW9uSGFuZGxlciIsIl9EeW5hbWljSlMiLCJfRXZlbnRUeXBlIiwiX0V2ZW50IiwiX2NsZWFyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJ0aGVtZSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJmbGV4V3JhcCIsIndpZHRoIiwidmVydGljYWxBbGlnbiIsInNlbGVjdCIsIm1hcmdpbiIsInNwYWNpbmciLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsInNlbGVjdEVtcHR5IiwibWFyZ2luVG9wIiwicm9vdCIsIkZvcm0iLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsInZhbHVlcyIsInVzZVJlZiIsIlV0aWxzIiwiaXNOdWxsIiwibWFzdGVyVmFsdWVzIiwic2V0TWFzdGVyVmFsdWVzIiwidXNlU3RhdGUiLCJjb25maWciLCJzZXRDb25maWciLCJwYXJzZUNvbmZpZyIsInZpZXdJZCIsImJpbmRlciIsImZpZWxkcyIsImNvbnRhaW5lckVycm9yQ2FsbGJhY2siLCJzZWN0aW9uSGFuZGxlcyIsImZpZWxkUGFyZW50RXJyb3JzIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJsb2FkaW5nUmVmIiwiZmllbGRWYWxpZGl0eSIsIk1hcCIsInNlY3Rpb25Db3VudGVyIiwiYXBpIiwiaWQiLCJkb1VwZGF0ZVZhbHVlIiwibmFtZSIsInVwZGF0ZVZhbHVlIiwiY2xlYXIiLCJkb0NsZWFyIiwic2V0VmFsdWUiLCJkb0hhbmRsZUNoYW5nZSIsImhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UiLCJvcHRpb25zIiwic2VsZWN0ZWRJZCIsImhhbmRsZUNoYW5nZSIsImdldFZhbHVlUGF0aCIsImFkZEZpZWxkIiwicmVmIiwicGFyZW50SWQiLCJiaW5kVmFsdWVUb0Zvcm0iLCJyZW1vdmVGaWVsZCIsInNldEZpZWxkVmFsaWRpdHkiLCJyZXN1bHQiLCJjdXJyZW50Iiwic2V0IiwiY2xlYXJGaWVsZFZhbGlkaXR5IiwiZGVsZXRlIiwidmFsaWRhdGVBbGwiLCJmaWVsZCIsImhhbmRsZSIsInBhdGgiLCJjdXJyZW50VmFsdWUiLCJ2YWx1ZU9iamVjdCIsInZhbHVlUHJvcGVydHkiLCJ2YWxpZGF0ZSIsImZpcnN0SW52YWxpZCIsInYiLCJnZXQiLCJ2YWxpZCIsImRvVmFsaWRhdGVQYXJlbnQiLCJzY3JvbGxUbyIsImFwcGxpY2F0aW9uTWFuYWdlciIsImlzRm9ybU1hcmtlcnNFbmFibGVkIiwibG9hZERhdGEiLCJhY3Rpb25Db25maWciLCJldmVudCIsImRhdGEiLCJiaW5kRGF0YSIsImRvQmluZERhdGEiLCJ2YWxpZGF0ZVBhcmVudCIsImludmFsaWQiLCJnZXRGaWVsZCIsImZpZWxkRGF0YUJpbmRpbmdzIiwiZmllbGROYW1lcyIsInNlY3Rpb25zIiwic2VjdGlvbiIsImoiLCJjb21wb25lbnRzIiwiY29tcG9uZW50IiwidHlwZSIsImdldEZpZWxkc0Zyb21UYWIiLCJrIiwiZGF0YUJpbmRpbmciLCJzZXRDb250YWluZXJFcnJvckhhbmRsZXIiLCJjYWxsYmFjayIsIm1vZGVsIiwicGFyc2VWYWx1ZXMiLCJ0cmFuc2Zvcm1EYXRhT2JqZWN0IiwiZm9ybVZhbGlkIiwidW5kZWZpbmVkIiwib25WYWxpZGl0eUNoYW5nZSIsIm1lc3NhZ2UiLCJwYXJzZVZhbHVlIiwic2V0RmllbGRFcnJvciIsImVycm9yIiwiZ2V0Q2hpbGRyZW4iLCJjaGlsZHJlbiIsIm1vcmVDaGlsZHJlbiIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJzZWN0aW9uSGFuZGxlIiwiY2hpbGQiLCJyZWZyZXNoIiwicGFyc2VkQ29uZmlnIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsImNyZWF0ZVNlY3Rpb25IYW5kbGUiLCJ1cGRhdGVWaWV3VGl0bGUiLCJ2aWV3IiwiZ2V0VmlldyIsInRpdGxlIiwiaW5jbHVkZXMiLCJ1cGRhdGVBcHBCYXJUaXRsZSIsImhhbmRsZURhdGFBcnJpdmVkIiwiRXZlbnQiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJEQVRBX0FSUklWRUQiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsImV2ZW50Q29uZmlnIiwiY29tcG9uZW50Q29uZmlnIiwiZXZlbnREYXRhIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwiY29tcG9uZW50VmFsdWUiLCJyZXNvbHZlUGFyYW1ldGVyQ29uZmlnVmFsdWUiLCJpbnZva2VScGMiLCJ0aGVuIiwiY29uc29sZSIsImNhdGNoIiwiZXJyb3JUeXBlIiwicHVibGlzaEVycm9yTWVzc2FnZSIsInNlcnZpY2VDYWxsQWN0aW9uSGFuZGxlciIsImV4ZWN1dGUiLCJwYXJhbWV0ZXIiLCJpc0V4cHJlc3Npb24iLCJmaWxsRXZlbnREYXRhVmFsdWUiLCJpc0V2ZW50RGF0YSIsInRvU3RyaW5nIiwic3RhcnRzV2l0aCIsImdldFByb3BlcnR5Q2hhaW5QYXRoIiwiYWRkU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9uIiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdCIsImNvbmNhdCIsInZhbCIsIm1hcCIsInJlc29sdmVFeHByZXNzaW9uVmFsdWUiLCJ1c2VFZmZlY3QiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwic3Vic2NyaXB0aW9ucyIsImF1dG9Mb2FkRGF0YSIsImdldENvbXBvbmVudEF0dHJpYnV0ZSIsInN1YnNjcmlwdGlvbiIsImV2ZW50VHlwZSIsIkNPTVBPTkVOVF9MT0FEIiwiYWN0aW9ucyIsImFjdGlvblR5cGUiLCJhZGRTdWJzY3JpcHRpb25zIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsImhhbmRsZUxvYWRDb21wbGV0ZSIsImVuYWJsZUZvcm1NYXJrZXJzIiwiY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyIsInRhYiIsInRhYlBhZ2UiLCJ0YWJQYWdlcyIsImZpZWxkc2V0IiwiZm9ybVZhbHVlcyIsInRva2VucyIsInNwbGl0Iiwidm8iLCJ0b2tlbiIsInZhbHVlQ2hhbmdlSGFuZGxlciIsIm1vZGVsQ2hhbmdlSGFuZGxlciIsImtleSIsInBhcnNlZFZhbHVlcyIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsIm9iamVjdFZhbHVlIiwiZGF0YUFycml2ZWRIYW5kbGVyIiwic3BsaWNlIiwidXBkYXRlRXJyb3JzIiwiaXNQYXJlbnRJbnZhbGlkIiwidmFsaWRhdGVGaWVsZCIsInZhbHMiLCJjdXJyZW50VmFsdWVzIiwiZ3JvdXBGaWVsZCIsInZhbGlkYXRpb25Hcm91cCIsImdldFZhbGlkYXRpb25Hcm91cCIsImdyb3VwRmllbGRJZCIsImdyaWRGaWVsZFBhdGgiLCJncm91cEZpZWxkVmFsIiwibG9nIiwiVkFMVUVfQ0hBTkdFIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRWYWx1ZSIsInJlbmRlciIsImZvcm0iLCJjcmVhdGVFbGVtZW50Iiwia2V5SGFuZGxlciIsImRpc2FibGVkIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJtZXJnZVN0eWxlcyIsInBhZGRpbmciLCJvdmVyZmxvdyIsIm1heEhlaWdodCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL0Zvcm0uanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge21ha2VTdHlsZXN9IGZyb20gJ0BtdWkvc3R5bGVzJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgU2VjdGlvbiBmcm9tICcuL1NlY3Rpb24nO1xuaW1wb3J0ICcuL0Zvcm0uY3NzJztcbmltcG9ydCB7aW52b2tlUnBjfSBmcm9tICcuLi8uLi9SZXN0U2VydmljZSc7XG5pbXBvcnQge011dGV4fSBmcm9tICdhc3luYy1tdXRleCc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IHNlcnZpY2VDYWxsQWN0aW9uSGFuZGxlciBmcm9tICcuLi8uLi9ldmVudC9TZXJ2aWNlQ2FsbEFjdGlvbkhhbmRsZXInO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tICcuLi8uLi9EeW5hbWljSlMnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi8uLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCB7Y2xlYXJ9IGZyb20gXCJAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQvZGlzdC9jbGVhclwiO1xuXG5jb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKHRoZW1lID0+ICh7XG4gICAgY29udGFpbmVyOiB7XG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgJyYgdHIgdGQnOiB7XG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJ1xuICAgICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3Q6IHtcbiAgICAgICAgbWFyZ2luOiB0aGVtZS5zcGFjaW5nKDEpLFxuICAgICAgICBtaW5XaWR0aDogMTIwLFxuICAgICAgICBtaW5IZWlnaHQ6IDQ4XG4gICAgfSxcbiAgICBzZWxlY3RFbXB0eToge1xuICAgICAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMiksXG4gICAgfSxcbiAgICByb290OiB7fVxufSkpO1xuXG5jb25zdCBGb3JtID0gUmVhY3QubWVtbygocHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gUmVhY3QudXNlUmVmKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVzKSA/IHByb3BzLnZhbHVlcyA6IHt9KTtcbiAgICAgICAgY29uc3QgW21hc3RlclZhbHVlcywgc2V0TWFzdGVyVmFsdWVzXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgICAgICBjb25zdCBbY29uZmlnLCBzZXRDb25maWddID0gUmVhY3QudXNlU3RhdGUoVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpKTtcbiAgICAgICAgY29uc3QgW2JpbmRlcl0gPSBSZWFjdC51c2VTdGF0ZShVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmJpbmRlcikgPyAnUExBSU5fT0JKRUNUJyA6IHByb3BzLmNvbmZpZy5iaW5kZXIpO1xuICAgICAgICBjb25zdCBbZmllbGRzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRXJyb3JDYWxsYmFjayA9IFJlYWN0LnVzZVJlZigpO1xuICAgICAgICBjb25zdCBbc2VjdGlvbkhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgICAgICBjb25zdCBbZmllbGRQYXJlbnRFcnJvcnNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgICAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcbiAgICAgICAgY29uc3QgbG9hZGluZ1JlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgICAgICAgLy8gVmFsaWRpdHkgcmVnaXN0ZXI6IE1hcDxmaWVsZElkLCB7IHZhbGlkLCBtZXNzYWdlLCBmb3JjZU1hcmtlciB9Pi5cbiAgICAgICAgLy8gU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgXCJpcyB0aGlzIGZpZWxkIHZhbGlkP1wiLiBCYXNlRmllbGQgd3JpdGVzXG4gICAgICAgIC8vIGhlcmUgZnJvbSBkb1ZhbGlkYXRpb247IGZvcm0udmFsdWUgcmVhZHMgaGVyZSB3aXRob3V0IGludm9raW5nIGFueVxuICAgICAgICAvLyBmaWVsZCBtZXRob2RzIChraWxscyB0aGUgYmktZGlyZWN0aW9uYWwgcmVuZGVyLXRpbWUgY2hhaW4gdGhhdFxuICAgICAgICAvLyBwcm9kdWNlZCBSZWFjdCAjMTg1KS5cbiAgICAgICAgY29uc3QgZmllbGRWYWxpZGl0eSA9IFJlYWN0LnVzZVJlZihuZXcgTWFwKCkpO1xuICAgICAgICBsZXQgc2VjdGlvbkNvdW50ZXIgPSAwO1xuXG4gICAgICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG9VcGRhdGVWYWx1ZTogKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVWYWx1ZShuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkb0NsZWFyKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZTogKGlkLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkb0hhbmRsZUNoYW5nZShpZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0SXRlbUNoYW5nZTogKG5hbWUsIG9wdGlvbnMsIHNlbGVjdGVkSWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UobmFtZSwgb3B0aW9ucywgc2VsZWN0ZWRJZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U6IChpZCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZG9IYW5kbGVDaGFuZ2UoaWQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldFZhbHVlUGF0aDogKGlkLCB2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlUGF0aChpZCwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFkZEZpZWxkOiAoaWQsIHJlZiwgcGFyZW50SWQsIGJpbmRWYWx1ZVRvRm9ybSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRkRmllbGQoaWQsIHJlZiwgcGFyZW50SWQsIGJpbmRWYWx1ZVRvRm9ybSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZW1vdmVGaWVsZDogKGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUZpZWxkKGlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldEZpZWxkVmFsaWRpdHk6IChpZCwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsaWRpdHkuY3VycmVudC5zZXQoaWQsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjbGVhckZpZWxkVmFsaWRpdHk6IChpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbGlkaXR5LmN1cnJlbnQuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlQWxsOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEV4cGxpY2l0IFwiZm9yY2UtdmFsaWRhdGUgZXZlcnkgZmllbGRcIiBjb21tYW5kLiBSZXBsYWNlcyB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gb2xkIGhhY2sgb2YgcmVhZGluZyBmb3JtLnZhbHVlIHB1cmVseSBmb3IgaXRzIHNpZGUgZWZmZWN0cy5cbiAgICAgICAgICAgICAgICAgICAgLy8gRmllbGRzIHdyaXRlIGludG8gZmllbGRWYWxpZGl0eSB2aWEgZG9WYWxpZGF0aW9uIGFzIGEgc2lkZVxuICAgICAgICAgICAgICAgICAgICAvLyBlZmZlY3Qgb2YgdmFsaWRhdGU7IHdlIHRoZW4gd2FsayB0aGUgcmVnaXN0ZXIgZm9yIGludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgLy8gZmllbGRzIHRvIGRyaXZlIFVYIChzY3JvbGxUbyBmaXJzdCwgcmVmcmVzaCBjb250YWluZXIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGJhY2spIOKAlCBzYW1lIFVYIHRoZSBnZXR0ZXIgdXNlZCB0byBwcm92aWRlLCBub3cgb3B0LWluLlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmllbGQuaGFuZGxlKSAmJiAhVXRpbHMuaXNOdWxsKGZpZWxkLmhhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFzcyB0aGUgYWN0dWFsIGN1cnJlbnQgdmFsdWUgc28gZG9WYWxpZGF0aW9uJ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycykgY2FjaGUga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmbGVjdHMgcmVhbGl0eS4gV2l0aG91dCB0aGlzIHdlIHdlcmUgcGFzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bGwsIHdoaWNoIG1hZGUgY2FjaGUgaGl0cyBvcGFxdWUgaW4gbG9ncyBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZWQgVXRpbHMudmFsaWRhdGVGaWVsZCB0byBmYWxsIGJhY2sgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZXNbaWRdIGV2ZXJ5IHRpbWUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGdldFZhbHVlUGF0aChmaWVsZC5pZCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcGF0aC52YWx1ZU9iamVjdFtwYXRoLnZhbHVlUHJvcGVydHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5oYW5kbGUuYXBpLnZhbGlkYXRlKHZhbHVlcy5jdXJyZW50LCBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdEludmFsaWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLmJpbmRWYWx1ZVRvRm9ybSA9PT0gZmFsc2UpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IGZpZWxkVmFsaWRpdHkuY3VycmVudC5nZXQoZmllbGQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgJiYgdi52YWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1ZhbGlkYXRlUGFyZW50KGZpZWxkLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0SW52YWxpZCA9PT0gbnVsbCkgZmlyc3RJbnZhbGlkID0gZmllbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmlyc3RJbnZhbGlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIVV0aWxzLmlzTnVsbChmaXJzdEludmFsaWQuaGFuZGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIVV0aWxzLmlzTnVsbChmaXJzdEludmFsaWQuaGFuZGxlLmFwaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiBmaXJzdEludmFsaWQuaGFuZGxlLmFwaS5zY3JvbGxUbyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbnZhbGlkLmhhbmRsZS5hcGkuc2Nyb2xsVG8oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb250YWluZXJFcnJvckNhbGxiYWNrLmN1cnJlbnQpICYmIGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJFcnJvckNhbGxiYWNrLmN1cnJlbnQoZmllbGRQYXJlbnRFcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZERhdGEoYWN0aW9uQ29uZmlnLCBjb25maWcsIGV2ZW50ID8gZXZlbnQuZGF0YSA6IG51bGwpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmluZERhdGE6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRvQmluZERhdGEoZGF0YSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVBhcmVudDogKGlkLCBpbnZhbGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRvVmFsaWRhdGVQYXJlbnQoZ2V0RmllbGQoaWQpLCBpbnZhbGlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldCBmaWVsZERhdGFCaW5kaW5ncygpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkTmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5jb25maWcuc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWN0aW9uID0gcHJvcHMuY29uZmlnLnNlY3Rpb25zW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzZWN0aW9uLmNvbXBvbmVudHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcG9uZW50ID0gc2VjdGlvbi5jb21wb25lbnRzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZHMgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAndGFiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHMgPSBnZXRGaWVsZHNGcm9tVGFiKGNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzID0gY29tcG9uZW50LmZpZWxkcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGZpZWxkcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGQgPSBmaWVsZHNba107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZXMucHVzaCghVXRpbHMuaXNOdWxsKGZpZWxkLmRhdGFCaW5kaW5nKSA/IGZpZWxkLmRhdGFCaW5kaW5nIDogZmllbGQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZE5hbWVzO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0Q29udGFpbmVyRXJyb3JIYW5kbGVyKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckVycm9yQ2FsbGJhY2suY3VycmVudCA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0IG1vZGVsKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVzLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXQgbW9kZWwobW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChtb2RlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlVmFsdWVzKHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hc3RlclZhbHVlcyh7fSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVZhbHVlcyh0cmFuc2Zvcm1EYXRhT2JqZWN0KG1vZGVsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXN0ZXJWYWx1ZXMobW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgcmV0dXJucyB2YWx1ZXMuY3VycmVudCBpZmYgZXZlcnkgYm91bmQgZmllbGQnc1xuICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBlbnRyeSBpcyB2YWxpZC4gU2lkZSBlZmZlY3Q6IGludm9rZXMgZWFjaFxuICAgICAgICAgICAgICAgICAgICAvLyBmaWVsZCdzIGNhY2hlZCBvblZhbGlkaXR5Q2hhbmdlIHRvIHJlZnJlc2ggbWFya2VyIFVJXG4gICAgICAgICAgICAgICAgICAgIC8vIGZyb20gcmVnaXN0ZXIgc3RhdGUg4oCUIG5vIHJlLXZhbGlkYXRpb24sIG5vIHNldEZpZWxkVmFsaWRpdHlcbiAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGVzLiBTeW1tZXRyaWMgKGZpcmVzIGZvciB2YWxpZCArIGludmFsaWQpIHNvIGEgZmllbGRcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hvc2UgVUkgZ290IG91dCBvZiBzeW5jIHdpdGggdGhlIHJlZ2lzdGVyIChzdGFsZSBoYXNFcnJvclxuICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHNvbWUgbm9uLWRvSGFuZGxlQ2hhbmdlIHBhdGgpIGlzIHJlcGFpbnRlZCB0byBtYXRjaC5cbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0U3RhdGVzIGFyZSBpZGVtcG90ZW50IChSZWFjdCBiYWlscyBvbiBzYW1lIHZhbHVlKSwgc29cbiAgICAgICAgICAgICAgICAgICAgLy8gcmVwZWF0ZWQgZm9ybS52YWx1ZSByZWFkcyBjb3N0IHplcm8gcmUtcmVuZGVycyBhZnRlciB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgcGFpbnQuIFRoZSBtYXJrZXJzIGdhdGUgaW5zaWRlIHRoZSBjYWxsYmFjayBlbnN1cmVzXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlZnJlc2hlcyBvbmx5IHBhaW50IHdoZW4gZ2xvYmFsIG1hcmtlcnMgYXJlIGVuYWJsZWQuXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3JtVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZGluZ1JlZi5jdXJyZW50ID09PSBmYWxzZSAmJiB2YWx1ZXMuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuYmluZFZhbHVlVG9Gb3JtID09PSBmYWxzZSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IGZpZWxkVmFsaWRpdHkuY3VycmVudC5nZXQoZmllbGQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1WYWxpZCA9IGZvcm1WYWxpZCAmJiAodiA9PT0gdW5kZWZpbmVkIHx8IHYudmFsaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHR5cGVvZiB2Lm9uVmFsaWRpdHlDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi5vblZhbGlkaXR5Q2hhbmdlKHYudmFsaWQsIHYubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE91dGJvdW5kLW5vcm1hbGl6ZSB0aGUgc3RvcmVkIHZhbHVlIHNvIG5vbi1zdHJpbmcgZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0eXBlcyAoRGF0ZSBmb3IgRGF0ZVBpY2tlciwgbG9va3VwIG9iamVjdHMsIGV0Yy4pIHNlcmlhbGl6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHdpcmUgZm9ybWF0IG9uIEpTT04uc3RyaW5naWZ5LiBSZXN0b3JlcyB0aGUgYmVoYXZpb3IgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2xkIGdldHRlciBwcm92aWRlZCB2aWEgcGFyc2VWYWx1ZShfLCBmYWxzZSkuIElkZW1wb3RlbnQgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHlwZWQgdmFsdWVQYXJzZXJzIOKAlCByZXBlYXQgcmVhZHMgc2VlIHRoZSBhbHJlYWR5LW5vcm1hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBhbmQgcmUtZW1pdCB0aGUgc2FtZSBzdHJpbmcuIHBhcnNlVmFsdWUgaXMgYSBwdXJlIEpTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3JtIHdpdGggbm8gUmVhY3Qgc3RhdGUgc2lkZSBlZmZlY3RzLCBzbyB1bmxpa2UgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsaWRhdGUgY2FsbCB3ZSByZW1vdmVkIGluIHNlcT00NCwgdGhpcyBjYW4ndCBkcml2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmUtcmVuZGVyIGxvb3AuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmllbGQuaGFuZGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhVXRpbHMuaXNOdWxsKGZpZWxkLmhhbmRsZS5hcGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiBmaWVsZC5oYW5kbGUuYXBpLnBhcnNlVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGdldFZhbHVlUGF0aChmaWVsZC5pZCwgdmFsdWVzLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0W3BhdGgudmFsdWVQcm9wZXJ0eV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmhhbmRsZS5hcGkucGFyc2VWYWx1ZShwYXRoLnZhbHVlT2JqZWN0W3BhdGgudmFsdWVQcm9wZXJ0eV0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtVmFsaWQgPyB2YWx1ZXMuY3VycmVudCA6IG51bGw7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yOiAoaWQsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRGaWVsZEVycm9yKGlkLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goZmllbGQuaGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb3JlQ2hpbGRyZW4gPSBmaWVsZC5oYW5kbGUuYXBpLmdldENoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1vcmVDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2gobW9yZUNoaWxkcmVuW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc2VjdGlvbkhhbmRsZXMpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWN0aW9uSGFuZGxlID0gc2VjdGlvbkhhbmRsZXNbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChzZWN0aW9uSGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygc2VjdGlvbkhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVmcmVzaCgpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzZWN0aW9uSGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlY3Rpb25IYW5kbGUgPSBzZWN0aW9uSGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbkhhbmRsZS5hcGkucmVmcmVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25IYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZShVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY3JlYXRlU2VjdGlvbkhhbmRsZSA9IChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHNlY3Rpb25IYW5kbGVzW3NlY3Rpb24uaWRdKSkge1xuICAgICAgICAgICAgICAgIGxldCBoYW5kbGUgPSB7fTtcbiAgICAgICAgICAgICAgICBzZWN0aW9uSGFuZGxlc1tzZWN0aW9uLmlkXSA9IGhhbmRsZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2VjdGlvbkhhbmRsZXNbc2VjdGlvbi5pZF07XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlVmlld1RpdGxlKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLnZpZXdJZCkge1xuICAgICAgICAgICAgICAgIGxldCB2aWV3ID0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFZpZXcocHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICBpZiAodmlldykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB2aWV3LmNvbmZpZy50aXRsZTtcblxuICAgICAgICAgICAgICAgICAgICBpZih0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlLmluY2x1ZGVzKHByb3BzLmNvbmZpZy5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIudXBkYXRlQXBwQmFyVGl0bGUodmlldy5jb25maWcuaWQsIHRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZURhdGFBcnJpdmVkKGRhdGEpIHtcbiAgICAgICAgICAgIHVwZGF0ZVZpZXdUaXRsZSgpO1xuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChkYXRhKSkge1xuICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZGF0YSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuREFUQV9BUlJJVkVELCBldmVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5wcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyhwcm9wcy5jb25maWcuaWQpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMoZmllbGQuaGFuZGxlLmFwaS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsb2FkRGF0YShldmVudENvbmZpZywgY29tcG9uZW50Q29uZmlnLCBldmVudERhdGEgPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgc2VydmljZSA9ICFVdGlscy5pc051bGwoY29tcG9uZW50Q29uZmlnLmRhdGFTZXJ2aWNlKSA/IGNvbXBvbmVudENvbmZpZy5kYXRhU2VydmljZSA6XG4gICAgICAgICAgICAgICAgZXZlbnRDb25maWcgIT09IG51bGwgPyBldmVudENvbmZpZy5kYXRhU2VydmljZSA6IG51bGw7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50VmFsdWUgPSAhVXRpbHMuaXNOdWxsKGNvbXBvbmVudENvbmZpZy52YWx1ZSkgPyBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlKGNvbXBvbmVudENvbmZpZy52YWx1ZSwgZXZlbnREYXRhKSA6XG4gICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChldmVudENvbmZpZykgPyBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlKGV2ZW50Q29uZmlnLnZhbHVlLCBldmVudERhdGEpIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2VydmljZSkpIHtcbiAgICAgICAgICAgICAgICBkb0NsZWFyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UudHlwZSA9PT0gJ3JwYycpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlUnBjKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHByb3BzLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZDogcHJvcHMudmlld0lkXG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlVmFsdWVzKHRyYW5zZm9ybURhdGFPYmplY3QocmVzdWx0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hc3RlclZhbHVlcyhyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLmVycm9yVHlwZSA9PT0gJ0lOVkFMSURfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURhdGFBcnJpdmVkKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnB1Ymxpc2hFcnJvck1lc3NhZ2UoZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGV2ZW50Q29uZmlnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRDb25maWcgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50Q29uZmlnLnNlcnZpY2UgPSBzZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDogSW1wbGVtZW50IHRoZSBpbnZhbGlkIHBhcmFtZW50ZXIgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZUNhbGxBY3Rpb25IYW5kbGVyLmV4ZWN1dGUoZXZlbnRDb25maWcsIG51bGwsIG51bGwsIHByb3BzLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VWYWx1ZXModHJhbnNmb3JtRGF0YU9iamVjdChkYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hc3RlclZhbHVlcyhkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIChwYXJhbWV0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEYXRhQXJyaXZlZChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb21wb25lbnRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhcHBsaWNhdGlvbk1hbmFnZXIuaXNFeHByZXNzaW9uKGNvbXBvbmVudFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50VmFsdWUgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZmlsbEV2ZW50RGF0YVZhbHVlKGNvbXBvbmVudFZhbHVlLCBldmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzRXZlbnREYXRhID0gY29tcG9uZW50VmFsdWUudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0c1dpdGgoJyRldmVudC5kYXRhJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaXNFeHByZXNzaW9uKGNvbXBvbmVudFZhbHVlKSAmJiAhaXNFdmVudERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoID0gVXRpbHMuZ2V0UHJvcGVydHlDaGFpblBhdGgoY29tcG9uZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGF0aC52YWx1ZU9iamVjdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9uKHByb3BzLnZpZXdJZCwgcHJvcHMudmlld0lkLCBwcm9wcy5jb25maWcuaWQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQoYCR7cHJvcHMuY29uZmlnLmlkfVZhbHVlRXZhbHVhdG9yYCwgY29tcG9uZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kZXIgPT09ICdNQVBfT0JKRUNUJyAmJiBVdGlscy5pc051bGwodmFsdWUubWFwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5tYXAgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VWYWx1ZXModHJhbnNmb3JtRGF0YU9iamVjdCh2YWwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hc3RlclZhbHVlcyh2YWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gaXNFdmVudERhdGEgPyBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUV4cHJlc3Npb25WYWx1ZShjb21wb25lbnRWYWx1ZSwgZXZlbnREYXRhKSA6IGNvbXBvbmVudFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRlciA9PT0gJ01BUF9PQkpFQ1QnICYmIFV0aWxzLmlzTnVsbChjb21wb25lbnRWYWx1ZS5tYXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLm1hcCA9IGNvbXBvbmVudFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVZhbHVlcyh0cmFuc2Zvcm1EYXRhT2JqZWN0KHZhbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWFzdGVyVmFsdWVzKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVWaWV3VGl0bGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgICAgICAgICAgbGV0IGV2ZW50SGFuZGxpbmdDb25maWcgPSBVdGlscy5pc051bGwoY29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWcpID8ge30gOiBjb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZztcbiAgICAgICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpID8gW10gOiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnM7XG5cbiAgICAgICAgICAgIGxldCBhdXRvTG9hZERhdGEgPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29uZmlnLCAnYXV0b0xvYWREYXRhJywgbnVsbCk7XG4gICAgICAgICAgICBpZiAoYXV0b0xvYWREYXRhID09PSBudWxsIHx8IGF1dG9Mb2FkRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBzdWJzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uVHlwZTogJ2xvYWREYXRhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZURhdGFBcnJpdmVkKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTeXN0ZW1TdWJzY3JpcHRpb25zKHByb3BzLnZpZXdJZCwgY29uZmlnKTtcbiAgICAgICAgICAgIHNldENvbmZpZyhjb25maWcpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgICAgICAgIGxldCBoYW5kbGUgPSBmaWVsZC5oYW5kbGU7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGFuZGxlKSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGUuYXBpLmhhbmRsZUxvYWRDb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuQ09NUE9ORU5UX0xPQUQsIGV2ZW50KTtcblxuICAgICAgICAgICAgLy8gSW5pdGlhbCBsb2FkIGNvbXBsZXRlLiBFbmFibGUgbWFya2VycyBnbG9iYWxseSBzbyBhbGwgc3Vic2VxdWVudFxuICAgICAgICAgICAgLy8gdmFsaWRhdGlvbiBmbG93cyAoc2F2ZSBjbGljaywgdmFsdWUgY2hhbmdlcywgYnV0dG9uLWRyaXZlblxuICAgICAgICAgICAgLy8gdmFsaWRhdGVBbGwpIHN1cmZhY2UgZXJyb3IgVUkuIEJhc2VGaWVsZCBzZWxmLXZhbGlkYXRpb24gZHVyaW5nXG4gICAgICAgICAgICAvLyBpbml0aWFsIGxvYWQgbG9jYWxseSBzdXBwcmVzc2VzIG1hcmtlcnMgaW4gaXRzIG93biB0cnkvZmluYWxseSxcbiAgICAgICAgICAgIC8vIHNvIHRoaXMgcmUtZW5hYmxlIGRvZXNuJ3QgY2F1c2UgYSBsb2FkLXRpbWUgZmxhc2ggZm9yIGZpZWxkc1xuICAgICAgICAgICAgLy8gdGhhdCBtb3VudCBkdXJpbmcgdGhpcyBzYW1lIGVmZmVjdCBjeWNsZS4gQXN5bmMgZGF0YSBhcnJpdmluZ1xuICAgICAgICAgICAgLy8gbGF0ZXIgd2lsbCByZS12YWxpZGF0ZSB2aWEgQmFzZUZpZWxkJ3MgW3Byb3BzLnZhbHVlcywgY29uZmlnXVxuICAgICAgICAgICAgLy8gdXNlRWZmZWN0LCB3aGljaCBhbHNvIGxvY2FsbHkgc3VwcHJlc3NlcyBtYXJrZXJzLlxuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZykgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VWYWx1ZXMocHJvcHMudmFsdWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW3Byb3BzLmNvbmZpZywgcHJvcHMudmFsdWVzXSk7XG5cbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1hc3RlclZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVEYXRhQXJyaXZlZChtYXN0ZXJWYWx1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbbWFzdGVyVmFsdWVzXSk7XG5cbiAgICAgICAgY29uc3QgZ2V0RmllbGRzRnJvbVRhYiA9ICh0YWIpID0+IHtcbiAgICAgICAgICAgIGxldCBmaWVsZHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFiUGFnZSBvZiB0YWIudGFiUGFnZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiB0YWJQYWdlLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZm9ybVNlY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkc2V0IG9mIGNvbXBvbmVudC5jb21wb25lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzID0gZmllbGRzLmNvbmNhdChmaWVsZHNldC5maWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmllbGRzO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybURhdGFPYmplY3QgPSAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgbGV0IGZvcm1WYWx1ZXMgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoYmluZGVyID09PSAnTUFQX09CSkVDVCcpIHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzID0ge307XG5cbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBtYXAgPSBkYXRhLm1hcDtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChtYXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWFwKTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG9rZW5zID0gcHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2byA9IGZvcm1WYWx1ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdG9rZW5zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRva2VuID0gdG9rZW5zW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqIDwgdG9rZW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbCh2b1t0b2tlbl0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b1t0b2tlbl0gPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvID0gdm9bdG9rZW5dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvW3Rva2VuXSA9IG1hcFtwcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzID0gZGF0YTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gZG9DbGVhcigpIHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2VycyhmYWxzZSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICBmaWVsZC5oYW5kbGUuYXBpLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbHVlcy5jdXJyZW50ID0ge307XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKHt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMubW9kZWxDaGFuZ2VIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm1vZGVsQ2hhbmdlSGFuZGxlcih7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGRvQmluZERhdGEoZGF0YSkge1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGQgPSBnZXRGaWVsZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmhhbmRsZS5hcGkudmFsdWUgPSBmaWVsZC5oYW5kbGUuYXBpLnBhcnNlVmFsdWUoZGF0YVtrZXldLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHBhcnNlVmFsdWVzKGRhdGEpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRWYWx1ZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gZ2V0VmFsdWVQYXRoKGZpZWxkLmlkLCBwYXJzZWRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIGxldCBvYmplY3RWYWx1ZSA9IHBhdGgudmFsdWVPYmplY3RbcGF0aC52YWx1ZVByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWVsZC5oYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0W3BhdGgudmFsdWVQcm9wZXJ0eV0gPSBmaWVsZC5oYW5kbGUuYXBpLnBhcnNlVmFsdWUob2JqZWN0VmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05VTEwgZmllbGQgcmVmZXJlbmNlIHdoaWxlIHBhcnNpbmcgZm9ybSB2YWx1ZSAtICcgKyBmaWVsZC5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWx1ZXMuY3VycmVudCA9IHBhcnNlZFZhbHVlcztcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmRhdGFBcnJpdmVkSGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5kYXRhQXJyaXZlZEhhbmRsZXIocGFyc2VkVmFsdWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9pZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgLy9wcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIocGFyc2VkVmFsdWVzKTtcbiAgICAgICAgICAgIC8vfVxuICAgICAgICB9XG5cbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBwYXJzZVZhbHVlcyhwcm9wcy52YWx1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbcHJvcHMudmFsdWVzXSk7XG5cbiAgICAgICAgY29uc3QgZ2V0RmllbGQgPSAoaWQpID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlbW92ZUZpZWxkID0gKGlkKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRWYWxpZGl0eS5jdXJyZW50LmRlbGV0ZShpZCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gZG9WYWxpZGF0ZVBhcmVudChmaWVsZCwgaW52YWxpZCwgdXBkYXRlRXJyb3JzID0gdHJ1ZSkge1xuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWVsZC5wYXJlbnRJZCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgaXNQYXJlbnRJbnZhbGlkID0gaW52YWxpZDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldICE9PSBmaWVsZCAmJiBmaWVsZHNbaV0ucGFyZW50SWQgPT09IGZpZWxkLnBhcmVudElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1BhcmVudEludmFsaWQgPSBpc1BhcmVudEludmFsaWQgfHwgIShVdGlscy5pc051bGwoZmllbGRzW2ldLmVycm9yKSB8fCBmaWVsZHNbaV0uZXJyb3IubGVuZ3RoID09PSAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZpZWxkUGFyZW50RXJyb3JzW2ZpZWxkLnBhcmVudElkXSA9IGlzUGFyZW50SW52YWxpZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHVwZGF0ZUVycm9ycyAmJiAhVXRpbHMuaXNOdWxsKGNvbnRhaW5lckVycm9yQ2FsbGJhY2suY3VycmVudCkgJiYgYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJFcnJvckNhbGxiYWNrLmN1cnJlbnQoZmllbGRQYXJlbnRFcnJvcnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmllbGRQYXJlbnRFcnJvcnM7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWxpZGF0ZUZpZWxkID0gKGZpZWxkLCBpZCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmIChsb2FkaW5nUmVmLmN1cnJlbnQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZmllbGQuZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgICAgIGxldCBpbnZhbGlkID0gZmllbGQuaGFuZGxlLmFwaS52YWxpZGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnZhbHVlcy5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICBbaWRdOiB2YWx1ZVxuICAgICAgICAgICAgICAgIH0sIHZhbHVlKSA9PT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZG9WYWxpZGF0ZVBhcmVudChmaWVsZCwgaW52YWxpZCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaW52YWxpZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZ2V0VmFsdWVQYXRoID0gKGlkLCB2YWxzKSA9PiB7XG4gICAgICAgICAgICBsZXQgcGF0aCA9IHt9O1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZXMgPSB2YWxzO1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbCh2YWxzKSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMgPSB2YWx1ZXMuY3VycmVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY3VycmVudFZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBsZXQgdG9rZW5zID0gaWQuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0ID0gY3VycmVudFZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgcGF0aC52YWx1ZVByb3BlcnR5ID0gdG9rZW5zWzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rZW5zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZvID0gY3VycmVudFZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh2b1t0b2tlbnNbaV1dKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvID0gdm9bdG9rZW5zW2ldXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9bdG9rZW5zW2ldXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvID0gdm9bdG9rZW5zW2ldXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC52YWx1ZU9iamVjdCA9IHZvO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC52YWx1ZVByb3BlcnR5ID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZG9IYW5kbGVDaGFuZ2UgPSAoaWQsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcGF0aCA9IGdldFZhbHVlUGF0aChpZCwgbnVsbCk7XG5cbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpICYmICFVdGlscy5pc051bGwocGF0aC52YWx1ZVByb3BlcnR5KSAmJiBsb2FkaW5nUmVmLmN1cnJlbnQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcGF0aC52YWx1ZU9iamVjdFtwYXRoLnZhbHVlUHJvcGVydHldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IGludmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsZXQgZmllbGQgPSBnZXRGaWVsZChpZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52YWxpZCA9IHZhbGlkYXRlRmllbGQoZmllbGQsIGlkLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXBGaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0aW9uR3JvdXAgPSBncm91cEZpZWxkLmhhbmRsZS5hcGkuZ2V0VmFsaWRhdGlvbkdyb3VwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh2YWxpZGF0aW9uR3JvdXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkICE9PSBncm91cEZpZWxkICYmIHZhbGlkYXRpb25Hcm91cCA9PT0gZmllbGQuaGFuZGxlLmFwaS5nZXRWYWxpZGF0aW9uR3JvdXAoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXBGaWVsZElkID0gZ3JvdXBGaWVsZC5oYW5kbGUuYXBpLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JpZEZpZWxkUGF0aCA9IGdldFZhbHVlUGF0aChncm91cEZpZWxkSWQsIG51bGwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGdyaWRGaWVsZFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXBGaWVsZFZhbCA9IGdyaWRGaWVsZFBhdGgudmFsdWVPYmplY3RbZ3JpZEZpZWxkUGF0aC52YWx1ZVByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSRS1WYWxpZGF0aW5nIGZvcm0nLCBncm91cEZpZWxkVmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlRmllbGQoZ3JvdXBGaWVsZCwgZ3JvdXBGaWVsZElkLCBncm91cEZpZWxkVmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKGludmFsaWQgPyBudWxsIDogdmFsdWVzLmN1cnJlbnQsIGlkLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMubW9kZWxDaGFuZ2VIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5tb2RlbENoYW5nZUhhbmRsZXIodmFsdWVzLmN1cnJlbnQsIGlkLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnMoZmFsc2UpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLnByb2Nlc3NTeXN0ZW1HZW5lcmF0ZWRTdWJzY3JpcHRpb25zKHByb3BzLmNvbmZpZy5pZCk7XG5cbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgdmFsdWVzLmN1cnJlbnQpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuVkFMVUVfQ0hBTkdFLCBldmVudCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2V0RmllbGRFcnJvciA9IChpZCwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGxldCBmaWVsZCA9IGdldEZpZWxkKGlkKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGZpZWxkLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYWRkRmllbGQgPSAoaWQsIGhhbmRsZSwgcGFyZW50SWQsIGJpbmRWYWx1ZVRvRm9ybSkgPT4ge1xuICAgICAgICAgICAgbGV0IGZpZWxkID0gZ2V0RmllbGQoaWQpO1xuICAgICAgICAgICAgbGV0IGVycm9yID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBmaWVsZC5lcnJvcjtcbiAgICAgICAgICAgICAgICByZW1vdmVGaWVsZChpZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZpZWxkID0ge307XG4gICAgICAgICAgICBmaWVsZC5pZCA9IGlkO1xuICAgICAgICAgICAgZmllbGQuaGFuZGxlID0gaGFuZGxlO1xuICAgICAgICAgICAgZmllbGQuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIGZpZWxkLmJpbmRWYWx1ZVRvRm9ybSA9IGJpbmRWYWx1ZVRvRm9ybTtcbiAgICAgICAgICAgIGZpZWxkLnBhcmVudElkID0gcGFyZW50SWQ7XG4gICAgICAgICAgICBmaWVsZHMucHVzaChmaWVsZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZXMuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHBhcnNlVmFsdWVzKHZhbHVlcy5jdXJyZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UgPSAobmFtZSwgb3B0aW9ucywgc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZih0eXBlb2Ygc2VsZWN0aW9uID09PSAnb2JqZWN0JyAmJiAoVXRpbHMuaXNOdWxsKG9wdGlvbnMpIHx8IG9wdGlvbnMubGVuZ3RoID09PSAwKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzZWxlY3RlZFZhbHVlID0gbnVsbDtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnNbaV0uaWQgPT09IHNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0gb3B0aW9uc1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRvSGFuZGxlQ2hhbmdlKG5hbWUsIHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkVmFsdWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdXBkYXRlVmFsdWUgPSAobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcih7XG4gICAgICAgICAgICAgICAgLi4udmFsdWVzLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgW25hbWVdOiB2YWx1ZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmKHByb3BzLm1vZGVsQ2hhbmdlSGFuZGxlcikge1xuICAgICAgICAgICAgICAgIHByb3BzLm1vZGVsQ2hhbmdlSGFuZGxlcih7XG4gICAgICAgICAgICAgICAgICAgIC4uLnZhbHVlcy5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV06IHZhbHVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gcmVuZGVyKGZvcm0pIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKFV0aWxzLmlzTnVsbChmb3JtLnNlY3Rpb25zKSB8fCBmb3JtLnNlY3Rpb25zLmxlbmd0aCA9PT0gMCkgP1xuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHNlY3Rpb24uaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLmlkID0gc2VjdGlvbkNvdW50ZXIgKyAnLWZvcm0tc2VjdGlvbic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e3NlY3Rpb25Db3VudGVyKyt9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlY3Rpb24ga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17c2VjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlU2VjdGlvbkhhbmRsZShzZWN0aW9uKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIVV0aWxzLmlzTnVsbChwcm9wcy5oYW5kbGUuYXBpKSA/IHByb3BzLmhhbmRsZS5hcGkgOiBhcGkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17dmFsdWVzLmN1cnJlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHZpc2libGUgJiZcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtwcm9wcy5jbGFzc05hbWV9IGlkPXtwcm9wcy5jb25maWcuaWR9IHN0eWxlPXtcbiAgICAgICAgICAgICAgICBwcm9wcy5jbGFzc05hbWUgPT09ICdkZWZhdWx0Rm9ybScgP1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tZXJnZVN0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMTZweCAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogJzcwdmgnXG4gICAgICAgICAgICAgICAgICAgIH0sIHByb3BzLmNvbmZpZylcbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICB9PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuaWQpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcihwcm9wcy5jb25maWcpXG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PkVSUk9SOiBBIGZvcm0gbXVzdCBoYXZlIGFuIElEPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+KTtcbiAgICB9KVxuO1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FB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
|
|
721
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfVXRpbHMiLCJfU2VjdGlvbiIsIl9SZXN0U2VydmljZSIsIl9hc3luY011dGV4IiwiX09ic2VydmFibGUiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1NlcnZpY2VDYWxsQWN0aW9uSGFuZGxlciIsIl9EeW5hbWljSlMiLCJfRXZlbnRUeXBlIiwiX0V2ZW50IiwiX2NsZWFyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJ0aGVtZSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJmbGV4V3JhcCIsIndpZHRoIiwidmVydGljYWxBbGlnbiIsInNlbGVjdCIsIm1hcmdpbiIsInNwYWNpbmciLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsInNlbGVjdEVtcHR5IiwibWFyZ2luVG9wIiwicm9vdCIsIkZvcm0iLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsInZhbHVlcyIsInVzZVJlZiIsIlV0aWxzIiwiaXNOdWxsIiwibWFzdGVyVmFsdWVzIiwic2V0TWFzdGVyVmFsdWVzIiwidXNlU3RhdGUiLCJjb25maWciLCJzZXRDb25maWciLCJwYXJzZUNvbmZpZyIsInZpZXdJZCIsImJpbmRlciIsImZpZWxkcyIsImNvbnRhaW5lckVycm9yQ2FsbGJhY2siLCJzZWN0aW9uSGFuZGxlcyIsImZpZWxkUGFyZW50RXJyb3JzIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJsb2FkaW5nUmVmIiwiZmllbGRWYWxpZGl0eSIsIk1hcCIsInNlY3Rpb25Db3VudGVyIiwiYXBpIiwiaWQiLCJkb1VwZGF0ZVZhbHVlIiwibmFtZSIsInVwZGF0ZVZhbHVlIiwiY2xlYXIiLCJkb0NsZWFyIiwic2V0VmFsdWUiLCJkb0hhbmRsZUNoYW5nZSIsImhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UiLCJvcHRpb25zIiwic2VsZWN0ZWRJZCIsImhhbmRsZUNoYW5nZSIsImdldFZhbHVlUGF0aCIsImFkZEZpZWxkIiwicmVmIiwicGFyZW50SWQiLCJiaW5kVmFsdWVUb0Zvcm0iLCJyZW1vdmVGaWVsZCIsInNldEZpZWxkVmFsaWRpdHkiLCJyZXN1bHQiLCJjdXJyZW50Iiwic2V0IiwiY2xlYXJGaWVsZFZhbGlkaXR5IiwiZGVsZXRlIiwidmFsaWRhdGVBbGwiLCJmaWVsZCIsImhhbmRsZSIsInBhdGgiLCJjdXJyZW50VmFsdWUiLCJ2YWx1ZU9iamVjdCIsInZhbHVlUHJvcGVydHkiLCJ2YWxpZGF0ZSIsImZpcnN0SW52YWxpZCIsInYiLCJnZXQiLCJ2YWxpZCIsImRvVmFsaWRhdGVQYXJlbnQiLCJzY3JvbGxUbyIsImFwcGxpY2F0aW9uTWFuYWdlciIsImlzRm9ybU1hcmtlcnNFbmFibGVkIiwibG9hZERhdGEiLCJhY3Rpb25Db25maWciLCJldmVudCIsImRhdGEiLCJiaW5kRGF0YSIsImRvQmluZERhdGEiLCJ2YWxpZGF0ZVBhcmVudCIsImludmFsaWQiLCJnZXRGaWVsZCIsImZpZWxkRGF0YUJpbmRpbmdzIiwiZmllbGROYW1lcyIsInNlY3Rpb25zIiwic2VjdGlvbiIsImoiLCJjb21wb25lbnRzIiwiY29tcG9uZW50IiwidHlwZSIsImdldEZpZWxkc0Zyb21UYWIiLCJrIiwiZGF0YUJpbmRpbmciLCJzZXRDb250YWluZXJFcnJvckhhbmRsZXIiLCJjYWxsYmFjayIsIm1vZGVsIiwicGFyc2VWYWx1ZXMiLCJ0cmFuc2Zvcm1EYXRhT2JqZWN0IiwiZm9ybVZhbGlkIiwidW5kZWZpbmVkIiwib25WYWxpZGl0eUNoYW5nZSIsIm1lc3NhZ2UiLCJwYXJzZVZhbHVlIiwic2V0RmllbGRFcnJvciIsImVycm9yIiwiZ2V0Q2hpbGRyZW4iLCJjaGlsZHJlbiIsIm1vcmVDaGlsZHJlbiIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJzZWN0aW9uSGFuZGxlIiwiY2hpbGQiLCJyZWZyZXNoIiwicGFyc2VkQ29uZmlnIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsImNyZWF0ZVNlY3Rpb25IYW5kbGUiLCJ1cGRhdGVWaWV3VGl0bGUiLCJ2aWV3IiwiZ2V0VmlldyIsInRpdGxlIiwiaW5jbHVkZXMiLCJ1cGRhdGVBcHBCYXJUaXRsZSIsImhhbmRsZURhdGFBcnJpdmVkIiwiRXZlbnQiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJEQVRBX0FSUklWRUQiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsImV2ZW50Q29uZmlnIiwiY29tcG9uZW50Q29uZmlnIiwiZXZlbnREYXRhIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwiY29tcG9uZW50VmFsdWUiLCJyZXNvbHZlUGFyYW1ldGVyQ29uZmlnVmFsdWUiLCJpbnZva2VScGMiLCJ0aGVuIiwiY29uc29sZSIsImNhdGNoIiwiZXJyb3JUeXBlIiwicHVibGlzaEVycm9yTWVzc2FnZSIsInNlcnZpY2VDYWxsQWN0aW9uSGFuZGxlciIsImV4ZWN1dGUiLCJwYXJhbWV0ZXIiLCJpc0V4cHJlc3Npb24iLCJmaWxsRXZlbnREYXRhVmFsdWUiLCJpc0V2ZW50RGF0YSIsInRvU3RyaW5nIiwic3RhcnRzV2l0aCIsImdldFByb3BlcnR5Q2hhaW5QYXRoIiwiYWRkU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9uIiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdCIsImNvbmNhdCIsInZhbCIsIm1hcCIsInJlc29sdmVFeHByZXNzaW9uVmFsdWUiLCJ1c2VFZmZlY3QiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwic3Vic2NyaXB0aW9ucyIsImF1dG9Mb2FkRGF0YSIsImdldENvbXBvbmVudEF0dHJpYnV0ZSIsInN1YnNjcmlwdGlvbiIsImV2ZW50VHlwZSIsIkNPTVBPTkVOVF9MT0FEIiwiYWN0aW9ucyIsImFjdGlvblR5cGUiLCJhZGRTdWJzY3JpcHRpb25zIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsImhhbmRsZUxvYWRDb21wbGV0ZSIsImVuYWJsZUZvcm1NYXJrZXJzIiwiY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyIsInRhYiIsInRhYlBhZ2UiLCJ0YWJQYWdlcyIsImZpZWxkc2V0IiwiZm9ybVZhbHVlcyIsInRva2VucyIsInNwbGl0Iiwidm8iLCJ0b2tlbiIsInZhbHVlQ2hhbmdlSGFuZGxlciIsIm1vZGVsQ2hhbmdlSGFuZGxlciIsImtleSIsInBhcnNlZFZhbHVlcyIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsIm9iamVjdFZhbHVlIiwiZGF0YUFycml2ZWRIYW5kbGVyIiwic3BsaWNlIiwidXBkYXRlRXJyb3JzIiwiaXNQYXJlbnRJbnZhbGlkIiwidmFsaWRhdGVGaWVsZCIsInZhbHMiLCJjdXJyZW50VmFsdWVzIiwiZ3JvdXBGaWVsZCIsInZhbGlkYXRpb25Hcm91cCIsImdldFZhbGlkYXRpb25Hcm91cCIsImdyb3VwRmllbGRJZCIsImdyaWRGaWVsZFBhdGgiLCJncm91cEZpZWxkVmFsIiwibG9nIiwiVkFMVUVfQ0hBTkdFIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRWYWx1ZSIsInJlbmRlciIsImZvcm0iLCJjcmVhdGVFbGVtZW50Iiwia2V5SGFuZGxlciIsImRpc2FibGVkIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJtZXJnZVN0eWxlcyIsInBhZGRpbmciLCJvdmVyZmxvdyIsIm1heEhlaWdodCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL0Zvcm0uanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge21ha2VTdHlsZXN9IGZyb20gJ0BtdWkvc3R5bGVzJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgU2VjdGlvbiBmcm9tICcuL1NlY3Rpb24nO1xuaW1wb3J0ICcuL0Zvcm0uY3NzJztcbmltcG9ydCB7aW52b2tlUnBjfSBmcm9tICcuLi8uLi9SZXN0U2VydmljZSc7XG5pbXBvcnQge011dGV4fSBmcm9tICdhc3luYy1tdXRleCc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IHNlcnZpY2VDYWxsQWN0aW9uSGFuZGxlciBmcm9tICcuLi8uLi9ldmVudC9TZXJ2aWNlQ2FsbEFjdGlvbkhhbmRsZXInO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tICcuLi8uLi9EeW5hbWljSlMnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi8uLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCB7Y2xlYXJ9IGZyb20gXCJAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQvZGlzdC9jbGVhclwiO1xuXG5jb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKHRoZW1lID0+ICh7XG4gICAgY29udGFpbmVyOiB7XG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgJyYgdHIgdGQnOiB7XG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJ1xuICAgICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3Q6IHtcbiAgICAgICAgbWFyZ2luOiB0aGVtZS5zcGFjaW5nKDEpLFxuICAgICAgICBtaW5XaWR0aDogMTIwLFxuICAgICAgICBtaW5IZWlnaHQ6IDQ4XG4gICAgfSxcbiAgICBzZWxlY3RFbXB0eToge1xuICAgICAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMiksXG4gICAgfSxcbiAgICByb290OiB7fVxufSkpO1xuXG5jb25zdCBGb3JtID0gUmVhY3QubWVtbygocHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gUmVhY3QudXNlUmVmKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVzKSA/IHByb3BzLnZhbHVlcyA6IHt9KTtcbiAgICAgICAgY29uc3QgW21hc3RlclZhbHVlcywgc2V0TWFzdGVyVmFsdWVzXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgICAgICBjb25zdCBbY29uZmlnLCBzZXRDb25maWddID0gUmVhY3QudXNlU3RhdGUoVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpKTtcbiAgICAgICAgY29uc3QgW2JpbmRlcl0gPSBSZWFjdC51c2VTdGF0ZShVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmJpbmRlcikgPyAnUExBSU5fT0JKRUNUJyA6IHByb3BzLmNvbmZpZy5iaW5kZXIpO1xuICAgICAgICBjb25zdCBbZmllbGRzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRXJyb3JDYWxsYmFjayA9IFJlYWN0LnVzZVJlZigpO1xuICAgICAgICBjb25zdCBbc2VjdGlvbkhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgICAgICBjb25zdCBbZmllbGRQYXJlbnRFcnJvcnNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgICAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcbiAgICAgICAgY29uc3QgbG9hZGluZ1JlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgICAgICAgLy8gVmFsaWRpdHkgcmVnaXN0ZXI6IE1hcDxmaWVsZElkLCB7IHZhbGlkLCBtZXNzYWdlLCBmb3JjZU1hcmtlciB9Pi5cbiAgICAgICAgLy8gU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgXCJpcyB0aGlzIGZpZWxkIHZhbGlkP1wiLiBCYXNlRmllbGQgd3JpdGVzXG4gICAgICAgIC8vIGhlcmUgZnJvbSBkb1ZhbGlkYXRpb247IGZvcm0udmFsdWUgcmVhZHMgaGVyZSB3aXRob3V0IGludm9raW5nIGFueVxuICAgICAgICAvLyBmaWVsZCBtZXRob2RzIChraWxscyB0aGUgYmktZGlyZWN0aW9uYWwgcmVuZGVyLXRpbWUgY2hhaW4gdGhhdFxuICAgICAgICAvLyBwcm9kdWNlZCBSZWFjdCAjMTg1KS5cbiAgICAgICAgY29uc3QgZmllbGRWYWxpZGl0eSA9IFJlYWN0LnVzZVJlZihuZXcgTWFwKCkpO1xuICAgICAgICBsZXQgc2VjdGlvbkNvdW50ZXIgPSAwO1xuXG4gICAgICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG9VcGRhdGVWYWx1ZTogKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVWYWx1ZShuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkb0NsZWFyKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZTogKGlkLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkb0hhbmRsZUNoYW5nZShpZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0SXRlbUNoYW5nZTogKG5hbWUsIG9wdGlvbnMsIHNlbGVjdGVkSWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UobmFtZSwgb3B0aW9ucywgc2VsZWN0ZWRJZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U6IChpZCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZG9IYW5kbGVDaGFuZ2UoaWQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldFZhbHVlUGF0aDogKGlkLCB2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlUGF0aChpZCwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFkZEZpZWxkOiAoaWQsIHJlZiwgcGFyZW50SWQsIGJpbmRWYWx1ZVRvRm9ybSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRkRmllbGQoaWQsIHJlZiwgcGFyZW50SWQsIGJpbmRWYWx1ZVRvRm9ybSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZW1vdmVGaWVsZDogKGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUZpZWxkKGlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldEZpZWxkVmFsaWRpdHk6IChpZCwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsaWRpdHkuY3VycmVudC5zZXQoaWQsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjbGVhckZpZWxkVmFsaWRpdHk6IChpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbGlkaXR5LmN1cnJlbnQuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlQWxsOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEV4cGxpY2l0IFwiZm9yY2UtdmFsaWRhdGUgZXZlcnkgZmllbGRcIiBjb21tYW5kLiBSZXBsYWNlcyB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gb2xkIGhhY2sgb2YgcmVhZGluZyBmb3JtLnZhbHVlIHB1cmVseSBmb3IgaXRzIHNpZGUgZWZmZWN0cy5cbiAgICAgICAgICAgICAgICAgICAgLy8gRmllbGRzIHdyaXRlIGludG8gZmllbGRWYWxpZGl0eSB2aWEgZG9WYWxpZGF0aW9uIGFzIGEgc2lkZVxuICAgICAgICAgICAgICAgICAgICAvLyBlZmZlY3Qgb2YgdmFsaWRhdGU7IHdlIHRoZW4gd2FsayB0aGUgcmVnaXN0ZXIgZm9yIGludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgLy8gZmllbGRzIHRvIGRyaXZlIFVYIChzY3JvbGxUbyBmaXJzdCwgcmVmcmVzaCBjb250YWluZXIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGJhY2spIOKAlCBzYW1lIFVYIHRoZSBnZXR0ZXIgdXNlZCB0byBwcm92aWRlLCBub3cgb3B0LWluLlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmllbGQuaGFuZGxlKSAmJiAhVXRpbHMuaXNOdWxsKGZpZWxkLmhhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFzcyB0aGUgYWN0dWFsIGN1cnJlbnQgdmFsdWUgc28gZG9WYWxpZGF0aW9uJ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycykgY2FjaGUga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmbGVjdHMgcmVhbGl0eS4gV2l0aG91dCB0aGlzIHdlIHdlcmUgcGFzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bGwsIHdoaWNoIG1hZGUgY2FjaGUgaGl0cyBvcGFxdWUgaW4gbG9ncyBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZWQgVXRpbHMudmFsaWRhdGVGaWVsZCB0byBmYWxsIGJhY2sgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZXNbaWRdIGV2ZXJ5IHRpbWUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGdldFZhbHVlUGF0aChmaWVsZC5pZCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcGF0aC52YWx1ZU9iamVjdFtwYXRoLnZhbHVlUHJvcGVydHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5oYW5kbGUuYXBpLnZhbGlkYXRlKHZhbHVlcy5jdXJyZW50LCBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdEludmFsaWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLmJpbmRWYWx1ZVRvRm9ybSA9PT0gZmFsc2UpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IGZpZWxkVmFsaWRpdHkuY3VycmVudC5nZXQoZmllbGQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgJiYgdi52YWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1ZhbGlkYXRlUGFyZW50KGZpZWxkLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0SW52YWxpZCA9PT0gbnVsbCkgZmlyc3RJbnZhbGlkID0gZmllbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmlyc3RJbnZhbGlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIVV0aWxzLmlzTnVsbChmaXJzdEludmFsaWQuaGFuZGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIVV0aWxzLmlzTnVsbChmaXJzdEludmFsaWQuaGFuZGxlLmFwaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiBmaXJzdEludmFsaWQuaGFuZGxlLmFwaS5zY3JvbGxUbyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbnZhbGlkLmhhbmRsZS5hcGkuc2Nyb2xsVG8oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb250YWluZXJFcnJvckNhbGxiYWNrLmN1cnJlbnQpICYmIGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJFcnJvckNhbGxiYWNrLmN1cnJlbnQoZmllbGRQYXJlbnRFcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZERhdGEoYWN0aW9uQ29uZmlnLCBjb25maWcsIGV2ZW50ID8gZXZlbnQuZGF0YSA6IG51bGwpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmluZERhdGE6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRvQmluZERhdGEoZGF0YSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVBhcmVudDogKGlkLCBpbnZhbGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRvVmFsaWRhdGVQYXJlbnQoZ2V0RmllbGQoaWQpLCBpbnZhbGlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldCBmaWVsZERhdGFCaW5kaW5ncygpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkTmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5jb25maWcuc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWN0aW9uID0gcHJvcHMuY29uZmlnLnNlY3Rpb25zW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzZWN0aW9uLmNvbXBvbmVudHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcG9uZW50ID0gc2VjdGlvbi5jb21wb25lbnRzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZHMgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAndGFiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHMgPSBnZXRGaWVsZHNGcm9tVGFiKGNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzID0gY29tcG9uZW50LmZpZWxkcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGZpZWxkcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGQgPSBmaWVsZHNba107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZXMucHVzaCghVXRpbHMuaXNOdWxsKGZpZWxkLmRhdGFCaW5kaW5nKSA/IGZpZWxkLmRhdGFCaW5kaW5nIDogZmllbGQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZE5hbWVzO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0Q29udGFpbmVyRXJyb3JIYW5kbGVyKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckVycm9yQ2FsbGJhY2suY3VycmVudCA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0IG1vZGVsKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVzLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXQgbW9kZWwobW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChtb2RlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlVmFsdWVzKHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hc3RlclZhbHVlcyh7fSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVZhbHVlcyh0cmFuc2Zvcm1EYXRhT2JqZWN0KG1vZGVsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXN0ZXJWYWx1ZXMobW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgcmV0dXJucyB2YWx1ZXMuY3VycmVudCBpZmYgZXZlcnkgYm91bmQgZmllbGQnc1xuICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBlbnRyeSBpcyB2YWxpZC4gU2lkZSBlZmZlY3Q6IGludm9rZXMgZWFjaFxuICAgICAgICAgICAgICAgICAgICAvLyBmaWVsZCdzIGNhY2hlZCBvblZhbGlkaXR5Q2hhbmdlIHRvIHJlZnJlc2ggbWFya2VyIFVJXG4gICAgICAgICAgICAgICAgICAgIC8vIGZyb20gcmVnaXN0ZXIgc3RhdGUg4oCUIG5vIHJlLXZhbGlkYXRpb24sIG5vIHNldEZpZWxkVmFsaWRpdHlcbiAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGVzLiBTeW1tZXRyaWMgKGZpcmVzIGZvciB2YWxpZCArIGludmFsaWQpIHNvIGEgZmllbGRcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hvc2UgVUkgZ290IG91dCBvZiBzeW5jIHdpdGggdGhlIHJlZ2lzdGVyIChzdGFsZSBoYXNFcnJvclxuICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHNvbWUgbm9uLWRvSGFuZGxlQ2hhbmdlIHBhdGgpIGlzIHJlcGFpbnRlZCB0byBtYXRjaC5cbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0U3RhdGVzIGFyZSBpZGVtcG90ZW50IChSZWFjdCBiYWlscyBvbiBzYW1lIHZhbHVlKSwgc29cbiAgICAgICAgICAgICAgICAgICAgLy8gcmVwZWF0ZWQgZm9ybS52YWx1ZSByZWFkcyBjb3N0IHplcm8gcmUtcmVuZGVycyBhZnRlciB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgcGFpbnQuIFRoZSBtYXJrZXJzIGdhdGUgaW5zaWRlIHRoZSBjYWxsYmFjayBlbnN1cmVzXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlZnJlc2hlcyBvbmx5IHBhaW50IHdoZW4gZ2xvYmFsIG1hcmtlcnMgYXJlIGVuYWJsZWQuXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3JtVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZGluZ1JlZi5jdXJyZW50ID09PSBmYWxzZSAmJiB2YWx1ZXMuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuYmluZFZhbHVlVG9Gb3JtID09PSBmYWxzZSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IGZpZWxkVmFsaWRpdHkuY3VycmVudC5nZXQoZmllbGQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1WYWxpZCA9IGZvcm1WYWxpZCAmJiAodiA9PT0gdW5kZWZpbmVkIHx8IHYudmFsaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHR5cGVvZiB2Lm9uVmFsaWRpdHlDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi5vblZhbGlkaXR5Q2hhbmdlKHYudmFsaWQsIHYubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE91dGJvdW5kLW5vcm1hbGl6ZSB0aGUgc3RvcmVkIHZhbHVlIHNvIG5vbi1zdHJpbmcgZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0eXBlcyAoRGF0ZSBmb3IgRGF0ZVBpY2tlciwgbG9va3VwIG9iamVjdHMsIGV0Yy4pIHNlcmlhbGl6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHdpcmUgZm9ybWF0IG9uIEpTT04uc3RyaW5naWZ5LiBSZXN0b3JlcyB0aGUgYmVoYXZpb3IgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2xkIGdldHRlciBwcm92aWRlZCB2aWEgcGFyc2VWYWx1ZShfLCBmYWxzZSkuIElkZW1wb3RlbnQgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHlwZWQgdmFsdWVQYXJzZXJzIOKAlCByZXBlYXQgcmVhZHMgc2VlIHRoZSBhbHJlYWR5LW5vcm1hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBhbmQgcmUtZW1pdCB0aGUgc2FtZSBzdHJpbmcuIHBhcnNlVmFsdWUgaXMgYSBwdXJlIEpTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3JtIHdpdGggbm8gUmVhY3Qgc3RhdGUgc2lkZSBlZmZlY3RzLCBzbyB1bmxpa2UgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsaWRhdGUgY2FsbCB3ZSByZW1vdmVkIGluIHNlcT00NCwgdGhpcyBjYW4ndCBkcml2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmUtcmVuZGVyIGxvb3AuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmllbGQuaGFuZGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhVXRpbHMuaXNOdWxsKGZpZWxkLmhhbmRsZS5hcGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiBmaWVsZC5oYW5kbGUuYXBpLnBhcnNlVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGdldFZhbHVlUGF0aChmaWVsZC5pZCwgdmFsdWVzLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0W3BhdGgudmFsdWVQcm9wZXJ0eV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmhhbmRsZS5hcGkucGFyc2VWYWx1ZShwYXRoLnZhbHVlT2JqZWN0W3BhdGgudmFsdWVQcm9wZXJ0eV0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtVmFsaWQgPyB2YWx1ZXMuY3VycmVudCA6IG51bGw7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yOiAoaWQsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRGaWVsZEVycm9yKGlkLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goZmllbGQuaGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb3JlQ2hpbGRyZW4gPSBmaWVsZC5oYW5kbGUuYXBpLmdldENoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1vcmVDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2gobW9yZUNoaWxkcmVuW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc2VjdGlvbkhhbmRsZXMpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWN0aW9uSGFuZGxlID0gc2VjdGlvbkhhbmRsZXNbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChzZWN0aW9uSGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygc2VjdGlvbkhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVmcmVzaCgpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzZWN0aW9uSGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlY3Rpb25IYW5kbGUgPSBzZWN0aW9uSGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbkhhbmRsZS5hcGkucmVmcmVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25IYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZShVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY3JlYXRlU2VjdGlvbkhhbmRsZSA9IChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHNlY3Rpb25IYW5kbGVzW3NlY3Rpb24uaWRdKSkge1xuICAgICAgICAgICAgICAgIGxldCBoYW5kbGUgPSB7fTtcbiAgICAgICAgICAgICAgICBzZWN0aW9uSGFuZGxlc1tzZWN0aW9uLmlkXSA9IGhhbmRsZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2VjdGlvbkhhbmRsZXNbc2VjdGlvbi5pZF07XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlVmlld1RpdGxlKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLnZpZXdJZCkge1xuICAgICAgICAgICAgICAgIGxldCB2aWV3ID0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFZpZXcocHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICBpZiAodmlldykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB2aWV3LmNvbmZpZy50aXRsZTtcblxuICAgICAgICAgICAgICAgICAgICBpZih0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlLmluY2x1ZGVzKHByb3BzLmNvbmZpZy5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIudXBkYXRlQXBwQmFyVGl0bGUodmlldy5jb25maWcuaWQsIHRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZURhdGFBcnJpdmVkKGRhdGEpIHtcbiAgICAgICAgICAgIHVwZGF0ZVZpZXdUaXRsZSgpO1xuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChkYXRhKSkge1xuICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZGF0YSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuREFUQV9BUlJJVkVELCBldmVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5wcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyhwcm9wcy5jb25maWcuaWQpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMoZmllbGQuaGFuZGxlLmFwaS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsb2FkRGF0YShldmVudENvbmZpZywgY29tcG9uZW50Q29uZmlnLCBldmVudERhdGEgPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgc2VydmljZSA9ICFVdGlscy5pc051bGwoY29tcG9uZW50Q29uZmlnLmRhdGFTZXJ2aWNlKSA/IGNvbXBvbmVudENvbmZpZy5kYXRhU2VydmljZSA6XG4gICAgICAgICAgICAgICAgZXZlbnRDb25maWcgIT09IG51bGwgPyBldmVudENvbmZpZy5kYXRhU2VydmljZSA6IG51bGw7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50VmFsdWUgPSAhVXRpbHMuaXNOdWxsKGNvbXBvbmVudENvbmZpZy52YWx1ZSkgPyBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlKGNvbXBvbmVudENvbmZpZy52YWx1ZSwgZXZlbnREYXRhKSA6XG4gICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChldmVudENvbmZpZykgPyBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlKGV2ZW50Q29uZmlnLnZhbHVlLCBldmVudERhdGEpIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2VydmljZSkpIHtcbiAgICAgICAgICAgICAgICBkb0NsZWFyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UudHlwZSA9PT0gJ3JwYycpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlUnBjKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHByb3BzLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZDogcHJvcHMudmlld0lkXG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlVmFsdWVzKHRyYW5zZm9ybURhdGFPYmplY3QocmVzdWx0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hc3RlclZhbHVlcyhyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLmVycm9yVHlwZSA9PT0gJ0lOVkFMSURfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURhdGFBcnJpdmVkKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnB1Ymxpc2hFcnJvck1lc3NhZ2UoZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGV2ZW50Q29uZmlnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRDb25maWcgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50Q29uZmlnLnNlcnZpY2UgPSBzZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDogSW1wbGVtZW50IHRoZSBpbnZhbGlkIHBhcmFtZW50ZXIgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZUNhbGxBY3Rpb25IYW5kbGVyLmV4ZWN1dGUoZXZlbnRDb25maWcsIG51bGwsIG51bGwsIHByb3BzLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VWYWx1ZXModHJhbnNmb3JtRGF0YU9iamVjdChkYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hc3RlclZhbHVlcyhkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIChwYXJhbWV0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEYXRhQXJyaXZlZChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb21wb25lbnRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhcHBsaWNhdGlvbk1hbmFnZXIuaXNFeHByZXNzaW9uKGNvbXBvbmVudFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50VmFsdWUgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZmlsbEV2ZW50RGF0YVZhbHVlKGNvbXBvbmVudFZhbHVlLCBldmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzRXZlbnREYXRhID0gY29tcG9uZW50VmFsdWUudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0c1dpdGgoJyRldmVudC5kYXRhJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaXNFeHByZXNzaW9uKGNvbXBvbmVudFZhbHVlKSAmJiAhaXNFdmVudERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoID0gVXRpbHMuZ2V0UHJvcGVydHlDaGFpblBhdGgoY29tcG9uZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGF0aC52YWx1ZU9iamVjdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9uKHByb3BzLnZpZXdJZCwgcHJvcHMudmlld0lkLCBwcm9wcy5jb25maWcuaWQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQoYCR7cHJvcHMuY29uZmlnLmlkfVZhbHVlRXZhbHVhdG9yYCwgY29tcG9uZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kZXIgPT09ICdNQVBfT0JKRUNUJyAmJiBVdGlscy5pc051bGwodmFsdWUubWFwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5tYXAgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VWYWx1ZXModHJhbnNmb3JtRGF0YU9iamVjdCh2YWwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hc3RlclZhbHVlcyh2YWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gaXNFdmVudERhdGEgPyBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUV4cHJlc3Npb25WYWx1ZShjb21wb25lbnRWYWx1ZSwgZXZlbnREYXRhKSA6IGNvbXBvbmVudFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRlciA9PT0gJ01BUF9PQkpFQ1QnICYmIFV0aWxzLmlzTnVsbChjb21wb25lbnRWYWx1ZS5tYXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLm1hcCA9IGNvbXBvbmVudFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVZhbHVlcyh0cmFuc2Zvcm1EYXRhT2JqZWN0KHZhbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWFzdGVyVmFsdWVzKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVWaWV3VGl0bGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgICAgICAgICAgbGV0IGV2ZW50SGFuZGxpbmdDb25maWcgPSBVdGlscy5pc051bGwoY29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWcpID8ge30gOiBjb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZztcbiAgICAgICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpID8gW10gOiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnM7XG5cbiAgICAgICAgICAgIGxldCBhdXRvTG9hZERhdGEgPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29uZmlnLCAnYXV0b0xvYWREYXRhJywgbnVsbCk7XG4gICAgICAgICAgICBpZiAoYXV0b0xvYWREYXRhID09PSBudWxsIHx8IGF1dG9Mb2FkRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBzdWJzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uVHlwZTogJ2xvYWREYXRhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZURhdGFBcnJpdmVkKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTeXN0ZW1TdWJzY3JpcHRpb25zKHByb3BzLnZpZXdJZCwgY29uZmlnKTtcbiAgICAgICAgICAgIHNldENvbmZpZyhjb25maWcpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgICAgICAgIGxldCBoYW5kbGUgPSBmaWVsZC5oYW5kbGU7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGFuZGxlKSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGUuYXBpLmhhbmRsZUxvYWRDb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuQ09NUE9ORU5UX0xPQUQsIGV2ZW50KTtcblxuICAgICAgICAgICAgLy8gSW5pdGlhbCBsb2FkIGNvbXBsZXRlLiBFbmFibGUgbWFya2VycyBnbG9iYWxseSBzbyBhbGwgc3Vic2VxdWVudFxuICAgICAgICAgICAgLy8gdmFsaWRhdGlvbiBmbG93cyAoc2F2ZSBjbGljaywgdmFsdWUgY2hhbmdlcywgYnV0dG9uLWRyaXZlblxuICAgICAgICAgICAgLy8gdmFsaWRhdGVBbGwpIHN1cmZhY2UgZXJyb3IgVUkuIEJhc2VGaWVsZCBzZWxmLXZhbGlkYXRpb24gZHVyaW5nXG4gICAgICAgICAgICAvLyBpbml0aWFsIGxvYWQgbG9jYWxseSBzdXBwcmVzc2VzIG1hcmtlcnMgaW4gaXRzIG93biB0cnkvZmluYWxseSxcbiAgICAgICAgICAgIC8vIHNvIHRoaXMgcmUtZW5hYmxlIGRvZXNuJ3QgY2F1c2UgYSBsb2FkLXRpbWUgZmxhc2ggZm9yIGZpZWxkc1xuICAgICAgICAgICAgLy8gdGhhdCBtb3VudCBkdXJpbmcgdGhpcyBzYW1lIGVmZmVjdCBjeWNsZS4gQXN5bmMgZGF0YSBhcnJpdmluZ1xuICAgICAgICAgICAgLy8gbGF0ZXIgd2lsbCByZS12YWxpZGF0ZSB2aWEgQmFzZUZpZWxkJ3MgW3Byb3BzLnZhbHVlcywgY29uZmlnXVxuICAgICAgICAgICAgLy8gdXNlRWZmZWN0LCB3aGljaCBhbHNvIGxvY2FsbHkgc3VwcHJlc3NlcyBtYXJrZXJzLlxuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZykgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VWYWx1ZXMocHJvcHMudmFsdWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW3Byb3BzLmNvbmZpZywgcHJvcHMudmFsdWVzXSk7XG5cbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1hc3RlclZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVEYXRhQXJyaXZlZChtYXN0ZXJWYWx1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbbWFzdGVyVmFsdWVzXSk7XG5cbiAgICAgICAgY29uc3QgZ2V0RmllbGRzRnJvbVRhYiA9ICh0YWIpID0+IHtcbiAgICAgICAgICAgIGxldCBmaWVsZHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGFiUGFnZSBvZiB0YWIudGFiUGFnZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiB0YWJQYWdlLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZm9ybVNlY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkc2V0IG9mIGNvbXBvbmVudC5jb21wb25lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzID0gZmllbGRzLmNvbmNhdChmaWVsZHNldC5maWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmllbGRzO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybURhdGFPYmplY3QgPSAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgbGV0IGZvcm1WYWx1ZXMgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoYmluZGVyID09PSAnTUFQX09CSkVDVCcpIHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzID0ge307XG5cbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBtYXAgPSBkYXRhLm1hcDtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChtYXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobWFwKTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG9rZW5zID0gcHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2byA9IGZvcm1WYWx1ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdG9rZW5zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRva2VuID0gdG9rZW5zW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqIDwgdG9rZW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbCh2b1t0b2tlbl0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b1t0b2tlbl0gPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvID0gdm9bdG9rZW5dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvW3Rva2VuXSA9IG1hcFtwcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzID0gZGF0YTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gZG9DbGVhcigpIHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2VycyhmYWxzZSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICBmaWVsZC5oYW5kbGUuYXBpLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbHVlcy5jdXJyZW50ID0ge307XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKHt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMubW9kZWxDaGFuZ2VIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm1vZGVsQ2hhbmdlSGFuZGxlcih7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGRvQmluZERhdGEoZGF0YSkge1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGQgPSBnZXRGaWVsZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmhhbmRsZS5hcGkudmFsdWUgPSBmaWVsZC5oYW5kbGUuYXBpLnBhcnNlVmFsdWUoZGF0YVtrZXldLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHBhcnNlVmFsdWVzKGRhdGEpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRWYWx1ZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gZ2V0VmFsdWVQYXRoKGZpZWxkLmlkLCBwYXJzZWRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIGxldCBvYmplY3RWYWx1ZSA9IHBhdGgudmFsdWVPYmplY3RbcGF0aC52YWx1ZVByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWVsZC5oYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0W3BhdGgudmFsdWVQcm9wZXJ0eV0gPSBmaWVsZC5oYW5kbGUuYXBpLnBhcnNlVmFsdWUob2JqZWN0VmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05VTEwgZmllbGQgcmVmZXJlbmNlIHdoaWxlIHBhcnNpbmcgZm9ybSB2YWx1ZSAtICcgKyBmaWVsZC5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWx1ZXMuY3VycmVudCA9IHBhcnNlZFZhbHVlcztcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmRhdGFBcnJpdmVkSGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5kYXRhQXJyaXZlZEhhbmRsZXIocGFyc2VkVmFsdWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9pZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgLy9wcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIocGFyc2VkVmFsdWVzKTtcbiAgICAgICAgICAgIC8vfVxuICAgICAgICB9XG5cbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBwYXJzZVZhbHVlcyhwcm9wcy52YWx1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbcHJvcHMudmFsdWVzXSk7XG5cbiAgICAgICAgY29uc3QgZ2V0RmllbGQgPSAoaWQpID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlbW92ZUZpZWxkID0gKGlkKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRWYWxpZGl0eS5jdXJyZW50LmRlbGV0ZShpZCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gZG9WYWxpZGF0ZVBhcmVudChmaWVsZCwgaW52YWxpZCwgdXBkYXRlRXJyb3JzID0gdHJ1ZSkge1xuXG4gICAgICAgICAgICBpZihmaWVsZCkge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGZpZWxkPy5wYXJlbnRJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzUGFyZW50SW52YWxpZCA9IGludmFsaWQ7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldICE9PSBmaWVsZCAmJiBmaWVsZHNbaV0ucGFyZW50SWQgPT09IGZpZWxkLnBhcmVudElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQYXJlbnRJbnZhbGlkID0gaXNQYXJlbnRJbnZhbGlkIHx8ICEoVXRpbHMuaXNOdWxsKGZpZWxkc1tpXS5lcnJvcikgfHwgZmllbGRzW2ldLmVycm9yLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBmaWVsZFBhcmVudEVycm9yc1tmaWVsZC5wYXJlbnRJZF0gPSBpc1BhcmVudEludmFsaWQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZUVycm9ycyAmJiAhVXRpbHMuaXNOdWxsKGNvbnRhaW5lckVycm9yQ2FsbGJhY2suY3VycmVudCkgJiYgYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyRXJyb3JDYWxsYmFjay5jdXJyZW50KGZpZWxkUGFyZW50RXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmaWVsZFBhcmVudEVycm9ycztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlRmllbGQgPSAoZmllbGQsIGlkLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGxvYWRpbmdSZWYuY3VycmVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICAgICAgbGV0IGludmFsaWQgPSBmaWVsZC5oYW5kbGUuYXBpLnZhbGlkYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgLi4udmFsdWVzLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgIFtpZF06IHZhbHVlXG4gICAgICAgICAgICAgICAgfSwgdmFsdWUpID09PSBmYWxzZTtcbiAgICAgICAgICAgICAgICBkb1ZhbGlkYXRlUGFyZW50KGZpZWxkLCBpbnZhbGlkKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBpbnZhbGlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBnZXRWYWx1ZVBhdGggPSAoaWQsIHZhbHMpID0+IHtcbiAgICAgICAgICAgIGxldCBwYXRoID0ge307XG4gICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlcyA9IHZhbHM7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHZhbHMpKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlcyA9IHZhbHVlcy5jdXJyZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjdXJyZW50VmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGxldCB0b2tlbnMgPSBpZC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGgudmFsdWVPYmplY3QgPSBjdXJyZW50VmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlUHJvcGVydHkgPSB0b2tlbnNbMF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0b2tlbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdm8gPSBjdXJyZW50VmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZvW3Rva2Vuc1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm8gPSB2b1t0b2tlbnNbaV1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b1t0b2tlbnNbaV1dID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm8gPSB2b1t0b2tlbnNbaV1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwodm8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0ID0gdm87XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlUHJvcGVydHkgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkb0hhbmRsZUNoYW5nZSA9IChpZCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgIGxldCBwYXRoID0gZ2V0VmFsdWVQYXRoKGlkLCBudWxsKTtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGF0aC52YWx1ZU9iamVjdCkgJiYgIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlUHJvcGVydHkpICYmIGxvYWRpbmdSZWYuY3VycmVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0W3BhdGgudmFsdWVQcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgaW52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IGdldEZpZWxkKGlkKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGZpZWxkKSkge1xuICAgICAgICAgICAgICAgICAgICBpbnZhbGlkID0gdmFsaWRhdGVGaWVsZChmaWVsZCwgaWQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncm91cEZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25Hcm91cCA9IGdyb3VwRmllbGQuaGFuZGxlLmFwaS5nZXRWYWxpZGF0aW9uR3JvdXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbGlkYXRpb25Hcm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQgIT09IGdyb3VwRmllbGQgJiYgdmFsaWRhdGlvbkdyb3VwID09PSBmaWVsZC5oYW5kbGUuYXBpLmdldFZhbGlkYXRpb25Hcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncm91cEZpZWxkSWQgPSBncm91cEZpZWxkLmhhbmRsZS5hcGkuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncmlkRmllbGRQYXRoID0gZ2V0VmFsdWVQYXRoKGdyb3VwRmllbGRJZCwgbnVsbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZ3JpZEZpZWxkUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncm91cEZpZWxkVmFsID0gZ3JpZEZpZWxkUGF0aC52YWx1ZU9iamVjdFtncmlkRmllbGRQYXRoLnZhbHVlUHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JFLVZhbGlkYXRpbmcgZm9ybScsIGdyb3VwRmllbGRWYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVGaWVsZChncm91cEZpZWxkLCBncm91cEZpZWxkSWQsIGdyb3VwRmllbGRWYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIoaW52YWxpZCA/IG51bGwgOiB2YWx1ZXMuY3VycmVudCwgaWQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5tb2RlbENoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm1vZGVsQ2hhbmdlSGFuZGxlcih2YWx1ZXMuY3VycmVudCwgaWQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2VycyhmYWxzZSk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMocHJvcHMuY29uZmlnLmlkKTtcblxuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCB2YWx1ZXMuY3VycmVudCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5WQUxVRV9DSEFOR0UsIGV2ZW50KTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzZXRGaWVsZEVycm9yID0gKGlkLCBlcnJvcikgPT4ge1xuICAgICAgICAgICAgbGV0IGZpZWxkID0gZ2V0RmllbGQoaWQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZmllbGQuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBhZGRGaWVsZCA9IChpZCwgaGFuZGxlLCBwYXJlbnRJZCwgYmluZFZhbHVlVG9Gb3JtKSA9PiB7XG4gICAgICAgICAgICBsZXQgZmllbGQgPSBnZXRGaWVsZChpZCk7XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBlcnJvciA9IGZpZWxkLmVycm9yO1xuICAgICAgICAgICAgICAgIHJlbW92ZUZpZWxkKGlkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZmllbGQgPSB7fTtcbiAgICAgICAgICAgIGZpZWxkLmlkID0gaWQ7XG4gICAgICAgICAgICBmaWVsZC5oYW5kbGUgPSBoYW5kbGU7XG4gICAgICAgICAgICBmaWVsZC5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgZmllbGQuYmluZFZhbHVlVG9Gb3JtID0gYmluZFZhbHVlVG9Gb3JtO1xuICAgICAgICAgICAgZmllbGQucGFyZW50SWQgPSBwYXJlbnRJZDtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKGZpZWxkKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlcy5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcGFyc2VWYWx1ZXModmFsdWVzLmN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGFuZGxlU2VsZWN0SXRlbUNoYW5nZSA9IChuYW1lLCBvcHRpb25zLCBzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGlmKHR5cGVvZiBzZWxlY3Rpb24gPT09ICdvYmplY3QnICYmIChVdGlscy5pc051bGwob3B0aW9ucykgfHwgb3B0aW9ucy5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uc1tpXS5pZCA9PT0gc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPSBvcHRpb25zW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZG9IYW5kbGVDaGFuZ2UobmFtZSwgc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKHtcbiAgICAgICAgICAgICAgICAuLi52YWx1ZXMuY3VycmVudCxcbiAgICAgICAgICAgICAgICBbbmFtZV06IHZhbHVlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYocHJvcHMubW9kZWxDaGFuZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMubW9kZWxDaGFuZ2VIYW5kbGVyKHtcbiAgICAgICAgICAgICAgICAgICAgLi4udmFsdWVzLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXTogdmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBmdW5jdGlvbiByZW5kZXIoZm9ybSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAoVXRpbHMuaXNOdWxsKGZvcm0uc2VjdGlvbnMpIHx8IGZvcm0uc2VjdGlvbnMubGVuZ3RoID09PSAwKSA/XG4gICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoc2VjdGlvbi5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uaWQgPSBzZWN0aW9uQ291bnRlciArICctZm9ybS1zZWN0aW9uJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17c2VjdGlvbkNvdW50ZXIrK30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VjdGlvbiBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtzZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVTZWN0aW9uSGFuZGxlKHNlY3Rpb24pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhVXRpbHMuaXNOdWxsKHByb3BzLmhhbmRsZS5hcGkpID8gcHJvcHMuaGFuZGxlLmFwaSA6IGFwaSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt2YWx1ZXMuY3VycmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdmlzaWJsZSAmJlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3Byb3BzLmNsYXNzTmFtZX0gaWQ9e3Byb3BzLmNvbmZpZy5pZH0gc3R5bGU9e1xuICAgICAgICAgICAgICAgIHByb3BzLmNsYXNzTmFtZSA9PT0gJ2RlZmF1bHRGb3JtJyA/XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm1lcmdlU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcxNnB4IDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAnNzB2aCdcbiAgICAgICAgICAgICAgICAgICAgfSwgcHJvcHMuY29uZmlnKVxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgIH0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5pZCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyKHByb3BzLmNvbmZpZylcbiAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+RVJST1I6IEEgZm9ybSBtdXN0IGhhdmUgYW4gSUQ8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj4pO1xuICAgIH0pXG47XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUosc0JBQUEsQ0FBQUMs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
|