@carefirst/library 2.1.0 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,6 +22,7 @@ export const iconsC = [
22
22
  'circle-check',
23
23
  'circle-alert',
24
24
  'direction-switch',
25
+ 'direction-switch-flat',
25
26
  'direction-switch-block',
26
27
  'chat-bubbles',
27
28
  'phone-down',
@@ -54,4 +55,4 @@ export const iconsC = [
54
55
  'retry',
55
56
  ];
56
57
  export const iconColorC = ['primary', 'secondary', 'success', 'warning', 'error', 'white', 'accent'];
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL2ludGVyZmFjZXMvaWNvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLE1BQU07SUFDTixLQUFLO0lBQ0wsU0FBUztJQUNULE1BQU07SUFDTixRQUFRO0lBQ1IsYUFBYTtJQUNiLE9BQU87SUFDUCxVQUFVO0lBQ1YsT0FBTztJQUNQLE9BQU87SUFDUCxVQUFVO0lBQ1YsU0FBUztJQUNULE9BQU87SUFDUCxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osTUFBTTtJQUNOLGVBQWU7SUFDZixlQUFlO0lBQ2YsY0FBYztJQUNkLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsd0JBQXdCO0lBQ3hCLGNBQWM7SUFDZCxZQUFZO0lBQ1osS0FBSztJQUNMLFFBQVE7SUFDUixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHdCQUF3QjtJQUN4QiwwQkFBMEI7SUFDMUIsdUJBQXVCO0lBQ3ZCLDRCQUE0QjtJQUM1Qix5QkFBeUI7SUFDekIsOEJBQThCO0lBQzlCLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLE1BQU07SUFDTixXQUFXO0lBQ1gsZUFBZTtJQUNmLGVBQWU7SUFDZixPQUFPO0NBQ0MsQ0FBQztBQU9YLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQGludGVyZmFjZSAgICAgSWNvbnNUXG4gKiBAZGVzY3JpcHRpb24gICBTaG9ydCBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgY29uc3QgaWNvbnNDID0gW1xuICAnaG9tZScsXG4gICdjb2cnLFxuICAncHJvZmlsZScsXG4gICdzY2FuJyxcbiAgJ3BlcnNvbicsXG4gICdhcHBvaW50bWVudCcsXG4gICdjbG9jaycsXG4gICdjYWxlbmRhcicsXG4gICdlbWFpbCcsXG4gICdwaG9uZScsXG4gICdzaWduLW91dCcsXG4gICdzaWduLWluJyxcbiAgJ2Nsb3NlJyxcbiAgJ2NoZWNrLW1hcmsnLFxuICAncmF0aW5nLXN0YXItYmxhbmsnLFxuICAncmF0aW5nLXN0YXItZmlsbGVkJyxcbiAgJ2JhY2stYXJyb3cnLFxuICAnbG9jaycsXG4gICdzaG93LXBhc3N3b3JkJyxcbiAgJ2hpZGUtcGFzc3dvcmQnLFxuICAnY2lyY2xlLWNoZWNrJyxcbiAgJ2NpcmNsZS1hbGVydCcsXG4gICdkaXJlY3Rpb24tc3dpdGNoJyxcbiAgJ2RpcmVjdGlvbi1zd2l0Y2gtYmxvY2snLFxuICAnY2hhdC1idWJibGVzJyxcbiAgJ3Bob25lLWRvd24nLFxuICAnbWljJyxcbiAgJ25vLW1pYycsXG4gICdidXR0b24tZm9yd2FyZC1hcnJvdycsXG4gICdidXR0b24tY2hlY2stYm94JyxcbiAgJ3NvY2lhbC1tZWRpYS13aGF0c2FwcCcsXG4gICdzb2NpYWwtbWVkaWEtZmFjZWJvb2snLFxuICAnc29jaWFsLW1lZGlhLWxpbmtlZGluJyxcbiAgJ3NvY2lhbC1tZWRpYS1pbnN0YWdyYW0nLFxuICAnc29jaWFsLW1lZGlhLWdvb2dsZS1tYWlsJyxcbiAgJ2luc3RhbnQtdmlkZW8tc2VydmljZScsXG4gICdpbnN0YW50LXRlbGVwaG9uaWMtc2VydmljZScsXG4gICdzY2hlZHVsZWQtdmlkZW8tc2VydmljZScsXG4gICdzY2hlZHVsZWQtdGVsZXBob25pYy1zZXJ2aWNlJyxcbiAgJ3ZpdGFsLXNjYW4tc2VydmljZScsXG4gICdvcGVuLWJhY2stYXJyb3cnLFxuICAnb3Blbi1mb3J3YXJkLWFycm93JyxcbiAgJ29wZW4tdXAtYXJyb3cnLFxuICAnb3Blbi1kb3duLWFycm93JyxcbiAgJ3NpbmdsZS1kb2N1bWVudCcsXG4gICdsaWdodG5pbmcnLFxuICAnbWljcm9zb2Z0LTM2NScsXG4gICd1c2VyLWRlcGVuZGVudCcsXG4gICdwbHVzJyxcbiAgJ2Nsb3NlLWJveCcsXG4gICdzcGVlY2gtYnViYmxlJyxcbiAgJ2NhbWVyYS1zd2l0Y2gnLFxuICAncmV0cnknLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEljb25zVCA9ICh0eXBlb2YgaWNvbnNDKVtudW1iZXJdO1xuXG4vKio9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBAaW50ZXJmYWNlICAgICBJY29uQ29sb3JUXG4gKiBAZGVzY3JpcHRpb24gICBBbGwgYXZhaWxhYmxlIGNvbG9ycyBpbiBDU1MgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgaWNvbkNvbG9yQyA9IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAnc3VjY2VzcycsICd3YXJuaW5nJywgJ2Vycm9yJywgJ3doaXRlJywgJ2FjY2VudCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWNvbkNvbG9yVCA9ICh0eXBlb2YgaWNvbkNvbG9yQylbbnVtYmVyXTtcbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL2ludGVyZmFjZXMvaWNvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLE1BQU07SUFDTixLQUFLO0lBQ0wsU0FBUztJQUNULE1BQU07SUFDTixRQUFRO0lBQ1IsYUFBYTtJQUNiLE9BQU87SUFDUCxVQUFVO0lBQ1YsT0FBTztJQUNQLE9BQU87SUFDUCxVQUFVO0lBQ1YsU0FBUztJQUNULE9BQU87SUFDUCxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osTUFBTTtJQUNOLGVBQWU7SUFDZixlQUFlO0lBQ2YsY0FBYztJQUNkLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsdUJBQXVCO0lBQ3ZCLHdCQUF3QjtJQUN4QixjQUFjO0lBQ2QsWUFBWTtJQUNaLEtBQUs7SUFDTCxRQUFRO0lBQ1Isc0JBQXNCO0lBQ3RCLGtCQUFrQjtJQUNsQix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIsMEJBQTBCO0lBQzFCLHVCQUF1QjtJQUN2Qiw0QkFBNEI7SUFDNUIseUJBQXlCO0lBQ3pCLDhCQUE4QjtJQUM5QixvQkFBb0I7SUFDcEIsaUJBQWlCO0lBQ2pCLG9CQUFvQjtJQUNwQixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixXQUFXO0lBQ1gsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixNQUFNO0lBQ04sV0FBVztJQUNYLGVBQWU7SUFDZixlQUFlO0lBQ2YsT0FBTztDQUNDLENBQUM7QUFPWCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEBpbnRlcmZhY2UgICAgIEljb25zVFxuICogQGRlc2NyaXB0aW9uICAgU2hvcnQgZGVzY3JpcHRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGljb25zQyA9IFtcbiAgJ2hvbWUnLFxuICAnY29nJyxcbiAgJ3Byb2ZpbGUnLFxuICAnc2NhbicsXG4gICdwZXJzb24nLFxuICAnYXBwb2ludG1lbnQnLFxuICAnY2xvY2snLFxuICAnY2FsZW5kYXInLFxuICAnZW1haWwnLFxuICAncGhvbmUnLFxuICAnc2lnbi1vdXQnLFxuICAnc2lnbi1pbicsXG4gICdjbG9zZScsXG4gICdjaGVjay1tYXJrJyxcbiAgJ3JhdGluZy1zdGFyLWJsYW5rJyxcbiAgJ3JhdGluZy1zdGFyLWZpbGxlZCcsXG4gICdiYWNrLWFycm93JyxcbiAgJ2xvY2snLFxuICAnc2hvdy1wYXNzd29yZCcsXG4gICdoaWRlLXBhc3N3b3JkJyxcbiAgJ2NpcmNsZS1jaGVjaycsXG4gICdjaXJjbGUtYWxlcnQnLFxuICAnZGlyZWN0aW9uLXN3aXRjaCcsXG4gICdkaXJlY3Rpb24tc3dpdGNoLWZsYXQnLFxuICAnZGlyZWN0aW9uLXN3aXRjaC1ibG9jaycsXG4gICdjaGF0LWJ1YmJsZXMnLFxuICAncGhvbmUtZG93bicsXG4gICdtaWMnLFxuICAnbm8tbWljJyxcbiAgJ2J1dHRvbi1mb3J3YXJkLWFycm93JyxcbiAgJ2J1dHRvbi1jaGVjay1ib3gnLFxuICAnc29jaWFsLW1lZGlhLXdoYXRzYXBwJyxcbiAgJ3NvY2lhbC1tZWRpYS1mYWNlYm9vaycsXG4gICdzb2NpYWwtbWVkaWEtbGlua2VkaW4nLFxuICAnc29jaWFsLW1lZGlhLWluc3RhZ3JhbScsXG4gICdzb2NpYWwtbWVkaWEtZ29vZ2xlLW1haWwnLFxuICAnaW5zdGFudC12aWRlby1zZXJ2aWNlJyxcbiAgJ2luc3RhbnQtdGVsZXBob25pYy1zZXJ2aWNlJyxcbiAgJ3NjaGVkdWxlZC12aWRlby1zZXJ2aWNlJyxcbiAgJ3NjaGVkdWxlZC10ZWxlcGhvbmljLXNlcnZpY2UnLFxuICAndml0YWwtc2Nhbi1zZXJ2aWNlJyxcbiAgJ29wZW4tYmFjay1hcnJvdycsXG4gICdvcGVuLWZvcndhcmQtYXJyb3cnLFxuICAnb3Blbi11cC1hcnJvdycsXG4gICdvcGVuLWRvd24tYXJyb3cnLFxuICAnc2luZ2xlLWRvY3VtZW50JyxcbiAgJ2xpZ2h0bmluZycsXG4gICdtaWNyb3NvZnQtMzY1JyxcbiAgJ3VzZXItZGVwZW5kZW50JyxcbiAgJ3BsdXMnLFxuICAnY2xvc2UtYm94JyxcbiAgJ3NwZWVjaC1idWJibGUnLFxuICAnY2FtZXJhLXN3aXRjaCcsXG4gICdyZXRyeScsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWNvbnNUID0gKHR5cGVvZiBpY29uc0MpW251bWJlcl07XG5cbi8qKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEBpbnRlcmZhY2UgICAgIEljb25Db2xvclRcbiAqIEBkZXNjcmlwdGlvbiAgIEFsbCBhdmFpbGFibGUgY29sb3JzIGluIENTUyBjbGFzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBpY29uQ29sb3JDID0gWydwcmltYXJ5JywgJ3NlY29uZGFyeScsICdzdWNjZXNzJywgJ3dhcm5pbmcnLCAnZXJyb3InLCAnd2hpdGUnLCAnYWNjZW50J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJY29uQ29sb3JUID0gKHR5cGVvZiBpY29uQ29sb3JDKVtudW1iZXJdO1xuIl19
@@ -136,8 +136,10 @@ export class CFPFormValidators {
136
136
  return { errorMessage: 'No special characters or letters permitted in number' };
137
137
  if (value.length < 12)
138
138
  return { errorMessage: `Length required ${12 - value.length}` };
139
+ if (value.slice(1).startsWith('27') && value.length > 12)
140
+ return { errorMessage: `Length exceeded by ${value.length - 12}` };
139
141
  return null;
140
142
  };
141
143
  }
142
144
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3JzLXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL3V0aWxzL2Zvcm0tdmFsaWRhdG9ycy11dGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLGlCQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUloQyxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLE1BQU0sQ0FBQyxTQUFTLENBQUMseUJBQWlDO1FBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBRTNELE1BQU0sZ0JBQWdCLEdBQTJCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLElBQUksSUFBSSxDQUFDO1lBR3pHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFFdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQztpQkFFOUUsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxLQUFLLEtBQUssZ0JBQWdCLEVBQUUsS0FBSztnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7WUFFeEgsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBUUQsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLENBQUMsT0FBd0IsRUFBMkIs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SUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLENBQUM7WUFDekQsQ0FBQztZQUdELElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUseUVBQXlFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFHcEgsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsc0RBQXNELEVBQUUsQ0FBQztZQUdsRixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRTtnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFFdkYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm0gdmFsaWRhdG9yc1xuICpcbiAqIEBmaWxlICAgICAgICAgIGZvcm0tdmFsaWRhdG9yc1xuICogQGRlc2NyaXB0aW9uICAgVmFyaW91cyBmb3JtIHZhbGlkYXRvcnNcbiAqIEBhdXRob3IgICAgICAgIEphY3F1ZXMgQ29ldHplZVxuICogQHNpbmNlICAgICAgICAgMjAyMiAtIDAxIC0gMjBcbiAqIEB1c2FnZSAgICAgICAgIERpc3BsYXkgXCJlcnJvck1lc3NhZ2VcIiBrZXkgdmFsdWUgYXMgdmFsaWRhdG9yIHJlc3BvbnNlIG1lc3NhZ2VcbiAqL1xuXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgcGFzc3dvcmRWYWxpZGF0b3IgZnJvbSAncGFzc3dvcmQtdmFsaWRhdG9yJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0JztcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG4vLy0tLSBJbnRlcmZhY2VzXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY2xhc3MgQ0ZQRm9ybVZhbGlkYXRvcnMge1xuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGNoZWNrUFNXUmV0eXBlXG4gICAqIEBkZXNjcmlwdGlvbiAgIENoZWNrIGlmIHBhc3N3b3JkcyBtYXRjaFxuICAgKiBAcGFyYW0gICAgICAgICB7c3RyaW5nfSBjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0XG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuY29tcGFyZVRvKCdwYXNzd29yZCcpXG4gICAqL1xuICBzdGF0aWMgY29tcGFyZVRvKGNvbnRyb2xOYW1lVG9DaGVja0FnYWluc3Q6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIC8vLS0tIENvbXBhcmUgY29udHJvbHNcbiAgICAgIGNvbnN0IGNvbnRyb2xUb0NoZWNrVG86IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBjb250cm9sPy5wYXJlbnQ/LmdldChjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0KSB8fCBudWxsO1xuXG4gICAgICAvLy0tLSBDaGVjayBwcmltYXJ5IGNvbnRyb2wgdmFsdWVcbiAgICAgIGlmICghY29udHJvbFRvQ2hlY2tUbz8udmFsdWUpIHJldHVybiB7IGVycm9yTWVzc2FnZTogYFBhc3N3b3JkIFJlcXVpcmVkYCB9O1xuICAgICAgLy8tLS0gQ2hlY2sgc2Vjb25kYXJ5IGNvbnRyb2wgdmFsdWVcbiAgICAgIGVsc2UgaWYgKCFjb250cm9sLnZhbHVlKSByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBQYXNzd29yZCBjb25maXJtYXRpb24gcmVxdWlyZWRgIH07XG4gICAgICAvLy0tLSBDb21wYXJlIGNvbnRyb2xzXG4gICAgICBlbHNlIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2w/LnZhbHVlICE9PSBjb250cm9sVG9DaGVja1RvPy52YWx1ZSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiBgUGFzc3dvcmRzIGRvIG5vdCBtYXRjaGAgfTtcblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgYXNQYXNzd29yZFxuICAgKiBAZGVzY3JpcHRpb24gICBWYWxpZGF0ZSBjb250cm9sIGFzIHBhc3N3b3JkXG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuYXNQYXNzd29yZCgpXG4gICAqL1xuICBzdGF0aWMgYXNQYXNzd29yZCgpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBzY2hlbWEgPSBuZXcgcGFzc3dvcmRWYWxpZGF0b3IoKTtcblxuICAgICAgLy8tLS0gU2V0dXAgcGFzc3dvcmQgcmVxdWlyZW1lbnRzXG4gICAgICBzY2hlbWFcbiAgICAgICAgLy8tLS0gTWluaW11bSBsZW5ndGggOFxuICAgICAgICAuaXMoKVxuICAgICAgICAubWluKDgsICdNaW5pbXVtIG9mIDggY2hhcmFjdGVycycpXG4gICAgICAgIC8vLS0tIE1heGltdW0gbGVuZ3RoIDUwXG4gICAgICAgIC5pcygpXG4gICAgICAgIC5tYXgoMzAsICdNYXhpbXVtIG9mIDMwIGNoYXJhY3RlcnMnKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgdXBwZXJjYXNlIGxldHRlcnNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC51cHBlcmNhc2UodW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIFVQUEVSQ0FTRSBjaGFyYWN0ZXInKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgbG93ZXJjYXNlIGxldHRlcnNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC5sb3dlcmNhc2UodW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIGxvd2VyY2FzZSBjaGFyYWN0ZXInKVxuICAgICAgICAvLy0tLSBNdXN0IGhhdmUgYXQgbGVhc3QgMSBkaWdpdHNcbiAgICAgICAgLmhhcygpXG4gICAgICAgIC5kaWdpdHModW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIGRpZ2l0JylcbiAgICAgICAgLy8tLS0gU3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAuc3ltYm9scyh1bmRlZmluZWQsICdBdCBsZWFzdCBvbmUgc3BlY2lhbCBjaGFyYWN0ZXInKTtcblxuICAgICAgLy8tLS0gVmFsaWRhdGUgc3RyaW5nXG4gICAgICBjb25zdCBpblZhbGlkID0gc2NoZW1hLnZhbGlkYXRlKGNvbnRyb2wudmFsdWUsIHsgZGV0YWlsczogdHJ1ZSB9KSBhcyB7XG4gICAgICAgIHZhbGlkYXRpb246IHN0cmluZztcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgICBhcmd1bWVudHM/OiBudW1iZXI7XG4gICAgICB9W107XG5cbiAgICAgIGNvbnN0IHJldHVyblJlc3BvbnNlOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHt9O1xuICAgICAgaW5WYWxpZC5mb3JFYWNoKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm5SZXNwb25zZVsncGFzc3dvcmQtJyArIGVycm9yLnZhbGlkYXRpb25dID0gZXJyb3IubWVzc2FnZTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGluVmFsaWQubGVuZ3RoID8gcmV0dXJuUmVzcG9uc2UgOiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGFzRW1haWxcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCBhcyBlbWFpbFxuICAgKiBAcGFyYW0gICAgICAgICB7dHJ1ZX0gY2FuQmVFbXB0eVxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmFzRW1haWwodHJ1ZT8pXG4gICAqL1xuICBzdGF0aWMgYXNFbWFpbChjYW5CZUVtcHR5PzogdHJ1ZSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCBzZXRFcnJvcnMgPSBudWxsO1xuICAgICAgY29uc3QgZW1haWxSZWdFeCA9IG5ldyBSZWdFeHAoJ15bXFxcXHctLl0rQFtcXFxcd10rXFxcXC5bXFxcXHddKycpO1xuXG4gICAgICAvLy0tLSBDaGVjayBpZiBlbWFpbCBjYW4gYmUgZW1wdHlcbiAgICAgIGlmIChjYW5CZUVtcHR5ICYmIChjb250cm9sLnZhbHVlID09PSBudWxsIHx8IGNvbnRyb2wudmFsdWUgPT09ICcnKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8tLS0gVGVzdCBSZWdFeHBcbiAgICAgIGlmICghKGNvbnRyb2wudmFsdWUgJiYgZW1haWxSZWdFeC50ZXN0KGNvbnRyb2wudmFsdWUpICYmIHR5cGVvZiBjb250cm9sLnZhbHVlID09PSAnc3RyaW5nJyAmJiAhY29udHJvbC52YWx1ZS5pbmNsdWRlcygnICcpKSkge1xuICAgICAgICBzZXRFcnJvcnMgPSB7IGVycm9yTWVzc2FnZTogYE5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3NgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZXRFcnJvcnM7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaXNJblxuICAgKiBAZGVzY3JpcHRpb24gICBWYWxpZGF0ZSBjb250cm9sIHZhbHVlIGlzIHBhcnQgb2YgYSBnaXZlbiBsaXN0XG4gICAqIEBwYXJhbSAgICAgICAgIHsoc3RyaW5nIHwgbnVtYmVyKVtdfSBsaXN0XG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuaXNJbigpXG4gICAqL1xuICBzdGF0aWMgaXNJbihsaXN0OiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgaWYgKCFsaXN0LmluY2x1ZGVzKGNvbnRyb2wudmFsdWUpKSByZXR1cm4geyBlcnJvck1lc3NhZ2U6ICdDb250cm9sIHZhbHVlIG5vdCBwYXJ0IG9mIGVsaWdpYmxlIHZhbHVlcycgfTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlzU0FJRE51bWJlclxuICAgKiBAZGVzY3JpcHRpb24gICBWYWxpZGF0ZSBjb250cm9sIHZhbHVlIGlzIGEgdmFsaWQgUlNBIElEIE51bWJlclxuICAgKiBAcGFyYW0gICAgICAgICB7dHJ1ZX0gY2FuQmVFbXB0eVxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmlzU0FJRE51bWJlcih0cnVlPylcbiAgICovXG4gIHN0YXRpYyBpc1NBSUROdW1iZXIoY2FuQmVFbXB0eT86IHRydWUpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZURhdGUgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSAhPT0gJ3N0cmluZycgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggPCA2KSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gY29udHJvbC52YWx1ZS5zbGljZSgyLCA0KTtcbiAgICAgICAgY29uc3QgZGF5ID0gY29udHJvbC52YWx1ZS5zbGljZSg0LCA2KTtcbiAgICAgICAgaWYgKCttb250aCA8IDAgJiYgK21vbnRoID4gMTMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCtkYXkgPCAwICYmICtkYXkgPiAzMSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIWRheWpzKGNvbnRyb2wudmFsdWUuc2xpY2UoMCwgNiksICdZWU1NREQnLCB0cnVlKS5pc1ZhbGlkKCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjaGVja3N1bSA9ICgpOiBib29sZWFuID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb250cm9sLnZhbHVlICE9PSAnc3RyaW5nJyB8fCBjb250cm9sLnZhbHVlLmxlbmd0aCAhPT0gMTMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IG5TdW0gPSAwOyAvLy0tLSBUb3RhbCBzdW0gb2YgYWxsIHRoZSB2YWx1ZXNcbiAgICAgICAgbGV0IGlzU2Vjb25kID0gZmFsc2U7IC8vLS0tIFRvIGRvdWJsZSBldmVyeSBvdGhlciB2YWx1ZVxuICAgICAgICAvLy0tLSBTdGFydCBmcm9tIHRoZSBlbmRcbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbnRyb2wudmFsdWUubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBjb25zdCB2YWw6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNvbnRyb2wudmFsdWVbaV07XG4gICAgICAgICAgaWYgKCF2YWwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAvLy0tLSBHZXQgbnVtZXJpY2FsIHZhbHVlIGZyb20gYXNjaWkgc3RyaW5nXG4gICAgICAgICAgbGV0IGQ6IG51bWJlciA9IHZhbC5jaGFyQ29kZUF0KDApIC0gJzAnLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgLy8tLS0gRG91YmxlIGV2ZXJ5IG90aGVyIHZhbHVlXG4gICAgICAgICAgaWYgKGlzU2Vjb25kID09IHRydWUpIGQgPSBkICogMjtcbiAgICAgICAgICAvLy0tLSBTdW0gdGhlIHRvdGFsIG9mIHRoZSBkb3VibGVkIHZhbHVlcyBpZiBhdmFpbGFibGVcbiAgICAgICAgICBuU3VtICs9IE1hdGguZmxvb3IoZCAvIDEwKTtcbiAgICAgICAgICBuU3VtICs9IGQgJSAxMDtcbiAgICAgICAgICAvLy0tLSBJbnZlcnNlIHNlY29uZCB0byBkZXRlcm1pbmUgZXZlcnkgb3RoZXIgaW5kZXggdmFsdWVcbiAgICAgICAgICBpc1NlY29uZCA9ICFpc1NlY29uZDtcbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBSZXR1cm4gdGhlIG1vZHVsdXMgMTAgb2YgdGhlIHN1bW1hdGlvblxuICAgICAgICByZXR1cm4gblN1bSAlIDEwID09IDA7XG4gICAgICB9O1xuXG4gICAgICBsZXQgZXJyb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKGNhbkJlRW1wdHkgJiYgKCFjb250cm9sLnZhbHVlIHx8IGNvbnRyb2wudmFsdWU/Lmxlbmd0aCA9PT0gMCkpIHJldHVybiBudWxsO1xuICAgICAgLy8tLS0gc3RyaW5nXG4gICAgICBlbHNlIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSAhPT0gJ3N0cmluZycpIGVycm9yID0gJ0ludmFsaWQgUlNBIElEIE51bWJlcic7XG4gICAgICAvLy0tLSBMZW5ndGggPSAxM1xuICAgICAgZWxzZSBpZiAoY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDEzKSBlcnJvciA9IGBMZW5ndGggcmVxdWlyZWQ6ICR7MTMgLSBjb250cm9sLnZhbHVlLmxlbmd0aH1gO1xuICAgICAgLy8tLS0gVmFsaWRhdGUgZGF0ZVxuICAgICAgZWxzZSBpZiAoIXZhbGlkYXRlRGF0ZSgpKSBlcnJvciA9IGBJbnZhbGlkIGRhdGUgb2YgYmlydGhgO1xuICAgICAgLy8tLS0gQ2l0aXplbnNoaXBcbiAgICAgIGVsc2UgaWYgKCFbJzAnLCAnMSddLmluY2x1ZGVzKGNvbnRyb2wudmFsdWUuc2xpY2UoMTAsIDExKSkpIGVycm9yID0gYEludmFsaWQgY2l0aXplbnNoaXAgdmFsdWVgO1xuICAgICAgLy8tLS0gQ2hlY2tzdW1cbiAgICAgIGVsc2UgaWYgKCFjaGVja3N1bSgpKSBlcnJvciA9IGBJbnZhbGlkIFJTQSBJRCBudW1iZXIgY2hlY2tzdW1gO1xuXG4gICAgICByZXR1cm4gZXJyb3IgPyB7IGVycm9yTWVzc2FnZTogZXJyb3IgfSA6IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaXNWYWxpZERhdGVcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBwYXJ0IG9mIGEgZ2l2ZW4gbGlzdFxuICAgKiBAcGFyYW0gICAgICAgICB7c3RyaW5nIHwgbnVsbH0gbWluRGF0ZVxuICAgKiBAcGFyYW0gICAgICAgICB7c3RyaW5nIHwgbnVsbH0gbWF4RGF0ZVxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmlzVmFsaWREYXRlKCcxOTk5LTAxLTAxJywgJzIwMjAtMDEtMDEnKVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWREYXRlKG1pbkRhdGU6IHN0cmluZyB8IG51bGwsIG1heERhdGU/OiBzdHJpbmcgfCBudWxsKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgLy8tLS0gQ2hlY2sgdG8gc2VlIGlmIGEgaW52YWxpZCBkYXRlIGlzIHJlY2VpdmVkIGxpa2UgKDMxIEZlYilcbiAgICAgIGlmICghZGF5anMobmV3IERhdGUoY29udHJvbC52YWx1ZSkpLmlzVmFsaWQoKSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnVGhlIGdpdmVuIGRhdGUgaXMgbm90IHZhbGlkJyB9O1xuICAgICAgLy8tLS0gQ2hlY2sgZGF0ZSBpcyBub3QgbGVzcyB0aGFuIG1pbkRhdGUgYW5kIGRhdGUgZG9lc24ndCBleGNlZWQgbWF4RGF0ZVxuICAgICAgaWYgKChtaW5EYXRlICYmIGRheWpzKG5ldyBEYXRlKGNvbnRyb2wudmFsdWUpKS5pc0JlZm9yZShtaW5EYXRlKSkgfHwgKG1heERhdGUgJiYgZGF5anMobmV3IERhdGUoY29udHJvbC52YWx1ZSkpLmlzQWZ0ZXIobWF4RGF0ZSkpKVxuICAgICAgICByZXR1cm4geyBlcnJvck1lc3NhZ2U6ICdUaGUgZ2l2ZW4gZGF0ZSBpcyBub3Qgd2l0aGluIHRoZSB2YWxpZCBwYXJhbWV0ZXJzJyB9O1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaXNWYWxpZENlbGxOdW1iZXJcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBhIHZhbGlkIGNlbGxwaG9uZSBudW1iZXIgYW5kIGNvbnRhaW5pbmcgYSB2YWxpZCBkaWFsIGNvZGVcbiAgICogQHBhcmFtICAgICAgICAge3N0cmluZ1tdfSBkaWFsQ29kZXNcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5pc1ZhbGlkQ2VsbE51bWJlcihbJzI3J10pXG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZENlbGxOdW1iZXIoZGlhbENvZGVzPzogc3RyaW5nW10pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gY29udHJvbC52YWx1ZTtcbiAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuXG4gICAgICAvLy0tLSBEZWZhdWx0IHRvIFNvdXRoIEFmcmljYW4gZGlhbCBjb2RlIGlmIG5vbmUgZ2l2ZW5cbiAgICAgIGlmICghZGlhbENvZGVzIHx8ICFkaWFsQ29kZXMubGVuZ3RoKSBkaWFsQ29kZXMgPSBbJzI3J107XG5cbiAgICAgIC8vLS0tIFZhbHVlIG11c3Qgc3RhcnQgd2l0aCBhICtcbiAgICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aCgnKycpKVxuICAgICAgICByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBQbGVhc2Ugc3RhcnQgeW91ciBudW1iZXIgd2l0aCBhICcrJyBmb2xsb3dlZCBieSBhIHZhbGlkIGRpYWwgY29kZSBmb3IgZWcuICske2RpYWxDb2Rlc1swXX1gIH07XG5cbiAgICAgIC8vLS0tIENoZWNrIHZhbGlkIGRpYWwgY29kZVxuICAgICAgaWYgKCFkaWFsQ29kZXMubWFwKChjb2RlKSA9PiB2YWx1ZS5zbGljZSgxKS5zdGFydHNXaXRoKGNvZGUpKS5zb21lKChjb2RlKSA9PiBjb2RlKSkge1xuICAgICAgICByZXR1cm4geyBlcnJvck1lc3NhZ2U6ICdObyB2YWxpZCBkaWFsIGNvZGUgcmVjZWl2ZWQnIH07XG4gICAgICB9XG5cbiAgICAgIC8vLS0tIENoZWNrIG5vIHplcm8gYWZ0ZXIgZGlhbCBjb2RlXG4gICAgICBpZiAoZGlhbENvZGVzLm1hcCgoY29kZSkgPT4gdmFsdWUuc2xpY2UoMSkuc3RhcnRzV2l0aChjb2RlICsgJzAnKSkuc29tZSgoY29kZSkgPT4gY29kZSkpXG4gICAgICAgIHJldHVybiB7IGVycm9yTWVzc2FnZTogYFBsZWFzZSBtYWtlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gMCdzIGJlaGluZCB5b3VyIGRpYWwgY29kZSBmb3IgZWcuICske2RpYWxDb2Rlc1swXX0wYCB9O1xuXG4gICAgICAvLy0tLSBDaGVjayB2YWx1ZSBkb2Vzbid0IGNvbnRhaW4gc3BlY2lhbCBjaGFyYWN0ZXJzIG9yIGxldHRlcnNcbiAgICAgIGlmICh2YWx1ZS5zbGljZShkaWFsQ29kZXMgJiYgZGlhbENvZGVzLmxlbmd0aCA/IDEgOiAwKS5tYXRjaCgvW14wLTldL2cpKVxuICAgICAgICByZXR1cm4geyBlcnJvck1lc3NhZ2U6ICdObyBzcGVjaWFsIGNoYXJhY3RlcnMgb3IgbGV0dGVycyBwZXJtaXR0ZWQgaW4gbnVtYmVyJyB9O1xuXG4gICAgICAvLy0tLSBNaW5pbXVtIGxlbmd0aCBvZiAxMlxuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8IDEyKSByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBMZW5ndGggcmVxdWlyZWQgJHsxMiAtIHZhbHVlLmxlbmd0aH1gIH07XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3JzLXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL3V0aWxzL2Zvcm0tdmFsaWRhdG9ycy11dGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLGlCQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUloQyxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLE1BQU0sQ0FBQyxTQUFTLENBQUMseUJBQWlDO1FBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBRTNELE1BQU0sZ0JBQWdCLEdBQTJCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLElBQUksSUFBSSxDQUFDO1lBR3pHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFFdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQztpQkFFOUUsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxLQUFLLEtBQUssZ0JBQWdCLEVBQUUsS0FBSztnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7WUFFeEgsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBUUQsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFHdkMsTUFBTTtpQkFFSCxFQUFFLEVBQUU7aUJBQ0osR0FBRyxDQUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQztpQkFFakMsRUFBRSxFQUFFO2lCQUNKLEdBQUcsQ0FBQyxFQUFFLEVBQUUsMEJBQTBCLENBQUM7aUJBRW5DLEdBQUcsRUFBRTtpQkFDTCxTQUFTLENBQUMsU0FBUyxFQUFFLGtDQUFrQyxDQUFDO2lCQUV4RCxHQUFHLEVBQUU7aUJBQ0wsU0FBUyxDQUFDLFNBQVMsRUFBRSxrQ0FBa0MsQ0FBQztpQkFFeEQsR0FBRyxFQUFFO2lCQUNMLE1BQU0sQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUM7aUJBRXZDLEdBQUcsRUFBRTtpQkFDTCxPQUFPLENBQUMsU0FBUyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7WUFHeEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUk3RCxDQUFDO1lBRUosTUFBTSxjQUFjLEdBQStCLEVBQUUsQ0FBQztZQUN0RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hCLGNBQWMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakUsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQUNKLENBQUM7SUFTRCxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQWlCO1FBQzlCLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQixNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBRzNELElBQUksVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFHRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVILFNBQVMsR0FBRyxFQUFFLFlBQVksRUFBRSwyQkFBMkIsRUFBRSxDQUFDO1lBQzVELENBQUM7WUFFRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQUM7SUFDSixDQUFDO0lBU0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUF5QjtRQUNuQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsMkNBQTJDLEVBQUUsQ0FBQztZQUN4RyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFTRCxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQWlCO1FBQ25DLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELE1BQU0sWUFBWSxHQUFHLEdBQVksRUFBRTtnQkFDakMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ2hGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUM5RSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQztZQUVGLE1BQU0sUUFBUSxHQUFHLEdBQVksRUFBRTtnQkFDN0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEVBQUU7b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ25GLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDYixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBRXJCLEtBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDbkQsTUFBTSxHQUFHLEdBQXVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELElBQUksQ0FBQyxHQUFHO3dCQUFFLE9BQU8sS0FBSyxDQUFDO29CQUV2QixJQUFJLENBQUMsR0FBVyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRXRELElBQUksUUFBUSxJQUFJLElBQUk7d0JBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRWhDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDM0IsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBRWYsUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUN2QixDQUFDO2dCQUVELE9BQU8sSUFBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDO1lBRUYsSUFBSSxLQUFLLEdBQWtCLElBQUksQ0FBQztZQUNoQyxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7aUJBRTFFLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVE7Z0JBQUUsS0FBSyxHQUFHLHVCQUF1QixDQUFDO2lCQUV2RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEVBQUU7Z0JBQUUsS0FBSyxHQUFHLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFFekYsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFBRSxLQUFLLEdBQUcsdUJBQXVCLENBQUM7aUJBRXJELElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUFFLEtBQUssR0FBRywyQkFBMkIsQ0FBQztpQkFFM0YsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFBRSxLQUFLLEdBQUcsZ0NBQWdDLENBQUM7WUFFL0QsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQVVELE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBc0IsRUFBRSxPQUF1QjtRQUNoRSxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUUzRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLENBQUM7WUFFdEcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0gsT0FBTyxFQUFFLFlBQVksRUFBRSxtREFBbUQsRUFBRSxDQUFDO1lBQy9FLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQVNELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFvQjtRQUMzQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxNQUFNLEtBQUssR0FBVyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBR3hCLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFBRSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUd4RCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsOEVBQThFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFHeEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLENBQUM7WUFDekQsQ0FBQztZQUdELElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUseUVBQXlFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFHcEgsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsc0RBQXNELEVBQUUsQ0FBQztZQUdsRixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRTtnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFHdkYsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUU7Z0JBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRTdILE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIHZhbGlkYXRvcnNcbiAqXG4gKiBAZmlsZSAgICAgICAgICBmb3JtLXZhbGlkYXRvcnNcbiAqIEBkZXNjcmlwdGlvbiAgIFZhcmlvdXMgZm9ybSB2YWxpZGF0b3JzXG4gKiBAYXV0aG9yICAgICAgICBKYWNxdWVzIENvZXR6ZWVcbiAqIEBzaW5jZSAgICAgICAgIDIwMjIgLSAwMSAtIDIwXG4gKiBAdXNhZ2UgICAgICAgICBEaXNwbGF5IFwiZXJyb3JNZXNzYWdlXCIga2V5IHZhbHVlIGFzIHZhbGlkYXRvciByZXNwb25zZSBtZXNzYWdlXG4gKi9cblxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHBhc3N3b3JkVmFsaWRhdG9yIGZyb20gJ3Bhc3N3b3JkLXZhbGlkYXRvcic7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xuLy8tLS0gSW50ZXJmYWNlc1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNsYXNzIENGUEZvcm1WYWxpZGF0b3JzIHtcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBjaGVja1BTV1JldHlwZVxuICAgKiBAZGVzY3JpcHRpb24gICBDaGVjayBpZiBwYXNzd29yZHMgbWF0Y2hcbiAgICogQHBhcmFtICAgICAgICAge3N0cmluZ30gY29udHJvbE5hbWVUb0NoZWNrQWdhaW5zdFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmNvbXBhcmVUbygncGFzc3dvcmQnKVxuICAgKi9cbiAgc3RhdGljIGNvbXBhcmVUbyhjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAvLy0tLSBDb21wYXJlIGNvbnRyb2xzXG4gICAgICBjb25zdCBjb250cm9sVG9DaGVja1RvOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gY29udHJvbD8ucGFyZW50Py5nZXQoY29udHJvbE5hbWVUb0NoZWNrQWdhaW5zdCkgfHwgbnVsbDtcblxuICAgICAgLy8tLS0gQ2hlY2sgcHJpbWFyeSBjb250cm9sIHZhbHVlXG4gICAgICBpZiAoIWNvbnRyb2xUb0NoZWNrVG8/LnZhbHVlKSByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBQYXNzd29yZCBSZXF1aXJlZGAgfTtcbiAgICAgIC8vLS0tIENoZWNrIHNlY29uZGFyeSBjb250cm9sIHZhbHVlXG4gICAgICBlbHNlIGlmICghY29udHJvbC52YWx1ZSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiBgUGFzc3dvcmQgY29uZmlybWF0aW9uIHJlcXVpcmVkYCB9O1xuICAgICAgLy8tLS0gQ29tcGFyZSBjb250cm9sc1xuICAgICAgZWxzZSBpZiAoY29udHJvbC52YWx1ZSAmJiBjb250cm9sPy52YWx1ZSAhPT0gY29udHJvbFRvQ2hlY2tUbz8udmFsdWUpIHJldHVybiB7IGVycm9yTWVzc2FnZTogYFBhc3N3b3JkcyBkbyBub3QgbWF0Y2hgIH07XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGFzUGFzc3dvcmRcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCBhcyBwYXNzd29yZFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmFzUGFzc3dvcmQoKVxuICAgKi9cbiAgc3RhdGljIGFzUGFzc3dvcmQoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3Qgc2NoZW1hID0gbmV3IHBhc3N3b3JkVmFsaWRhdG9yKCk7XG5cbiAgICAgIC8vLS0tIFNldHVwIHBhc3N3b3JkIHJlcXVpcmVtZW50c1xuICAgICAgc2NoZW1hXG4gICAgICAgIC8vLS0tIE1pbmltdW0gbGVuZ3RoIDhcbiAgICAgICAgLmlzKClcbiAgICAgICAgLm1pbig4LCAnTWluaW11bSBvZiA4IGNoYXJhY3RlcnMnKVxuICAgICAgICAvLy0tLSBNYXhpbXVtIGxlbmd0aCA1MFxuICAgICAgICAuaXMoKVxuICAgICAgICAubWF4KDMwLCAnTWF4aW11bSBvZiAzMCBjaGFyYWN0ZXJzJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIHVwcGVyY2FzZSBsZXR0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAudXBwZXJjYXNlKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBVUFBFUkNBU0UgY2hhcmFjdGVyJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAubG93ZXJjYXNlKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBsb3dlcmNhc2UgY2hhcmFjdGVyJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIGF0IGxlYXN0IDEgZGlnaXRzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAuZGlnaXRzKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBkaWdpdCcpXG4gICAgICAgIC8vLS0tIFNwZWNpYWwgY2hhcmFjdGVyc1xuICAgICAgICAuaGFzKClcbiAgICAgICAgLnN5bWJvbHModW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIHNwZWNpYWwgY2hhcmFjdGVyJyk7XG5cbiAgICAgIC8vLS0tIFZhbGlkYXRlIHN0cmluZ1xuICAgICAgY29uc3QgaW5WYWxpZCA9IHNjaGVtYS52YWxpZGF0ZShjb250cm9sLnZhbHVlLCB7IGRldGFpbHM6IHRydWUgfSkgYXMge1xuICAgICAgICB2YWxpZGF0aW9uOiBzdHJpbmc7XG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgYXJndW1lbnRzPzogbnVtYmVyO1xuICAgICAgfVtdO1xuXG4gICAgICBjb25zdCByZXR1cm5SZXNwb25zZTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gPSB7fTtcbiAgICAgIGluVmFsaWQuZm9yRWFjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuUmVzcG9uc2VbJ3Bhc3N3b3JkLScgKyBlcnJvci52YWxpZGF0aW9uXSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBpblZhbGlkLmxlbmd0aCA/IHJldHVyblJlc3BvbnNlIDogbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBhc0VtYWlsXG4gICAqIEBkZXNjcmlwdGlvbiAgIFZhbGlkYXRlIGNvbnRyb2wgYXMgZW1haWxcbiAgICogQHBhcmFtICAgICAgICAge3RydWV9IGNhbkJlRW1wdHlcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5hc0VtYWlsKHRydWU/KVxuICAgKi9cbiAgc3RhdGljIGFzRW1haWwoY2FuQmVFbXB0eT86IHRydWUpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBsZXQgc2V0RXJyb3JzID0gbnVsbDtcbiAgICAgIGNvbnN0IGVtYWlsUmVnRXggPSBuZXcgUmVnRXhwKCdeW1xcXFx3LS5dK0BbXFxcXHddK1xcXFwuW1xcXFx3XSsnKTtcblxuICAgICAgLy8tLS0gQ2hlY2sgaWYgZW1haWwgY2FuIGJlIGVtcHR5XG4gICAgICBpZiAoY2FuQmVFbXB0eSAmJiAoY29udHJvbC52YWx1ZSA9PT0gbnVsbCB8fCBjb250cm9sLnZhbHVlID09PSAnJykpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vLS0tIFRlc3QgUmVnRXhwXG4gICAgICBpZiAoIShjb250cm9sLnZhbHVlICYmIGVtYWlsUmVnRXgudGVzdChjb250cm9sLnZhbHVlKSAmJiB0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWNvbnRyb2wudmFsdWUuaW5jbHVkZXMoJyAnKSkpIHtcbiAgICAgICAgc2V0RXJyb3JzID0geyBlcnJvck1lc3NhZ2U6IGBOb3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzYCB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2V0RXJyb3JzO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlzSW5cbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBwYXJ0IG9mIGEgZ2l2ZW4gbGlzdFxuICAgKiBAcGFyYW0gICAgICAgICB7KHN0cmluZyB8IG51bWJlcilbXX0gbGlzdFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmlzSW4oKVxuICAgKi9cbiAgc3RhdGljIGlzSW4obGlzdDogKHN0cmluZyB8IG51bWJlcilbXSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGlmICghbGlzdC5pbmNsdWRlcyhjb250cm9sLnZhbHVlKSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnQ29udHJvbCB2YWx1ZSBub3QgcGFydCBvZiBlbGlnaWJsZSB2YWx1ZXMnIH07XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBpc1NBSUROdW1iZXJcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBhIHZhbGlkIFJTQSBJRCBOdW1iZXJcbiAgICogQHBhcmFtICAgICAgICAge3RydWV9IGNhbkJlRW1wdHlcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5pc1NBSUROdW1iZXIodHJ1ZT8pXG4gICAqL1xuICBzdGF0aWMgaXNTQUlETnVtYmVyKGNhbkJlRW1wdHk/OiB0cnVlKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVEYXRlID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnIHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoIDwgNikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBtb250aCA9IGNvbnRyb2wudmFsdWUuc2xpY2UoMiwgNCk7XG4gICAgICAgIGNvbnN0IGRheSA9IGNvbnRyb2wudmFsdWUuc2xpY2UoNCwgNik7XG4gICAgICAgIGlmICgrbW9udGggPCAwICYmICttb250aCA+IDEzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICgrZGF5IDwgMCAmJiArZGF5ID4gMzEpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFkYXlqcyhjb250cm9sLnZhbHVlLnNsaWNlKDAsIDYpLCAnWVlNTUREJywgdHJ1ZSkuaXNWYWxpZCgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgY2hlY2tzdW0gPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSAhPT0gJ3N0cmluZycgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDEzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBuU3VtID0gMDsgLy8tLS0gVG90YWwgc3VtIG9mIGFsbCB0aGUgdmFsdWVzXG4gICAgICAgIGxldCBpc1NlY29uZCA9IGZhbHNlOyAvLy0tLSBUbyBkb3VibGUgZXZlcnkgb3RoZXIgdmFsdWVcbiAgICAgICAgLy8tLS0gU3RhcnQgZnJvbSB0aGUgZW5kXG4gICAgICAgIGZvciAobGV0IGkgPSBjb250cm9sLnZhbHVlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgY29uc3QgdmFsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sLnZhbHVlW2ldO1xuICAgICAgICAgIGlmICghdmFsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgLy8tLS0gR2V0IG51bWVyaWNhbCB2YWx1ZSBmcm9tIGFzY2lpIHN0cmluZ1xuICAgICAgICAgIGxldCBkOiBudW1iZXIgPSB2YWwuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgIC8vLS0tIERvdWJsZSBldmVyeSBvdGhlciB2YWx1ZVxuICAgICAgICAgIGlmIChpc1NlY29uZCA9PSB0cnVlKSBkID0gZCAqIDI7XG4gICAgICAgICAgLy8tLS0gU3VtIHRoZSB0b3RhbCBvZiB0aGUgZG91YmxlZCB2YWx1ZXMgaWYgYXZhaWxhYmxlXG4gICAgICAgICAgblN1bSArPSBNYXRoLmZsb29yKGQgLyAxMCk7XG4gICAgICAgICAgblN1bSArPSBkICUgMTA7XG4gICAgICAgICAgLy8tLS0gSW52ZXJzZSBzZWNvbmQgdG8gZGV0ZXJtaW5lIGV2ZXJ5IG90aGVyIGluZGV4IHZhbHVlXG4gICAgICAgICAgaXNTZWNvbmQgPSAhaXNTZWNvbmQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gUmV0dXJuIHRoZSBtb2R1bHVzIDEwIG9mIHRoZSBzdW1tYXRpb25cbiAgICAgICAgcmV0dXJuIG5TdW0gJSAxMCA9PSAwO1xuICAgICAgfTtcblxuICAgICAgbGV0IGVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICAgIGlmIChjYW5CZUVtcHR5ICYmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlPy5sZW5ndGggPT09IDApKSByZXR1cm4gbnVsbDtcbiAgICAgIC8vLS0tIHN0cmluZ1xuICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnKSBlcnJvciA9ICdJbnZhbGlkIFJTQSBJRCBOdW1iZXInO1xuICAgICAgLy8tLS0gTGVuZ3RoID0gMTNcbiAgICAgIGVsc2UgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9PSAxMykgZXJyb3IgPSBgTGVuZ3RoIHJlcXVpcmVkOiAkezEzIC0gY29udHJvbC52YWx1ZS5sZW5ndGh9YDtcbiAgICAgIC8vLS0tIFZhbGlkYXRlIGRhdGVcbiAgICAgIGVsc2UgaWYgKCF2YWxpZGF0ZURhdGUoKSkgZXJyb3IgPSBgSW52YWxpZCBkYXRlIG9mIGJpcnRoYDtcbiAgICAgIC8vLS0tIENpdGl6ZW5zaGlwXG4gICAgICBlbHNlIGlmICghWycwJywgJzEnXS5pbmNsdWRlcyhjb250cm9sLnZhbHVlLnNsaWNlKDEwLCAxMSkpKSBlcnJvciA9IGBJbnZhbGlkIGNpdGl6ZW5zaGlwIHZhbHVlYDtcbiAgICAgIC8vLS0tIENoZWNrc3VtXG4gICAgICBlbHNlIGlmICghY2hlY2tzdW0oKSkgZXJyb3IgPSBgSW52YWxpZCBSU0EgSUQgbnVtYmVyIGNoZWNrc3VtYDtcblxuICAgICAgcmV0dXJuIGVycm9yID8geyBlcnJvck1lc3NhZ2U6IGVycm9yIH0gOiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlzVmFsaWREYXRlXG4gICAqIEBkZXNjcmlwdGlvbiAgIFZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgaXMgcGFydCBvZiBhIGdpdmVuIGxpc3RcbiAgICogQHBhcmFtICAgICAgICAge3N0cmluZyB8IG51bGx9IG1pbkRhdGVcbiAgICogQHBhcmFtICAgICAgICAge3N0cmluZyB8IG51bGx9IG1heERhdGVcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5pc1ZhbGlkRGF0ZSgnMTk5OS0wMS0wMScsICcyMDIwLTAxLTAxJylcbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkRGF0ZShtaW5EYXRlOiBzdHJpbmcgfCBudWxsLCBtYXhEYXRlPzogc3RyaW5nIHwgbnVsbCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIC8vLS0tIENoZWNrIHRvIHNlZSBpZiBhIGludmFsaWQgZGF0ZSBpcyByZWNlaXZlZCBsaWtlICgzMSBGZWIpXG4gICAgICBpZiAoIWRheWpzKG5ldyBEYXRlKGNvbnRyb2wudmFsdWUpKS5pc1ZhbGlkKCkpIHJldHVybiB7IGVycm9yTWVzc2FnZTogJ1RoZSBnaXZlbiBkYXRlIGlzIG5vdCB2YWxpZCcgfTtcbiAgICAgIC8vLS0tIENoZWNrIGRhdGUgaXMgbm90IGxlc3MgdGhhbiBtaW5EYXRlIGFuZCBkYXRlIGRvZXNuJ3QgZXhjZWVkIG1heERhdGVcbiAgICAgIGlmICgobWluRGF0ZSAmJiBkYXlqcyhuZXcgRGF0ZShjb250cm9sLnZhbHVlKSkuaXNCZWZvcmUobWluRGF0ZSkpIHx8IChtYXhEYXRlICYmIGRheWpzKG5ldyBEYXRlKGNvbnRyb2wudmFsdWUpKS5pc0FmdGVyKG1heERhdGUpKSlcbiAgICAgICAgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnVGhlIGdpdmVuIGRhdGUgaXMgbm90IHdpdGhpbiB0aGUgdmFsaWQgcGFyYW1ldGVycycgfTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlzVmFsaWRDZWxsTnVtYmVyXG4gICAqIEBkZXNjcmlwdGlvbiAgIFZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgaXMgYSB2YWxpZCBjZWxscGhvbmUgbnVtYmVyIGFuZCBjb250YWluaW5nIGEgdmFsaWQgZGlhbCBjb2RlXG4gICAqIEBwYXJhbSAgICAgICAgIHtzdHJpbmdbXX0gZGlhbENvZGVzXG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuaXNWYWxpZENlbGxOdW1iZXIoWycyNyddKVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWRDZWxsTnVtYmVyKGRpYWxDb2Rlcz86IHN0cmluZ1tdKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdmFsdWU6IHN0cmluZyA9IGNvbnRyb2wudmFsdWU7XG4gICAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgICAgLy8tLS0gRGVmYXVsdCB0byBTb3V0aCBBZnJpY2FuIGRpYWwgY29kZSBpZiBub25lIGdpdmVuXG4gICAgICBpZiAoIWRpYWxDb2RlcyB8fCAhZGlhbENvZGVzLmxlbmd0aCkgZGlhbENvZGVzID0gWycyNyddO1xuXG4gICAgICAvLy0tLSBWYWx1ZSBtdXN0IHN0YXJ0IHdpdGggYSArXG4gICAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoJysnKSlcbiAgICAgICAgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiBgUGxlYXNlIHN0YXJ0IHlvdXIgbnVtYmVyIHdpdGggYSAnKycgZm9sbG93ZWQgYnkgYSB2YWxpZCBkaWFsIGNvZGUgZm9yIGVnLiArJHtkaWFsQ29kZXNbMF19YCB9O1xuXG4gICAgICAvLy0tLSBDaGVjayB2YWxpZCBkaWFsIGNvZGVcbiAgICAgIGlmICghZGlhbENvZGVzLm1hcCgoY29kZSkgPT4gdmFsdWUuc2xpY2UoMSkuc3RhcnRzV2l0aChjb2RlKSkuc29tZSgoY29kZSkgPT4gY29kZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnTm8gdmFsaWQgZGlhbCBjb2RlIHJlY2VpdmVkJyB9O1xuICAgICAgfVxuXG4gICAgICAvLy0tLSBDaGVjayBubyB6ZXJvIGFmdGVyIGRpYWwgY29kZVxuICAgICAgaWYgKGRpYWxDb2Rlcy5tYXAoKGNvZGUpID0+IHZhbHVlLnNsaWNlKDEpLnN0YXJ0c1dpdGgoY29kZSArICcwJykpLnNvbWUoKGNvZGUpID0+IGNvZGUpKVxuICAgICAgICByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIDAncyBiZWhpbmQgeW91ciBkaWFsIGNvZGUgZm9yIGVnLiArJHtkaWFsQ29kZXNbMF19MGAgfTtcblxuICAgICAgLy8tLS0gQ2hlY2sgdmFsdWUgZG9lc24ndCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyBvciBsZXR0ZXJzXG4gICAgICBpZiAodmFsdWUuc2xpY2UoZGlhbENvZGVzICYmIGRpYWxDb2Rlcy5sZW5ndGggPyAxIDogMCkubWF0Y2goL1teMC05XS9nKSlcbiAgICAgICAgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnTm8gc3BlY2lhbCBjaGFyYWN0ZXJzIG9yIGxldHRlcnMgcGVybWl0dGVkIGluIG51bWJlcicgfTtcblxuICAgICAgLy8tLS0gTWluaW11bSBsZW5ndGggb2YgMTJcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPCAxMikgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiBgTGVuZ3RoIHJlcXVpcmVkICR7MTIgLSB2YWx1ZS5sZW5ndGh9YCB9O1xuXG4gICAgICAvLy0tLSBNYXggbGVuZ3RoIGJhc2VkIG9uIGRpYWwgY29kZVxuICAgICAgaWYgKHZhbHVlLnNsaWNlKDEpLnN0YXJ0c1dpdGgoJzI3JykgJiYgdmFsdWUubGVuZ3RoID4gMTIpIHJldHVybiB7IGVycm9yTWVzc2FnZTogYExlbmd0aCBleGNlZWRlZCBieSAke3ZhbHVlLmxlbmd0aCAtIDEyfWAgfTtcblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxufVxuIl19