@po-ui/ng-components 18.13.0 → 18.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/esm2022/lib/components/po-field/index.mjs +3 -1
  2. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +19 -2
  3. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +86 -41
  4. package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.module.mjs +25 -4
  5. package/esm2022/lib/components/po-field/po-input/po-mask.mjs +4 -4
  6. package/esm2022/lib/components/po-field/po-lookup/interfaces/po-lookup-literals.interface.mjs +1 -1
  7. package/esm2022/lib/components/po-field/po-lookup/po-lookup-base.component.mjs +42 -5
  8. package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +6 -19
  9. package/esm2022/lib/components/po-field/po-lookup/po-lookup.component.mjs +99 -45
  10. package/esm2022/lib/components/po-field/po-rich-text/enum/po-rich-text-toolbar-actions.enum.mjs +36 -0
  11. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-base.component.mjs +34 -3
  12. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.mjs +115 -52
  13. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text.component.mjs +52 -16
  14. package/esm2022/lib/utils/util.mjs +8 -2
  15. package/fesm2022/po-ui-ng-components.mjs +498 -173
  16. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  17. package/lib/components/po-field/index.d.ts +2 -0
  18. package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +16 -1
  19. package/lib/components/po-field/po-datepicker/po-datepicker.module.d.ts +5 -4
  20. package/lib/components/po-field/po-lookup/interfaces/po-lookup-literals.interface.d.ts +4 -0
  21. package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +12 -2
  22. package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.d.ts +2 -5
  23. package/lib/components/po-field/po-lookup/po-lookup.component.d.ts +36 -1
  24. package/lib/components/po-field/po-rich-text/enum/po-rich-text-toolbar-actions.enum.d.ts +34 -0
  25. package/lib/components/po-field/po-rich-text/po-rich-text-base.component.d.ts +26 -1
  26. package/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.d.ts +34 -4
  27. package/lib/components/po-field/po-rich-text/po-rich-text.component.d.ts +10 -2
  28. package/lib/utils/util.d.ts +1 -0
  29. package/package.json +4 -4
  30. package/po-ui-ng-components-18.15.0.tgz +0 -0
  31. package/schematics/ng-add/index.js +1 -1
  32. package/schematics/ng-update/v14/index.js +1 -1
  33. package/schematics/ng-update/v15/index.js +1 -1
  34. package/schematics/ng-update/v16/index.js +1 -1
  35. package/schematics/ng-update/v17/index.js +1 -1
  36. package/schematics/ng-update/v18/index.js +2 -2
  37. package/schematics/ng-update/v2/index.js +1 -1
  38. package/schematics/ng-update/v3/index.js +1 -1
  39. package/schematics/ng-update/v4/index.js +1 -1
  40. package/schematics/ng-update/v5/index.js +1 -1
  41. package/schematics/ng-update/v6/index.js +1 -1
  42. package/po-ui-ng-components-18.13.0.tgz +0 -0
@@ -38,6 +38,8 @@ export * from './po-password/po-password.component';
38
38
  export * from './po-radio-group/po-radio-group-option.interface';
39
39
  export * from './po-radio-group/po-radio-group.component';
40
40
  export * from './po-rich-text/po-rich-text.component';
41
+ export * from './po-rich-text/enum/po-rich-text-toolbar-actions.enum';
42
+ export * from './po-rich-text/interfaces/po-rich-text-toolbar-button-group-item.interface';
41
43
  export * from './po-select/po-select-option.interface';
42
44
  export * from './po-select/po-select-option-group.interface';
43
45
  export * from './po-select/po-select.component';
@@ -61,4 +63,4 @@ export * from './po-switch/index';
61
63
  export * from './po-field-container/index';
62
64
  export * from './po-clean/index';
63
65
  export * from './shared/interfaces/error-async-properties.interface';
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyx5RUFBeUUsQ0FBQztBQUN4RixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMEZBQTBGLENBQUM7QUFDekcsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUM7QUFFbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGtCQUFrQixDQUFDO0FBRWpDLGNBQWMsc0RBQXNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvLWNoZWNrYm94L3BvLWNoZWNrYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNoZWNrYm94L3BvLWNoZWNrYm94LXNpemUuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNoZWNrYm94LWdyb3VwL2ludGVyZmFjZXMvcG8tY2hlY2tib3gtZ3JvdXAtb3B0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNoZWNrYm94LWdyb3VwL3BvLWNoZWNrYm94LWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNsZWFuL3BvLWNsZWFuLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNvbWJvL3BvLWNvbWJvLWZpbHRlci1tb2RlLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jb21iby9pbnRlcmZhY2VzL3BvLWNvbWJvLWZpbHRlci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jb21iby9pbnRlcmZhY2VzL3BvLWNvbWJvLWxpdGVyYWxzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNvbWJvL2ludGVyZmFjZXMvcG8tY29tYm8tb3B0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNvbWJvL2ludGVyZmFjZXMvcG8tY29tYm8tb3B0aW9uLWdyb3VwLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNvbWJvL3BvLWNvbWJvLW9wdGlvbi10ZW1wbGF0ZS9wby1jb21iby1vcHRpb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tY29tYm8vcG8tY29tYm8uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tZGF0ZXBpY2tlci9lbnVtcy9wby1kYXRlcGlja2VyLWlzby1mb3JtYXQuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWRhdGVwaWNrZXIvcG8tZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1kYXRlcGlja2VyLXJhbmdlL2ludGVyZmFjZXMvcG8tZGF0ZXBpY2tlci1yYW5nZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1kYXRlcGlja2VyLXJhbmdlL2ludGVyZmFjZXMvcG8tZGF0ZXBpY2tlci1yYW5nZS1saXRlcmFscy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1kYXRlcGlja2VyLXJhbmdlL3BvLWRhdGVwaWNrZXItcmFuZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tZGVjaW1hbC9wby1kZWNpbWFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWVtYWlsL3BvLWVtYWlsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWlucHV0L3BvLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWlucHV0L3BvLW1hc2snO1xuZXhwb3J0ICogZnJvbSAnLi9wby1sb2dpbi9wby1sb2dpbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1sb29rdXAvaW50ZXJmYWNlcy9wby1sb29rdXAtY29sdW1uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWxvb2t1cC9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbG9va3VwL2ludGVyZmFjZXMvcG8tbG9va3VwLWZpbHRlcmVkLWl0ZW1zLXBhcmFtcy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1sb29rdXAvaW50ZXJmYWNlcy9wby1sb29rdXAtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbG9va3VwL2ludGVyZmFjZXMvcG8tbG9va3VwLXJlc3BvbnNlLWFwaS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1sb29rdXAvcG8tbG9va3VwLW1vZGFsL3BvLWxvb2t1cC1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1sb29rdXAvcG8tbG9va3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LW9wdGlvbi10ZW1wbGF0ZS9wby1tdWx0aXNlbGVjdC1vcHRpb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtZmlsdGVyLW1vZGUuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LWxpdGVyYWxzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1maWx0ZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbnVtYmVyL3BvLW51bWJlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1wYXNzd29yZC9wby1wYXNzd29yZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1yYWRpby1ncm91cC9wby1yYWRpby1ncm91cC1vcHRpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tcmFkaW8tZ3JvdXAvcG8tcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tcmljaC10ZXh0L3BvLXJpY2gtdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1zZWxlY3QvcG8tc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1zZWxlY3QvcG8tc2VsZWN0LW9wdGlvbi1ncm91cC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXN3aXRjaC9wby1zd2l0Y2gtbGFiZWwtcG9zaXRpb24uZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXN3aXRjaC9wby1zd2l0Y2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tdGV4dGFyZWEvcG8tdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tdXBsb2FkL2ludGVyZmFjZXMvcG8tdXBsb2FkLWZpbGUtcmVzdHJpY3Rpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tdXBsb2FkL2ludGVyZmFjZXMvcG8tdXBsb2FkLWxpdGVyYWxzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXVwbG9hZC9wby11cGxvYWQtZmlsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXVwbG9hZC9wby11cGxvYWQtc3RhdHVzLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9wby11cGxvYWQvcG8tdXBsb2FkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXVybC9wby11cmwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tcmFkaW8vcG8tcmFkaW8uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9wby1jaGVja2JveC1ncm91cC9wby1jaGVja2JveC1ncm91cC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tY2hlY2tib3gvcG8tY2hlY2tib3gubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tcmFkaW8tZ3JvdXAvcG8tcmFkaW8tZ3JvdXAubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tcmFkaW8vcG8tcmFkaW8ubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9wby1maWVsZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1zd2l0Y2gvaW5kZXgnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvLWZpZWxkLWNvbnRhaW5lci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNsZWFuL2luZGV4JztcblxuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQvaW50ZXJmYWNlcy9lcnJvci1hc3luYy1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyx5RUFBeUUsQ0FBQztBQUN4RixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMEZBQTBGLENBQUM7QUFDekcsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsMkNBQTJDLENBQUM7QUFFMUQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsNEVBQTRFLENBQUM7QUFFM0YsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBRWxDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxjQUFjLHNEQUFzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wby1jaGVja2JveC9wby1jaGVja2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jaGVja2JveC9wby1jaGVja2JveC1zaXplLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jaGVja2JveC1ncm91cC9pbnRlcmZhY2VzL3BvLWNoZWNrYm94LWdyb3VwLW9wdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jaGVja2JveC1ncm91cC9wby1jaGVja2JveC1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jbGVhbi9wby1jbGVhbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jb21iby9wby1jb21iby1maWx0ZXItbW9kZS5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tY29tYm8vaW50ZXJmYWNlcy9wby1jb21iby1maWx0ZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tY29tYm8vaW50ZXJmYWNlcy9wby1jb21iby1saXRlcmFscy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jb21iby9pbnRlcmZhY2VzL3BvLWNvbWJvLW9wdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jb21iby9pbnRlcmZhY2VzL3BvLWNvbWJvLW9wdGlvbi1ncm91cC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jb21iby9wby1jb21iby1vcHRpb24tdGVtcGxhdGUvcG8tY29tYm8tb3B0aW9uLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWNvbWJvL3BvLWNvbWJvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWRhdGVwaWNrZXIvZW51bXMvcG8tZGF0ZXBpY2tlci1pc28tZm9ybWF0LmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tZGF0ZXBpY2tlci1yYW5nZS9pbnRlcmZhY2VzL3BvLWRhdGVwaWNrZXItcmFuZ2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tZGF0ZXBpY2tlci1yYW5nZS9pbnRlcmZhY2VzL3BvLWRhdGVwaWNrZXItcmFuZ2UtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tZGF0ZXBpY2tlci1yYW5nZS9wby1kYXRlcGlja2VyLXJhbmdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWRlY2ltYWwvcG8tZGVjaW1hbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1lbWFpbC9wby1lbWFpbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1pbnB1dC9wby1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1pbnB1dC9wby1tYXNrJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbG9naW4vcG8tbG9naW4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbG9va3VwL2ludGVyZmFjZXMvcG8tbG9va3VwLWNvbHVtbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1sb29rdXAvaW50ZXJmYWNlcy9wby1sb29rdXAtZmlsdGVyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWxvb2t1cC9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXJlZC1pdGVtcy1wYXJhbXMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbG9va3VwL2ludGVyZmFjZXMvcG8tbG9va3VwLWxpdGVyYWxzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWxvb2t1cC9pbnRlcmZhY2VzL3BvLWxvb2t1cC1yZXNwb25zZS1hcGkuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbG9va3VwL3BvLWxvb2t1cC1tb2RhbC9wby1sb29rdXAtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbG9va3VwL3BvLWxvb2t1cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1vcHRpb24tdGVtcGxhdGUvcG8tbXVsdGlzZWxlY3Qtb3B0aW9uLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LWZpbHRlci1tb2RlLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1saXRlcmFscy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1vcHRpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtZmlsdGVyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BvLW51bWJlci9wby1udW1iZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tcGFzc3dvcmQvcG8tcGFzc3dvcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tcmFkaW8tZ3JvdXAvcG8tcmFkaW8tZ3JvdXAtb3B0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXJhZGlvLWdyb3VwL3BvLXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcG8tcmljaC10ZXh0L3BvLXJpY2gtdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1yaWNoLXRleHQvZW51bS9wby1yaWNoLXRleHQtdG9vbGJhci1hY3Rpb25zLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9wby1yaWNoLXRleHQvaW50ZXJmYWNlcy9wby1yaWNoLXRleHQtdG9vbGJhci1idXR0b24tZ3JvdXAtaXRlbS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvLXNlbGVjdC9wby1zZWxlY3Qtb3B0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXNlbGVjdC9wby1zZWxlY3Qtb3B0aW9uLWdyb3VwLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXNlbGVjdC9wby1zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tc3dpdGNoL3BvLXN3aXRjaC1sYWJlbC1wb3NpdGlvbi5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tc3dpdGNoL3BvLXN3aXRjaC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby10ZXh0YXJlYS9wby10ZXh0YXJlYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby11cGxvYWQvaW50ZXJmYWNlcy9wby11cGxvYWQtZmlsZS1yZXN0cmljdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wby11cGxvYWQvaW50ZXJmYWNlcy9wby11cGxvYWQtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tdXBsb2FkL3BvLXVwbG9hZC1maWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcG8tdXBsb2FkL3BvLXVwbG9hZC1zdGF0dXMuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXVwbG9hZC9wby11cGxvYWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tdXJsL3BvLXVybC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1yYWRpby9wby1yYWRpby5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvLWNoZWNrYm94LWdyb3VwL3BvLWNoZWNrYm94LWdyb3VwLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLWRhdGVwaWNrZXIvcG8tZGF0ZXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1jaGVja2JveC9wby1jaGVja2JveC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1yYWRpby1ncm91cC9wby1yYWRpby1ncm91cC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wby1yYWRpby9wby1yYWRpby5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvLWZpZWxkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvLXN3aXRjaC9pbmRleCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcG8tZmllbGQtY29udGFpbmVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcG8tY2xlYW4vaW5kZXgnO1xuXG5leHBvcnQgKiBmcm9tICcuL3NoYXJlZC9pbnRlcmZhY2VzL2Vycm9yLWFzeW5jLXByb3BlcnRpZXMuaW50ZXJmYWNlJztcbiJdfQ==
@@ -365,6 +365,20 @@ export class PoDatepickerBaseComponent {
365
365
  get locale() {
366
366
  return this._locale || this.shortLanguage;
367
367
  }
368
+ /**
369
+ * @optional
370
+ *
371
+ * @description
372
+ *
373
+ * Define que o calendário do DatePicker será incluído no body da página, em vez de suspenso junto ao campo de entrada do componente.
374
+ * Essa opção é útil em cenários onde o DatePicker precisa ser renderizado fora do conteúdo principal da página,
375
+ * como em formulários que utilizam scroll ou containers com overflow escondido.
376
+ *
377
+ * > Obs: O uso dessa propriedade pode interferir na sequência de tabulação da página, especialmente em formulários longos.
378
+ *
379
+ * @default `false`
380
+ */
381
+ appendBox = false;
368
382
  constructor(languageService, cd) {
369
383
  this.languageService = languageService;
370
384
  this.cd = cd;
@@ -507,7 +521,7 @@ export class PoDatepickerBaseComponent {
507
521
  this.hour = 'T00:00:00' + timezone;
508
522
  }
509
523
  static ɵfac = function PoDatepickerBaseComponent_Factory(t) { return new (t || PoDatepickerBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
510
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoDatepickerBaseComponent, inputs: { autoFocus: [2, "p-auto-focus", "autoFocus", convertToBoolean], errorAsync: [0, "p-error-async", "errorAsync"], name: "name", optional: [0, "p-optional", "optional"], errorPattern: [0, "p-error-pattern", "errorPattern"], showErrorMessageRequired: [0, "p-required-field-error-message", "showErrorMessageRequired"], noAutocomplete: [0, "p-no-autocomplete", "noAutocomplete"], placeholder: [0, "p-placeholder", "placeholder"], setDisabled: [0, "p-disabled", "setDisabled"], setReadonly: [0, "p-readonly", "setReadonly"], setRequired: [0, "p-required", "setRequired"], showRequired: [0, "p-show-required", "showRequired"], setClean: [0, "p-clean", "setClean"], minDate: [0, "p-min-date", "minDate"], maxDate: [0, "p-max-date", "maxDate"], format: [0, "p-format", "format"], isoFormat: [0, "p-iso-format", "isoFormat"], locale: [0, "p-locale", "locale"] }, outputs: { onblur: "p-blur", onchange: "p-change" }, features: [i0.ɵɵInputTransformsFeature] });
524
+ static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoDatepickerBaseComponent, inputs: { autoFocus: [2, "p-auto-focus", "autoFocus", convertToBoolean], errorAsync: [0, "p-error-async", "errorAsync"], name: "name", optional: [0, "p-optional", "optional"], errorPattern: [0, "p-error-pattern", "errorPattern"], showErrorMessageRequired: [0, "p-required-field-error-message", "showErrorMessageRequired"], noAutocomplete: [0, "p-no-autocomplete", "noAutocomplete"], placeholder: [0, "p-placeholder", "placeholder"], setDisabled: [0, "p-disabled", "setDisabled"], setReadonly: [0, "p-readonly", "setReadonly"], setRequired: [0, "p-required", "setRequired"], showRequired: [0, "p-show-required", "showRequired"], setClean: [0, "p-clean", "setClean"], minDate: [0, "p-min-date", "minDate"], maxDate: [0, "p-max-date", "maxDate"], format: [0, "p-format", "format"], isoFormat: [0, "p-iso-format", "isoFormat"], locale: [0, "p-locale", "locale"], appendBox: [2, "p-append-in-body", "appendBox", convertToBoolean] }, outputs: { onblur: "p-blur", onchange: "p-change" }, features: [i0.ɵɵInputTransformsFeature] });
511
525
  }
512
526
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoDatepickerBaseComponent, [{
513
527
  type: Directive
@@ -571,5 +585,8 @@ export class PoDatepickerBaseComponent {
571
585
  }], locale: [{
572
586
  type: Input,
573
587
  args: ['p-locale']
588
+ }], appendBox: [{
589
+ type: Input,
590
+ args: [{ alias: 'p-append-in-body', transform: convertToBoolean }]
574
591
  }] }); })();
575
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXItYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBb0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0QsT0FBTyxFQUFjLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7QUFFOUUsTUFBTSx5QkFBeUIsR0FBVyxZQUFZLENBQUM7QUFFdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzRUc7QUFFSCxNQUFNLE9BQWdCLHlCQUF5QjtJQXFVakM7SUFDQTtJQXJVWjs7Ozs7Ozs7OztPQVVHO0lBQzRELFNBQVMsR0FBWSxLQUFL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a0JBQW5DLEtBQUs7bUJBQUMsWUFBWTtZQVNNLFdBQVc7a0JBQW5DLEtBQUs7bUJBQUMsWUFBWTtZQWVNLFdBQVc7a0JBQW5DLEtBQUs7bUJBQUMsWUFBWTtZQVlPLFlBQVk7a0JBQXJDLEtBQUs7bUJBQUMsaUJBQWlCO1lBS0YsUUFBUTtrQkFBN0IsS0FBSzttQkFBQyxTQUFTO1lBV1MsT0FBTztrQkFBL0IsS0FBSzttQkFBQyxZQUFZO1lBMEJNLE9BQU87a0JBQS9CLEtBQUs7bUJBQUMsWUFBWTtZQWlDSSxNQUFNO2tCQUE1QixLQUFLO21CQUFDLFVBQVU7WUErQlUsU0FBUztrQkFBbkMsS0FBSzttQkFBQyxjQUFjO1lBc0JFLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgY29udmVydERhdGVUb0lTT0RhdGUsXG4gIGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCxcbiAgY29udmVydElzb1RvRGF0ZSxcbiAgY29udmVydFRvQm9vbGVhbixcbiAgZm9ybWF0WWVhcixcbiAgaXNUeXBlb2YsXG4gIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IsXG4gIHNldFllYXJGcm9tMFRvMTAwLFxuICB2YWxpZGF0ZURhdGVSYW5nZVxufSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvTWFzayB9IGZyb20gJy4uL3BvLWlucHV0L3BvLW1hc2snO1xuaW1wb3J0IHsgZGF0ZUZhaWxlZCwgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLy4uL3ZhbGlkYXRvcnMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdCB9IGZyb20gJy4vZW51bXMvcG8tZGF0ZXBpY2tlci1pc28tZm9ybWF0LmVudW0nO1xuXG5jb25zdCBwb0RhdGVwaWNrZXJGb3JtYXREZWZhdWx0OiBzdHJpbmcgPSAnZGQvbW0veXl5eSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tZGF0ZXBpY2tlcmAgw6kgdW0gY29tcG9uZW50ZSBlc3BlY8OtZmljbyBwYXJhIG1hbmlwdWxhw6fDo28gZGUgZGF0YXMgcGVybWl0aW5kbyBhIGRpZ2l0YcOnw6NvIGUgLyBvdSBzZWxlw6fDo28uXG4gKlxuICogTyBmb3JtYXRvIGRlIGV4aWJpw6fDo28gZGEgZGF0YSwgb3Ugc2VqYSwgbyBmb3JtYXRvIHF1ZSDDqSBhcHJlc2VudGFkbyBhbyB1c3XDoXJpbyDDqSBvIGRkL21tL3l5eXksXG4gKiBtYXMgcG9kZW0gc2VyIGRlZmluaWRvcyBvdXRyb3MgcGFkcsO1ZXMgKHZlamEgbWFpcyBuYSBwcm9wcmllZGFkZSBgcC1mb3JtYXRgKS5cbiAqXG4gKiBPIGlkaW9tYSBwYWRyw6NvIGRvIGNhbGVuZMOhcmlvIHNlcsOhIGV4aWJpZG8gZGUgYWNvcmRvIGNvbSBvIG5hdmVnYWRvciwgY2FzbyB0ZW5oYSBuZWNlc3NpZGFkZSBkZSBhbHRlcmFyXG4gKiB1c2UgYSBwcm9wcmllZGFkZSBgcC1sb2NhbGVgLlxuICpcbiAqIE8gZGF0ZXBpY2tlciBhY2VpdGEgdHLDqnMgZm9ybWF0b3MgZGUgZGF0YTogbyBFODYwMURadyAoeXl5eS1tbS1kZFRoaDptbTpzcyt8LWhoOm1tKSwgbyBFODYwMURBdyAoeXl5eS1tbS1kZCkgZSBvXG4gKiBEYXRlIHBhZHLDo28gZG8gSmF2YXNjcmlwdC5cbiAqXG4gKiA+IFBvciBwYWRyw6NvLCBvIGZvcm1hdG8gZGUgc2HDrWRhIGRvICptb2RlbCogc2UgYWp1c3RhcsOhIGNvbmZvcm1lIG8gZm9ybWF0byBkZSBlbnRyYWRhLiBTZSBwb3IgYWNhc28gcHJlY2lzYXIgY29udHJvbGFyIG8gdmFsb3IgZGUgc2HDrWRhLFxuICogYSBwcm9wcmllZGFkZSBgcC1pc28tZm9ybWF0YCBwcm92w6ogZXNzZSBjb250cm9sZSBpbmRlcGVuZGVudGVtZW50ZSBkbyBmb3JtYXRvIGRlIGVudHJhZGEuIFZlamEgYWJhaXhvIG9zIGZvcm1hdG9zIGRpc3BvbsOtdmVpczpcbiAqXG4gKiAtIEZvcm1hdG8gZGUgZW50cmFkYSBlIHNhw61kYSAoRTg2MDFEWncpIC0gYCcyMDE3LTExLTI4VDAwOjAwOjAwLTAyOjAwJ2A7XG4gKlxuICogLSBGb3JtYXRvIGRlIGVudHJhZGEgZSBzYcOtZGEgKEU4NjAxREF3KSAtIGAnMjAxNy0xMS0yOCdgO1xuICpcbiAqIC0gRm9ybWF0byBkZSBlbnRyYWRhIChEYXRlKSAtIGBuZXcgRGF0ZSgyMDE3LCAxMCwgMjgpYCBlIHNhw61kYSAoRTg2MDFEQXcpIC0gYCcyMDE3LTExLTI4J2A7XG4gKlxuICogKipJbXBvcnRhbnRlOioqXG4gKlxuICogLSBQYXJhIHV0aWxpemFyIGRhdGFzIGNvbSBhbm8gaW5mZXJpb3IgYSAxMDAsIHZlcmlmaWNhciBvIGNvbXBvcnRhbWVudG8gZG8gW2BuZXcgRGF0ZWBdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanMvanNfZGF0ZXMuYXNwKVxuICogZSB1dGlsaXphciBvIG3DqXRvZG8gW2BzZXRGdWxsWWVhcmBdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvanNyZWZfc2V0ZnVsbHllYXIuYXNwKS5cbiAqIC0gQ2FzbyBhIGRhdGEgZXN0ZWphIGludsOhbGlkYSwgbyBgbW9kZWxgIHJlY2ViZXLDoSAqKidEYXRhIGludsOhbGlkYScqKi5cbiAqIC0gQ2FzbyBvIGBpbnB1dGAgZXN0ZWphIHBhc3NhbmRvIHVtIGBbKG5nTW9kZWwpXWAsIG1hcyBuw6NvIHRlbmhhIHVtIGBuYW1lYCwgZW50w6NvIGlyw6Egb2NvcnJlciB1bSBlcnJvXG4gKiBkbyBwcsOzcHJpbyBBbmd1bGFyIChgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiYCkuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIDxwby1kYXRlcGlja2VyXG4gKiAgIFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVcIlxuICogICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAqIDwvcG8tZGF0ZXBpY2tlcj5cbiAqIGBgYFxuICpcbiAqID4gTsOjbyBlc3F1ZcOnYSBkZSBpbXBvcnRhciBvIGBGb3Jtc01vZHVsZWAgZW0gc2V1IG3Ds2R1bG8sIHRhbCBjb21vIHBhcmEgdXRpbGl6YXIgbyBgaW5wdXQgZGVmYXVsdGAuXG4gKlxuICogIyMjIyBUb2tlbnMgY3VzdG9taXrDoXZlaXNcbiAqXG4gKiDDiSBwb3Nzw612ZWwgYWx0ZXJhciBvIGVzdGlsbyBkbyBjb21wb25lbnRlIHVzYW5kbyBvcyBzZWd1aW50ZXMgdG9rZW5zIChDU1MpOiA8YnI+XG4gKiBPYnM6IFPDsyDDqSBwb3Nzw612ZWwgcmVhbGl6YXIgYWx0ZXJhw6fDtWVzIGFvIGFkaWNpb25hciBhIGNsYXNzZSBgLnBvLWlucHV0YFxuICpcbiAqID4gUGFyYSBtYWlvcmVzIGluZm9ybWHDp8O1ZXMsIGFjZXNzZSBvIGd1aWEgW1BlcnNvbmFsaXphbmRvIG8gVGVtYSBQYWRyw6NvIGNvbSBUb2tlbnMgQ1NTXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy90aGVtZS1jdXN0b21pemF0aW9uKS5cbiAqXG4gKiB8IFByb3ByaWVkYWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3Jpw6fDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhbG9yIFBhZHLDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipEZWZhdWx0IFZhbHVlcyoqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtZmFtaWx5YCAgICAgICAgICAgICAgICAgICAgICAgIHwgRmFtw61saWEgdGlwb2dyw6FmaWNhIHVzYWRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LWZhbWlseS10aGVtZSlgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtc2l6ZWAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGFtYW5obyBkYSBmb250ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tZm9udC1zaXplLWRlZmF1bHQpYCAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yLXBsYWNlaG9sZGVyYCAmbmJzcDsgICAgICB8IENvciBwcmluY2lwYWwgZG8gdGV4dG8gZG8gcGxhY2Vob2xkZXIgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMzApYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIGRvIGRhdGVwaWNrZXIgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstNzApYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmRgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0wNSlgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1wYWRkaW5nYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByZWVuY2hpbWVudG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDAgMC41cmVtYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdGV4dC1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZG8gdGV4dG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstOTApYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqSG92ZXIqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1ob3ZlcmAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGhvdmVyICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWRhcmspYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1ob3ZlcmAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gaG92ZXIgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVzdClgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRm9jdXNlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGRlIGZvY3VzICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tb3V0bGluZS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgfCBDb3IgZG8gb3V0bGluZSBkbyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZm9jdXMpYCAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRGlzYWJsZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1kaXNhYmxlZGAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGRpc2FibGVkICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMzApYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1kaXNhYmxlZGAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGlzYWJsZWQgJm5ic3A7ICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3ItZGlzYWJsZWRgICAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvIG5vIGVzdGFkbyBkaXNhYmxlZCAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTcwKWAgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9EYXRlcGlja2VyQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG8tZm9jdXMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRnVuw6fDo28gZXhlY3V0YWRhIHBhcmEgcmVhbGl6YXIgYSB2YWxpZGHDp8OjbyBhc3PDrW5jcm9uYSBwZXJzb25hbGl6YWRhLlxuICAgKiBFeGVjdXRhZGEgYW8gZGlzcGFyYXIgbyBvdXRwdXQgYGNoYW5nZWAuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWxvciBhdHVhbCBwcmVlbmNoaWRvIG5vIGNhbXBvLlxuICAgKlxuICAgKiBAcmV0dXJucyBSZXRvcm5hIE9ic2VydmFibGUgY29tIG8gdmFsb3IgYHRydWVgIHBhcmEgc2luYWxpemFyIG8gZXJybyBgZmFsc2VgIHBhcmEgaW5kaWNhciBxdWUgbsOjbyBow6EgZXJyby5cbiAgICovXG4gIEBJbnB1dCgncC1lcnJvci1hc3luYycpIGVycm9yQXN5bmM6ICh2YWx1ZSkgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKiBOb21lIGRvIGNvbXBvbmVudGUgZGF0ZXBpY2tlci4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1lbnNhZ2VtIGFwcmVzZW50YWRhIHF1YW5kbyBhIGRhdGEgZm9yIGludsOhbGlkYSBvdSBmb3JhIGRvIHBlcsOtb2RvLlxuICAgKlxuICAgKiA+IFBvciBwYWRyw6NvLCBlc3RhIG1lbnNhZ2VtIG7Do28gw6kgYXByZXNlbnRhZGEgcXVhbmRvIG8gY2FtcG8gZXN0aXZlciB2YXppbywgbWVzbW8gcXVlIGVsZSBzZWphIHJlcXVlcmlkby5cbiAgICogUGFyYSBleGliaXIgYSBtZW5zYWdlbSBjb20gbyBjYW1wbyB2YXppbywgdXRpbGl6ZSBhIHByb3ByaWVkYWRlIGBwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VgIGVtIGNvbmp1bnRvLlxuICAgKi9cbiAgQElucHV0KCdwLWVycm9yLXBhdHRlcm4nKSBlcnJvclBhdHRlcm4/OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeGliZSBhIG1lbnNhZ2VtIHNldGFkYSBuYSBwcm9wcmllZGFkZSBgcC1lcnJvci1wYXR0ZXJuYCBzZSBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8gZSBmb3IgcmVxdWVyaWRvLlxuICAgKlxuICAgKiA+IE5lY2Vzc8OhcmlvIHF1ZSBhIHByb3ByaWVkYWRlIGBwLXJlcXVpcmVkYCBlc3RlamEgaGFiaWxpdGFkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2UnKSBzaG93RXJyb3JNZXNzYWdlUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIHNhaXIgZG8gY2FtcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWJsdXInKSBvbmJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBhbHRlcmFyIHZhbG9yIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBvbmNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBvZmZzZXQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGZpcnN0U3RhcnQgPSB0cnVlO1xuICBwcm90ZWN0ZWQgaG91cjogc3RyaW5nID0gJ1QwMDowMDowMC0wMDowMCc7XG4gIHByb3RlY3RlZCBpc0V4dGVuZGVkSVNPOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvYmpNYXNrOiBhbnk7XG4gIHByb3RlY3RlZCBvbkNoYW5nZU1vZGVsOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG4gIHByb3RlY3RlZCBvblRvdWNoZWRNb2RlbDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIHNob3J0TGFuZ3VhZ2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIGlzSW52YWxpZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGhhc1ZhbGlkYXRvclJlcXVpcmVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2Zvcm1hdD86IHN0cmluZyA9IHBvRGF0ZXBpY2tlckZvcm1hdERlZmF1bHQ7XG4gIHByaXZhdGUgX2lzb0Zvcm1hdDogUG9EYXRlcGlja2VySXNvRm9ybWF0O1xuICBwcml2YXRlIF9tYXhEYXRlOiBEYXRlO1xuICBwcml2YXRlIF9taW5EYXRlOiBEYXRlO1xuICBwcml2YXRlIF9ub0F1dG9jb21wbGV0ZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI/OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBwcmV2aW91c1ZhbHVlOiBhbnk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX2RhdGU6IERhdGU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgcHJvcHJpZWRhZGUgbmF0aXZhIGBhdXRvY29tcGxldGVgIGRvIGNhbXBvIGNvbW8gYG9mZmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1uby1hdXRvY29tcGxldGUnKSBzZXQgbm9BdXRvY29tcGxldGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9ub0F1dG9jb21wbGV0ZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5vQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub0F1dG9jb21wbGV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE1lbnNhZ2VtIHF1ZSBhcGFyZWNlcsOhIGVucXVhbnRvIG8gY2FtcG8gbsOjbyBlc3RpdmVyIHByZWVuY2hpZG8uXG4gICAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gaXNUeXBlb2YocGxhY2Vob2xkZXIsICdzdHJpbmcnKSA/IHBsYWNlaG9sZGVyIDogJyc7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqIERlc2FiaWxpdGEgbyBjYW1wby4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBzZXREaXNhYmxlZChkaXNhYmxlZDogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbChjb252ZXJ0RGF0ZVRvSVNPRXh0ZW5kZWQodGhpcy5kYXRlLCB0aGlzLmhvdXIpKTtcbiAgfVxuXG4gIC8qKiBUb3JuYSBvIGVsZW1lbnRvIHNvbWVudGUgbGVpdHVyYS4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgcmVhZG9ubHk/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1yZWFkb25seScpIHNldCBzZXRSZWFkb25seShyZWFkb25seTogc3RyaW5nKSB7XG4gICAgdGhpcy5yZWFkb25seSA9IHJlYWRvbmx5ID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHJlYWRvbmx5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIHJlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgc2V0UmVxdWlyZWQocmVxdWlyZWQ6IHN0cmluZykge1xuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoY29udmVydERhdGVUb0lTT0V4dGVuZGVkKHRoaXMuZGF0ZSwgdGhpcy5ob3VyKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb2JyaWdhdMOzcmlvIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKi9cbiAgQElucHV0KCdwLXNob3ctcmVxdWlyZWQnKSBzaG93UmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSGFiaWxpdGEgYcOnw6NvIHBhcmEgbGltcGFyIG8gY2FtcG8uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIGNsZWFuPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtY2xlYW4nKSBzZXQgc2V0Q2xlYW4oY2xlYW46IHN0cmluZykge1xuICAgIHRoaXMuY2xlYW4gPSBjbGVhbiA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihjbGVhbik7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGRhdGEgbcOtbmltYSBwYXJhIG8gYHBvLWRhdGVwaWNrZXJgLlxuICAgKi9cbiAgQElucHV0KCdwLW1pbi1kYXRlJykgc2V0IG1pbkRhdGUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSwgMCwgMCwgMCk7XG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgdGhpcy5fbWluRGF0ZSA9IGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21pbkRhdGUgPSBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGRhdGEgbcOheGltYSBwYXJhIG8gYHBvLWRhdGVwaWNrZXJgLlxuICAgKi9cbiAgQElucHV0KCdwLW1heC1kYXRlJykgc2V0IG1heERhdGUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSwgMjMsIDU5LCA1OSk7XG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgdGhpcy5fbWF4RGF0ZSA9IGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21heERhdGUgPSBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGb3JtYXRvIGRlIGV4aWJpw6fDo28gZGEgZGF0YS5cbiAgICpcbiAgICogVmFsb3JlcyB2w6FsaWRvczpcbiAgICogIC0gYGRkL21tL3l5eXlgXG4gICAqICAtIGBtbS9kZC95eXl5YFxuICAgKiAgLSBgeXl5eS9tbS9kZGBcbiAgICpcbiAgICogQGRlZmF1bHQgYGRkL21tL3l5eXlgXG4gICAqL1xuICBASW5wdXQoJ3AtZm9ybWF0Jykgc2V0IGZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodmFsdWUubWF0Y2goL2RkLykgJiYgdmFsdWUubWF0Y2goL21tLykgJiYgdmFsdWUubWF0Y2goL3l5eXkvKSkge1xuICAgICAgICB0aGlzLl9mb3JtYXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICAgICAgcmVwbGFjZUZvcm1hdFNlcGFyYXRvcih0aGlzLmZvcm1hdCwgdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0RGF0ZVNlcGFyYXRvcih0aGlzLmxvY2FsZSkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVmcmVzaFZhbHVlKHRoaXMuZGF0ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZm9ybWF0ID0gcG9EYXRlcGlja2VyRm9ybWF0RGVmYXVsdDtcbiAgICB0aGlzLm9iak1hc2sgPSB0aGlzLmJ1aWxkTWFzayhcbiAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICk7XG4gIH1cblxuICBnZXQgZm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQYWRyw6NvIGRlIGZvcm1hdGHDp8OjbyBwYXJhIHNhw61kYSBkbyAqbW9kZWwqLCBpbmRlcGVuZGVudGVtZW50ZSBkbyBmb3JtYXRvIGRlIGVudHJhZGEuXG4gICAqXG4gICAqID4gVmVqYSBvcyB2YWxvcmVzIHbDoWxpZG9zIG5vICplbnVtKiBgUG9EYXRlcGlja2VySXNvRm9ybWF0YC5cbiAgICovXG4gIEBJbnB1dCgncC1pc28tZm9ybWF0Jykgc2V0IGlzb0Zvcm1hdCh2YWx1ZTogUG9EYXRlcGlja2VySXNvRm9ybWF0KSB7XG4gICAgaWYgKE9iamVjdC52YWx1ZXMoUG9EYXRlcGlja2VySXNvRm9ybWF0KS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2lzb0Zvcm1hdCA9IHZhbHVlO1xuICAgICAgdGhpcy5pc0V4dGVuZGVkSVNPID0gdmFsdWUgPT09IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdC5FeHRlbmRlZDtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNvRm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLl9pc29Gb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJZGlvbWEgZG8gRGF0ZXBpY2tlci5cbiAgICpcbiAgICogPiBPIGxvY2FsZSBwYWRyw6NvIHNlcmEgcmVjdXBlcmFkbyBjb20gYmFzZSBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBfbG9jYWxlPzogc3RyaW5nO1xuICBASW5wdXQoJ3AtbG9jYWxlJykgc2V0IGxvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2NhbGUgPSB2YWx1ZS5sZW5ndGggPj0gMiA/IHZhbHVlIDogcG9Mb2NhbGVEZWZhdWx0O1xuICAgICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9jYWxlID0gdGhpcy5zaG9ydExhbmd1YWdlO1xuICAgICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoVmFsdWUodGhpcy5kYXRlKTtcbiAgfVxuICBnZXQgbG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGUgfHwgdGhpcy5zaG9ydExhbmd1YWdlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgc2V0IGRhdGUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2RhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gY29udmVydElzb1RvRGF0ZSh2YWx1ZSwgZmFsc2UsIGZhbHNlKSA6IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9mZnNldCA9IG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICB0aGlzLmZvcm1hdFRpbWV6b25lQW5kSG91cih0aGlzLm9mZnNldCk7XG4gICAgLy8gQ2xhc3NlIGRlIG3DoXNjYXJhXG4gICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICByZXBsYWNlRm9ybWF0U2VwYXJhdG9yKHRoaXMuZm9ybWF0LCB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXREYXRlU2VwYXJhdG9yKHRoaXMubG9jYWxlKSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyBDb252ZXJ0ZSB1bSBvYmpldG8gc3RyaW5nIGVtIERhdGVcbiAgZ2V0RGF0ZUZyb21TdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF5ID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZignZCcpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCdkJykgKyAyKSwgMTApO1xuICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZignbScpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCdtJykgKyAyKSwgMTApIC0gMTtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZigneScpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCd5JykgKyA0KSwgMTApO1xuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuXG4gICAgc2V0WWVhckZyb20wVG8xMDAoZGF0ZSwgeWVhcik7XG5cbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGggJiYgZGF0ZS5nZXREYXRlKCkgPT09IGRheSA/IGRhdGUgOiBudWxsO1xuICB9XG5cbiAgLy8gRm9ybWF0YSBhIGRhdGEuXG4gIGZvcm1hdFRvRGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGxldCBkYXRlRm9ybWF0dGVkID0gdGhpcy5mb3JtYXQ7XG5cbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCdkZCcsICgnMCcgKyB2YWx1ZS5nZXREYXRlKCkpLnNsaWNlKC0yKSk7XG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgnbW0nLCAoJzAnICsgKHZhbHVlLmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpKTtcbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCd5eXl5JywgZm9ybWF0WWVhcih2YWx1ZS5nZXRGdWxsWWVhcigpKSk7XG5cbiAgICByZXR1cm4gZGF0ZUZvcm1hdHRlZDtcbiAgfVxuXG4gIC8vIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBjb250cm9sYXIgbyBtb2RlbG8uXG4gIGNvbnRyb2xNb2RlbChkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5kYXRlID0gZGF0ZTtcbiAgICBpZiAoZGF0ZSAmJiB0aGlzLmlzRXh0ZW5kZWRJU08pIHtcbiAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICAgIH0gZWxzZSBpZiAoZGF0ZSAmJiAhdGhpcy5pc0V4dGVuZGVkSVNPKSB7XG4gICAgICB0aGlzLmNhbGxPbkNoYW5nZShjb252ZXJ0RGF0ZVRvSVNPRGF0ZSh0aGlzLmRhdGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZSA9PT0gdW5kZWZpbmVkID8gdGhpcy5jYWxsT25DaGFuZ2UoJycpIDogdGhpcy5jYWxsT25DaGFuZ2UoJ0RhdGEgaW52w6FsaWRhJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gRXhlY3V0YSBhIGZ1bsOnw6NvIG9uQ2hhbmdlXG4gIGNhbGxPbkNoYW5nZSh2YWx1ZTogYW55LCByZXRyeTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5vbkNoYW5nZU1vZGVsICYmIHZhbHVlICE9PSB0aGlzLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VNb2RlbCh2YWx1ZSk7XG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHJldHJ5KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2FsbE9uQ2hhbmdlKHZhbHVlLCBmYWxzZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlTW9kZWwgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRNb2RlbCA9IGZ1bmM7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIC8vIFZlcmlmaWNhIHNlIGrDoSBwb3NzdWkgYWxndW0gZXJyb3IgcGF0dGVybiBwYWRyw6NvLlxuICAgIHRoaXMuZXJyb3JQYXR0ZXJuID1cbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnRGF0YSBpbnbDoWxpZGEnICYmIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnRGF0YSBmb3JhIGRvIHBlcsOtb2RvJyA/IHRoaXMuZXJyb3JQYXR0ZXJuIDogJyc7XG5cbiAgICBpZiAoIXRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQgJiYgdGhpcy5zaG93RXJyb3JNZXNzYWdlUmVxdWlyZWQgJiYgYy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkpIHtcbiAgICAgIHRoaXMuaGFzVmFsaWRhdG9yUmVxdWlyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkYXRlRmFpbGVkKGMudmFsdWUpKSB7XG4gICAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuIHx8ICdEYXRhIGludsOhbGlkYSc7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgYy52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZSAmJiAhdmFsaWRhdGVEYXRlUmFuZ2UodGhpcy5kYXRlLCB0aGlzLl9taW5EYXRlLCB0aGlzLl9tYXhEYXRlKSkge1xuICAgICAgdGhpcy5lcnJvclBhdHRlcm4gPSB0aGlzLmVycm9yUGF0dGVybiB8fCAnRGF0YSBmb3JhIGRvIHBlcsOtb2RvJztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZToge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVycm9yUGF0dGVybiAhPT0gJycpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBjLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHN0YXR1cyA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnSU5WQUxJRCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXRvcm5hIHVtIG9iamV0byBkbyB0aXBvIFBvTWFzayBjb20gYSBtYXNjYXJhIGNvbmZpZ3VyYWRhLlxuICBwcm90ZWN0ZWQgYnVpbGRNYXNrKGZvcm1hdDogc3RyaW5nID0gdGhpcy5mb3JtYXQpIHtcbiAgICBsZXQgbWFzayA9IGZvcm1hdC50b1VwcGVyQ2FzZSgpO1xuXG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvREQvZywgJzk5Jyk7XG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvTU0vZywgJzk5Jyk7XG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvWVlZWS9nLCAnOTk5OScpO1xuXG4gICAgcmV0dXJuIG5ldyBQb01hc2sobWFzaywgdHJ1ZSk7XG4gIH1cblxuICBmb3JtYXRUaW1lem9uZUFuZEhvdXIob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBjb25zdCBvZmZzZXRBYnNvbHV0ZSA9IE1hdGguYWJzKG9mZnNldCk7XG4gICAgY29uc3QgdGltZXpvbmUgPVxuICAgICAgKG9mZnNldCA8IDAgPyAnKycgOiAnLScpICtcbiAgICAgICgnMDAnICsgTWF0aC5mbG9vcihvZmZzZXRBYnNvbHV0ZSAvIDYwKSkuc2xpY2UoLTIpICtcbiAgICAgICc6JyArXG4gICAgICAoJzAwJyArIChvZmZzZXRBYnNvbHV0ZSAlIDYwKSkuc2xpY2UoLTIpO1xuICAgIHRoaXMuaG91ciA9ICdUMDA6MDA6MDAnICsgdGltZXpvbmU7XG4gIH1cblxuICBhYnN0cmFjdCB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gIGFic3RyYWN0IHJlZnJlc2hWYWx1ZSh2YWx1ZTogRGF0ZSk6IHZvaWQ7XG59XG4iXX0=
592
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXItYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBb0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0QsT0FBTyxFQUFjLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7QUFFOUUsTUFBTSx5QkFBeUIsR0FBVyxZQUFZLENBQUM7QUFFdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzRUc7QUFFSCxNQUFNLE9BQWdCLHlCQUF5QjtJQW9WakM7SUFDQTtJQXBWWjs7Ozs7Ozs7OztPQVVHO0lBQzRELFNBQVMsR0FBWSxLQUFL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QTdDLEtBQUs7bUJBQUMsbUJBQW1CO1lBZUUsV0FBVztrQkFBdEMsS0FBSzttQkFBQyxlQUFlO1lBV0csV0FBVztrQkFBbkMsS0FBSzttQkFBQyxZQUFZO1lBU00sV0FBVztrQkFBbkMsS0FBSzttQkFBQyxZQUFZO1lBZU0sV0FBVztrQkFBbkMsS0FBSzttQkFBQyxZQUFZO1lBWU8sWUFBWTtrQkFBckMsS0FBSzttQkFBQyxpQkFBaUI7WUFLRixRQUFRO2tCQUE3QixLQUFLO21CQUFDLFNBQVM7WUFXUyxPQUFPO2tCQUEvQixLQUFLO21CQUFDLFlBQVk7WUEwQk0sT0FBTztrQkFBL0IsS0FBSzttQkFBQyxZQUFZO1lBaUNJLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVTtZQStCVSxTQUFTO2tCQUFuQyxLQUFLO21CQUFDLGNBQWM7WUFzQkUsTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVO1lBK0JrRCxTQUFTO2tCQUEzRSxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgY29udmVydERhdGVUb0lTT0RhdGUsXG4gIGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCxcbiAgY29udmVydElzb1RvRGF0ZSxcbiAgY29udmVydFRvQm9vbGVhbixcbiAgZm9ybWF0WWVhcixcbiAgaXNUeXBlb2YsXG4gIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IsXG4gIHNldFllYXJGcm9tMFRvMTAwLFxuICB2YWxpZGF0ZURhdGVSYW5nZVxufSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvTWFzayB9IGZyb20gJy4uL3BvLWlucHV0L3BvLW1hc2snO1xuaW1wb3J0IHsgZGF0ZUZhaWxlZCwgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLy4uL3ZhbGlkYXRvcnMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdCB9IGZyb20gJy4vZW51bXMvcG8tZGF0ZXBpY2tlci1pc28tZm9ybWF0LmVudW0nO1xuXG5jb25zdCBwb0RhdGVwaWNrZXJGb3JtYXREZWZhdWx0OiBzdHJpbmcgPSAnZGQvbW0veXl5eSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tZGF0ZXBpY2tlcmAgw6kgdW0gY29tcG9uZW50ZSBlc3BlY8OtZmljbyBwYXJhIG1hbmlwdWxhw6fDo28gZGUgZGF0YXMgcGVybWl0aW5kbyBhIGRpZ2l0YcOnw6NvIGUgLyBvdSBzZWxlw6fDo28uXG4gKlxuICogTyBmb3JtYXRvIGRlIGV4aWJpw6fDo28gZGEgZGF0YSwgb3Ugc2VqYSwgbyBmb3JtYXRvIHF1ZSDDqSBhcHJlc2VudGFkbyBhbyB1c3XDoXJpbyDDqSBvIGRkL21tL3l5eXksXG4gKiBtYXMgcG9kZW0gc2VyIGRlZmluaWRvcyBvdXRyb3MgcGFkcsO1ZXMgKHZlamEgbWFpcyBuYSBwcm9wcmllZGFkZSBgcC1mb3JtYXRgKS5cbiAqXG4gKiBPIGlkaW9tYSBwYWRyw6NvIGRvIGNhbGVuZMOhcmlvIHNlcsOhIGV4aWJpZG8gZGUgYWNvcmRvIGNvbSBvIG5hdmVnYWRvciwgY2FzbyB0ZW5oYSBuZWNlc3NpZGFkZSBkZSBhbHRlcmFyXG4gKiB1c2UgYSBwcm9wcmllZGFkZSBgcC1sb2NhbGVgLlxuICpcbiAqIE8gZGF0ZXBpY2tlciBhY2VpdGEgdHLDqnMgZm9ybWF0b3MgZGUgZGF0YTogbyBFODYwMURadyAoeXl5eS1tbS1kZFRoaDptbTpzcyt8LWhoOm1tKSwgbyBFODYwMURBdyAoeXl5eS1tbS1kZCkgZSBvXG4gKiBEYXRlIHBhZHLDo28gZG8gSmF2YXNjcmlwdC5cbiAqXG4gKiA+IFBvciBwYWRyw6NvLCBvIGZvcm1hdG8gZGUgc2HDrWRhIGRvICptb2RlbCogc2UgYWp1c3RhcsOhIGNvbmZvcm1lIG8gZm9ybWF0byBkZSBlbnRyYWRhLiBTZSBwb3IgYWNhc28gcHJlY2lzYXIgY29udHJvbGFyIG8gdmFsb3IgZGUgc2HDrWRhLFxuICogYSBwcm9wcmllZGFkZSBgcC1pc28tZm9ybWF0YCBwcm92w6ogZXNzZSBjb250cm9sZSBpbmRlcGVuZGVudGVtZW50ZSBkbyBmb3JtYXRvIGRlIGVudHJhZGEuIFZlamEgYWJhaXhvIG9zIGZvcm1hdG9zIGRpc3BvbsOtdmVpczpcbiAqXG4gKiAtIEZvcm1hdG8gZGUgZW50cmFkYSBlIHNhw61kYSAoRTg2MDFEWncpIC0gYCcyMDE3LTExLTI4VDAwOjAwOjAwLTAyOjAwJ2A7XG4gKlxuICogLSBGb3JtYXRvIGRlIGVudHJhZGEgZSBzYcOtZGEgKEU4NjAxREF3KSAtIGAnMjAxNy0xMS0yOCdgO1xuICpcbiAqIC0gRm9ybWF0byBkZSBlbnRyYWRhIChEYXRlKSAtIGBuZXcgRGF0ZSgyMDE3LCAxMCwgMjgpYCBlIHNhw61kYSAoRTg2MDFEQXcpIC0gYCcyMDE3LTExLTI4J2A7XG4gKlxuICogKipJbXBvcnRhbnRlOioqXG4gKlxuICogLSBQYXJhIHV0aWxpemFyIGRhdGFzIGNvbSBhbm8gaW5mZXJpb3IgYSAxMDAsIHZlcmlmaWNhciBvIGNvbXBvcnRhbWVudG8gZG8gW2BuZXcgRGF0ZWBdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanMvanNfZGF0ZXMuYXNwKVxuICogZSB1dGlsaXphciBvIG3DqXRvZG8gW2BzZXRGdWxsWWVhcmBdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvanNyZWZfc2V0ZnVsbHllYXIuYXNwKS5cbiAqIC0gQ2FzbyBhIGRhdGEgZXN0ZWphIGludsOhbGlkYSwgbyBgbW9kZWxgIHJlY2ViZXLDoSAqKidEYXRhIGludsOhbGlkYScqKi5cbiAqIC0gQ2FzbyBvIGBpbnB1dGAgZXN0ZWphIHBhc3NhbmRvIHVtIGBbKG5nTW9kZWwpXWAsIG1hcyBuw6NvIHRlbmhhIHVtIGBuYW1lYCwgZW50w6NvIGlyw6Egb2NvcnJlciB1bSBlcnJvXG4gKiBkbyBwcsOzcHJpbyBBbmd1bGFyIChgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiYCkuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIDxwby1kYXRlcGlja2VyXG4gKiAgIFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVcIlxuICogICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAqIDwvcG8tZGF0ZXBpY2tlcj5cbiAqIGBgYFxuICpcbiAqID4gTsOjbyBlc3F1ZcOnYSBkZSBpbXBvcnRhciBvIGBGb3Jtc01vZHVsZWAgZW0gc2V1IG3Ds2R1bG8sIHRhbCBjb21vIHBhcmEgdXRpbGl6YXIgbyBgaW5wdXQgZGVmYXVsdGAuXG4gKlxuICogIyMjIyBUb2tlbnMgY3VzdG9taXrDoXZlaXNcbiAqXG4gKiDDiSBwb3Nzw612ZWwgYWx0ZXJhciBvIGVzdGlsbyBkbyBjb21wb25lbnRlIHVzYW5kbyBvcyBzZWd1aW50ZXMgdG9rZW5zIChDU1MpOiA8YnI+XG4gKiBPYnM6IFPDsyDDqSBwb3Nzw612ZWwgcmVhbGl6YXIgYWx0ZXJhw6fDtWVzIGFvIGFkaWNpb25hciBhIGNsYXNzZSBgLnBvLWlucHV0YFxuICpcbiAqID4gUGFyYSBtYWlvcmVzIGluZm9ybWHDp8O1ZXMsIGFjZXNzZSBvIGd1aWEgW1BlcnNvbmFsaXphbmRvIG8gVGVtYSBQYWRyw6NvIGNvbSBUb2tlbnMgQ1NTXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy90aGVtZS1jdXN0b21pemF0aW9uKS5cbiAqXG4gKiB8IFByb3ByaWVkYWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3Jpw6fDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhbG9yIFBhZHLDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipEZWZhdWx0IFZhbHVlcyoqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtZmFtaWx5YCAgICAgICAgICAgICAgICAgICAgICAgIHwgRmFtw61saWEgdGlwb2dyw6FmaWNhIHVzYWRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1mb250LWZhbWlseS10aGVtZSlgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtc2l6ZWAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGFtYW5obyBkYSBmb250ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tZm9udC1zaXplLWRlZmF1bHQpYCAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS10ZXh0LWNvbG9yLXBsYWNlaG9sZGVyYCAmbmJzcDsgICAgICB8IENvciBwcmluY2lwYWwgZG8gdGV4dG8gZG8gcGxhY2Vob2xkZXIgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMzApYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIGRvIGRhdGVwaWNrZXIgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstNzApYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmRgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0wNSlgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1wYWRkaW5nYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByZWVuY2hpbWVudG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDAgMC41cmVtYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdGV4dC1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZG8gdGV4dG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstOTApYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqSG92ZXIqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1ob3ZlcmAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGhvdmVyICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWJyYW5kLTAxLWRhcmspYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1ob3ZlcmAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gaG92ZXIgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVzdClgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRm9jdXNlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGRlIGZvY3VzICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1kZWZhdWx0KWAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tb3V0bGluZS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgfCBDb3IgZG8gb3V0bGluZSBkbyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZm9jdXMpYCAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRGlzYWJsZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1kaXNhYmxlZGAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGRpc2FibGVkICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMzApYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1kaXNhYmxlZGAgICAgICAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGlzYWJsZWQgJm5ic3A7ICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRleHQtY29sb3ItZGlzYWJsZWRgICAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvIG5vIGVzdGFkbyBkaXNhYmxlZCAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTcwKWAgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9EYXRlcGlja2VyQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG8tZm9jdXMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRnVuw6fDo28gZXhlY3V0YWRhIHBhcmEgcmVhbGl6YXIgYSB2YWxpZGHDp8OjbyBhc3PDrW5jcm9uYSBwZXJzb25hbGl6YWRhLlxuICAgKiBFeGVjdXRhZGEgYW8gZGlzcGFyYXIgbyBvdXRwdXQgYGNoYW5nZWAuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWxvciBhdHVhbCBwcmVlbmNoaWRvIG5vIGNhbXBvLlxuICAgKlxuICAgKiBAcmV0dXJucyBSZXRvcm5hIE9ic2VydmFibGUgY29tIG8gdmFsb3IgYHRydWVgIHBhcmEgc2luYWxpemFyIG8gZXJybyBgZmFsc2VgIHBhcmEgaW5kaWNhciBxdWUgbsOjbyBow6EgZXJyby5cbiAgICovXG4gIEBJbnB1dCgncC1lcnJvci1hc3luYycpIGVycm9yQXN5bmM6ICh2YWx1ZSkgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKiBOb21lIGRvIGNvbXBvbmVudGUgZGF0ZXBpY2tlci4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1lbnNhZ2VtIGFwcmVzZW50YWRhIHF1YW5kbyBhIGRhdGEgZm9yIGludsOhbGlkYSBvdSBmb3JhIGRvIHBlcsOtb2RvLlxuICAgKlxuICAgKiA+IFBvciBwYWRyw6NvLCBlc3RhIG1lbnNhZ2VtIG7Do28gw6kgYXByZXNlbnRhZGEgcXVhbmRvIG8gY2FtcG8gZXN0aXZlciB2YXppbywgbWVzbW8gcXVlIGVsZSBzZWphIHJlcXVlcmlkby5cbiAgICogUGFyYSBleGliaXIgYSBtZW5zYWdlbSBjb20gbyBjYW1wbyB2YXppbywgdXRpbGl6ZSBhIHByb3ByaWVkYWRlIGBwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2VgIGVtIGNvbmp1bnRvLlxuICAgKi9cbiAgQElucHV0KCdwLWVycm9yLXBhdHRlcm4nKSBlcnJvclBhdHRlcm4/OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeGliZSBhIG1lbnNhZ2VtIHNldGFkYSBuYSBwcm9wcmllZGFkZSBgcC1lcnJvci1wYXR0ZXJuYCBzZSBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8gZSBmb3IgcmVxdWVyaWRvLlxuICAgKlxuICAgKiA+IE5lY2Vzc8OhcmlvIHF1ZSBhIHByb3ByaWVkYWRlIGBwLXJlcXVpcmVkYCBlc3RlamEgaGFiaWxpdGFkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkLWZpZWxkLWVycm9yLW1lc3NhZ2UnKSBzaG93RXJyb3JNZXNzYWdlUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIHNhaXIgZG8gY2FtcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWJsdXInKSBvbmJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBhbHRlcmFyIHZhbG9yIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBvbmNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBvZmZzZXQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGZpcnN0U3RhcnQgPSB0cnVlO1xuICBwcm90ZWN0ZWQgaG91cjogc3RyaW5nID0gJ1QwMDowMDowMC0wMDowMCc7XG4gIHByb3RlY3RlZCBpc0V4dGVuZGVkSVNPOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvYmpNYXNrOiBhbnk7XG4gIHByb3RlY3RlZCBvbkNoYW5nZU1vZGVsOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG4gIHByb3RlY3RlZCBvblRvdWNoZWRNb2RlbDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIHNob3J0TGFuZ3VhZ2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIGlzSW52YWxpZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGhhc1ZhbGlkYXRvclJlcXVpcmVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2Zvcm1hdD86IHN0cmluZyA9IHBvRGF0ZXBpY2tlckZvcm1hdERlZmF1bHQ7XG4gIHByaXZhdGUgX2lzb0Zvcm1hdDogUG9EYXRlcGlja2VySXNvRm9ybWF0O1xuICBwcml2YXRlIF9tYXhEYXRlOiBEYXRlO1xuICBwcml2YXRlIF9taW5EYXRlOiBEYXRlO1xuICBwcml2YXRlIF9ub0F1dG9jb21wbGV0ZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI/OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBwcmV2aW91c1ZhbHVlOiBhbnk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX2RhdGU6IERhdGU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgcHJvcHJpZWRhZGUgbmF0aXZhIGBhdXRvY29tcGxldGVgIGRvIGNhbXBvIGNvbW8gYG9mZmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1uby1hdXRvY29tcGxldGUnKSBzZXQgbm9BdXRvY29tcGxldGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9ub0F1dG9jb21wbGV0ZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5vQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub0F1dG9jb21wbGV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE1lbnNhZ2VtIHF1ZSBhcGFyZWNlcsOhIGVucXVhbnRvIG8gY2FtcG8gbsOjbyBlc3RpdmVyIHByZWVuY2hpZG8uXG4gICAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gaXNUeXBlb2YocGxhY2Vob2xkZXIsICdzdHJpbmcnKSA/IHBsYWNlaG9sZGVyIDogJyc7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqIERlc2FiaWxpdGEgbyBjYW1wby4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBzZXREaXNhYmxlZChkaXNhYmxlZDogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbChjb252ZXJ0RGF0ZVRvSVNPRXh0ZW5kZWQodGhpcy5kYXRlLCB0aGlzLmhvdXIpKTtcbiAgfVxuXG4gIC8qKiBUb3JuYSBvIGVsZW1lbnRvIHNvbWVudGUgbGVpdHVyYS4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgcmVhZG9ubHk/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgncC1yZWFkb25seScpIHNldCBzZXRSZWFkb25seShyZWFkb25seTogc3RyaW5nKSB7XG4gICAgdGhpcy5yZWFkb25seSA9IHJlYWRvbmx5ID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHJlYWRvbmx5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIHJlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgc2V0UmVxdWlyZWQocmVxdWlyZWQ6IHN0cmluZykge1xuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoY29udmVydERhdGVUb0lTT0V4dGVuZGVkKHRoaXMuZGF0ZSwgdGhpcy5ob3VyKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb2JyaWdhdMOzcmlvIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKi9cbiAgQElucHV0KCdwLXNob3ctcmVxdWlyZWQnKSBzaG93UmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSGFiaWxpdGEgYcOnw6NvIHBhcmEgbGltcGFyIG8gY2FtcG8uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIGNsZWFuPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtY2xlYW4nKSBzZXQgc2V0Q2xlYW4oY2xlYW46IHN0cmluZykge1xuICAgIHRoaXMuY2xlYW4gPSBjbGVhbiA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihjbGVhbik7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGRhdGEgbcOtbmltYSBwYXJhIG8gYHBvLWRhdGVwaWNrZXJgLlxuICAgKi9cbiAgQElucHV0KCdwLW1pbi1kYXRlJykgc2V0IG1pbkRhdGUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSwgMCwgMCwgMCk7XG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgdGhpcy5fbWluRGF0ZSA9IGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21pbkRhdGUgPSBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGRhdGEgbcOheGltYSBwYXJhIG8gYHBvLWRhdGVwaWNrZXJgLlxuICAgKi9cbiAgQElucHV0KCdwLW1heC1kYXRlJykgc2V0IG1heERhdGUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSwgMjMsIDU5LCA1OSk7XG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgdGhpcy5fbWF4RGF0ZSA9IGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21heERhdGUgPSBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGb3JtYXRvIGRlIGV4aWJpw6fDo28gZGEgZGF0YS5cbiAgICpcbiAgICogVmFsb3JlcyB2w6FsaWRvczpcbiAgICogIC0gYGRkL21tL3l5eXlgXG4gICAqICAtIGBtbS9kZC95eXl5YFxuICAgKiAgLSBgeXl5eS9tbS9kZGBcbiAgICpcbiAgICogQGRlZmF1bHQgYGRkL21tL3l5eXlgXG4gICAqL1xuICBASW5wdXQoJ3AtZm9ybWF0Jykgc2V0IGZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodmFsdWUubWF0Y2goL2RkLykgJiYgdmFsdWUubWF0Y2goL21tLykgJiYgdmFsdWUubWF0Y2goL3l5eXkvKSkge1xuICAgICAgICB0aGlzLl9mb3JtYXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICAgICAgcmVwbGFjZUZvcm1hdFNlcGFyYXRvcih0aGlzLmZvcm1hdCwgdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0RGF0ZVNlcGFyYXRvcih0aGlzLmxvY2FsZSkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVmcmVzaFZhbHVlKHRoaXMuZGF0ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZm9ybWF0ID0gcG9EYXRlcGlja2VyRm9ybWF0RGVmYXVsdDtcbiAgICB0aGlzLm9iak1hc2sgPSB0aGlzLmJ1aWxkTWFzayhcbiAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICk7XG4gIH1cblxuICBnZXQgZm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQYWRyw6NvIGRlIGZvcm1hdGHDp8OjbyBwYXJhIHNhw61kYSBkbyAqbW9kZWwqLCBpbmRlcGVuZGVudGVtZW50ZSBkbyBmb3JtYXRvIGRlIGVudHJhZGEuXG4gICAqXG4gICAqID4gVmVqYSBvcyB2YWxvcmVzIHbDoWxpZG9zIG5vICplbnVtKiBgUG9EYXRlcGlja2VySXNvRm9ybWF0YC5cbiAgICovXG4gIEBJbnB1dCgncC1pc28tZm9ybWF0Jykgc2V0IGlzb0Zvcm1hdCh2YWx1ZTogUG9EYXRlcGlja2VySXNvRm9ybWF0KSB7XG4gICAgaWYgKE9iamVjdC52YWx1ZXMoUG9EYXRlcGlja2VySXNvRm9ybWF0KS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2lzb0Zvcm1hdCA9IHZhbHVlO1xuICAgICAgdGhpcy5pc0V4dGVuZGVkSVNPID0gdmFsdWUgPT09IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdC5FeHRlbmRlZDtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNvRm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLl9pc29Gb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJZGlvbWEgZG8gRGF0ZXBpY2tlci5cbiAgICpcbiAgICogPiBPIGxvY2FsZSBwYWRyw6NvIHNlcmEgcmVjdXBlcmFkbyBjb20gYmFzZSBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBfbG9jYWxlPzogc3RyaW5nO1xuICBASW5wdXQoJ3AtbG9jYWxlJykgc2V0IGxvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2NhbGUgPSB2YWx1ZS5sZW5ndGggPj0gMiA/IHZhbHVlIDogcG9Mb2NhbGVEZWZhdWx0O1xuICAgICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9jYWxlID0gdGhpcy5zaG9ydExhbmd1YWdlO1xuICAgICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soXG4gICAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoVmFsdWUodGhpcy5kYXRlKTtcbiAgfVxuICBnZXQgbG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGUgfHwgdGhpcy5zaG9ydExhbmd1YWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGNhbGVuZMOhcmlvIGRvIERhdGVQaWNrZXIgc2Vyw6EgaW5jbHXDrWRvIG5vIGJvZHkgZGEgcMOhZ2luYSwgZW0gdmV6IGRlIHN1c3BlbnNvIGp1bnRvIGFvIGNhbXBvIGRlIGVudHJhZGEgZG8gY29tcG9uZW50ZS5cbiAgICogRXNzYSBvcMOnw6NvIMOpIMO6dGlsIGVtIGNlbsOhcmlvcyBvbmRlIG8gRGF0ZVBpY2tlciBwcmVjaXNhIHNlciByZW5kZXJpemFkbyBmb3JhIGRvIGNvbnRlw7pkbyBwcmluY2lwYWwgZGEgcMOhZ2luYSxcbiAgICogY29tbyBlbSBmb3JtdWzDoXJpb3MgcXVlIHV0aWxpemFtIHNjcm9sbCBvdSBjb250YWluZXJzIGNvbSBvdmVyZmxvdyBlc2NvbmRpZG8uXG4gICAqXG4gICAqID4gT2JzOiBPIHVzbyBkZXNzYSBwcm9wcmllZGFkZSBwb2RlIGludGVyZmVyaXIgbmEgc2VxdcOqbmNpYSBkZSB0YWJ1bGHDp8OjbyBkYSBww6FnaW5hLCBlc3BlY2lhbG1lbnRlIGVtIGZvcm11bMOhcmlvcyBsb25nb3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hcHBlbmQtaW4tYm9keScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhcHBlbmRCb3g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBzZXQgZGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCBmYWxzZSwgZmFsc2UpIDogdmFsdWU7XG4gIH1cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub2Zmc2V0ID0gbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgIHRoaXMuZm9ybWF0VGltZXpvbmVBbmRIb3VyKHRoaXMub2Zmc2V0KTtcbiAgICAvLyBDbGFzc2UgZGUgbcOhc2NhcmFcbiAgICB0aGlzLm9iak1hc2sgPSB0aGlzLmJ1aWxkTWFzayhcbiAgICAgIHJlcGxhY2VGb3JtYXRTZXBhcmF0b3IodGhpcy5mb3JtYXQsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldERhdGVTZXBhcmF0b3IodGhpcy5sb2NhbGUpKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8vIENvbnZlcnRlIHVtIG9iamV0byBzdHJpbmcgZW0gRGF0ZVxuICBnZXREYXRlRnJvbVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkYXkgPSBwYXJzZUludChkYXRlU3RyaW5nLnN1YnN0cmluZyh0aGlzLmZvcm1hdC5pbmRleE9mKCdkJyksIHRoaXMuZm9ybWF0LmluZGV4T2YoJ2QnKSArIDIpLCAxMCk7XG4gICAgY29uc3QgbW9udGggPSBwYXJzZUludChkYXRlU3RyaW5nLnN1YnN0cmluZyh0aGlzLmZvcm1hdC5pbmRleE9mKCdtJyksIHRoaXMuZm9ybWF0LmluZGV4T2YoJ20nKSArIDIpLCAxMCkgLSAxO1xuICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChkYXRlU3RyaW5nLnN1YnN0cmluZyh0aGlzLmZvcm1hdC5pbmRleE9mKCd5JyksIHRoaXMuZm9ybWF0LmluZGV4T2YoJ3knKSArIDQpLCAxMCk7XG5cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSk7XG5cbiAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHllYXIgJiYgZGF0ZS5nZXRNb250aCgpID09PSBtb250aCAmJiBkYXRlLmdldERhdGUoKSA9PT0gZGF5ID8gZGF0ZSA6IG51bGw7XG4gIH1cblxuICAvLyBGb3JtYXRhIGEgZGF0YS5cbiAgZm9ybWF0VG9EYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgbGV0IGRhdGVGb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdDtcblxuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ2RkJywgKCcwJyArIHZhbHVlLmdldERhdGUoKSkuc2xpY2UoLTIpKTtcbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCdtbScsICgnMCcgKyAodmFsdWUuZ2V0TW9udGgoKSArIDEpKS5zbGljZSgtMikpO1xuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ3l5eXknLCBmb3JtYXRZZWFyKHZhbHVlLmdldEZ1bGxZZWFyKCkpKTtcblxuICAgIHJldHVybiBkYXRlRm9ybWF0dGVkO1xuICB9XG5cbiAgLy8gTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGNvbnRyb2xhciBvIG1vZGVsby5cbiAgY29udHJvbE1vZGVsKGRhdGU6IERhdGUpIHtcbiAgICB0aGlzLmRhdGUgPSBkYXRlO1xuICAgIGlmIChkYXRlICYmIHRoaXMuaXNFeHRlbmRlZElTTykge1xuICAgICAgdGhpcy5jYWxsT25DaGFuZ2UoY29udmVydERhdGVUb0lTT0V4dGVuZGVkKHRoaXMuZGF0ZSwgdGhpcy5ob3VyKSk7XG4gICAgfSBlbHNlIGlmIChkYXRlICYmICF0aGlzLmlzRXh0ZW5kZWRJU08pIHtcbiAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKGNvbnZlcnREYXRlVG9JU09EYXRlKHRoaXMuZGF0ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlID09PSB1bmRlZmluZWQgPyB0aGlzLmNhbGxPbkNoYW5nZSgnJykgOiB0aGlzLmNhbGxPbkNoYW5nZSgnRGF0YSBpbnbDoWxpZGEnKTtcbiAgICB9XG4gIH1cblxuICAvLyBFeGVjdXRhIGEgZnVuw6fDo28gb25DaGFuZ2VcbiAgY2FsbE9uQ2hhbmdlKHZhbHVlOiBhbnksIHJldHJ5OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlTW9kZWwgJiYgdmFsdWUgIT09IHRoaXMucHJldmlvdXNWYWx1ZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZU1vZGVsKHZhbHVlKTtcbiAgICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IHZhbHVlO1xuICAgIH0gZWxzZSBpZiAocmV0cnkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jYWxsT25DaGFuZ2UodmFsdWUsIGZhbHNlKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBhcyBtdWRhbsOnYXMgZSBuw6NvIGF0dWFsaXphciBhdXRvbWF0aWNhbWVudGUgbyBNb2RlbFxuICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VNb2RlbCA9IGZ1bmM7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBhcyBtdWRhbsOnYXMgZSBuw6NvIGF0dWFsaXphciBhdXRvbWF0aWNhbWVudGUgbyBNb2RlbFxuICByZWdpc3Rlck9uVG91Y2hlZChmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZE1vZGVsID0gZnVuYztcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgLy8gVmVyaWZpY2Egc2UgasOhIHBvc3N1aSBhbGd1bSBlcnJvciBwYXR0ZXJuIHBhZHLDo28uXG4gICAgdGhpcy5lcnJvclBhdHRlcm4gPVxuICAgICAgdGhpcy5lcnJvclBhdHRlcm4gIT09ICdEYXRhIGludsOhbGlkYScgJiYgdGhpcy5lcnJvclBhdHRlcm4gIT09ICdEYXRhIGZvcmEgZG8gcGVyw61vZG8nID8gdGhpcy5lcnJvclBhdHRlcm4gOiAnJztcblxuICAgIGlmICghdGhpcy5oYXNWYWxpZGF0b3JSZXF1aXJlZCAmJiB0aGlzLnNob3dFcnJvck1lc3NhZ2VSZXF1aXJlZCAmJiBjLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSkge1xuICAgICAgdGhpcy5oYXNWYWxpZGF0b3JSZXF1aXJlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGVGYWlsZWQoYy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gdGhpcy5lcnJvclBhdHRlcm4gfHwgJ0RhdGEgaW52w6FsaWRhJztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZToge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBjLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlICYmICF2YWxpZGF0ZURhdGVSYW5nZSh0aGlzLmRhdGUsIHRoaXMuX21pbkRhdGUsIHRoaXMuX21heERhdGUpKSB7XG4gICAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuIHx8ICdEYXRhIGZvcmEgZG8gcGVyw61vZG8nO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnJykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IGMuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoc3RhdHVzID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdJTlZBTElEJykge1xuICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwobW9kZWw6IGFueSkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UobW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldG9ybmEgdW0gb2JqZXRvIGRvIHRpcG8gUG9NYXNrIGNvbSBhIG1hc2NhcmEgY29uZmlndXJhZGEuXG4gIHByb3RlY3RlZCBidWlsZE1hc2soZm9ybWF0OiBzdHJpbmcgPSB0aGlzLmZvcm1hdCkge1xuICAgIGxldCBtYXNrID0gZm9ybWF0LnRvVXBwZXJDYXNlKCk7XG5cbiAgICBtYXNrID0gbWFzay5yZXBsYWNlKC9ERC9nLCAnOTknKTtcbiAgICBtYXNrID0gbWFzay5yZXBsYWNlKC9NTS9nLCAnOTknKTtcbiAgICBtYXNrID0gbWFzay5yZXBsYWNlKC9ZWVlZL2csICc5OTk5Jyk7XG5cbiAgICByZXR1cm4gbmV3IFBvTWFzayhtYXNrLCB0cnVlKTtcbiAgfVxuXG4gIGZvcm1hdFRpbWV6b25lQW5kSG91cihvZmZzZXQ6IG51bWJlcikge1xuICAgIGNvbnN0IG9mZnNldEFic29sdXRlID0gTWF0aC5hYnMob2Zmc2V0KTtcbiAgICBjb25zdCB0aW1lem9uZSA9XG4gICAgICAob2Zmc2V0IDwgMCA/ICcrJyA6ICctJykgK1xuICAgICAgKCcwMCcgKyBNYXRoLmZsb29yKG9mZnNldEFic29sdXRlIC8gNjApKS5zbGljZSgtMikgK1xuICAgICAgJzonICtcbiAgICAgICgnMDAnICsgKG9mZnNldEFic29sdXRlICUgNjApKS5zbGljZSgtMik7XG4gICAgdGhpcy5ob3VyID0gJ1QwMDowMDowMCcgKyB0aW1lem9uZTtcbiAgfVxuXG4gIGFic3RyYWN0IHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgcmVmcmVzaFZhbHVlKHZhbHVlOiBEYXRlKTogdm9pZDtcbn1cbiJdfQ==