@myclub_se/data-access 3.7.5 → 3.7.6

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.
@@ -17,7 +17,7 @@ const updateMemberActivityInvites = (invites, payload) => {
17
17
  const updateEventInvites = (events, payload) => {
18
18
  return events.map((event) => {
19
19
  if (event.invitation_id === payload.id) {
20
- return new Event(event.id, event.activity_id, event.activity_type, event.base_background_color, event.base_color, event.base_name, event.calendar_name, event.description, event.end, event.invitation_id, payload.status, event.invited_members ? [...event.invited_members] : event.invited_members, event.location, event.meet_up_place, event.meet_up_time, event.member_id, event.open_activity, [...event.participants], event.start, event.title, event.type,
20
+ return new Event(event.id, event.activity_id, event.activity_type, event.base_background_color, event.base_color, event.base_name, event.calendar_name, event.description, event.end, event.invitation_id, payload.status, event.invited_members ? [...event.invited_members] : event.invited_members, event.last_response_date, event.location, event.meet_up_place, event.meet_up_time, event.member_id, event.open_activity, [...event.participants], event.start, event.title, event.type,
21
21
  // Carry the waiting-list state from the (re-fetched) invite's activity so the calendar
22
22
  // event keeps/updates its queue status — e.g. after joining or leaving the waiting list,
23
23
  // or responding — instead of being reset to the Event defaults.
@@ -32,7 +32,7 @@ const updateEventInvites = (events, payload) => {
32
32
  const removeEventInvite = (events, invite) => {
33
33
  return events.map((event) => {
34
34
  if (event.invitation_id === invite.id) {
35
- return new Event(event.id, event.activity_id, event.activity_type, event.base_background_color, event.base_color, event.base_name, event.calendar_name, event.description, event.end, null, null, (event.invited_members ?? []).filter((member) => member.id !== invite.id), event.location, event.meet_up_place, event.meet_up_time, event.member_id, event.open_activity, [...event.participants], event.start, event.title, event.type, event.allow_waiting_list, null, null, null, event.waiting_list_offered_slots);
35
+ return new Event(event.id, event.activity_id, event.activity_type, event.base_background_color, event.base_color, event.base_name, event.calendar_name, event.description, event.end, null, null, (event.invited_members ?? []).filter((member) => member.id !== invite.id), event.last_response_date, event.location, event.meet_up_place, event.meet_up_time, event.member_id, event.open_activity, [...event.participants], event.start, event.title, event.type, event.allow_waiting_list, null, null, null, event.waiting_list_offered_slots);
36
36
  }
37
37
  return event;
38
38
  });
@@ -40,7 +40,7 @@ const removeEventInvite = (events, invite) => {
40
40
  // Rebuilds an Event preserving everything except the member's waiting-list state. An optional
41
41
  // `invite` also updates the member's invite id + response (e.g. after responding to an open
42
42
  // activity); when omitted the existing invite is kept (join/leave the queue must not touch it).
43
- const cloneEventWithWaitlist = (event, waitlist, invite) => new Event(event.id, event.activity_id, event.activity_type, event.base_background_color, event.base_color, event.base_name, event.calendar_name, event.description, event.end, invite ? invite.invitation_id : event.invitation_id, invite ? invite.invitation_response : event.invitation_response, event.invited_members ? [...event.invited_members] : event.invited_members, event.location, event.meet_up_place, event.meet_up_time, event.member_id, event.open_activity, [...event.participants], event.start, event.title, event.type, waitlist.allow_waiting_list, waitlist.member_waiting_list_status, waitlist.member_waiting_list_position, waitlist.waiting_list_offer_expires_at, waitlist.waiting_list_offered_slots);
43
+ const cloneEventWithWaitlist = (event, waitlist, invite) => new Event(event.id, event.activity_id, event.activity_type, event.base_background_color, event.base_color, event.base_name, event.calendar_name, event.description, event.end, invite ? invite.invitation_id : event.invitation_id, invite ? invite.invitation_response : event.invitation_response, event.invited_members ? [...event.invited_members] : event.invited_members, event.last_response_date, event.location, event.meet_up_place, event.meet_up_time, event.member_id, event.open_activity, [...event.participants], event.start, event.title, event.type, waitlist.allow_waiting_list, waitlist.member_waiting_list_status, waitlist.member_waiting_list_position, waitlist.waiting_list_offer_expires_at, waitlist.waiting_list_offered_slots);
44
44
  // Updates the waiting-list state of a member's calendar event for a given activity. Open
45
45
  // activities have no invite, so the event is matched on the activity id (within that member's
46
46
  // events). Used to keep the calendar in sync after joining/leaving the queue, since the
@@ -700,4 +700,4 @@ on(deleteTeamActivitySuccessAction, (state, { payload }) => {
700
700
  on(createTeamActivityAction, state => ({ ...state, currentTeamActivity: retrieveStartLoading(state.currentTeamActivity) })),
701
701
  // Failure Handlers
702
702
  on(createTeamActivityFailureAction, (state, { payload }) => ({ ...state, currentTeamActivity: retrieveLoadFailure(payload) })));
703
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvcmVkdWNlcnMvY2FsZW5kYXIucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLDhCQUE4QixFQUM5Qix1Q0FBdUMsRUFDdkMsK0JBQStCLEVBQy9CLHdDQUF3QyxFQUN4QywrQ0FBK0MsRUFDL0MsK0NBQStDLEVBQy9DLG9DQUFvQyxFQUNwQywyQ0FBMkMsRUFDM0MsMkNBQTJDLEVBQzNDLDBCQUEwQixFQUMxQixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyxpQ0FBaUMsRUFDakMsb0NBQW9DLEVBQ3BDLG9DQUFvQyxFQUNwQyx5Q0FBeUMsRUFDekMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsdUNBQXVDLEVBQ3ZDLDhCQUE4QixFQUM5QiwyQ0FBMkMsRUFDM0MsNEJBQTRCLEVBQzVCLG1D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QUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDdEosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTdGF0ZSwgaW5pdGlhbENhbGVuZGFyU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5pbXBvcnQge1xuICBjbGVhck1lbWJlckFjdGl2aXR5QWN0aW9uLFxuICBjbGVhck1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICBjbGVhck1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbixcbiAgY2xlYXJTdG9yZUFjdGlvbixcbiAgY2xlYXJUZWFtQWN0aXZpdGllc0FjdGlvbixcbiAgY2xlYXJUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eUFjdGlvbixcbiAgY3JlYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICBkZWxldGVUZWFtQWN0aXZpdHlRdWVzdGlvblN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdGllc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0aWVzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXR5R3Vlc3RzU3VjY2Vzc0FjdGlvbixcbiAgYWRkVGVhbUFjdGl2aXR5R3Vlc3RTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlHdWVzdFN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUd1ZXN0U3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlRdWVzdGlvbnNBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlRdWVzdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXR5UXVlc3Rpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uLFxuICByZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sXG4gIHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5UVJDb2RlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRdWVzdGlvbkFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRdWVzdGlvbkZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5UXVlc3Rpb25TdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICByZW1vdmVNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5QWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvbkFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25GYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvblN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVRlYW1NZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIGpvaW5XYWl0aW5nTGlzdFN1Y2Nlc3NBY3Rpb24sXG4gIGxlYXZlV2FpdGluZ0xpc3RTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlcldhaXRpbmdMaXN0RW50cnlBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyV2FpdGluZ0xpc3RFbnRyeUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyV2FpdGluZ0xpc3RFbnRyeVN1Y2Nlc3NBY3Rpb24sXG4gIGxvYWRUZWFtQWN0aXZpdHlXYWl0aW5nTGlzdFN1Y2Nlc3NBY3Rpb24sXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHksXG4gIEFjdGl2aXR5SW52aXRlLFxuICBBY3Rpdml0eUxvY2F0aW9uLFxuICBBY3Rpdml0eVF1ZXN0aW9uLFxuICBBY3Rpdml0eVNldHRpbmdzLFxuICBBY3Rpdml0eVR5cGUsXG4gIEFjdGl2aXR5V2FpdGluZ0xpc3RFbnRyeSxcbiAgRXZlbnQsXG4gIE1lbWJlckFjdGl2aXR5SW52aXRlLFxuICBPcGVuQWN0aXZpdHlcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtc0ludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgTGlzdFJlc3VsdEludGVyZmFjZSxcbiAgUmV0cmlldmVSZXN1bHRJbnRlcmZhY2UsXG4gIFRlYW1BY3Rpdml0eUludGVyZmFjZSxcbiAgVGVhbUNhbGVuZGFyRXZlbnRSZXN1bHRJbnRlcmZhY2Vcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBsaXN0TG9hZEZhaWx1cmUsXG4gIGxpc3RMb2FkU3VjY2VzcyxcbiAgbGlzdFN0YXJ0TG9hZGluZyxcbiAgcmV0cmlldmVMb2FkRmFpbHVyZSxcbiAgcmV0cmlldmVMb2FkU3VjY2VzcyxcbiAgcmV0cmlldmVTdGFydExvYWRpbmdcbn0gZnJvbSAnLi9yZWR1Y2VyLWhlbHBlcnMnO1xuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuY29uc3QgdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVzID0gKGludml0ZXM6IEFycmF5PE1lbWJlckFjdGl2aXR5SW52aXRlPiB8IHVuZGVmaW5lZCB8IG51bGwsIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIGlmICghaW52aXRlcykgcmV0dXJuIFtdO1xuICByZXR1cm4gaW52aXRlcy5tYXAoKGludml0ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICBpZiAoaW52aXRlLm1lbWJlcl9pZCA9PT0gcGF5bG9hZC5tZW1iZXIuaWQpIHtcbiAgICAgIHJldHVybiBuZXcgTWVtYmVyQWN0aXZpdHlJbnZpdGUoXG4gICAgICAgIGludml0ZS5pZCxcbiAgICAgICAgcGF5bG9hZC5jb21tZW50LFxuICAgICAgICBpbnZpdGUuY3VycmVudF9udW1fYXR0ZW5kYW50cyxcbiAgICAgICAgcGF5bG9hZC5sYXN0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5sZWFkZXIsXG4gICAgICAgIHBheWxvYWQubWVtYmVyLmVtYWlsLFxuICAgICAgICBwYXlsb2FkLm1lbWJlci5pZCxcbiAgICAgICAgcGF5bG9hZC5tZW1iZXIubmFtZSxcbiAgICAgICAgcGF5bG9hZC5uZXh0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5yZXNwb25zZV9kYXRlLFxuICAgICAgICBwYXlsb2FkLnN0YXR1c1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGludml0ZTtcbiAgfSk7XG59O1xuXG5jb25zdCB1cGRhdGVFdmVudEludml0ZXMgPSAoZXZlbnRzOiBBcnJheTxFdmVudD4sIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIHJldHVybiBldmVudHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQuaW52aXRhdGlvbl9pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgcmV0dXJuIG5ldyBFdmVudChcbiAgICAgICAgZXZlbnQuaWQsXG4gICAgICAgIGV2ZW50LmFjdGl2aXR5X2lkLFxuICAgICAgICBldmVudC5hY3Rpdml0eV90eXBlLFxuICAgICAgICBldmVudC5iYXNlX2JhY2tncm91bmRfY29sb3IsXG4gICAgICAgIGV2ZW50LmJhc2VfY29sb3IsXG4gICAgICAgIGV2ZW50LmJhc2VfbmFtZSxcbiAgICAgICAgZXZlbnQuY2FsZW5kYXJfbmFtZSxcbiAgICAgICAgZXZlbnQuZGVzY3JpcHRpb24sXG4gICAgICAgIGV2ZW50LmVuZCxcbiAgICAgICAgZXZlbnQuaW52aXRhdGlvbl9pZCxcbiAgICAgICAgcGF5bG9hZC5zdGF0dXMsXG4gICAgICAgIGV2ZW50Lmludml0ZWRfbWVtYmVycyA/IFsuLi5ldmVudC5pbnZpdGVkX21lbWJlcnNdIDogZXZlbnQuaW52aXRlZF9tZW1iZXJzLFxuICAgICAgICBldmVudC5sb2NhdGlvbixcbiAgICAgICAgZXZlbnQubWVldF91cF9wbGFjZSxcbiAgICAgICAgZXZlbnQubWVldF91cF90aW1lLFxuICAgICAgICBldmVudC5tZW1iZXJfaWQsXG4gICAgICAgIGV2ZW50Lm9wZW5fYWN0aXZpdHksXG4gICAgICAgIFsuLi5ldmVudC5wYXJ0aWNpcGFudHNdLFxuICAgICAgICBldmVudC5zdGFydCxcbiAgICAgICAgZXZlbnQudGl0bGUsXG4gICAgICAgIGV2ZW50LnR5cGUsXG4gICAgICAgIC8vIENhcnJ5IHRoZSB3YWl0aW5nLWxpc3Qgc3RhdGUgZnJvbSB0aGUgKHJlLWZldGNoZWQpIGludml0ZSdzIGFjdGl2aXR5IHNvIHRoZSBjYWxlbmRhclxuICAgICAgICAvLyBldmVudCBrZWVwcy91cGRhdGVzIGl0cyBxdWV1ZSBzdGF0dXMg4oCUIGUuZy4gYWZ0ZXIgam9pbmluZyBvciBsZWF2aW5nIHRoZSB3YWl0aW5nIGxpc3QsXG4gICAgICAgIC8vIG9yIHJlc3BvbmRpbmcg4oCUIGluc3RlYWQgb2YgYmVpbmcgcmVzZXQgdG8gdGhlIEV2ZW50IGRlZmF1bHRzLlxuICAgICAgICBwYXlsb2FkLmFjdGl2aXR5LmFsbG93X3dhaXRpbmdfbGlzdCxcbiAgICAgICAgcGF5bG9hZC5hY3Rpdml0eS5tZW1iZXJfd2FpdGluZ19saXN0X3N0YXR1cyxcbiAgICAgICAgcGF5bG9hZC5hY3Rpdml0eS5tZW1iZXJfd2FpdGluZ19saXN0X3Bvc2l0aW9uLFxuICAgICAgICBwYXlsb2FkLmFjdGl2aXR5LndhaXRpbmdfbGlzdF9vZmZlcl9leHBpcmVzX2F0LFxuICAgICAgICBwYXlsb2FkLmFjdGl2aXR5LndhaXRpbmdfbGlzdF9vZmZlcmVkX3Nsb3RzXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBldmVudDtcbiAgfSk7XG59O1xuXG4vLyBDbGVhciB0aGUgbWVtYmVyJ3MgaW52aXRhdGlvbiBmcm9tIGEgY2FsZW5kYXIgZXZlbnQgYWZ0ZXIgdGhlaXIgb3Blbi1hY3Rpdml0eSBpbnZpdGUgd2FzIGRlbGV0ZWQsXG4vLyBzbyB0aGUgZXZlbnQgc3RvcHMgcmVuZGVyaW5nIGFzIGF0dGVuZGluZyAodGhlIGdyZWVuIGNoZWNrKSBhbmQgZmFsbHMgYmFjayB0byB0aGUgb3Blbi1hY3Rpdml0eVxuLy8gKG5vdC1yZXNwb25kZWQpIGxvb2suIE1lbWJlci1zcGVjaWZpYyB3YWl0aW5nLWxpc3Qgc3RhdGUgaXMgcmVzZXQgdG9vIOKAlCB0aGV5IGxlZnQgdGhlIGFjdGl2aXR5LlxuY29uc3QgcmVtb3ZlRXZlbnRJbnZpdGUgPSAoZXZlbnRzOiBBcnJheTxFdmVudD4sIGludml0ZTogQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgcmV0dXJuIGV2ZW50cy5tYXAoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5pbnZpdGF0aW9uX2lkID09PSBpbnZpdGUuaWQpIHtcbiAgICAgIHJldHVybiBuZXcgRXZlbnQoXG4gICAgICAgIGV2ZW50LmlkLFxuICAgICAgICBldmVudC5hY3Rpdml0eV9pZCxcbiAgICAgICAgZXZlbnQuYWN0aXZpdHlfdHlwZSxcbiAgICAgICAgZXZlbnQuYmFzZV9iYWNrZ3JvdW5kX2NvbG9yLFxuICAgICAgICBldmVudC5iYXNlX2NvbG9yLFxuICAgICAgICBldmVudC5iYXNlX25hbWUsXG4gICAgICAgIGV2ZW50LmNhbGVuZGFyX25hbWUsXG4gICAgICAgIGV2ZW50LmRlc2NyaXB0aW9uLFxuICAgICAgICBldmVudC5lbmQsXG4gICAgICAgIG51bGwsXG4gICAgICAgIG51bGwsXG4gICAgICAgIChldmVudC5pbnZpdGVkX21lbWJlcnMgPz8gW10pLmZpbHRlcigobWVtYmVyOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gbWVtYmVyLmlkICE9PSBpbnZpdGUuaWQpLFxuICAgICAgICBldmVudC5sb2NhdGlvbixcbiAgICAgICAgZXZlbnQubWVldF91cF9wbGFjZSxcbiAgICAgICAgZXZlbnQubWVldF91cF90aW1lLFxuICAgICAgICBldmVudC5tZW1iZXJfaWQsXG4gICAgICAgIGV2ZW50Lm9wZW5fYWN0aXZpdHksXG4gICAgICAgIFsuLi5ldmVudC5wYXJ0aWNpcGFudHNdLFxuICAgICAgICBldmVudC5zdGFydCxcbiAgICAgICAgZXZlbnQudGl0bGUsXG4gICAgICAgIGV2ZW50LnR5cGUsXG4gICAgICAgIGV2ZW50LmFsbG93X3dhaXRpbmdfbGlzdCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgZXZlbnQud2FpdGluZ19saXN0X29mZmVyZWRfc2xvdHNcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBldmVudDtcbiAgfSk7XG59O1xuXG5pbnRlcmZhY2UgRXZlbnRXYWl0bGlzdFN0YXRlIHtcbiAgYWxsb3dfd2FpdGluZ19saXN0OiBib29sZWFuO1xuICBtZW1iZXJfd2FpdGluZ19saXN0X3N0YXR1czogc3RyaW5nIHwgbnVsbDtcbiAgbWVtYmVyX3dhaXRpbmdfbGlzdF9wb3NpdGlvbjogbnVtYmVyIHwgbnVsbDtcbiAgd2FpdGluZ19saXN0X29mZmVyX2V4cGlyZXNfYXQ6IHN0cmluZyB8IG51bGw7XG4gIHdhaXRpbmdfbGlzdF9vZmZlcmVkX3Nsb3RzOiBudW1iZXIgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgRXZlbnRJbnZpdGVTdGF0ZSB7XG4gIGludml0YXRpb25faWQ6IHN0cmluZyB8IG51bGw7XG4gIGludml0YXRpb25fcmVzcG9uc2U6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIFJlYnVpbGRzIGFuIEV2ZW50IHByZXNlcnZpbmcgZXZlcnl0aGluZyBleGNlcHQgdGhlIG1lbWJlcidzIHdhaXRpbmctbGlzdCBzdGF0ZS4gQW4gb3B0aW9uYWxcbi8vIGBpbnZpdGVgIGFsc28gdXBkYXRlcyB0aGUgbWVtYmVyJ3MgaW52aXRlIGlkICsgcmVzcG9uc2UgKGUuZy4gYWZ0ZXIgcmVzcG9uZGluZyB0byBhbiBvcGVuXG4vLyBhY3Rpdml0eSk7IHdoZW4gb21pdHRlZCB0aGUgZXhpc3RpbmcgaW52aXRlIGlzIGtlcHQgKGpvaW4vbGVhdmUgdGhlIHF1ZXVlIG11c3Qgbm90IHRvdWNoIGl0KS5cbmNvbnN0IGNsb25lRXZlbnRXaXRoV2FpdGxpc3QgPSAoZXZlbnQ6IEV2ZW50LCB3YWl0bGlzdDogRXZlbnRXYWl0bGlzdFN0YXRlLCBpbnZpdGU/OiBFdmVudEludml0ZVN0YXRlKTogRXZlbnQgPT5cbiAgbmV3IEV2ZW50KFxuICAgIGV2ZW50LmlkLFxuICAgIGV2ZW50LmFjdGl2aXR5X2lkLFxuICAgIGV2ZW50LmFjdGl2aXR5X3R5cGUsXG4gICAgZXZlbnQuYmFzZV9iYWNrZ3JvdW5kX2NvbG9yLFxuICAgIGV2ZW50LmJhc2VfY29sb3IsXG4gICAgZXZlbnQuYmFzZV9uYW1lLFxuICAgIGV2ZW50LmNhbGVuZGFyX25hbWUsXG4gICAgZXZlbnQuZGVzY3JpcHRpb24sXG4gICAgZXZlbnQuZW5kLFxuICAgIGludml0ZSA/IGludml0ZS5pbnZpdGF0aW9uX2lkIDogZXZlbnQuaW52aXRhdGlvbl9pZCxcbiAgICBpbnZpdGUgPyBpbnZpdGUuaW52aXRhdGlvbl9yZXNwb25zZSA6IGV2ZW50Lmludml0YXRpb25fcmVzcG9uc2UsXG4gICAgZXZlbnQuaW52aXRlZF9tZW1iZXJzID8gWy4uLmV2ZW50Lmludml0ZWRfbWVtYmVyc10gOiBldmVudC5pbnZpdGVkX21lbWJlcnMsXG4gICAgZXZlbnQubG9jYXRpb24sXG4gICAgZXZlbnQubWVldF91cF9wbGFjZSxcbiAgICBldmVudC5tZWV0X3VwX3RpbWUsXG4gICAgZXZlbnQubWVtYmVyX2lkLFxuICAgIGV2ZW50Lm9wZW5fYWN0aXZpdHksXG4gICAgWy4uLmV2ZW50LnBhcnRpY2lwYW50c10sXG4gICAgZXZlbnQuc3RhcnQsXG4gICAgZXZlbnQudGl0bGUsXG4gICAgZXZlbnQudHlwZSxcbiAgICB3YWl0bGlzdC5hbGxvd193YWl0aW5nX2xpc3QsXG4gICAgd2FpdGxpc3QubWVtYmVyX3dhaXRpbmdfbGlzdF9zdGF0dXMsXG4gICAgd2FpdGxpc3QubWVtYmVyX3dhaXRpbmdfbGlzdF9wb3NpdGlvbixcbiAgICB3YWl0bGlzdC53YWl0aW5nX2xpc3Rfb2ZmZXJfZXhwaXJlc19hdCxcbiAgICB3YWl0bGlzdC53YWl0aW5nX2xpc3Rfb2ZmZXJlZF9zbG90c1xuICApO1xuXG4vLyBVcGRhdGVzIHRoZSB3YWl0aW5nLWxpc3Qgc3RhdGUgb2YgYSBtZW1iZXIncyBjYWxlbmRhciBldmVudCBmb3IgYSBnaXZlbiBhY3Rpdml0eS4gT3BlblxuLy8gYWN0aXZpdGllcyBoYXZlIG5vIGludml0ZSwgc28gdGhlIGV2ZW50IGlzIG1hdGNoZWQgb24gdGhlIGFjdGl2aXR5IGlkICh3aXRoaW4gdGhhdCBtZW1iZXInc1xuLy8gZXZlbnRzKS4gVXNlZCB0byBrZWVwIHRoZSBjYWxlbmRhciBpbiBzeW5jIGFmdGVyIGpvaW5pbmcvbGVhdmluZyB0aGUgcXVldWUsIHNpbmNlIHRoZVxuLy8gYXV0aG9yaXRhdGl2ZSBqb2luIGVudHJ5IC8gbGVhdmUgYWN0aW9uIGNhcnJpZXMgYSByZWxpYWJsZSBtZW1iZXIgaWQgKHVubGlrZSB0aGUgb3Blbi1hY3Rpdml0eVxuLy8gcmVzb3VyY2UpLCBhbmQgc28gdGhlIGNoYW5nZSBzaG93cyBzeW5jaHJvbm91c2x5IHdpdGhvdXQgd2FpdGluZyBmb3IgYSBmb2xsb3ctdXAgZmV0Y2guXG5jb25zdCBzZXRNZW1iZXJFdmVudFdhaXRsaXN0ID0gKHN0YXRlOiBDYWxlbmRhclN0YXRlLCBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIHdhaXRsaXN0OiBFdmVudFdhaXRsaXN0U3RhdGUsIGludml0ZT86IEV2ZW50SW52aXRlU3RhdGUpOiBDYWxlbmRhclN0YXRlID0+IHtcbiAgaWYgKCFzdGF0ZS5tZW1iZXJFdmVudHM/LnZhbHVlPy5yZXN1bHQpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBleGlzdGluZ0V2ZW50cyA9IHN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZS5yZXN1bHQuZ2V0KG1lbWJlcklkKTtcblxuICBpZiAoIWV4aXN0aW5nRXZlbnRzKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJFdmVudHM6IHtcbiAgICAgIC4uLnN0YXRlLm1lbWJlckV2ZW50cyxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIC4uLnN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZSxcbiAgICAgICAgcmVzdWx0OiBuZXcgTWFwKHN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZS5yZXN1bHQpLnNldChcbiAgICAgICAgICBtZW1iZXJJZCxcbiAgICAgICAgICBleGlzdGluZ0V2ZW50cy5tYXAoKGV2ZW50OiBFdmVudCkgPT5cbiAgICAgICAgICAgIGV2ZW50LmFjdGl2aXR5X2lkID09PSBhY3Rpdml0eUlkID8gY2xvbmVFdmVudFdpdGhXYWl0bGlzdChldmVudCwgd2FpdGxpc3QsIGludml0ZSkgOiBldmVudClcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IHVwZGF0ZU1lbWJlckV2ZW50c0Zyb21PcGVuQWN0aXZpdHkgPSAoc3RhdGU6IENhbGVuZGFyU3RhdGUsIHBheWxvYWQ6IE9wZW5BY3Rpdml0eSk6IENhbGVuZGFyU3RhdGUgPT4ge1xuICAvLyBUaGUgbWVtYmVyJ3Mgb3duIGludml0ZSAoY3JlYXRlZCB3aGVuIHRoZXkgcmVzcG9uZCkgY2FycmllcyB0aGUgcmVzcG9uc2UgdGhhdCB0aGUgY2FsZW5kYXJcbiAgLy8gaWNvbiBzaG93cy4gT3BlbiBhY3Rpdml0aWVzIGhhdmUgbm8gaW52aXRlIHVudGlsIHRoZW4sIHNvIG9ubHkgdXBkYXRlIGl0IHdoZW4gb25lIGV4aXN0cyDigJRcbiAgLy8gb3RoZXJ3aXNlIGtlZXAgdGhlIGV2ZW50J3MgY3VycmVudCBpbnZpdGUgKGUuZy4gb24gYSBqb2luL2xlYXZlLXRoZS1xdWV1ZSByZWZyZXNoKS5cbiAgY29uc3QgbWVtYmVySW52aXRlID0gKHBheWxvYWQuaW52aXRlZF9tZW1iZXJzID8/IFtdKS5maW5kKFxuICAgIChtZW1iZXI6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiBtZW1iZXIubWVtYmVyX2lkID09PSBwYXlsb2FkLm1lbWJlcl9pZFxuICApO1xuICBjb25zdCBpbnZpdGUgPSBtZW1iZXJJbnZpdGVcbiAgICA/IHsgaW52aXRhdGlvbl9pZDogbWVtYmVySW52aXRlLmlkLCBpbnZpdGF0aW9uX3Jlc3BvbnNlOiBtZW1iZXJJbnZpdGUuc3RhdHVzIH1cbiAgICA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gc2V0TWVtYmVyRXZlbnRXYWl0bGlzdChzdGF0ZSwgcGF5bG9hZC5tZW1iZXJfaWQsIHBheWxvYWQuaWQsIHtcbiAgICBhbGxvd193YWl0aW5nX2xpc3Q6IHBheWxvYWQuYWxsb3dfd2FpdGluZ19saXN0LFxuICAgIG1lbWJlcl93YWl0aW5nX2xpc3Rfc3RhdHVzOiBwYXlsb2FkLm1lbWJlcl93YWl0aW5nX2xpc3Rfc3RhdHVzLFxuICAgIG1lbWJlcl93YWl0aW5nX2xpc3RfcG9zaXRpb246IHBheWxvYWQubWVtYmVyX3dhaXRpbmdfbGlzdF9wb3NpdGlvbixcbiAgICB3YWl0aW5nX2xpc3Rfb2ZmZXJfZXhwaXJlc19hdDogcGF5bG9hZC53YWl0aW5nX2xpc3Rfb2ZmZXJfZXhwaXJlc19hdCxcbiAgICB3YWl0aW5nX2xpc3Rfb2ZmZXJlZF9zbG90czogcGF5bG9hZC53YWl0aW5nX2xpc3Rfb2ZmZXJlZF9zbG90cyxcbiAgfSwgaW52aXRlKTtcbn07XG5cbmNvbnN0IHVwZGF0ZUludml0ZWRNZW1iZXJzID0gKGludml0ZWRNZW1iZXJzOiBBcnJheTxNZW1iZXJBY3Rpdml0eUludml0ZT4sIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlIHwgTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgcmV0dXJuIGludml0ZWRNZW1iZXJzLm1hcCgodmFsdWU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB7XG4gICAgaWYgKHZhbHVlLmlkID09PSBwYXlsb2FkLmlkKSB7XG4gICAgICByZXR1cm4gbmV3IE1lbWJlckFjdGl2aXR5SW52aXRlKFxuICAgICAgICB2YWx1ZS5pZCxcbiAgICAgICAgcGF5bG9hZC5jb21tZW50LFxuICAgICAgICB2YWx1ZS5jdXJyZW50X251bV9hdHRlbmRhbnRzLFxuICAgICAgICBwYXlsb2FkLmxhc3RfaW52aXRlLFxuICAgICAgICB2YWx1ZS5sZWFkZXIsXG4gICAgICAgIHZhbHVlLm1lbWJlcl9lbWFpbCxcbiAgICAgICAgdmFsdWUubWVtYmVyX2lkLFxuICAgICAgICB2YWx1ZS5tZW1iZXJfbmFtZSxcbiAgICAgICAgcGF5bG9hZC5uZXh0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5yZXNwb25zZV9kYXRlLFxuICAgICAgICBwYXlsb2FkLnN0YXR1c1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0pO1xufTtcblxuY29uc3QgdXBkYXRlT3BlbkFjdGl2aXRpZXMgPSAob3BlbkFjdGl2aXRpZXM6IEFycmF5PE9wZW5BY3Rpdml0eT4sIHBheWxvYWQ6IE9wZW5BY3Rpdml0eSkgPT4ge1xuICByZXR1cm4gb3BlbkFjdGl2aXRpZXMubWFwKChvcGVuQWN0aXZpdHk6IE9wZW5BY3Rpdml0eSkgPT4ge1xuICAgIGlmIChvcGVuQWN0aXZpdHkuaWQgPT09IHBheWxvYWQuaWQpIHtcbiAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH1cbiAgICByZXR1cm4gb3BlbkFjdGl2aXR5O1xuICB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZVRlYW1BY3Rpdml0eUludml0ZSA9IChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgcGF5bG9hZDogQWN0aXZpdHlJbnZpdGUgfCBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4ge1xuICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0KSB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5Lmludml0ZWRfbWVtYmVycy5maW5kSW5kZXgoKHZhbHVlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gdmFsdWUuaWQgPT09IHBheWxvYWQuaWQpICE9PSAtMSkge1xuICAgICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eSxcbiAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiB1cGRhdGVJbnZpdGVkTWVtYmVycyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pbnZpdGVkX21lbWJlcnMsIHBheWxvYWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBhY3Rpdml0eUlkID0gY3VycmVudFN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkO1xuXG4gICAgICBpZiAoY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlPy5yZXN1bHRzKSB7XG4gICAgICAgIGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cy52YWx1ZSxcbiAgICAgICAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLnZhbHVlLnJlc3VsdHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudEV2ZW50ID0gey4uLmV2ZW50fTtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFdmVudC5hY3Rpdml0eV9pZCA9PT0gYWN0aXZpdHlJZCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFdmVudC5pbnZpdGVkX21lbWJlcnMgPSB1cGRhdGVJbnZpdGVkTWVtYmVycyhjdXJyZW50RXZlbnQuaW52aXRlZF9tZW1iZXJzIHx8IFtdLCBwYXlsb2FkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gY3VycmVudEV2ZW50O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXJyZW50U3RhdGUgYXMgQ2FsZW5kYXJTdGF0ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5jb25zdCB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZSA9IChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgcGF5bG9hZDogQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBjdXJyZW50TWVtYmVyQWN0aXZpdHlJbnZpdGU6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZClcbiAgfTtcblxuICBpZiAoY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eT8ucmVzdWx0Py5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eS5pZCkge1xuICAgIGN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkgPSB7XG4gICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5LFxuICAgICAgcmVzdWx0OiB7XG4gICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICBpbnZpdGVkX21lbWJlcnM6IHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlcyhcbiAgICAgICAgICBjdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5LnJlc3VsdC5pbnZpdGVkX21lbWJlcnMsXG4gICAgICAgICAgcGF5bG9hZFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHM/LnZhbHVlPy5yZXN1bHQpIHtcbiAgICBjb25zdCBleGlzdGluZ0V2ZW50cyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMudmFsdWUucmVzdWx0LmdldChwYXlsb2FkLm1lbWJlci5pZCk7XG5cbiAgICBpZiAoZXhpc3RpbmdFdmVudHMpIHtcbiAgICAgIGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMgPSB7XG4gICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZSxcbiAgICAgICAgICByZXN1bHQ6IG5ldyBNYXAoY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZS5yZXN1bHQpLnNldChcbiAgICAgICAgICAgIHBheWxvYWQubWVtYmVyLmlkLFxuICAgICAgICAgICAgdXBkYXRlRXZlbnRJbnZpdGVzKGV4aXN0aW5nRXZlbnRzLCBwYXlsb2FkKVxuICAgICAgICAgICksXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgaWYgKGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXM/LnJlc3VsdHMpIHtcbiAgICBjdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzID0ge1xuICAgICAgLi4uY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcyxcbiAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMucmVzdWx0cy5tYXAoKGludml0ZTogQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICAgICAgaWYgKGludml0ZS5pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnZpdGU7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjdXJyZW50U3RhdGU7XG59XG5cbi8vIERlbnlpbmcgYW4gb3Blbi1hY3Rpdml0eSBpbnZpdGUgZGVsZXRlcyBpdCBzZXJ2ZXItc2lkZS4gRHJvcCBpdCBmcm9tIHRoZSBzdG9yZSBzbyB0aGUgcGFnZSBmYWxsc1xuLy8gYmFjayB0byB0aGUgb3BlbiBhY3Rpdml0eSAodGhlIHJlZ2lzdGVyIFVJKSBpbnN0ZWFkIG9mIGhvbGRpbmcgYSBub3ctc3RhbGUgXCJkZW5pZWRcIiBpbnZpdGUuIFRoZVxuLy8gY3VycmVudC1pbnZpdGUgaG9sZGVyIGlzIGNsZWFyZWQgdG8gYSBzdWNjZXNzLXdpdGgtbnVsbCByZXN1bHQgKG5vdCB1bmRlZmluZWQpIHNvIHRoZSBwYWdlIGRvZXMgbm90XG4vLyByZS1mZXRjaCBhbiBpbnZpdGUgdGhhdCB3b3VsZCBub3cgNDA0LlxuY29uc3QgcmVtb3ZlTWVtYmVyQWN0aXZpdHlJbnZpdGUgPSAoc3RhdGU6IENhbGVuZGFyU3RhdGUsIGludml0ZTogQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgbGV0IGN1cnJlbnRTdGF0ZTogQ2FsZW5kYXJTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBjdXJyZW50TWVtYmVyQWN0aXZpdHlJbnZpdGU6IHJldHJpZXZlTG9hZFN1Y2Nlc3M8QWN0aXZpdHlJbnZpdGU+KG51bGwpXG4gIH07XG5cbiAgaWYgKGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXM/LnJlc3VsdHMpIHtcbiAgICBjdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzID0ge1xuICAgICAgLi4uY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcyxcbiAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMucmVzdWx0cy5maWx0ZXIoKGl0ZW06IEFjdGl2aXR5SW52aXRlKSA9PiBpdGVtLmlkICE9PSBpbnZpdGUuaWQpXG4gICAgfTtcbiAgfVxuXG4gIGlmIChjdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5Py5yZXN1bHQ/LmlkID09PSBpbnZpdGUuYWN0aXZpdHkuaWQpIHtcbiAgICBjdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5ID0ge1xuICAgICAgLi4uY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eSxcbiAgICAgIHJlc3VsdDoge1xuICAgICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgaW52aXRlZF9tZW1iZXJzOiAoY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eS5yZXN1bHQuaW52aXRlZF9tZW1iZXJzID8/IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKG1lbWJlcjogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IG1lbWJlci5pZCAhPT0gaW52aXRlLmlkKVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIGNhbGVuZGFyIGV2ZW50IHNvIGl0IG5vIGxvbmdlciBzaG93cyB0aGUgbWVtYmVyIGFzIGF0dGVuZGluZy5cbiAgaWYgKGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHM/LnZhbHVlPy5yZXN1bHQpIHtcbiAgICBjb25zdCBleGlzdGluZ0V2ZW50cyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMudmFsdWUucmVzdWx0LmdldChpbnZpdGUubWVtYmVyLmlkKTtcblxuICAgIGlmIChleGlzdGluZ0V2ZW50cykge1xuICAgICAgY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cyA9IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cyxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzLnZhbHVlLFxuICAgICAgICAgIHJlc3VsdDogbmV3IE1hcChjdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzLnZhbHVlLnJlc3VsdCkuc2V0KFxuICAgICAgICAgICAgaW52aXRlLm1lbWJlci5pZCxcbiAgICAgICAgICAgIHJlbW92ZUV2ZW50SW52aXRlKGV4aXN0aW5nRXZlbnRzLCBpbnZpdGUpXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjdXJyZW50U3RhdGU7XG59O1xuXG4vLyAtLS0gUmVkdWNlciAtLS1cblxuZXhwb3J0IGNvbnN0IGNhbGVuZGFyUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gIGluaXRpYWxDYWxlbmRhclN0YXRlLFxuXG4gIC8vIENsZWFyIEFjdGlvbnNcbiAgb24oY2xlYXJTdG9yZUFjdGlvbiwgKCkgPT4gaW5pdGlhbENhbGVuZGFyU3RhdGUpLFxuICBvbihjbGVhck1lbWJlckFjdGl2aXR5QWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUpID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHk6IHVuZGVmaW5lZCB9KSksXG4gIG9uKGNsZWFyTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogdW5kZWZpbmVkIH0pKSxcbiAgb24oY2xlYXJNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk6IHVuZGVmaW5lZCB9KSksXG4gIG9uKGNsZWFyVGVhbUFjdGl2aXR5QWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUpID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiB1bmRlZmluZWQgfSkpLFxuICBvbihjbGVhclRlYW1BY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUpID0+ICh7IC4uLnN0YXRlLCB0ZWFtRXZlbnRzOiB1bmRlZmluZWQgfSkpLFxuXG4gIC8vIE1lbWJlciBBY3Rpdml0eSBJbnZpdGVzXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHlJbnZpdGU6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZSkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eUludml0ZT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGUoc3RhdGUsIHBheWxvYWQpKSxcbiAgb24ocmVtb3ZlTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiByZW1vdmVNZW1iZXJBY3Rpdml0eUludml0ZShzdGF0ZSwgcGF5bG9hZC5hY3Rpdml0eUludml0ZSkpLFxuXG4gIC8vIE1lbWJlciBBY3Rpdml0aWVzXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHk6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eSkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5RmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTWVtYmVyIE9wZW4gQWN0aXZpdGllc1xuICBvbihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHkpIH0pKSxcbiAgb24ocmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxPcGVuQWN0aXZpdHk+KHBheWxvYWQpIH0pKSxcbiAgb24ocmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgbGV0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9O1xuXG4gICAgaWYgKG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZS5yZXN1bHQgJiYgbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlLnJlc3VsdD8uZ2V0KHBheWxvYWQubWVtYmVyX2lkKT8uZmluZEluZGV4KChpdGVtOiBPcGVuQWN0aXZpdHkpID0+IGl0ZW0uaWQgPT09IHBheWxvYWQuaWQpICE9PSAtMSkge1xuICAgICAgY29uc3QgdXBkYXRlZEFjdGl2aXRpZXMgPSBuZXdTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUucmVzdWx0Py5nZXQocGF5bG9hZC5tZW1iZXJfaWQpPy5tYXAoKGl0ZW06IE9wZW5BY3Rpdml0eSkgPT4gaXRlbS5pZCA9PT0gcGF5bG9hZC5pZCA/IHBheWxvYWQgOiBpdGVtKSBhcyBBcnJheTxPcGVuQWN0aXZpdHk+O1xuXG4gICAgICBuZXdTdGF0ZSA9IHtcbiAgICAgICAgLi4ubmV3U3RhdGUsXG4gICAgICAgIG1lbWJlck9wZW5BY3Rpdml0aWVzOiB7XG4gICAgICAgICAgc2VhcmNoUGFyYW1zOiBuZXdTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8uc2VhcmNoUGFyYW1zIGFzIE9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtc0ludGVyZmFjZSxcbiAgICAgICAgICBtZW1iZXJJZHM6IG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy5tZW1iZXJJZHMgYXMgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgIGxhc3RMb2FkZWQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICByZXN1bHQ6IG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZS5yZXN1bHQ/LnNldChwYXlsb2FkLm1lbWJlcl9pZCwgdXBkYXRlZEFjdGl2aXRpZXMpIGFzIE1hcDxzdHJpbmcsIEFycmF5PE9wZW5BY3Rpdml0eT4+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZU1lbWJlckV2ZW50c0Zyb21PcGVuQWN0aXZpdHkobmV3U3RhdGUsIHBheWxvYWQpO1xuICB9KSxcblxuICAvLyBMaXN0IEFsbCBNZW1iZXIgT3BlbiBBY3Rpdml0eSBMb2NhdGlvbnNcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eUxvY2F0aW9uczogbGlzdFN0YXJ0TG9hZGluZyhzdGF0ZS5hbGxPcGVuQWN0aXZpdHlMb2NhdGlvbnMpIH0pKSxcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlMb2NhdGlvbnM6IGxpc3RMb2FkRmFpbHVyZTxBY3Rpdml0eUxvY2F0aW9uPihwYXlsb2FkKSB9KSksXG4gIG9uKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5TG9jYXRpb25zOiBsaXN0TG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIExpc3QgQWxsIE1lbWJlciBPcGVuIEFjdGl2aXR5IFR5cGVzXG4gIG9uKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0FjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eVR5cGVzOiBsaXN0U3RhcnRMb2FkaW5nKHN0YXRlLmFsbE9wZW5BY3Rpdml0eVR5cGVzKSB9KSksXG4gIG9uKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlUeXBlczogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5VHlwZT4ocGF5bG9hZCkgfSkpLFxuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5VHlwZXM6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTGlzdCBNZW1iZXIgQWN0aXZpdHkgSW52aXRlc1xuICBvbihsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlJbnZpdGVzOiBsaXN0U3RhcnRMb2FkaW5nKHN0YXRlLmFjdGl2aXR5SW52aXRlcykgfSkpLFxuICBvbihsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFjdGl2aXR5SW52aXRlczogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5SW52aXRlPihwYXlsb2FkKSB9KSksXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlJbnZpdGVzOiBsaXN0TG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIE1lbWJlciBBY3Rpdml0aWVzXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlckV2ZW50czoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIG1lbWJlcklkczogcGF5bG9hZC5tZW1iZXJJZHMsXG4gICAgICB2YWx1ZTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUubWVtYmVyRXZlbnRzPy52YWx1ZSlcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlckFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlckV2ZW50czoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIG1lbWJlcklkczogcGF5bG9hZC5tZW1iZXJJZHMsXG4gICAgICB2YWx1ZTogcmV0cmlldmVMb2FkRmFpbHVyZTxNYXA8c3RyaW5nLCBBcnJheTxFdmVudD4+PihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyRXZlbnRzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQucmVzdWx0cylcbiAgICB9XG4gIH0pKSxcblxuICAvLyBNZW1iZXIgT3BlbiBBY3Rpdml0aWVzXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdGllczoge1xuICAgICAgc2VhcmNoUGFyYW1zOiBwYXlsb2FkLm9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcyxcbiAgICAgIG1lbWJlcklkczogcGF5bG9hZC5tZW1iZXJJZHMsXG4gICAgICB2YWx1ZTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0aWVzOiB7XG4gICAgICBzZWFyY2hQYXJhbXM6IHBheWxvYWQub3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZUxvYWRGYWlsdXJlPE1hcDxzdHJpbmcsIEFycmF5PE9wZW5BY3Rpdml0eT4+PihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0aWVzOiB7XG4gICAgICBzZWFyY2hQYXJhbXM6IHBheWxvYWQub3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQucmVzdWx0cylcbiAgICB9XG4gIH0pKSxcblxuICAvLyBNZW1iZXIgT3BlbiBBY3Rpdml0eSBMb2NhdGlvbnNcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdFN0YXJ0TG9hZGluZzxBY3Rpdml0eUxvY2F0aW9uPihzdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnM/LnZhbHVlKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5TG9jYXRpb24+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZFN1Y2Nlc3MocGF5bG9hZC5sb2NhdGlvbnMpXG4gICAgfVxuICB9KSksXG5cbiAgLy8gTWVtYmVyIE9wZW4gQWN0aXZpdHkgVHlwZXNcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eVR5cGVzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RTdGFydExvYWRpbmc8QWN0aXZpdHlUeXBlPihzdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdHlUeXBlcz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5VHlwZXM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5VHlwZT4ocGF5bG9hZC5lcnJvcilcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdHlUeXBlczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZFN1Y2Nlc3MocGF5bG9hZC50eXBlcylcbiAgICB9XG4gIH0pKSxcblxuICBvbihkZWxldGVUZWFtQWN0aXZpdHlJbnZpdGVBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDoge3RlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZ30gfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQ/LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQgfHwgc3RhdGUudGVhbUV2ZW50cz8udmFsdWUucmVzdWx0cykge1xuICAgICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGVcbiAgICAgIH07XG5cbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQ/LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgICAgY3VycmVudFN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0LFxuICAgICAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdD8uYWN0aXZpdHksXG4gICAgICAgICAgICAgIGludml0ZWRfbWVtYmVyczogY3VycmVudFN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdD8uYWN0aXZpdHkuaW52aXRlZF9tZW1iZXJzLmZpbHRlcihhY3Rpdml0eUludml0ZSA9PiBhY3Rpdml0eUludml0ZS5pZCAhPT0gcGF5bG9hZC5hY3Rpdml0eUludml0ZUlkKSB8fCBbXVxuICAgICAgICAgICAgfSBhcyBBY3Rpdml0eVxuICAgICAgICAgIH0gYXMgVGVhbUFjdGl2aXR5SW50ZXJmYWNlXG4gICAgICAgIH0gYXMgUmV0cmlldmVSZXN1bHRJbnRlcmZhY2U8VGVhbUFjdGl2aXR5SW50ZXJmYWNlPlxuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUudGVhbUV2ZW50cz8udmFsdWU/LnJlc3VsdHMpIHtcbiAgICAgICAgY3VycmVudFN0YXRlLnRlYW1FdmVudHMgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZSxcbiAgICAgICAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZS5yZXN1bHRzLm1hcCgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChldmVudC5hY3Rpdml0eV9pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICB7XG4gICAgICAgICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgICAgICAgIGludml0ZWRfbWVtYmVyczogZXZlbnQuaW52aXRlZF9tZW1iZXJzPy5maWx0ZXIoKGFjdGl2aXR5SW52aXRlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gYWN0aXZpdHlJbnZpdGUuaWQgIT09IHBheWxvYWQuYWN0aXZpdHlJbnZpdGVJZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgICAgICAgfSkgYXMgQXJyYXk8RXZlbnQ+XG4gICAgICAgICAgfSBhcyBMaXN0UmVzdWx0SW50ZXJmYWNlPEV2ZW50PlxuICAgICAgICB9IGFzIFRlYW1DYWxlbmRhckV2ZW50UmVzdWx0SW50ZXJmYWNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0aWVzXG4gIG9uKGxpc3RUZWFtQWN0aXZpdGllc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICB0ZWFtRXZlbnRzOiB7XG4gICAgICB0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLFxuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0U3RhcnRMb2FkaW5nKHN0YXRlLnRlYW1FdmVudHM/LnZhbHVlKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0VGVhbUFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIHRlYW1FdmVudHM6IHtcbiAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkRmFpbHVyZTxFdmVudD4ocGF5bG9hZC5lcnJvcilcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdFRlYW1BY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICB0ZWFtRXZlbnRzOiB7XG4gICAgICB0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLFxuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZFN1Y2Nlc3MocGF5bG9hZC5yZXN1bHRzKVxuICAgIH1cbiAgfSkpLFxuXG4gIC8vIFRlYW0gQWN0aXZpdHkgUGFydGljaXBhbnRzXG4gIG9uKGxpc3RUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCAmJiBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIHBhcnRpY2lwYW50czogcGF5bG9hZC5yZXN1bHRzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIFRlYW0gQWN0aXZpdHkgR3Vlc3RzXG4gIG9uKGxpc3RUZWFtQWN0aXZpdHlHdWVzdHNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCAmJiBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7IC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LCBndWVzdHM6IHBheWxvYWQucmVzdWx0cyB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgb24oYWRkVGVhbUFjdGl2aXR5R3Vlc3RTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCAmJiBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGd1ZXN0czogWy4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0Lmd1ZXN0cywgcGF5bG9hZC5ndWVzdF1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5R3Vlc3RTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCAmJiBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGd1ZXN0czogc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuZ3Vlc3RzLm1hcChnID0+XG4gICAgICAgICAgICAgIGcuaWQgPT09IHBheWxvYWQuZ3Vlc3QuaWQgPyBwYXlsb2FkLmd1ZXN0IDogZ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICBvbihkZWxldGVUZWFtQWN0aXZpdHlHdWVzdFN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgZ3Vlc3RzOiBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5ndWVzdHMuZmlsdGVyKGcgPT4gZy5pZCAhPT0gcGF5bG9hZC5ndWVzdElkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBNZW1iZXIgV2FpdGluZyBMaXN0IEVudHJ5XG4gIG9uKHJldHJpZXZlTWVtYmVyV2FpdGluZ0xpc3RFbnRyeUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJXYWl0aW5nTGlzdEVudHJ5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50TWVtYmVyV2FpdGluZ0xpc3RFbnRyeSkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlcldhaXRpbmdMaXN0RW50cnlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlcldhaXRpbmdMaXN0RW50cnk6IHJldHJpZXZlTG9hZEZhaWx1cmU8QWN0aXZpdHlXYWl0aW5nTGlzdEVudHJ5PihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyV2FpdGluZ0xpc3RFbnRyeVN1Y2Nlc3NBY3Rpb24sIGpvaW5XYWl0aW5nTGlzdFN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyV2FpdGluZ0xpc3RFbnRyeTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG4gIC8vIFJlZmxlY3QgdGhlIHF1ZXVlIGNoYW5nZSBvbiB0aGUgY2FsZW5kYXIgZXZlbnQgc3RyYWlnaHQgYXdheSAoY292ZXJzIG9wZW4gYWN0aXZpdGllcywgd2hvc2VcbiAgLy8gcmVzb3VyY2UgZmV0Y2ggZG9lcyBub3QgY2FycnkgYSByZWxpYWJsZSBtZW1iZXIgaWQpLCB1c2luZyB0aGUgYXV0aG9yaXRhdGl2ZSBqb2luIGVudHJ5LlxuICBvbihqb2luV2FpdGluZ0xpc3RTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiBzZXRNZW1iZXJFdmVudFdhaXRsaXN0KHN0YXRlLCBwYXlsb2FkLm1lbWJlcl9pZCwgcGF5bG9hZC5hY3Rpdml0eV9pZCwge1xuICAgIGFsbG93X3dhaXRpbmdfbGlzdDogdHJ1ZSxcbiAgICBtZW1iZXJfd2FpdGluZ19saXN0X3N0YXR1czogcGF5bG9hZC5zdGF0dXMsXG4gICAgbWVtYmVyX3dhaXRpbmdfbGlzdF9wb3NpdGlvbjogcGF5bG9hZC5wb3NpdGlvbixcbiAgICB3YWl0aW5nX2xpc3Rfb2ZmZXJfZXhwaXJlc19hdDogcGF5bG9hZC5vZmZlcl9leHBpcmVzX2F0LFxuICAgIHdhaXRpbmdfbGlzdF9vZmZlcmVkX3Nsb3RzOiBwYXlsb2FkLm9mZmVyZWRfc2xvdHMsXG4gIH0pKSxcbiAgb24obGVhdmVXYWl0aW5nTGlzdFN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBjb25zdCBjbGVhcmVkID0gc2V0TWVtYmVyRXZlbnRXYWl0bGlzdChzdGF0ZSwgcGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5hY3Rpdml0eUlkLCB7XG4gICAgICBhbGxvd193YWl0aW5nX2xpc3Q6IHRydWUsXG4gICAgICBtZW1iZXJfd2FpdGluZ19saXN0X3N0YXR1czogbnVsbCxcbiAgICAgIG1lbWJlcl93YWl0aW5nX2xpc3RfcG9zaXRpb246IG51bGwsXG4gICAgICB3YWl0aW5nX2xpc3Rfb2ZmZXJfZXhwaXJlc19hdDogbnVsbCxcbiAgICAgIHdhaXRpbmdfbGlzdF9vZmZlcmVkX3Nsb3RzOiBudWxsLFxuICAgIH0pO1xuICAgIHJldHVybiB7IC4uLmNsZWFyZWQsIGN1cnJlbnRNZW1iZXJXYWl0aW5nTGlzdEVudHJ5OiB1bmRlZmluZWQgfTtcbiAgfSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBXYWl0aW5nIExpc3RcbiAgb24obG9hZFRlYW1BY3Rpdml0eVdhaXRpbmdMaXN0U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICB3YWl0aW5nTGlzdDogcGF5bG9hZC5lbnRyaWVzLFxuICAgICAgICAgICAgd2FpdGxpc3RPdXRzdGFuZGluZ09mZmVyOiBwYXlsb2FkLm91dHN0YW5kaW5nT2ZmZXJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBMZWFkZXIgRXh0cmEgTWVtYmVyc1xuICBvbihsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHBheWxvYWQudGVhbUlkID09PSBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC50ZWFtLmlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGV4dHJhTWVtYmVyczogcGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICAgICAgZXh0cmFNZW1iZXJzTG9hZGVkOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIFRlYW0gYWN0aXZpdHkgcXVlc3Rpb25zXG4gIG9uKGxpc3RUZWFtQWN0aXZpdHlRdWVzdGlvbnNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgYWN0aXZpdHlRdWVzdGlvbnM6IHtcbiAgICAgIC4uLnN0YXRlLmFjdGl2aXR5UXVlc3Rpb25zIHx8IHt9LFxuICAgICAgW3BheWxvYWQudGVhbUlkXTogbGlzdFN0YXJ0TG9hZGluZyhzdGF0ZS5hY3Rpdml0eVF1ZXN0aW9ucz8uW3BheWxvYWQudGVhbUlkXSlcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdFRlYW1BY3Rpdml0eVF1ZXN0aW9uc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgYWN0aXZpdHlRdWVzdGlvbnM6IHtcbiAgICAgIC4uLnN0YXRlLmFjdGl2aXR5UXVlc3Rpb25zIHx8IHt9LFxuICAgICAgW3BheWxvYWQudGVhbUlkXTogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5UXVlc3Rpb24+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RUZWFtQWN0aXZpdHlRdWVzdGlvbnNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGFjdGl2aXR5UXVlc3Rpb25zOiB7XG4gICAgICAuLi5zdGF0ZS5hY3Rpdml0eVF1ZXN0aW9ucyB8fCB7fSxcbiAgICAgIFtwYXlsb2FkLnRlYW1JZF06IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLnJlc3VsdHMpXG4gICAgfVxuICB9KSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBBY3Rpb25zXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPFRlYW1BY3Rpdml0eUludGVyZmFjZT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlRUkNvZGVTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCAmJiBwYXlsb2FkLmFjdGl2aXR5LmlkID09PSBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pZCAmJiBwYXlsb2FkLnRlYW1JZCA9PT0gc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQudGVhbS5pZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eTogcGF5bG9hZC5hY3Rpdml0eVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBUZWFtIEFjdGl2aXR5IFNldHRpbmdzXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eVNldHRpbmdzOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5hY3Rpdml0eVNldHRpbmdzKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlTZXR0aW5nczogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eVNldHRpbmdzPihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlTZXR0aW5nczogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBRdWVzdGlvblxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eVF1ZXN0aW9uOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5UXVlc3Rpb24pIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlRdWVzdGlvbkZhaWx1cmVBY3Rpb24sIChzdGF0ZSwge3BheWxvYWR9KSA9PiAoey4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5UXVlc3Rpb246IHJldHJpZXZlTG9hZEZhaWx1cmU8QWN0aXZpdHlRdWVzdGlvbj4ocGF5bG9hZCl9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5UXVlc3Rpb25TdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHtwYXlsb2FkfSkgPT4gKHsuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eVF1ZXN0aW9uOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpfSkpLFxuXG4gIC8vIFRlYW0gRGVmYXVsdCBBY3Rpdml0eSBTZXR0aW5nc1xuICBvbihyZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc0FjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIG5ld1RlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUubmV3VGVhbUFjdGl2aXR5KSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIG5ld1RlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBuZXdUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIFVwZGF0ZSBNZW1iZXIgQWN0aXZpdHkgSW52aXRlXG4gIG9uKHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGUoc3RhdGUsIHBheWxvYWQpKSxcblxuICAvLyBVcGRhdGUgTWVtYmVyIE9wZW4gQWN0aXZpdHlcbiAgb24odXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZClcbiAgICB9O1xuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWU/LnJlc3VsdCkge1xuICAgICAgY29uc3QgZXhpc3RpbmdPcGVuQWN0aXZpdGllcyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQuZ2V0KHBheWxvYWQubWVtYmVyX2lkKTtcblxuICAgICAgaWYgKGV4aXN0aW5nT3BlbkFjdGl2aXRpZXMpIHtcbiAgICAgICAgY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcyxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLFxuICAgICAgICAgICAgcmVzdWx0OiBuZXcgTWFwKGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQpLnNldChcbiAgICAgICAgICAgICAgcGF5bG9hZC5tZW1iZXJfaWQsXG4gICAgICAgICAgICAgIHVwZGF0ZU9wZW5BY3Rpdml0aWVzKGV4aXN0aW5nT3BlbkFjdGl2aXRpZXMsIHBheWxvYWQpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcz8ucmVzdWx0cykge1xuICAgICAgY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcyA9IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcyxcbiAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcy5yZXN1bHRzLm1hcCgoaW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4ge1xuICAgICAgICAgIGlmIChpbnZpdGUuYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGludml0ZWRNZW1iZXIgPSBwYXlsb2FkLmludml0ZWRfbWVtYmVycy5maW5kKChpbnZpdGVkTWVtYmVyOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gaW52aXRlZE1lbWJlci5pZCA9PT0gaW52aXRlLmlkKTtcblxuICAgICAgICAgICAgaWYgKGludml0ZWRNZW1iZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpdml0eUludml0ZShcbiAgICAgICAgICAgICAgICBpbnZpdGUuaWQsXG4gICAgICAgICAgICAgICAgaW52aXRlLmFjdGl2aXR5LFxuICAgICAgICAgICAgICAgIGludml0ZWRNZW1iZXIuY29tbWVudCxcbiAgICAgICAgICAgICAgICBpbnZpdGUuY3JlYXRlZCxcbiAgICAgICAgICAgICAgICBpbnZpdGUuaGFzX3VucGFpZF9pbnZvaWNlcyxcbiAgICAgICAgICAgICAgICBpbnZpdGVkTWVtYmVyLmxhc3RfaW52aXRlIHx8ICcnIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgICBpbnZpdGUubGVhZGVyLFxuICAgICAgICAgICAgICAgIGludml0ZS5tZW1iZXIsXG4gICAgICAgICAgICAgICAgaW52aXRlLm1lbWJlcl9pbnZvaWNlX2lkLFxuICAgICAgICAgICAgICAgIGludml0ZWRNZW1iZXIubmV4dF9pbnZpdGUsXG4gICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgaW52aXRlLnBheW1lbnRfbGluayxcbiAgICAgICAgICAgICAgICBpbnZpdGUucHVibGljX3BheW1lbnRfbGluayxcbiAgICAgICAgICAgICAgICBpbnZpdGUucmVtaW5kZWQsXG4gICAgICAgICAgICAgICAgaW52aXRlZE1lbWJlci5yZXNwb25zZV9kYXRlLFxuICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgIGludml0ZWRNZW1iZXIuc3RhdHVzLFxuICAgICAgICAgICAgICAgIGludml0ZS50b2tlbixcbiAgICAgICAgICAgICAgICBpbnZpdGUudW5wYWlkX2ludm9pY2VzLFxuICAgICAgICAgICAgICAgIGludml0ZS51cGRhdGVkLFxuICAgICAgICAgICAgICAgIGludml0ZS5ndWVzdHMsXG4gICAgICAgICAgICAgICAgaW52aXRlLm1lbWJlcl9pbnZvaWNlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBpbnZpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpbnZpdGU7XG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB1cGRhdGVNZW1iZXJFdmVudHNGcm9tT3BlbkFjdGl2aXR5KGN1cnJlbnRTdGF0ZSwgcGF5bG9hZCk7XG4gIH0pLFxuXG4gIC8vIFJlbW92ZSBtZW1iZXIgb3BlbiBhY3Rpdml0eVxuICBvbihyZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgeyBwYXlsb2FkIH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nfX0pID0+IHtcbiAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgLi4uc3RhdGVcbiAgICB9O1xuXG4gICAgaWYgKHN0YXRlLmN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk/LnJlc3VsdD8uaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHkgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWU/LnJlc3VsdCkge1xuICAgICAgY29uc3QgZXhpc3RpbmdPcGVuQWN0aXZpdGllcyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQuZ2V0KHBheWxvYWQubWVtYmVySWQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmdPcGVuQWN0aXZpdGllcykge1xuICAgICAgICBjb25zdCB1cGRhdGVkT3BlbkFjdGl2aXRpZXMgPSBleGlzdGluZ09wZW5BY3Rpdml0aWVzLm1hcChcbiAgICAgICAgICAob3BlbkFjdGl2aXR5OiBPcGVuQWN0aXZpdHkpID0+IHtcbiAgICAgICAgICAgIGlmIChvcGVuQWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCAmJiBvcGVuQWN0aXZpdHkubWVtYmVyX2lkID09PSBwYXlsb2FkLm1lbWJlcklkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgT3BlbkFjdGl2aXR5KFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuYWN0aXZpdHlfZ3JvdXBfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFjdGl2aXR5X3R5cGVfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmNsdWJfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmxvY2F0aW9uX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnRlYW1faWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFjdGl2aXR5X2xvY2F0aW9uLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5hY3Rpdml0eV90eXBlX25hbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFsbG93X21heWJlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jYWxlbmRhcl9uYW1lLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jb21tZW50X3JlcXVpcmVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jcmVhdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jdXJyZW50X251bV9hdHRlbmRhbnRzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5kYXksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmRlZmF1bHRfZmVlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5kZWZhdWx0X2ZlZV9pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmVuZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZW5kX3RpbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmZpbGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmhhc191bnBhaWRfaW52b2ljZXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0YXRpb25fdGV4dCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX2ZpcnN0X2RheXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9ncm91cHMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9oaWRlX2JlZm9yZV9zZW50LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfbGFzdF9yZXNwb25zZV9kYXRlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfcmVtaW5kLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfcmVtaW5kX3JlY2VpdmVycyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX3NlY29uZF9kYXlzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZWRfbWVtYmVycy5maWx0ZXIoKGludml0ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IGludml0ZS5tZW1iZXJfaWQgIT09IHBheWxvYWQubWVtYmVySWQpLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5sYXN0X3Jlc3BvbnNlX2RhdGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmxvY2F0aW9uX25hbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1heF9udW1fYXR0ZW5kYW50cyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWF4X251bV9hdHRlbmRhbnRzX3R5cGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lZXRfdXBfcGxhY2UsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lZXRfdXBfdGltZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF90aW1lX2Rpc3BsYXksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lZXRfdXBfdGltZV9zaG93LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfaWRzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfaW52b2ljZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVtYmVyX25hbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm9wZW5fYWN0aXZpdHksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm9wdGlvbmFsX2ZlZXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm9wdGlvbmFsX2ZlZV9yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3B0aW9uYWxfZmVlX3R5cGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnBheW1lbnRfbGluayxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucHVibGljX3BheW1lbnRfbGluayxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucXVlc3Rpb25zLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5yZXBlYXQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnJlcGVhdF9udW0sXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnJlcGVhdF90b19kYXksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnJlcGVhdF90eXBlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5zZXJ2aWNlX2ZlZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc2VydmljZV9mZWVfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnNob3dfb3RoZXJfaW52aXRlZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc3RhcnQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnN0YXJ0X3RpbWUsXG4gICAgICAgICAgICAgICAgJ3dhaXRpbmcnLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS50aXRsZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkudW5wYWlkX2ludm9pY2VzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51cGRhdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51c2VfaW52aXRlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51cGRhdGVfcmVwZWF0aW5nLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5hbGxvd19ndWVzdHMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm51bV9ndWVzdHNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9wZW5BY3Rpdml0eTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcyxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLFxuICAgICAgICAgICAgcmVzdWx0OiBuZXcgTWFwPHN0cmluZywgQXJyYXk8T3BlbkFjdGl2aXR5Pj4oY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLnJlc3VsdCkuc2V0KHBheWxvYWQubWVtYmVySWQsIHVwZGF0ZWRPcGVuQWN0aXZpdGllcylcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZVxuICB9KSxcblxuICAvLyBVcGRhdGUgVGVhbSBBY3Rpdml0eVxuICBvbih1cGRhdGVUZWFtQWN0aXZpdHlBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5KSB9KSksXG4gIG9uKHVwZGF0ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPFRlYW1BY3Rpdml0eUludGVyZmFjZT4ocGF5bG9hZCkgfSkpLFxuICBvbih1cGRhdGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCAmJiBwYXlsb2FkLmlkID09PSBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eTogcGF5bG9hZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBUZWFtIEFjdGl2aXR5IFF1ZXN0aW9uXG4gIG9uKHVwZGF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eVF1ZXN0aW9uOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5UXVlc3Rpb24pIH0pKSxcbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25GYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHtwYXlsb2FkfSkgPT4gKHsuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eVF1ZXN0aW9uOiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5UXVlc3Rpb24+KHBheWxvYWQpfSkpLFxuICBvbih1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvblN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwge3BheWxvYWR9KSA9PiAoey4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5UXVlc3Rpb246IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCl9KSksXG5cbiAgLy8gUmVzZW5kIHRlYW0gYWN0aXZpdHkgaW52aXRlXG4gIG9uKHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDogQWN0aXZpdHlJbnZpdGV9KSA9PiB1cGRhdGVUZWFtQWN0aXZpdHlJbnZpdGUoc3RhdGUsIHBheWxvYWQpKSxcblxuICAvLyBVcGRhdGUgVGVhbSBhY3Rpdml0eSBpbnZpdGVcbiAgb24odXBkYXRlVGVhbU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiBNZW1iZXJBY3Rpdml0eUludml0ZX0pID0+IHVwZGF0ZVRlYW1BY3Rpdml0eUludml0ZShzdGF0ZSwgcGF5bG9hZCkpLFxuXG4gIC8vIERlbGV0ZSBUZWFtIEFjdGl2aXR5XG4gIG9uKGRlbGV0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlPy5yZXN1bHRzKSB7XG4gICAgICBjdXJyZW50U3RhdGUudGVhbUV2ZW50cyA9IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMudmFsdWUsXG4gICAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLnRlYW1FdmVudHMudmFsdWUucmVzdWx0cy5maWx0ZXIoKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuaWQgIT09IHBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9KSxcblxuICBvbihkZWxldGVUZWFtQWN0aXZpdHlRdWVzdGlvblN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDoge3RlYW1JZDogc3RyaW5nLCBxdWVzdGlvbklkOiBzdHJpbmd9fSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHlRdWVzdGlvbjogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIGlmIChjdXJyZW50U3RhdGUuYWN0aXZpdHlRdWVzdGlvbnMgJiYgc3RhdGUuYWN0aXZpdHlRdWVzdGlvbnM/LltwYXlsb2FkLnRlYW1JZF0pIHtcbiAgICAgIGN1cnJlbnRTdGF0ZS5hY3Rpdml0eVF1ZXN0aW9uc1twYXlsb2FkLnRlYW1JZF0gPSB7XG4gICAgICAgIC4uLnN0YXRlLmFjdGl2aXR5UXVlc3Rpb25zW3BheWxvYWQudGVhbUlkXSxcbiAgICAgICAgcmVzdWx0czogc3RhdGUuYWN0aXZpdHlRdWVzdGlvbnNbcGF5bG9hZC50ZWFtSWRdLnJlc3VsdHMuZmlsdGVyKChhY3Rpdml0eVF1ZXN0aW9uOiBBY3Rpdml0eVF1ZXN0aW9uKSA9PiBhY3Rpdml0eVF1ZXN0aW9uLmlkICE9PSBwYXlsb2FkLnF1ZXN0aW9uSWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfSksXG5cbiAgLy8gQ3JlYXRlIFRlYW0gQWN0aXZpdHlcbiAgb24oY3JlYXRlVGVhbUFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSkgfSkpLFxuXG4gIC8vIEZhaWx1cmUgSGFuZGxlcnNcbiAgb24oY3JlYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZEZhaWx1cmU8VGVhbUFjdGl2aXR5SW50ZXJmYWNlPihwYXlsb2FkKSB9KSksXG4pO1xuIl19
703
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvcmVkdWNlcnMvY2FsZW5kYXIucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLDhCQUE4QixFQUM5Qix1Q0FBdUMsRUFDdkMsK0JBQStCLEVBQy9CLHdDQUF3QyxFQUN4QywrQ0FBK0MsRUFDL0MsK0NBQStDLEVBQy9DLG9DQUFvQyxFQUNwQywyQ0FBMkMsRUFDM0MsMkNBQTJDLEVBQzNDLDBCQUEwQixFQUMxQixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyxpQ0FBaUMsRUFDakMsb0NBQW9DLEVBQ3BDLG9DQUFvQyxFQUNwQyx5Q0FBeUMsRUFDekMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsdUNBQXVDLEVBQ3ZDLDhCQUE4QixFQUM5QiwyQ0FBMkMsRUFDM0MsNEJBQTRCLEVBQzVCLG1D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QUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixDQUF3QixPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDdEosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTdGF0ZSwgaW5pdGlhbENhbGVuZGFyU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5pbXBvcnQge1xuICBjbGVhck1lbWJlckFjdGl2aXR5QWN0aW9uLFxuICBjbGVhck1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICBjbGVhck1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbixcbiAgY2xlYXJTdG9yZUFjdGlvbixcbiAgY2xlYXJUZWFtQWN0aXZpdGllc0FjdGlvbixcbiAgY2xlYXJUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eUFjdGlvbixcbiAgY3JlYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICBkZWxldGVUZWFtQWN0aXZpdHlRdWVzdGlvblN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdGllc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0aWVzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXRpZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXR5R3Vlc3RzU3VjY2Vzc0FjdGlvbixcbiAgYWRkVGVhbUFjdGl2aXR5R3Vlc3RTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlHdWVzdFN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUd1ZXN0U3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlRdWVzdGlvbnNBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlRdWVzdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXR5UXVlc3Rpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uLFxuICByZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sXG4gIHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5UVJDb2RlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRdWVzdGlvbkFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRdWVzdGlvbkZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5UXVlc3Rpb25TdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICByZW1vdmVNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5QWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvbkFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25GYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvblN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVRlYW1NZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIGpvaW5XYWl0aW5nTGlzdFN1Y2Nlc3NBY3Rpb24sXG4gIGxlYXZlV2FpdGluZ0xpc3RTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlcldhaXRpbmdMaXN0RW50cnlBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyV2FpdGluZ0xpc3RFbnRyeUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyV2FpdGluZ0xpc3RFbnRyeVN1Y2Nlc3NBY3Rpb24sXG4gIGxvYWRUZWFtQWN0aXZpdHlXYWl0aW5nTGlzdFN1Y2Nlc3NBY3Rpb24sXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHksXG4gIEFjdGl2aXR5SW52aXRlLFxuICBBY3Rpdml0eUxvY2F0aW9uLFxuICBBY3Rpdml0eVF1ZXN0aW9uLFxuICBBY3Rpdml0eVNldHRpbmdzLFxuICBBY3Rpdml0eVR5cGUsXG4gIEFjdGl2aXR5V2FpdGluZ0xpc3RFbnRyeSxcbiAgRXZlbnQsXG4gIE1lbWJlckFjdGl2aXR5SW52aXRlLFxuICBPcGVuQWN0aXZpdHlcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtc0ludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgTGlzdFJlc3VsdEludGVyZmFjZSxcbiAgUmV0cmlldmVSZXN1bHRJbnRlcmZhY2UsXG4gIFRlYW1BY3Rpdml0eUludGVyZmFjZSxcbiAgVGVhbUNhbGVuZGFyRXZlbnRSZXN1bHRJbnRlcmZhY2Vcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBsaXN0TG9hZEZhaWx1cmUsXG4gIGxpc3RMb2FkU3VjY2VzcyxcbiAgbGlzdFN0YXJ0TG9hZGluZyxcbiAgcmV0cmlldmVMb2FkRmFpbHVyZSxcbiAgcmV0cmlldmVMb2FkU3VjY2VzcyxcbiAgcmV0cmlldmVTdGFydExvYWRpbmdcbn0gZnJvbSAnLi9yZWR1Y2VyLWhlbHBlcnMnO1xuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuY29uc3QgdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVzID0gKGludml0ZXM6IEFycmF5PE1lbWJlckFjdGl2aXR5SW52aXRlPiB8IHVuZGVmaW5lZCB8IG51bGwsIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIGlmICghaW52aXRlcykgcmV0dXJuIFtdO1xuICByZXR1cm4gaW52aXRlcy5tYXAoKGludml0ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICBpZiAoaW52aXRlLm1lbWJlcl9pZCA9PT0gcGF5bG9hZC5tZW1iZXIuaWQpIHtcbiAgICAgIHJldHVybiBuZXcgTWVtYmVyQWN0aXZpdHlJbnZpdGUoXG4gICAgICAgIGludml0ZS5pZCxcbiAgICAgICAgcGF5bG9hZC5jb21tZW50LFxuICAgICAgICBpbnZpdGUuY3VycmVudF9udW1fYXR0ZW5kYW50cyxcbiAgICAgICAgcGF5bG9hZC5sYXN0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5sZWFkZXIsXG4gICAgICAgIHBheWxvYWQubWVtYmVyLmVtYWlsLFxuICAgICAgICBwYXlsb2FkLm1lbWJlci5pZCxcbiAgICAgICAgcGF5bG9hZC5tZW1iZXIubmFtZSxcbiAgICAgICAgcGF5bG9hZC5uZXh0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5yZXNwb25zZV9kYXRlLFxuICAgICAgICBwYXlsb2FkLnN0YXR1c1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGludml0ZTtcbiAgfSk7XG59O1xuXG5jb25zdCB1cGRhdGVFdmVudEludml0ZXMgPSAoZXZlbnRzOiBBcnJheTxFdmVudD4sIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIHJldHVybiBldmVudHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQuaW52aXRhdGlvbl9pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgcmV0dXJuIG5ldyBFdmVudChcbiAgICAgICAgZXZlbnQuaWQsXG4gICAgICAgIGV2ZW50LmFjdGl2aXR5X2lkLFxuICAgICAgICBldmVudC5hY3Rpdml0eV90eXBlLFxuICAgICAgICBldmVudC5iYXNlX2JhY2tncm91bmRfY29sb3IsXG4gICAgICAgIGV2ZW50LmJhc2VfY29sb3IsXG4gICAgICAgIGV2ZW50LmJhc2VfbmFtZSxcbiAgICAgICAgZXZlbnQuY2FsZW5kYXJfbmFtZSxcbiAgICAgICAgZXZlbnQuZGVzY3JpcHRpb24sXG4gICAgICAgIGV2ZW50LmVuZCxcbiAgICAgICAgZXZlbnQuaW52aXRhdGlvbl9pZCxcbiAgICAgICAgcGF5bG9hZC5zdGF0dXMsXG4gICAgICAgIGV2ZW50Lmludml0ZWRfbWVtYmVycyA/IFsuLi5ldmVudC5pbnZpdGVkX21lbWJlcnNdIDogZXZlbnQuaW52aXRlZF9tZW1iZXJzLFxuICAgICAgICBldmVudC5sYXN0X3Jlc3BvbnNlX2RhdGUsXG4gICAgICAgIGV2ZW50LmxvY2F0aW9uLFxuICAgICAgICBldmVudC5tZWV0X3VwX3BsYWNlLFxuICAgICAgICBldmVudC5tZWV0X3VwX3RpbWUsXG4gICAgICAgIGV2ZW50Lm1lbWJlcl9pZCxcbiAgICAgICAgZXZlbnQub3Blbl9hY3Rpdml0eSxcbiAgICAgICAgWy4uLmV2ZW50LnBhcnRpY2lwYW50c10sXG4gICAgICAgIGV2ZW50LnN0YXJ0LFxuICAgICAgICBldmVudC50aXRsZSxcbiAgICAgICAgZXZlbnQudHlwZSxcbiAgICAgICAgLy8gQ2FycnkgdGhlIHdhaXRpbmctbGlzdCBzdGF0ZSBmcm9tIHRoZSAocmUtZmV0Y2hlZCkgaW52aXRlJ3MgYWN0aXZpdHkgc28gdGhlIGNhbGVuZGFyXG4gICAgICAgIC8vIGV2ZW50IGtlZXBzL3VwZGF0ZXMgaXRzIHF1ZXVlIHN0YXR1cyDigJQgZS5nLiBhZnRlciBqb2luaW5nIG9yIGxlYXZpbmcgdGhlIHdhaXRpbmcgbGlzdCxcbiAgICAgICAgLy8gb3IgcmVzcG9uZGluZyDigJQgaW5zdGVhZCBvZiBiZWluZyByZXNldCB0byB0aGUgRXZlbnQgZGVmYXVsdHMuXG4gICAgICAgIHBheWxvYWQuYWN0aXZpdHkuYWxsb3dfd2FpdGluZ19saXN0LFxuICAgICAgICBwYXlsb2FkLmFjdGl2aXR5Lm1lbWJlcl93YWl0aW5nX2xpc3Rfc3RhdHVzLFxuICAgICAgICBwYXlsb2FkLmFjdGl2aXR5Lm1lbWJlcl93YWl0aW5nX2xpc3RfcG9zaXRpb24sXG4gICAgICAgIHBheWxvYWQuYWN0aXZpdHkud2FpdGluZ19saXN0X29mZmVyX2V4cGlyZXNfYXQsXG4gICAgICAgIHBheWxvYWQuYWN0aXZpdHkud2FpdGluZ19saXN0X29mZmVyZWRfc2xvdHNcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9KTtcbn07XG5cbi8vIENsZWFyIHRoZSBtZW1iZXIncyBpbnZpdGF0aW9uIGZyb20gYSBjYWxlbmRhciBldmVudCBhZnRlciB0aGVpciBvcGVuLWFjdGl2aXR5IGludml0ZSB3YXMgZGVsZXRlZCxcbi8vIHNvIHRoZSBldmVudCBzdG9wcyByZW5kZXJpbmcgYXMgYXR0ZW5kaW5nICh0aGUgZ3JlZW4gY2hlY2spIGFuZCBmYWxscyBiYWNrIHRvIHRoZSBvcGVuLWFjdGl2aXR5XG4vLyAobm90LXJlc3BvbmRlZCkgbG9vay4gTWVtYmVyLXNwZWNpZmljIHdhaXRpbmctbGlzdCBzdGF0ZSBpcyByZXNldCB0b28g4oCUIHRoZXkgbGVmdCB0aGUgYWN0aXZpdHkuXG5jb25zdCByZW1vdmVFdmVudEludml0ZSA9IChldmVudHM6IEFycmF5PEV2ZW50PiwgaW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4ge1xuICByZXR1cm4gZXZlbnRzLm1hcCgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50Lmludml0YXRpb25faWQgPT09IGludml0ZS5pZCkge1xuICAgICAgcmV0dXJuIG5ldyBFdmVudChcbiAgICAgICAgZXZlbnQuaWQsXG4gICAgICAgIGV2ZW50LmFjdGl2aXR5X2lkLFxuICAgICAgICBldmVudC5hY3Rpdml0eV90eXBlLFxuICAgICAgICBldmVudC5iYXNlX2JhY2tncm91bmRfY29sb3IsXG4gICAgICAgIGV2ZW50LmJhc2VfY29sb3IsXG4gICAgICAgIGV2ZW50LmJhc2VfbmFtZSxcbiAgICAgICAgZXZlbnQuY2FsZW5kYXJfbmFtZSxcbiAgICAgICAgZXZlbnQuZGVzY3JpcHRpb24sXG4gICAgICAgIGV2ZW50LmVuZCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgKGV2ZW50Lmludml0ZWRfbWVtYmVycyA/PyBbXSkuZmlsdGVyKChtZW1iZXI6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiBtZW1iZXIuaWQgIT09IGludml0ZS5pZCksXG4gICAgICAgIGV2ZW50Lmxhc3RfcmVzcG9uc2VfZGF0ZSxcbiAgICAgICAgZXZlbnQubG9jYXRpb24sXG4gICAgICAgIGV2ZW50Lm1lZXRfdXBfcGxhY2UsXG4gICAgICAgIGV2ZW50Lm1lZXRfdXBfdGltZSxcbiAgICAgICAgZXZlbnQubWVtYmVyX2lkLFxuICAgICAgICBldmVudC5vcGVuX2FjdGl2aXR5LFxuICAgICAgICBbLi4uZXZlbnQucGFydGljaXBhbnRzXSxcbiAgICAgICAgZXZlbnQuc3RhcnQsXG4gICAgICAgIGV2ZW50LnRpdGxlLFxuICAgICAgICBldmVudC50eXBlLFxuICAgICAgICBldmVudC5hbGxvd193YWl0aW5nX2xpc3QsXG4gICAgICAgIG51bGwsXG4gICAgICAgIG51bGwsXG4gICAgICAgIG51bGwsXG4gICAgICAgIGV2ZW50LndhaXRpbmdfbGlzdF9vZmZlcmVkX3Nsb3RzXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnQ7XG4gIH0pO1xufTtcblxuaW50ZXJmYWNlIEV2ZW50V2FpdGxpc3RTdGF0ZSB7XG4gIGFsbG93X3dhaXRpbmdfbGlzdDogYm9vbGVhbjtcbiAgbWVtYmVyX3dhaXRpbmdfbGlzdF9zdGF0dXM6IHN0cmluZyB8IG51bGw7XG4gIG1lbWJlcl93YWl0aW5nX2xpc3RfcG9zaXRpb246IG51bWJlciB8IG51bGw7XG4gIHdhaXRpbmdfbGlzdF9vZmZlcl9leHBpcmVzX2F0OiBzdHJpbmcgfCBudWxsO1xuICB3YWl0aW5nX2xpc3Rfb2ZmZXJlZF9zbG90czogbnVtYmVyIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIEV2ZW50SW52aXRlU3RhdGUge1xuICBpbnZpdGF0aW9uX2lkOiBzdHJpbmcgfCBudWxsO1xuICBpbnZpdGF0aW9uX3Jlc3BvbnNlOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBSZWJ1aWxkcyBhbiBFdmVudCBwcmVzZXJ2aW5nIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBtZW1iZXIncyB3YWl0aW5nLWxpc3Qgc3RhdGUuIEFuIG9wdGlvbmFsXG4vLyBgaW52aXRlYCBhbHNvIHVwZGF0ZXMgdGhlIG1lbWJlcidzIGludml0ZSBpZCArIHJlc3BvbnNlIChlLmcuIGFmdGVyIHJlc3BvbmRpbmcgdG8gYW4gb3BlblxuLy8gYWN0aXZpdHkpOyB3aGVuIG9taXR0ZWQgdGhlIGV4aXN0aW5nIGludml0ZSBpcyBrZXB0IChqb2luL2xlYXZlIHRoZSBxdWV1ZSBtdXN0IG5vdCB0b3VjaCBpdCkuXG5jb25zdCBjbG9uZUV2ZW50V2l0aFdhaXRsaXN0ID0gKGV2ZW50OiBFdmVudCwgd2FpdGxpc3Q6IEV2ZW50V2FpdGxpc3RTdGF0ZSwgaW52aXRlPzogRXZlbnRJbnZpdGVTdGF0ZSk6IEV2ZW50ID0+XG4gIG5ldyBFdmVudChcbiAgICBldmVudC5pZCxcbiAgICBldmVudC5hY3Rpdml0eV9pZCxcbiAgICBldmVudC5hY3Rpdml0eV90eXBlLFxuICAgIGV2ZW50LmJhc2VfYmFja2dyb3VuZF9jb2xvcixcbiAgICBldmVudC5iYXNlX2NvbG9yLFxuICAgIGV2ZW50LmJhc2VfbmFtZSxcbiAgICBldmVudC5jYWxlbmRhcl9uYW1lLFxuICAgIGV2ZW50LmRlc2NyaXB0aW9uLFxuICAgIGV2ZW50LmVuZCxcbiAgICBpbnZpdGUgPyBpbnZpdGUuaW52aXRhdGlvbl9pZCA6IGV2ZW50Lmludml0YXRpb25faWQsXG4gICAgaW52aXRlID8gaW52aXRlLmludml0YXRpb25fcmVzcG9uc2UgOiBldmVudC5pbnZpdGF0aW9uX3Jlc3BvbnNlLFxuICAgIGV2ZW50Lmludml0ZWRfbWVtYmVycyA/IFsuLi5ldmVudC5pbnZpdGVkX21lbWJlcnNdIDogZXZlbnQuaW52aXRlZF9tZW1iZXJzLFxuICAgIGV2ZW50Lmxhc3RfcmVzcG9uc2VfZGF0ZSxcbiAgICBldmVudC5sb2NhdGlvbixcbiAgICBldmVudC5tZWV0X3VwX3BsYWNlLFxuICAgIGV2ZW50Lm1lZXRfdXBfdGltZSxcbiAgICBldmVudC5tZW1iZXJfaWQsXG4gICAgZXZlbnQub3Blbl9hY3Rpdml0eSxcbiAgICBbLi4uZXZlbnQucGFydGljaXBhbnRzXSxcbiAgICBldmVudC5zdGFydCxcbiAgICBldmVudC50aXRsZSxcbiAgICBldmVudC50eXBlLFxuICAgIHdhaXRsaXN0LmFsbG93X3dhaXRpbmdfbGlzdCxcbiAgICB3YWl0bGlzdC5tZW1iZXJfd2FpdGluZ19saXN0X3N0YXR1cyxcbiAgICB3YWl0bGlzdC5tZW1iZXJfd2FpdGluZ19saXN0X3Bvc2l0aW9uLFxuICAgIHdhaXRsaXN0LndhaXRpbmdfbGlzdF9vZmZlcl9leHBpcmVzX2F0LFxuICAgIHdhaXRsaXN0LndhaXRpbmdfbGlzdF9vZmZlcmVkX3Nsb3RzXG4gICk7XG5cbi8vIFVwZGF0ZXMgdGhlIHdhaXRpbmctbGlzdCBzdGF0ZSBvZiBhIG1lbWJlcidzIGNhbGVuZGFyIGV2ZW50IGZvciBhIGdpdmVuIGFjdGl2aXR5LiBPcGVuXG4vLyBhY3Rpdml0aWVzIGhhdmUgbm8gaW52aXRlLCBzbyB0aGUgZXZlbnQgaXMgbWF0Y2hlZCBvbiB0aGUgYWN0aXZpdHkgaWQgKHdpdGhpbiB0aGF0IG1lbWJlcidzXG4vLyBldmVudHMpLiBVc2VkIHRvIGtlZXAgdGhlIGNhbGVuZGFyIGluIHN5bmMgYWZ0ZXIgam9pbmluZy9sZWF2aW5nIHRoZSBxdWV1ZSwgc2luY2UgdGhlXG4vLyBhdXRob3JpdGF0aXZlIGpvaW4gZW50cnkgLyBsZWF2ZSBhY3Rpb24gY2FycmllcyBhIHJlbGlhYmxlIG1lbWJlciBpZCAodW5saWtlIHRoZSBvcGVuLWFjdGl2aXR5XG4vLyByZXNvdXJjZSksIGFuZCBzbyB0aGUgY2hhbmdlIHNob3dzIHN5bmNocm9ub3VzbHkgd2l0aG91dCB3YWl0aW5nIGZvciBhIGZvbGxvdy11cCBmZXRjaC5cbmNvbnN0IHNldE1lbWJlckV2ZW50V2FpdGxpc3QgPSAoc3RhdGU6IENhbGVuZGFyU3RhdGUsIG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgd2FpdGxpc3Q6IEV2ZW50V2FpdGxpc3RTdGF0ZSwgaW52aXRlPzogRXZlbnRJbnZpdGVTdGF0ZSk6IENhbGVuZGFyU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1lbWJlckV2ZW50cz8udmFsdWU/LnJlc3VsdCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nRXZlbnRzID0gc3RhdGUubWVtYmVyRXZlbnRzLnZhbHVlLnJlc3VsdC5nZXQobWVtYmVySWQpO1xuXG4gIGlmICghZXhpc3RpbmdFdmVudHMpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlckV2ZW50czoge1xuICAgICAgLi4uc3RhdGUubWVtYmVyRXZlbnRzLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgLi4uc3RhdGUubWVtYmVyRXZlbnRzLnZhbHVlLFxuICAgICAgICByZXN1bHQ6IG5ldyBNYXAoc3RhdGUubWVtYmVyRXZlbnRzLnZhbHVlLnJlc3VsdCkuc2V0KFxuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGV4aXN0aW5nRXZlbnRzLm1hcCgoZXZlbnQ6IEV2ZW50KSA9PlxuICAgICAgICAgICAgZXZlbnQuYWN0aXZpdHlfaWQgPT09IGFjdGl2aXR5SWQgPyBjbG9uZUV2ZW50V2l0aFdhaXRsaXN0KGV2ZW50LCB3YWl0bGlzdCwgaW52aXRlKSA6IGV2ZW50KVxuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufTtcblxuY29uc3QgdXBkYXRlTWVtYmVyRXZlbnRzRnJvbU9wZW5BY3Rpdml0eSA9IChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgcGF5bG9hZDogT3BlbkFjdGl2aXR5KTogQ2FsZW5kYXJTdGF0ZSA9PiB7XG4gIC8vIFRoZSBtZW1iZXIncyBvd24gaW52aXRlIChjcmVhdGVkIHdoZW4gdGhleSByZXNwb25kKSBjYXJyaWVzIHRoZSByZXNwb25zZSB0aGF0IHRoZSBjYWxlbmRhclxuICAvLyBpY29uIHNob3dzLiBPcGVuIGFjdGl2aXRpZXMgaGF2ZSBubyBpbnZpdGUgdW50aWwgdGhlbiwgc28gb25seSB1cGRhdGUgaXQgd2hlbiBvbmUgZXhpc3RzIOKAlFxuICAvLyBvdGhlcndpc2Uga2VlcCB0aGUgZXZlbnQncyBjdXJyZW50IGludml0ZSAoZS5nLiBvbiBhIGpvaW4vbGVhdmUtdGhlLXF1ZXVlIHJlZnJlc2gpLlxuICBjb25zdCBtZW1iZXJJbnZpdGUgPSAocGF5bG9hZC5pbnZpdGVkX21lbWJlcnMgPz8gW10pLmZpbmQoXG4gICAgKG1lbWJlcjogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IG1lbWJlci5tZW1iZXJfaWQgPT09IHBheWxvYWQubWVtYmVyX2lkXG4gICk7XG4gIGNvbnN0IGludml0ZSA9IG1lbWJlckludml0ZVxuICAgID8geyBpbnZpdGF0aW9uX2lkOiBtZW1iZXJJbnZpdGUuaWQsIGludml0YXRpb25fcmVzcG9uc2U6IG1lbWJlckludml0ZS5zdGF0dXMgfVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiBzZXRNZW1iZXJFdmVudFdhaXRsaXN0KHN0YXRlLCBwYXlsb2FkLm1lbWJlcl9pZCwgcGF5bG9hZC5pZCwge1xuICAgIGFsbG93X3dhaXRpbmdfbGlzdDogcGF5bG9hZC5hbGxvd193YWl0aW5nX2xpc3QsXG4gICAgbWVtYmVyX3dhaXRpbmdfbGlzdF9zdGF0dXM6IHBheWxvYWQubWVtYmVyX3dhaXRpbmdfbGlzdF9zdGF0dXMsXG4gICAgbWVtYmVyX3dhaXRpbmdfbGlzdF9wb3NpdGlvbjogcGF5bG9hZC5tZW1iZXJfd2FpdGluZ19saXN0X3Bvc2l0aW9uLFxuICAgIHdhaXRpbmdfbGlzdF9vZmZlcl9leHBpcmVzX2F0OiBwYXlsb2FkLndhaXRpbmdfbGlzdF9vZmZlcl9leHBpcmVzX2F0LFxuICAgIHdhaXRpbmdfbGlzdF9vZmZlcmVkX3Nsb3RzOiBwYXlsb2FkLndhaXRpbmdfbGlzdF9vZmZlcmVkX3Nsb3RzLFxuICB9LCBpbnZpdGUpO1xufTtcblxuY29uc3QgdXBkYXRlSW52aXRlZE1lbWJlcnMgPSAoaW52aXRlZE1lbWJlcnM6IEFycmF5PE1lbWJlckFjdGl2aXR5SW52aXRlPiwgcGF5bG9hZDogQWN0aXZpdHlJbnZpdGUgfCBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4ge1xuICByZXR1cm4gaW52aXRlZE1lbWJlcnMubWFwKCh2YWx1ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICBpZiAodmFsdWUuaWQgPT09IHBheWxvYWQuaWQpIHtcbiAgICAgIHJldHVybiBuZXcgTWVtYmVyQWN0aXZpdHlJbnZpdGUoXG4gICAgICAgIHZhbHVlLmlkLFxuICAgICAgICBwYXlsb2FkLmNvbW1lbnQsXG4gICAgICAgIHZhbHVlLmN1cnJlbnRfbnVtX2F0dGVuZGFudHMsXG4gICAgICAgIHBheWxvYWQubGFzdF9pbnZpdGUsXG4gICAgICAgIHZhbHVlLmxlYWRlcixcbiAgICAgICAgdmFsdWUubWVtYmVyX2VtYWlsLFxuICAgICAgICB2YWx1ZS5tZW1iZXJfaWQsXG4gICAgICAgIHZhbHVlLm1lbWJlcl9uYW1lLFxuICAgICAgICBwYXlsb2FkLm5leHRfaW52aXRlLFxuICAgICAgICBwYXlsb2FkLnJlc3BvbnNlX2RhdGUsXG4gICAgICAgIHBheWxvYWQuc3RhdHVzXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSk7XG59O1xuXG5jb25zdCB1cGRhdGVPcGVuQWN0aXZpdGllcyA9IChvcGVuQWN0aXZpdGllczogQXJyYXk8T3BlbkFjdGl2aXR5PiwgcGF5bG9hZDogT3BlbkFjdGl2aXR5KSA9PiB7XG4gIHJldHVybiBvcGVuQWN0aXZpdGllcy5tYXAoKG9wZW5BY3Rpdml0eTogT3BlbkFjdGl2aXR5KSA9PiB7XG4gICAgaWYgKG9wZW5BY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfVxuICAgIHJldHVybiBvcGVuQWN0aXZpdHk7XG4gIH0pO1xufTtcblxuY29uc3QgdXBkYXRlVGVhbUFjdGl2aXR5SW52aXRlID0gKHN0YXRlOiBDYWxlbmRhclN0YXRlLCBwYXlsb2FkOiBBY3Rpdml0eUludml0ZSB8IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQpIHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaW52aXRlZF9tZW1iZXJzLmZpbmRJbmRleCgodmFsdWU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB2YWx1ZS5pZCA9PT0gcGF5bG9hZC5pZCkgIT09IC0xKSB7XG4gICAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LFxuICAgICAgICAgICAgICBpbnZpdGVkX21lbWJlcnM6IHVwZGF0ZUludml0ZWRNZW1iZXJzKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5Lmludml0ZWRfbWVtYmVycywgcGF5bG9hZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGFjdGl2aXR5SWQgPSBjdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQ7XG5cbiAgICAgIGlmIChjdXJyZW50U3RhdGUudGVhbUV2ZW50cz8udmFsdWU/LnJlc3VsdHMpIHtcbiAgICAgICAgY3VycmVudFN0YXRlLnRlYW1FdmVudHMgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLnZhbHVlLFxuICAgICAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLnRlYW1FdmVudHMudmFsdWUucmVzdWx0cy5tYXAoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RXZlbnQgPSB7Li4uZXZlbnR9O1xuICAgICAgICAgICAgICBpZiAoY3VycmVudEV2ZW50LmFjdGl2aXR5X2lkID09PSBhY3Rpdml0eUlkKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEV2ZW50Lmludml0ZWRfbWVtYmVycyA9IHVwZGF0ZUludml0ZWRNZW1iZXJzKGN1cnJlbnRFdmVudC5pbnZpdGVkX21lbWJlcnMgfHwgW10sIHBheWxvYWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBjdXJyZW50RXZlbnQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnRTdGF0ZSBhcyBDYWxlbmRhclN0YXRlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG5cbmNvbnN0IHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlID0gKHN0YXRlOiBDYWxlbmRhclN0YXRlLCBwYXlsb2FkOiBBY3Rpdml0eUludml0ZSkgPT4ge1xuICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKVxuICB9O1xuXG4gIGlmIChjdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5Py5yZXN1bHQ/LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5LmlkKSB7XG4gICAgY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eSA9IHtcbiAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHksXG4gICAgICByZXN1bHQ6IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgIGludml0ZWRfbWVtYmVyczogdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVzKFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkucmVzdWx0Lmludml0ZWRfbWVtYmVycyxcbiAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpZiAoY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cz8udmFsdWU/LnJlc3VsdCkge1xuICAgIGNvbnN0IGV4aXN0aW5nRXZlbnRzID0gY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZS5yZXN1bHQuZ2V0KHBheWxvYWQubWVtYmVyLmlkKTtcblxuICAgIGlmIChleGlzdGluZ0V2ZW50cykge1xuICAgICAgY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cyA9IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cyxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzLnZhbHVlLFxuICAgICAgICAgIHJlc3VsdDogbmV3IE1hcChjdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzLnZhbHVlLnJlc3VsdCkuc2V0KFxuICAgICAgICAgICAgcGF5bG9hZC5tZW1iZXIuaWQsXG4gICAgICAgICAgICB1cGRhdGVFdmVudEludml0ZXMoZXhpc3RpbmdFdmVudHMsIHBheWxvYWQpXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBpZiAoY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcz8ucmVzdWx0cykge1xuICAgIGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMgPSB7XG4gICAgICAuLi5jdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzLFxuICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcy5yZXN1bHRzLm1hcCgoaW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4ge1xuICAgICAgICBpZiAoaW52aXRlLmlkID09PSBwYXlsb2FkLmlkKSB7XG4gICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGludml0ZTtcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbn1cblxuLy8gRGVueWluZyBhbiBvcGVuLWFjdGl2aXR5IGludml0ZSBkZWxldGVzIGl0IHNlcnZlci1zaWRlLiBEcm9wIGl0IGZyb20gdGhlIHN0b3JlIHNvIHRoZSBwYWdlIGZhbGxzXG4vLyBiYWNrIHRvIHRoZSBvcGVuIGFjdGl2aXR5ICh0aGUgcmVnaXN0ZXIgVUkpIGluc3RlYWQgb2YgaG9sZGluZyBhIG5vdy1zdGFsZSBcImRlbmllZFwiIGludml0ZS4gVGhlXG4vLyBjdXJyZW50LWludml0ZSBob2xkZXIgaXMgY2xlYXJlZCB0byBhIHN1Y2Nlc3Mtd2l0aC1udWxsIHJlc3VsdCAobm90IHVuZGVmaW5lZCkgc28gdGhlIHBhZ2UgZG9lcyBub3Rcbi8vIHJlLWZldGNoIGFuIGludml0ZSB0aGF0IHdvdWxkIG5vdyA0MDQuXG5jb25zdCByZW1vdmVNZW1iZXJBY3Rpdml0eUludml0ZSA9IChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgaW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4ge1xuICBsZXQgY3VycmVudFN0YXRlOiBDYWxlbmRhclN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkU3VjY2VzczxBY3Rpdml0eUludml0ZT4obnVsbClcbiAgfTtcblxuICBpZiAoY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcz8ucmVzdWx0cykge1xuICAgIGN1cnJlbnRTdGF0ZS5hY3Rpdml0eUludml0ZXMgPSB7XG4gICAgICAuLi5jdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzLFxuICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLmFjdGl2aXR5SW52aXRlcy5yZXN1bHRzLmZpbHRlcigoaXRlbTogQWN0aXZpdHlJbnZpdGUpID0+IGl0ZW0uaWQgIT09IGludml0ZS5pZClcbiAgICB9O1xuICB9XG5cbiAgaWYgKGN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHk/LnJlc3VsdD8uaWQgPT09IGludml0ZS5hY3Rpdml0eS5pZCkge1xuICAgIGN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkgPSB7XG4gICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5LFxuICAgICAgcmVzdWx0OiB7XG4gICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICBpbnZpdGVkX21lbWJlcnM6IChjdXJyZW50U3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5LnJlc3VsdC5pbnZpdGVkX21lbWJlcnMgPz8gW10pXG4gICAgICAgICAgLmZpbHRlcigobWVtYmVyOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gbWVtYmVyLmlkICE9PSBpbnZpdGUuaWQpXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgY2FsZW5kYXIgZXZlbnQgc28gaXQgbm8gbG9uZ2VyIHNob3dzIHRoZSBtZW1iZXIgYXMgYXR0ZW5kaW5nLlxuICBpZiAoY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cz8udmFsdWU/LnJlc3VsdCkge1xuICAgIGNvbnN0IGV4aXN0aW5nRXZlbnRzID0gY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZS5yZXN1bHQuZ2V0KGludml0ZS5tZW1iZXIuaWQpO1xuXG4gICAgaWYgKGV4aXN0aW5nRXZlbnRzKSB7XG4gICAgICBjdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzID0ge1xuICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMudmFsdWUsXG4gICAgICAgICAgcmVzdWx0OiBuZXcgTWFwKGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMudmFsdWUucmVzdWx0KS5zZXQoXG4gICAgICAgICAgICBpbnZpdGUubWVtYmVyLmlkLFxuICAgICAgICAgICAgcmVtb3ZlRXZlbnRJbnZpdGUoZXhpc3RpbmdFdmVudHMsIGludml0ZSlcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbn07XG5cbi8vIC0tLSBSZWR1Y2VyIC0tLVxuXG5leHBvcnQgY29uc3QgY2FsZW5kYXJSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgaW5pdGlhbENhbGVuZGFyU3RhdGUsXG5cbiAgLy8gQ2xlYXIgQWN0aW9uc1xuICBvbihjbGVhclN0b3JlQWN0aW9uLCAoKSA9PiBpbml0aWFsQ2FsZW5kYXJTdGF0ZSksXG4gIG9uKGNsZWFyTWVtYmVyQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eTogdW5kZWZpbmVkIH0pKSxcbiAgb24oY2xlYXJNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5SW52aXRlOiB1bmRlZmluZWQgfSkpLFxuICBvbihjbGVhck1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogdW5kZWZpbmVkIH0pKSxcbiAgb24oY2xlYXJUZWFtQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHVuZGVmaW5lZCB9KSksXG4gIG9uKGNsZWFyVGVhbUFjdGl2aXRpZXNBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIHRlYW1FdmVudHM6IHVuZGVmaW5lZCB9KSksXG5cbiAgLy8gTWVtYmVyIEFjdGl2aXR5IEludml0ZXNcbiAgb24ocmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5SW52aXRlKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5SW52aXRlOiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5SW52aXRlPihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZShzdGF0ZSwgcGF5bG9hZCkpLFxuICBvbihyZW1vdmVNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHJlbW92ZU1lbWJlckFjdGl2aXR5SW52aXRlKHN0YXRlLCBwYXlsb2FkLmFjdGl2aXR5SW52aXRlKSksXG5cbiAgLy8gTWVtYmVyIEFjdGl2aXRpZXNcbiAgb24ocmV0cmlldmVNZW1iZXJBY3Rpdml0eUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5KSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5PihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBNZW1iZXIgT3BlbiBBY3Rpdml0aWVzXG4gIG9uKHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eSkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPE9wZW5BY3Rpdml0eT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBsZXQgbmV3U3RhdGUgPSB7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH07XG5cbiAgICBpZiAobmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlLnJlc3VsdCAmJiBuZXdTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUucmVzdWx0Py5nZXQocGF5bG9hZC5tZW1iZXJfaWQpPy5maW5kSW5kZXgoKGl0ZW06IE9wZW5BY3Rpdml0eSkgPT4gaXRlbS5pZCA9PT0gcGF5bG9hZC5pZCkgIT09IC0xKSB7XG4gICAgICBjb25zdCB1cGRhdGVkQWN0aXZpdGllcyA9IG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZS5yZXN1bHQ/LmdldChwYXlsb2FkLm1lbWJlcl9pZCk/Lm1hcCgoaXRlbTogT3BlbkFjdGl2aXR5KSA9PiBpdGVtLmlkID09PSBwYXlsb2FkLmlkID8gcGF5bG9hZCA6IGl0ZW0pIGFzIEFycmF5PE9wZW5BY3Rpdml0eT47XG5cbiAgICAgIG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgICAgICBzZWFyY2hQYXJhbXM6IG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy5zZWFyY2hQYXJhbXMgYXMgT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlLFxuICAgICAgICAgIG1lbWJlcklkczogbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/Lm1lbWJlcklkcyBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgbGFzdExvYWRlZDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHJlc3VsdDogbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlLnJlc3VsdD8uc2V0KHBheWxvYWQubWVtYmVyX2lkLCB1cGRhdGVkQWN0aXZpdGllcykgYXMgTWFwPHN0cmluZywgQXJyYXk8T3BlbkFjdGl2aXR5Pj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlTWVtYmVyRXZlbnRzRnJvbU9wZW5BY3Rpdml0eShuZXdTdGF0ZSwgcGF5bG9hZCk7XG4gIH0pLFxuXG4gIC8vIExpc3QgQWxsIE1lbWJlciBPcGVuIEFjdGl2aXR5IExvY2F0aW9uc1xuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5TG9jYXRpb25zOiBsaXN0U3RhcnRMb2FkaW5nKHN0YXRlLmFsbE9wZW5BY3Rpdml0eUxvY2F0aW9ucykgfSkpLFxuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eUxvY2F0aW9uczogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5TG9jYXRpb24+KHBheWxvYWQpIH0pKSxcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlMb2NhdGlvbnM6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTGlzdCBBbGwgTWVtYmVyIE9wZW4gQWN0aXZpdHkgVHlwZXNcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5VHlwZXM6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUuYWxsT3BlbkFjdGl2aXR5VHlwZXMpIH0pKSxcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eVR5cGVzOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlUeXBlPihwYXlsb2FkKSB9KSksXG4gIG9uKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlUeXBlczogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBMaXN0IE1lbWJlciBBY3Rpdml0eSBJbnZpdGVzXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eUludml0ZXM6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUuYWN0aXZpdHlJbnZpdGVzKSB9KSksXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlJbnZpdGVzOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlJbnZpdGU+KHBheWxvYWQpIH0pKSxcbiAgb24obGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eUludml0ZXM6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTWVtYmVyIEFjdGl2aXRpZXNcbiAgb24obGlzdE1lbWJlckFjdGl2aXRpZXNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyRXZlbnRzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5tZW1iZXJFdmVudHM/LnZhbHVlKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyRXZlbnRzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZUxvYWRGYWlsdXJlPE1hcDxzdHJpbmcsIEFycmF5PEV2ZW50Pj4+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJFdmVudHM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZC5yZXN1bHRzKVxuICAgIH1cbiAgfSkpLFxuXG4gIC8vIE1lbWJlciBPcGVuIEFjdGl2aXRpZXNcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0aWVzOiB7XG4gICAgICBzZWFyY2hQYXJhbXM6IHBheWxvYWQub3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgIHNlYXJjaFBhcmFtczogcGF5bG9hZC5vcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZEZhaWx1cmU8TWFwPHN0cmluZywgQXJyYXk8T3BlbkFjdGl2aXR5Pj4+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgIHNlYXJjaFBhcmFtczogcGF5bG9hZC5vcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZC5yZXN1bHRzKVxuICAgIH1cbiAgfSkpLFxuXG4gIC8vIE1lbWJlciBPcGVuIEFjdGl2aXR5IExvY2F0aW9uc1xuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0U3RhcnRMb2FkaW5nPEFjdGl2aXR5TG9jYXRpb24+KHN0YXRlLm1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9ucz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlMb2NhdGlvbj4ocGF5bG9hZC5lcnJvcilcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLmxvY2F0aW9ucylcbiAgICB9XG4gIH0pKSxcblxuICAvLyBNZW1iZXIgT3BlbiBBY3Rpdml0eSBUeXBlc1xuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5VHlwZXM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdFN0YXJ0TG9hZGluZzxBY3Rpdml0eVR5cGU+KHN0YXRlLm1lbWJlck9wZW5BY3Rpdml0eVR5cGVzPy52YWx1ZSlcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdHlUeXBlczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlUeXBlPihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eVR5cGVzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLnR5cGVzKVxuICAgIH1cbiAgfSkpLFxuXG4gIG9uKGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUFjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiB7dGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nfSB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdD8uYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCB8fCBzdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZS5yZXN1bHRzKSB7XG4gICAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZVxuICAgICAgfTtcblxuICAgICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdD8uYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgICBjdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0Py5hY3Rpdml0eSxcbiAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiBjdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0Py5hY3Rpdml0eS5pbnZpdGVkX21lbWJlcnMuZmlsdGVyKGFjdGl2aXR5SW52aXRlID0+IGFjdGl2aXR5SW52aXRlLmlkICE9PSBwYXlsb2FkLmFjdGl2aXR5SW52aXRlSWQpIHx8IFtdXG4gICAgICAgICAgICB9IGFzIEFjdGl2aXR5XG4gICAgICAgICAgfSBhcyBUZWFtQWN0aXZpdHlJbnRlcmZhY2VcbiAgICAgICAgfSBhcyBSZXRyaWV2ZVJlc3VsdEludGVyZmFjZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZT8ucmVzdWx0cykge1xuICAgICAgICBjdXJyZW50U3RhdGUudGVhbUV2ZW50cyA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cyxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlLFxuICAgICAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlLnJlc3VsdHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmFjdGl2aXR5X2lkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiBldmVudC5pbnZpdGVkX21lbWJlcnM/LmZpbHRlcigoYWN0aXZpdHlJbnZpdGU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiBhY3Rpdml0eUludml0ZS5pZCAhPT0gcGF5bG9hZC5hY3Rpdml0eUludml0ZUlkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICB9KSBhcyBBcnJheTxFdmVudD5cbiAgICAgICAgICB9IGFzIExpc3RSZXN1bHRJbnRlcmZhY2U8RXZlbnQ+XG4gICAgICAgIH0gYXMgVGVhbUNhbGVuZGFyRXZlbnRSZXN1bHRJbnRlcmZhY2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBUZWFtIEFjdGl2aXRpZXNcbiAgb24obGlzdFRlYW1BY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIHRlYW1FdmVudHM6IHtcbiAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUudGVhbUV2ZW50cz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RUZWFtQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdGVhbUV2ZW50czoge1xuICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdExvYWRGYWlsdXJlPEV2ZW50PihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0VGVhbUFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIHRlYW1FdmVudHM6IHtcbiAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLnJlc3VsdHMpXG4gICAgfVxuICB9KSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBQYXJ0aWNpcGFudHNcbiAgb24obGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgcGFydGljaXBhbnRzOiBwYXlsb2FkLnJlc3VsdHNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBHdWVzdHNcbiAgb24obGlzdFRlYW1BY3Rpdml0eUd1ZXN0c1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHsgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsIGd1ZXN0czogcGF5bG9hZC5yZXN1bHRzIH0sXG4gICAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICBvbihhZGRUZWFtQWN0aXZpdHlHdWVzdFN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgZ3Vlc3RzOiBbLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuZ3Vlc3RzLCBwYXlsb2FkLmd1ZXN0XVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICBvbih1cGRhdGVUZWFtQWN0aXZpdHlHdWVzdFN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgZ3Vlc3RzOiBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5ndWVzdHMubWFwKGcgPT5cbiAgICAgICAgICAgICAgZy5pZCA9PT0gcGF5bG9hZC5ndWVzdC5pZCA/IHBheWxvYWQuZ3Vlc3QgOiBnXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIG9uKGRlbGV0ZVRlYW1BY3Rpdml0eUd1ZXN0U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICBndWVzdHM6IHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0Lmd1ZXN0cy5maWx0ZXIoZyA9PiBnLmlkICE9PSBwYXlsb2FkLmd1ZXN0SWQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIE1lbWJlciBXYWl0aW5nIExpc3QgRW50cnlcbiAgb24ocmV0cmlldmVNZW1iZXJXYWl0aW5nTGlzdEVudHJ5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlcldhaXRpbmdMaXN0RW50cnk6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRNZW1iZXJXYWl0aW5nTGlzdEVudHJ5KSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyV2FpdGluZ0xpc3RFbnRyeUZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyV2FpdGluZ0xpc3RFbnRyeTogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eVdhaXRpbmdMaXN0RW50cnk+KHBheWxvYWQpIH0pKSxcbiAgb24ocmV0cmlldmVNZW1iZXJXYWl0aW5nTGlzdEVudHJ5U3VjY2Vzc0FjdGlvbiwgam9pbldhaXRpbmdMaXN0U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJXYWl0aW5nTGlzdEVudHJ5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcbiAgLy8gUmVmbGVjdCB0aGUgcXVldWUgY2hhbmdlIG9uIHRoZSBjYWxlbmRhciBldmVudCBzdHJhaWdodCBhd2F5IChjb3ZlcnMgb3BlbiBhY3Rpdml0aWVzLCB3aG9zZVxuICAvLyByZXNvdXJjZSBmZXRjaCBkb2VzIG5vdCBjYXJyeSBhIHJlbGlhYmxlIG1lbWJlciBpZCksIHVzaW5nIHRoZSBhdXRob3JpdGF0aXZlIGpvaW4gZW50cnkuXG4gIG9uKGpvaW5XYWl0aW5nTGlzdFN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHNldE1lbWJlckV2ZW50V2FpdGxpc3Qoc3RhdGUsIHBheWxvYWQubWVtYmVyX2lkLCBwYXlsb2FkLmFjdGl2aXR5X2lkLCB7XG4gICAgYWxsb3dfd2FpdGluZ19saXN0OiB0cnVlLFxuICAgIG1lbWJlcl93YWl0aW5nX2xpc3Rfc3RhdHVzOiBwYXlsb2FkLnN0YXR1cyxcbiAgICBtZW1iZXJfd2FpdGluZ19saXN0X3Bvc2l0aW9uOiBwYXlsb2FkLnBvc2l0aW9uLFxuICAgIHdhaXRpbmdfbGlzdF9vZmZlcl9leHBpcmVzX2F0OiBwYXlsb2FkLm9mZmVyX2V4cGlyZXNfYXQsXG4gICAgd2FpdGluZ19saXN0X29mZmVyZWRfc2xvdHM6IHBheWxvYWQub2ZmZXJlZF9zbG90cyxcbiAgfSkpLFxuICBvbihsZWF2ZVdhaXRpbmdMaXN0U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGNvbnN0IGNsZWFyZWQgPSBzZXRNZW1iZXJFdmVudFdhaXRsaXN0KHN0YXRlLCBwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmFjdGl2aXR5SWQsIHtcbiAgICAgIGFsbG93X3dhaXRpbmdfbGlzdDogdHJ1ZSxcbiAgICAgIG1lbWJlcl93YWl0aW5nX2xpc3Rfc3RhdHVzOiBudWxsLFxuICAgICAgbWVtYmVyX3dhaXRpbmdfbGlzdF9wb3NpdGlvbjogbnVsbCxcbiAgICAgIHdhaXRpbmdfbGlzdF9vZmZlcl9leHBpcmVzX2F0OiBudWxsLFxuICAgICAgd2FpdGluZ19saXN0X29mZmVyZWRfc2xvdHM6IG51bGwsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgLi4uY2xlYXJlZCwgY3VycmVudE1lbWJlcldhaXRpbmdMaXN0RW50cnk6IHVuZGVmaW5lZCB9O1xuICB9KSxcblxuICAvLyBUZWFtIEFjdGl2aXR5IFdhaXRpbmcgTGlzdFxuICBvbihsb2FkVGVhbUFjdGl2aXR5V2FpdGluZ0xpc3RTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdCAmJiBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIHdhaXRpbmdMaXN0OiBwYXlsb2FkLmVudHJpZXMsXG4gICAgICAgICAgICB3YWl0bGlzdE91dHN0YW5kaW5nT2ZmZXI6IHBheWxvYWQub3V0c3RhbmRpbmdPZmZlclxuICAgICAgICAgIH0sXG4gICAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBUZWFtIExlYWRlciBFeHRyYSBNZW1iZXJzXG4gIG9uKGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgcGF5bG9hZC50ZWFtSWQgPT09IHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LnRlYW0uaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgZXh0cmFNZW1iZXJzOiBwYXlsb2FkLnJlc3VsdHMsXG4gICAgICAgICAgICBleHRyYU1lbWJlcnNMb2FkZWQ6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBhY3Rpdml0eSBxdWVzdGlvbnNcbiAgb24obGlzdFRlYW1BY3Rpdml0eVF1ZXN0aW9uc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhY3Rpdml0eVF1ZXN0aW9uczoge1xuICAgICAgLi4uc3RhdGUuYWN0aXZpdHlRdWVzdGlvbnMgfHwge30sXG4gICAgICBbcGF5bG9hZC50ZWFtSWRdOiBsaXN0U3RhcnRMb2FkaW5nKHN0YXRlLmFjdGl2aXR5UXVlc3Rpb25zPy5bcGF5bG9hZC50ZWFtSWRdKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0VGVhbUFjdGl2aXR5UXVlc3Rpb25zRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhY3Rpdml0eVF1ZXN0aW9uczoge1xuICAgICAgLi4uc3RhdGUuYWN0aXZpdHlRdWVzdGlvbnMgfHwge30sXG4gICAgICBbcGF5bG9hZC50ZWFtSWRdOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlRdWVzdGlvbj4ocGF5bG9hZC5lcnJvcilcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdFRlYW1BY3Rpdml0eVF1ZXN0aW9uc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgYWN0aXZpdHlRdWVzdGlvbnM6IHtcbiAgICAgIC4uLnN0YXRlLmFjdGl2aXR5UXVlc3Rpb25zIHx8IHt9LFxuICAgICAgW3BheWxvYWQudGVhbUlkXTogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQucmVzdWx0cylcbiAgICB9XG4gIH0pKSxcblxuICAvLyBUZWFtIEFjdGl2aXR5IEFjdGlvbnNcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5KSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZEZhaWx1cmU8VGVhbUFjdGl2aXR5SW50ZXJmYWNlPihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHBheWxvYWQuYWN0aXZpdHkuaWQgPT09IHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkICYmIHBheWxvYWQudGVhbUlkID09PSBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC50ZWFtLmlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGFjdGl2aXR5OiBwYXlsb2FkLmFjdGl2aXR5XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIFRlYW0gQWN0aXZpdHkgU2V0dGluZ3NcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc0FjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGFjdGl2aXR5U2V0dGluZ3M6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmFjdGl2aXR5U2V0dGluZ3MpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eVNldHRpbmdzOiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5U2V0dGluZ3M+KHBheWxvYWQpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eVNldHRpbmdzOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBUZWFtIEFjdGl2aXR5IFF1ZXN0aW9uXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5UXVlc3Rpb25BY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5UXVlc3Rpb246IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHlRdWVzdGlvbikgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7Li4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHlRdWVzdGlvbjogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eVF1ZXN0aW9uPihwYXlsb2FkKX0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlRdWVzdGlvblN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwge3BheWxvYWR9KSA9PiAoey4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5UXVlc3Rpb246IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCl9KSksXG5cbiAgLy8gVGVhbSBEZWZhdWx0IEFjdGl2aXR5IFNldHRpbmdzXG4gIG9uKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgbmV3VGVhbUFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5uZXdUZWFtQWN0aXZpdHkpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgbmV3VGVhbUFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5PihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIG5ld1RlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gVXBkYXRlIE1lbWJlciBBY3Rpdml0eSBJbnZpdGVcbiAgb24odXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZShzdGF0ZSwgcGF5bG9hZCkpLFxuXG4gIC8vIFVwZGF0ZSBNZW1iZXIgT3BlbiBBY3Rpdml0eVxuICBvbih1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKVxuICAgIH07XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZT8ucmVzdWx0KSB7XG4gICAgICBjb25zdCBleGlzdGluZ09wZW5BY3Rpdml0aWVzID0gY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLnJlc3VsdC5nZXQocGF5bG9hZC5tZW1iZXJfaWQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmdPcGVuQWN0aXZpdGllcykge1xuICAgICAgICBjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUsXG4gICAgICAgICAgICByZXN1bHQ6IG5ldyBNYXAoY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLnJlc3VsdCkuc2V0KFxuICAgICAgICAgICAgICBwYXlsb2FkLm1lbWJlcl9pZCxcbiAgICAgICAgICAgICAgdXBkYXRlT3BlbkFjdGl2aXRpZXMoZXhpc3RpbmdPcGVuQWN0aXZpdGllcywgcGF5bG9hZClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzPy5yZXN1bHRzKSB7XG4gICAgICBjdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzID0ge1xuICAgICAgICAuLi5jdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzLFxuICAgICAgICByZXN1bHRzOiBjdXJyZW50U3RhdGUuYWN0aXZpdHlJbnZpdGVzLnJlc3VsdHMubWFwKChpbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gICAgICAgICAgaWYgKGludml0ZS5hY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgICAgICAgY29uc3QgaW52aXRlZE1lbWJlciA9IHBheWxvYWQuaW52aXRlZF9tZW1iZXJzLmZpbmQoKGludml0ZWRNZW1iZXI6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiBpbnZpdGVkTWVtYmVyLmlkID09PSBpbnZpdGUuaWQpO1xuXG4gICAgICAgICAgICBpZiAoaW52aXRlZE1lbWJlcikge1xuICAgICAgICAgICAgICByZXR1cm4gbmV3IEFjdGl2aXR5SW52aXRlKFxuICAgICAgICAgICAgICAgIGludml0ZS5pZCxcbiAgICAgICAgICAgICAgICBpbnZpdGUuYWN0aXZpdHksXG4gICAgICAgICAgICAgICAgaW52aXRlZE1lbWJlci5jb21tZW50LFxuICAgICAgICAgICAgICAgIGludml0ZS5jcmVhdGVkLFxuICAgICAgICAgICAgICAgIGludml0ZS5oYXNfdW5wYWlkX2ludm9pY2VzLFxuICAgICAgICAgICAgICAgIGludml0ZWRNZW1iZXIubGFzdF9pbnZpdGUgfHwgJycgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIGludml0ZS5sZWFkZXIsXG4gICAgICAgICAgICAgICAgaW52aXRlLm1lbWJlcixcbiAgICAgICAgICAgICAgICBpbnZpdGUubWVtYmVyX2ludm9pY2VfaWQsXG4gICAgICAgICAgICAgICAgaW52aXRlZE1lbWJlci5uZXh0X2ludml0ZSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICBpbnZpdGUucGF5bWVudF9saW5rLFxuICAgICAgICAgICAgICAgIGludml0ZS5wdWJsaWNfcGF5bWVudF9saW5rLFxuICAgICAgICAgICAgICAgIGludml0ZS5yZW1pbmRlZCxcbiAgICAgICAgICAgICAgICBpbnZpdGVkTWVtYmVyLnJlc3BvbnNlX2RhdGUsXG4gICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgaW52aXRlZE1lbWJlci5zdGF0dXMsXG4gICAgICAgICAgICAgICAgaW52aXRlLnRva2VuLFxuICAgICAgICAgICAgICAgIGludml0ZS51bnBhaWRfaW52b2ljZXMsXG4gICAgICAgICAgICAgICAgaW52aXRlLnVwZGF0ZWQsXG4gICAgICAgICAgICAgICAgaW52aXRlLmd1ZXN0cyxcbiAgICAgICAgICAgICAgICBpbnZpdGUubWVtYmVyX2ludm9pY2VcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGludml0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGludml0ZTtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZU1lbWJlckV2ZW50c0Zyb21PcGVuQWN0aXZpdHkoY3VycmVudFN0YXRlLCBwYXlsb2FkKTtcbiAgfSksXG5cbiAgLy8gUmVtb3ZlIG1lbWJlciBvcGVuIGFjdGl2aXR5XG4gIG9uKHJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7IHBheWxvYWQgfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmd9fSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZVxuICAgIH07XG5cbiAgICBpZiAoc3RhdGUuY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eT8ucmVzdWx0Py5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkKSB7XG4gICAgICBjdXJyZW50U3RhdGUuY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZT8ucmVzdWx0KSB7XG4gICAgICBjb25zdCBleGlzdGluZ09wZW5BY3Rpdml0aWVzID0gY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLnJlc3VsdC5nZXQocGF5bG9hZC5tZW1iZXJJZCk7XG5cbiAgICAgIGlmIChleGlzdGluZ09wZW5BY3Rpdml0aWVzKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRPcGVuQWN0aXZpdGllcyA9IGV4aXN0aW5nT3BlbkFjdGl2aXRpZXMubWFwKFxuICAgICAgICAgIChvcGVuQWN0aXZpdHk6IE9wZW5BY3Rpdml0eSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9wZW5BY3Rpdml0eS5pZCA9PT0gcGF5bG9hZC5hY3Rpdml0eUlkICYmIG9wZW5BY3Rpdml0eS5tZW1iZXJfaWQgPT09IHBheWxvYWQubWVtYmVySWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPcGVuQWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmlkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5hY3Rpdml0eV9ncm91cF9pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuYWN0aXZpdHlfdHlwZV9pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuY2x1Yl9pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubG9jYXRpb25faWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lbWJlcl9pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkudGVhbV9pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuYWN0aXZpdHlfbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFjdGl2aXR5X3R5cGVfbmFtZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuYWxsb3dfbWF5YmUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmNhbGVuZGFyX25hbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmNvbW1lbnRfcmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmNyZWF0ZWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmN1cnJlbnRfbnVtX2F0dGVuZGFudHMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmRheSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZGVmYXVsdF9mZWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmRlZmF1bHRfZmVlX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZW5kLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5lbmRfdGltZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZmlsZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaGFzX3VucGFpZF9pbnZvaWNlcyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRhdGlvbl90ZXh0LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfZmlyc3RfZGF5cyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX2dyb3VwcyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX2hpZGVfYmVmb3JlX3NlbnQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9yZW1pbmQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9yZW1pbmRfcmVjZWl2ZXJzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfc2Vjb25kX2RheXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlZF9tZW1iZXJzLmZpbHRlcigoaW52aXRlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gaW52aXRlLm1lbWJlcl9pZCAhPT0gcGF5bG9hZC5tZW1iZXJJZCksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmxhc3RfcmVzcG9uc2VfZGF0ZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubG9jYXRpb25fbmFtZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWF4X251bV9hdHRlbmRhbnRzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tYXhfbnVtX2F0dGVuZGFudHNfdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF9wbGFjZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF90aW1lLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZWV0X3VwX3RpbWVfZGlzcGxheSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF90aW1lX3Nob3csXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lbWJlcl9pZHMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lbWJlcl9pbnZvaWNlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfbmFtZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3Blbl9hY3Rpdml0eSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3B0aW9uYWxfZmVlcyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3B0aW9uYWxfZmVlX3JlcXVpcmVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5vcHRpb25hbF9mZWVfdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucGF5bWVudF9saW5rLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5wdWJsaWNfcGF5bWVudF9saW5rLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5xdWVzdGlvbnMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnJlcGVhdCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucmVwZWF0X251bSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucmVwZWF0X3RvX2RheSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucmVwZWF0X3R5cGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnNlcnZpY2VfZmVlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5zZXJ2aWNlX2ZlZV9pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc2hvd19vdGhlcl9pbnZpdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5zdGFydCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc3RhcnRfdGltZSxcbiAgICAgICAgICAgICAgICAnd2FpdGluZycsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnRpdGxlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51bnBhaWRfaW52b2ljZXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnVwZGF0ZWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnVzZV9pbnZpdGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnVwZGF0ZV9yZXBlYXRpbmcsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFsbG93X2d1ZXN0cyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubnVtX2d1ZXN0c1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb3BlbkFjdGl2aXR5O1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUsXG4gICAgICAgICAgICByZXN1bHQ6IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxPcGVuQWN0aXZpdHk+PihjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUucmVzdWx0KS5zZXQocGF5bG9hZC5tZW1iZXJJZCwgdXBkYXRlZE9wZW5BY3Rpdml0aWVzKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFN0YXRlXG4gIH0pLFxuXG4gIC8vIFVwZGF0ZSBUZWFtIEFjdGl2aXR5XG4gIG9uKHVwZGF0ZVRlYW1BY3Rpdml0eUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkpIH0pKSxcbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZEZhaWx1cmU8VGVhbUFjdGl2aXR5SW50ZXJmYWNlPihwYXlsb2FkKSB9KSksXG4gIG9uKHVwZGF0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHBheWxvYWQuaWQgPT09IHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGFjdGl2aXR5OiBwYXlsb2FkXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIFRlYW0gQWN0aXZpdHkgUXVlc3Rpb25cbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25BY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5UXVlc3Rpb246IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHlRdWVzdGlvbikgfSkpLFxuICBvbih1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvbkZhaWx1cmVBY3Rpb24sIChzdGF0ZSwge3BheWxvYWR9KSA9PiAoey4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5UXVlc3Rpb246IHJldHJpZXZlTG9hZEZhaWx1cmU8QWN0aXZpdHlRdWVzdGlvbj4ocGF5bG9hZCl9KSksXG4gIG9uKHVwZGF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7Li4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHlRdWVzdGlvbjogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKX0pKSxcblxuICAvLyBSZXNlbmQgdGVhbSBhY3Rpdml0eSBpbnZpdGVcbiAgb24ocmVzZW5kVGVhbUFjdGl2aXR5TWVtYmVySW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiBBY3Rpdml0eUludml0ZX0pID0+IHVwZGF0ZVRlYW1BY3Rpdml0eUludml0ZShzdGF0ZSwgcGF5bG9hZCkpLFxuXG4gIC8vIFVwZGF0ZSBUZWFtIGFjdGl2aXR5IGludml0ZVxuICBvbih1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUsIHtwYXlsb2FkfToge3BheWxvYWQ6IE1lbWJlckFjdGl2aXR5SW52aXRlfSkgPT4gdXBkYXRlVGVhbUFjdGl2aXR5SW52aXRlKHN0YXRlLCBwYXlsb2FkKSksXG5cbiAgLy8gRGVsZXRlIFRlYW0gQWN0aXZpdHlcbiAgb24oZGVsZXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PiB7XG4gICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY3VycmVudFRlYW1BY3Rpdml0eTogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIGlmIChjdXJyZW50U3RhdGUudGVhbUV2ZW50cz8udmFsdWU/LnJlc3VsdHMpIHtcbiAgICAgIGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzID0ge1xuICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cyxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cy52YWx1ZSxcbiAgICAgICAgICByZXN1bHRzOiBjdXJyZW50U3RhdGUudGVhbUV2ZW50cy52YWx1ZS5yZXN1bHRzLmZpbHRlcigoZXZlbnQ6IEV2ZW50KSA9PiBldmVudC5pZCAhPT0gcGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gIH0pLFxuXG4gIG9uKGRlbGV0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiB7dGVhbUlkOiBzdHJpbmcsIHF1ZXN0aW9uSWQ6IHN0cmluZ319KSA9PiB7XG4gICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY3VycmVudFRlYW1BY3Rpdml0eVF1ZXN0aW9uOiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5hY3Rpdml0eVF1ZXN0aW9ucyAmJiBzdGF0ZS5hY3Rpdml0eVF1ZXN0aW9ucz8uW3BheWxvYWQudGVhbUlkXSkge1xuICAgICAgY3VycmVudFN0YXRlLmFjdGl2aXR5UXVlc3Rpb25zW3BheWxvYWQudGVhbUlkXSA9IHtcbiAgICAgICAgLi4uc3RhdGUuYWN0aXZpdHlRdWVzdGlvbnNbcGF5bG9hZC50ZWFtSWRdLFxuICAgICAgICByZXN1bHRzOiBzdGF0ZS5hY3Rpdml0eVF1ZXN0aW9uc1twYXlsb2FkLnRlYW1JZF0ucmVzdWx0cy5maWx0ZXIoKGFjdGl2aXR5UXVlc3Rpb246IEFjdGl2aXR5UXVlc3Rpb24pID0+IGFjdGl2aXR5UXVlc3Rpb24uaWQgIT09IHBheWxvYWQucXVlc3Rpb25JZClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9KSxcblxuICAvLyBDcmVhdGUgVGVhbSBBY3Rpdml0eVxuICBvbihjcmVhdGVUZWFtQWN0aXZpdHlBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5KSB9KSksXG5cbiAgLy8gRmFpbHVyZSBIYW5kbGVyc1xuICBvbihjcmVhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+KHBheWxvYWQpIH0pKSxcbik7XG4iXX0=