stream-chat-angular 3.0.0-beta.6 → 3.0.0-beta.9

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.
Files changed (46) hide show
  1. package/assets/version.d.ts +1 -1
  2. package/bundles/stream-chat-angular.umd.js +119 -120
  3. package/bundles/stream-chat-angular.umd.js.map +1 -1
  4. package/esm2015/assets/version.js +2 -2
  5. package/esm2015/lib/attachment-list/attachment-list.component.js +1 -1
  6. package/esm2015/lib/attachment.service.js +11 -5
  7. package/esm2015/lib/channel-header/channel-header.component.js +1 -1
  8. package/esm2015/lib/channel-list/channel-list.component.js +1 -1
  9. package/esm2015/lib/channel-preview/channel-preview.component.js +1 -1
  10. package/esm2015/lib/channel.service.js +11 -18
  11. package/esm2015/lib/chat-client.service.js +4 -3
  12. package/esm2015/lib/message/message.component.js +1 -1
  13. package/esm2015/lib/message-actions-box/message-actions-box.component.js +7 -8
  14. package/esm2015/lib/message-input/message-input.component.js +15 -2
  15. package/esm2015/lib/message-list/message-list.component.js +1 -1
  16. package/esm2015/lib/message-preview.js +4 -17
  17. package/esm2015/lib/message-reactions/message-reactions.component.js +1 -1
  18. package/esm2015/lib/read-by.js +1 -1
  19. package/esm2015/lib/types.js +1 -1
  20. package/fesm2015/stream-chat-angular.js +117 -118
  21. package/fesm2015/stream-chat-angular.js.map +1 -1
  22. package/lib/attachment-list/attachment-list.component.d.ts +6 -6
  23. package/lib/attachment.service.d.ts +1 -1
  24. package/lib/channel-header/channel-header.component.d.ts +3 -3
  25. package/lib/channel-list/channel-list.component.d.ts +4 -4
  26. package/lib/channel-preview/channel-preview.component.d.ts +3 -2
  27. package/lib/channel.service.d.ts +31 -29
  28. package/lib/chat-client.service.d.ts +11 -10
  29. package/lib/custom-templates.service.d.ts +2 -2
  30. package/lib/message/message.component.d.ts +22 -3
  31. package/lib/message-actions-box/message-actions-box.component.d.ts +3 -2
  32. package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +1 -1
  33. package/lib/message-input/message-input.component.d.ts +27 -3
  34. package/lib/message-input/textarea.directive.d.ts +1 -1
  35. package/lib/message-list/group-styles.d.ts +1 -1
  36. package/lib/message-preview.d.ts +2 -1
  37. package/lib/message-reactions/message-reactions.component.d.ts +4 -4
  38. package/lib/read-by.d.ts +2 -1
  39. package/lib/types.d.ts +25 -17
  40. package/package.json +2 -2
  41. package/src/assets/styles/css/index.css +1 -1
  42. package/src/assets/styles/css/index.css.map +1 -1
  43. package/src/assets/styles/scss/Avatar.scss +1 -1
  44. package/src/assets/styles/scss/ChannelHeader.scss +2 -0
  45. package/src/assets/styles/scss/VirtualMessage.scss +5 -0
  46. package/src/assets/version.ts +1 -1
@@ -37,7 +37,8 @@ export class ChatClientService {
37
37
  yield this.chatClient.connectUser(user, userTokenOrProvider);
38
38
  this.chatClient.setUserAgent(`stream-chat-angular-${version}-${this.chatClient.getUserAgent()}`);
39
39
  }));
40
- const channels = yield this.chatClient.queryChannels({ invite: 'pending' }, {}, { user_id: (_a = this.chatClient.user) === null || _a === void 0 ? void 0 : _a.id });
40
+ const channels = yield this.chatClient.queryChannels({ invite: 'pending' }, // TODO: find out why we need this typecast
41
+ {}, { user_id: (_a = this.chatClient.user) === null || _a === void 0 ? void 0 : _a.id });
41
42
  this.pendingInvitesSubject.next(channels);
42
43
  this.appSettingsSubject.next(undefined);
43
44
  this.chatClient.on((e) => {
@@ -111,7 +112,7 @@ export class ChatClientService {
111
112
  { name: { $autocomplete: searchTerm } },
112
113
  ],
113
114
  id: { $ne: this.chatClient.userID },
114
- });
115
+ }); // TODO: find out why we need this typecast
115
116
  return result.users;
116
117
  });
117
118
  }
@@ -141,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
141
142
  providedIn: 'root',
142
143
  }]
143
144
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.NotificationService }]; } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBT2xFLE9BQU8sRUFBc0IsVUFBVSxFQUFtQixNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVE1Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFpQzVCLFlBQ1UsTUFBYyxFQUNkLG1CQUF3QztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVgxQyx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBYyxDQUFDLENBQUMsQ0FBQztRQUN4RCwyQkFBc0IsR0FBRyxJQUFJLGFBQWEsQ0FBdUIsQ0FBQyxDQUFDLENBQUM7UUFDcEUsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQzlDLFNBQVMsQ0FDVixDQUFDO1FBQ00sMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBRWpELEVBQUUsQ0FBQyxDQUFDO1FBTUosSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FB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Q0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ2pFO2lCQUFNLElBQ0wsQ0FBQyxDQUFDLElBQUksS0FBSyw4QkFBOEI7Z0JBQ3pDLENBQUMsQ0FBQyxJQUFJLEtBQUssOEJBQThCLEVBQ3pDO2dCQUNBLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQ3BDLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLEdBQUcsT0FBSyxNQUFBLENBQUMsQ0FBQyxPQUFPLDBDQUFFLEdBQUcsQ0FBQSxDQUFBLEVBQUEsQ0FDakMsQ0FBQztnQkFDRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDaEIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUM7aUJBQ3REO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzhHQWhLVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ2hhbm5lbCxcbiAgQ2hhbm5lbFJlc3BvbnNlLFxuICBPd25Vc2VyUmVzcG9uc2UsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3MsIEV2ZW50LCBTdHJlYW1DaGF0LCBUb2tlbk9yUHJvdmlkZXIgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vYXNzZXRzL3ZlcnNpb24nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBDbGllbnRFdmVudCA9IHtcbiAgZXZlbnRUeXBlOiBzdHJpbmc7XG4gIGV2ZW50OiBFdmVudDtcbn07XG5cbi8qKlxuICogVGhlIGBDaGF0Q2xpZW50YCBzZXJ2aWNlIGNvbm5lY3RzIHRoZSB1c2VyIHRvIHRoZSBTdHJlYW0gY2hhdC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENoYXRDbGllbnRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRoZSBbU3RyZWFtQ2hhdCBjbGllbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtanMvYmxvYi9tYXN0ZXIvc3JjL2NsaWVudC50cykgaW5zdGFuY2UuIEluIGdlbmVyYWwgeW91IHNob3VsZG4ndCBuZWVkIHRvIGFjY2VzcyB0aGUgY2xpZW50LCBidXQgaXQncyB0aGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgaXQuXG4gICAqL1xuICBjaGF0Q2xpZW50ITogU3RyZWFtQ2hhdDtcbiAgLyoqXG4gICAqIEVtaXRzIFtgQ2xpZW50RXZlbnRgXShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWFuZ3VsYXIvYmxvYi9tYXN0ZXIvcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYXQtY2xpZW50LnNlcnZpY2UudHMpIGV2ZW50cy4gVGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24gY292ZXJzIFt0aGUgbGlzdCBvZiBjbGllbnQsIHVzZXIgcHJlc2VuY2UgYW5kIG5vdGlmaWNhdGlvbiBldmVudHNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2V2ZW50X29iamVjdC8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuXG4gICAqIDo6OmltcG9ydGFudFxuICAgKiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGlzIE9ic2VydmFibGUgb3BlcmF0ZXMgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIHpvbmUuIElmIHlvdSBzdWJzY3JpYmUgdG8gaXQsIHlvdSBuZWVkIHRvIG1hbnVhbGx5IHJlZW50ZXIgQW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gem9uZSwgb3VyIFtDaGFuZ2UgZGV0ZWN0aW9uIGd1aWRlXSguLi9jb25jZXB0cy9jaGFuZ2UtZGV0ZWN0aW9uLm1keCkgZXhwbGFpbnMgdGhpcyBpbiBkZXRhaWwuXG4gICAqIDo6OlxuICAgKi9cbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxDbGllbnRFdmVudD47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBbYXBwbGljYXRpb24gc2V0dGluZ3NdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2FwcF9zZXR0aW5nX292ZXJ2aWV3Lz9sYW5ndWFnZT1qYXZhc2NyaXB0KS4gU2luY2UgZ2V0dGluZyB0aGUgYXBwbGljYXRpb24gc2V0dGluZ3MgaXMgYW4gZXhwZW5zaXZlIEFQSSBjYWxsIGFuZCB3ZSBkb24ndCBhbHdheXMgbmVlZCB0aGUgcmVzdWx0LCB0aGlzIGlzIG5vdCBpbml0aWFsaXplZCBieSBkZWZhdWx0LCB5b3UgbmVlZCB0byBjYWxsIGBnZXRBcHBsaWNhdGlvblNldHRpbmdzYCB0byBsb2FkIHRoZW0uXG4gICAqL1xuICBhcHBTZXR0aW5ncyQ6IE9ic2VydmFibGU8QXBwU2V0dGluZ3MgfCB1bmRlZmluZWQ+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiBzdGF0ZSBvZiB0aGUgdXNlciAoYG9ubGluZWAgb3IgYG9mZmxpbmVgKVxuICAgKi9cbiAgY29ubmVjdGlvblN0YXRlJDogT2JzZXJ2YWJsZTwnb2ZmbGluZScgfCAnb25saW5lJz47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgbGlzdCBvZiBwZW5kaW5nIGludml0ZXMgb2YgdGhlIHVzZXIuIEl0IGVtaXRzIGV2ZXJ5IHBlbmRpbmcgaW52aXRhdGlvbiBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHRoZW4gZXh0ZW5kcyB0aGUgbGlzdCB3aGVuIGEgbmV3IGludml0ZSBpcyByZWNlaXZlZC4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlIFtjaGFubmVsIGludml0YXRpb25zXSguLi9jb2RlLWV4YW1wbGVzL2NoYW5uZWwtaW52aXRlcy5tZHgpIGd1aWRlLlxuICAgKi9cbiAgcGVuZGluZ0ludml0ZXMkOiBPYnNlcnZhYmxlPChDaGFubmVsUmVzcG9uc2UgfCBDaGFubmVsKVtdPjtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Q2xpZW50RXZlbnQ+KDEpO1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0ZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDwnb2ZmbGluZScgfCAnb25saW5lJz4oMSk7XG4gIHByaXZhdGUgYXBwU2V0dGluZ3NTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIHByaXZhdGUgcGVuZGluZ0ludml0ZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICAoQ2hhbm5lbFJlc3BvbnNlIHwgQ2hhbm5lbClbXVxuICA+KFtdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdGUkID0gdGhpcy5jb25uZWN0aW9uU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3MkID0gdGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlcyQgPSB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgW2BTdHJlYW1DaGF0YF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1qcy9ibG9iLzY2OGIzZTU1MjEzMzlmNGUxNGZjNjU3ODM0NTMxYjRjOGJmODE3NmIvc3JjL2NsaWVudC50cyNMMTI0KSBpbnN0YW5jZSB1c2luZyB0aGUgcHJvdmlkZWQgYGFwaUtleWAsIGFuZCBjb25uZWN0cyBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gbWV0YSBkYXRhIGFuZCB0b2tlbi4gTW9yZSBpbmZvIGFib3V0IFtjb25uZWN0aW5nIHVzZXJzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9pbml0X2FuZF91c2Vycy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgY2FuIGJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICAgKiBAcGFyYW0gYXBpS2V5XG4gICAqIEBwYXJhbSB1c2VyT3JJZFxuICAgKiBAcGFyYW0gdXNlclRva2VuT3JQcm92aWRlclxuICAgKi9cbiAgYXN5bmMgaW5pdChcbiAgICBhcGlLZXk6IHN0cmluZyxcbiAgICB1c2VyT3JJZDogc3RyaW5nIHwgT3duVXNlclJlc3BvbnNlIHwgVXNlclJlc3BvbnNlLFxuICAgIHVzZXJUb2tlbk9yUHJvdmlkZXI6IFRva2VuT3JQcm92aWRlclxuICApIHtcbiAgICB0aGlzLmNoYXRDbGllbnQgPSBTdHJlYW1DaGF0LmdldEluc3RhbmNlKGFwaUtleSk7XG4gICAgdGhpcy5jaGF0Q2xpZW50LmRldlRva2VuO1xuICAgIGF3YWl0IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0eXBlb2YgdXNlck9ySWQgPT09ICdzdHJpbmcnID8geyBpZDogdXNlck9ySWQgfSA6IHVzZXJPcklkO1xuICAgICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmNvbm5lY3RVc2VyKHVzZXIsIHVzZXJUb2tlbk9yUHJvdmlkZXIpO1xuICAgICAgdGhpcy5jaGF0Q2xpZW50LnNldFVzZXJBZ2VudChcbiAgICAgICAgYHN0cmVhbS1jaGF0LWFuZ3VsYXItJHt2ZXJzaW9ufS0ke3RoaXMuY2hhdENsaWVudC5nZXRVc2VyQWdlbnQoKX1gXG4gICAgICApO1xuICAgIH0pO1xuICAgIGNvbnN0IGNoYW5uZWxzID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5Q2hhbm5lbHMoXG4gICAgICB7IGludml0ZTogJ3BlbmRpbmcnIH0sXG4gICAgICB7fSxcbiAgICAgIHsgdXNlcl9pZDogdGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkIH1cbiAgICApO1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoY2hhbm5lbHMpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYXRDbGllbnQub24oKGUpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlUGVuZGluZ0ludml0ZXMoZSk7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QubmV4dCh7XG4gICAgICAgIGV2ZW50VHlwZTogZS50eXBlLFxuICAgICAgICBldmVudDogZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGxldCByZW1vdmVOb3RpZmljYXRpb246IHVuZGVmaW5lZCB8IEZ1bmN0aW9uO1xuICAgIHRoaXMuY2hhdENsaWVudC5vbignY29ubmVjdGlvbi5jaGFuZ2VkJywgKGUpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzT25saW5lID0gZS5vbmxpbmU7XG4gICAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAgIGlmIChyZW1vdmVOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVOb3RpZmljYXRpb24gPVxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgJ3N0cmVhbUNoYXQuQ29ubmVjdGlvbiBmYWlsdXJlLCByZWNvbm5lY3Rpbmcgbm93Li4uJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZVN1YmplY3QubmV4dChpc09ubGluZSA/ICdvbmxpbmUnIDogJ29mZmxpbmUnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2Nvbm5lY3RzIHRoZSBjdXJyZW50IHVzZXIsIGFuZCBjbG9zZXMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLiBVc2VmdWwgd2hlbiBkaXNjb25uZWN0aW5nIGEgY2hhdCB1c2VyLCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCBbYHJlc2V0YF0oLi9DaGFubmVsU2VydmljZS5tZHgvI3Jlc2V0KS5cbiAgICovXG4gIGFzeW5jIGRpc2Nvbm5lY3RVc2VyKCkge1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoW10pO1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5kaXNjb25uZWN0VXNlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjdXJyZW50IFthcHBsaWNhdGlvbiBzZXR0aW5nc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXBwX3NldHRpbmdfb3ZlcnZpZXcvP2xhbmd1YWdlPWphdmFzY3JpcHQpLCBpZiB0aGUgYXBwbGljYXRpb24gc2V0dGluZ3MgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkLCBpdCBkb2VzIG5vdGhpbmcuXG4gICAqL1xuICBhc3luYyBnZXRBcHBTZXR0aW5ncygpIHtcbiAgICBpZiAodGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZXR0aW5ncyA9IGF3YWl0IHRoaXMuY2hhdENsaWVudC5nZXRBcHBTZXR0aW5ncygpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQoc2V0dGluZ3MuYXBwIHx8IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIHRoZSBtZXNzYWdlIHdpdGggdGhlIGdpdmVuIElELiBJZiB5b3Ugd2FudCB0byBrbm93IFttb3JlIGFib3V0IGZsYWdzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9tb2RlcmF0aW9uLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBjaGVjayBvdXQgdGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWRcbiAgICovXG4gIGFzeW5jIGZsYWdNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmZsYWdNZXNzYWdlKG1lc3NhZ2VJZCk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoZXMgZm9yIHVzZXJzIGluIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGhhdmUgSUQgb3IgbmFtZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgc2VhcmNoIHRlcm1cbiAgICogQHBhcmFtIHNlYXJjaFRlcm1cbiAgICogQHJldHVybnMgVGhlIHVzZXJzIG1hdGNoaW5nIHRoZSBzZWFyY2hcbiAgICovXG4gIGFzeW5jIGF1dG9jb21wbGV0ZVVzZXJzKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmICghc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnQucXVlcnlVc2Vycyh7XG4gICAgICAkb3I6IFtcbiAgICAgICAgeyBpZDogeyAkYXV0b2NvbXBsZXRlOiBzZWFyY2hUZXJtIH0gfSxcbiAgICAgICAgeyBuYW1lOiB7ICRhdXRvY29tcGxldGU6IHNlYXJjaFRlcm0gfSB9LFxuICAgICAgXSxcbiAgICAgIGlkOiB7ICRuZTogdGhpcy5jaGF0Q2xpZW50LnVzZXJJRCEgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LnVzZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQZW5kaW5nSW52aXRlcyhlOiBFdmVudCkge1xuICAgIGlmIChlLm1lbWJlcj8udXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudC51c2VyPy5pZCAmJiBlLmNoYW5uZWwpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmdJbnZpdGVzID0gdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlZCcpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QubmV4dChbLi4ucGVuZGluZ0ludml0ZXMsIGUuY2hhbm5lbF0pO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZS50eXBlID09PSAnbm90aWZpY2F0aW9uLmludml0ZV9hY2NlcHRlZCcgfHxcbiAgICAgICAgZS50eXBlID09PSAnbm90aWZpY2F0aW9uLmludml0ZV9yZWplY3RlZCdcbiAgICAgICkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHBlbmRpbmdJbnZpdGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoaSkgPT4gaT8uY2lkID09PSBlLmNoYW5uZWw/LmNpZFxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgcGVuZGluZ0ludml0ZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KFsuLi5wZW5kaW5nSW52aXRlc10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBU2xFLE9BQU8sRUFBc0IsVUFBVSxFQUFtQixNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVc1Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFtQzVCLFlBQ1UsTUFBYyxFQUNkLG1CQUF3QztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVgxQyx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBaUIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUM5QyxTQUFTLENBQ1YsQ0FBQztRQUNNLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUVqRCxFQUFFLENBQUMsQ0FBQztRQU1KLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENB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SUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ2pFO2lCQUFNLElBQ0wsQ0FBQyxDQUFDLElBQUksS0FBSyw4QkFBOEI7Z0JBQ3pDLENBQUMsQ0FBQyxJQUFJLEtBQUssOEJBQThCLEVBQ3pDO2dCQUNBLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQ3BDLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLEdBQUcsT0FBSyxNQUFBLENBQUMsQ0FBQyxPQUFPLDBDQUFFLEdBQUcsQ0FBQSxDQUFBLEVBQUEsQ0FDakMsQ0FBQztnQkFDRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDaEIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUM7aUJBQ3REO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzhHQWxLVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ2hhbm5lbCxcbiAgQ2hhbm5lbEZpbHRlcnMsXG4gIENoYW5uZWxSZXNwb25zZSxcbiAgT3duVXNlclJlc3BvbnNlLFxuICBVc2VyRmlsdGVycyxcbiAgVXNlclJlc3BvbnNlLFxufSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBcHBTZXR0aW5ncywgRXZlbnQsIFN0cmVhbUNoYXQsIFRva2VuT3JQcm92aWRlciB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi9hc3NldHMvdmVyc2lvbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIENsaWVudEV2ZW50PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICBldmVudDogRXZlbnQ8VD47XG59O1xuXG4vKipcbiAqIFRoZSBgQ2hhdENsaWVudGAgc2VydmljZSBjb25uZWN0cyB0aGUgdXNlciB0byB0aGUgU3RyZWFtIGNoYXQuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0Q2xpZW50U2VydmljZTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+IHtcbiAgLyoqXG4gICAqIFRoZSBbU3RyZWFtQ2hhdCBjbGllbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtanMvYmxvYi9tYXN0ZXIvc3JjL2NsaWVudC50cykgaW5zdGFuY2UuIEluIGdlbmVyYWwgeW91IHNob3VsZG4ndCBuZWVkIHRvIGFjY2VzcyB0aGUgY2xpZW50LCBidXQgaXQncyB0aGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgaXQuXG4gICAqL1xuICBjaGF0Q2xpZW50ITogU3RyZWFtQ2hhdDxUPjtcbiAgLyoqXG4gICAqIEVtaXRzIFtgQ2xpZW50RXZlbnRgXShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWFuZ3VsYXIvYmxvYi9tYXN0ZXIvcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYXQtY2xpZW50LnNlcnZpY2UudHMpIGV2ZW50cy4gVGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24gY292ZXJzIFt0aGUgbGlzdCBvZiBjbGllbnQsIHVzZXIgcHJlc2VuY2UgYW5kIG5vdGlmaWNhdGlvbiBldmVudHNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2V2ZW50X29iamVjdC8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuXG4gICAqIDo6OmltcG9ydGFudFxuICAgKiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGlzIE9ic2VydmFibGUgb3BlcmF0ZXMgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIHpvbmUuIElmIHlvdSBzdWJzY3JpYmUgdG8gaXQsIHlvdSBuZWVkIHRvIG1hbnVhbGx5IHJlZW50ZXIgQW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gem9uZSwgb3VyIFtDaGFuZ2UgZGV0ZWN0aW9uIGd1aWRlXSguLi9jb25jZXB0cy9jaGFuZ2UtZGV0ZWN0aW9uLm1keCkgZXhwbGFpbnMgdGhpcyBpbiBkZXRhaWwuXG4gICAqIDo6OlxuICAgKi9cbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxDbGllbnRFdmVudDxUPj47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBbYXBwbGljYXRpb24gc2V0dGluZ3NdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2FwcF9zZXR0aW5nX292ZXJ2aWV3Lz9sYW5ndWFnZT1qYXZhc2NyaXB0KS4gU2luY2UgZ2V0dGluZyB0aGUgYXBwbGljYXRpb24gc2V0dGluZ3MgaXMgYW4gZXhwZW5zaXZlIEFQSSBjYWxsIGFuZCB3ZSBkb24ndCBhbHdheXMgbmVlZCB0aGUgcmVzdWx0LCB0aGlzIGlzIG5vdCBpbml0aWFsaXplZCBieSBkZWZhdWx0LCB5b3UgbmVlZCB0byBjYWxsIGBnZXRBcHBsaWNhdGlvblNldHRpbmdzYCB0byBsb2FkIHRoZW0uXG4gICAqL1xuICBhcHBTZXR0aW5ncyQ6IE9ic2VydmFibGU8QXBwU2V0dGluZ3MgfCB1bmRlZmluZWQ+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiBzdGF0ZSBvZiB0aGUgdXNlciAoYG9ubGluZWAgb3IgYG9mZmxpbmVgKVxuICAgKi9cbiAgY29ubmVjdGlvblN0YXRlJDogT2JzZXJ2YWJsZTwnb2ZmbGluZScgfCAnb25saW5lJz47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgbGlzdCBvZiBwZW5kaW5nIGludml0ZXMgb2YgdGhlIHVzZXIuIEl0IGVtaXRzIGV2ZXJ5IHBlbmRpbmcgaW52aXRhdGlvbiBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHRoZW4gZXh0ZW5kcyB0aGUgbGlzdCB3aGVuIGEgbmV3IGludml0ZSBpcyByZWNlaXZlZC4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlIFtjaGFubmVsIGludml0YXRpb25zXSguLi9jb2RlLWV4YW1wbGVzL2NoYW5uZWwtaW52aXRlcy5tZHgpIGd1aWRlLlxuICAgKi9cbiAgcGVuZGluZ0ludml0ZXMkOiBPYnNlcnZhYmxlPChDaGFubmVsUmVzcG9uc2U8VD4gfCBDaGFubmVsPFQ+KVtdPjtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Q2xpZW50RXZlbnQ8VD4+KDEpO1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0ZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDwnb2ZmbGluZScgfCAnb25saW5lJz4oMSk7XG4gIHByaXZhdGUgYXBwU2V0dGluZ3NTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIHByaXZhdGUgcGVuZGluZ0ludml0ZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICAoQ2hhbm5lbFJlc3BvbnNlPFQ+IHwgQ2hhbm5lbDxUPilbXVxuICA+KFtdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdGUkID0gdGhpcy5jb25uZWN0aW9uU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3MkID0gdGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlcyQgPSB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgW2BTdHJlYW1DaGF0YF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1qcy9ibG9iLzY2OGIzZTU1MjEzMzlmNGUxNGZjNjU3ODM0NTMxYjRjOGJmODE3NmIvc3JjL2NsaWVudC50cyNMMTI0KSBpbnN0YW5jZSB1c2luZyB0aGUgcHJvdmlkZWQgYGFwaUtleWAsIGFuZCBjb25uZWN0cyBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gbWV0YSBkYXRhIGFuZCB0b2tlbi4gTW9yZSBpbmZvIGFib3V0IFtjb25uZWN0aW5nIHVzZXJzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9pbml0X2FuZF91c2Vycy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgY2FuIGJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICAgKiBAcGFyYW0gYXBpS2V5XG4gICAqIEBwYXJhbSB1c2VyT3JJZFxuICAgKiBAcGFyYW0gdXNlclRva2VuT3JQcm92aWRlclxuICAgKi9cbiAgYXN5bmMgaW5pdChcbiAgICBhcGlLZXk6IHN0cmluZyxcbiAgICB1c2VyT3JJZDogc3RyaW5nIHwgT3duVXNlclJlc3BvbnNlPFQ+IHwgVXNlclJlc3BvbnNlPFQ+LFxuICAgIHVzZXJUb2tlbk9yUHJvdmlkZXI6IFRva2VuT3JQcm92aWRlclxuICApIHtcbiAgICB0aGlzLmNoYXRDbGllbnQgPSBTdHJlYW1DaGF0LmdldEluc3RhbmNlPFQ+KGFwaUtleSk7XG4gICAgdGhpcy5jaGF0Q2xpZW50LmRldlRva2VuO1xuICAgIGF3YWl0IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0eXBlb2YgdXNlck9ySWQgPT09ICdzdHJpbmcnID8geyBpZDogdXNlck9ySWQgfSA6IHVzZXJPcklkO1xuICAgICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmNvbm5lY3RVc2VyKHVzZXIsIHVzZXJUb2tlbk9yUHJvdmlkZXIpO1xuICAgICAgdGhpcy5jaGF0Q2xpZW50LnNldFVzZXJBZ2VudChcbiAgICAgICAgYHN0cmVhbS1jaGF0LWFuZ3VsYXItJHt2ZXJzaW9ufS0ke3RoaXMuY2hhdENsaWVudC5nZXRVc2VyQWdlbnQoKX1gXG4gICAgICApO1xuICAgIH0pO1xuICAgIGNvbnN0IGNoYW5uZWxzID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5Q2hhbm5lbHMoXG4gICAgICB7IGludml0ZTogJ3BlbmRpbmcnIH0gYXMgYW55IGFzIENoYW5uZWxGaWx0ZXJzPFQ+LCAvLyBUT0RPOiBmaW5kIG91dCB3aHkgd2UgbmVlZCB0aGlzIHR5cGVjYXN0XG4gICAgICB7fSxcbiAgICAgIHsgdXNlcl9pZDogdGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkIH1cbiAgICApO1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoY2hhbm5lbHMpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYXRDbGllbnQub24oKGUpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlUGVuZGluZ0ludml0ZXMoZSk7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QubmV4dCh7XG4gICAgICAgIGV2ZW50VHlwZTogZS50eXBlLFxuICAgICAgICBldmVudDogZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGxldCByZW1vdmVOb3RpZmljYXRpb246IHVuZGVmaW5lZCB8IEZ1bmN0aW9uO1xuICAgIHRoaXMuY2hhdENsaWVudC5vbignY29ubmVjdGlvbi5jaGFuZ2VkJywgKGUpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzT25saW5lID0gZS5vbmxpbmU7XG4gICAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAgIGlmIChyZW1vdmVOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVOb3RpZmljYXRpb24gPVxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgJ3N0cmVhbUNoYXQuQ29ubmVjdGlvbiBmYWlsdXJlLCByZWNvbm5lY3Rpbmcgbm93Li4uJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZVN1YmplY3QubmV4dChpc09ubGluZSA/ICdvbmxpbmUnIDogJ29mZmxpbmUnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2Nvbm5lY3RzIHRoZSBjdXJyZW50IHVzZXIsIGFuZCBjbG9zZXMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLiBVc2VmdWwgd2hlbiBkaXNjb25uZWN0aW5nIGEgY2hhdCB1c2VyLCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCBbYHJlc2V0YF0oLi9DaGFubmVsU2VydmljZS5tZHgvI3Jlc2V0KS5cbiAgICovXG4gIGFzeW5jIGRpc2Nvbm5lY3RVc2VyKCkge1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoW10pO1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5kaXNjb25uZWN0VXNlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjdXJyZW50IFthcHBsaWNhdGlvbiBzZXR0aW5nc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXBwX3NldHRpbmdfb3ZlcnZpZXcvP2xhbmd1YWdlPWphdmFzY3JpcHQpLCBpZiB0aGUgYXBwbGljYXRpb24gc2V0dGluZ3MgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkLCBpdCBkb2VzIG5vdGhpbmcuXG4gICAqL1xuICBhc3luYyBnZXRBcHBTZXR0aW5ncygpIHtcbiAgICBpZiAodGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZXR0aW5ncyA9IGF3YWl0IHRoaXMuY2hhdENsaWVudC5nZXRBcHBTZXR0aW5ncygpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQoc2V0dGluZ3MuYXBwIHx8IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIHRoZSBtZXNzYWdlIHdpdGggdGhlIGdpdmVuIElELiBJZiB5b3Ugd2FudCB0byBrbm93IFttb3JlIGFib3V0IGZsYWdzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9tb2RlcmF0aW9uLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSBjaGVjayBvdXQgdGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWRcbiAgICovXG4gIGFzeW5jIGZsYWdNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmZsYWdNZXNzYWdlKG1lc3NhZ2VJZCk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoZXMgZm9yIHVzZXJzIGluIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGhhdmUgSUQgb3IgbmFtZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgc2VhcmNoIHRlcm1cbiAgICogQHBhcmFtIHNlYXJjaFRlcm1cbiAgICogQHJldHVybnMgVGhlIHVzZXJzIG1hdGNoaW5nIHRoZSBzZWFyY2hcbiAgICovXG4gIGFzeW5jIGF1dG9jb21wbGV0ZVVzZXJzKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmICghc2VhcmNoVGVybSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnQucXVlcnlVc2Vycyh7XG4gICAgICAkb3I6IFtcbiAgICAgICAgeyBpZDogeyAkYXV0b2NvbXBsZXRlOiBzZWFyY2hUZXJtIH0gfSxcbiAgICAgICAgeyBuYW1lOiB7ICRhdXRvY29tcGxldGU6IHNlYXJjaFRlcm0gfSB9LFxuICAgICAgXSxcbiAgICAgIGlkOiB7ICRuZTogdGhpcy5jaGF0Q2xpZW50LnVzZXJJRCEgfSxcbiAgICB9IGFzIFVzZXJGaWx0ZXJzPFQ+KTsgLy8gVE9ETzogZmluZCBvdXQgd2h5IHdlIG5lZWQgdGhpcyB0eXBlY2FzdFxuICAgIHJldHVybiByZXN1bHQudXNlcnM7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBlbmRpbmdJbnZpdGVzKGU6IEV2ZW50PFQ+KSB7XG4gICAgaWYgKGUubWVtYmVyPy51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkICYmIGUuY2hhbm5lbCkge1xuICAgICAgY29uc3QgcGVuZGluZ0ludml0ZXMgPSB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKGUudHlwZSA9PT0gJ25vdGlmaWNhdGlvbi5pbnZpdGVkJykge1xuICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KFsuLi5wZW5kaW5nSW52aXRlcywgZS5jaGFubmVsXSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX2FjY2VwdGVkJyB8fFxuICAgICAgICBlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlX3JlamVjdGVkJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGVuZGluZ0ludml0ZXMuZmluZEluZGV4KFxuICAgICAgICAgIChpKSA9PiBpPy5jaWQgPT09IGUuY2hhbm5lbD8uY2lkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBwZW5kaW5nSW52aXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoWy4uLnBlbmRpbmdJbnZpdGVzXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -257,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
257
257
  type: ViewChild,
258
258
  args: ['container']
259
259
  }] } });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFVckM7O0dBRUc7QUFNSCxNQUFNLE9BQU8sZ0JBQWdCO0lBbUMzQixZQUNVLGlCQUFvQyxFQUNwQyxjQUE4QixFQUM5QixzQkFBOEMsRUFDOUMsS0FBd0I7UUFIeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWxDbEM7O1dBRUc7UUFDTSwwQkFBcUIsR0FBYSxFQUFFLENBQUM7UUFLOUM7O1dBRUc7UUFDTSxTQUFJLEdBQXNCLE1BQU0sQ0FBQztRQUkxQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLCtCQUEwQixHQUFHLENBQUMsQ0FBQztRQUMvQixxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO1FBTTdCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQVd6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQ3BELENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLENBQ2hELENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUMzRCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLENBQ3ZELENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsc0JBQXNCLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsUUFBUSxDQUFDLENBQzFELENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUM3RCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsUUFBUSxDQUFDLENBQ3pELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxPQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDakMsSUFBSSxDQUFDLGlCQUFpQjtnQkFDcEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsb0JBQW9CO2dCQUN2QixJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksbUJBQW1COztRQUNyQixPQUFPLENBQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLElBQUksMENBQUUsRUFBRSxPQUFLLE1BQUEsSUFBSSxDQUFDLElBQUksMENBQUUsRUFBRSxDQUFBLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksWUFBWTs7UUFDZCxPQUFPLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFDLENBQUMsRUFBRSxNQUFLLE1BQUEsSUFBSSxDQUFDLElBQUksMENBQUUsRUFBRSxDQUFBLENBQUEsRUFBQSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLHlCQUF5QjtRQUMzQixPQUFPLENBQ0wsSUFBSSxDQUFDLE9BQU87WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVTtZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksVUFBVTs7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxVQUFVLENBQUEsRUFBRTtZQUM5QyxPQUFPO1NBQ1I7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxDQUFDLENBQ04sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVc7WUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssUUFBUTtZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQ2pDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUNwRCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksYUFBYTs7UUFDZixPQUFPLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsV0FBVyxDQUFBLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBSSxZQUFZOztRQUNkLE9BQU8sQ0FDTCxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLGVBQWUsQ0FBQTtZQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDckQsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGVBQWU7O1FBQ2pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxXQUFXLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxDQUNMLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxLQUFLO1lBQ25DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3pELENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSx3QkFBd0I7O1FBQzFCLE1BQU0sbUJBQW1CLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLGNBQWMsMENBQUUsV0FBVyxDQUFDO1FBQ3RFLE9BQU8sbUJBQW1CLElBQUksbUJBQW1CLENBQUMsTUFBTTtZQUN0RCxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELHdCQUF3Qjs7UUFDdEIsT0FBTztZQUNMLFNBQVMsRUFBRSxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsRUFBRSxLQUFJLEVBQUU7WUFDakMsV0FBVyxFQUFFLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxXQUFXLEtBQUksRUFBRTtTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELDBCQUEwQjs7UUFDeEIsT0FBTztZQUNMLHFCQUFxQixFQUFFLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxlQUFlLEtBQUksRUFBRTtZQUMxRCxlQUFlLEVBQUUsQ0FBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLGdCQUFnQixLQUFJLEVBQUU7WUFDckQsY0FBYyxFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDM0MsMkJBQTJCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUN0QyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUM7WUFDeEMsU0FBUyxFQUFFLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsRUFBRTtZQUMzQixZQUFZLEVBQUUsQ0FBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLGFBQWEsS0FBSSxFQUFFO1NBQ2hELENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYTtRQUNYLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxjQUFjLEVBQUUsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixNQUFNLFlBQVksR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFOztZQUNwQyxJQUFJLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWMsQ0FBQyxDQUFBLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDbkQ7UUFDSCxDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBd0I7UUFDeEMsT0FBTztZQUNMLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTztZQUM1QixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUs7U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZTtZQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUNoQyxjQUFjLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtZQUMxQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsZ0NBQWdDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQztnQkFDeEMsNEZBQTRGO2dCQUM1RixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLENBQUM7WUFDRCxzQkFBc0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDekMsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCOztRQUN4QixJQUFJLE9BQU8sR0FBRyxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSxNQUFJLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSxDQUFBLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNMLGdEQUFnRDtZQUNoRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzdCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzthQUN0QztZQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDOUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3pDO1lBQ0QsSUFDRSxDQUFDLElBQUksQ0FBQyxPQUFRLENBQUMsZUFBZTtnQkFDOUIsSUFBSSxDQUFDLE9BQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDMUM7Z0JBQ0EseUhBQXlIO2dCQUN6SCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDNUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQ3ZCLEtBQUssRUFDTCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsNkNBQTZDLEtBQUssU0FBUyxDQUN2RSxDQUFDO2dCQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2FBQ3JEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7Z0JBQzNCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQzt3QkFDekIsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLElBQUksRUFBRSxNQUFNO3FCQUNiLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO3dCQUN6QixPQUFPLEVBQUUsT0FBTzt3QkFDaEIsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsSUFBSTtxQkFDTCxDQUFDLENBQUM7b0JBQ0gsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7aUJBQzdEO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzZHQXRSVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQix5VEM1QzdCLCsyY0F3WUE7MkZENVZhLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxNQUFNLEVBQUUsRUFBRTtpQkFDWDswTUFLVSxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBZTBCLFNBQVM7c0JBQXhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXREZXZpY2VXaWR0aCB9IGZyb20gJy4uL2RldmljZS13aWR0aCc7XG5pbXBvcnQge1xuICBBdHRhY2htZW50TGlzdENvbnRleHQsXG4gIERlZmF1bHRVc2VyVHlwZSxcbiAgTWVudGlvblRlbXBsYXRlQ29udGV4dCxcbiAgTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0LFxuICBNZXNzYWdlUmVhY3Rpb25zQ29udGV4dCxcbiAgU3RyZWFtTWVzc2FnZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgcGFyc2VEYXRlIH0gZnJvbSAnLi9wYXJzZS1kYXRlJztcbmltcG9ydCB7IGdldFJlYWRCeVRleHQgfSBmcm9tICcuL3JlYWQtYnktdGV4dCc7XG5pbXBvcnQgZW1vamlSZWdleCBmcm9tICdlbW9qaS1yZWdleCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuXG50eXBlIE1lc3NhZ2VQYXJ0ID0ge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHR5cGU6ICd0ZXh0JyB8ICdtZW50aW9uJztcbiAgdXNlcj86IFVzZXJSZXNwb25zZTtcbn07XG5cbi8qKlxuICogVGhlIGBNZXNzYWdlYCBjb21wb25lbnQgZGlzcGxheXMgYSBtZXNzYWdlIHdpdGggYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBzdWNoIGFzIHNlbmRlciBhbmQgZGF0ZSwgYW5kIGVuYWJsZXMgW2ludGVyYWN0aW9uIHdpdGggdGhlIG1lc3NhZ2UgKGkuZS4gZWRpdCBvciByZWFjdCldKC4uL2NvbmNlcHRzL21lc3NhZ2UtaW50ZXJhY3Rpb25zLm1keCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBbY2hhbm5lbCBjYXBhYmlsaXRpZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSB0aGF0IGFyZSBlbmFibGVkIGZvciB0aGUgY3VycmVudCB1c2VyLCB0aGUgbGlzdCBvZiBbc3VwcG9ydGVkIGludGVyYWN0aW9uc10oLi4vY29uY2VwdHMvbWVzc2FnZS1pbnRlcmFjdGlvbnMubWR4KSBjYW4gYmUgZm91bmQgaW4gb3VyIG1lc3NhZ2UgaW50ZXJhY3Rpb24gZ3VpZGUuIFVuYXRob3JpemVkIGFjdGlvbnMgd29uJ3QgYmUgZGlzcGxheWVkIG9uIHRoZSBVSS4gVGhlIFtgTWVzc2FnZUxpc3RgXSguL01lc3NhZ2VMaXN0Q29tcG9uZW50Lm1keCkgY29tcG9uZW50IGF1dG9tYXRpY2FsbHkgc2V0cyB0aGlzIGJhc2VkIG9uIFtjaGFubmVsIGNhcGFiaWxpdGllc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvY2hhbm5lbF9jYXBhYmlsaXRpZXMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKi9cbiAgQElucHV0KCkgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbWVzc2FnZSBzdGF0dXMgKHNlbmRpbmcsIHNlbnQsIHdobyByZWFkIHRoZSBtZXNzYWdlKSBpcyBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBpc0xhc3RTZW50TWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIG1lc3NhZ2UgaXMgYmVpbmcgZGlzcGFseWVkIGluIGEgY2hhbm5lbCBvciBpbiBhIFt0aHJlYWRdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3RocmVhZHMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ3RocmVhZCcgfCAnbWFpbicgPSAnbWFpbic7XG4gIGNhblJlY2VpdmVSZWFkRXZlbnRzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjYW5SZWFjdFRvTWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0aW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc0FjdGlvbkJveE9wZW4gPSBmYWxzZTtcbiAgaXNSZWFjdGlvblNlbGVjdG9yT3BlbiA9IGZhbHNlO1xuICBpc1ByZXNzZWRPbk1vYmlsZSA9IGZhbHNlO1xuICB2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA9IDA7XG4gIG1lc3NhZ2VUZXh0UGFydHM6IE1lc3NhZ2VQYXJ0W10gPSBbXTtcbiAgbWVudGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxNZW50aW9uVGVtcGxhdGVDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgYXR0YWNobWVudExpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8QXR0YWNobWVudExpc3RDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgbWVzc2FnZUFjdGlvbnNCb3hUZW1wbGF0ZTogVGVtcGxhdGVSZWY8TWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgbWVzc2FnZVJlYWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxNZXNzYWdlUmVhY3Rpb25zQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdXNlcjogVXNlclJlc3BvbnNlPERlZmF1bHRVc2VyVHlwZT4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgcHJpdmF0ZSBjb250YWluZXI6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnVzZXIgPSB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQudXNlcjtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lbnRpb25UZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+ICh0aGlzLm1lbnRpb25UZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuYXR0YWNobWVudExpc3RUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+ICh0aGlzLmF0dGFjaG1lbnRMaXN0VGVtcGxhdGUgPSB0ZW1wbGF0ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lc3NhZ2VBY3Rpb25zQm94VGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiAodGhpcy5tZXNzYWdlQWN0aW9uc0JveFRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlUmVhY3Rpb25zVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiAodGhpcy5tZXNzYWdlUmVhY3Rpb25zVGVtcGxhdGUgPSB0ZW1wbGF0ZSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuY3JlYXRlTWVzc2FnZVBhcnRzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucykge1xuICAgICAgdGhpcy5jYW5SZWFjdFRvTWVzc2FnZSA9XG4gICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLmluZGV4T2YoJ3NlbmQtcmVhY3Rpb24nKSAhPT0gLTE7XG4gICAgICB0aGlzLmNhblJlY2VpdmVSZWFkRXZlbnRzID1cbiAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMuaW5kZXhPZigncmVhZC1ldmVudHMnKSAhPT0gLTE7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXQgaXNTZW50QnlDdXJyZW50VXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlPy51c2VyPy5pZCA9PT0gdGhpcy51c2VyPy5pZDtcbiAgfVxuXG4gIGdldCByZWFkQnlUZXh0KCkge1xuICAgIHJldHVybiBnZXRSZWFkQnlUZXh0KHRoaXMubWVzc2FnZSEucmVhZEJ5KTtcbiAgfVxuXG4gIGdldCBsYXN0UmVhZFVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZT8ucmVhZEJ5LmZpbHRlcigodSkgPT4gdS5pZCAhPT0gdGhpcy51c2VyPy5pZClbMF07XG4gIH1cblxuICBnZXQgaXNPbmx5UmVhZEJ5TWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZSAmJiB0aGlzLm1lc3NhZ2UucmVhZEJ5Lmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIGdldCBpc1JlYWRCeU11bHRpcGxlVXNlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZSAmJiB0aGlzLm1lc3NhZ2UucmVhZEJ5Lmxlbmd0aCA+IDE7XG4gIH1cblxuICBnZXQgaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5tZXNzYWdlICYmXG4gICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5ICYmXG4gICAgICB0aGlzLm1lc3NhZ2Uuc3RhdHVzID09PSAncmVjZWl2ZWQnICYmXG4gICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5Lmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZ2V0IHBhcnNlZERhdGUoKSB7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2UgfHwgIXRoaXMubWVzc2FnZT8uY3JlYXRlZF9hdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VEYXRlKHRoaXMubWVzc2FnZS5jcmVhdGVkX2F0KTtcbiAgfVxuXG4gIGdldCBhcmVPcHRpb25zVmlzaWJsZSgpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIShcbiAgICAgICF0aGlzLm1lc3NhZ2UudHlwZSB8fFxuICAgICAgdGhpcy5tZXNzYWdlLnR5cGUgPT09ICdlcnJvcicgfHxcbiAgICAgIHRoaXMubWVzc2FnZS50eXBlID09PSAnc3lzdGVtJyB8fFxuICAgICAgdGhpcy5tZXNzYWdlLnR5cGUgPT09ICdlcGhlbWVyYWwnIHx8XG4gICAgICB0aGlzLm1lc3NhZ2Uuc3RhdHVzID09PSAnZmFpbGVkJyB8fFxuICAgICAgdGhpcy5tZXNzYWdlLnN0YXR1cyA9PT0gJ3NlbmRpbmcnIHx8XG4gICAgICAodGhpcy5tb2RlID09PSAndGhyZWFkJyAmJiAhdGhpcy5tZXNzYWdlLnBhcmVudF9pZClcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc0F0dGFjaG1lbnQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5tZXNzYWdlPy5hdHRhY2htZW50cyAmJiAhIXRoaXMubWVzc2FnZS5hdHRhY2htZW50cy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaGFzUmVhY3Rpb25zKCkge1xuICAgIHJldHVybiAoXG4gICAgICAhIXRoaXMubWVzc2FnZT8ucmVhY3Rpb25fY291bnRzICYmXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLm1lc3NhZ2UucmVhY3Rpb25fY291bnRzKS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCByZXBseUNvdW50UGFyYW0oKSB7XG4gICAgcmV0dXJuIHsgcmVwbHlDb3VudDogdGhpcy5tZXNzYWdlPy5yZXBseV9jb3VudCB9O1xuICB9XG5cbiAgZ2V0IGNhbkRpc3BsYXlSZWFkU3RhdHVzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNhblJlY2VpdmVSZWFkRXZlbnRzICE9PSBmYWxzZSAmJlxuICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMuaW5kZXhPZigncmVhZC1ldmVudHMnKSAhPT0gLTFcbiAgICApO1xuICB9XG5cbiAgZ2V0IHF1b3RlZE1lc3NhZ2VBdHRhY2htZW50cygpIHtcbiAgICBjb25zdCBvcmlnaW5hbEF0dGFjaG1lbnRzID0gdGhpcy5tZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8uYXR0YWNobWVudHM7XG4gICAgcmV0dXJuIG9yaWdpbmFsQXR0YWNobWVudHMgJiYgb3JpZ2luYWxBdHRhY2htZW50cy5sZW5ndGhcbiAgICAgID8gW29yaWdpbmFsQXR0YWNobWVudHNbMF1dXG4gICAgICA6IFtdO1xuICB9XG5cbiAgZ2V0QXR0YWNobWVudExpc3RDb250ZXh0KCk6IEF0dGFjaG1lbnRMaXN0Q29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2VJZDogdGhpcy5tZXNzYWdlPy5pZCB8fCAnJyxcbiAgICAgIGF0dGFjaG1lbnRzOiB0aGlzLm1lc3NhZ2U/LmF0dGFjaG1lbnRzIHx8IFtdLFxuICAgIH07XG4gIH1cblxuICBnZXRNZXNzYWdlUmVhY3Rpb25zQ29udGV4dCgpOiBNZXNzYWdlUmVhY3Rpb25zQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2VSZWFjdGlvbkNvdW50czogdGhpcy5tZXNzYWdlPy5yZWFjdGlvbl9jb3VudHMgfHwge30sXG4gICAgICBsYXRlc3RSZWFjdGlvbnM6IHRoaXMubWVzc2FnZT8ubGF0ZXN0X3JlYWN0aW9ucyB8fCBbXSxcbiAgICAgIGlzU2VsZWN0b3JPcGVuOiB0aGlzLmlzUmVhY3Rpb25TZWxlY3Rvck9wZW4sXG4gICAgICBpc1NlbGVjdG9yT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW4pID0+XG4gICAgICAgICh0aGlzLmlzUmVhY3Rpb25TZWxlY3Rvck9wZW4gPSBpc09wZW4pLFxuICAgICAgbWVzc2FnZUlkOiB0aGlzLm1lc3NhZ2U/LmlkLFxuICAgICAgb3duUmVhY3Rpb25zOiB0aGlzLm1lc3NhZ2U/Lm93bl9yZWFjdGlvbnMgfHwgW10sXG4gICAgfTtcbiAgfVxuXG4gIHJlc2VuZE1lc3NhZ2UoKSB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnJlc2VuZE1lc3NhZ2UodGhpcy5tZXNzYWdlISk7XG4gIH1cblxuICB0ZXh0Q2xpY2tlZCgpIHtcbiAgICBpZiAoZ2V0RGV2aWNlV2lkdGgoKS5kZXZpY2UgIT09ICdtb2JpbGUnKSB7XG4gICAgICB0aGlzLmlzUHJlc3NlZE9uTW9iaWxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUHJlc3NlZE9uTW9iaWxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNQcmVzc2VkT25Nb2JpbGUgPSB0cnVlO1xuICAgIGNvbnN0IGV2ZW50SGFuZGxlciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgIHRoaXMuaXNQcmVzc2VkT25Nb2JpbGUgPSBmYWxzZTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50SGFuZGxlcik7XG4gIH1cblxuICBzZXRBc0FjdGl2ZVBhcmVudE1lc3NhZ2UoKSB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnNldEFzQWN0aXZlUGFyZW50TWVzc2FnZSh0aGlzLm1lc3NhZ2UpO1xuICB9XG5cbiAgZ2V0TWVudGlvbkNvbnRleHQobWVzc2FnZVBhcnQ6IE1lc3NhZ2VQYXJ0KTogTWVudGlvblRlbXBsYXRlQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IG1lc3NhZ2VQYXJ0LmNvbnRlbnQsXG4gICAgICB1c2VyOiBtZXNzYWdlUGFydC51c2VyISxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0KCk6IE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzT3BlbjogdGhpcy5pc0FjdGlvbkJveE9wZW4sXG4gICAgICBpc01pbmU6IHRoaXMuaXNTZW50QnlDdXJyZW50VXNlcixcbiAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIGRpc3BsYXllZEFjdGlvbnNDb3VudENoYW5lSGFubGVyOiAoY291bnQpID0+IHtcbiAgICAgICAgdGhpcy52aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA9IGNvdW50O1xuICAgICAgICAvLyBtZXNzYWdlIGFjdGlvbiBib3ggY2hhbmdlcyBVSSBiaW5kaW5ncyBpbiBwYXJlbnQsIHNvIHdlJ2xsIGhhdmUgdG8gcmVydW4gY2hhbmdlIGRldGVjdGlvblxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICBpc0VkaXRpbmdDaGFuZ2VIYW5kbGVyOiAoaXNFZGl0aW5nKSA9PiB7XG4gICAgICAgIHRoaXMuaXNFZGl0aW5nID0gaXNFZGl0aW5nO1xuICAgICAgICB0aGlzLmlzQWN0aW9uQm94T3BlbiA9ICF0aGlzLmlzRWRpdGluZztcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWVzc2FnZVBhcnRzKCkge1xuICAgIGxldCBjb250ZW50ID0gdGhpcy5tZXNzYWdlPy5odG1sIHx8IHRoaXMubWVzc2FnZT8udGV4dDtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCYWNrZW5kIHdpbGwgd3JhcCBIVE1MIGNvbnRlbnQgd2l0aCA8cD48L3A+XFxuXG4gICAgICBpZiAoY29udGVudC5zdGFydHNXaXRoKCc8cD4nKSkge1xuICAgICAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKCc8cD4nLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoY29udGVudC5lbmRzV2l0aCgnPC9wPlxcbicpKSB7XG4gICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoJzwvcD5cXG4nLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLm1lc3NhZ2UhLm1lbnRpb25lZF91c2VycyB8fFxuICAgICAgICB0aGlzLm1lc3NhZ2UhLm1lbnRpb25lZF91c2Vycy5sZW5ndGggPT09IDBcbiAgICAgICkge1xuICAgICAgICAvLyBXcmFwIGVtb2ppcyBpbiBzcGFuIHRvIGRpc3BsYXkgZW1vamlzIGNvcnJlY3RseSBpbiBDaHJvbWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTk2MjIzXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksICdnJyk7XG4gICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgcmVnZXgsXG4gICAgICAgICAgKG1hdGNoKSA9PiBgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fZW1vamktZGlzcGxheS1maXhcIj4ke21hdGNofTwvc3Bhbj5gXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyA9IFt7IGNvbnRlbnQsIHR5cGU6ICd0ZXh0JyB9XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyA9IFtdO1xuICAgICAgICBsZXQgdGV4dCA9IGNvbnRlbnQ7XG4gICAgICAgIHRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzLmZvckVhY2goKHVzZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBtZW50aW9uID0gYEAke3VzZXIubmFtZSB8fCB1c2VyLmlkfWA7XG4gICAgICAgICAgY29uc3QgcHJlY2VkaW5nVGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIHRleHQuaW5kZXhPZihtZW50aW9uKSk7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzLnB1c2goe1xuICAgICAgICAgICAgY29udGVudDogcHJlY2VkaW5nVGV4dCxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMucHVzaCh7XG4gICAgICAgICAgICBjb250ZW50OiBtZW50aW9uLFxuICAgICAgICAgICAgdHlwZTogJ21lbnRpb24nLFxuICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKHByZWNlZGluZ1RleHQgKyBtZW50aW9uLCAnJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cy5wdXNoKHsgY29udGVudDogdGV4dCwgdHlwZTogJ3RleHQnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gICNjb250YWluZXJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUgc3RyLWNoYXRfX21lc3NhZ2Ugc3RyLWNoYXRfX21lc3NhZ2UtLXt7XG4gICAgbWVzc2FnZT8udHlwZVxuICB9fSBzdHItY2hhdF9fbWVzc2FnZS0te3sgbWVzc2FnZT8uc3RhdHVzIH19IHt7XG4gICAgbWVzc2FnZT8udGV4dCA/ICdzdHItY2hhdF9fbWVzc2FnZS0taGFzLXRleHQnIDogJ2hhcy1uby10ZXh0J1xuICB9fVwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0tbWVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtLW1lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICBbY2xhc3MubW9iaWxlLXByZXNzXT1cImlzUHJlc3NlZE9uTW9iaWxlXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS1oYXMtYXR0YWNobWVudF09XCJoYXNBdHRhY2htZW50XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS13aXRoLXJlYWN0aW9uc109XCJoYXNSZWFjdGlvbnNcIlxuICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtY29udGFpbmVyXCJcbiAgKG1vdXNlbGVhdmUpPVwiaXNBY3Rpb25Cb3hPcGVuID0gZmFsc2VcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1lc3NhZ2U/LmRlbGV0ZWRfYXQ7IGVsc2UgZGVsZXRlZE1lc3NhZ2VcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZT8udHlwZSAhPT0gJ3N5c3RlbSc7IGVsc2Ugc3lzdGVtTWVzc2FnZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGlzU2VudEJ5Q3VycmVudFVzZXIgJiZcbiAgICAgICAgICAoKGlzTGFzdFNlbnRNZXNzYWdlICYmIG1lc3NhZ2U/LnN0YXR1cyA9PT0gJ3JlY2VpdmVkJykgfHxcbiAgICAgICAgICAgIG1lc3NhZ2U/LnN0YXR1cyA9PT0gJ3NlbmRpbmcnKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZT8uc3RhdHVzID09PSAnc2VuZGluZyc7IGVsc2Ugc2VudFN0YXR1c1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZW5kaW5nU3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3NlbnRTdGF0dXM+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgbW9kZSA9PT0gJ21haW4nICYmXG4gICAgICAgICAgICAgICAgaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZCAmJlxuICAgICAgICAgICAgICAgIGNhbkRpc3BsYXlSZWFkU3RhdHVzO1xuICAgICAgICAgICAgICBlbHNlIGRlbGl2ZXJlZFN0YXR1c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVhZFN0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgICBkYXRhLXRlc3RpZD1cImF2YXRhclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXQtYW5ndWxhcl9fYXZhdGFyLWhvc3RcIlxuICAgICAgICBbaW1hZ2VVcmxdPVwibWVzc2FnZT8udXNlcj8uaW1hZ2VcIlxuICAgICAgICBbbmFtZV09XCJtZXNzYWdlPy51c2VyPy5uYW1lIHx8IG1lc3NhZ2U/LnVzZXI/LmlkXCJcbiAgICAgID48L3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtaW5uZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zXCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2Utb3B0aW9uc1wiXG4gICAgICAgICAgKm5nSWY9XCJhcmVPcHRpb25zVmlzaWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtYWN0aW9ucy1jb250YWluZXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb25cbiAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb24tLW9wdGlvbnNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3Muc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvbi0tb3B0aW9ucy0tZWRpdGluZ109XCJcbiAgICAgICAgICAgICAgaXNFZGl0aW5nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAjZGVmYXVsdE1lc3NhZ2VBY3Rpb25zQm94XG4gICAgICAgICAgICAgIGxldC1pc09wZW49XCJpc09wZW5cIlxuICAgICAgICAgICAgICBsZXQtaXNNaW5lPVwiaXNNaW5lXCJcbiAgICAgICAgICAgICAgbGV0LWVuYWJsZWRBY3Rpb25zPVwiZW5hYmxlZEFjdGlvbnNcIlxuICAgICAgICAgICAgICBsZXQtbWVzc2FnZUlucHV0PVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgIGxldC1kaXNwbGF5ZWRBY3Rpb25zQ291bnRDaGFuZUhhbmxlcj1cImRpc3BsYXllZEFjdGlvbnNDb3VudENoYW5lSGFubGVyXCJcbiAgICAgICAgICAgICAgbGV0LWlzRWRpdGluZ0NoYW5nZUhhbmRsZXI9XCJpc0VkaXRpbmdDaGFuZ2VIYW5kbGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN0cmVhbS1tZXNzYWdlLWFjdGlvbnMtYm94XG4gICAgICAgICAgICAgICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgICAgICAgICAgICAgIFtpc01pbmVdPVwiaXNNaW5lXCJcbiAgICAgICAgICAgICAgICBbZW5hYmxlZEFjdGlvbnNdPVwiZW5hYmxlZEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VJbnB1dFwiXG4gICAgICAgICAgICAgICAgKGRpc3BsYXllZEFjdGlvbnNDb3VudCk9XCJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXllZEFjdGlvbnNDb3VudENoYW5lSGFubGVyKCRldmVudClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChpc0VkaXRpbmcpPVwiaXNFZGl0aW5nQ2hhbmdlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvc3RyZWFtLW1lc3NhZ2UtYWN0aW9ucy1ib3g+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIG1lc3NhZ2VBY3Rpb25zQm94VGVtcGxhdGUgfHwgZGVmYXVsdE1lc3NhZ2VBY3Rpb25zQm94O1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCgpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA+IDBcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgaWNvbj1cImFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImlzQWN0aW9uQm94T3BlbiA9ICFpc0FjdGlvbkJveE9wZW5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaXNBY3Rpb25Cb3hPcGVuID0gIWlzQWN0aW9uQm94T3BlblwiXG4gICAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9jb25kaXRpb25hbC1jb21wbGV4aXR5IC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdzZW5kLXJlcGx5JykgIT09IC0xICYmXG4gICAgICAgICAgICAgIG1vZGUgPT09ICdtYWluJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uLS10aHJlYWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInJlcGx5LWluLXRocmVhZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNldEFzQWN0aXZlUGFyZW50TWVzc2FnZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgaWNvbj1cInJlcGx5LWluLXRocmVhZFwiXG4gICAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImNhblJlYWN0VG9NZXNzYWdlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uLS1yZWFjdGlvbnNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInJlYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImlzUmVhY3Rpb25TZWxlY3Rvck9wZW4gPSAhaXNSZWFjdGlvblNlbGVjdG9yT3BlblwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaXNSZWFjdGlvblNlbGVjdG9yT3BlbiA9ICFpc1JlYWN0aW9uU2VsZWN0b3JPcGVuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgaWNvbj1cInJlYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIGVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NvbmRpdGlvbmFsLWNvbXBsZXhpdHkgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICNkZWZhdWx0TWVzc2FnZVJlYWN0aW9uc1xuICAgICAgICAgIGxldC1tZXNzYWdlUmVhY3Rpb25Db3VudHM9XCJtZXNzYWdlUmVhY3Rpb25Db3VudHNcIlxuICAgICAgICAgIGxldC1sYXRlc3RSZWFjdGlvbnM9XCJsYXRlc3RSZWFjdGlvbnNcIlxuICAgICAgICAgIGxldC1pc1NlbGVjdG9yT3Blbj1cImlzU2VsZWN0b3JPcGVuXCJcbiAgICAgICAgICBsZXQtaXNTZWxlY3Rvck9wZW5DaGFuZ2VIYW5kbGVyPVwiaXNTZWxlY3Rvck9wZW5DaGFuZ2VIYW5kbGVyXCJcbiAgICAgICAgICBsZXQtbWVzc2FnZUlkPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICBsZXQtb3duUmVhY3Rpb25zPVwib3duUmVhY3Rpb25zXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnNcbiAgICAgICAgICAgIFttZXNzYWdlUmVhY3Rpb25Db3VudHNdPVwibWVzc2FnZVJlYWN0aW9uQ291bnRzXCJcbiAgICAgICAgICAgIFtsYXRlc3RSZWFjdGlvbnNdPVwibGF0ZXN0UmVhY3Rpb25zXCJcbiAgICAgICAgICAgIFtpc1NlbGVjdG9yT3Blbl09XCJpc1NlbGVjdG9yT3BlblwiXG4gICAgICAgICAgICAoaXNTZWxlY3Rvck9wZW5DaGFuZ2UpPVwiaXNTZWxlY3Rvck9wZW5DaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgICAgICAgICAgW293blJlYWN0aW9uc109XCJvd25SZWFjdGlvbnNcIlxuICAgICAgICAgID48L3N0cmVhbS1tZXNzYWdlLXJlYWN0aW9ucz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBtZXNzYWdlUmVhY3Rpb25zVGVtcGxhdGUgfHwgZGVmYXVsdE1lc3NhZ2VSZWFjdGlvbnM7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlUmVhY3Rpb25zQ29udGV4dCgpXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQXR0YWNobWVudCAmJiAhbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2VcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNkZWZhdWx0QXR0YWNobWVudHNcbiAgICAgICAgICAgIGxldC1tZXNzYWdlSWQ9XCJtZXNzYWdlSWRcIlxuICAgICAgICAgICAgbGV0LWF0dGFjaG1lbnRzPVwiYXR0YWNobWVudHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0tYXR0YWNobWVudC1saXN0XG4gICAgICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICAgICAgW2F0dGFjaG1lbnRzXT1cImF0dGFjaG1lbnRzXCJcbiAgICAgICAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LWxpc3Q+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBhdHRhY2htZW50TGlzdFRlbXBsYXRlIHx8IGRlZmF1bHRBdHRhY2htZW50cztcbiAgICAgICAgICAgICAgY29udGV4dDogZ2V0QXR0YWNobWVudExpc3RDb250ZXh0KClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXRleHRcIiAqbmdJZj1cIm1lc3NhZ2U/LnRleHRcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImlubmVyLW1lc3NhZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2UtdGV4dC1pbm5lciBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtdGV4dC1pbm5lclxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1saWdodC10ZXh0LWlubmVyLS1oYXMtYXR0YWNobWVudF09XCJcbiAgICAgICAgICAgICAgaGFzQXR0YWNobWVudFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJiBtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwM1xuICAgICAgICAgICAgICAgID8gcmVzZW5kTWVzc2FnZSgpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiXG4gICAgICAgICAgICAgIG1lc3NhZ2U/LnN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiYgbWVzc2FnZT8uZXJyb3JTdGF0dXNDb2RlICE9PSA0MDNcbiAgICAgICAgICAgICAgICA/IHJlc2VuZE1lc3NhZ2UoKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJxdW90ZWRNZXNzYWdlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8c3RyZWFtLWF0dGFjaG1lbnQtbGlzdFxuICAgICAgICAgICAgICAqbmdJZj1cImhhc0F0dGFjaG1lbnQgJiYgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2VcIlxuICAgICAgICAgICAgICBbYXR0YWNobWVudHNdPVwibWVzc2FnZSEuYXR0YWNobWVudHMhXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlIS5pZFwiXG4gICAgICAgICAgICA+PC9zdHJlYW0tYXR0YWNobWVudC1saXN0PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNsaWVudC1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJtZXNzYWdlPy50eXBlID09PSAnZXJyb3InXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2ltcGxlLW1lc3NhZ2UtLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuRXJyb3IgwrcgVW5zZW50XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnN0YXR1cyA9PT0gJ2ZhaWxlZCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19zaW1wbGUtbWVzc2FnZS0tZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSA9PT0gNDAzXG4gICAgICAgICAgICAgICAgICA/IFwic3RyZWFtQ2hhdC5NZXNzYWdlIEZhaWxlZCDCtyBVbmF1dGhvcml6ZWRcIlxuICAgICAgICAgICAgICAgICAgOiBcInN0cmVhbUNoYXQuTWVzc2FnZSBGYWlsZWQgwrcgQ2xpY2sgdG8gdHJ5IGFnYWluXCJcbiAgICAgICAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRleHRDbGlja2VkKClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwidGV4dENsaWNrZWQoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwidGV4dFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS91c2UtdHJhY2stYnktZnVuY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFydCBvZiBtZXNzYWdlVGV4dFBhcnRzXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcnQudHlwZSA9PT0gJ3RleHQnOyBlbHNlIG1lbnRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInBhcnQuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtZW50aW9uPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNZW50aW9uIGxldC1jb250ZW50PVwiY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IGNvbnRlbnQgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudGlvblRlbXBsYXRlIHx8IGRlZmF1bHRNZW50aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogZ2V0TWVudGlvbkNvbnRleHQocGFydClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtcmVwbHktYnV0dG9uXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgISFtZXNzYWdlPy5yZXBseV9jb3VudCAmJlxuICAgICAgICAgICAgICBtb2RlICE9PSAndGhyZWFkJyAmJlxuICAgICAgICAgICAgICBlbmFibGVkTWVzc2FnZUFjdGlvbnMuaW5kZXhPZignc2VuZC1yZXBseScpICE9PSAtMVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVwbGllcy1jb3VudC1idXR0b25cIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZXBseS1jb3VudC1idXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldEFzQWN0aXZlUGFyZW50TWVzc2FnZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXIgaWNvbj1cInJlcGx5XCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICAgIHt7bWVzc2FnZT8ucmVwbHlfY291bnQgPT09IDEgPyAoJ3N0cmVhbUNoYXQuMSByZXBseScgfCB0cmFuc2xhdGUpIDogKCdzdHJlYW1DaGF0Lnt7IHJlcGx5Q291bnQgfX1cbiAgICAgICAgICAgIHJlcGxpZXMnIHwgdHJhbnNsYXRlOnJlcGx5Q291bnRQYXJhbSl9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWRhdGEgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLWRhdGFcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZW5kZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNTZW50QnlDdXJyZW50VXNlclwiXG4gICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1uYW1lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBtZXNzYWdlPy51c2VyPy5uYW1lID8gbWVzc2FnZT8udXNlcj8ubmFtZSA6IG1lc3NhZ2U/LnVzZXI/LmlkIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwiZGF0ZVwiIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXRpbWVzdGFtcFwiPlxuICAgICAgICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzZW5kaW5nU3RhdHVzPlxuICA8c3BhblxuICAgIGNsYXNzPVwiXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhclxuICAgIFwiXG4gICAgZGF0YS10ZXN0aWQ9XCJzZW5kaW5nLWluZGljYXRvclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3Rvb2x0aXBcIj5cbiAgICAgIHt7IFwic3RyZWFtQ2hhdC5TZW5kaW5nLi4uXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8c3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yLXBsYWNlaG9sZGVyXG4gICAgICBkYXRhLXRlc3RpZD1cImxvYWRpbmctaW5kaWNhdG9yXCJcbiAgICA+PC9zdHJlYW0tbG9hZGluZy1pbmRpY2F0b3ItcGxhY2Vob2xkZXI+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlYWRTdGF0dXM+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cy1hbmd1bGFyXG4gICAgXCJcbiAgICBkYXRhLXRlc3RpZD1cInJlYWQtaW5kaWNhdG9yXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiIGRhdGEtdGVzdGlkPVwicmVhZC1ieS10b29sdGlwXCI+XG4gICAgICB7eyByZWFkQnlUZXh0IH19XG4gICAgPC9kaXY+XG4gICAgPHN0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXQtYW5ndWxhcl9fYXZhdGFyLWhvc3RcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwibGFzdC1yZWFkLXVzZXItYXZhdGFyXCJcbiAgICAgIFtzaXplXT1cIjE1XCJcbiAgICAgIFtpbWFnZVVybF09XCJsYXN0UmVhZFVzZXI/LmltYWdlXCJcbiAgICAgIFtuYW1lXT1cImxhc3RSZWFkVXNlcj8ubmFtZSB8fCBsYXN0UmVhZFVzZXI/LmlkXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgIDxzcGFuXG4gICAgICBkYXRhLXRlc3QtaWQ9XCJyZWFkLWJ5LWxlbmd0aFwiXG4gICAgICAqbmdJZj1cImlzUmVhZEJ5TXVsdGlwbGVVc2Vyc1wiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtbnVtYmVyXCJcbiAgICA+XG4gICAgICB7eyAobWVzc2FnZT8ucmVhZEJ5KSEubGVuZ3RoIH19XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWxpdmVyZWRTdGF0dXM+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJtb2RlID09PSAnbWFpbidcIlxuICAgIGNsYXNzPVwiXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhclxuICAgIFwiXG4gICAgZGF0YS10ZXN0aWQ9XCJkZWxpdmVyZWQtaW5kaWNhdG9yXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LkRlbGl2ZXJlZFwiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICBkYXRhLXRlc3RpZD1cImRlbGl2ZXJlZC1pY29uXCJcbiAgICAgIGljb249XCJkZWxpdmVyZWQtaWNvblwiXG4gICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVsZXRlZE1lc3NhZ2U+XG4gIDxkaXYgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWRlbGV0ZWQtY29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1kZWxldGVkLWlubmVyXCIgdHJhbnNsYXRlPlxuICAgICAgc3RyZWFtQ2hhdC5UaGlzIG1lc3NhZ2Ugd2FzIGRlbGV0ZWQuLi5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N5c3RlbU1lc3NhZ2U+XG4gIDxkaXYgZGF0YS10ZXN0aWQ9XCJzeXN0ZW0tbWVzc2FnZVwiIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLXN5c3RlbVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX190ZXh0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLXN5c3RlbV9fbGluZVwiPjwvZGl2PlxuICAgICAgPHA+e3sgbWVzc2FnZT8udGV4dCB9fTwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19saW5lXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2RhdGVcIj5cbiAgICAgIHt7IHBhcnNlZERhdGUgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3F1b3RlZE1lc3NhZ2U+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlXCJcbiAgICBjbGFzcz1cInF1b3RlZC1tZXNzYWdlXCJcbiAgICBkYXRhLXRlc3RpZD1cInF1b3RlZC1tZXNzYWdlLWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLm1pbmVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gID5cbiAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgZGF0YS10ZXN0aWQ9XCJxb3V0ZWQtbWVzc2FnZS1hdmF0YXJcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdFwiXG4gICAgICBbaW1hZ2VVcmxdPVwibWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXI/LmltYWdlXCJcbiAgICAgIFtuYW1lXT1cIlxuICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8udXNlcj8ubmFtZSB8fCBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8udXNlcj8uaWRcbiAgICAgIFwiXG4gICAgICBbc2l6ZV09XCIyMFwiXG4gICAgPjwvc3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlcj5cbiAgICA8ZGl2IGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtaW5uZXJcIj5cbiAgICAgIDxzdHJlYW0tYXR0YWNobWVudC1saXN0XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzICYmXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dGFjaG1lbnRzXT1cInF1b3RlZE1lc3NhZ2VBdHRhY2htZW50c1wiXG4gICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmlkXCJcbiAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LWxpc3Q+XG4gICAgICA8ZGl2XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/Lmh0bWwgfHwgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnRleHRcbiAgICAgICAgXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFVckM7O0dBRUc7QUFNSCxNQUFNLE9BQU8sZ0JBQWdCO0lBbUMzQixZQUNVLGlCQUFvQyxFQUNwQyxjQUE4QixFQUM5QixzQkFBOEMsRUFDOUMsS0FBd0I7UUFIeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWxDbEM7O1dBRUc7UUFDTSwwQkFBcUIsR0FBYSxFQUFFLENBQUM7UUFLOUM7O1dBRUc7UUFDTSxTQUFJLEdBQXNCLE1BQU0sQ0FBQztRQUkxQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLCtCQUEwQixHQUFHLENBQUMsQ0FBQztRQUMvQixxQkFB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QyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQzt3QkFDekIsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLElBQUksRUFBRSxNQUFNO3FCQUNiLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO3dCQUN6QixPQUFPLEVBQUUsT0FBTzt3QkFDaEIsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsSUFBSTtxQkFDTCxDQUFDLENBQUM7b0JBQ0gsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7aUJBQzdEO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzZHQXRSVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQix5VEM1QzdCLCsyY0F3WUE7MkZENVZhLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxNQUFNLEVBQUUsRUFBRTtpQkFDWDswTUFLVSxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBZTBCLFNBQVM7c0JBQXhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXREZXZpY2VXaWR0aCB9IGZyb20gJy4uL2RldmljZS13aWR0aCc7XG5pbXBvcnQge1xuICBBdHRhY2htZW50TGlzdENvbnRleHQsXG4gIE1lbnRpb25UZW1wbGF0ZUNvbnRleHQsXG4gIE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCxcbiAgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIFN0cmVhbU1lc3NhZ2UsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHBhcnNlRGF0ZSB9IGZyb20gJy4vcGFyc2UtZGF0ZSc7XG5pbXBvcnQgeyBnZXRSZWFkQnlUZXh0IH0gZnJvbSAnLi9yZWFkLWJ5LXRleHQnO1xuaW1wb3J0IGVtb2ppUmVnZXggZnJvbSAnZW1vamktcmVnZXgnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcblxudHlwZSBNZXNzYWdlUGFydCA9IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB0eXBlOiAndGV4dCcgfCAnbWVudGlvbic7XG4gIHVzZXI/OiBVc2VyUmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIFRoZSBgTWVzc2FnZWAgY29tcG9uZW50IGRpc3BsYXlzIGEgbWVzc2FnZSB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyBzZW5kZXIgYW5kIGRhdGUsIGFuZCBlbmFibGVzIFtpbnRlcmFjdGlvbiB3aXRoIHRoZSBtZXNzYWdlIChpLmUuIGVkaXQgb3IgcmVhY3QpXSguLi9jb25jZXB0cy9tZXNzYWdlLWludGVyYWN0aW9ucy5tZHgpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhlIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgW2NoYW5uZWwgY2FwYWJpbGl0aWVzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgdGhhdCBhcmUgZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciwgdGhlIGxpc3Qgb2YgW3N1cHBvcnRlZCBpbnRlcmFjdGlvbnNdKC4uL2NvbmNlcHRzL21lc3NhZ2UtaW50ZXJhY3Rpb25zLm1keCkgY2FuIGJlIGZvdW5kIGluIG91ciBtZXNzYWdlIGludGVyYWN0aW9uIGd1aWRlLiBVbmF0aG9yaXplZCBhY3Rpb25zIHdvbid0IGJlIGRpc3BsYXllZCBvbiB0aGUgVUkuIFRoZSBbYE1lc3NhZ2VMaXN0YF0oLi9NZXNzYWdlTGlzdENvbXBvbmVudC5tZHgpIGNvbXBvbmVudCBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcyBiYXNlZCBvbiBbY2hhbm5lbCBjYXBhYmlsaXRpZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG1lc3NhZ2Ugc3RhdHVzIChzZW5kaW5nLCBzZW50LCB3aG8gcmVhZCB0aGUgbWVzc2FnZSkgaXMgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgaXNMYXN0U2VudE1lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBtZXNzYWdlIGlzIGJlaW5nIGRpc3BhbHllZCBpbiBhIGNoYW5uZWwgb3IgaW4gYSBbdGhyZWFkXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC90aHJlYWRzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICd0aHJlYWQnIHwgJ21haW4nID0gJ21haW4nO1xuICBjYW5SZWNlaXZlUmVhZEV2ZW50czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY2FuUmVhY3RUb01lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRWRpdGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNBY3Rpb25Cb3hPcGVuID0gZmFsc2U7XG4gIGlzUmVhY3Rpb25TZWxlY3Rvck9wZW4gPSBmYWxzZTtcbiAgaXNQcmVzc2VkT25Nb2JpbGUgPSBmYWxzZTtcbiAgdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAwO1xuICBtZXNzYWdlVGV4dFBhcnRzOiBNZXNzYWdlUGFydFtdID0gW107XG4gIG1lbnRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8TWVudGlvblRlbXBsYXRlQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIGF0dGFjaG1lbnRMaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPEF0dGFjaG1lbnRMaXN0Q29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2VBY3Rpb25zQm94VGVtcGxhdGU6IFRlbXBsYXRlUmVmPE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2VSZWFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8TWVzc2FnZVJlYWN0aW9uc0NvbnRleHQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHVzZXI6IFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBwcml2YXRlIGNvbnRhaW5lcjpcbiAgICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMudXNlciA9IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVudGlvblRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMubWVudGlvblRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5hdHRhY2htZW50TGlzdFRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMuYXR0YWNobWVudExpc3RUZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVzc2FnZUFjdGlvbnNCb3hUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+ICh0aGlzLm1lc3NhZ2VBY3Rpb25zQm94VGVtcGxhdGUgPSB0ZW1wbGF0ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lc3NhZ2VSZWFjdGlvbnNUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+ICh0aGlzLm1lc3NhZ2VSZWFjdGlvbnNUZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSkge1xuICAgICAgdGhpcy5jcmVhdGVNZXNzYWdlUGFydHMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zKSB7XG4gICAgICB0aGlzLmNhblJlYWN0VG9NZXNzYWdlID1cbiAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMuaW5kZXhPZignc2VuZC1yZWFjdGlvbicpICE9PSAtMTtcbiAgICAgIHRoaXMuY2FuUmVjZWl2ZVJlYWRFdmVudHMgPVxuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGdldCBpc1NlbnRCeUN1cnJlbnRVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2U/LnVzZXI/LmlkID09PSB0aGlzLnVzZXI/LmlkO1xuICB9XG5cbiAgZ2V0IHJlYWRCeVRleHQoKSB7XG4gICAgcmV0dXJuIGdldFJlYWRCeVRleHQodGhpcy5tZXNzYWdlIS5yZWFkQnkpO1xuICB9XG5cbiAgZ2V0IGxhc3RSZWFkVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlPy5yZWFkQnkuZmlsdGVyKCh1KSA9PiB1LmlkICE9PSB0aGlzLnVzZXI/LmlkKVswXTtcbiAgfVxuXG4gIGdldCBpc09ubHlSZWFkQnlNZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlICYmIHRoaXMubWVzc2FnZS5yZWFkQnkubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgZ2V0IGlzUmVhZEJ5TXVsdGlwbGVVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlICYmIHRoaXMubWVzc2FnZS5yZWFkQnkubGVuZ3RoID4gMTtcbiAgfVxuXG4gIGdldCBpc01lc3NhZ2VEZWxpdmVyZWRBbmRSZWFkKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm1lc3NhZ2UgJiZcbiAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkgJiZcbiAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdyZWNlaXZlZCcgJiZcbiAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBnZXQgcGFyc2VkRGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZSB8fCAhdGhpcy5tZXNzYWdlPy5jcmVhdGVkX2F0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBwYXJzZURhdGUodGhpcy5tZXNzYWdlLmNyZWF0ZWRfYXQpO1xuICB9XG5cbiAgZ2V0IGFyZU9wdGlvbnNWaXNpYmxlKCkge1xuICAgIGlmICghdGhpcy5tZXNzYWdlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhKFxuICAgICAgIXRoaXMubWVzc2FnZS50eXBlIHx8XG4gICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2Vycm9yJyB8fFxuICAgICAgdGhpcy5tZXNzYWdlLnR5cGUgPT09ICdzeXN0ZW0nIHx8XG4gICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2VwaGVtZXJhbCcgfHxcbiAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdmYWlsZWQnIHx8XG4gICAgICB0aGlzLm1lc3NhZ2Uuc3RhdHVzID09PSAnc2VuZGluZycgfHxcbiAgICAgICh0aGlzLm1vZGUgPT09ICd0aHJlYWQnICYmICF0aGlzLm1lc3NhZ2UucGFyZW50X2lkKVxuICAgICk7XG4gIH1cblxuICBnZXQgaGFzQXR0YWNobWVudCgpIHtcbiAgICByZXR1cm4gISF0aGlzLm1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmICEhdGhpcy5tZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBoYXNSZWFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhdGhpcy5tZXNzYWdlPy5yZWFjdGlvbl9jb3VudHMgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubWVzc2FnZS5yZWFjdGlvbl9jb3VudHMpLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZ2V0IHJlcGx5Q291bnRQYXJhbSgpIHtcbiAgICByZXR1cm4geyByZXBseUNvdW50OiB0aGlzLm1lc3NhZ2U/LnJlcGx5X2NvdW50IH07XG4gIH1cblxuICBnZXQgY2FuRGlzcGxheVJlYWRTdGF0dXMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY2FuUmVjZWl2ZVJlYWRFdmVudHMgIT09IGZhbHNlICYmXG4gICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMVxuICAgICk7XG4gIH1cblxuICBnZXQgcXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzKCkge1xuICAgIGNvbnN0IG9yaWdpbmFsQXR0YWNobWVudHMgPSB0aGlzLm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy5hdHRhY2htZW50cztcbiAgICByZXR1cm4gb3JpZ2luYWxBdHRhY2htZW50cyAmJiBvcmlnaW5hbEF0dGFjaG1lbnRzLmxlbmd0aFxuICAgICAgPyBbb3JpZ2luYWxBdHRhY2htZW50c1swXV1cbiAgICAgIDogW107XG4gIH1cblxuICBnZXRBdHRhY2htZW50TGlzdENvbnRleHQoKTogQXR0YWNobWVudExpc3RDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZUlkOiB0aGlzLm1lc3NhZ2U/LmlkIHx8ICcnLFxuICAgICAgYXR0YWNobWVudHM6IHRoaXMubWVzc2FnZT8uYXR0YWNobWVudHMgfHwgW10sXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VSZWFjdGlvbnNDb250ZXh0KCk6IE1lc3NhZ2VSZWFjdGlvbnNDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZVJlYWN0aW9uQ291bnRzOiB0aGlzLm1lc3NhZ2U/LnJlYWN0aW9uX2NvdW50cyB8fCB7fSxcbiAgICAgIGxhdGVzdFJlYWN0aW9uczogdGhpcy5tZXNzYWdlPy5sYXRlc3RfcmVhY3Rpb25zIHx8IFtdLFxuICAgICAgaXNTZWxlY3Rvck9wZW46IHRoaXMuaXNSZWFjdGlvblNlbGVjdG9yT3BlbixcbiAgICAgIGlzU2VsZWN0b3JPcGVuQ2hhbmdlSGFuZGxlcjogKGlzT3BlbikgPT5cbiAgICAgICAgKHRoaXMuaXNSZWFjdGlvblNlbGVjdG9yT3BlbiA9IGlzT3BlbiksXG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8uaWQsXG4gICAgICBvd25SZWFjdGlvbnM6IHRoaXMubWVzc2FnZT8ub3duX3JlYWN0aW9ucyB8fCBbXSxcbiAgICB9O1xuICB9XG5cbiAgcmVzZW5kTWVzc2FnZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UucmVzZW5kTWVzc2FnZSh0aGlzLm1lc3NhZ2UhKTtcbiAgfVxuXG4gIHRleHRDbGlja2VkKCkge1xuICAgIGlmIChnZXREZXZpY2VXaWR0aCgpLmRldmljZSAhPT0gJ21vYmlsZScpIHtcbiAgICAgIHRoaXMuaXNQcmVzc2VkT25Nb2JpbGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNQcmVzc2VkT25Nb2JpbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc1ByZXNzZWRPbk1vYmlsZSA9IHRydWU7XG4gICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgdGhpcy5pc1ByZXNzZWRPbk1vYmlsZSA9IGZhbHNlO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudEhhbmRsZXIpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnRIYW5kbGVyKTtcbiAgfVxuXG4gIHNldEFzQWN0aXZlUGFyZW50TWVzc2FnZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKHRoaXMubWVzc2FnZSk7XG4gIH1cblxuICBnZXRNZW50aW9uQ29udGV4dChtZXNzYWdlUGFydDogTWVzc2FnZVBhcnQpOiBNZW50aW9uVGVtcGxhdGVDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogbWVzc2FnZVBhcnQuY29udGVudCxcbiAgICAgIHVzZXI6IG1lc3NhZ2VQYXJ0LnVzZXIhLFxuICAgIH07XG4gIH1cblxuICBnZXRNZXNzYWdlQWN0aW9uc0JveENvbnRleHQoKTogTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNPcGVuOiB0aGlzLmlzQWN0aW9uQm94T3BlbixcbiAgICAgIGlzTWluZTogdGhpcy5pc1NlbnRCeUN1cnJlbnRVc2VyLFxuICAgICAgZW5hYmxlZEFjdGlvbnM6IHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgZGlzcGxheWVkQWN0aW9uc0NvdW50Q2hhbmVIYW5sZXI6IChjb3VudCkgPT4ge1xuICAgICAgICB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID0gY291bnQ7XG4gICAgICAgIC8vIG1lc3NhZ2UgYWN0aW9uIGJveCBjaGFuZ2VzIFVJIGJpbmRpbmdzIGluIHBhcmVudCwgc28gd2UnbGwgaGF2ZSB0byByZXJ1biBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGlzRWRpdGluZ0NoYW5nZUhhbmRsZXI6IChpc0VkaXRpbmcpID0+IHtcbiAgICAgICAgdGhpcy5pc0VkaXRpbmcgPSBpc0VkaXRpbmc7XG4gICAgICAgIHRoaXMuaXNBY3Rpb25Cb3hPcGVuID0gIXRoaXMuaXNFZGl0aW5nO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNZXNzYWdlUGFydHMoKSB7XG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLm1lc3NhZ2U/Lmh0bWwgfHwgdGhpcy5tZXNzYWdlPy50ZXh0O1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJhY2tlbmQgd2lsbCB3cmFwIEhUTUwgY29udGVudCB3aXRoIDxwPjwvcD5cXG5cbiAgICAgIGlmIChjb250ZW50LnN0YXJ0c1dpdGgoJzxwPicpKSB7XG4gICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoJzxwPicsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb250ZW50LmVuZHNXaXRoKCc8L3A+XFxuJykpIHtcbiAgICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgnPC9wPlxcbicsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzIHx8XG4gICAgICAgIHRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzLmxlbmd0aCA9PT0gMFxuICAgICAgKSB7XG4gICAgICAgIC8vIFdyYXAgZW1vamlzIGluIHNwYW4gdG8gZGlzcGxheSBlbW9qaXMgY29ycmVjdGx5IGluIENocm9tZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD01OTYyMjNcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgJ2cnKTtcbiAgICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICByZWdleCxcbiAgICAgICAgICAobWF0Y2gpID0+IGA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X19lbW9qaS1kaXNwbGF5LWZpeFwiPiR7bWF0Y2h9PC9zcGFuPmBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gW3sgY29udGVudCwgdHlwZTogJ3RleHQnIH1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gW107XG4gICAgICAgIGxldCB0ZXh0ID0gY29udGVudDtcbiAgICAgICAgdGhpcy5tZXNzYWdlIS5tZW50aW9uZWRfdXNlcnMuZm9yRWFjaCgodXNlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lbnRpb24gPSBgQCR7dXNlci5uYW1lIHx8IHVzZXIuaWR9YDtcbiAgICAgICAgICBjb25zdCBwcmVjZWRpbmdUZXh0ID0gdGV4dC5zdWJzdHJpbmcoMCwgdGV4dC5pbmRleE9mKG1lbnRpb24pKTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMucHVzaCh7XG4gICAgICAgICAgICBjb250ZW50OiBwcmVjZWRpbmdUZXh0LFxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cy5wdXNoKHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IG1lbnRpb24sXG4gICAgICAgICAgICB0eXBlOiAnbWVudGlvbicsXG4gICAgICAgICAgICB1c2VyLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UocHJlY2VkaW5nVGV4dCArIG1lbnRpb24sICcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzLnB1c2goeyBjb250ZW50OiB0ZXh0LCB0eXBlOiAndGV4dCcgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgI2NvbnRhaW5lclxuICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZSBzdHItY2hhdF9fbWVzc2FnZSBzdHItY2hhdF9fbWVzc2FnZS0te3tcbiAgICBtZXNzYWdlPy50eXBlXG4gIH19IHN0ci1jaGF0X19tZXNzYWdlLS17eyBtZXNzYWdlPy5zdGF0dXMgfX0ge3tcbiAgICBtZXNzYWdlPy50ZXh0ID8gJ3N0ci1jaGF0X19tZXNzYWdlLS1oYXMtdGV4dCcgOiAnaGFzLW5vLXRleHQnXG4gIH19XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS1tZV09XCJpc1NlbnRCeUN1cnJlbnRVc2VyXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS0tbWVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gIFtjbGFzcy5tb2JpbGUtcHJlc3NdPVwiaXNQcmVzc2VkT25Nb2JpbGVcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLWhhcy1hdHRhY2htZW50XT1cImhhc0F0dGFjaG1lbnRcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLXdpdGgtcmVhY3Rpb25zXT1cImhhc1JlYWN0aW9uc1wiXG4gIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1jb250YWluZXJcIlxuICAobW91c2VsZWF2ZSk9XCJpc0FjdGlvbkJveE9wZW4gPSBmYWxzZVwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVzc2FnZT8uZGVsZXRlZF9hdDsgZWxzZSBkZWxldGVkTWVzc2FnZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy50eXBlICE9PSAnc3lzdGVtJzsgZWxzZSBzeXN0ZW1NZXNzYWdlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgaXNTZW50QnlDdXJyZW50VXNlciAmJlxuICAgICAgICAgICgoaXNMYXN0U2VudE1lc3NhZ2UgJiYgbWVzc2FnZT8uc3RhdHVzID09PSAncmVjZWl2ZWQnKSB8fFxuICAgICAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnc2VuZGluZycpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5zdGF0dXMgPT09ICdzZW5kaW5nJzsgZWxzZSBzZW50U3RhdHVzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbmRpbmdTdGF0dXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2VudFN0YXR1cz5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBtb2RlID09PSAnbWFpbicgJiZcbiAgICAgICAgICAgICAgICBpc01lc3NhZ2VEZWxpdmVyZWRBbmRSZWFkICYmXG4gICAgICAgICAgICAgICAgY2FuRGlzcGxheVJlYWRTdGF0dXM7XG4gICAgICAgICAgICAgIGVsc2UgZGVsaXZlcmVkU3RhdHVzXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWFkU3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXZhdGFyXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdFwiXG4gICAgICAgIFtpbWFnZVVybF09XCJtZXNzYWdlPy51c2VyPy5pbWFnZVwiXG4gICAgICAgIFtuYW1lXT1cIm1lc3NhZ2U/LnVzZXI/Lm5hbWUgfHwgbWVzc2FnZT8udXNlcj8uaWRcIlxuICAgICAgPjwvc3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1pbm5lclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1vcHRpb25zXCJcbiAgICAgICAgICAqbmdJZj1cImFyZU9wdGlvbnNWaXNpYmxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1hY3Rpb25zLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvblxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvbi0tb3B0aW9uc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy5zdHItY2hhdC1hbmd1bGFyX19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uLS1vcHRpb25zLS1lZGl0aW5nXT1cIlxuICAgICAgICAgICAgICBpc0VkaXRpbmdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICNkZWZhdWx0TWVzc2FnZUFjdGlvbnNCb3hcbiAgICAgICAgICAgICAgbGV0LWlzT3Blbj1cImlzT3BlblwiXG4gICAgICAgICAgICAgIGxldC1pc01pbmU9XCJpc01pbmVcIlxuICAgICAgICAgICAgICBsZXQtZW5hYmxlZEFjdGlvbnM9XCJlbmFibGVkQWN0aW9uc1wiXG4gICAgICAgICAgICAgIGxldC1tZXNzYWdlSW5wdXQ9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgbGV0LWRpc3BsYXllZEFjdGlvbnNDb3VudENoYW5lSGFubGVyPVwiZGlzcGxheWVkQWN0aW9uc0NvdW50Q2hhbmVIYW5sZXJcIlxuICAgICAgICAgICAgICBsZXQtaXNFZGl0aW5nQ2hhbmdlSGFuZGxlcj1cImlzRWRpdGluZ0NoYW5nZUhhbmRsZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3RyZWFtLW1lc3NhZ2UtYWN0aW9ucy1ib3hcbiAgICAgICAgICAgICAgICBbaXNPcGVuXT1cImlzT3BlblwiXG4gICAgICAgICAgICAgICAgW2lzTWluZV09XCJpc01pbmVcIlxuICAgICAgICAgICAgICAgIFtlbmFibGVkQWN0aW9uc109XCJlbmFibGVkQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZUlucHV0XCJcbiAgICAgICAgICAgICAgICAoZGlzcGxheWVkQWN0aW9uc0NvdW50KT1cIlxuICAgICAgICAgICAgICAgICAgZGlzcGxheWVkQWN0aW9uc0NvdW50Q2hhbmVIYW5sZXIoJGV2ZW50KVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGlzRWRpdGluZyk9XCJpc0VkaXRpbmdDaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgICA+PC9zdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgbWVzc2FnZUFjdGlvbnNCb3hUZW1wbGF0ZSB8fCBkZWZhdWx0TWVzc2FnZUFjdGlvbnNCb3g7XG4gICAgICAgICAgICAgICAgY29udGV4dDogZ2V0TWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0KClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAqbmdJZj1cInZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID4gMFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICBpY29uPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaXNBY3Rpb25Cb3hPcGVuID0gIWlzQWN0aW9uQm94T3BlblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpc0FjdGlvbkJveE9wZW4gPSAhaXNBY3Rpb25Cb3hPcGVuXCJcbiAgICAgICAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NvbmRpdGlvbmFsLWNvbXBsZXhpdHkgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLmluZGV4T2YoJ3NlbmQtcmVwbHknKSAhPT0gLTEgJiZcbiAgICAgICAgICAgICAgbW9kZSA9PT0gJ21haW4nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb25cbiAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb24tLXRocmVhZFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVwbHktaW4tdGhyZWFkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRBc0FjdGl2ZVBhcmVudE1lc3NhZ2UoKVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgICAgICBpY29uPVwicmVwbHktaW4tdGhyZWFkXCJcbiAgICAgICAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiY2FuUmVhY3RUb01lc3NhZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb25cbiAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb24tLXJlYWN0aW9uc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaXNSZWFjdGlvblNlbGVjdG9yT3BlbiA9ICFpc1JlYWN0aW9uU2VsZWN0b3JPcGVuXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJpc1JlYWN0aW9uU2VsZWN0b3JPcGVuID0gIWlzUmVhY3Rpb25TZWxlY3Rvck9wZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgICAgICBpY29uPVwicmVhY3Rpb24taWNvblwiXG4gICAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gZXNsaW50LWVuYWJsZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvY29uZGl0aW9uYWwtY29tcGxleGl0eSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2RlZmF1bHRNZXNzYWdlUmVhY3Rpb25zXG4gICAgICAgICAgbGV0LW1lc3NhZ2VSZWFjdGlvbkNvdW50cz1cIm1lc3NhZ2VSZWFjdGlvbkNvdW50c1wiXG4gICAgICAgICAgbGV0LWxhdGVzdFJlYWN0aW9ucz1cImxhdGVzdFJlYWN0aW9uc1wiXG4gICAgICAgICAgbGV0LWlzU2VsZWN0b3JPcGVuPVwiaXNTZWxlY3Rvck9wZW5cIlxuICAgICAgICAgIGxldC1pc1NlbGVjdG9yT3BlbkNoYW5nZUhhbmRsZXI9XCJpc1NlbGVjdG9yT3BlbkNoYW5nZUhhbmRsZXJcIlxuICAgICAgICAgIGxldC1tZXNzYWdlSWQ9XCJtZXNzYWdlSWRcIlxuICAgICAgICAgIGxldC1vd25SZWFjdGlvbnM9XCJvd25SZWFjdGlvbnNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1tZXNzYWdlLXJlYWN0aW9uc1xuICAgICAgICAgICAgW21lc3NhZ2VSZWFjdGlvbkNvdW50c109XCJtZXNzYWdlUmVhY3Rpb25Db3VudHNcIlxuICAgICAgICAgICAgW2xhdGVzdFJlYWN0aW9uc109XCJsYXRlc3RSZWFjdGlvbnNcIlxuICAgICAgICAgICAgW2lzU2VsZWN0b3JPcGVuXT1cImlzU2VsZWN0b3JPcGVuXCJcbiAgICAgICAgICAgIChpc1NlbGVjdG9yT3BlbkNoYW5nZSk9XCJpc1NlbGVjdG9yT3BlbkNoYW5nZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICAgICAgICBbb3duUmVhY3Rpb25zXT1cIm93blJlYWN0aW9uc1wiXG4gICAgICAgICAgPjwvc3RyZWFtLW1lc3NhZ2UtcmVhY3Rpb25zPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG1lc3NhZ2VSZWFjdGlvbnNUZW1wbGF0ZSB8fCBkZWZhdWx0TWVzc2FnZVJlYWN0aW9ucztcbiAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VSZWFjdGlvbnNDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNBdHRhY2htZW50ICYmICFtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2RlZmF1bHRBdHRhY2htZW50c1xuICAgICAgICAgICAgbGV0LW1lc3NhZ2VJZD1cIm1lc3NhZ2VJZFwiXG4gICAgICAgICAgICBsZXQtYXR0YWNobWVudHM9XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgICAgICAgICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgICAgICAgICAgICBbYXR0YWNobWVudHNdPVwiYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIGF0dGFjaG1lbnRMaXN0VGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRzO1xuICAgICAgICAgICAgICBjb250ZXh0OiBnZXRBdHRhY2htZW50TGlzdENvbnRleHQoKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtdGV4dFwiICpuZ0lmPVwibWVzc2FnZT8udGV4dFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaW5uZXItbWVzc2FnZVwiXG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS10ZXh0LWlubmVyIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10ZXh0LWlubmVyXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLWxpZ2h0LXRleHQtaW5uZXItLWhhcy1hdHRhY2htZW50XT1cIlxuICAgICAgICAgICAgICBoYXNBdHRhY2htZW50XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBtZXNzYWdlPy5zdGF0dXMgPT09ICdmYWlsZWQnICYmIG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSAhPT0gNDAzXG4gICAgICAgICAgICAgICAgPyByZXNlbmRNZXNzYWdlKClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgICAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJiBtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwM1xuICAgICAgICAgICAgICAgID8gcmVzZW5kTWVzc2FnZSgpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInF1b3RlZE1lc3NhZ2VcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxzdHJlYW0tYXR0YWNobWVudC1saXN0XG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzQXR0YWNobWVudCAmJiBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZVwiXG4gICAgICAgICAgICAgIFthdHRhY2htZW50c109XCJtZXNzYWdlIS5hdHRhY2htZW50cyFcIlxuICAgICAgICAgICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2UhLmlkXCJcbiAgICAgICAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LWxpc3Q+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2xpZW50LWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnR5cGUgPT09ICdlcnJvcidcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19zaW1wbGUtbWVzc2FnZS0tZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5FcnJvciDCtyBVbnNlbnRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwibWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NpbXBsZS1tZXNzYWdlLS1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAobWVzc2FnZT8uZXJyb3JTdGF0dXNDb2RlID09PSA0MDNcbiAgICAgICAgICAgICAgICAgID8gXCJzdHJlYW1DaGF0Lk1lc3NhZ2UgRmFpbGVkIMK3IFVuYXV0aG9yaXplZFwiXG4gICAgICAgICAgICAgICAgICA6IFwic3RyZWFtQ2hhdC5NZXNzYWdlIEZhaWxlZCDCtyBDbGljayB0byB0cnkgYWdhaW5cIlxuICAgICAgICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwidGV4dENsaWNrZWQoKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0ZXh0Q2xpY2tlZCgpXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgPCEtLSBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL3VzZS10cmFjay1ieS1mdW5jdGlvbiAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYXJ0IG9mIG1lc3NhZ2VUZXh0UGFydHNcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFydC50eXBlID09PSAndGV4dCc7IGVsc2UgbWVudGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicGFydC5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21lbnRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE1lbnRpb24gbGV0LWNvbnRlbnQ9XCJjb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGI+e3sgY29udGVudCB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW50aW9uVGVtcGxhdGUgfHwgZGVmYXVsdE1lbnRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBnZXRNZW50aW9uQ29udGV4dChwYXJ0KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1yZXBseS1idXR0b25cIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAhIW1lc3NhZ2U/LnJlcGx5X2NvdW50ICYmXG4gICAgICAgICAgICAgIG1vZGUgIT09ICd0aHJlYWQnICYmXG4gICAgICAgICAgICAgIGVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdzZW5kLXJlcGx5JykgIT09IC0xXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZXBsaWVzLWNvdW50LWJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInJlcGx5LWNvdW50LWJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwicmVwbHlcIj48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgICAgICAge3ttZXNzYWdlPy5yZXBseV9jb3VudCA9PT0gMSA/ICgnc3RyZWFtQ2hhdC4xIHJlcGx5JyB8IHRyYW5zbGF0ZSkgOiAoJ3N0cmVhbUNoYXQue3sgcmVwbHlDb3VudCB9fVxuICAgICAgICAgICAgcmVwbGllcycgfCB0cmFuc2xhdGU6cmVwbHlDb3VudFBhcmFtKX19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtZGF0YSBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtZGF0YVwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmRlclwiXG4gICAgICAgICAgICAqbmdJZj1cIiFpc1NlbnRCeUN1cnJlbnRVc2VyXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLW5hbWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG1lc3NhZ2U/LnVzZXI/Lm5hbWUgPyBtZXNzYWdlPy51c2VyPy5uYW1lIDogbWVzc2FnZT8udXNlcj8uaWQgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gZGF0YS10ZXN0aWQ9XCJkYXRlXCIgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtdGltZXN0YW1wXCI+XG4gICAgICAgICAgICB7eyBwYXJzZWREYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NlbmRpbmdTdGF0dXM+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cy1hbmd1bGFyXG4gICAgXCJcbiAgICBkYXRhLXRlc3RpZD1cInNlbmRpbmctaW5kaWNhdG9yXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlNlbmRpbmcuLi5cIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICAgIDxzdHJlYW0tbG9hZGluZy1pbmRpY2F0b3ItcGxhY2Vob2xkZXJcbiAgICAgIGRhdGEtdGVzdGlkPVwibG9hZGluZy1pbmRpY2F0b3JcIlxuICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvci1wbGFjZWhvbGRlcj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVhZFN0YXR1cz5cbiAgPHNwYW5cbiAgICBjbGFzcz1cIlxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cyBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzLWFuZ3VsYXJcbiAgICBcIlxuICAgIGRhdGEtdGVzdGlkPVwicmVhZC1pbmRpY2F0b3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwXCIgZGF0YS10ZXN0aWQ9XCJyZWFkLWJ5LXRvb2x0aXBcIj5cbiAgICAgIHt7IHJlYWRCeVRleHQgfX1cbiAgICA8L2Rpdj5cbiAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdFwiXG4gICAgICBkYXRhLXRlc3QtaWQ9XCJsYXN0LXJlYWQtdXNlci1hdmF0YXJcIlxuICAgICAgW3NpemVdPVwiMTVcIlxuICAgICAgW2ltYWdlVXJsXT1cImxhc3RSZWFkVXNlcj8uaW1hZ2VcIlxuICAgICAgW25hbWVdPVwibGFzdFJlYWRVc2VyPy5uYW1lIHx8IGxhc3RSZWFkVXNlcj8uaWRcIlxuICAgID48L3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXI+XG4gICAgPHNwYW5cbiAgICAgIGRhdGEtdGVzdC1pZD1cInJlYWQtYnktbGVuZ3RoXCJcbiAgICAgICpuZ0lmPVwiaXNSZWFkQnlNdWx0aXBsZVVzZXJzXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cy1udW1iZXJcIlxuICAgID5cbiAgICAgIHt7IChtZXNzYWdlPy5yZWFkQnkpIS5sZW5ndGggfX1cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlbGl2ZXJlZFN0YXR1cz5cbiAgPHNwYW5cbiAgICAqbmdJZj1cIm1vZGUgPT09ICdtYWluJ1wiXG4gICAgY2xhc3M9XCJcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cy1hbmd1bGFyXG4gICAgXCJcbiAgICBkYXRhLXRlc3RpZD1cImRlbGl2ZXJlZC1pbmRpY2F0b3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwXCI+XG4gICAgICB7eyBcInN0cmVhbUNoYXQuRGVsaXZlcmVkXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgIGRhdGEtdGVzdGlkPVwiZGVsaXZlcmVkLWljb25cIlxuICAgICAgaWNvbj1cImRlbGl2ZXJlZC1pY29uXCJcbiAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWxldGVkTWVzc2FnZT5cbiAgPGRpdiBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtZGVsZXRlZC1jb21wb25lbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLWRlbGV0ZWQtaW5uZXJcIiB0cmFuc2xhdGU+XG4gICAgICBzdHJlYW1DaGF0LlRoaXMgbWVzc2FnZSB3YXMgZGVsZXRlZC4uLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3lzdGVtTWVzc2FnZT5cbiAgPGRpdiBkYXRhLXRlc3RpZD1cInN5c3RlbS1tZXNzYWdlXCIgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX3RleHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19saW5lXCI+PC9kaXY+XG4gICAgICA8cD57eyBtZXNzYWdlPy50ZXh0IH19PC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2xpbmVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLXN5c3RlbV9fZGF0ZVwiPlxuICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcXVvdGVkTWVzc2FnZT5cbiAgPGRpdlxuICAgICpuZ0lmPVwibWVzc2FnZT8ucXVvdGVkX21lc3NhZ2VcIlxuICAgIGNsYXNzPVwicXVvdGVkLW1lc3NhZ2VcIlxuICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtY29udGFpbmVyXCJcbiAgICBbY2xhc3MubWluZV09XCJpc1NlbnRCeUN1cnJlbnRVc2VyXCJcbiAgPlxuICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICBkYXRhLXRlc3RpZD1cInFvdXRlZC1tZXNzYWdlLWF2YXRhclwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0XCJcbiAgICAgIFtpbWFnZVVybF09XCJtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8udXNlcj8uaW1hZ2VcIlxuICAgICAgW25hbWVdPVwiXG4gICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy51c2VyPy5uYW1lIHx8IG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy51c2VyPy5pZFxuICAgICAgXCJcbiAgICAgIFtzaXplXT1cIjIwXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZS1pbm5lclwiPlxuICAgICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8uYXR0YWNobWVudHMgJiZcbiAgICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8uYXR0YWNobWVudHM/Lmxlbmd0aFxuICAgICAgICBcIlxuICAgICAgICBbYXR0YWNobWVudHNdPVwicXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzXCJcbiAgICAgICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8uaWRcIlxuICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgICAgIDxkaXZcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJxdW90ZWQtbWVzc2FnZS10ZXh0XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8uaHRtbCB8fCBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8udGV4dFxuICAgICAgICBcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
3
- import { MessageInputComponent } from '../message-input/message-input.component';
3
+ import { Subject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../chat-client.service";
6
6
  import * as i2 from "../notification.service";
@@ -43,6 +43,7 @@ export class MessageActionsBoxComponent {
43
43
  this.isEditModalOpen = false;
44
44
  this.subscriptions = [];
45
45
  this.visibleMessageActionItems = [];
46
+ this.sendMessageSubject = new Subject();
46
47
  this.modalClosed = () => {
47
48
  this.isEditModalOpen = false;
48
49
  this.isEditing.emit(false);
@@ -106,6 +107,7 @@ export class MessageActionsBoxComponent {
106
107
  enabledActions.indexOf('delete-any-message') !== -1,
107
108
  },
108
109
  ];
110
+ this.sendMessage$ = this.sendMessageSubject.asObservable();
109
111
  }
110
112
  ngOnChanges(changes) {
111
113
  if (changes.isMine || changes.enabledActions || changes.message) {
@@ -123,8 +125,7 @@ export class MessageActionsBoxComponent {
123
125
  : actionLabelOrTranslationKey();
124
126
  }
125
127
  sendClicked() {
126
- var _a;
127
- (_a = this.messageInput) === null || _a === void 0 ? void 0 : _a.messageSent();
128
+ this.sendMessageSubject.next();
128
129
  }
129
130
  getMessageInputContext() {
130
131
  return {
@@ -135,6 +136,7 @@ export class MessageActionsBoxComponent {
135
136
  isMultipleFileUploadEnabled: undefined,
136
137
  mentionScope: undefined,
137
138
  mode: undefined,
139
+ sendMessage$: this.sendMessage$,
138
140
  };
139
141
  }
140
142
  getEditModalContext() {
@@ -154,7 +156,7 @@ export class MessageActionsBoxComponent {
154
156
  }
155
157
  }
156
158
  MessageActionsBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageActionsBoxComponent, deps: [{ token: i1.ChatClientService }, { token: i2.NotificationService }, { token: i3.ChannelService }, { token: i4.CustomTemplatesService }], target: i0.ɵɵFactoryTarget.Component });
157
- MessageActionsBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageActionsBoxComponent, selector: "stream-message-actions-box", inputs: { isOpen: "isOpen", isMine: "isMine", message: "message", enabledActions: "enabledActions" }, outputs: { displayedActionsCount: "displayedActionsCount", isEditing: "isEditing" }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: MessageInputComponent, descendants: true }, { propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"action-box\"\n class=\"str-chat__message-actions-box\"\n [class.str-chat__message-actions-box--open]=\"isOpen\"\n [class.str-chat__message-actions-box--mine]=\"isMine\"\n>\n <ul class=\"str-chat__message-actions-list\">\n <ng-container\n *ngFor=\"let item of visibleMessageActionItems; trackBy: trackByActionName\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n messageActionItemTemplate || defaultMessageActionItem;\n context: item\n \"\n ></ng-container>\n </ng-container>\n </ul>\n</div>\n\n<ng-template\n #defaultMessageActionItem\n let-actionName=\"actionName\"\n let-actionHandler=\"actionHandler\"\n let-actionLabelOrTranslationKey=\"actionLabelOrTranslationKey\"\n>\n <button [attr.data-testid]=\"actionName + '-action'\" (click)=\"actionHandler()\">\n <li class=\"str-chat__message-actions-list-item\">\n {{ getActionLabel(actionLabelOrTranslationKey) | translate }}\n </li>\n </button>\n</ng-template>\n\n<ng-container\n *ngTemplateOutlet=\"\n modalTemplate || defaultModal;\n context: getEditModalContext()\n \"\n></ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n [isOpen]=\"isOpen\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n [content]=\"content\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #modalContent>\n <div class=\"str-chat__edit-message-form\" *ngIf=\"isEditModalOpen\">\n <ng-template\n #defaultInput\n let-messageInput=\"message\"\n let-messageUpdateHandler=\"messageUpdateHandler\"\n >\n <stream-message-input\n [message]=\"messageInput\"\n (messageUpdate)=\"messageUpdateHandler()\"\n ></stream-message-input>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n messageInputTemplate || defaultInput;\n context: getMessageInputContext()\n \"\n >\n </ng-container>\n\n <stream-notification-list></stream-notification-list>\n <div\n class=\"\n str-chat__message-team-form-footer\n str-chat__message-team-form-footer-angular\n \"\n >\n <div class=\"str-chat__edit-message-form-options\">\n <button translate data-testid=\"cancel-button\" (click)=\"modalClosed()\">\n streamChat.Cancel\n </button>\n <button\n type=\"submit\"\n translate\n data-testid=\"send-button\"\n (click)=\"sendClicked()\"\n (keyup.enter)=\"sendClicked()\"\n >\n streamChat.Send\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", components: [{ type: i5.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { type: i6.MessageInputComponent, selector: "stream-message-input", inputs: ["isFileUploadEnabled", "areMentionsEnabled", "mentionScope", "mode", "isMultipleFileUploadEnabled", "message"], outputs: ["messageUpdate"] }, { type: i7.NotificationListComponent, selector: "stream-notification-list" }], directives: [{ type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], pipes: { "translate": i9.TranslatePipe } });
159
+ MessageActionsBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageActionsBoxComponent, selector: "stream-message-actions-box", inputs: { isOpen: "isOpen", isMine: "isMine", message: "message", enabledActions: "enabledActions" }, outputs: { displayedActionsCount: "displayedActionsCount", isEditing: "isEditing" }, viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"action-box\"\n class=\"str-chat__message-actions-box\"\n [class.str-chat__message-actions-box--open]=\"isOpen\"\n [class.str-chat__message-actions-box--mine]=\"isMine\"\n>\n <ul class=\"str-chat__message-actions-list\">\n <ng-container\n *ngFor=\"let item of visibleMessageActionItems; trackBy: trackByActionName\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n messageActionItemTemplate || defaultMessageActionItem;\n context: item\n \"\n ></ng-container>\n </ng-container>\n </ul>\n</div>\n\n<ng-template\n #defaultMessageActionItem\n let-actionName=\"actionName\"\n let-actionHandler=\"actionHandler\"\n let-actionLabelOrTranslationKey=\"actionLabelOrTranslationKey\"\n>\n <button [attr.data-testid]=\"actionName + '-action'\" (click)=\"actionHandler()\">\n <li class=\"str-chat__message-actions-list-item\">\n {{ getActionLabel(actionLabelOrTranslationKey) | translate }}\n </li>\n </button>\n</ng-template>\n\n<ng-container\n *ngTemplateOutlet=\"\n modalTemplate || defaultModal;\n context: getEditModalContext()\n \"\n></ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n [isOpen]=\"isOpen\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n [content]=\"content\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #modalContent>\n <div class=\"str-chat__edit-message-form\" *ngIf=\"isEditModalOpen\">\n <ng-template\n #defaultInput\n let-messageInput=\"message\"\n let-messageUpdateHandler=\"messageUpdateHandler\"\n let-sendMessage$Input=\"sendMessage$\"\n >\n <stream-message-input\n [message]=\"messageInput\"\n (messageUpdate)=\"messageUpdateHandler()\"\n [sendMessage$]=\"sendMessage$Input\"\n ></stream-message-input>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n messageInputTemplate || defaultInput;\n context: getMessageInputContext()\n \"\n >\n </ng-container>\n\n <stream-notification-list></stream-notification-list>\n <div\n class=\"\n str-chat__message-team-form-footer\n str-chat__message-team-form-footer-angular\n \"\n >\n <div class=\"str-chat__edit-message-form-options\">\n <button translate data-testid=\"cancel-button\" (click)=\"modalClosed()\">\n streamChat.Cancel\n </button>\n <button\n type=\"submit\"\n translate\n data-testid=\"send-button\"\n (click)=\"sendClicked()\"\n (keyup.enter)=\"sendClicked()\"\n >\n streamChat.Send\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", components: [{ type: i5.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { type: i6.MessageInputComponent, selector: "stream-message-input", inputs: ["isFileUploadEnabled", "areMentionsEnabled", "mentionScope", "mode", "isMultipleFileUploadEnabled", "message", "sendMessage$"], outputs: ["messageUpdate"] }, { type: i7.NotificationListComponent, selector: "stream-notification-list" }], directives: [{ type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], pipes: { "translate": i9.TranslatePipe } });
158
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageActionsBoxComponent, decorators: [{
159
161
  type: Component,
160
162
  args: [{
@@ -174,11 +176,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
174
176
  type: Output
175
177
  }], isEditing: [{
176
178
  type: Output
177
- }], messageInput: [{
178
- type: ViewChild,
179
- args: [MessageInputComponent]
180
179
  }], modalContent: [{
181
180
  type: ViewChild,
182
181
  args: ['modalContent', { static: true }]
183
182
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1hY3Rpb25zLWJveC9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7OztBQVNqRjs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUF1Q3JDLFlBQ1UsaUJBQW9DLEVBQ3BDLG1CQUF3QyxFQUN4QyxjQUE4QixFQUM5QixzQkFBOEM7UUFIOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBMUN4RDs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDeEI7O1dBRUc7UUFDTSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBS3hCOztXQUVHO1FBQ00sbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDdkM7O1dBRUc7UUFDZ0IsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN0RTs7V0FFRztRQUNnQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMzRCxvQkFBZSxHQUFH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IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL21lc3NhZ2UtaW5wdXQvbWVzc2FnZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1lc3NhZ2VBY3Rpb25Cb3hJdGVtQ29udGV4dCxcbiAgTWVzc2FnZUFjdGlvbkl0ZW0sXG4gIE1lc3NhZ2VJbnB1dENvbnRleHQsXG4gIE1vZGFsQ29udGV4dCxcbiAgU3RyZWFtTWVzc2FnZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuLyoqXG4gKiBUaGUgYE1lc3NhZ2VBY3Rpb25zQm94YCBjb21wb25lbnQgZGlzcGxheXMgYSBsaXN0IG9mIG1lc3NhZ2UgYWN0aW9ucyAoaS5lIGVkaXQpLCB0aGF0IGNhbiBiZSBvcGVuZWQgb3IgY2xvc2VkLiBZb3UgY2FuIGZpbmQgdGhlIFtsaXN0IG9mIHRoZSBzdXBwb3J0ZWQgYWN0aW9uc10oLi4vY29uY2VwdHMvbWVzc2FnZS1pbnRlcmFjdGlvbnMubWR4KSBpbiB0aGUgbWVzc2FnZSBpbnRlcmFjdGlvbiBndWlkZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtYWN0aW9ucy1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VBY3Rpb25zQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaXN0IHNob3VsZCBiZSBvcGVuZWQgb3IgY2xvc2VkLiBBZGRpbmcgYSBVSSBlbGVtZW50IHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBsaXN0IGlzIHRoZSBwYXJlbnQncyBjb21wb25lbnQgcmVzcG9uc2liaWxpdHkuXG4gICAqL1xuICBASW5wdXQoKSBpc09wZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbWVzc2FnZSBhY3Rpb25zIGFyZSBiZWxvbmdpbmcgdG8gYSBtZXNzYWdlIHRoYXQgd2FzIHNlbnQgYnkgdGhlIGN1cnJlbnQgdXNlciBvciBub3QuXG4gICAqL1xuICBASW5wdXQoKSBpc01pbmUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRoZSBhY3Rpb25zIHdpbGwgYmUgZXhlY3V0ZWQgb25cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBbY2hhbm5lbCBjYXBhYmlsaXRpZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KSB0aGF0IGFyZSBlbmFibGVkIGZvciB0aGUgY3VycmVudCB1c2VyLCB0aGUgbGlzdCBvZiBbc3VwcG9ydGVkIGludGVyYWN0aW9uc10oLi4vY29uY2VwdHMvbWVzc2FnZS1pbnRlcmFjdGlvbnMubWR4KSBjYW4gYmUgZm91bmQgaW4gb3VyIG1lc3NhZ2UgaW50ZXJhY3Rpb24gZ3VpZGUuIFVuYXRob3JpemVkIGFjdGlvbnMgd29uJ3QgYmUgZGlzcGxheWVkIG9uIHRoZSBVSS5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBhdXRob3JpemVkIGFjdGlvbnMgKGl0IGNhbiBiZSBsZXNzIG9yIGVxdWFsIHRoYW4gdGhlIG51bWJlciBvZiBlbmFibGVkIGFjdGlvbnMpXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZGlzcGxheWVkQWN0aW9uc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIC8qKlxuICAgKiBBbiBldmVudCB3aGljaCBlbWl0cyBgdHJ1ZWAgaWYgdGhlIGVkaXQgbWVzc2FnZSBtb2RhbCBpcyBvcGVuLCBhbmQgYGZhbHNlYCB3aGVuIGl0IGlzIGNsb3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBpc0VkaXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIGlzRWRpdE1vZGFsT3BlbiA9IGZhbHNlO1xuICBtZXNzYWdlSW5wdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8TWVzc2FnZUlucHV0Q29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2VBY3Rpb25JdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxNZXNzYWdlQWN0aW9uQm94SXRlbUNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIG1vZGFsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPE1vZGFsQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHZpc2libGVNZXNzYWdlQWN0aW9uSXRlbXM6IE1lc3NhZ2VBY3Rpb25JdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlQWN0aW9uSXRlbXM6IE1lc3NhZ2VBY3Rpb25JdGVtW107XG4gIEBWaWV3Q2hpbGQoTWVzc2FnZUlucHV0Q29tcG9uZW50KSBwcml2YXRlIG1lc3NhZ2VJbnB1dDpcbiAgICB8IE1lc3NhZ2VJbnB1dENvbXBvbmVudFxuICAgIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdtb2RhbENvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIG1vZGFsQ29udGVudCE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lc3NhZ2VJbnB1dFRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMubWVzc2FnZUlucHV0VGVtcGxhdGUgPSB0ZW1wbGF0ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lc3NhZ2VBY3Rpb25zQm94SXRlbVRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMubWVzc2FnZUFjdGlvbkl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubW9kYWxUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+ICh0aGlzLm1vZGFsVGVtcGxhdGUgPSB0ZW1wbGF0ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMubWVzc2FnZUFjdGlvbkl0ZW1zID0gW1xuICAgICAge1xuICAgICAgICBhY3Rpb25OYW1lOiAncXVvdGUnLFxuICAgICAgICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICdzdHJlYW1DaGF0LlJlcGx5JyxcbiAgICAgICAgYWN0aW9uSGFuZGxlcjogKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UpID0+XG4gICAgICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5zZWxlY3RNZXNzYWdlVG9RdW90ZShtZXNzYWdlKSxcbiAgICAgICAgaXNWaXNpYmxlOiAoXG4gICAgICAgICAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdLFxuICAgICAgICAgIGlzTWluZTogYm9vbGVhbixcbiAgICAgICAgICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlXG4gICAgICAgICkgPT5cbiAgICAgICAgICBlbmFibGVkQWN0aW9ucy5pbmRleE9mKCdxdW90ZS1tZXNzYWdlJykgIT09IC0xICYmXG4gICAgICAgICAgIW1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uTmFtZTogJ3BpbicsXG4gICAgICAgIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogKCkgPT5cbiAgICAgICAgICB0aGlzLm1lc3NhZ2U/LnBpbm5lZCA/ICdzdHJlYW1DaGF0LlVucGluJyA6ICdzdHJlYW1DaGF0LlBpbicsXG4gICAgICAgIGFjdGlvbkhhbmRsZXI6ICgpID0+IGFsZXJ0KCdGZWF0dXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKSxcbiAgICAgICAgaXNWaXNpYmxlOiAoKSA9PiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbk5hbWU6ICdmbGFnJyxcbiAgICAgICAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAnc3RyZWFtQ2hhdC5GbGFnJyxcbiAgICAgICAgYWN0aW9uSGFuZGxlcjogYXN5bmMgKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5mbGFnTWVzc2FnZShtZXNzYWdlLmlkKTtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICAgICAgICdzdHJlYW1DaGF0Lk1lc3NhZ2UgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGZsYWdnZWQnLFxuICAgICAgICAgICAgICAnc3VjY2VzcydcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgICAnc3RyZWFtQ2hhdC5FcnJvciBhZGRpbmcgZmxhZydcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc1Zpc2libGU6IChlbmFibGVkQWN0aW9uczogc3RyaW5nW10sIGlzTWluZTogYm9vbGVhbikgPT5cbiAgICAgICAgICBlbmFibGVkQWN0aW9ucy5pbmRleE9mKCdmbGFnLW1lc3NhZ2UnKSAhPT0gLTEgJiYgIWlzTWluZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbk5hbWU6ICdlZGl0JyxcbiAgICAgICAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAnc3RyZWFtQ2hhdC5FZGl0IE1lc3NhZ2UnLFxuICAgICAgICBhY3Rpb25IYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuZW1pdCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGFsT3BlbiA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmlzaWJsZTogKGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSwgaXNNaW5lOiBib29sZWFuKSA9PlxuICAgICAgICAgIChlbmFibGVkQWN0aW9ucy5pbmRleE9mKCd1cGRhdGUtb3duLW1lc3NhZ2UnKSAhPT0gLTEgJiYgaXNNaW5lKSB8fFxuICAgICAgICAgIGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ3VwZGF0ZS1hbnktbWVzc2FnZScpICE9PSAtMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbk5hbWU6ICdkZWxldGUnLFxuICAgICAgICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICdzdHJlYW1DaGF0LkRlbGV0ZScsXG4gICAgICAgIGFjdGlvbkhhbmRsZXI6IGFzeW5jIChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hhbm5lbFNlcnZpY2UuZGVsZXRlTWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgJ3N0cmVhbUNoYXQuRXJyb3IgZGVsZXRpbmcgbWVzc2FnZSdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc1Zpc2libGU6IChlbmFibGVkQWN0aW9uczogc3RyaW5nW10sIGlzTWluZTogYm9vbGVhbikgPT5cbiAgICAgICAgICAoKGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ2RlbGV0ZScpICE9PSAtMSB8fFxuICAgICAgICAgICAgZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignZGVsZXRlLW93bi1tZXNzYWdlJykgIT09IC0xKSAmJlxuICAgICAgICAgICAgaXNNaW5lKSB8fFxuICAgICAgICAgIGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ2RlbGV0ZS1hbnknKSAhPT0gLTEgfHxcbiAgICAgICAgICBlbmFibGVkQWN0aW9ucy5pbmRleE9mKCdkZWxldGUtYW55LW1lc3NhZ2UnKSAhPT0gLTEsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaXNNaW5lIHx8IGNoYW5nZXMuZW5hYmxlZEFjdGlvbnMgfHwgY2hhbmdlcy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25JdGVtcy5mb3JFYWNoKFxuICAgICAgICAoaSkgPT5cbiAgICAgICAgICAoaS5hY3Rpb25IYW5kbGVyID0gaS5hY3Rpb25IYW5kbGVyLmJpbmQoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlISxcbiAgICAgICAgICAgIHRoaXMuaXNNaW5lXG4gICAgICAgICAgKSlcbiAgICAgICk7XG4gICAgICB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uSXRlbXMgPSB0aGlzLm1lc3NhZ2VBY3Rpb25JdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgIGl0ZW0uaXNWaXNpYmxlKHRoaXMuZW5hYmxlZEFjdGlvbnMsIHRoaXMuaXNNaW5lLCB0aGlzLm1lc3NhZ2UhKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzcGxheWVkQWN0aW9uc0NvdW50LmVtaXQodGhpcy52aXNpYmxlTWVzc2FnZUFjdGlvbkl0ZW1zLmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXRBY3Rpb25MYWJlbChhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICgoKSA9PiBzdHJpbmcpIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXkgPT09ICdzdHJpbmcnXG4gICAgICA/IGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleVxuICAgICAgOiBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXkoKTtcbiAgfVxuXG4gIHNlbmRDbGlja2VkKCkge1xuICAgIHRoaXMubWVzc2FnZUlucHV0Py5tZXNzYWdlU2VudCgpO1xuICB9XG5cbiAgbW9kYWxDbG9zZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5pc0VkaXRNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmlzRWRpdGluZy5lbWl0KGZhbHNlKTtcbiAgfTtcblxuICBnZXRNZXNzYWdlSW5wdXRDb250ZXh0KCk6IE1lc3NhZ2VJbnB1dENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBtZXNzYWdlVXBkYXRlSGFuZGxlcjogdGhpcy5tb2RhbENsb3NlZCxcbiAgICAgIGlzRmlsZVVwbG9hZEVuYWJsZWQ6IHVuZGVmaW5lZCxcbiAgICAgIGFyZU1lbnRpb25zRW5hYmxlZDogdW5kZWZpbmVkLFxuICAgICAgaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkOiB1bmRlZmluZWQsXG4gICAgICBtZW50aW9uU2NvcGU6IHVuZGVmaW5lZCxcbiAgICAgIG1vZGU6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RWRpdE1vZGFsQ29udGV4dCgpOiBNb2RhbENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBpc09wZW46IHRoaXMuaXNFZGl0TW9kYWxPcGVuLFxuICAgICAgaXNPcGVuQ2hhbmdlSGFuZGxlcjogKGlzT3BlbikgPT4ge1xuICAgICAgICB0aGlzLmlzRWRpdE1vZGFsT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgaWYgKCF0aGlzLmlzRWRpdE1vZGFsT3Blbikge1xuICAgICAgICAgIHRoaXMubW9kYWxDbG9zZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMubW9kYWxDb250ZW50LFxuICAgIH07XG4gIH1cblxuICB0cmFja0J5QWN0aW9uTmFtZShfOiBudW1iZXIsIGl0ZW06IE1lc3NhZ2VBY3Rpb25JdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0uYWN0aW9uTmFtZTtcbiAgfVxufVxuIiwiPGRpdlxuICBkYXRhLXRlc3RpZD1cImFjdGlvbi1ib3hcIlxuICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94LS1vcGVuXT1cImlzT3BlblwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWJveC0tbWluZV09XCJpc01pbmVcIlxuPlxuICA8dWwgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWxpc3RcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlTWVzc2FnZUFjdGlvbkl0ZW1zOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uTmFtZVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIG1lc3NhZ2VBY3Rpb25JdGVtVGVtcGxhdGUgfHwgZGVmYXVsdE1lc3NhZ2VBY3Rpb25JdGVtO1xuICAgICAgICAgIGNvbnRleHQ6IGl0ZW1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI2RlZmF1bHRNZXNzYWdlQWN0aW9uSXRlbVxuICBsZXQtYWN0aW9uTmFtZT1cImFjdGlvbk5hbWVcIlxuICBsZXQtYWN0aW9uSGFuZGxlcj1cImFjdGlvbkhhbmRsZXJcIlxuICBsZXQtYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5PVwiYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5XCJcbj5cbiAgPGJ1dHRvbiBbYXR0ci5kYXRhLXRlc3RpZF09XCJhY3Rpb25OYW1lICsgJy1hY3Rpb24nXCIgKGNsaWNrKT1cImFjdGlvbkhhbmRsZXIoKVwiPlxuICAgIDxsaSBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtbGlzdC1pdGVtXCI+XG4gICAgICB7eyBnZXRBY3Rpb25MYWJlbChhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXkpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9saT5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyXG4gICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgbW9kYWxUZW1wbGF0ZSB8fCBkZWZhdWx0TW9kYWw7XG4gICAgY29udGV4dDogZ2V0RWRpdE1vZGFsQ29udGV4dCgpXG4gIFwiXG4+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdE1vZGFsXG4gIGxldC1pc09wZW49XCJpc09wZW5cIlxuICBsZXQtaXNPcGVuQ2hhbmdlSGFuZGxlcj1cImlzT3BlbkNoYW5nZUhhbmRsZXJcIlxuICBsZXQtY29udGVudD1cImNvbnRlbnRcIlxuPlxuICA8c3RyZWFtLW1vZGFsXG4gICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgIChpc09wZW5DaGFuZ2UpPVwiaXNPcGVuQ2hhbmdlSGFuZGxlcigkZXZlbnQpXCJcbiAgICBbY29udGVudF09XCJjb250ZW50XCJcbiAgPlxuICA8L3N0cmVhbS1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxDb250ZW50PlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2VkaXQtbWVzc2FnZS1mb3JtXCIgKm5nSWY9XCJpc0VkaXRNb2RhbE9wZW5cIj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICNkZWZhdWx0SW5wdXRcbiAgICAgIGxldC1tZXNzYWdlSW5wdXQ9XCJtZXNzYWdlXCJcbiAgICAgIGxldC1tZXNzYWdlVXBkYXRlSGFuZGxlcj1cIm1lc3NhZ2VVcGRhdGVIYW5kbGVyXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLW1lc3NhZ2UtaW5wdXRcbiAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZUlucHV0XCJcbiAgICAgICAgKG1lc3NhZ2VVcGRhdGUpPVwibWVzc2FnZVVwZGF0ZUhhbmRsZXIoKVwiXG4gICAgICA+PC9zdHJlYW0tbWVzc2FnZS1pbnB1dD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIG1lc3NhZ2VJbnB1dFRlbXBsYXRlIHx8IGRlZmF1bHRJbnB1dDtcbiAgICAgICAgY29udGV4dDogZ2V0TWVzc2FnZUlucHV0Q29udGV4dCgpXG4gICAgICBcIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxzdHJlYW0tbm90aWZpY2F0aW9uLWxpc3Q+PC9zdHJlYW0tbm90aWZpY2F0aW9uLWxpc3Q+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJcbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2UtdGVhbS1mb3JtLWZvb3RlclxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS10ZWFtLWZvcm0tZm9vdGVyLWFuZ3VsYXJcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19lZGl0LW1lc3NhZ2UtZm9ybS1vcHRpb25zXCI+XG4gICAgICAgIDxidXR0b24gdHJhbnNsYXRlIGRhdGEtdGVzdGlkPVwiY2FuY2VsLWJ1dHRvblwiIChjbGljayk9XCJtb2RhbENsb3NlZCgpXCI+XG4gICAgICAgICAgc3RyZWFtQ2hhdC5DYW5jZWxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmQtYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VuZENsaWNrZWQoKVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlbmRDbGlja2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAgc3RyZWFtQ2hhdC5TZW5kXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1hY3Rpb25zLWJveC9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVl6RDs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUFzQ3JDLFlBQ1UsaUJBQW9DLEVBQ3BDLG1CQUF3QyxFQUN4QyxjQUE4QixFQUM5QixzQkFBOEM7UUFIOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBekN4RDs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDeEI7O1dBRUc7UUFDTSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBS3hCOztXQUVHO1FBQ00sbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDdkM7O1dBRUc7UUFDZ0IsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN0RTs7V0FFRztRQUNnQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMzRCxvQkFBZSxHQUFHLEtB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O3NCQURuQixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTWVzc2FnZUFjdGlvbkJveEl0ZW1Db250ZXh0LFxuICBNZXNzYWdlQWN0aW9uSXRlbSxcbiAgTWVzc2FnZUlucHV0Q29udGV4dCxcbiAgTW9kYWxDb250ZXh0LFxuICBTdHJlYW1NZXNzYWdlLFxufSBmcm9tICcuLi90eXBlcyc7XG4vKipcbiAqIFRoZSBgTWVzc2FnZUFjdGlvbnNCb3hgIGNvbXBvbmVudCBkaXNwbGF5cyBhIGxpc3Qgb2YgbWVzc2FnZSBhY3Rpb25zIChpLmUgZWRpdCksIHRoYXQgY2FuIGJlIG9wZW5lZCBvciBjbG9zZWQuIFlvdSBjYW4gZmluZCB0aGUgW2xpc3Qgb2YgdGhlIHN1cHBvcnRlZCBhY3Rpb25zXSguLi9jb25jZXB0cy9tZXNzYWdlLWludGVyYWN0aW9ucy5tZHgpIGluIHRoZSBtZXNzYWdlIGludGVyYWN0aW9uIGd1aWRlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpc3Qgc2hvdWxkIGJlIG9wZW5lZCBvciBjbG9zZWQuIEFkZGluZyBhIFVJIGVsZW1lbnQgdG8gb3BlbiBhbmQgY2xvc2UgdGhlIGxpc3QgaXMgdGhlIHBhcmVudCdzIGNvbXBvbmVudCByZXNwb25zaWJpbGl0eS5cbiAgICovXG4gIEBJbnB1dCgpIGlzT3BlbiA9IGZhbHNlO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBtZXNzYWdlIGFjdGlvbnMgYXJlIGJlbG9uZ2luZyB0byBhIG1lc3NhZ2UgdGhhdCB3YXMgc2VudCBieSB0aGUgY3VycmVudCB1c2VyIG9yIG5vdC5cbiAgICovXG4gIEBJbnB1dCgpIGlzTWluZSA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIG1lc3NhZ2UgdGhlIGFjdGlvbnMgd2lsbCBiZSBleGVjdXRlZCBvblxuICAgKi9cbiAgQElucHV0KCkgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIFtjaGFubmVsIGNhcGFiaWxpdGllc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvY2hhbm5lbF9jYXBhYmlsaXRpZXMvP2xhbmd1YWdlPWphdmFzY3JpcHQpIHRoYXQgYXJlIGVuYWJsZWQgZm9yIHRoZSBjdXJyZW50IHVzZXIsIHRoZSBsaXN0IG9mIFtzdXBwb3J0ZWQgaW50ZXJhY3Rpb25zXSguLi9jb25jZXB0cy9tZXNzYWdlLWludGVyYWN0aW9ucy5tZHgpIGNhbiBiZSBmb3VuZCBpbiBvdXIgbWVzc2FnZSBpbnRlcmFjdGlvbiBndWlkZS4gVW5hdGhvcml6ZWQgYWN0aW9ucyB3b24ndCBiZSBkaXNwbGF5ZWQgb24gdGhlIFVJLlxuICAgKi9cbiAgQElucHV0KCkgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGF1dGhvcml6ZWQgYWN0aW9ucyAoaXQgY2FuIGJlIGxlc3Mgb3IgZXF1YWwgdGhhbiB0aGUgbnVtYmVyIG9mIGVuYWJsZWQgYWN0aW9ucylcbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBkaXNwbGF5ZWRBY3Rpb25zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IHdoaWNoIGVtaXRzIGB0cnVlYCBpZiB0aGUgZWRpdCBtZXNzYWdlIG1vZGFsIGlzIG9wZW4sIGFuZCBgZmFsc2VgIHdoZW4gaXQgaXMgY2xvc2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGlzRWRpdGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgaXNFZGl0TW9kYWxPcGVuID0gZmFsc2U7XG4gIG1lc3NhZ2VJbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxNZXNzYWdlSW5wdXRDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgbWVzc2FnZUFjdGlvbkl0ZW1UZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPE1lc3NhZ2VBY3Rpb25Cb3hJdGVtQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgbW9kYWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8TW9kYWxDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgdmlzaWJsZU1lc3NhZ2VBY3Rpb25JdGVtczogTWVzc2FnZUFjdGlvbkl0ZW1bXSA9IFtdO1xuICBzZW5kTWVzc2FnZSQ6IE9ic2VydmFibGU8dm9pZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZUFjdGlvbkl0ZW1zOiBNZXNzYWdlQWN0aW9uSXRlbVtdO1xuICBAVmlld0NoaWxkKCdtb2RhbENvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIG1vZGFsQ29udGVudCE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBwcml2YXRlIHNlbmRNZXNzYWdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVzc2FnZUlucHV0VGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiAodGhpcy5tZXNzYWdlSW5wdXRUZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVzc2FnZUFjdGlvbnNCb3hJdGVtVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiAodGhpcy5tZXNzYWdlQWN0aW9uSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tb2RhbFRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMubW9kYWxUZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlQWN0aW9uSXRlbXMgPSBbXG4gICAgICB7XG4gICAgICAgIGFjdGlvbk5hbWU6ICdxdW90ZScsXG4gICAgICAgIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogJ3N0cmVhbUNoYXQuUmVwbHknLFxuICAgICAgICBhY3Rpb25IYW5kbGVyOiAobWVzc2FnZTogU3RyZWFtTWVzc2FnZSkgPT5cbiAgICAgICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLnNlbGVjdE1lc3NhZ2VUb1F1b3RlKG1lc3NhZ2UpLFxuICAgICAgICBpc1Zpc2libGU6IChcbiAgICAgICAgICBlbmFibGVkQWN0aW9uczogc3RyaW5nW10sXG4gICAgICAgICAgaXNNaW5lOiBib29sZWFuLFxuICAgICAgICAgIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2VcbiAgICAgICAgKSA9PlxuICAgICAgICAgIGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ3F1b3RlLW1lc3NhZ2UnKSAhPT0gLTEgJiZcbiAgICAgICAgICAhbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb25OYW1lOiAncGluJyxcbiAgICAgICAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKSA9PlxuICAgICAgICAgIHRoaXMubWVzc2FnZT8ucGlubmVkID8gJ3N0cmVhbUNoYXQuVW5waW4nIDogJ3N0cmVhbUNoYXQuUGluJyxcbiAgICAgICAgYWN0aW9uSGFuZGxlcjogKCkgPT4gYWxlcnQoJ0ZlYXR1cmUgbm90IHlldCBpbXBsZW1lbnRlZCcpLFxuICAgICAgICBpc1Zpc2libGU6ICgpID0+IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uTmFtZTogJ2ZsYWcnLFxuICAgICAgICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICdzdHJlYW1DaGF0LkZsYWcnLFxuICAgICAgICBhY3Rpb25IYW5kbGVyOiBhc3luYyAobWVzc2FnZTogU3RyZWFtTWVzc2FnZSkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmZsYWdNZXNzYWdlKG1lc3NhZ2UuaWQpO1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgJ3N0cmVhbUNoYXQuTWVzc2FnZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmxhZ2dlZCcsXG4gICAgICAgICAgICAgICdzdWNjZXNzJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGFkZGluZyBmbGFnJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmlzaWJsZTogKGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSwgaXNNaW5lOiBib29sZWFuKSA9PlxuICAgICAgICAgIGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ2ZsYWctbWVzc2FnZScpICE9PSAtMSAmJiAhaXNNaW5lLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uTmFtZTogJ2VkaXQnLFxuICAgICAgICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICdzdHJlYW1DaGF0LkVkaXQgTWVzc2FnZScsXG4gICAgICAgIGFjdGlvbkhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5lbWl0KHRydWUpO1xuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kYWxPcGVuID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNWaXNpYmxlOiAoZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdLCBpc01pbmU6IGJvb2xlYW4pID0+XG4gICAgICAgICAgKGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ3VwZGF0ZS1vd24tbWVzc2FnZScpICE9PSAtMSAmJiBpc01pbmUpIHx8XG4gICAgICAgICAgZW5hYmxlZEFjdGlvbnMuaW5kZXhPZigndXBkYXRlLWFueS1tZXNzYWdlJykgIT09IC0xLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uTmFtZTogJ2RlbGV0ZScsXG4gICAgICAgIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogJ3N0cmVhbUNoYXQuRGVsZXRlJyxcbiAgICAgICAgYWN0aW9uSGFuZGxlcjogYXN5bmMgKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jaGFubmVsU2VydmljZS5kZWxldGVNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgICAnc3RyZWFtQ2hhdC5FcnJvciBkZWxldGluZyBtZXNzYWdlJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmlzaWJsZTogKGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSwgaXNNaW5lOiBib29sZWFuKSA9PlxuICAgICAgICAgICgoZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignZGVsZXRlJykgIT09IC0xIHx8XG4gICAgICAgICAgICBlbmFibGVkQWN0aW9ucy5pbmRleE9mKCdkZWxldGUtb3duLW1lc3NhZ2UnKSAhPT0gLTEpICYmXG4gICAgICAgICAgICBpc01pbmUpIHx8XG4gICAgICAgICAgZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignZGVsZXRlLWFueScpICE9PSAtMSB8fFxuICAgICAgICAgIGVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ2RlbGV0ZS1hbnktbWVzc2FnZScpICE9PSAtMSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICB0aGlzLnNlbmRNZXNzYWdlJCA9IHRoaXMuc2VuZE1lc3NhZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmlzTWluZSB8fCBjaGFuZ2VzLmVuYWJsZWRBY3Rpb25zIHx8IGNoYW5nZXMubWVzc2FnZSkge1xuICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uSXRlbXMuZm9yRWFjaChcbiAgICAgICAgKGkpID0+XG4gICAgICAgICAgKGkuYWN0aW9uSGFuZGxlciA9IGkuYWN0aW9uSGFuZGxlci5iaW5kKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSEsXG4gICAgICAgICAgICB0aGlzLmlzTWluZVxuICAgICAgICAgICkpXG4gICAgICApO1xuICAgICAgdGhpcy52aXNpYmxlTWVzc2FnZUFjdGlvbkl0ZW1zID0gdGhpcy5tZXNzYWdlQWN0aW9uSXRlbXMuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgICBpdGVtLmlzVmlzaWJsZSh0aGlzLmVuYWJsZWRBY3Rpb25zLCB0aGlzLmlzTWluZSwgdGhpcy5tZXNzYWdlISlcbiAgICAgICk7XG4gICAgICB0aGlzLmRpc3BsYXllZEFjdGlvbnNDb3VudC5lbWl0KHRoaXMudmlzaWJsZU1lc3NhZ2VBY3Rpb25JdGVtcy5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgZ2V0QWN0aW9uTGFiZWwoYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKCkgPT4gc3RyaW5nKSB8IHN0cmluZykge1xuICAgIHJldHVybiB0eXBlb2YgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5ID09PSAnc3RyaW5nJ1xuICAgICAgPyBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXlcbiAgICAgIDogYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5KCk7XG4gIH1cblxuICBzZW5kQ2xpY2tlZCgpIHtcbiAgICB0aGlzLnNlbmRNZXNzYWdlU3ViamVjdC5uZXh0KCk7XG4gIH1cblxuICBtb2RhbENsb3NlZCA9ICgpID0+IHtcbiAgICB0aGlzLmlzRWRpdE1vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0aW5nLmVtaXQoZmFsc2UpO1xuICB9O1xuXG4gIGdldE1lc3NhZ2VJbnB1dENvbnRleHQoKTogTWVzc2FnZUlucHV0Q29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VVcGRhdGVIYW5kbGVyOiB0aGlzLm1vZGFsQ2xvc2VkLFxuICAgICAgaXNGaWxlVXBsb2FkRW5hYmxlZDogdW5kZWZpbmVkLFxuICAgICAgYXJlTWVudGlvbnNFbmFibGVkOiB1bmRlZmluZWQsXG4gICAgICBpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ6IHVuZGVmaW5lZCxcbiAgICAgIG1lbnRpb25TY29wZTogdW5kZWZpbmVkLFxuICAgICAgbW9kZTogdW5kZWZpbmVkLFxuICAgICAgc2VuZE1lc3NhZ2UkOiB0aGlzLnNlbmRNZXNzYWdlJCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RWRpdE1vZGFsQ29udGV4dCgpOiBNb2RhbENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBpc09wZW46IHRoaXMuaXNFZGl0TW9kYWxPcGVuLFxuICAgICAgaXNPcGVuQ2hhbmdlSGFuZGxlcjogKGlzT3BlbikgPT4ge1xuICAgICAgICB0aGlzLmlzRWRpdE1vZGFsT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgaWYgKCF0aGlzLmlzRWRpdE1vZGFsT3Blbikge1xuICAgICAgICAgIHRoaXMubW9kYWxDbG9zZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMubW9kYWxDb250ZW50LFxuICAgIH07XG4gIH1cblxuICB0cmFja0J5QWN0aW9uTmFtZShfOiBudW1iZXIsIGl0ZW06IE1lc3NhZ2VBY3Rpb25JdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0uYWN0aW9uTmFtZTtcbiAgfVxufVxuIiwiPGRpdlxuICBkYXRhLXRlc3RpZD1cImFjdGlvbi1ib3hcIlxuICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94LS1vcGVuXT1cImlzT3BlblwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWJveC0tbWluZV09XCJpc01pbmVcIlxuPlxuICA8dWwgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWxpc3RcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlTWVzc2FnZUFjdGlvbkl0ZW1zOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uTmFtZVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIG1lc3NhZ2VBY3Rpb25JdGVtVGVtcGxhdGUgfHwgZGVmYXVsdE1lc3NhZ2VBY3Rpb25JdGVtO1xuICAgICAgICAgIGNvbnRleHQ6IGl0ZW1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI2RlZmF1bHRNZXNzYWdlQWN0aW9uSXRlbVxuICBsZXQtYWN0aW9uTmFtZT1cImFjdGlvbk5hbWVcIlxuICBsZXQtYWN0aW9uSGFuZGxlcj1cImFjdGlvbkhhbmRsZXJcIlxuICBsZXQtYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5PVwiYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5XCJcbj5cbiAgPGJ1dHRvbiBbYXR0ci5kYXRhLXRlc3RpZF09XCJhY3Rpb25OYW1lICsgJy1hY3Rpb24nXCIgKGNsaWNrKT1cImFjdGlvbkhhbmRsZXIoKVwiPlxuICAgIDxsaSBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtbGlzdC1pdGVtXCI+XG4gICAgICB7eyBnZXRBY3Rpb25MYWJlbChhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXkpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9saT5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyXG4gICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgbW9kYWxUZW1wbGF0ZSB8fCBkZWZhdWx0TW9kYWw7XG4gICAgY29udGV4dDogZ2V0RWRpdE1vZGFsQ29udGV4dCgpXG4gIFwiXG4+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdE1vZGFsXG4gIGxldC1pc09wZW49XCJpc09wZW5cIlxuICBsZXQtaXNPcGVuQ2hhbmdlSGFuZGxlcj1cImlzT3BlbkNoYW5nZUhhbmRsZXJcIlxuICBsZXQtY29udGVudD1cImNvbnRlbnRcIlxuPlxuICA8c3RyZWFtLW1vZGFsXG4gICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgIChpc09wZW5DaGFuZ2UpPVwiaXNPcGVuQ2hhbmdlSGFuZGxlcigkZXZlbnQpXCJcbiAgICBbY29udGVudF09XCJjb250ZW50XCJcbiAgPlxuICA8L3N0cmVhbS1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxDb250ZW50PlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2VkaXQtbWVzc2FnZS1mb3JtXCIgKm5nSWY9XCJpc0VkaXRNb2RhbE9wZW5cIj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICNkZWZhdWx0SW5wdXRcbiAgICAgIGxldC1tZXNzYWdlSW5wdXQ9XCJtZXNzYWdlXCJcbiAgICAgIGxldC1tZXNzYWdlVXBkYXRlSGFuZGxlcj1cIm1lc3NhZ2VVcGRhdGVIYW5kbGVyXCJcbiAgICAgIGxldC1zZW5kTWVzc2FnZSRJbnB1dD1cInNlbmRNZXNzYWdlJFwiXG4gICAgPlxuICAgICAgPHN0cmVhbS1tZXNzYWdlLWlucHV0XG4gICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VJbnB1dFwiXG4gICAgICAgIChtZXNzYWdlVXBkYXRlKT1cIm1lc3NhZ2VVcGRhdGVIYW5kbGVyKClcIlxuICAgICAgICBbc2VuZE1lc3NhZ2UkXT1cInNlbmRNZXNzYWdlJElucHV0XCJcbiAgICAgID48L3N0cmVhbS1tZXNzYWdlLWlucHV0PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgbWVzc2FnZUlucHV0VGVtcGxhdGUgfHwgZGVmYXVsdElucHV0O1xuICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlSW5wdXRDb250ZXh0KClcbiAgICAgIFwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS10ZWFtLWZvcm0tZm9vdGVyXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXRlYW0tZm9ybS1mb290ZXItYW5ndWxhclxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2VkaXQtbWVzc2FnZS1mb3JtLW9wdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgZGF0YS10ZXN0aWQ9XCJjYW5jZWwtYnV0dG9uXCIgKGNsaWNrKT1cIm1vZGFsQ2xvc2VkKClcIj5cbiAgICAgICAgICBzdHJlYW1DaGF0LkNhbmNlbFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VuZC1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJzZW5kQ2xpY2tlZCgpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VuZENsaWNrZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICBzdHJlYW1DaGF0LlNlbmRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19