@data-client/core 0.18.0 → 0.18.2

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 (58) hide show
  1. package/CHANGELOG.md +147 -1
  2. package/dist/index.js +19 -11
  3. package/dist/index.umd.min.js +1 -1
  4. package/dist/mock.js +19 -11
  5. package/legacy/actions.js +1 -1
  6. package/legacy/controller/Controller.js +11 -4
  7. package/legacy/controller/setManyTypes.js +2 -0
  8. package/legacy/manager/DevtoolsManager.js +9 -9
  9. package/legacy/mock/MockController.js +1 -1
  10. package/legacy/mock/fixtureTypes.js +1 -1
  11. package/legacy/mock/mockState.js +1 -1
  12. package/lib/actionTypes.d.ts +11 -11
  13. package/lib/actions.d.ts +1 -1
  14. package/lib/actions.d.ts.map +1 -1
  15. package/lib/actions.js +1 -1
  16. package/lib/controller/Controller.d.ts +13 -4
  17. package/lib/controller/Controller.d.ts.map +1 -1
  18. package/lib/controller/Controller.js +11 -4
  19. package/lib/controller/ensurePojo.d.ts.map +1 -1
  20. package/lib/controller/setManyTypes.d.ts +69 -0
  21. package/lib/controller/setManyTypes.d.ts.map +1 -0
  22. package/lib/controller/setManyTypes.js +2 -0
  23. package/lib/manager/DefaultConnectionListener.d.ts.map +1 -1
  24. package/lib/manager/DevtoolsManager.d.ts.map +1 -1
  25. package/lib/manager/DevtoolsManager.js +9 -9
  26. package/lib/manager/LogoutManager.d.ts.map +1 -1
  27. package/lib/manager/NetworkManager.d.ts.map +1 -1
  28. package/lib/manager/PollingSubscription.d.ts.map +1 -1
  29. package/lib/manager/SubscriptionManager.d.ts.map +1 -1
  30. package/lib/mock/MockController.d.ts +1 -1
  31. package/lib/mock/MockController.d.ts.map +1 -1
  32. package/lib/mock/MockController.js +1 -1
  33. package/lib/mock/fixtureTypes.d.ts +2 -2
  34. package/lib/mock/fixtureTypes.d.ts.map +1 -1
  35. package/lib/mock/fixtureTypes.js +1 -1
  36. package/lib/mock/mockState.js +1 -1
  37. package/lib/state/GCPolicy.d.ts.map +1 -1
  38. package/lib/state/reducer/expireReducer.d.ts +11 -11
  39. package/lib/state/reducer/invalidateReducer.d.ts +14 -14
  40. package/package.json +6 -5
  41. package/src/actions.ts +1 -1
  42. package/src/controller/Controller.ts +26 -6
  43. package/src/controller/__tests__/getResponse.ts +105 -0
  44. package/src/controller/setManyTypes.ts +114 -0
  45. package/src/manager/DevtoolsManager.ts +11 -8
  46. package/src/manager/__tests__/networkManager.ts +8 -1
  47. package/src/mock/MockController.ts +5 -2
  48. package/src/mock/__tests__/MockController.ts +15 -0
  49. package/src/mock/fixtureTypes.ts +3 -4
  50. package/src/mock/mockState.ts +1 -1
  51. package/ts3.4/actionTypes.d.ts +11 -11
  52. package/ts3.4/actions.d.ts +1 -1
  53. package/ts3.4/controller/Controller.d.ts +10 -7
  54. package/ts3.4/controller/setManyTypes.d.ts +75 -0
  55. package/ts3.4/mock/MockController.d.ts +1 -1
  56. package/ts3.4/mock/fixtureTypes.d.ts +2 -2
  57. package/ts3.4/state/reducer/expireReducer.d.ts +11 -11
  58. package/ts3.4/state/reducer/invalidateReducer.d.ts +14 -14
package/lib/actions.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBEZW5vcm1hbGl6ZSxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEVudGl0eVBhdGgsXG4gIFF1ZXJ5YWJsZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgU0VULFxuICBSRVNFVCxcbiAgRkVUQ0gsXG4gIFNVQlNDUklCRSxcbiAgVU5TVUJTQ1JJQkUsXG4gIElOVkFMSURBVEUsXG4gIEdDLFxuICBPUFRJTUlTVElDLFxuICBJTlZBTElEQVRFQUxMLFxuICBFWFBJUkVBTEwsXG4gIFNFVF9SRVNQT05TRSxcbn0gZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuXG50eXBlIEVuZHBvaW50QW5kVXBkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbn07XG50eXBlIEVuZHBvaW50RGVmYXVsdCA9IEVuZHBvaW50SW50ZXJmYWNlICYge1xuICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEVuZHBvaW50SW50ZXJmYWNlPjtcbn07XG5cbi8qKiBHZW5lcmFsIG1ldGEtZGF0YSBmb3Igb3BlcmF0b3JzICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbk1ldGEge1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGF0ZTogbnVtYmVyO1xuICByZWFkb25seSBleHBpcmVzQXQ6IG51bWJlcjtcbn1cblxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zZXQoKSAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRBY3Rpb248UyBleHRlbmRzIFF1ZXJ5YWJsZSA9IGFueT4ge1xuICB0eXBlOiB0eXBlb2YgU0VUO1xuICBzY2hlbWE6IFM7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBtZXRhOiBBY3Rpb25NZXRhO1xuICB2YWx1ZToge30gfCAoKHByZXZpb3VzVmFsdWU6IERlbm9ybWFsaXplPFM+KSA9PiB7fSk7XG59XG5cbi8qIHNldFJlc3BvbnNlICovXG5leHBvcnQgaW50ZXJmYWNlIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTRVRfUkVTUE9OU0U7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG4gIG1ldGE6IEFjdGlvbk1ldGE7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNldFJlc3BvbnNlQWN0aW9uU3VjY2VzczxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiBleHRlbmRzIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxFPiB7XG4gIHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPjtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2V0UmVzcG9uc2VBY3Rpb25FcnJvcjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiBleHRlbmRzIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxFPiB7XG4gIHJlc3BvbnNlOiBVbmtub3duRXJyb3I7XG4gIGVycm9yOiB0cnVlO1xufVxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zZXRSZXNwb25zZSgpICovXG5leHBvcnQgdHlwZSBTZXRSZXNwb25zZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiA9IFNldFJlc3BvbnNlQWN0aW9uU3VjY2VzczxFPiB8IFNldFJlc3BvbnNlQWN0aW9uRXJyb3I8RT47XG5cbi8qIEZFVENIICovXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoTWV0YSB7XG4gIGZldGNoZWRBdDogbnVtYmVyO1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gIHByb21pc2U6IFByb21pc2VMaWtlPGFueT47XG59XG5cbi8qKiBBY3Rpb24gZm9yIENvbnRyb2xsZXIuZmV0Y2goKSAqL1xuZXhwb3J0IGludGVyZmFjZSBGZXRjaEFjdGlvbjxFIGV4dGVuZHMgRW5kcG9pbnRBbmRVcGRhdGU8RT4gPSBFbmRwb2ludERlZmF1bHQ+IHtcbiAgdHlwZTogdHlwZW9mIEZFVENIO1xuICBlbmRwb2ludDogRTtcbiAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICBrZXk6IHN0cmluZztcbiAgbWV0YTogRmV0Y2hNZXRhO1xufVxuXG4vKiBPUFRJTUlTVElDICovXG4vKiogQWN0aW9uIGZvciBFbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UoKSAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpbWlzdGljQWN0aW9uPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRBbmRVcGRhdGU8RT4gPSBFbmRwb2ludERlZmF1bHQsXG4+IHtcbiAgdHlwZTogdHlwZW9mIE9QVElNSVNUSUM7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG4gIG1ldGE6IEFjdGlvbk1ldGE7XG4gIGVycm9yPzogZmFsc2U7XG59XG5cbi8qIFNVQlNDUklCRSAqL1xuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zdWJzY3JpYmUoKSAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpYmVBY3Rpb248XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgU1VCU0NSSUJFO1xuICBlbmRwb2ludDogRTtcbiAgYXJnczogcmVhZG9ubHkgYW55W107XG4gIGtleTogc3RyaW5nO1xufVxuXG4vKiogQWN0aW9uIGZvciBDb250cm9sbGVyLnVuc3Vic2NyaWJlKCkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5zdWJzY3JpYmVBY3Rpb248XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgVU5TVUJTQ1JJQkU7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG59XG5cbi8qIEVYUElSWSAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHBpcmVBbGxBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgRVhQSVJFQUxMO1xuICB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW47XG59XG5cbi8qIElOVkFMSURBVEUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZGF0ZUFsbEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBJTlZBTElEQVRFQUxMO1xuICB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZGF0ZUFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBJTlZBTElEQVRFO1xuICBrZXk6IHN0cmluZztcbn1cblxuLyogUkVTRVQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgUkVTRVQ7XG4gIGRhdGU6IG51bWJlcjtcbn1cblxuLyogR0MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgR0NBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgR0M7XG4gIGVudGl0aWVzOiBFbnRpdHlQYXRoW107XG4gIGVuZHBvaW50czogc3RyaW5nW107XG59XG5cbi8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9BY3Rpb25zICovXG5leHBvcnQgdHlwZSBBY3Rpb25UeXBlcyA9XG4gIHwgRmV0Y2hBY3Rpb25cbiAgfCBPcHRpbWlzdGljQWN0aW9uXG4gIHwgU2V0QWN0aW9uXG4gIHwgU2V0UmVzcG9uc2VBY3Rpb25cbiAgfCBTdWJzY3JpYmVBY3Rpb25cbiAgfCBVbnN1YnNjcmliZUFjdGlvblxuICB8IEludmFsaWRhdGVBY3Rpb25cbiAgfCBJbnZhbGlkYXRlQWxsQWN0aW9uXG4gIHwgRXhwaXJlQWxsQWN0aW9uXG4gIHwgUmVzZXRBY3Rpb25cbiAgfCBHQ0FjdGlvbjtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBEZW5vcm1hbGl6ZSxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEVudGl0eVBhdGgsXG4gIFF1ZXJ5YWJsZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgU0VULFxuICBSRVNFVCxcbiAgRkVUQ0gsXG4gIFNVQlNDUklCRSxcbiAgVU5TVUJTQ1JJQkUsXG4gIElOVkFMSURBVEUsXG4gIEdDLFxuICBPUFRJTUlTVElDLFxuICBJTlZBTElEQVRFQUxMLFxuICBFWFBJUkVBTEwsXG4gIFNFVF9SRVNQT05TRSxcbn0gZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuXG50eXBlIEVuZHBvaW50QW5kVXBkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbn07XG50eXBlIEVuZHBvaW50RGVmYXVsdCA9IEVuZHBvaW50SW50ZXJmYWNlICYge1xuICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEVuZHBvaW50SW50ZXJmYWNlPjtcbn07XG5cbi8qKiBHZW5lcmFsIG1ldGEtZGF0YSBmb3Igb3BlcmF0b3JzICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbk1ldGEge1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGF0ZTogbnVtYmVyO1xuICByZWFkb25seSBleHBpcmVzQXQ6IG51bWJlcjtcbn1cblxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zZXQoKSAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRBY3Rpb248UyBleHRlbmRzIFF1ZXJ5YWJsZSA9IGFueT4ge1xuICB0eXBlOiB0eXBlb2YgU0VUO1xuICBzY2hlbWE6IFM7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBtZXRhOiBBY3Rpb25NZXRhO1xuICB2YWx1ZToge30gfCAoKHByZXZpb3VzVmFsdWU6IERlbm9ybWFsaXplPFM+KSA9PiB7fSk7XG59XG5cbi8qIHNldFJlc3BvbnNlICovXG5leHBvcnQgaW50ZXJmYWNlIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTRVRfUkVTUE9OU0U7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG4gIG1ldGE6IEFjdGlvbk1ldGE7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNldFJlc3BvbnNlQWN0aW9uU3VjY2VzczxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiBleHRlbmRzIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxFPiB7XG4gIHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPjtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2V0UmVzcG9uc2VBY3Rpb25FcnJvcjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiBleHRlbmRzIFNldFJlc3BvbnNlQWN0aW9uQmFzZTxFPiB7XG4gIHJlc3BvbnNlOiBVbmtub3duRXJyb3I7XG4gIGVycm9yOiB0cnVlO1xufVxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5zZXRSZXNwb25zZSgpICovXG5leHBvcnQgdHlwZSBTZXRSZXNwb25zZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiA9IFNldFJlc3BvbnNlQWN0aW9uU3VjY2VzczxFPiB8IFNldFJlc3BvbnNlQWN0aW9uRXJyb3I8RT47XG5cbi8qIEZFVENIICovXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoTWV0YSB7XG4gIGZldGNoZWRBdDogbnVtYmVyO1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gIHByb21pc2U6IFByb21pc2U8YW55Pjtcbn1cblxuLyoqIEFjdGlvbiBmb3IgQ29udHJvbGxlci5mZXRjaCgpICovXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoQWN0aW9uPEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdD4ge1xuICB0eXBlOiB0eXBlb2YgRkVUQ0g7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl07XG4gIGtleTogc3RyaW5nO1xuICBtZXRhOiBGZXRjaE1ldGE7XG59XG5cbi8qIE9QVElNSVNUSUMgKi9cbi8qKiBBY3Rpb24gZm9yIEVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZSgpICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXN0aWNBY3Rpb248XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgT1BUSU1JU1RJQztcbiAgZW5kcG9pbnQ6IEU7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBrZXk6IHN0cmluZztcbiAgbWV0YTogQWN0aW9uTWV0YTtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cblxuLyogU1VCU0NSSUJFICovXG4vKiogQWN0aW9uIGZvciBDb250cm9sbGVyLnN1YnNjcmliZSgpICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmliZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTVUJTQ1JJQkU7XG4gIGVuZHBvaW50OiBFO1xuICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAga2V5OiBzdHJpbmc7XG59XG5cbi8qKiBBY3Rpb24gZm9yIENvbnRyb2xsZXIudW5zdWJzY3JpYmUoKSAqL1xuZXhwb3J0IGludGVyZmFjZSBVbnN1YnNjcmliZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBVTlNVQlNDUklCRTtcbiAgZW5kcG9pbnQ6IEU7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBrZXk6IHN0cmluZztcbn1cblxuLyogRVhQSVJZICovXG5leHBvcnQgaW50ZXJmYWNlIEV4cGlyZUFsbEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBFWFBJUkVBTEw7XG4gIHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuLyogSU5WQUxJREFURSAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkYXRlQWxsQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIElOVkFMSURBVEVBTEw7XG4gIHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkYXRlQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIElOVkFMSURBVEU7XG4gIGtleTogc3RyaW5nO1xufVxuXG4vKiBSRVNFVCAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBSRVNFVDtcbiAgZGF0ZTogbnVtYmVyO1xufVxuXG4vKiBHQyAqL1xuZXhwb3J0IGludGVyZmFjZSBHQ0FjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBHQztcbiAgZW50aXRpZXM6IEVudGl0eVBhdGhbXTtcbiAgZW5kcG9pbnRzOiBzdHJpbmdbXTtcbn1cblxuLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0FjdGlvbnMgKi9cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGVzID1cbiAgfCBGZXRjaEFjdGlvblxuICB8IE9wdGltaXN0aWNBY3Rpb25cbiAgfCBTZXRBY3Rpb25cbiAgfCBTZXRSZXNwb25zZUFjdGlvblxuICB8IFN1YnNjcmliZUFjdGlvblxuICB8IFVuc3Vic2NyaWJlQWN0aW9uXG4gIHwgSW52YWxpZGF0ZUFjdGlvblxuICB8IEludmFsaWRhdGVBbGxBY3Rpb25cbiAgfCBFeHBpcmVBbGxBY3Rpb25cbiAgfCBSZXNldEFjdGlvblxuICB8IEdDQWN0aW9uO1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
@@ -1,6 +1,7 @@
1
1
  import type { ErrorTypes, SnapshotInterface, Schema, Denormalize, Queryable, SchemaArgs } from '@data-client/normalizr';
2
2
  import { ExpiryStatus, EndpointInterface, FetchFunction, ResolveType, DenormalizeNullable, MemoCache } from '@data-client/normalizr';
3
3
  import AbortOptimistic from './AbortOptimistic.js';
4
+ import type { SkipInfer, SetInvalidateSchema, SetManySchema, SetManyValue, SetValue } from './setManyTypes.js';
4
5
  import type { EndpointUpdateFunction } from './types.js';
5
6
  import { ReduxMiddlewareAPI } from '../manager/applyManager.js';
6
7
  import type { GCInterface } from '../state/GCPolicy.js';
@@ -54,14 +55,14 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
54
55
  */
55
56
  fetch: <E extends EndpointInterface & {
56
57
  update?: EndpointUpdateFunction<E>;
57
- }>(endpoint: E, ...args: readonly [...Parameters<E>]) => E["schema"] extends undefined | null ? ReturnType<E> : Promise<Denormalize<E["schema"]>>;
58
+ }>(endpoint: E, ...args: readonly [...Parameters<E>]) => E['schema'] extends undefined | null ? ReturnType<E> : Promise<Denormalize<E['schema']>>;
58
59
  /**
59
60
  * Fetches only if endpoint is considered 'stale'; otherwise returns undefined
60
61
  * @see https://dataclient.io/docs/api/Controller#fetchIfStale
61
62
  */
62
63
  fetchIfStale: <E extends EndpointInterface & {
63
64
  update?: EndpointUpdateFunction<E>;
64
- }>(endpoint: E, ...args: readonly [...Parameters<E>]) => E["schema"] extends undefined | null ? ReturnType<E> | ResolveType<E> : Promise<Denormalize<E["schema"]>> | Denormalize<E["schema"]>;
65
+ }>(endpoint: E, ...args: readonly [...Parameters<E>]) => E['schema'] extends undefined | null ? ReturnType<E> | ResolveType<E> : Promise<Denormalize<E['schema']>> | Denormalize<E['schema']>;
65
66
  /**
66
67
  * Forces refetching and suspense on useSuspense with the same Endpoint and parameters.
67
68
  * @see https://dataclient.io/docs/api/Controller#invalidate
@@ -92,8 +93,16 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
92
93
  * Sets value for the Queryable and args.
93
94
  * @see https://dataclient.io/docs/api/Controller#set
94
95
  */
95
- set<S extends Queryable>(schema: S, ...rest: readonly [...SchemaArgs<S>, (previousValue: Denormalize<S>) => {}]): Promise<void>;
96
- set<S extends Queryable>(schema: S, ...rest: readonly [...SchemaArgs<S>, {}]): Promise<void>;
96
+ set<S extends Queryable>(schema: S, ...rest: readonly [
97
+ ...SchemaArgs<S>,
98
+ SkipInfer<SetValue<S> | ((previousValue: Denormalize<S>) => SetValue<S>), S>
99
+ ]): Promise<void>;
100
+ /**
101
+ * Sets every row of an Array or Values of one Entity (or Union) in one normalize,
102
+ * or invalidates the one Entity an Invalidate schema's value identifies.
103
+ * @see https://dataclient.io/docs/api/Controller#set
104
+ */
105
+ set<S extends SetManySchema | SetInvalidateSchema>(schema: S, value: SkipInfer<SetManyValue<S>, S>): Promise<void>;
97
106
  /**
98
107
  * Sets response for the Endpoint and args.
99
108
  * @see https://dataclient.io/docs/api/Controller#setResponse
@@ -1 +1 @@
1
- {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/controller/Controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/controller/Controller.ts"],"names":[],"mappings":"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"}
@@ -187,6 +187,11 @@ export default class Controller {
187
187
  * Sets value for the Queryable and args.
188
188
  * @see https://dataclient.io/docs/api/Controller#set
189
189
  */
190
+ /**
191
+ * Sets every row of an Array or Values of one Entity (or Union) in one normalize,
192
+ * or invalidates the one Entity an Invalidate schema's value identifies.
193
+ * @see https://dataclient.io/docs/api/Controller#set
194
+ */
190
195
  set(schema, ...rest) {
191
196
  const value = rest[rest.length - 1];
192
197
  const action = createSet(schema, {
@@ -256,7 +261,7 @@ export default class Controller {
256
261
  } else if (!schema || !requiresDenormalize(schema)) {
257
262
  return {
258
263
  data: cacheEndpoints,
259
- expiryStatus: this.getExpiryStatus(!cacheEndpoints, !!endpoint.invalidIfStale, meta),
264
+ expiryStatus: this.getExpiryStatus(cacheEndpoints === undefined, !!endpoint.invalidIfStale, meta),
260
265
  expiresAt: expiresAt || 0,
261
266
  countRef: this.gcPolicy.createCountRef({
262
267
  key
@@ -273,9 +278,11 @@ export default class Controller {
273
278
  // fallback to entity expiry time
274
279
  else expiresAt = entityExpiresAt(paths, state.entitiesMeta);
275
280
  }
281
+ const invalidData = typeof data === 'symbol';
276
282
  return {
277
- data,
278
- expiryStatus: this.getExpiryStatus(typeof data === 'symbol', !!endpoint.invalidIfStale || isInvalid, meta),
283
+ // INVALID symbol (e.g. deleted entity) is an internal marker; expose it as missing data
284
+ data: invalidData ? undefined : data,
285
+ expiryStatus: this.getExpiryStatus(invalidData, !!endpoint.invalidIfStale || isInvalid, meta),
279
286
  expiresAt,
280
287
  countRef: this.gcPolicy.createCountRef({
281
288
  key,
@@ -415,4 +422,4 @@ function extractStateAndArgs(rest) {
415
422
  // this is typescript generics breaking
416
423
  return [rest[l - 1], args];
417
424
  }
418
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHBpcnlTdGF0dXMiLCJNZW1vQ2FjaGUiLCJkZW5vcm1hbGl6ZSIsInZhbGlkYXRlUXVlcnlLZXkiLCJBYm9ydE9wdGltaXN0aWMiLCJjcmVhdGVVbnN1YnNjcmlwdGlvbiIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsImNyZWF0ZUV4cGlyZUFsbCIsImNyZWF0ZUZldGNoIiwiY3JlYXRlSW52YWxpZGF0ZSIsImNyZWF0ZUludmFsaWRhdGVBbGwiLCJjcmVhdGVSZXNldCIsImNyZWF0ZVNldCIsImNyZWF0ZVNldFJlc3BvbnNlIiwiZW5zdXJlUG9qbyIsIkltbW9ydGFsR0NQb2xpY3kiLCJpbml0aWFsU3RhdGUiLCJzZWxlY3RNZXRhIiwidW5zZXREaXNwYXRjaCIsImFjdGlvbiIsIkVycm9yIiwidW5zZXRTdGF0ZSIsIkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImRpc3BhdGNoIiwiZ2V0U3RhdGUiLCJtZW1vIiwiZ2NQb2xpY3kiLCJmZXRjaCIsImVuZHBvaW50IiwiYXJncyIsInNjaGVtYSIsIm1ldGEiLCJwcm9taXNlIiwidGhlbiIsImlucHV0IiwiZmV0Y2hJZlN0YWxlIiwiZGF0YSIsImV4cGlyZXNBdCIsImV4cGlyeVN0YXR1cyIsImdldFJlc3BvbnNlTWV0YSIsIkludmFsaWQiLCJEYXRlIiwibm93IiwiaW52YWxpZGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW52YWxpZGF0ZUFsbCIsIm9wdGlvbnMiLCJrZXkiLCJ0ZXN0S2V5IiwiZXhwaXJlQWxsIiwicmVzZXRFbnRpcmVTdG9yZSIsInNldFJlc3BvbnNlIiwicmVzdCIsInJlc3BvbnNlIiwibGVuZ3RoIiwic2xpY2UiLCJzZXRFcnJvciIsImVycm9yIiwic3Vic2NyaWJlIiwidW5zdWJzY3JpYmUiLCJzbmFwc2hvdCIsInN0YXRlIiwiZmV0Y2hlZEF0IiwiU25hcHNob3QiLCJfZGlzcGF0Y2giLCJiaW5kTWlkZGxld2FyZSIsInNldCIsInZhbHVlIiwiZ2V0RXJyb3IiLCJlbmRwb2ludHMiLCJ1bmRlZmluZWQiLCJlcnJvclBvbGljeSIsImdldFJlc3BvbnNlIiwiZXh0cmFjdFN0YXRlQW5kQXJncyIsImlzQWN0aXZlIiwiY2FjaGVFbmRwb2ludHMiLCJzaG91bGRRdWVyeSIsImJ1aWxkUXVlcnlLZXkiLCJWYWxpZCIsIkluZmluaXR5IiwiY291bnRSZWYiLCJpc0ludmFsaWQiLCJyZXF1aXJlc0Rlbm9ybWFsaXplIiwiZ2V0RXhwaXJ5U3RhdHVzIiwiaW52YWxpZElmU3RhbGUiLCJjcmVhdGVDb3VudFJlZiIsInBhdGhzIiwiZW50aXRpZXMiLCJlbnRpdHlFeHBpcmVzQXQiLCJlbnRpdGllc01ldGEiLCJnZXQiLCJxdWVyeSIsImdldFF1ZXJ5TWV0YSIsImludmFsaWREYXRhIiwiaW52YWxpZGF0ZWQiLCJJbnZhbGlkSWZTdGFsZSIsInBrIiwiX2VudGl0aWVzTWV0YSRrZXkiLCJlbnRpdHlFeHBpcnkiLCJBcnJheSIsImlzQXJyYXkiLCJ0Iiwibm9ybWFsaXplIiwiT2JqZWN0IiwidmFsdWVzIiwic29tZSIsIngiLCJjb250cm9sbGVyIiwiYWJvcnQiLCJsIiwiaSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFcnJvclR5cGVzLFxuICBTbmFwc2hvdEludGVyZmFjZSxcbiAgU2NoZW1hLFxuICBEZW5vcm1hbGl6ZSxcbiAgUXVlcnlhYmxlLFxuICBTY2hlbWFBcmdzLFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcbmltcG9ydCB7XG4gIEV4cGlyeVN0YXR1cyxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEZldGNoRnVuY3Rpb24sXG4gIFJlc29sdmVUeXBlLFxuICBEZW5vcm1hbGl6ZU51bGxhYmxlLFxuICBFbnRpdHlQYXRoLFxuICBNZW1vQ2FjaGUsXG4gIGRlbm9ybWFsaXplLFxuICB2YWxpZGF0ZVF1ZXJ5S2V5LFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IEFib3J0T3B0aW1pc3RpYyBmcm9tICcuL0Fib3J0T3B0aW1pc3RpYy5qcyc7XG5pbXBvcnQge1xuICBjcmVhdGVVbnN1YnNjcmlwdGlvbixcbiAgY3JlYXRlU3Vic2NyaXB0aW9uLFxufSBmcm9tICcuL2FjdGlvbnMvY3JlYXRlU3Vic2NyaXB0aW9uLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGlyZUFsbCxcbiAgY3JlYXRlRmV0Y2gsXG4gIGNyZWF0ZUludmFsaWRhdGUsXG4gIGNyZWF0ZUludmFsaWRhdGVBbGwsXG4gIGNyZWF0ZVJlc2V0LFxuICBjcmVhdGVTZXQsXG4gIGNyZWF0ZVNldFJlc3BvbnNlLFxufSBmcm9tICcuL2FjdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IGVuc3VyZVBvam8gZnJvbSAnLi9lbnN1cmVQb2pvLmpzJztcbmltcG9ydCB0eXBlIHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgUmVkdXhNaWRkbGV3YXJlQVBJIH0gZnJvbSAnLi4vbWFuYWdlci9hcHBseU1hbmFnZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBHQ0ludGVyZmFjZSB9IGZyb20gJy4uL3N0YXRlL0dDUG9saWN5LmpzJztcbmltcG9ydCB7IEltbW9ydGFsR0NQb2xpY3kgfSBmcm9tICcuLi9zdGF0ZS9HQ1BvbGljeS5qcyc7XG5pbXBvcnQgeyBpbml0aWFsU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIuanMnO1xuaW1wb3J0IHNlbGVjdE1ldGEgZnJvbSAnLi4vc3RhdGUvc2VsZWN0TWV0YS5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblR5cGVzLCBTdGF0ZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgR2VuZXJpY0Rpc3BhdGNoID0gKHZhbHVlOiBhbnkpID0+IFByb21pc2U8dm9pZD47XG5leHBvcnQgdHlwZSBEYXRhQ2xpZW50RGlzcGF0Y2ggPSAodmFsdWU6IEFjdGlvblR5cGVzKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xsZXJDb25zdHJ1Y3RvclByb3BzPFxuICBEIGV4dGVuZHMgR2VuZXJpY0Rpc3BhdGNoID0gRGF0YUNsaWVudERpc3BhdGNoLFxuPiB7XG4gIGRpc3BhdGNoPzogRDtcbiAgZ2V0U3RhdGU/OiAoKSA9PiBTdGF0ZTx1bmtub3duPjtcbiAgbWVtbz86IFBpY2s8TWVtb0NhY2hlLCAnZGVub3JtYWxpemUnIHwgJ3F1ZXJ5JyB8ICdidWlsZFF1ZXJ5S2V5Jz47XG4gIGdjUG9saWN5PzogR0NJbnRlcmZhY2U7XG59XG5cbmNvbnN0IHVuc2V0RGlzcGF0Y2ggPSAoYWN0aW9uOiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgRGlzcGF0Y2hpbmcgd2hpbGUgY29uc3RydWN0aW5nIHlvdXIgbWlkZGxld2FyZSBpcyBub3QgYWxsb3dlZC4gYCArXG4gICAgICBgT3RoZXIgbWlkZGxld2FyZSB3b3VsZCBub3QgYmUgYXBwbGllZCB0byB0aGlzIGRpc3BhdGNoLmAsXG4gICk7XG59O1xuY29uc3QgdW5zZXRTdGF0ZSA9ICgpOiBTdGF0ZTx1bmtub3duPiA9PiB7XG4gIC8vIFRoaXMgaXMgb25seSB0aGUgdmFsdWUgdW50aWwgaXQgaXMgc2V0IGJ5IHRoZSBEYXRhUHJvdmlkZXJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5cbi8qKlxuICogSW1wZXJhdGl2ZSBjb250cm9sIG9mIFJlYWN0aXZlIERhdGEgQ2xpZW50IHN0b3JlXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRyb2xsZXI8XG4gIC8vIE5PVEU6IFdlIHRlbXBsYXRlIG9uIGVudGlyZSBkaXNwYXRjaCwgc28gd2UgY2FuIGJlIGNvbnRyYXZhcmlhbnQgb24gQWN0aW9uVHlwZXNcbiAgRCBleHRlbmRzIEdlbmVyaWNEaXNwYXRjaCA9IERhdGFDbGllbnREaXNwYXRjaCxcbj4ge1xuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24gdG8gUmVhY3RpdmUgRGF0YSBDbGllbnQgcmVkdWNlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNkaXNwYXRjaFxuICAgKi9cbiAgZGVjbGFyZSBwcm90ZWN0ZWQgX2Rpc3BhdGNoOiBEO1xuICAvKipcbiAgICogR2V0cyB0aGUgbGF0ZXN0IHN0YXRlIHNuYXBzaG90IHRoYXQgaXMgZnVsbHkgY29tbWl0dGVkLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGltcGVyYXRpdmUgdXNlLWNhc2VzIGxpa2UgZXZlbnQgaGFuZGxlcnMuXG4gICAqIFRoaXMgc2hvdWxkICpub3QqIGJlIHVzZWQgdG8gcmVuZGVyOyBpbnN0ZWFkIHVzZVN1c3BlbnNlKCkgb3IgdXNlQ2FjaGUoKVxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFN0YXRlXG4gICAqL1xuICBkZWNsYXJlIGdldFN0YXRlOiAoKSA9PiBTdGF0ZTx1bmtub3duPjtcbiAgLyoqXG4gICAqIFNpbmdsZXRvbiB0byBtYWludGFpbiByZWZlcmVudGlhbCBlcXVhbGl0eSBiZXR3ZWVuIGNhbGxzXG4gICAqL1xuICBkZWNsYXJlIHJlYWRvbmx5IG1lbW86IFBpY2s8XG4gICAgTWVtb0NhY2hlLFxuICAgICdkZW5vcm1hbGl6ZScgfCAncXVlcnknIHwgJ2J1aWxkUXVlcnlLZXknXG4gID47XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZ2FyYmFnZSBjb2xsZWN0aW9uXG4gICAqL1xuICBkZWNsYXJlIHJlYWRvbmx5IGdjUG9saWN5OiBHQ0ludGVyZmFjZTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZGlzcGF0Y2ggPSB1bnNldERpc3BhdGNoIGFzIGFueSxcbiAgICBnZXRTdGF0ZSA9IHVuc2V0U3RhdGUsXG4gICAgbWVtbyA9IG5ldyBNZW1vQ2FjaGUoKSxcbiAgICBnY1BvbGljeSA9IG5ldyBJbW1vcnRhbEdDUG9saWN5KCksXG4gIH06IENvbnRyb2xsZXJDb25zdHJ1Y3RvclByb3BzPEQ+ID0ge30pIHtcbiAgICB0aGlzLl9kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICAgIHRoaXMuZ2V0U3RhdGUgPSBnZXRTdGF0ZTtcbiAgICB0aGlzLm1lbW8gPSBtZW1vO1xuICAgIHRoaXMuZ2NQb2xpY3kgPSBnY1BvbGljeTtcbiAgfVxuXG4gIC8vIFRPRE86IGRyb3Agd2hlbiBkcm9wIHN1cHBvcnQgZm9yIGRlc3RydWN0dXJpbmcgKDAuMTQgYW5kIGJlbG93KVxuICBzZXQgZGlzcGF0Y2goZGlzcGF0Y2g6IEQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuX2Rpc3BhdGNoID0gZGlzcGF0Y2g7XG4gIH1cblxuICAvLyBUT0RPOiBkcm9wIHdoZW4gZHJvcCBzdXBwb3J0IGZvciBkZXN0cnVjdHVyaW5nICgwLjE0IGFuZCBiZWxvdylcbiAgZ2V0IGRpc3BhdGNoKCk6IEQge1xuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaDtcbiAgfVxuXG4gIGJpbmRNaWRkbGV3YXJlKHtcbiAgICBkaXNwYXRjaCxcbiAgICBnZXRTdGF0ZSxcbiAgfToge1xuICAgIGRpc3BhdGNoOiBEO1xuICAgIGdldFN0YXRlOiBSZWR1eE1pZGRsZXdhcmVBUElbJ2dldFN0YXRlJ107XG4gIH0pIHtcbiAgICB0aGlzLl9kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICAgIHRoaXMuZ2V0U3RhdGUgPSBnZXRTdGF0ZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKiogQWN0aW9uIERpc3BhdGNoZXJzICoqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgZW5kcG9pbnQgd2l0aCBnaXZlbiBhcmdzLCB1cGRhdGluZyB0aGUgUmVhY3RpdmUgRGF0YSBDbGllbnQgY2FjaGUgd2l0aCB0aGUgcmVzcG9uc2Ugb3IgZXJyb3IgdXBvbiBjb21wbGV0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ZldGNoXG4gICAqL1xuICBmZXRjaCA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT4gfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogRVsnc2NoZW1hJ10gZXh0ZW5kcyB1bmRlZmluZWQgfCBudWxsID8gUmV0dXJuVHlwZTxFPlxuICA6IFByb21pc2U8RGVub3JtYWxpemU8RVsnc2NoZW1hJ10+PiA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlRmV0Y2goZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3MsXG4gICAgfSk7XG4gICAgdGhpcy5kaXNwYXRjaChhY3Rpb24pO1xuXG4gICAgaWYgKGVuZHBvaW50LnNjaGVtYSkge1xuICAgICAgcmV0dXJuIGFjdGlvbi5tZXRhLnByb21pc2UudGhlbihpbnB1dCA9PlxuICAgICAgICBkZW5vcm1hbGl6ZShlbmRwb2ludC5zY2hlbWEsIGlucHV0LCB7fSwgYXJncyksXG4gICAgICApIGFzIGFueTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbi5tZXRhLnByb21pc2UgYXMgYW55O1xuICB9O1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIG9ubHkgaWYgZW5kcG9pbnQgaXMgY29uc2lkZXJlZCAnc3RhbGUnOyBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWRcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNmZXRjaElmU3RhbGVcbiAgICovXG4gIGZldGNoSWZTdGFsZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT4gfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogRVsnc2NoZW1hJ10gZXh0ZW5kcyB1bmRlZmluZWQgfCBudWxsID8gUmV0dXJuVHlwZTxFPiB8IFJlc29sdmVUeXBlPEU+XG4gIDogUHJvbWlzZTxEZW5vcm1hbGl6ZTxFWydzY2hlbWEnXT4+IHwgRGVub3JtYWxpemU8RVsnc2NoZW1hJ10+ID0+IHtcbiAgICBjb25zdCB7IGRhdGEsIGV4cGlyZXNBdCwgZXhwaXJ5U3RhdHVzIH0gPSB0aGlzLmdldFJlc3BvbnNlTWV0YShcbiAgICAgIGVuZHBvaW50LFxuICAgICAgLi4uYXJncyxcbiAgICAgIHRoaXMuZ2V0U3RhdGUoKSxcbiAgICApO1xuICAgIGlmIChleHBpcnlTdGF0dXMgIT09IEV4cGlyeVN0YXR1cy5JbnZhbGlkICYmIERhdGUubm93KCkgPD0gZXhwaXJlc0F0KVxuICAgICAgcmV0dXJuIGRhdGEgYXMgYW55O1xuICAgIHJldHVybiB0aGlzLmZldGNoKGVuZHBvaW50LCAuLi5hcmdzKTtcbiAgfTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIHdpdGggdGhlIHNhbWUgRW5kcG9pbnQgYW5kIHBhcmFtZXRlcnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjaW52YWxpZGF0ZVxuICAgKi9cbiAgaW52YWxpZGF0ZSA9IDxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbCA/XG4gICAgICB0aGlzLmRpc3BhdGNoKFxuICAgICAgICBjcmVhdGVJbnZhbGlkYXRlKGVuZHBvaW50LCB7XG4gICAgICAgICAgYXJnczogYXJncyBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKlxuICAgKiBGb3JjZXMgcmVmZXRjaGluZyBhbmQgc3VzcGVuc2Ugb24gdXNlU3VzcGVuc2Ugb24gYWxsIG1hdGNoaW5nIGVuZHBvaW50IHJlc3VsdCBrZXlzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ludmFsaWRhdGVBbGxcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gaW52YWxpZGF0aW9uIGlzIGNvbW1pdGVkLlxuICAgKi9cbiAgaW52YWxpZGF0ZUFsbCA9IChvcHRpb25zOiB7IHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbiB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2goY3JlYXRlSW52YWxpZGF0ZUFsbCgoa2V5OiBzdHJpbmcpID0+IG9wdGlvbnMudGVzdEtleShrZXkpKSk7XG5cbiAgLyoqXG4gICAqIFNldHMgYWxsIG1hdGNoaW5nIGVuZHBvaW50IHJlc3VsdCBrZXlzIHRvIGJlIFNUQUxFLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2V4cGlyZUFsbFxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBleHBpcnkgaXMgY29tbWl0ZWQuICpOT1QqIGZldGNoIHByb21pc2VcbiAgICovXG4gIGV4cGlyZUFsbCA9IChvcHRpb25zOiB7IHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbiB9KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2goY3JlYXRlRXhwaXJlQWxsKChrZXk6IHN0cmluZykgPT4gb3B0aW9ucy50ZXN0S2V5KGtleSkpKTtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbnRpcmUgUmVhY3RpdmUgRGF0YSBDbGllbnQgY2FjaGUuIEFsbCBpbmZsaWdodCByZXF1ZXN0cyB3aWxsIG5vdCByZXNvbHZlLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Jlc2V0RW50aXJlU3RvcmVcbiAgICovXG4gIHJlc2V0RW50aXJlU3RvcmUgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLmRpc3BhdGNoKGNyZWF0ZVJlc2V0KCkpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHZhbHVlIGZvciB0aGUgUXVlcnlhYmxlIGFuZCBhcmdzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFxuICAgKi9cbiAgc2V0PFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uU2NoZW1hQXJnczxTPiwgKHByZXZpb3VzVmFsdWU6IERlbm9ybWFsaXplPFM+KSA9PiB7fV1cbiAgKTogUHJvbWlzZTx2b2lkPjtcblxuICBzZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5TY2hlbWFBcmdzPFM+LCB7fV1cbiAgKTogUHJvbWlzZTx2b2lkPjtcblxuICBzZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5TY2hlbWFBcmdzPFM+LCBhbnldXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZhbHVlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZVNldChzY2hlbWEsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBTY2hlbWFBcmdzPFM+LFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gICAgLy8gVE9ETzogcmVqZWN0IHdpdGggZXJyb3IgaWYgdGhpcyBmYWlscyBpbiByZWR1Y2VyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHJlc3BvbnNlIGZvciB0aGUgRW5kcG9pbnQgYW5kIGFyZ3MuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc2V0UmVzcG9uc2VcbiAgICovXG4gIHNldFJlc3BvbnNlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgYW55XVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogUmVzb2x2ZVR5cGU8RT4gPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0UmVzcG9uc2UoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogU2V0cyBhbiBlcnJvciByZXNwb25zZSBmb3IgdGhlIEVuZHBvaW50IGFuZCBhcmdzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldEVycm9yXG4gICAqL1xuICBzZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIEVycm9yXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogRXJyb3IgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0UmVzcG9uc2UoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBlcnJvcjogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChhY3Rpb24pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBpbmZsaWdodCBmZXRjaC5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNvbHZlXG4gICAqL1xuICByZXNvbHZlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICBtZXRhOlxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBFcnJvcjtcbiAgICAgICAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgICAgICBlcnJvcjogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBhbnk7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I/OiBmYWxzZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY3JlYXRlU2V0UmVzcG9uc2UoZW5kcG9pbnQsIG1ldGEgYXMgYW55KSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1hcmtzIGEgbmV3IHN1YnNjcmlwdGlvbiB0byBhIGdpdmVuIEVuZHBvaW50LlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3N1YnNjcmliZVxuICAgKi9cbiAgc3Vic2NyaWJlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZTxcbiAgICAgIEZldGNoRnVuY3Rpb24sXG4gICAgICBTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQgfCBmYWxzZVxuICAgID4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsID9cbiAgICAgIHRoaXMuZGlzcGF0Y2goXG4gICAgICAgIGNyZWF0ZVN1YnNjcmlwdGlvbihlbmRwb2ludCwge1xuICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogTWFya3MgY29tcGxldGlvbiBvZiBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciN1bnN1YnNjcmliZVxuICAgKi9cbiAgdW5zdWJzY3JpYmUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPFxuICAgICAgRmV0Y2hGdW5jdGlvbixcbiAgICAgIFNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCB8IGZhbHNlXG4gICAgPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGwgP1xuICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgY3JlYXRlVW5zdWJzY3JpcHRpb24oZW5kcG9pbnQsIHtcbiAgICAgICAgICBhcmdzOiBhcmdzIGFzIFBhcmFtZXRlcnM8RT4sXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgLyoqKioqKioqKioqKioqKiBNb3JlICoqKioqKioqKioqKioqKi9cblxuICAvKiBUT0RPOlxuICBhYm9ydCA9IDxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiBQcm9taXNlPHZvaWQ+XG4gICovXG5cbiAgLyoqXG4gICAqIEdldHMgYSBzbmFwc2hvdCAoaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90KVxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NuYXBzaG90XG4gICAqL1xuICBzbmFwc2hvdCA9IChzdGF0ZTogU3RhdGU8dW5rbm93bj4sIGZldGNoZWRBdD86IG51bWJlcik6IFNuYXBzaG90PHVua25vd24+ID0+IHtcbiAgICByZXR1cm4gbmV3IFNuYXBzaG90KHRoaXMsIHN0YXRlLCBmZXRjaGVkQXQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlcnJvciwgaWYgYW55LCBmb3IgYSBnaXZlbiBlbmRwb2ludC4gUmV0dXJucyB1bmRlZmluZWQgZm9yIG5vIGVycm9ycy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRFcnJvclxuICAgKi9cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OlxuICAgICAgfCByZWFkb25seSBbbnVsbCwgU3RhdGU8dW5rbm93bj5dXG4gICAgICB8IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcjxFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+PihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OlxuICAgICAgfCByZWFkb25seSBbbnVsbCwgU3RhdGU8dW5rbm93bj5dXG4gICAgICB8IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPiwgU3RhdGU8dW5rbm93bj5dXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3IoXG4gICAgZW5kcG9pbnQ6IEVuZHBvaW50SW50ZXJmYWNlLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi51bmtub3duW10sIFN0YXRlPHVua25vd24+XVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocmVzdFswXSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IHN0YXRlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdIGFzIFN0YXRlPHVua25vd24+O1xuICAgIC8vIHRoaXMgaXMgdHlwZXNjcmlwdCBnZW5lcmljcyBicmVha2luZ1xuICAgIGNvbnN0IGFyZ3M6IGFueSA9IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKTtcbiAgICBjb25zdCBrZXkgPSBlbmRwb2ludC5rZXkoLi4uYXJncyk7XG5cbiAgICBjb25zdCBtZXRhID0gc2VsZWN0TWV0YShzdGF0ZSwga2V5KTtcbiAgICBjb25zdCBlcnJvciA9IHN0YXRlLmVuZHBvaW50c1trZXldO1xuXG4gICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQgJiYgbWV0YT8uZXJyb3JQb2xpY3kgPT09ICdzb2Z0JykgcmV0dXJuO1xuXG4gICAgcmV0dXJuIG1ldGE/LmVycm9yIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSAoZ2xvYmFsbHkgcmVmZXJlbnRpYWxseSBzdGFibGUpIHJlc3BvbnNlIGZvciBhIGdpdmVuIGVuZHBvaW50L2FyZ3MgcGFpciBmcm9tIHN0YXRlIGdpdmVuLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFJlc3BvbnNlXG4gICAqL1xuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6XG4gICAgICB8IHJlYWRvbmx5IFtudWxsLCBTdGF0ZTx1bmtub3duPl1cbiAgICAgIHwgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIFN0YXRlPHVua25vd24+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbXG4gICAgICAuLi4ocmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXSksXG4gICAgICBTdGF0ZTx1bmtub3duPixcbiAgICBdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBjb3VudFJlZjogKCkgPT4gKCkgPT4gdm9pZDtcbiAgfTtcblxuICBnZXRSZXNwb25zZShcbiAgICBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLnVua25vd25bXSwgU3RhdGU8dW5rbm93bj5dXG4gICk6IHtcbiAgICBkYXRhOiB1bmtub3duO1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICAvLyBUT0RPOiBicmVha2luZzogb25seSByZXR1cm4gZGF0YVxuICAgIHJldHVybiB0aGlzLmdldFJlc3BvbnNlTWV0YShlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRSZXNwb25zZU1ldGFcbiAgICovXG4gIGdldFJlc3BvbnNlTWV0YTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6XG4gICAgICB8IHJlYWRvbmx5IFtudWxsLCBTdGF0ZTx1bmtub3duPl1cbiAgICAgIHwgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIFN0YXRlPHVua25vd24+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2VNZXRhPFxuICAgIEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5JyB8ICdzY2hlbWEnIHwgJ2ludmFsaWRJZlN0YWxlJz4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uKHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF0pLFxuICAgICAgU3RhdGU8dW5rbm93bj4sXG4gICAgXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2VNZXRhKFxuICAgIGVuZHBvaW50OiBFbmRwb2ludEludGVyZmFjZSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4udW5rbm93bltdLCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IHVua25vd247XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH0ge1xuICAgIGNvbnN0IFtzdGF0ZSwgYXJnc10gPSBleHRyYWN0U3RhdGVBbmRBcmdzKHJlc3QpO1xuICAgIGNvbnN0IGlzQWN0aXZlID0gYXJncy5sZW5ndGggIT09IDEgfHwgYXJnc1swXSAhPT0gbnVsbDtcbiAgICBjb25zdCBrZXkgPSBpc0FjdGl2ZSA/IGVuZHBvaW50LmtleSguLi5hcmdzKSA6ICcnO1xuICAgIGNvbnN0IGNhY2hlRW5kcG9pbnRzID0gaXNBY3RpdmUgPyBzdGF0ZS5lbmRwb2ludHNba2V5XSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzY2hlbWEgPSBlbmRwb2ludC5zY2hlbWE7XG4gICAgY29uc3QgbWV0YSA9IHNlbGVjdE1ldGEoc3RhdGUsIGtleSk7XG4gICAgbGV0IGV4cGlyZXNBdCA9IG1ldGE/LmV4cGlyZXNBdDtcbiAgICAvLyBpZiB3ZSBoYXZlIG5vIGVuZHBvaW50IGVudHJ5LCBhbmQgb3VyIGVuZHBvaW50IGhhcyBhIHNjaGVtYSAtIHRyeSBxdWVyeWluZyB0aGUgc3RvcmVcbiAgICBjb25zdCBzaG91bGRRdWVyeSA9IGNhY2hlRW5kcG9pbnRzID09PSB1bmRlZmluZWQgJiYgc2NoZW1hICE9PSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBpbnB1dCA9XG4gICAgICBzaG91bGRRdWVyeSA/XG4gICAgICAgIC8vIG5vdGhpbmcgaW4gZW5kcG9pbnRzIGNhY2hlLCBzbyB0cnkgcXVlcnlpbmcgaWYgd2UgaGF2ZSBhIHNjaGVtYSB0byBkbyBzb1xuICAgICAgICB0aGlzLm1lbW8uYnVpbGRRdWVyeUtleShzY2hlbWEsIGFyZ3MsIHN0YXRlLCBrZXkpXG4gICAgICA6IGNhY2hlRW5kcG9pbnRzO1xuXG4gICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgLy8gd2hlbiBub3QgYWN0aXZlIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5IGlucHV0IHdpdGhvdXQgZGVub3JtYWxpemluZ1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogaW5wdXQgYXMgYW55LFxuICAgICAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cy5WYWxpZCxcbiAgICAgICAgZXhwaXJlc0F0OiBJbmZpbml0eSxcbiAgICAgICAgY291bnRSZWY6ICgpID0+ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IGlzSW52YWxpZCA9IGZhbHNlO1xuICAgIGlmIChzaG91bGRRdWVyeSkge1xuICAgICAgaXNJbnZhbGlkID0gIXZhbGlkYXRlUXVlcnlLZXkoaW5wdXQpO1xuICAgICAgLy8gZW5kcG9pbnQgd2l0aG91dCBlbnRpdGllc1xuICAgIH0gZWxzZSBpZiAoIXNjaGVtYSB8fCAhcmVxdWlyZXNEZW5vcm1hbGl6ZShzY2hlbWEpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBjYWNoZUVuZHBvaW50cyxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiB0aGlzLmdldEV4cGlyeVN0YXR1cyhcbiAgICAgICAgICAhY2FjaGVFbmRwb2ludHMsXG4gICAgICAgICAgISFlbmRwb2ludC5pbnZhbGlkSWZTdGFsZSxcbiAgICAgICAgICBtZXRhLFxuICAgICAgICApLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdCB8fCAwLFxuICAgICAgICBjb3VudFJlZjogdGhpcy5nY1BvbGljeS5jcmVhdGVDb3VudFJlZih7IGtleSB9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYXRhLCBwYXRocyB9ID0gdGhpcy5tZW1vLmRlbm9ybWFsaXplKFxuICAgICAgc2NoZW1hLFxuICAgICAgaW5wdXQsXG4gICAgICBzdGF0ZS5lbnRpdGllcyxcbiAgICAgIGFyZ3MsXG4gICAgKSBhcyB7IGRhdGE6IGFueTsgcGF0aHM6IEVudGl0eVBhdGhbXSB9O1xuXG4gICAgaWYgKCFleHBpcmVzQXQpIHtcbiAgICAgIC8vIG5vdGU6IGlzSW52YWxpZCBjYW4gb25seSBiZSB0cnVlIGlmIHNob3VsZFF1ZXJ5IGlzIHRydWVcbiAgICAgIGlmIChpc0ludmFsaWQpIGV4cGlyZXNBdCA9IDE7XG4gICAgICAvLyBmYWxsYmFjayB0byBlbnRpdHkgZXhwaXJ5IHRpbWVcbiAgICAgIGVsc2UgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJlc0F0KHBhdGhzLCBzdGF0ZS5lbnRpdGllc01ldGEpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZXhwaXJ5U3RhdHVzOiB0aGlzLmdldEV4cGlyeVN0YXR1cyhcbiAgICAgICAgdHlwZW9mIGRhdGEgPT09ICdzeW1ib2wnLFxuICAgICAgICAhIWVuZHBvaW50LmludmFsaWRJZlN0YWxlIHx8IGlzSW52YWxpZCxcbiAgICAgICAgbWV0YSxcbiAgICAgICksXG4gICAgICBleHBpcmVzQXQsXG4gICAgICBjb3VudFJlZjogdGhpcy5nY1BvbGljeS5jcmVhdGVDb3VudFJlZih7IGtleSwgcGF0aHMgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRcbiAgICovXG4gIGdldDxTIGV4dGVuZHMgUXVlcnlhYmxlPihcbiAgICBzY2hlbWE6IFMsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uU2NoZW1hQXJnczxTPixcbiAgICAgIFBpY2s8U3RhdGU8dW5rbm93bj4sICdlbnRpdGllcycgfCAnaW5kZXhlcyc+LFxuICAgIF1cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW3N0YXRlLCBhcmdzXSA9IGV4dHJhY3RTdGF0ZUFuZEFyZ3MocmVzdCk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHRoaXMubWVtby5xdWVyeShzY2hlbWEsIGFyZ3MsIHN0YXRlKTtcbiAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdzeW1ib2wnID8gdW5kZWZpbmVkIDogZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWE7IHByb3ZpZGluZyByZWxhdGVkIG1ldGFkYXRhXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0UXVlcnlNZXRhXG4gICAqL1xuICBnZXRRdWVyeU1ldGE8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLlNjaGVtYUFyZ3M8Uz4sXG4gICAgICBQaWNrPFN0YXRlPHVua25vd24+LCAnZW50aXRpZXMnIHwgJ2luZGV4ZXMnPixcbiAgICBdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPFM+IHwgdW5kZWZpbmVkO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICBjb25zdCBbc3RhdGUsIGFyZ3NdID0gZXh0cmFjdFN0YXRlQW5kQXJncyhyZXN0KTtcblxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IHRoaXMubWVtby5xdWVyeShzY2hlbWEsIGFyZ3MsIHN0YXRlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCcgPyB1bmRlZmluZWQgOiBkYXRhLFxuICAgICAgY291bnRSZWY6IHRoaXMuZ2NQb2xpY3kuY3JlYXRlQ291bnRSZWYoeyBwYXRocyB9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBpcnlTdGF0dXMoXG4gICAgaW52YWxpZERhdGE6IGJvb2xlYW4sXG4gICAgaW52YWxpZElmU3RhbGU6IGJvb2xlYW4sXG4gICAgbWV0YTogeyBlcnJvcj86IHVua25vd247IGludmFsaWRhdGVkPzogdW5rbm93biB9ID0ge30sXG4gICkge1xuICAgIC8vIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2NvbmNlcHRzL2V4cGlyeS1wb2xpY3kjZXhwaXJ5LXN0YXR1c1xuICAgIC8vIHdlIGRvbid0IHRyYWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3RhbGUgb3IgZnJlc2ggYmVjYXVzZSB0aGF0IGlzIHRpZWQgdG8gdHJpZ2dlcmluZ1xuICAgIC8vIGNvbmRpdGlvbnNcbiAgICByZXR1cm4gKFxuICAgICAgbWV0YS5pbnZhbGlkYXRlZCB8fCAoaW52YWxpZERhdGEgJiYgIW1ldGEuZXJyb3IpID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgIDogaW52YWxpZERhdGEgfHwgaW52YWxpZElmU3RhbGUgPyBFeHBpcnlTdGF0dXMuSW52YWxpZElmU3RhbGVcbiAgICAgIDogRXhwaXJ5U3RhdHVzLlZhbGlkXG4gICAgKTtcbiAgfVxufVxuXG4vLyBiZW5jaG1hcms6IGh0dHBzOi8vd3d3Lm1lYXN1cmV0aGF0Lm5ldC9CZW5jaG1hcmtzL1Nob3cvMjQ2OTEvMC9taW4tcmVkdWNlci12cy1pbXBlcmF0aXZlLXdpdGgtcGF0aHNcbi8vIGVhcmxpZXN0IGV4cGlyeSBkaWN0YXRlcyBhZ2VcbmZ1bmN0aW9uIGVudGl0eUV4cGlyZXNBdChcbiAgcGF0aHM6IEVudGl0eVBhdGhbXSxcbiAgZW50aXRpZXNNZXRhOiB7XG4gICAgcmVhZG9ubHkgW2VudGl0eUtleTogc3RyaW5nXToge1xuICAgICAgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiB7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGZldGNoZWRBdDogbnVtYmVyOyAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgRGF0YVByb3ZpZGVyXG4gICAgICB9O1xuICAgIH07XG4gIH0sXG4pIHtcbiAgbGV0IGV4cGlyZXNBdCA9IEluZmluaXR5O1xuICBmb3IgKGNvbnN0IHsga2V5LCBwayB9IG9mIHBhdGhzKSB7XG4gICAgY29uc3QgZW50aXR5RXhwaXJ5ID0gZW50aXRpZXNNZXRhW2tleV0/Lltwa10/LmV4cGlyZXNBdDtcbiAgICAvLyBleHBpcmVzQXQgd2lsbCBhbHdheXMgcmVzb2x2ZSB0byBmYWxzZSB3aXRoIGFueSBjb21wYXJpc29uXG4gICAgaWYgKGVudGl0eUV4cGlyeSA8IGV4cGlyZXNBdCkgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJ5O1xuICB9XG4gIHJldHVybiBleHBpcmVzQXQ7XG59XG5cbi8qKiBXaGV0aGVyIGBkZW5vcm1hbGl6ZSgpYCBtdXN0IHJ1biB0byByZWNvbnN0cnVjdCB0aGUgcmVzcG9uc2UuXG4gKlxuICogVHJ1ZSBpZmYgc29tZSBub2RlIGluIHRoZSBzY2hlbWEgdHJlZSBkZWZpbmVzIGBub3JtYWxpemVgIOKAlCBtZWFuaW5nIGl0XG4gKiB0cmFuc2Zvcm1zIHRoZSByZXNwb25zZSB3aGVuIHdyaXR0ZW4gKGVudGl0eSB3cml0ZSwgcG9seW1vcnBoaWMgaG9pc3QsXG4gKiBsYXp5IGRlbGVnYXRpb24sIGV0Yy4pLCBzbyB0aGUgY2FjaGVkIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgcmVzcG9uc2UuXG4gKiBNaXJyb3JzIHRoZSBkaXNwYXRjaCBpbiBgZ2V0VmlzaXQudHNgOiBzY2hlbWEgY2xhc3NlcyBhcmUgZGV0ZWN0ZWQgaGVyZVxuICogYnkgdGhlIHNhbWUgaG9vayB0aGUgdmlzaXQgd2Fsa2VyIHVzZXMsIHNvIHdlIG5ldmVyIG5lZWQgdG8gd2FsayB0aGVpclxuICogaW5zdGFuY2UgZmllbGRzLlxuICovXG5mdW5jdGlvbiByZXF1aXJlc0Rlbm9ybWFsaXplKHNjaGVtYTogU2NoZW1hKTogYm9vbGVhbiB7XG4gIGlmICghc2NoZW1hKSByZXR1cm4gZmFsc2U7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpXG4gICAgcmV0dXJuIHNjaGVtYS5sZW5ndGggIT09IDAgJiYgcmVxdWlyZXNEZW5vcm1hbGl6ZShzY2hlbWFbMF0pO1xuICAvLyBNdXN0IHJlamVjdCBwcmltaXRpdmVzIGJlZm9yZSBwcm9iaW5nIGAubm9ybWFsaXplYCDigJQgYFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplYCBleGlzdHMuXG4gIGNvbnN0IHQgPSB0eXBlb2Ygc2NoZW1hO1xuICBpZiAodCAhPT0gJ29iamVjdCcgJiYgdCAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIChzY2hlbWEgYXMgYW55KS5ub3JtYWxpemUgPT09ICdmdW5jdGlvbicpIHJldHVybiB0cnVlO1xuICAvLyBQbGFpbi1vYmplY3Qgc2NoZW1hIG1hcCAoZS5nLiBgeyBkYXRhOiBbVGFjb3NdLCBwYWdlOiB7IC4uLiB9IH1gKS5cbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc2NoZW1hIGFzIG9iamVjdCkuc29tZSh4ID0+IHJlcXVpcmVzRGVub3JtYWxpemUoeCkpO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yVHlwZXMgfTtcblxuY2xhc3MgU25hcHNob3Q8VCA9IHVua25vd24+IGltcGxlbWVudHMgU25hcHNob3RJbnRlcmZhY2Uge1xuICBzdGF0aWMgcmVhZG9ubHkgYWJvcnQgPSBuZXcgQWJvcnRPcHRpbWlzdGljKCk7XG5cbiAgcHJpdmF0ZSBzdGF0ZTogU3RhdGU8VD47XG4gIHByaXZhdGUgY29udHJvbGxlcjogQ29udHJvbGxlcjtcbiAgcmVhZG9ubHkgZmV0Y2hlZEF0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGFib3J0ID0gU25hcHNob3QuYWJvcnQ7XG5cbiAgY29uc3RydWN0b3IoY29udHJvbGxlcjogQ29udHJvbGxlciwgc3RhdGU6IFN0YXRlPFQ+LCBmZXRjaGVkQXQgPSAwKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgdGhpcy5mZXRjaGVkQXQgPSBmZXRjaGVkQXQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqIERhdGEgQWNjZXNzICoqKioqKioqKioqKioqKi9cbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFJlc3BvbnNlICovXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZU1ldGEgKi9cbiAgZ2V0UmVzcG9uc2VNZXRhPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZU1ldGE8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlTWV0YShlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0RXJyb3IgKi9cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcjxFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+PihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknPj4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldEVycm9yKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZWQgbWVtb2l6ZWQgdmFsdWUgZm9yIGFueSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLmFyZ3M6IFNjaGVtYUFyZ3M8Uz5cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXQoc2NoZW1hLCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWE7IHByb3ZpZGluZyByZWxhdGVkIG1ldGFkYXRhXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFF1ZXJ5TWV0YVxuICAgKi9cbiAgZ2V0UXVlcnlNZXRhPFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5hcmdzOiBTY2hlbWFBcmdzPFM+XG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPFM+IHwgdW5kZWZpbmVkO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFF1ZXJ5TWV0YShzY2hlbWEsIC4uLmFyZ3MsIHRoaXMuc3RhdGUpO1xuICB9XG59XG5cbi8qKiBFeHRyYWN0IHN0YXRlIGFuZCBhcmdzIGZyb20gcmVzdCBwYXJhbXMsIGFwcGx5aW5nIGVuc3VyZVBvam8gdG8gYXJncyAqL1xuZnVuY3Rpb24gZXh0cmFjdFN0YXRlQW5kQXJncyhyZXN0OiByZWFkb25seSB1bmtub3duW10pOiBbU3RhdGU8YW55PiwgYW55W11dIHtcbiAgY29uc3QgbCA9IHJlc3QubGVuZ3RoO1xuICBjb25zdCBhcmdzOiBhbnkgPSBuZXcgQXJyYXkobCAtIDEpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGwgLSAxOyBpKyspIHtcbiAgICAvLyBoYW5kbGUgRm9ybURhdGFcbiAgICBhcmdzW2ldID0gZW5zdXJlUG9qbyhyZXN0W2ldKTtcbiAgfVxuICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgcmV0dXJuIFtyZXN0W2wgLSAxXSBhcyBTdGF0ZTxhbnk+LCBhcmdzXTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBUUEsU0FDRUEsWUFBWSxFQU1aQyxTQUFTLEVBQ1RDLFdBQVcsRUFDWEMsZ0JBQWdCLFFBQ1gsd0JBQXdCO0FBRS9CLE9BQU9DLGVBQWUsTUFBTSxzQkFBc0I7QUFDbEQsU0FDRUMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsUUFDYixpQ0FBaUM7QUFDeEMsU0FDRUMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsbUJBQW1CLEVBQ25CQyxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsaUJBQWlCLFFBQ1osb0JBQW9CO0FBQzNCLE9BQU9DLFVBQVUsTUFBTSxpQkFBaUI7QUFJeEMsU0FBU0MsZ0JBQWdCLFFBQVEsc0JBQXNCO0FBQ3ZELFNBQVNDLFlBQVksUUFBUSxtQ0FBbUM7QUFDaEUsT0FBT0MsVUFBVSxNQUFNLHdCQUF3QjtBQWUvQyxNQUFNQyxhQUFhLEdBQUlDLE1BQWUsSUFBb0I7RUFDeEQsTUFBTSxJQUFJQyxLQUFLLENBQ2IsaUVBQWlFLEdBQy9ELHlEQUNKLENBQUM7QUFDSCxDQUFDO0FBQ0QsTUFBTUMsVUFBVSxHQUFHQSxDQUFBLEtBQXNCO0VBQ3ZDO0VBQ0E7RUFDQSxPQUFPTCxZQUFZO0FBQ3JCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1B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
425
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHBpcnlTdGF0dXMiLCJNZW1vQ2FjaGUiLCJkZW5vcm1hbGl6ZSIsInZhbGlkYXRlUXVlcnlLZXkiLCJBYm9ydE9wdGltaXN0aWMiLCJjcmVhdGVVbnN1YnNjcmlwdGlvbiIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsImNyZWF0ZUV4cGlyZUFsbCIsImNyZWF0ZUZldGNoIiwiY3JlYXRlSW52YWxpZGF0ZSIsImNyZWF0ZUludmFsaWRhdGVBbGwiLCJjcmVhdGVSZXNldCIsImNyZWF0ZVNldCIsImNyZWF0ZVNldFJlc3BvbnNlIiwiZW5zdXJlUG9qbyIsIkltbW9ydGFsR0NQb2xpY3kiLCJpbml0aWFsU3RhdGUiLCJzZWxlY3RNZXRhIiwidW5zZXREaXNwYXRjaCIsImFjdGlvbiIsIkVycm9yIiwidW5zZXRTdGF0ZSIsIkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImRpc3BhdGNoIiwiZ2V0U3RhdGUiLCJtZW1vIiwiZ2NQb2xpY3kiLCJmZXRjaCIsImVuZHBvaW50IiwiYXJncyIsInNjaGVtYSIsIm1ldGEiLCJwcm9taXNlIiwidGhlbiIsImlucHV0IiwiZmV0Y2hJZlN0YWxlIiwiZGF0YSIsImV4cGlyZXNBdCIsImV4cGlyeVN0YXR1cyIsImdldFJlc3BvbnNlTWV0YSIsIkludmFsaWQiLCJEYXRlIiwibm93IiwiaW52YWxpZGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW52YWxpZGF0ZUFsbCIsIm9wdGlvbnMiLCJrZXkiLCJ0ZXN0S2V5IiwiZXhwaXJlQWxsIiwicmVzZXRFbnRpcmVTdG9yZSIsInNldFJlc3BvbnNlIiwicmVzdCIsInJlc3BvbnNlIiwibGVuZ3RoIiwic2xpY2UiLCJzZXRFcnJvciIsImVycm9yIiwic3Vic2NyaWJlIiwidW5zdWJzY3JpYmUiLCJzbmFwc2hvdCIsInN0YXRlIiwiZmV0Y2hlZEF0IiwiU25hcHNob3QiLCJfZGlzcGF0Y2giLCJiaW5kTWlkZGxld2FyZSIsInNldCIsInZhbHVlIiwiZ2V0RXJyb3IiLCJlbmRwb2ludHMiLCJ1bmRlZmluZWQiLCJlcnJvclBvbGljeSIsImdldFJlc3BvbnNlIiwiZXh0cmFjdFN0YXRlQW5kQXJncyIsImlzQWN0aXZlIiwiY2FjaGVFbmRwb2ludHMiLCJzaG91bGRRdWVyeSIsImJ1aWxkUXVlcnlLZXkiLCJWYWxpZCIsIkluZmluaXR5IiwiY291bnRSZWYiLCJpc0ludmFsaWQiLCJyZXF1aXJlc0Rlbm9ybWFsaXplIiwiZ2V0RXhwaXJ5U3RhdHVzIiwiaW52YWxpZElmU3RhbGUiLCJjcmVhdGVDb3VudFJlZiIsInBhdGhzIiwiZW50aXRpZXMiLCJlbnRpdHlFeHBpcmVzQXQiLCJlbnRpdGllc01ldGEiLCJpbnZhbGlkRGF0YSIsImdldCIsInF1ZXJ5IiwiZ2V0UXVlcnlNZXRhIiwiaW52YWxpZGF0ZWQiLCJJbnZhbGlkSWZTdGFsZSIsInBrIiwiX2VudGl0aWVzTWV0YSRrZXkiLCJlbnRpdHlFeHBpcnkiLCJBcnJheSIsImlzQXJyYXkiLCJ0Iiwibm9ybWFsaXplIiwiT2JqZWN0IiwidmFsdWVzIiwic29tZSIsIngiLCJjb250cm9sbGVyIiwiYWJvcnQiLCJsIiwiaSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFcnJvclR5cGVzLFxuICBTbmFwc2hvdEludGVyZmFjZSxcbiAgU2NoZW1hLFxuICBEZW5vcm1hbGl6ZSxcbiAgUXVlcnlhYmxlLFxuICBTY2hlbWFBcmdzLFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcbmltcG9ydCB7XG4gIEV4cGlyeVN0YXR1cyxcbiAgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIEZldGNoRnVuY3Rpb24sXG4gIFJlc29sdmVUeXBlLFxuICBEZW5vcm1hbGl6ZU51bGxhYmxlLFxuICBFbnRpdHlQYXRoLFxuICBNZW1vQ2FjaGUsXG4gIGRlbm9ybWFsaXplLFxuICB2YWxpZGF0ZVF1ZXJ5S2V5LFxufSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IEFib3J0T3B0aW1pc3RpYyBmcm9tICcuL0Fib3J0T3B0aW1pc3RpYy5qcyc7XG5pbXBvcnQge1xuICBjcmVhdGVVbnN1YnNjcmlwdGlvbixcbiAgY3JlYXRlU3Vic2NyaXB0aW9uLFxufSBmcm9tICcuL2FjdGlvbnMvY3JlYXRlU3Vic2NyaXB0aW9uLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGlyZUFsbCxcbiAgY3JlYXRlRmV0Y2gsXG4gIGNyZWF0ZUludmFsaWRhdGUsXG4gIGNyZWF0ZUludmFsaWRhdGVBbGwsXG4gIGNyZWF0ZVJlc2V0LFxuICBjcmVhdGVTZXQsXG4gIGNyZWF0ZVNldFJlc3BvbnNlLFxufSBmcm9tICcuL2FjdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IGVuc3VyZVBvam8gZnJvbSAnLi9lbnN1cmVQb2pvLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgU2tpcEluZmVyLFxuICBTZXRJbnZhbGlkYXRlU2NoZW1hLFxuICBTZXRNYW55U2NoZW1hLFxuICBTZXRNYW55VmFsdWUsXG4gIFNldFZhbHVlLFxufSBmcm9tICcuL3NldE1hbnlUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IFJlZHV4TWlkZGxld2FyZUFQSSB9IGZyb20gJy4uL21hbmFnZXIvYXBwbHlNYW5hZ2VyLmpzJztcbmltcG9ydCB0eXBlIHsgR0NJbnRlcmZhY2UgfSBmcm9tICcuLi9zdGF0ZS9HQ1BvbGljeS5qcyc7XG5pbXBvcnQgeyBJbW1vcnRhbEdDUG9saWN5IH0gZnJvbSAnLi4vc3RhdGUvR0NQb2xpY3kuanMnO1xuaW1wb3J0IHsgaW5pdGlhbFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUvcmVkdWNlci9jcmVhdGVSZWR1Y2VyLmpzJztcbmltcG9ydCBzZWxlY3RNZXRhIGZyb20gJy4uL3N0YXRlL3NlbGVjdE1ldGEuanMnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25UeXBlcywgU3RhdGUgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIEdlbmVyaWNEaXNwYXRjaCA9ICh2YWx1ZTogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xuZXhwb3J0IHR5cGUgRGF0YUNsaWVudERpc3BhdGNoID0gKHZhbHVlOiBBY3Rpb25UeXBlcykgPT4gUHJvbWlzZTx2b2lkPjtcblxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sbGVyQ29uc3RydWN0b3JQcm9wczxcbiAgRCBleHRlbmRzIEdlbmVyaWNEaXNwYXRjaCA9IERhdGFDbGllbnREaXNwYXRjaCxcbj4ge1xuICBkaXNwYXRjaD86IEQ7XG4gIGdldFN0YXRlPzogKCkgPT4gU3RhdGU8dW5rbm93bj47XG4gIG1lbW8/OiBQaWNrPE1lbW9DYWNoZSwgJ2Rlbm9ybWFsaXplJyB8ICdxdWVyeScgfCAnYnVpbGRRdWVyeUtleSc+O1xuICBnY1BvbGljeT86IEdDSW50ZXJmYWNlO1xufVxuXG5jb25zdCB1bnNldERpc3BhdGNoID0gKGFjdGlvbjogdW5rbm93bik6IFByb21pc2U8dm9pZD4gPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYERpc3BhdGNoaW5nIHdoaWxlIGNvbnN0cnVjdGluZyB5b3VyIG1pZGRsZXdhcmUgaXMgbm90IGFsbG93ZWQuIGAgK1xuICAgICAgYE90aGVyIG1pZGRsZXdhcmUgd291bGQgbm90IGJlIGFwcGxpZWQgdG8gdGhpcyBkaXNwYXRjaC5gLFxuICApO1xufTtcbmNvbnN0IHVuc2V0U3RhdGUgPSAoKTogU3RhdGU8dW5rbm93bj4gPT4ge1xuICAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgRGF0YVByb3ZpZGVyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBpbml0aWFsU3RhdGU7XG59O1xuXG4vKipcbiAqIEltcGVyYXRpdmUgY29udHJvbCBvZiBSZWFjdGl2ZSBEYXRhIENsaWVudCBzdG9yZVxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250cm9sbGVyPFxuICAvLyBOT1RFOiBXZSB0ZW1wbGF0ZSBvbiBlbnRpcmUgZGlzcGF0Y2gsIHNvIHdlIGNhbiBiZSBjb250cmF2YXJpYW50IG9uIEFjdGlvblR5cGVzXG4gIEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2gsXG4+IHtcbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uIHRvIFJlYWN0aXZlIERhdGEgQ2xpZW50IHJlZHVjZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZGlzcGF0Y2hcbiAgICovXG4gIGRlY2xhcmUgcHJvdGVjdGVkIF9kaXNwYXRjaDogRDtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGxhdGVzdCBzdGF0ZSBzbmFwc2hvdCB0aGF0IGlzIGZ1bGx5IGNvbW1pdHRlZC5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBpbXBlcmF0aXZlIHVzZS1jYXNlcyBsaWtlIGV2ZW50IGhhbmRsZXJzLlxuICAgKiBUaGlzIHNob3VsZCAqbm90KiBiZSB1c2VkIHRvIHJlbmRlcjsgaW5zdGVhZCB1c2VTdXNwZW5zZSgpIG9yIHVzZUNhY2hlKClcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRTdGF0ZVxuICAgKi9cbiAgZGVjbGFyZSBnZXRTdGF0ZTogKCkgPT4gU3RhdGU8dW5rbm93bj47XG4gIC8qKlxuICAgKiBTaW5nbGV0b24gdG8gbWFpbnRhaW4gcmVmZXJlbnRpYWwgZXF1YWxpdHkgYmV0d2VlbiBjYWxsc1xuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBtZW1vOiBQaWNrPFxuICAgIE1lbW9DYWNoZSxcbiAgICAnZGVub3JtYWxpemUnIHwgJ3F1ZXJ5JyB8ICdidWlsZFF1ZXJ5S2V5J1xuICA+O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGdhcmJhZ2UgY29sbGVjdGlvblxuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBnY1BvbGljeTogR0NJbnRlcmZhY2U7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGRpc3BhdGNoID0gdW5zZXREaXNwYXRjaCBhcyBhbnksXG4gICAgZ2V0U3RhdGUgPSB1bnNldFN0YXRlLFxuICAgIG1lbW8gPSBuZXcgTWVtb0NhY2hlKCksXG4gICAgZ2NQb2xpY3kgPSBuZXcgSW1tb3J0YWxHQ1BvbGljeSgpLFxuICB9OiBDb250cm9sbGVyQ29uc3RydWN0b3JQcm9wczxEPiA9IHt9KSB7XG4gICAgdGhpcy5fZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICB0aGlzLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gICAgdGhpcy5tZW1vID0gbWVtbztcbiAgICB0aGlzLmdjUG9saWN5ID0gZ2NQb2xpY3k7XG4gIH1cblxuICAvLyBUT0RPOiBkcm9wIHdoZW4gZHJvcCBzdXBwb3J0IGZvciBkZXN0cnVjdHVyaW5nICgwLjE0IGFuZCBiZWxvdylcbiAgc2V0IGRpc3BhdGNoKGRpc3BhdGNoOiBEKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aGlzLl9kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICB9XG5cbiAgLy8gVE9ETzogZHJvcCB3aGVuIGRyb3Agc3VwcG9ydCBmb3IgZGVzdHJ1Y3R1cmluZyAoMC4xNCBhbmQgYmVsb3cpXG4gIGdldCBkaXNwYXRjaCgpOiBEIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2g7XG4gIH1cblxuICBiaW5kTWlkZGxld2FyZSh7XG4gICAgZGlzcGF0Y2gsXG4gICAgZ2V0U3RhdGUsXG4gIH06IHtcbiAgICBkaXNwYXRjaDogRDtcbiAgICBnZXRTdGF0ZTogUmVkdXhNaWRkbGV3YXJlQVBJWydnZXRTdGF0ZSddO1xuICB9KSB7XG4gICAgdGhpcy5fZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICB0aGlzLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqIEFjdGlvbiBEaXNwYXRjaGVycyAqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGVuZHBvaW50IHdpdGggZ2l2ZW4gYXJncywgdXBkYXRpbmcgdGhlIFJlYWN0aXZlIERhdGEgQ2xpZW50IGNhY2hlIHdpdGggdGhlIHJlc3BvbnNlIG9yIGVycm9yIHVwb24gY29tcGxldGlvbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNmZXRjaFxuICAgKi9cbiAgZmV0Y2ggPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYgeyB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+IH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IEVbJ3NjaGVtYSddIGV4dGVuZHMgdW5kZWZpbmVkIHwgbnVsbCA/IFJldHVyblR5cGU8RT5cbiAgOiBQcm9taXNlPERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPj4gPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZUZldGNoKGVuZHBvaW50LCB7XG4gICAgICBhcmdzLFxuICAgIH0pO1xuICAgIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcblxuICAgIGlmIChlbmRwb2ludC5zY2hlbWEpIHtcbiAgICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlLnRoZW4oaW5wdXQgPT5cbiAgICAgICAgZGVub3JtYWxpemUoZW5kcG9pbnQuc2NoZW1hLCBpbnB1dCwge30sIGFyZ3MpLFxuICAgICAgKSBhcyBhbnk7XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlIGFzIGFueTtcbiAgfTtcblxuICAvKipcbiAgICogRmV0Y2hlcyBvbmx5IGlmIGVuZHBvaW50IGlzIGNvbnNpZGVyZWQgJ3N0YWxlJzsgb3RoZXJ3aXNlIHJldHVybnMgdW5kZWZpbmVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZmV0Y2hJZlN0YWxlXG4gICAqL1xuICBmZXRjaElmU3RhbGUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYgeyB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+IH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IEVbJ3NjaGVtYSddIGV4dGVuZHMgdW5kZWZpbmVkIHwgbnVsbCA/IFJldHVyblR5cGU8RT4gfCBSZXNvbHZlVHlwZTxFPlxuICA6IFByb21pc2U8RGVub3JtYWxpemU8RVsnc2NoZW1hJ10+PiB8IERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPiA9PiB7XG4gICAgY29uc3QgeyBkYXRhLCBleHBpcmVzQXQsIGV4cGlyeVN0YXR1cyB9ID0gdGhpcy5nZXRSZXNwb25zZU1ldGEoXG4gICAgICBlbmRwb2ludCxcbiAgICAgIC4uLmFyZ3MsXG4gICAgICB0aGlzLmdldFN0YXRlKCksXG4gICAgKTtcbiAgICBpZiAoZXhwaXJ5U3RhdHVzICE9PSBFeHBpcnlTdGF0dXMuSW52YWxpZCAmJiBEYXRlLm5vdygpIDw9IGV4cGlyZXNBdClcbiAgICAgIHJldHVybiBkYXRhIGFzIGFueTtcbiAgICByZXR1cm4gdGhpcy5mZXRjaChlbmRwb2ludCwgLi4uYXJncyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZvcmNlcyByZWZldGNoaW5nIGFuZCBzdXNwZW5zZSBvbiB1c2VTdXNwZW5zZSB3aXRoIHRoZSBzYW1lIEVuZHBvaW50IGFuZCBwYXJhbWV0ZXJzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ludmFsaWRhdGVcbiAgICovXG4gIGludmFsaWRhdGUgPSA8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGwgP1xuICAgICAgdGhpcy5kaXNwYXRjaChcbiAgICAgICAgY3JlYXRlSW52YWxpZGF0ZShlbmRwb2ludCwge1xuICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIG9uIGFsbCBtYXRjaGluZyBlbmRwb2ludCByZXN1bHQga2V5cy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlQWxsXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGludmFsaWRhdGlvbiBpcyBjb21taXRlZC5cbiAgICovXG4gIGludmFsaWRhdGVBbGwgPSAob3B0aW9uczogeyB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4gfSkgPT5cbiAgICB0aGlzLmRpc3BhdGNoKGNyZWF0ZUludmFsaWRhdGVBbGwoKGtleTogc3RyaW5nKSA9PiBvcHRpb25zLnRlc3RLZXkoa2V5KSkpO1xuXG4gIC8qKlxuICAgKiBTZXRzIGFsbCBtYXRjaGluZyBlbmRwb2ludCByZXN1bHQga2V5cyB0byBiZSBTVEFMRS5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNleHBpcmVBbGxcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZXhwaXJ5IGlzIGNvbW1pdGVkLiAqTk9UKiBmZXRjaCBwcm9taXNlXG4gICAqL1xuICBleHBpcmVBbGwgPSAob3B0aW9uczogeyB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4gfSkgPT5cbiAgICB0aGlzLmRpc3BhdGNoKGNyZWF0ZUV4cGlyZUFsbCgoa2V5OiBzdHJpbmcpID0+IG9wdGlvbnMudGVzdEtleShrZXkpKSk7XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgZW50aXJlIFJlYWN0aXZlIERhdGEgQ2xpZW50IGNhY2hlLiBBbGwgaW5mbGlnaHQgcmVxdWVzdHMgd2lsbCBub3QgcmVzb2x2ZS5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNldEVudGlyZVN0b3JlXG4gICAqL1xuICByZXNldEVudGlyZVN0b3JlID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5kaXNwYXRjaChjcmVhdGVSZXNldCgpKTtcblxuICAvKipcbiAgICogU2V0cyB2YWx1ZSBmb3IgdGhlIFF1ZXJ5YWJsZSBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRcbiAgICovXG4gIHNldDxTIGV4dGVuZHMgUXVlcnlhYmxlPihcbiAgICBzY2hlbWE6IFMsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uU2NoZW1hQXJnczxTPixcbiAgICAgIFNraXBJbmZlcjxcbiAgICAgICAgU2V0VmFsdWU8Uz4gfCAoKHByZXZpb3VzVmFsdWU6IERlbm9ybWFsaXplPFM+KSA9PiBTZXRWYWx1ZTxTPiksXG4gICAgICAgIFNcbiAgICAgID4sXG4gICAgXVxuICApOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBTZXRzIGV2ZXJ5IHJvdyBvZiBhbiBBcnJheSBvciBWYWx1ZXMgb2Ygb25lIEVudGl0eSAob3IgVW5pb24pIGluIG9uZSBub3JtYWxpemUsXG4gICAqIG9yIGludmFsaWRhdGVzIHRoZSBvbmUgRW50aXR5IGFuIEludmFsaWRhdGUgc2NoZW1hJ3MgdmFsdWUgaWRlbnRpZmllcy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRcbiAgICovXG4gIHNldDxTIGV4dGVuZHMgU2V0TWFueVNjaGVtYSB8IFNldEludmFsaWRhdGVTY2hlbWE+KFxuICAgIHNjaGVtYTogUyxcbiAgICB2YWx1ZTogU2tpcEluZmVyPFNldE1hbnlWYWx1ZTxTPiwgUz4sXG4gICk6IFByb21pc2U8dm9pZD47XG5cbiAgc2V0PFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uU2NoZW1hQXJnczxTPiwgYW55XVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVTZXQoc2NoZW1hLCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgU2NoZW1hQXJnczxTPixcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICAgIC8vIFRPRE86IHJlamVjdCB3aXRoIGVycm9yIGlmIHRoaXMgZmFpbHMgaW4gcmVkdWNlclxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyByZXNwb25zZSBmb3IgdGhlIEVuZHBvaW50IGFuZCBhcmdzLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFJlc3BvbnNlXG4gICAqL1xuICBzZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIGFueV1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IFJlc29sdmVUeXBlPEU+ID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZVNldFJlc3BvbnNlKGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gZXJyb3IgcmVzcG9uc2UgZm9yIHRoZSBFbmRwb2ludCBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRFcnJvclxuICAgKi9cbiAgc2V0RXJyb3IgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBFcnJvcl1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2U6IEVycm9yID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZVNldFJlc3BvbnNlKGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgZXJyb3I6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVzb2x2ZXMgYW4gaW5mbGlnaHQgZmV0Y2guXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjcmVzb2x2ZVxuICAgKi9cbiAgcmVzb2x2ZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgbWV0YTpcbiAgICAgIHwge1xuICAgICAgICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICAgICAgICByZXNwb25zZTogRXJyb3I7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICAgICAgICByZXNwb25zZTogYW55O1xuICAgICAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgICAgICAgIGVycm9yPzogZmFsc2UgfCB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNyZWF0ZVNldFJlc3BvbnNlKGVuZHBvaW50LCBtZXRhIGFzIGFueSkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXJrcyBhIG5ldyBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzdWJzY3JpYmVcbiAgICovXG4gIHN1YnNjcmliZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U8XG4gICAgICBGZXRjaEZ1bmN0aW9uLFxuICAgICAgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkIHwgZmFsc2VcbiAgICA+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbCA/XG4gICAgICB0aGlzLmRpc3BhdGNoKFxuICAgICAgICBjcmVhdGVTdWJzY3JpcHRpb24oZW5kcG9pbnQsIHtcbiAgICAgICAgICBhcmdzOiBhcmdzIGFzIFBhcmFtZXRlcnM8RT4sXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgLyoqXG4gICAqIE1hcmtzIGNvbXBsZXRpb24gb2Ygc3Vic2NyaXB0aW9uIHRvIGEgZ2l2ZW4gRW5kcG9pbnQuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjdW5zdWJzY3JpYmVcbiAgICovXG4gIHVuc3Vic2NyaWJlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZTxcbiAgICAgIEZldGNoRnVuY3Rpb24sXG4gICAgICBTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQgfCBmYWxzZVxuICAgID4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsID9cbiAgICAgIHRoaXMuZGlzcGF0Y2goXG4gICAgICAgIGNyZWF0ZVVuc3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgYXJnczogYXJncyBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKioqKioqKioqKioqKiogTW9yZSAqKioqKioqKioqKioqKiovXG5cbiAgLyogVE9ETzpcbiAgYWJvcnQgPSA8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogUHJvbWlzZTx2b2lkPlxuICAqL1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgc25hcHNob3QgKGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdClcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzbmFwc2hvdFxuICAgKi9cbiAgc25hcHNob3QgPSAoc3RhdGU6IFN0YXRlPHVua25vd24+LCBmZXRjaGVkQXQ/OiBudW1iZXIpOiBTbmFwc2hvdDx1bmtub3duPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBTbmFwc2hvdCh0aGlzLCBzdGF0ZSwgZmV0Y2hlZEF0KTtcbiAgfTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgZXJyb3IsIGlmIGFueSwgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQuIFJldHVybnMgdW5kZWZpbmVkIGZvciBubyBlcnJvcnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0RXJyb3JcbiAgICovXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDpcbiAgICAgIHwgcmVhZG9ubHkgW251bGwsIFN0YXRlPHVua25vd24+XVxuICAgICAgfCByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgU3RhdGU8dW5rbm93bj5dXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknPj4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDpcbiAgICAgIHwgcmVhZG9ubHkgW251bGwsIFN0YXRlPHVua25vd24+XVxuICAgICAgfCByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT4sIFN0YXRlPHVua25vd24+XVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIGdldEVycm9yKFxuICAgIGVuZHBvaW50OiBFbmRwb2ludEludGVyZmFjZSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4udW5rbm93bltdLCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHJlc3RbMF0gPT09IG51bGwpIHJldHVybjtcbiAgICBjb25zdCBzdGF0ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXSBhcyBTdGF0ZTx1bmtub3duPjtcbiAgICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgICBjb25zdCBhcmdzOiBhbnkgPSByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSk7XG4gICAgY29uc3Qga2V5ID0gZW5kcG9pbnQua2V5KC4uLmFyZ3MpO1xuXG4gICAgY29uc3QgbWV0YSA9IHNlbGVjdE1ldGEoc3RhdGUsIGtleSk7XG4gICAgY29uc3QgZXJyb3IgPSBzdGF0ZS5lbmRwb2ludHNba2V5XTtcblxuICAgIGlmIChlcnJvciAhPT0gdW5kZWZpbmVkICYmIG1ldGE/LmVycm9yUG9saWN5ID09PSAnc29mdCcpIHJldHVybjtcblxuICAgIHJldHVybiBtZXRhPy5lcnJvciBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRSZXNwb25zZVxuICAgKi9cbiAgZ2V0UmVzcG9uc2U8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OlxuICAgICAgfCByZWFkb25seSBbbnVsbCwgU3RhdGU8dW5rbm93bj5dXG4gICAgICB8IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlPFxuICAgIEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5JyB8ICdzY2hlbWEnIHwgJ2ludmFsaWRJZlN0YWxlJz4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uKHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF0pLFxuICAgICAgU3RhdGU8dW5rbm93bj4sXG4gICAgXVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgY291bnRSZWY6ICgpID0+ICgpID0+IHZvaWQ7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2UoXG4gICAgZW5kcG9pbnQ6IEVuZHBvaW50SW50ZXJmYWNlLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi51bmtub3duW10sIFN0YXRlPHVua25vd24+XVxuICApOiB7XG4gICAgZGF0YTogdW5rbm93bjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBjb3VudFJlZjogKCkgPT4gKCkgPT4gdm9pZDtcbiAgfSB7XG4gICAgLy8gVE9ETzogYnJlYWtpbmc6IG9ubHkgcmV0dXJuIGRhdGFcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNwb25zZU1ldGEoZW5kcG9pbnQsIC4uLnJlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIChnbG9iYWxseSByZWZlcmVudGlhbGx5IHN0YWJsZSkgcmVzcG9uc2UgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQvYXJncyBwYWlyIGZyb20gc3RhdGUgZ2l2ZW4uXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0UmVzcG9uc2VNZXRhXG4gICAqL1xuICBnZXRSZXNwb25zZU1ldGE8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OlxuICAgICAgfCByZWFkb25seSBbbnVsbCwgU3RhdGU8dW5rbm93bj5dXG4gICAgICB8IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLihyZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdKSxcbiAgICAgIFN0YXRlPHVua25vd24+LFxuICAgIF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YShcbiAgICBlbmRwb2ludDogRW5kcG9pbnRJbnRlcmZhY2UsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLnVua25vd25bXSwgU3RhdGU8dW5rbm93bj5dXG4gICk6IHtcbiAgICBkYXRhOiB1bmtub3duO1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICBjb25zdCBbc3RhdGUsIGFyZ3NdID0gZXh0cmFjdFN0YXRlQW5kQXJncyhyZXN0KTtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IGFyZ3MubGVuZ3RoICE9PSAxIHx8IGFyZ3NbMF0gIT09IG51bGw7XG4gICAgY29uc3Qga2V5ID0gaXNBY3RpdmUgPyBlbmRwb2ludC5rZXkoLi4uYXJncykgOiAnJztcbiAgICBjb25zdCBjYWNoZUVuZHBvaW50cyA9IGlzQWN0aXZlID8gc3RhdGUuZW5kcG9pbnRzW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2NoZW1hID0gZW5kcG9pbnQuc2NoZW1hO1xuICAgIGNvbnN0IG1ldGEgPSBzZWxlY3RNZXRhKHN0YXRlLCBrZXkpO1xuICAgIGxldCBleHBpcmVzQXQgPSBtZXRhPy5leHBpcmVzQXQ7XG4gICAgLy8gaWYgd2UgaGF2ZSBubyBlbmRwb2ludCBlbnRyeSwgYW5kIG91ciBlbmRwb2ludCBoYXMgYSBzY2hlbWEgLSB0cnkgcXVlcnlpbmcgdGhlIHN0b3JlXG4gICAgY29uc3Qgc2hvdWxkUXVlcnkgPSBjYWNoZUVuZHBvaW50cyA9PT0gdW5kZWZpbmVkICYmIHNjaGVtYSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgaW5wdXQgPVxuICAgICAgc2hvdWxkUXVlcnkgP1xuICAgICAgICAvLyBub3RoaW5nIGluIGVuZHBvaW50cyBjYWNoZSwgc28gdHJ5IHF1ZXJ5aW5nIGlmIHdlIGhhdmUgYSBzY2hlbWEgdG8gZG8gc29cbiAgICAgICAgdGhpcy5tZW1vLmJ1aWxkUXVlcnlLZXkoc2NoZW1hLCBhcmdzLCBzdGF0ZSwga2V5KVxuICAgICAgOiBjYWNoZUVuZHBvaW50cztcblxuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIC8vIHdoZW4gbm90IGFjdGl2ZSBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeSBpbnB1dCB3aXRob3V0IGRlbm9ybWFsaXppbmdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IGlucHV0IGFzIGFueSxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXMuVmFsaWQsXG4gICAgICAgIGV4cGlyZXNBdDogSW5maW5pdHksXG4gICAgICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICBpZiAoc2hvdWxkUXVlcnkpIHtcbiAgICAgIGlzSW52YWxpZCA9ICF2YWxpZGF0ZVF1ZXJ5S2V5KGlucHV0KTtcbiAgICAgIC8vIGVuZHBvaW50IHdpdGhvdXQgZW50aXRpZXNcbiAgICB9IGVsc2UgaWYgKCFzY2hlbWEgfHwgIXJlcXVpcmVzRGVub3JtYWxpemUoc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogY2FjaGVFbmRwb2ludHMsXG4gICAgICAgIGV4cGlyeVN0YXR1czogdGhpcy5nZXRFeHBpcnlTdGF0dXMoXG4gICAgICAgICAgY2FjaGVFbmRwb2ludHMgPT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAhIWVuZHBvaW50LmludmFsaWRJZlN0YWxlLFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgICksXG4gICAgICAgIGV4cGlyZXNBdDogZXhwaXJlc0F0IHx8IDAsXG4gICAgICAgIGNvdW50UmVmOiB0aGlzLmdjUG9saWN5LmNyZWF0ZUNvdW50UmVmKHsga2V5IH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGRhdGEsIHBhdGhzIH0gPSB0aGlzLm1lbW8uZGVub3JtYWxpemUoXG4gICAgICBzY2hlbWEsXG4gICAgICBpbnB1dCxcbiAgICAgIHN0YXRlLmVudGl0aWVzLFxuICAgICAgYXJncyxcbiAgICApIGFzIHsgZGF0YTogYW55OyBwYXRoczogRW50aXR5UGF0aFtdIH07XG5cbiAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgLy8gbm90ZTogaXNJbnZhbGlkIGNhbiBvbmx5IGJlIHRydWUgaWYgc2hvdWxkUXVlcnkgaXMgdHJ1ZVxuICAgICAgaWYgKGlzSW52YWxpZCkgZXhwaXJlc0F0ID0gMTtcbiAgICAgIC8vIGZhbGxiYWNrIHRvIGVudGl0eSBleHBpcnkgdGltZVxuICAgICAgZWxzZSBleHBpcmVzQXQgPSBlbnRpdHlFeHBpcmVzQXQocGF0aHMsIHN0YXRlLmVudGl0aWVzTWV0YSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZERhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCc7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIElOVkFMSUQgc3ltYm9sIChlLmcuIGRlbGV0ZWQgZW50aXR5KSBpcyBhbiBpbnRlcm5hbCBtYXJrZXI7IGV4cG9zZSBpdCBhcyBtaXNzaW5nIGRhdGFcbiAgICAgIGRhdGE6IGludmFsaWREYXRhID8gdW5kZWZpbmVkIDogZGF0YSxcbiAgICAgIGV4cGlyeVN0YXR1czogdGhpcy5nZXRFeHBpcnlTdGF0dXMoXG4gICAgICAgIGludmFsaWREYXRhLFxuICAgICAgICAhIWVuZHBvaW50LmludmFsaWRJZlN0YWxlIHx8IGlzSW52YWxpZCxcbiAgICAgICAgbWV0YSxcbiAgICAgICksXG4gICAgICBleHBpcmVzQXQsXG4gICAgICBjb3VudFJlZjogdGhpcy5nY1BvbGljeS5jcmVhdGVDb3VudFJlZih7IGtleSwgcGF0aHMgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNnZXRcbiAgICovXG4gIGdldDxTIGV4dGVuZHMgUXVlcnlhYmxlPihcbiAgICBzY2hlbWE6IFMsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgW1xuICAgICAgLi4uU2NoZW1hQXJnczxTPixcbiAgICAgIFBpY2s8U3RhdGU8dW5rbm93bj4sICdlbnRpdGllcycgfCAnaW5kZXhlcyc+LFxuICAgIF1cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW3N0YXRlLCBhcmdzXSA9IGV4dHJhY3RTdGF0ZUFuZEFyZ3MocmVzdCk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHRoaXMubWVtby5xdWVyeShzY2hlbWEsIGFyZ3MsIHN0YXRlKTtcbiAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdzeW1ib2wnID8gdW5kZWZpbmVkIDogZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWE7IHByb3ZpZGluZyByZWxhdGVkIG1ldGFkYXRhXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0UXVlcnlNZXRhXG4gICAqL1xuICBnZXRRdWVyeU1ldGE8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFtcbiAgICAgIC4uLlNjaGVtYUFyZ3M8Uz4sXG4gICAgICBQaWNrPFN0YXRlPHVua25vd24+LCAnZW50aXRpZXMnIHwgJ2luZGV4ZXMnPixcbiAgICBdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPFM+IHwgdW5kZWZpbmVkO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICBjb25zdCBbc3RhdGUsIGFyZ3NdID0gZXh0cmFjdFN0YXRlQW5kQXJncyhyZXN0KTtcblxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IHRoaXMubWVtby5xdWVyeShzY2hlbWEsIGFyZ3MsIHN0YXRlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCcgPyB1bmRlZmluZWQgOiBkYXRhLFxuICAgICAgY291bnRSZWY6IHRoaXMuZ2NQb2xpY3kuY3JlYXRlQ291bnRSZWYoeyBwYXRocyB9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBpcnlTdGF0dXMoXG4gICAgaW52YWxpZERhdGE6IGJvb2xlYW4sXG4gICAgaW52YWxpZElmU3RhbGU6IGJvb2xlYW4sXG4gICAgbWV0YTogeyBlcnJvcj86IHVua25vd247IGludmFsaWRhdGVkPzogdW5rbm93biB9ID0ge30sXG4gICkge1xuICAgIC8vIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2NvbmNlcHRzL2V4cGlyeS1wb2xpY3kjZXhwaXJ5LXN0YXR1c1xuICAgIC8vIHdlIGRvbid0IHRyYWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3RhbGUgb3IgZnJlc2ggYmVjYXVzZSB0aGF0IGlzIHRpZWQgdG8gdHJpZ2dlcmluZ1xuICAgIC8vIGNvbmRpdGlvbnNcbiAgICByZXR1cm4gKFxuICAgICAgbWV0YS5pbnZhbGlkYXRlZCB8fCAoaW52YWxpZERhdGEgJiYgIW1ldGEuZXJyb3IpID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgIDogaW52YWxpZERhdGEgfHwgaW52YWxpZElmU3RhbGUgPyBFeHBpcnlTdGF0dXMuSW52YWxpZElmU3RhbGVcbiAgICAgIDogRXhwaXJ5U3RhdHVzLlZhbGlkXG4gICAgKTtcbiAgfVxufVxuXG4vLyBiZW5jaG1hcms6IGh0dHBzOi8vd3d3Lm1lYXN1cmV0aGF0Lm5ldC9CZW5jaG1hcmtzL1Nob3cvMjQ2OTEvMC9taW4tcmVkdWNlci12cy1pbXBlcmF0aXZlLXdpdGgtcGF0aHNcbi8vIGVhcmxpZXN0IGV4cGlyeSBkaWN0YXRlcyBhZ2VcbmZ1bmN0aW9uIGVudGl0eUV4cGlyZXNBdChcbiAgcGF0aHM6IEVudGl0eVBhdGhbXSxcbiAgZW50aXRpZXNNZXRhOiB7XG4gICAgcmVhZG9ubHkgW2VudGl0eUtleTogc3RyaW5nXToge1xuICAgICAgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiB7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGZldGNoZWRBdDogbnVtYmVyOyAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgRGF0YVByb3ZpZGVyXG4gICAgICB9O1xuICAgIH07XG4gIH0sXG4pIHtcbiAgbGV0IGV4cGlyZXNBdCA9IEluZmluaXR5O1xuICBmb3IgKGNvbnN0IHsga2V5LCBwayB9IG9mIHBhdGhzKSB7XG4gICAgY29uc3QgZW50aXR5RXhwaXJ5ID0gZW50aXRpZXNNZXRhW2tleV0/Lltwa10/LmV4cGlyZXNBdDtcbiAgICAvLyBleHBpcmVzQXQgd2lsbCBhbHdheXMgcmVzb2x2ZSB0byBmYWxzZSB3aXRoIGFueSBjb21wYXJpc29uXG4gICAgaWYgKGVudGl0eUV4cGlyeSA8IGV4cGlyZXNBdCkgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJ5O1xuICB9XG4gIHJldHVybiBleHBpcmVzQXQ7XG59XG5cbi8qKiBXaGV0aGVyIGBkZW5vcm1hbGl6ZSgpYCBtdXN0IHJ1biB0byByZWNvbnN0cnVjdCB0aGUgcmVzcG9uc2UuXG4gKlxuICogVHJ1ZSBpZmYgc29tZSBub2RlIGluIHRoZSBzY2hlbWEgdHJlZSBkZWZpbmVzIGBub3JtYWxpemVgIOKAlCBtZWFuaW5nIGl0XG4gKiB0cmFuc2Zvcm1zIHRoZSByZXNwb25zZSB3aGVuIHdyaXR0ZW4gKGVudGl0eSB3cml0ZSwgcG9seW1vcnBoaWMgaG9pc3QsXG4gKiBsYXp5IGRlbGVnYXRpb24sIGV0Yy4pLCBzbyB0aGUgY2FjaGVkIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgcmVzcG9uc2UuXG4gKiBNaXJyb3JzIHRoZSBkaXNwYXRjaCBpbiBgZ2V0VmlzaXQudHNgOiBzY2hlbWEgY2xhc3NlcyBhcmUgZGV0ZWN0ZWQgaGVyZVxuICogYnkgdGhlIHNhbWUgaG9vayB0aGUgdmlzaXQgd2Fsa2VyIHVzZXMsIHNvIHdlIG5ldmVyIG5lZWQgdG8gd2FsayB0aGVpclxuICogaW5zdGFuY2UgZmllbGRzLlxuICovXG5mdW5jdGlvbiByZXF1aXJlc0Rlbm9ybWFsaXplKHNjaGVtYTogU2NoZW1hKTogYm9vbGVhbiB7XG4gIGlmICghc2NoZW1hKSByZXR1cm4gZmFsc2U7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpXG4gICAgcmV0dXJuIHNjaGVtYS5sZW5ndGggIT09IDAgJiYgcmVxdWlyZXNEZW5vcm1hbGl6ZShzY2hlbWFbMF0pO1xuICAvLyBNdXN0IHJlamVjdCBwcmltaXRpdmVzIGJlZm9yZSBwcm9iaW5nIGAubm9ybWFsaXplYCDigJQgYFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplYCBleGlzdHMuXG4gIGNvbnN0IHQgPSB0eXBlb2Ygc2NoZW1hO1xuICBpZiAodCAhPT0gJ29iamVjdCcgJiYgdCAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIChzY2hlbWEgYXMgYW55KS5ub3JtYWxpemUgPT09ICdmdW5jdGlvbicpIHJldHVybiB0cnVlO1xuICAvLyBQbGFpbi1vYmplY3Qgc2NoZW1hIG1hcCAoZS5nLiBgeyBkYXRhOiBbVGFjb3NdLCBwYWdlOiB7IC4uLiB9IH1gKS5cbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc2NoZW1hIGFzIG9iamVjdCkuc29tZSh4ID0+IHJlcXVpcmVzRGVub3JtYWxpemUoeCkpO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yVHlwZXMgfTtcblxuY2xhc3MgU25hcHNob3Q8VCA9IHVua25vd24+IGltcGxlbWVudHMgU25hcHNob3RJbnRlcmZhY2Uge1xuICBzdGF0aWMgcmVhZG9ubHkgYWJvcnQgPSBuZXcgQWJvcnRPcHRpbWlzdGljKCk7XG5cbiAgcHJpdmF0ZSBzdGF0ZTogU3RhdGU8VD47XG4gIHByaXZhdGUgY29udHJvbGxlcjogQ29udHJvbGxlcjtcbiAgcmVhZG9ubHkgZmV0Y2hlZEF0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGFib3J0ID0gU25hcHNob3QuYWJvcnQ7XG5cbiAgY29uc3RydWN0b3IoY29udHJvbGxlcjogQ29udHJvbGxlciwgc3RhdGU6IFN0YXRlPFQ+LCBmZXRjaGVkQXQgPSAwKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgdGhpcy5mZXRjaGVkQXQgPSBmZXRjaGVkQXQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqIERhdGEgQWNjZXNzICoqKioqKioqKioqKioqKi9cbiAgLyoqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFJlc3BvbnNlICovXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZU1ldGEgKi9cbiAgZ2V0UmVzcG9uc2VNZXRhPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZU1ldGE8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlTWV0YTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlTWV0YShlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0RXJyb3IgKi9cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICBnZXRFcnJvcjxFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+PihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IEVycm9yVHlwZXMgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RXJyb3I8RSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknPj4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RVsna2V5J10+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldEVycm9yKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZWQgbWVtb2l6ZWQgdmFsdWUgZm9yIGFueSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLmFyZ3M6IFNjaGVtYUFyZ3M8Uz5cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXQoc2NoZW1hLCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBzdG9yZSBmb3IgYSBRdWVyYWJsZSBzY2hlbWE7IHByb3ZpZGluZyByZWxhdGVkIG1ldGFkYXRhXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFF1ZXJ5TWV0YVxuICAgKi9cbiAgZ2V0UXVlcnlNZXRhPFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5hcmdzOiBTY2hlbWFBcmdzPFM+XG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPFM+IHwgdW5kZWZpbmVkO1xuICAgIGNvdW50UmVmOiAoKSA9PiAoKSA9PiB2b2lkO1xuICB9IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFF1ZXJ5TWV0YShzY2hlbWEsIC4uLmFyZ3MsIHRoaXMuc3RhdGUpO1xuICB9XG59XG5cbi8qKiBFeHRyYWN0IHN0YXRlIGFuZCBhcmdzIGZyb20gcmVzdCBwYXJhbXMsIGFwcGx5aW5nIGVuc3VyZVBvam8gdG8gYXJncyAqL1xuZnVuY3Rpb24gZXh0cmFjdFN0YXRlQW5kQXJncyhyZXN0OiByZWFkb25seSB1bmtub3duW10pOiBbU3RhdGU8YW55PiwgYW55W11dIHtcbiAgY29uc3QgbCA9IHJlc3QubGVuZ3RoO1xuICBjb25zdCBhcmdzOiBhbnkgPSBuZXcgQXJyYXkobCAtIDEpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGwgLSAxOyBpKyspIHtcbiAgICAvLyBoYW5kbGUgRm9ybURhdGFcbiAgICBhcmdzW2ldID0gZW5zdXJlUG9qbyhyZXN0W2ldKTtcbiAgfVxuICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgcmV0dXJuIFtyZXN0W2wgLSAxXSBhcyBTdGF0ZTxhbnk+LCBhcmdzXTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBUUEsU0FDRUEsWUFBWSxFQU1aQyxTQUFTLEVBQ1RDLFdBQVcsRUFDWEMsZ0JBQWdCLFFBQ1gsd0JBQXdCO0FBRS9CLE9BQU9DLGVBQWUsTUFBTSxzQkFBc0I7QUFDbEQsU0FDRUMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsUUFDYixpQ0FBaUM7QUFDeEMsU0FDRUMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsbUJBQW1CLEVBQ25CQyxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsaUJBQWlCLFFBQ1osb0JBQW9CO0FBQzNCLE9BQU9DLFVBQVUsTUFBTSxpQkFBaUI7QUFXeEMsU0FBU0MsZ0JBQWdCLFFBQVEsc0JBQXNCO0FBQ3ZELFNBQVNDLFlBQVksUUFBUSxtQ0FBbUM7QUFDaEUsT0FBT0MsVUFBVSxNQUFNLHdCQUF3QjtBQWUvQyxNQUFNQyxhQUFhLEdBQUlDLE1BQWUsSUFBb0I7RUFDeEQsTUFBTSxJQUFJQyxLQUFLLENBQ2IsaUVBQWlFLEdBQy9ELHlEQUNKLENBQUM7QUFDSCxDQUFDO0FBQ0QsTUFBTUMsVUFBVSxHQUFHQSxDQUFBLEtBQXNCO0VBQ3ZDO0VBQ0E7RUFDQSxPQUFPTCxZQUFZO0FBQ3JCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1NLFVBQVUsQ0FHN0I7RUFDQTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztFQUVFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFNRTtBQUNGO0FBQ0E7O0VBR0VDLFdBQVdBLENBQUM7SUFDVkMsUUFBUSxHQUFHTixhQUFvQjtJQUMvQk8sUUFBUSxHQUFHSixVQUFVO0lBQ3JCSyxJQUFJLEdBQUcsSUFBSXpCLFNBQVMsQ0FBQyxDQUFDO0lBQ3RCMEIsUUFBUSxHQUFHLElBQUlaLGdCQUFnQixDQUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"ensurePojo.d.ts","sourceRoot":"","sources":["../../src/controller/ensurePojo.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,SAIZ,GAAG,QAIoC,CAAC;AACnD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ensurePojo.d.ts","sourceRoot":"","sources":["../../src/controller/ensurePojo.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,SAIZ,GAAG,QAIoC,CAAC;eACpC,UAAU"}
@@ -0,0 +1,69 @@
1
+ /** Value types for `Controller.set()`, including batch `set([Entity], rows)` */
2
+ import type { Denormalize, EntityInterface } from '@data-client/normalizr';
3
+ /** What one row normalizes to: a reference to one stored entity */
4
+ type EntityRef = string | {
5
+ readonly id: string;
6
+ readonly schema: string;
7
+ };
8
+ /** Schemas that write each row to one stored entity: Entity, Union, or Invalidate (batch delete).
9
+ * Query, All and Collection don't: they normalize to lists, or Collection keys by args batch set() lacks. */
10
+ type SetEntitySchema = EntityInterface | EntityRefSchema;
11
+ /** Union or Invalidate */
12
+ type EntityRefSchema = {
13
+ _normalizeNullable(): EntityRef | undefined;
14
+ pk?: never;
15
+ };
16
+ /** `[Entity]`, `schema.Array(Entity)` or `schema.Values(Entity)` (or of a Union or Invalidate) */
17
+ export type SetManySchema = readonly SetEntitySchema[] | {
18
+ readonly schema: SetEntitySchema | Record<string, EntityInterface>;
19
+ schemaKey(): string;
20
+ queryKey(...args: any): undefined;
21
+ pk?: never;
22
+ };
23
+ /** `new Invalidate(Entity)` (or of a Union): not Queryable, since its queryKey() returns undefined */
24
+ export type SetInvalidateSchema = EntityRefSchema & {
25
+ queryKey(...args: any): undefined;
26
+ query?: never;
27
+ };
28
+ type IsUnion<T, U = T> = T extends unknown ? [
29
+ U
30
+ ] extends [T] ? false : true : never;
31
+ type FunctionKeys<U> = {
32
+ [K in keyof U]: U[K] extends (...args: any) => any ? K : never;
33
+ }[keyof U];
34
+ /** Raw input for one field: numbers and strings coerce (literals stay exact);
35
+ * objects are pre-normalize */
36
+ type SetField<T> = T extends number ? number extends T ? T | string : T : T extends string ? string extends T ? T | number : T : T extends object ? unknown : T;
37
+ /** Fields of one row (or a coerced primitive); like EntityFields, but distributive
38
+ * and without key remapping (TS 4.0). A Union gets one row per member, so a
39
+ * discriminator like `type` selects the member the other fields are checked against. */
40
+ type SetRow<U> = 0 extends 1 & U ? {
41
+ readonly [k: string]: any;
42
+ } : U extends object ? {
43
+ readonly [K in Exclude<keyof U, FunctionKeys<U>>]?: SetField<U[K]>;
44
+ } : SetField<U>;
45
+ /** Keeps S inferred from the schema alone: inferring it from the value too would
46
+ * walk the value's type against every conditional in SetValue (TS 5.4 has NoInfer) */
47
+ export type SkipInfer<T, S> = [T][S extends unknown ? 0 : never];
48
+ export type SetManyValue<S> = S extends readonly (infer E)[] ? true extends IsUnion<E> ? readonly {
49
+ 'Use a Union schema for several Entity types': never;
50
+ }[] : readonly SetRow<Denormalize<E>>[] : SetValue<S>;
51
+ /** Raw input `set()` normalizes for a Queryable */
52
+ export type SetValue<S> = InputSchema<InputSchema<InputSchema<S>>> extends infer N ? N extends EntityInterface ? SetRow<Denormalize<N>> : SetInput<Denormalize<N>> : never;
53
+ /** Query normalizes with its inner schema; its process() output is not input
54
+ *
55
+ * Applied three times in SetValue to unwrap nested Queries (TS 4.0 has no recursive aliases)
56
+ */
57
+ type InputSchema<S> = S extends ({
58
+ readonly schema: infer Sch;
59
+ process(...args: any): any;
60
+ pk?: never;
61
+ }) ? Sch : S;
62
+ /** Raw input for a denormalized value, like a Collection's list or a Union's row */
63
+ type SetInput<T> = 0 extends 1 & T ? any : [
64
+ T
65
+ ] extends [readonly (infer U)[]] ? readonly SetRow<U>[] : string extends keyof T ? {
66
+ readonly [k: string]: SetRow<T[keyof T]>;
67
+ } : SetRow<T>;
68
+ export {};
69
+ //# sourceMappingURL=setManyTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setManyTypes.d.ts","sourceRoot":"","sources":["../../src/controller/setManyTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvc2V0TWFueVR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBWYWx1ZSB0eXBlcyBmb3IgYENvbnRyb2xsZXIuc2V0KClgLCBpbmNsdWRpbmcgYmF0Y2ggYHNldChbRW50aXR5XSwgcm93cylgICovXG5pbXBvcnQgdHlwZSB7IERlbm9ybWFsaXplLCBFbnRpdHlJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuLyoqIFdoYXQgb25lIHJvdyBub3JtYWxpemVzIHRvOiBhIHJlZmVyZW5jZSB0byBvbmUgc3RvcmVkIGVudGl0eSAqL1xudHlwZSBFbnRpdHlSZWYgPSBzdHJpbmcgfCB7IHJlYWRvbmx5IGlkOiBzdHJpbmc7IHJlYWRvbmx5IHNjaGVtYTogc3RyaW5nIH07XG5cbi8qKiBTY2hlbWFzIHRoYXQgd3JpdGUgZWFjaCByb3cgdG8gb25lIHN0b3JlZCBlbnRpdHk6IEVudGl0eSwgVW5pb24sIG9yIEludmFsaWRhdGUgKGJhdGNoIGRlbGV0ZSkuXG4gKiBRdWVyeSwgQWxsIGFuZCBDb2xsZWN0aW9uIGRvbid0OiB0aGV5IG5vcm1hbGl6ZSB0byBsaXN0cywgb3IgQ29sbGVjdGlvbiBrZXlzIGJ5IGFyZ3MgYmF0Y2ggc2V0KCkgbGFja3MuICovXG50eXBlIFNldEVudGl0eVNjaGVtYSA9IEVudGl0eUludGVyZmFjZSB8IEVudGl0eVJlZlNjaGVtYTtcblxuLyoqIFVuaW9uIG9yIEludmFsaWRhdGUgKi9cbnR5cGUgRW50aXR5UmVmU2NoZW1hID0ge1xuICBfbm9ybWFsaXplTnVsbGFibGUoKTogRW50aXR5UmVmIHwgdW5kZWZpbmVkO1xuICAvLyBleGNsdWRlcyBFbnRpdHkgYW5kIENvbGxlY3Rpb25cbiAgcGs/OiBuZXZlcjtcbn07XG5cbi8qKiBgW0VudGl0eV1gLCBgc2NoZW1hLkFycmF5KEVudGl0eSlgIG9yIGBzY2hlbWEuVmFsdWVzKEVudGl0eSlgIChvciBvZiBhIFVuaW9uIG9yIEludmFsaWRhdGUpICovXG5leHBvcnQgdHlwZSBTZXRNYW55U2NoZW1hID1cbiAgfCByZWFkb25seSBTZXRFbnRpdHlTY2hlbWFbXVxuICB8IHtcbiAgICAgIHJlYWRvbmx5IHNjaGVtYTogU2V0RW50aXR5U2NoZW1hIHwgUmVjb3JkPHN0cmluZywgRW50aXR5SW50ZXJmYWNlPjtcbiAgICAgIC8vIEFycmF5IGFuZCBWYWx1ZXM7IGV4Y2x1ZGVzIHNjaGVtYS5PYmplY3QsIHdob3NlIHF1ZXJ5S2V5KCkgcmV0dXJucyBhbnlcbiAgICAgIHNjaGVtYUtleSgpOiBzdHJpbmc7XG4gICAgICBxdWVyeUtleSguLi5hcmdzOiBhbnkpOiB1bmRlZmluZWQ7XG4gICAgICAvLyBleGNsdWRlcyBFbnRpdHksIHdob3NlIGBhbnlgIHJldHVybnMgbWF0Y2ggdGhlIG1lbWJlcnMgYWJvdmVcbiAgICAgIHBrPzogbmV2ZXI7XG4gICAgfTtcblxuLyoqIGBuZXcgSW52YWxpZGF0ZShFbnRpdHkpYCAob3Igb2YgYSBVbmlvbik6IG5vdCBRdWVyeWFibGUsIHNpbmNlIGl0cyBxdWVyeUtleSgpIHJldHVybnMgdW5kZWZpbmVkICovXG5leHBvcnQgdHlwZSBTZXRJbnZhbGlkYXRlU2NoZW1hID0gRW50aXR5UmVmU2NoZW1hICYge1xuICAvLyBleGNsdWRlcyBVbmlvblxuICBxdWVyeUtleSguLi5hcmdzOiBhbnkpOiB1bmRlZmluZWQ7XG4gIC8vIGV4Y2x1ZGVzIExhenlcbiAgcXVlcnk/OiBuZXZlcjtcbn07XG5cbnR5cGUgSXNVbmlvbjxULCBVID0gVD4gPVxuICBUIGV4dGVuZHMgdW5rbm93biA/XG4gICAgW1VdIGV4dGVuZHMgW1RdID9cbiAgICAgIGZhbHNlXG4gICAgOiB0cnVlXG4gIDogbmV2ZXI7XG5cbnR5cGUgRnVuY3Rpb25LZXlzPFU+ID0ge1xuICBbSyBpbiBrZXlvZiBVXTogVVtLXSBleHRlbmRzICguLi5hcmdzOiBhbnkpID0+IGFueSA/IEsgOiBuZXZlcjtcbn1ba2V5b2YgVV07XG5cbi8qKiBSYXcgaW5wdXQgZm9yIG9uZSBmaWVsZDogbnVtYmVycyBhbmQgc3RyaW5ncyBjb2VyY2UgKGxpdGVyYWxzIHN0YXkgZXhhY3QpO1xuICogb2JqZWN0cyBhcmUgcHJlLW5vcm1hbGl6ZSAqL1xudHlwZSBTZXRGaWVsZDxUPiA9XG4gIFQgZXh0ZW5kcyBudW1iZXIgP1xuICAgIG51bWJlciBleHRlbmRzIFQgP1xuICAgICAgVCB8IHN0cmluZ1xuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBzdHJpbmcgP1xuICAgIHN0cmluZyBleHRlbmRzIFQgP1xuICAgICAgVCB8IG51bWJlclxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBvYmplY3QgPyB1bmtub3duXG4gIDogVDtcblxuLyoqIEZpZWxkcyBvZiBvbmUgcm93IChvciBhIGNvZXJjZWQgcHJpbWl0aXZlKTsgbGlrZSBFbnRpdHlGaWVsZHMsIGJ1dCBkaXN0cmlidXRpdmVcbiAqIGFuZCB3aXRob3V0IGtleSByZW1hcHBpbmcgKFRTIDQuMCkuIEEgVW5pb24gZ2V0cyBvbmUgcm93IHBlciBtZW1iZXIsIHNvIGFcbiAqIGRpc2NyaW1pbmF0b3IgbGlrZSBgdHlwZWAgc2VsZWN0cyB0aGUgbWVtYmVyIHRoZSBvdGhlciBmaWVsZHMgYXJlIGNoZWNrZWQgYWdhaW5zdC4gKi9cbnR5cGUgU2V0Um93PFU+ID1cbiAgLy8gRW50aXR5TWl4aW4gYW5kIG90aGVyIHVudHlwZWQgZW50aXRpZXNcbiAgMCBleHRlbmRzIDEgJiBVID8geyByZWFkb25seSBbazogc3RyaW5nXTogYW55IH1cbiAgOiBVIGV4dGVuZHMgb2JqZWN0ID9cbiAgICB7IHJlYWRvbmx5IFtLIGluIEV4Y2x1ZGU8a2V5b2YgVSwgRnVuY3Rpb25LZXlzPFU+Pl0/OiBTZXRGaWVsZDxVW0tdPiB9XG4gIDogU2V0RmllbGQ8VT47XG5cbi8qKiBLZWVwcyBTIGluZmVycmVkIGZyb20gdGhlIHNjaGVtYSBhbG9uZTogaW5mZXJyaW5nIGl0IGZyb20gdGhlIHZhbHVlIHRvbyB3b3VsZFxuICogd2FsayB0aGUgdmFsdWUncyB0eXBlIGFnYWluc3QgZXZlcnkgY29uZGl0aW9uYWwgaW4gU2V0VmFsdWUgKFRTIDUuNCBoYXMgTm9JbmZlcikgKi9cbmV4cG9ydCB0eXBlIFNraXBJbmZlcjxULCBTPiA9IFtUXVtTIGV4dGVuZHMgdW5rbm93biA/IDAgOiBuZXZlcl07XG5cbmV4cG9ydCB0eXBlIFNldE1hbnlWYWx1ZTxTPiA9XG4gIFMgZXh0ZW5kcyByZWFkb25seSAoaW5mZXIgRSlbXSA/XG4gICAgdHJ1ZSBleHRlbmRzIElzVW5pb248RT4gP1xuICAgICAgcmVhZG9ubHkgeyAnVXNlIGEgVW5pb24gc2NoZW1hIGZvciBzZXZlcmFsIEVudGl0eSB0eXBlcyc6IG5ldmVyIH1bXVxuICAgIDogcmVhZG9ubHkgU2V0Um93PERlbm9ybWFsaXplPEU+PltdXG4gIDogU2V0VmFsdWU8Uz47XG5cbi8qKiBSYXcgaW5wdXQgYHNldCgpYCBub3JtYWxpemVzIGZvciBhIFF1ZXJ5YWJsZSAqL1xuZXhwb3J0IHR5cGUgU2V0VmFsdWU8Uz4gPVxuICBJbnB1dFNjaGVtYTxJbnB1dFNjaGVtYTxJbnB1dFNjaGVtYTxTPj4+IGV4dGVuZHMgaW5mZXIgTiA/XG4gICAgTiBleHRlbmRzIEVudGl0eUludGVyZmFjZSA/XG4gICAgICBTZXRSb3c8RGVub3JtYWxpemU8Tj4+XG4gICAgOiBTZXRJbnB1dDxEZW5vcm1hbGl6ZTxOPj5cbiAgOiBuZXZlcjtcblxuLyoqIFF1ZXJ5IG5vcm1hbGl6ZXMgd2l0aCBpdHMgaW5uZXIgc2NoZW1hOyBpdHMgcHJvY2VzcygpIG91dHB1dCBpcyBub3QgaW5wdXRcbiAqXG4gKiBBcHBsaWVkIHRocmVlIHRpbWVzIGluIFNldFZhbHVlIHRvIHVud3JhcCBuZXN0ZWQgUXVlcmllcyAoVFMgNC4wIGhhcyBubyByZWN1cnNpdmUgYWxpYXNlcylcbiAqL1xudHlwZSBJbnB1dFNjaGVtYTxTPiA9XG4gIFMgZXh0ZW5kcyAoXG4gICAge1xuICAgICAgcmVhZG9ubHkgc2NoZW1hOiBpbmZlciBTY2g7XG4gICAgICBwcm9jZXNzKC4uLmFyZ3M6IGFueSk6IGFueTtcbiAgICAgIC8vIGV4Y2x1ZGVzIEVudGl0eSwgd2hvc2Ugc3RhdGljIHNjaGVtYSBhbmQgcHJvY2VzcygpIG1hdGNoIHRoZSBtZW1iZXJzIGFib3ZlXG4gICAgICBwaz86IG5ldmVyO1xuICAgIH1cbiAgKSA/XG4gICAgU2NoXG4gIDogUztcblxuLyoqIFJhdyBpbnB1dCBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUsIGxpa2UgYSBDb2xsZWN0aW9uJ3MgbGlzdCBvciBhIFVuaW9uJ3Mgcm93ICovXG50eXBlIFNldElucHV0PFQ+ID1cbiAgMCBleHRlbmRzIDEgJiBUID8gYW55XG4gIDogLy8gbm90IGRpc3RyaWJ1dGl2ZTogU2V0Um93IHNwbGl0cyBhIFVuaW9uIGludG8gaXRzIG1lbWJlcnMgaXRzZWxmXG4gIFtUXSBleHRlbmRzIFtyZWFkb25seSAoaW5mZXIgVSlbXV0gPyByZWFkb25seSBTZXRSb3c8VT5bXVxuICA6IHN0cmluZyBleHRlbmRzIGtleW9mIFQgPyB7IHJlYWRvbmx5IFtrOiBzdHJpbmddOiBTZXRSb3c8VFtrZXlvZiBUXT4gfVxuICA6IFNldFJvdzxUPjtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultConnectionListener.d.ts","sourceRoot":"","sources":["../../src/manager/DefaultConnectionListener.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,QAAQ;IAOR,iBAAiB,CAAC,OAAO,EAAE,MAAM,IAAI;IAIrC,oBAAoB,CAAC,OAAO,EAAE,MAAM,IAAI;IAIxC,kBAAkB,CAAC,OAAO,EAAE,MAAM,IAAI;IAItC,qBAAqB,CAAC,OAAO,EAAE,MAAM,IAAI;CAG1C;AAED,qBAAa,8BAA+B,YAAW,kBAAkB;IACvE,QAAQ;IAKR,iBAAiB;IAEjB,oBAAoB;IAEpB,kBAAkB;IAElB,qBAAqB;CACtB;AAED,QAAA,IAAI,yBAAyB,EAAE;IAAE,QAAQ,kBAAkB,CAAA;CAAE,CAAC;AAW9D,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"DefaultConnectionListener.d.ts","sourceRoot":"","sources":["../../src/manager/DefaultConnectionListener.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,QAAQ,YAKP;IAED,iBAAiB,CAAC,OAAO,EAAE,MAAM,IAAI,QAEpC;IAED,oBAAoB,CAAC,OAAO,EAAE,MAAM,IAAI,QAEvC;IAED,kBAAkB,CAAC,OAAO,EAAE,MAAM,IAAI,QAErC;IAED,qBAAqB,CAAC,OAAO,EAAE,MAAM,IAAI,QAExC;CACF;AAED,qBAAa,8BAA+B,YAAW,kBAAkB;IACvE,QAAQ,YAGP;IAED,iBAAiB,SAAK;IAEtB,oBAAoB,SAAK;IAEzB,kBAAkB,SAAK;IAEvB,qBAAqB,SAAK;CAC3B;AAED,QAAA,IAAI,yBAAyB,EAAE;IAAE,QAAQ,kBAAkB,CAAA;CAAE,CAAC;eAW/C,yBAAyB"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevtoolsManager.d.ts","sourceRoot":"","sources":["../../src/manager/DevtoolsManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY,EAAE,cAAc,EAAE,CAAC;AA6E/B;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,OAAO;IAC7C,UAAU,EAAE,UAAU,CAAC;IAC/B,UAAkB,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5C,SAAS,CAAC,OAAO,UAAS;IAC1B,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAM;IACxD,UAAkB,UAAU,EAAE,UAAU,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IAC7B,eAAe,SAAO;gBAGpB,MAAM,CAAC,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO;IA6ChD,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG;IAapC,yCAAyC;IACzC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAkCtB,gDAAgD;IAChD,OAAO;CASR"}
1
+ {"version":3,"file":"DevtoolsManager.d.ts","sourceRoot":"","sources":["../../src/manager/DevtoolsManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY,EAAE,cAAc,EAAE,CAAC;AAgF/B;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,OAAO;IAC7C,UAAU,EAAE,UAAU,CAAC;IAC/B,UAAkB,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5C,SAAS,CAAC,OAAO,UAAS;IAC1B,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAM;IACxD,UAAkB,UAAU,EAAE,UAAU,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IAC7B,eAAe,SAAO;IAEtB,YACE,MAAM,CAAC,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,EAa/C;IAgCD,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAWnC;IAED,yCAAyC;IACzC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,QAgCrB;IAED,gDAAgD;IAChD,OAAO,SAQN;CACF"}