@lowcodeunit/applications-flow-common 1.36.169-integration → 1.36.170-10623-surface-error
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/dialogs/feed-header-dialog/feed-header-dialog.component.mjs +7 -3
- package/esm2020/lib/services/project.service.mjs +3 -2
- package/fesm2015/lowcodeunit-applications-flow-common.mjs +8 -3
- package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/fesm2020/lowcodeunit-applications-flow-common.mjs +8 -3
- package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -319,7 +319,8 @@ export class ProjectService {
|
|
|
319
319
|
return new Promise((resolve, reject) => {
|
|
320
320
|
state.Loading = true;
|
|
321
321
|
this.appsFlowSvc.SubmitFeedEntry(entry).subscribe(async (response) => {
|
|
322
|
-
if (response.Status.Code === 0
|
|
322
|
+
if (response.Status.Code === 0 ||
|
|
323
|
+
response.Status.Code === 1) {
|
|
323
324
|
resolve(response.Status);
|
|
324
325
|
var results = await Promise.all([
|
|
325
326
|
this.LoadEnterpriseAsCode(state),
|
|
@@ -398,4 +399,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
398
399
|
providedIn: 'root',
|
|
399
400
|
}]
|
|
400
401
|
}], ctorParameters: function () { return [{ type: i1.ApplicationsFlowService }, { type: i2.ActivatedRoute }]; } });
|
|
401
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUF3QjNDLE1BQU0sT0FBTyxjQUFjO0lBS3ZCLFlBQ2MsV0FBb0MsRUFDcEMsY0FBOEI7UUFEOUIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUN6QyxDQUFDO0lBRUosK0ZBQStGO0lBQy9GLGlDQUFpQztJQUVqQyxxQkFBcUI7SUFDckIsdUNBQXVDO0lBQ3ZDLCtDQUErQztJQUMvQywwQ0FBMEM7SUFDMUMsMkNBQTJDO0lBRTNDLG1EQUFtRDtJQUNuRCxpQkFBaUI7SUFDakIsNkRBQTZEO0lBRTdELHdDQUF3QztJQUN4QyxVQUFVO0lBQ1YsVUFBVTtJQUNWLElBQUk7SUFFRyxvQkFBb0IsQ0FDdkIsS0FBNEI7UUFFNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUMsU0FBUyxDQUM3QyxLQUFLLEVBQUUsUUFBc0IsRUFBRSxFQUFFO2dCQUM3QixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtvQkFDNUIsc0RBQXNEO29CQUV0RCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNILEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUV0QixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUV4QixPQUFPLENBQUMsR0FB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VSxDQUFDLENBQUM7UUFFckMsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1QyxJQUFJLFlBQVksR0FBYSxFQUFFLENBQUM7UUFFaEMsSUFBSSxXQUFXLEVBQUU7WUFDYixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUErQyxFQUFFLENBQUM7WUFFNUQsS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUNuRCxDQUFDLFNBQWlCLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FDSixDQUFDO1lBRUYsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUU5RCxJQUFJLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFcEMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2pEO1FBRUQsT0FBTztZQUNILFlBQVksRUFBRSxZQUFZO1lBQzFCLE9BQU8sRUFBRSxPQUFPO1NBQ25CLENBQUM7UUFDRixNQUFNO0lBQ1YsQ0FBQzs7MkdBam5CUSxjQUFjOytHQUFkLGNBQWMsY0FGWCxNQUFNOzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZU1vZGVsZWRSZXNwb25zZSwgQmFzZVJlc3BvbnNlLCBTdGF0dXMgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBkZWJ1ZyB9IGZyb20gJ2NvbnNvbGUnO1xuaW1wb3J0IHtcbiAgICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgICBFYUNQcm9qZWN0QXNDb2RlLFxuICAgIEVudGVycHJpc2VBc0NvZGUsXG59IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSxcbiAgICBHaXRIdWJXb3JrZmxvd1J1bixcbiAgICBVbnBhY2tMb3dDb2RlVW5pdFJlcXVlc3QsXG59IGZyb20gJy4uL3N0YXRlL2FwcGxpY2F0aW9ucy1mbG93LnN0YXRlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi9hcHBsaWNhdGlvbnMtZmxvdy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgRmVlZEVudHJ5LFxuICAgIEZlZWRJdGVtLFxuICAgIFVzZXJGZWVkUmVzcG9uc2UsXG59IGZyb20gJy4uL21vZGVscy91c2VyLWZlZWQubW9kZWwnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0U2VydmljZSB7XG4gICAgcHVibGljIENyZWF0aW5nUHJvamVjdDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBFZGl0aW5nUHJvamVjdExvb2t1cDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBhcHBzRmxvd1N2YzogQXBwbGljYXRpb25zRmxvd1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgICApIHt9XG5cbiAgICAvLyBwdWJsaWMgQ3JlYXRlUmVwb3NpdG9yeShzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLCBvcmc6IHN0cmluZywgcmVwb05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vICAgc3RhdGUuR2l0SHViLkxvYWRpbmcgPSB0cnVlO1xuXG4gICAgLy8gICB0aGlzLmFwcHNGbG93U3ZjXG4gICAgLy8gICAgIC5DcmVhdGVSZXBvc2l0b3J5KG9yZywgcmVwb05hbWUpXG4gICAgLy8gICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBCYXNlUmVzcG9uc2UpID0+IHtcbiAgICAvLyAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAvLyAgICAgICAgIHRoaXMubGlzdFJlcG9zaXRvcmllcyhyZXBvTmFtZSk7XG5cbiAgICAvLyAgICAgICAgIHN0YXRlLkdpdEh1Yi5DcmVhdGluZ1JlcG9zaXRvcnkgPSBmYWxzZTtcbiAgICAvLyAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgLy8gIFRPRE86ICBOZWVkIHRvIHN1cmZhY2UgYW4gZXJyb3IgdG8gdGhlIHVzZXIuLi5cblxuICAgIC8vICAgICAgICAgc3RhdGUuR2l0SHViLkxvYWRpbmcgPSBmYWxzZTtcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH1cblxuICAgIHB1YmxpYyBFbnN1cmVVc2VyRW50ZXJwcmlzZShcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZVxuICAgICk6IFByb21pc2U8QmFzZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5hcHBzRmxvd1N2Yy5FbnN1cmVVc2VyRW50ZXJwcmlzZSgpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICBhc3luYyAocmVzcG9uc2U6IEJhc2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGVhYyA9IGF3YWl0IHRoaXMuTG9hZEVudGVycHJpc2VBc0NvZGUoc3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgICAgICBlYWM6IEVudGVycHJpc2VBc0NvZGVcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKGVhYykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTxzdHJpbmc+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5TdGF0dXMuQ29kZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5TdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRFbnRlcnByaXNlQXNDb2RlKHN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRVc2VyRmVlZCgxLCAyNSwgZmFsc2UsIHN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBHZW5lcmF0ZVJvdXRlZEFwcGxpY2F0aW9ucyhcbiAgICAgICAgYXBwbGljYXRpb25zOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0sXG4gICAgICAgIHN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGVcbiAgICApOiB7XG4gICAgICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIH0ge1xuICAgICAgICBjb25zdCBhcHBMb29rdXBzID0gT2JqZWN0LmtleXMoYXBwbGljYXRpb25zKTtcblxuICAgICAgICBjb25zdCBhcHBzID0gYXBwTG9va3Vwcy5tYXAoKGFwcExvb2t1cCkgPT4gYXBwbGljYXRpb25zW2FwcExvb2t1cF0pO1xuXG4gICAgICAgIGxldCBhcHBSb3V0ZXMgPVxuICAgICAgICAgICAgYXBwcy5tYXAoKGFwcCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcHA/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnJlcGxhY2UoJy4qJywgJycpO1xuICAgICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgYXBwUm91dGVzID0gYXBwUm91dGVzLmZpbHRlcigoYXIpID0+IGFyICE9IG51bGwpO1xuXG4gICAgICAgIGxldCByb3V0ZUJhc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGFwcFJvdXRlcy5mb3JFYWNoKChhcHBSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXBwUm91dGVQYXJ0cyA9IGFwcFJvdXRlLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwcFJvdXRlQmFzZSA9IGAvJHthcHBSb3V0ZVBhcnRzWzFdfWA7XG5cbiAgICAgICAgICAgIGlmIChyb3V0ZUJhc2VzLmluZGV4T2YoYXBwUm91dGVCYXNlKSA8IDApIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJhc2VzLnB1c2goYXBwUm91dGVCYXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHdvcmtpbmdBcHBMb29rdXBzID0gWy4uLihhcHBMb29rdXBzIHx8IFtdKV07XG5cbiAgICAgICAgcm91dGVCYXNlcyA9IHJvdXRlQmFzZXMuc29ydCgoYSwgYikgPT4gYi5sb2NhbGVDb21wYXJlKGEpKTtcblxuICAgICAgICBjb25zdCByb3V0ZVNldCA9XG4gICAgICAgICAgICByb3V0ZUJhc2VzLnJlZHVjZSgocHJldlJvdXRlTWFwLCBjdXJyZW50Um91dGVCYXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVNYXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByZXZSb3V0ZU1hcCxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRBcHBMb29rdXBzID0gd29ya2luZ0FwcExvb2t1cHMuZmlsdGVyKCh3YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2EgPSBhcHBsaWNhdGlvbnNbd2FsXTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2E/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Um91dGVCYXNlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByb3V0ZU1hcFtjdXJyZW50Um91dGVCYXNlXSA9XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkQXBwTG9va3Vwcy5yZWR1Y2UoKHByZXZBcHBNYXAsIGFwcExvb2t1cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwTWFwID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZBcHBNYXAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBNYXBbYXBwTG9va3VwXSA9IGFwcGxpY2F0aW9uc1thcHBMb29rdXBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwTWFwO1xuICAgICAgICAgICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgICAgICAgICB3b3JraW5nQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2EpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQXBwTG9va3Vwcy5pbmRleE9mKHdhKSA8IDA7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVNYXA7XG4gICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgbGV0IHJvdXRlU2V0S2V5cyA9IE9iamVjdC5rZXlzKHJvdXRlU2V0KTtcblxuICAgICAgICByb3V0ZVNldEtleXMgPSByb3V0ZVNldEtleXMuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgICAgICBjb25zdCByb3V0ZVNldFJlc3VsdCA9IHt9O1xuXG4gICAgICAgIHJvdXRlU2V0S2V5cy5mb3JFYWNoKChyc2spID0+IChyb3V0ZVNldFJlc3VsdFtyc2tdID0gcm91dGVTZXRbcnNrXSkpO1xuXG4gICAgICAgIHJldHVybiByb3V0ZVNldFJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0QWN0aXZlRW50ZXJwcmlzZShcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZ0FjdGl2ZUVudGVycHJpc2UgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjLkdldEFjdGl2ZUVudGVycHJpc2UoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgYXN5bmMgKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTx7XG4gICAgICAgICAgICAgICAgICAgICAgICBOYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBMb29rdXA6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgfT5cbiAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZ0FjdGl2ZUVudGVycHJpc2UgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkFjdGl2ZUVudGVycHJpc2VMb29rdXAgPSByZXNwb25zZS5Nb2RlbD8uTG9va3VwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmdBY3RpdmVFbnRlcnByaXNlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgSGFzVmFsaWRDb25uZWN0aW9uKFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgICAgICBmb3JjZUVuc3VyZVVzZXI6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IFByb21pc2U8RW50ZXJwcmlzZUFzQ29kZT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuSGFzVmFsaWRDb25uZWN0aW9uKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkdpdEh1Yi5IYXNDb25uZWN0aW9uID0gcmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLkdpdEh1Yi5IYXNDb25uZWN0aW9uIHx8IGZvcmNlRW5zdXJlVXNlcikge1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7fSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RW50ZXJwcmlzZXMoc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmdFbnRlcnByaXNlcyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuTGlzdEVudGVycHJpc2VzKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTxBcnJheTxhbnk+PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nRW50ZXJwcmlzZXMgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkVudGVycHJpc2VzID0gcmVzcG9uc2UuTW9kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuTW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nRW50ZXJwcmlzZXMgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBMb2FkRW50ZXJwcmlzZUFzQ29kZShcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZVxuICAgICk6IFByb21pc2U8RW50ZXJwcmlzZUFzQ29kZT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuTG9hZEVudGVycHJpc2VBc0NvZGUoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlOiBCYXNlTW9kZWxlZFJlc3BvbnNlPEVudGVycHJpc2VBc0NvZGU+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkVhQyA9IHJlc3BvbnNlLk1vZGVsIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLlN0YXR1cy5Db2RlID09PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5FYUMgPSBzdGF0ZS5FYUMgfHwge307XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DcmVhdGluZ1Byb2plY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhdGU/LkVhQz8uUHJvamVjdHMgfHwge30pLmxlbmd0aCA8PSAwO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc3RhdGUuRWFDKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zPy5kaXJlY3QgPT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb2pLZXlzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkVhQy5Qcm9qZWN0cyB8fCB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvaktleXMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RpcmVjdGluZyB0byBkZWVwZXIgbGluaycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHBLZXlzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5FYUMuQXBwbGljYXRpb25zIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcEtleXMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkVhQy5BcHBsaWNhdGlvbnNbYXBwS2V5c1swXV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByb3V0ZUtleSA9IGVuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG9va3VwQ29uZmlnLlBhdGhSZWdleD8ucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4qJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8ICcvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgL2Rhc2hib2FyZC9hcHBsaWNhdGlvbi8ke2FwcEtleXNbMF19LyR7cm91dGVLZXl9LyR7cHJvaktleXNbMF19YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC9kYXNoYm9hcmQvcHJvamVjdC8ke3Byb2pLZXlzWzBdfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0YXRlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExvYWRVc2VyRmVlZChcbiAgICAgICAgcGFnZTogbnVtYmVyLFxuICAgICAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgICAgICBmb3JDaGVjazogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlXG4gICAgKTogUHJvbWlzZTxBcnJheTxGZWVkSXRlbT4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmdGZWVkID0gIWZvckNoZWNrO1xuXG4gICAgICAgICAgICBsZXQgcGFyYW1NYXAgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmNoaWxkcmVuWzBdLnBhcmFtTWFwO1xuXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5sb2FkQXBwbGljYXRpb25zRm9yRmVlZChzdGF0ZSwgcGFyYW1NYXApO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjXG4gICAgICAgICAgICAgICAgLkxvYWRVc2VyRmVlZChcbiAgICAgICAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdD8uUHJvamVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Py5BcHBsaWNhdGlvbnNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKHJlc3BvbnNlOiBVc2VyRmVlZFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nRmVlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvckNoZWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkZlZWQgPSByZXNwb25zZS5JdGVtcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5GZWVkU291cmNlQ29udHJvbExvb2t1cHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuU291cmNlQ29udHJvbExvb2t1cHM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuRmVlZEFjdGlvbnMgPSByZXNwb25zZS5BY3Rpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkZlZWRDaGVjayA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gcmVzcG9uc2UuSXRlbXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdGF0ZS5GZWVkPy5maW5kKChmKSA9PiBmLklEID09IGkuSUQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5GZWVkQ2hlY2sgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIklURU1aOiBcIiwgcmVzcG9uc2UuSXRlbXMpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLkl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmdGZWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNldEFjdGl2ZUVudGVycHJpc2UoXG4gICAgICAgIHN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gICAgICAgIGFjdGl2ZUVudExvb2t1cDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZ0ZlZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjLlNldEFjdGl2ZUVudGVycHJpc2UoYWN0aXZlRW50TG9va3VwKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgYXN5bmMgKHJlc3BvbnNlOiBCYXNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLlN0YXR1cy5Db2RlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdQcm9qZWN0TG9va3VwID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Qgc2VydmljZSBhY3RpdmUgZW50OiAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVudExvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuQWN0aXZlRW50ZXJwcmlzZUxvb2t1cCA9IGFjdGl2ZUVudExvb2t1cDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Qgc2VydmljZSBTdGF0ZSBhY3RpdmUgZW50OiAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkFjdGl2ZUVudGVycHJpc2VMb29rdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkRW50ZXJwcmlzZUFzQ29kZShzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkVXNlckZlZWQoMSwgMjUsIGZhbHNlLCBzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZUVudGVycHJpc2VBc0NvZGUoXG4gICAgICAgIHN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gICAgICAgIGVhYzogRW50ZXJwcmlzZUFzQ29kZVxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5hcHBzRmxvd1N2Yy5TYXZlRW50ZXJwcmlzZUFzQ29kZShlYWMpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICBhc3luYyAocmVzcG9uc2U6IEJhc2VNb2RlbGVkUmVzcG9uc2U8c3RyaW5nPikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkRW50ZXJwcmlzZUFzQ29kZShzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkVXNlckZlZWQoMSwgMjUsIGZhbHNlLCBzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgU2V0Q3JlYXRpbmdQcm9qZWN0KGNyZWF0aW5nUHJvamVjdDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLkNyZWF0aW5nUHJvamVjdCA9IGNyZWF0aW5nUHJvamVjdDtcblxuICAgICAgICB0aGlzLkVkaXRpbmdQcm9qZWN0TG9va3VwID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgU2V0RWRpdFByb2plY3RTZXR0aW5ncyhcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSxcbiAgICAgICAgcHJvamVjdExvb2t1cDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmIChwcm9qZWN0TG9va3VwICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdQcm9qZWN0TG9va3VwID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdQcm9qZWN0TG9va3VwID0gcHJvamVjdExvb2t1cDtcblxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHt9KTtcbiAgICAgICAgICAgICAgICB9LCAwKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuQ3JlYXRpbmdQcm9qZWN0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhzdGF0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ1Byb2plY3RMb29rdXAgPSBwcm9qZWN0TG9va3VwO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5DcmVhdGluZ1Byb2plY3QgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoe30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU3VibWl0RmVlZEVudHJ5KFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgICAgICBlbnRyeTogRmVlZEVudHJ5XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjLlN1Ym1pdEZlZWRFbnRyeShlbnRyeSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTxzdHJpbmc+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5TdGF0dXMuQ29kZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5TdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRFbnRlcnByaXNlQXNDb2RlKHN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRVc2VyRmVlZCgxLCAyNSwgZmFsc2UsIHN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBUb2dnbGVDcmVhdGVQcm9qZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLlNldENyZWF0aW5nUHJvamVjdCghdGhpcy5DcmVhdGluZ1Byb2plY3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBVbnBhY2tMb3dDb2RlVW5pdChcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSxcbiAgICAgICAgcmVxOiBVbnBhY2tMb3dDb2RlVW5pdFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuVW5wYWNrTG93Q29kZVVuaXQocmVxKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgYXN5bmMgKHJlc3BvbnNlOiBCYXNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLlN0YXR1cy5Db2RlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTG9hZEVudGVycHJpc2VBc0NvZGUoc3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTG9hZFVzZXJGZWVkKDEsIDI1LCBmYWxzZSwgc3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXNwb25zZS5TdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gIEhlbHBlcnNcbiAgICBwcm90ZWN0ZWQgbG9hZEFwcGxpY2F0aW9uc0ZvckZlZWQoXG4gICAgICAgIHN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gICAgICAgIHBhcmFtTWFwOiBhbnlcbiAgICApIHtcbiAgICAgICAgLy8gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUoYXN5bmMgKHBhcmFtTWFwKSA9PiB7XG4gICAgICAgIHZhciBwcm9qZWN0ID0gcGFyYW1NYXAuZ2V0KCdwcm9qZWN0TG9va3VwJykgfHwgJyc7XG5cbiAgICAgICAgdmFyIHJvdXRlID0gcGFyYW1NYXAuZ2V0KCdhcHBSb3V0ZScpO1xuXG4gICAgICAgIHZhciBhcHBsaWNhdGlvbiA9IHBhcmFtTWFwLmdldCgnYXBwTG9va3VwJyk7XG5cbiAgICAgICAgdmFyIGFwcGxpY2F0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBpZiAoYXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9ucy5wdXNoKGFwcGxpY2F0aW9uKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb3V0ZSAmJiBwcm9qZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBhcHBzOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0gPSB7fTtcblxuICAgICAgICAgICAgc3RhdGUuRWFDPy5Qcm9qZWN0c1twcm9qZWN0XS5BcHBsaWNhdGlvbkxvb2t1cHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAoYXBwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXBwc1thcHBMb29rdXBdID0gc3RhdGUuRWFDLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHZhciByb3V0ZWRBcHBzID0gdGhpcy5HZW5lcmF0ZVJvdXRlZEFwcGxpY2F0aW9ucyhhcHBzLCBzdGF0ZSk7XG5cbiAgICAgICAgICAgIHZhciBjdXJyZW50QXBwcyA9IHJvdXRlZEFwcHNbcm91dGVdO1xuXG4gICAgICAgICAgICBhcHBsaWNhdGlvbnMgPSBPYmplY3Qua2V5cyhjdXJyZW50QXBwcykgfHwgW107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgQXBwbGljYXRpb25zOiBhcHBsaWNhdGlvbnMsXG4gICAgICAgICAgICBQcm9qZWN0OiBwcm9qZWN0LFxuICAgICAgICB9O1xuICAgICAgICAvLyB9KTtcbiAgICB9XG59XG4iXX0=
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUF3QjNDLE1BQU0sT0FBTyxjQUFjO0lBS3ZCLFlBQ2MsV0FBb0MsRUFDcEMsY0FBOEI7UUFEOUIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUN6QyxDQUFDO0lBRUosK0ZBQStGO0lBQy9GLGlDQUFpQztJQUVqQyxxQkFBcUI7SUFDckIsdUNBQXVDO0lBQ3ZDLCtDQUErQztJQUMvQywwQ0FBMEM7SUFDMUMsMkNBQTJDO0lBRTNDLG1EQUFtRDtJQUNuRCxpQkFBaUI7SUFDakIsNkRBQTZEO0lBRTdELHdDQUF3QztJQUN4QyxVQUFVO0lBQ1YsVUFBVTtJQUNWLElBQUk7SUFFRyxvQkFBb0IsQ0FDdkIsS0FBNEI7UUFFNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUMsU0FBUyxDQUM3QyxLQUFLLEVBQUUsUUFBc0IsRUFBRSxFQUFFO2dCQUM3QixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtvQkFDNUIsc0RBQXNEO29CQUV0RCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNILEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUV0QixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUV4QixPQUFPLENBQUMsR0FB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RWxELElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckMsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1QyxJQUFJLFlBQVksR0FBYSxFQUFFLENBQUM7UUFFaEMsSUFBSSxXQUFXLEVBQUU7WUFDYixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUErQyxFQUFFLENBQUM7WUFFNUQsS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUNuRCxDQUFDLFNBQWlCLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FDSixDQUFDO1lBRUYsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUU5RCxJQUFJLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFcEMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2pEO1FBRUQsT0FBTztZQUNILFlBQVksRUFBRSxZQUFZO1lBQzFCLE9BQU8sRUFBRSxPQUFPO1NBQ25CLENBQUM7UUFDRixNQUFNO0lBQ1YsQ0FBQzs7MkdBcG5CUSxjQUFjOytHQUFkLGNBQWMsY0FGWCxNQUFNOzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZU1vZGVsZWRSZXNwb25zZSwgQmFzZVJlc3BvbnNlLCBTdGF0dXMgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBkZWJ1ZyB9IGZyb20gJ2NvbnNvbGUnO1xuaW1wb3J0IHtcbiAgICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgICBFYUNQcm9qZWN0QXNDb2RlLFxuICAgIEVudGVycHJpc2VBc0NvZGUsXG59IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSxcbiAgICBHaXRIdWJXb3JrZmxvd1J1bixcbiAgICBVbnBhY2tMb3dDb2RlVW5pdFJlcXVlc3QsXG59IGZyb20gJy4uL3N0YXRlL2FwcGxpY2F0aW9ucy1mbG93LnN0YXRlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi9hcHBsaWNhdGlvbnMtZmxvdy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgRmVlZEVudHJ5LFxuICAgIEZlZWRJdGVtLFxuICAgIFVzZXJGZWVkUmVzcG9uc2UsXG59IGZyb20gJy4uL21vZGVscy91c2VyLWZlZWQubW9kZWwnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0U2VydmljZSB7XG4gICAgcHVibGljIENyZWF0aW5nUHJvamVjdDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBFZGl0aW5nUHJvamVjdExvb2t1cDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBhcHBzRmxvd1N2YzogQXBwbGljYXRpb25zRmxvd1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgICApIHt9XG5cbiAgICAvLyBwdWJsaWMgQ3JlYXRlUmVwb3NpdG9yeShzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLCBvcmc6IHN0cmluZywgcmVwb05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vICAgc3RhdGUuR2l0SHViLkxvYWRpbmcgPSB0cnVlO1xuXG4gICAgLy8gICB0aGlzLmFwcHNGbG93U3ZjXG4gICAgLy8gICAgIC5DcmVhdGVSZXBvc2l0b3J5KG9yZywgcmVwb05hbWUpXG4gICAgLy8gICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBCYXNlUmVzcG9uc2UpID0+IHtcbiAgICAvLyAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAvLyAgICAgICAgIHRoaXMubGlzdFJlcG9zaXRvcmllcyhyZXBvTmFtZSk7XG5cbiAgICAvLyAgICAgICAgIHN0YXRlLkdpdEh1Yi5DcmVhdGluZ1JlcG9zaXRvcnkgPSBmYWxzZTtcbiAgICAvLyAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgLy8gIFRPRE86ICBOZWVkIHRvIHN1cmZhY2UgYW4gZXJyb3IgdG8gdGhlIHVzZXIuLi5cblxuICAgIC8vICAgICAgICAgc3RhdGUuR2l0SHViLkxvYWRpbmcgPSBmYWxzZTtcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH1cblxuICAgIHB1YmxpYyBFbnN1cmVVc2VyRW50ZXJwcmlzZShcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZVxuICAgICk6IFByb21pc2U8QmFzZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5hcHBzRmxvd1N2Yy5FbnN1cmVVc2VyRW50ZXJwcmlzZSgpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICBhc3luYyAocmVzcG9uc2U6IEJhc2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGVhYyA9IGF3YWl0IHRoaXMuTG9hZEVudGVycHJpc2VBc0NvZGUoc3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgICAgICBlYWM6IEVudGVycHJpc2VBc0NvZGVcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKGVhYykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTxzdHJpbmc+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5TdGF0dXMuQ29kZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5TdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRFbnRlcnByaXNlQXNDb2RlKHN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRVc2VyRmVlZCgxLCAyNSwgZmFsc2UsIHN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBHZW5lcmF0ZVJvdXRlZEFwcGxpY2F0aW9ucyhcbiAgICAgICAgYXBwbGljYXRpb25zOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0sXG4gICAgICAgIHN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGVcbiAgICApOiB7XG4gICAgICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIH0ge1xuICAgICAgICBjb25zdCBhcHBMb29rdXBzID0gT2JqZWN0LmtleXMoYXBwbGljYXRpb25zKTtcblxuICAgICAgICBjb25zdCBhcHBzID0gYXBwTG9va3Vwcy5tYXAoKGFwcExvb2t1cCkgPT4gYXBwbGljYXRpb25zW2FwcExvb2t1cF0pO1xuXG4gICAgICAgIGxldCBhcHBSb3V0ZXMgPVxuICAgICAgICAgICAgYXBwcy5tYXAoKGFwcCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcHA/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnJlcGxhY2UoJy4qJywgJycpO1xuICAgICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgYXBwUm91dGVzID0gYXBwUm91dGVzLmZpbHRlcigoYXIpID0+IGFyICE9IG51bGwpO1xuXG4gICAgICAgIGxldCByb3V0ZUJhc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGFwcFJvdXRlcy5mb3JFYWNoKChhcHBSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXBwUm91dGVQYXJ0cyA9IGFwcFJvdXRlLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwcFJvdXRlQmFzZSA9IGAvJHthcHBSb3V0ZVBhcnRzWzFdfWA7XG5cbiAgICAgICAgICAgIGlmIChyb3V0ZUJhc2VzLmluZGV4T2YoYXBwUm91dGVCYXNlKSA8IDApIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJhc2VzLnB1c2goYXBwUm91dGVCYXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHdvcmtpbmdBcHBMb29rdXBzID0gWy4uLihhcHBMb29rdXBzIHx8IFtdKV07XG5cbiAgICAgICAgcm91dGVCYXNlcyA9IHJvdXRlQmFzZXMuc29ydCgoYSwgYikgPT4gYi5sb2NhbGVDb21wYXJlKGEpKTtcblxuICAgICAgICBjb25zdCByb3V0ZVNldCA9XG4gICAgICAgICAgICByb3V0ZUJhc2VzLnJlZHVjZSgocHJldlJvdXRlTWFwLCBjdXJyZW50Um91dGVCYXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVNYXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByZXZSb3V0ZU1hcCxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRBcHBMb29rdXBzID0gd29ya2luZ0FwcExvb2t1cHMuZmlsdGVyKCh3YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2EgPSBhcHBsaWNhdGlvbnNbd2FsXTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2E/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Um91dGVCYXNlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByb3V0ZU1hcFtjdXJyZW50Um91dGVCYXNlXSA9XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkQXBwTG9va3Vwcy5yZWR1Y2UoKHByZXZBcHBNYXAsIGFwcExvb2t1cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwTWFwID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZBcHBNYXAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBNYXBbYXBwTG9va3VwXSA9IGFwcGxpY2F0aW9uc1thcHBMb29rdXBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwTWFwO1xuICAgICAgICAgICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgICAgICAgICB3b3JraW5nQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2EpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQXBwTG9va3Vwcy5pbmRleE9mKHdhKSA8IDA7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVNYXA7XG4gICAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgbGV0IHJvdXRlU2V0S2V5cyA9IE9iamVjdC5rZXlzKHJvdXRlU2V0KTtcblxuICAgICAgICByb3V0ZVNldEtleXMgPSByb3V0ZVNldEtleXMuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgICAgICBjb25zdCByb3V0ZVNldFJlc3VsdCA9IHt9O1xuXG4gICAgICAgIHJvdXRlU2V0S2V5cy5mb3JFYWNoKChyc2spID0+IChyb3V0ZVNldFJlc3VsdFtyc2tdID0gcm91dGVTZXRbcnNrXSkpO1xuXG4gICAgICAgIHJldHVybiByb3V0ZVNldFJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0QWN0aXZlRW50ZXJwcmlzZShcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZ0FjdGl2ZUVudGVycHJpc2UgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjLkdldEFjdGl2ZUVudGVycHJpc2UoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgYXN5bmMgKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTx7XG4gICAgICAgICAgICAgICAgICAgICAgICBOYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBMb29rdXA6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgfT5cbiAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZ0FjdGl2ZUVudGVycHJpc2UgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkFjdGl2ZUVudGVycHJpc2VMb29rdXAgPSByZXNwb25zZS5Nb2RlbD8uTG9va3VwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmdBY3RpdmVFbnRlcnByaXNlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgSGFzVmFsaWRDb25uZWN0aW9uKFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgICAgICBmb3JjZUVuc3VyZVVzZXI6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IFByb21pc2U8RW50ZXJwcmlzZUFzQ29kZT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuSGFzVmFsaWRDb25uZWN0aW9uKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkdpdEh1Yi5IYXNDb25uZWN0aW9uID0gcmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLkdpdEh1Yi5IYXNDb25uZWN0aW9uIHx8IGZvcmNlRW5zdXJlVXNlcikge1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7fSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RW50ZXJwcmlzZXMoc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmdFbnRlcnByaXNlcyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuTGlzdEVudGVycHJpc2VzKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTxBcnJheTxhbnk+PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nRW50ZXJwcmlzZXMgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkVudGVycHJpc2VzID0gcmVzcG9uc2UuTW9kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuTW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nRW50ZXJwcmlzZXMgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBMb2FkRW50ZXJwcmlzZUFzQ29kZShcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZVxuICAgICk6IFByb21pc2U8RW50ZXJwcmlzZUFzQ29kZT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuTG9hZEVudGVycHJpc2VBc0NvZGUoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlOiBCYXNlTW9kZWxlZFJlc3BvbnNlPEVudGVycHJpc2VBc0NvZGU+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkVhQyA9IHJlc3BvbnNlLk1vZGVsIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLlN0YXR1cy5Db2RlID09PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5FYUMgPSBzdGF0ZS5FYUMgfHwge307XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DcmVhdGluZ1Byb2plY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhdGU/LkVhQz8uUHJvamVjdHMgfHwge30pLmxlbmd0aCA8PSAwO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc3RhdGUuRWFDKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zPy5kaXJlY3QgPT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb2pLZXlzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkVhQy5Qcm9qZWN0cyB8fCB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvaktleXMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RpcmVjdGluZyB0byBkZWVwZXIgbGluaycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHBLZXlzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5FYUMuQXBwbGljYXRpb25zIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcEtleXMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkVhQy5BcHBsaWNhdGlvbnNbYXBwS2V5c1swXV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByb3V0ZUtleSA9IGVuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG9va3VwQ29uZmlnLlBhdGhSZWdleD8ucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4qJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8ICcvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgL2Rhc2hib2FyZC9hcHBsaWNhdGlvbi8ke2FwcEtleXNbMF19LyR7cm91dGVLZXl9LyR7cHJvaktleXNbMF19YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC9kYXNoYm9hcmQvcHJvamVjdC8ke3Byb2pLZXlzWzBdfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0YXRlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExvYWRVc2VyRmVlZChcbiAgICAgICAgcGFnZTogbnVtYmVyLFxuICAgICAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgICAgICBmb3JDaGVjazogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlXG4gICAgKTogUHJvbWlzZTxBcnJheTxGZWVkSXRlbT4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmdGZWVkID0gIWZvckNoZWNrO1xuXG4gICAgICAgICAgICBsZXQgcGFyYW1NYXAgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmNoaWxkcmVuWzBdLnBhcmFtTWFwO1xuXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5sb2FkQXBwbGljYXRpb25zRm9yRmVlZChzdGF0ZSwgcGFyYW1NYXApO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjXG4gICAgICAgICAgICAgICAgLkxvYWRVc2VyRmVlZChcbiAgICAgICAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdD8uUHJvamVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Py5BcHBsaWNhdGlvbnNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKHJlc3BvbnNlOiBVc2VyRmVlZFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nRmVlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvckNoZWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkZlZWQgPSByZXNwb25zZS5JdGVtcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5GZWVkU291cmNlQ29udHJvbExvb2t1cHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuU291cmNlQ29udHJvbExvb2t1cHM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuRmVlZEFjdGlvbnMgPSByZXNwb25zZS5BY3Rpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkZlZWRDaGVjayA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gcmVzcG9uc2UuSXRlbXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdGF0ZS5GZWVkPy5maW5kKChmKSA9PiBmLklEID09IGkuSUQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5GZWVkQ2hlY2sgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIklURU1aOiBcIiwgcmVzcG9uc2UuSXRlbXMpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLkl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmdGZWVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNldEFjdGl2ZUVudGVycHJpc2UoXG4gICAgICAgIHN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gICAgICAgIGFjdGl2ZUVudExvb2t1cDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGUuTG9hZGluZ0ZlZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjLlNldEFjdGl2ZUVudGVycHJpc2UoYWN0aXZlRW50TG9va3VwKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgYXN5bmMgKHJlc3BvbnNlOiBCYXNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLlN0YXR1cy5Db2RlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdQcm9qZWN0TG9va3VwID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Qgc2VydmljZSBhY3RpdmUgZW50OiAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVudExvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuQWN0aXZlRW50ZXJwcmlzZUxvb2t1cCA9IGFjdGl2ZUVudExvb2t1cDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Qgc2VydmljZSBTdGF0ZSBhY3RpdmUgZW50OiAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkFjdGl2ZUVudGVycHJpc2VMb29rdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkRW50ZXJwcmlzZUFzQ29kZShzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkVXNlckZlZWQoMSwgMjUsIGZhbHNlLCBzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZUVudGVycHJpc2VBc0NvZGUoXG4gICAgICAgIHN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gICAgICAgIGVhYzogRW50ZXJwcmlzZUFzQ29kZVxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5hcHBzRmxvd1N2Yy5TYXZlRW50ZXJwcmlzZUFzQ29kZShlYWMpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICBhc3luYyAocmVzcG9uc2U6IEJhc2VNb2RlbGVkUmVzcG9uc2U8c3RyaW5nPikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkRW50ZXJwcmlzZUFzQ29kZShzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkVXNlckZlZWQoMSwgMjUsIGZhbHNlLCBzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgU2V0Q3JlYXRpbmdQcm9qZWN0KGNyZWF0aW5nUHJvamVjdDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLkNyZWF0aW5nUHJvamVjdCA9IGNyZWF0aW5nUHJvamVjdDtcblxuICAgICAgICB0aGlzLkVkaXRpbmdQcm9qZWN0TG9va3VwID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgU2V0RWRpdFByb2plY3RTZXR0aW5ncyhcbiAgICAgICAgc3RhdGU6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSxcbiAgICAgICAgcHJvamVjdExvb2t1cDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmIChwcm9qZWN0TG9va3VwICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdQcm9qZWN0TG9va3VwID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdQcm9qZWN0TG9va3VwID0gcHJvamVjdExvb2t1cDtcblxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHt9KTtcbiAgICAgICAgICAgICAgICB9LCAwKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuQ3JlYXRpbmdQcm9qZWN0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhzdGF0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ1Byb2plY3RMb29rdXAgPSBwcm9qZWN0TG9va3VwO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5DcmVhdGluZ1Byb2plY3QgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoe30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU3VibWl0RmVlZEVudHJ5KFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgICAgICBlbnRyeTogRmVlZEVudHJ5XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjLlN1Ym1pdEZlZWRFbnRyeShlbnRyeSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTxzdHJpbmc+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLlN0YXR1cy5Db2RlID09PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5TdGF0dXMuQ29kZSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkRW50ZXJwcmlzZUFzQ29kZShzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Mb2FkVXNlckZlZWQoMSwgMjUsIGZhbHNlLCBzdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlLlN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgVG9nZ2xlQ3JlYXRlUHJvamVjdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5TZXRDcmVhdGluZ1Byb2plY3QoIXRoaXMuQ3JlYXRpbmdQcm9qZWN0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgVW5wYWNrTG93Q29kZVVuaXQoXG4gICAgICAgIHN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gICAgICAgIHJlcTogVW5wYWNrTG93Q29kZVVuaXRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmFwcHNGbG93U3ZjLlVucGFja0xvd0NvZGVVbml0KHJlcSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGFzeW5jIChyZXNwb25zZTogQmFzZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5TdGF0dXMuQ29kZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5TdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRFbnRlcnByaXNlQXNDb2RlKHN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRVc2VyRmVlZCgxLCAyNSwgZmFsc2UsIHN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UuU3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vICBIZWxwZXJzXG4gICAgcHJvdGVjdGVkIGxvYWRBcHBsaWNhdGlvbnNGb3JGZWVkKFxuICAgICAgICBzdGF0ZTogQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgICAgICBwYXJhbU1hcDogYW55XG4gICAgKSB7XG4gICAgICAgIC8vIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1NYXAuc3Vic2NyaWJlKGFzeW5jIChwYXJhbU1hcCkgPT4ge1xuICAgICAgICB2YXIgcHJvamVjdCA9IHBhcmFtTWFwLmdldCgncHJvamVjdExvb2t1cCcpIHx8ICcnO1xuXG4gICAgICAgIHZhciByb3V0ZSA9IHBhcmFtTWFwLmdldCgnYXBwUm91dGUnKTtcblxuICAgICAgICB2YXIgYXBwbGljYXRpb24gPSBwYXJhbU1hcC5nZXQoJ2FwcExvb2t1cCcpO1xuXG4gICAgICAgIHZhciBhcHBsaWNhdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgaWYgKGFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbnMucHVzaChhcHBsaWNhdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAocm91dGUgJiYgcHJvamVjdCkge1xuICAgICAgICAgICAgY29uc3QgYXBwczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9ID0ge307XG5cbiAgICAgICAgICAgIHN0YXRlLkVhQz8uUHJvamVjdHNbcHJvamVjdF0uQXBwbGljYXRpb25Mb29rdXBzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgKGFwcExvb2t1cDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcHNbYXBwTG9va3VwXSA9IHN0YXRlLkVhQy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB2YXIgcm91dGVkQXBwcyA9IHRoaXMuR2VuZXJhdGVSb3V0ZWRBcHBsaWNhdGlvbnMoYXBwcywgc3RhdGUpO1xuXG4gICAgICAgICAgICB2YXIgY3VycmVudEFwcHMgPSByb3V0ZWRBcHBzW3JvdXRlXTtcblxuICAgICAgICAgICAgYXBwbGljYXRpb25zID0gT2JqZWN0LmtleXMoY3VycmVudEFwcHMpIHx8IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uczogYXBwbGljYXRpb25zLFxuICAgICAgICAgICAgUHJvamVjdDogcHJvamVjdCxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -662,7 +662,8 @@ class ProjectService {
|
|
|
662
662
|
return new Promise((resolve, reject) => {
|
|
663
663
|
state.Loading = true;
|
|
664
664
|
this.appsFlowSvc.SubmitFeedEntry(entry).subscribe((response) => __awaiter(this, void 0, void 0, function* () {
|
|
665
|
-
if (response.Status.Code === 0
|
|
665
|
+
if (response.Status.Code === 0 ||
|
|
666
|
+
response.Status.Code === 1) {
|
|
666
667
|
resolve(response.Status);
|
|
667
668
|
var results = yield Promise.all([
|
|
668
669
|
this.LoadEnterpriseAsCode(state),
|
|
@@ -6441,6 +6442,7 @@ class FeedHeaderDialogComponent {
|
|
|
6441
6442
|
};
|
|
6442
6443
|
console.log('Control: ', returnObject);
|
|
6443
6444
|
this.eacSvc.SubmitFeedEntry(returnObject).then((res) => {
|
|
6445
|
+
console.log('result: ', res);
|
|
6444
6446
|
if (res.Code === 0) {
|
|
6445
6447
|
this.snackBar.open(` '${this.data.type}' Succesfully Created`, 'Dismiss', {
|
|
6446
6448
|
duration: 5000,
|
|
@@ -6448,6 +6450,9 @@ class FeedHeaderDialogComponent {
|
|
|
6448
6450
|
this.CloseDialog();
|
|
6449
6451
|
}
|
|
6450
6452
|
else {
|
|
6453
|
+
this.snackBar.open(res.Message, 'Dismiss', {
|
|
6454
|
+
panelClass: 'error',
|
|
6455
|
+
});
|
|
6451
6456
|
this.ErrorMessage = res.Message;
|
|
6452
6457
|
}
|
|
6453
6458
|
});
|
|
@@ -6564,10 +6569,10 @@ class FeedHeaderDialogComponent {
|
|
|
6564
6569
|
}
|
|
6565
6570
|
}
|
|
6566
6571
|
FeedHeaderDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedHeaderDialogComponent, deps: [{ token: ApplicationsFlowService }, { token: EaCService }, { token: i1$1.FormBuilder }, { token: i2$3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3$2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
6567
|
-
FeedHeaderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: FeedHeaderDialogComponent, selector: "lcu-feed-header-dialog", ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>{{ data.dialogTitle }}</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <form [formGroup]=\"FeedHeaderFormGroup\">\n <!-- ISSUE FORM -->\n <ng-container *ngIf=\"data.type === 'OpenIssue'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"IssueSourceControlChanged($event)\"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <angular-editor\n class=\"angular-editor\"\n id=\"issue-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- ANNOUNCEMENT FORM -->\n\n <ng-container *ngIf=\"data.type === 'Announcement'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Subtitle\"\n formControlName=\"subtitle\"\n />\n </mat-form-field>\n\n <angular-editor\n id=\"announcement-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Text\"\n formControlName=\"actionText\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Link\"\n formControlName=\"actionLink\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Icon\"\n formControlName=\"actionIcon\"\n />\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <button\n *ngIf=\"ActionTextControl?.value || ActionIconControl?.value\"\n mat-button\n color=\"primary\"\n (click)=\"HandleAction(ActionLinkControl?.value)\"\n >\n <mat-icon *ngIf=\"ActionIconControl?.value\">{{\n ActionIconControl?.value\n }}</mat-icon>\n\n {{ ActionTextControl?.value }}\n </button>\n\n <button\n *ngIf=\"\n !ActionTextControl?.value && !ActionIconControl?.value\n \"\n mat-button\n color=\"primary\"\n >\n <mat-icon>cruelty_free</mat-icon>\n\n Example Button\n </button>\n </div>\n </ng-container>\n\n <!-- PR FORM -->\n\n <ng-container *ngIf=\"data.type === 'PullRequest'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"\n PullRequestSourceControlChanged($event)\n \"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n *ngIf=\"BranchOptions?.length > 0\"\n >\n <mat-form-field appearance=\"fill\">\n <mat-label>Base</mat-label>\n <mat-select formControlName=\"targetBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-icon>arrow_back</mat-icon>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Compare</mat-label>\n <mat-select formControlName=\"sourceBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <angular-editor\n id=\"pr-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- Feature Branch form -->\n\n <ng-container *ngIf=\"data.type === 'CreateBranch'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field>\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"\n FeatureBranchSourceControlChanged($event)\n \"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <mat-form-field *ngIf=\"OrganizationOptions?.length > 0\">\n <mat-select\n formControlName=\"organization\"\n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\"\n required\n >\n <ng-container\n *ngFor=\"let orgOpt of OrganizationOptions\"\n >\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"RepositoryOptions?.length > 0\">\n <mat-select\n formControlName=\"repository\"\n placeholder=\"Repository\"\n (selectionChange)=\"RepositoryChanged($event)\"\n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-around center\"\n *ngIf=\"BranchOptions?.length > 0\"\n >\n <mat-form-field>\n <mat-label>Base Branch</mat-label>\n <mat-select formControlName=\"sourceBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <input\n matInput\n placeholder=\"Create New Branch\"\n formControlName=\"targetBranch\"\n required\n />\n </mat-form-field>\n </div>\n </ng-container>\n\n <lcu-loader [loading]=\"Loading\"></lcu-loader>\n </form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button\n mat-raised-button\n color=\"primary\"\n fxFlex=\"25%\"\n class=\"submit\"\n (click)=\"Submit()\"\n [disabled]=\"IsDisabled()\"\n >\n Submit\n </button>\n</mat-dialog-actions>\n", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i2$4.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }, { type: i3$1.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i4$1.MatLabel, selector: "mat-label" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
6572
|
+
FeedHeaderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: FeedHeaderDialogComponent, selector: "lcu-feed-header-dialog", ngImport: i0, template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>{{ data.dialogTitle }}</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <form [formGroup]=\"FeedHeaderFormGroup\">\n <!-- ISSUE FORM -->\n <ng-container *ngIf=\"data.type === 'OpenIssue'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"IssueSourceControlChanged($event)\"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <angular-editor\n class=\"angular-editor\"\n id=\"issue-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- ANNOUNCEMENT FORM -->\n\n <ng-container *ngIf=\"data.type === 'Announcement'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Subtitle\"\n formControlName=\"subtitle\"\n />\n </mat-form-field>\n\n <angular-editor\n id=\"announcement-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Text\"\n formControlName=\"actionText\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Link\"\n formControlName=\"actionLink\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Icon\"\n formControlName=\"actionIcon\"\n />\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <button\n *ngIf=\"ActionTextControl?.value || ActionIconControl?.value\"\n mat-button\n color=\"primary\"\n (click)=\"HandleAction(ActionLinkControl?.value)\"\n >\n <mat-icon *ngIf=\"ActionIconControl?.value\">{{\n ActionIconControl?.value\n }}</mat-icon>\n\n {{ ActionTextControl?.value }}\n </button>\n\n <button\n *ngIf=\"\n !ActionTextControl?.value && !ActionIconControl?.value\n \"\n mat-button\n color=\"primary\"\n >\n <mat-icon>cruelty_free</mat-icon>\n\n Example Button\n </button>\n </div>\n </ng-container>\n\n <!-- PR FORM -->\n\n <ng-container *ngIf=\"data.type === 'PullRequest'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"\n PullRequestSourceControlChanged($event)\n \"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n *ngIf=\"BranchOptions?.length > 0\"\n >\n <mat-form-field appearance=\"fill\">\n <mat-label>Base</mat-label>\n <mat-select formControlName=\"targetBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-icon>arrow_back</mat-icon>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Compare</mat-label>\n <mat-select formControlName=\"sourceBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <angular-editor\n id=\"pr-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- Feature Branch form -->\n\n <ng-container *ngIf=\"data.type === 'CreateBranch'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field>\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"\n FeatureBranchSourceControlChanged($event)\n \"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <mat-form-field *ngIf=\"OrganizationOptions?.length > 0\">\n <mat-select\n formControlName=\"organization\"\n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\"\n required\n >\n <ng-container\n *ngFor=\"let orgOpt of OrganizationOptions\"\n >\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"RepositoryOptions?.length > 0\">\n <mat-select\n formControlName=\"repository\"\n placeholder=\"Repository\"\n (selectionChange)=\"RepositoryChanged($event)\"\n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-around center\"\n *ngIf=\"BranchOptions?.length > 0\"\n >\n <mat-form-field>\n <mat-label>Base Branch</mat-label>\n <mat-select formControlName=\"sourceBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <input\n matInput\n placeholder=\"Create New Branch\"\n formControlName=\"targetBranch\"\n required\n />\n </mat-form-field>\n </div>\n </ng-container>\n\n <lcu-loader [loading]=\"Loading\"></lcu-loader>\n </form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button\n mat-raised-button\n color=\"primary\"\n fxFlex=\"25%\"\n class=\"submit\"\n (click)=\"Submit()\"\n [disabled]=\"IsDisabled()\"\n >\n Submit\n </button>\n</mat-dialog-actions>\n", styles: [".error{color:red}\n"], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i2$4.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }, { type: i3$1.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i4$1.MatLabel, selector: "mat-label" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
6568
6573
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedHeaderDialogComponent, decorators: [{
|
|
6569
6574
|
type: Component,
|
|
6570
|
-
args: [{ selector: 'lcu-feed-header-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>{{ data.dialogTitle }}</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <form [formGroup]=\"FeedHeaderFormGroup\">\n <!-- ISSUE FORM -->\n <ng-container *ngIf=\"data.type === 'OpenIssue'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"IssueSourceControlChanged($event)\"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <angular-editor\n class=\"angular-editor\"\n id=\"issue-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- ANNOUNCEMENT FORM -->\n\n <ng-container *ngIf=\"data.type === 'Announcement'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Subtitle\"\n formControlName=\"subtitle\"\n />\n </mat-form-field>\n\n <angular-editor\n id=\"announcement-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Text\"\n formControlName=\"actionText\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Link\"\n formControlName=\"actionLink\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Icon\"\n formControlName=\"actionIcon\"\n />\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <button\n *ngIf=\"ActionTextControl?.value || ActionIconControl?.value\"\n mat-button\n color=\"primary\"\n (click)=\"HandleAction(ActionLinkControl?.value)\"\n >\n <mat-icon *ngIf=\"ActionIconControl?.value\">{{\n ActionIconControl?.value\n }}</mat-icon>\n\n {{ ActionTextControl?.value }}\n </button>\n\n <button\n *ngIf=\"\n !ActionTextControl?.value && !ActionIconControl?.value\n \"\n mat-button\n color=\"primary\"\n >\n <mat-icon>cruelty_free</mat-icon>\n\n Example Button\n </button>\n </div>\n </ng-container>\n\n <!-- PR FORM -->\n\n <ng-container *ngIf=\"data.type === 'PullRequest'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"\n PullRequestSourceControlChanged($event)\n \"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n *ngIf=\"BranchOptions?.length > 0\"\n >\n <mat-form-field appearance=\"fill\">\n <mat-label>Base</mat-label>\n <mat-select formControlName=\"targetBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-icon>arrow_back</mat-icon>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Compare</mat-label>\n <mat-select formControlName=\"sourceBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <angular-editor\n id=\"pr-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- Feature Branch form -->\n\n <ng-container *ngIf=\"data.type === 'CreateBranch'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field>\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"\n FeatureBranchSourceControlChanged($event)\n \"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <mat-form-field *ngIf=\"OrganizationOptions?.length > 0\">\n <mat-select\n formControlName=\"organization\"\n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\"\n required\n >\n <ng-container\n *ngFor=\"let orgOpt of OrganizationOptions\"\n >\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"RepositoryOptions?.length > 0\">\n <mat-select\n formControlName=\"repository\"\n placeholder=\"Repository\"\n (selectionChange)=\"RepositoryChanged($event)\"\n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-around center\"\n *ngIf=\"BranchOptions?.length > 0\"\n >\n <mat-form-field>\n <mat-label>Base Branch</mat-label>\n <mat-select formControlName=\"sourceBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <input\n matInput\n placeholder=\"Create New Branch\"\n formControlName=\"targetBranch\"\n required\n />\n </mat-form-field>\n </div>\n </ng-container>\n\n <lcu-loader [loading]=\"Loading\"></lcu-loader>\n </form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button\n mat-raised-button\n color=\"primary\"\n fxFlex=\"25%\"\n class=\"submit\"\n (click)=\"Submit()\"\n [disabled]=\"IsDisabled()\"\n >\n Submit\n </button>\n</mat-dialog-actions>\n", styles: [""] }]
|
|
6575
|
+
args: [{ selector: 'lcu-feed-header-dialog', template: "<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>{{ data.dialogTitle }}</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <form [formGroup]=\"FeedHeaderFormGroup\">\n <!-- ISSUE FORM -->\n <ng-container *ngIf=\"data.type === 'OpenIssue'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"IssueSourceControlChanged($event)\"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <angular-editor\n class=\"angular-editor\"\n id=\"issue-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- ANNOUNCEMENT FORM -->\n\n <ng-container *ngIf=\"data.type === 'Announcement'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Subtitle\"\n formControlName=\"subtitle\"\n />\n </mat-form-field>\n\n <angular-editor\n id=\"announcement-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Text\"\n formControlName=\"actionText\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Link\"\n formControlName=\"actionLink\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Icon\"\n formControlName=\"actionIcon\"\n />\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <button\n *ngIf=\"ActionTextControl?.value || ActionIconControl?.value\"\n mat-button\n color=\"primary\"\n (click)=\"HandleAction(ActionLinkControl?.value)\"\n >\n <mat-icon *ngIf=\"ActionIconControl?.value\">{{\n ActionIconControl?.value\n }}</mat-icon>\n\n {{ ActionTextControl?.value }}\n </button>\n\n <button\n *ngIf=\"\n !ActionTextControl?.value && !ActionIconControl?.value\n \"\n mat-button\n color=\"primary\"\n >\n <mat-icon>cruelty_free</mat-icon>\n\n Example Button\n </button>\n </div>\n </ng-container>\n\n <!-- PR FORM -->\n\n <ng-container *ngIf=\"data.type === 'PullRequest'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"\n PullRequestSourceControlChanged($event)\n \"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n *ngIf=\"BranchOptions?.length > 0\"\n >\n <mat-form-field appearance=\"fill\">\n <mat-label>Base</mat-label>\n <mat-select formControlName=\"targetBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-icon>arrow_back</mat-icon>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Compare</mat-label>\n <mat-select formControlName=\"sourceBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <angular-editor\n id=\"pr-editor\"\n formControlName=\"editor\"\n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- Feature Branch form -->\n\n <ng-container *ngIf=\"data.type === 'CreateBranch'\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-form-field>\n <mat-label>Source Control</mat-label>\n <mat-select\n formControlName=\"sourceControl\"\n (selectionChange)=\"\n FeatureBranchSourceControlChanged($event)\n \"\n required\n >\n <ng-container\n *ngFor=\"let scLookup of SourceControlLookups\"\n >\n <mat-option\n *ngIf=\"SourceControls[scLookup]; let sc\"\n [value]=\"scLookup\"\n >\n {{ sc.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <mat-form-field *ngIf=\"OrganizationOptions?.length > 0\">\n <mat-select\n formControlName=\"organization\"\n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\"\n required\n >\n <ng-container\n *ngFor=\"let orgOpt of OrganizationOptions\"\n >\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"RepositoryOptions?.length > 0\">\n <mat-select\n formControlName=\"repository\"\n placeholder=\"Repository\"\n (selectionChange)=\"RepositoryChanged($event)\"\n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-around center\"\n *ngIf=\"BranchOptions?.length > 0\"\n >\n <mat-form-field>\n <mat-label>Base Branch</mat-label>\n <mat-select formControlName=\"sourceBranch\" required>\n <mat-option\n *ngFor=\"let branchOpt of BranchOptions\"\n [value]=\"branchOpt.Name\"\n >\n {{ branchOpt.Name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <input\n matInput\n placeholder=\"Create New Branch\"\n formControlName=\"targetBranch\"\n required\n />\n </mat-form-field>\n </div>\n </ng-container>\n\n <lcu-loader [loading]=\"Loading\"></lcu-loader>\n </form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\">\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\"\n div\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n>\n <button\n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button\n mat-raised-button\n color=\"primary\"\n fxFlex=\"25%\"\n class=\"submit\"\n (click)=\"Submit()\"\n [disabled]=\"IsDisabled()\"\n >\n Submit\n </button>\n</mat-dialog-actions>\n", styles: [".error{color:red}\n"] }]
|
|
6571
6576
|
}], ctorParameters: function () {
|
|
6572
6577
|
return [{ type: ApplicationsFlowService }, { type: EaCService }, { type: i1$1.FormBuilder }, { type: i2$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
6573
6578
|
type: Inject,
|