@sbb-esta/lyne-elements-experimental 2.11.2 → 2.11.3

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 (77) hide show
  1. package/custom-elements.json +852 -867
  2. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -1
  3. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +1 -1
  4. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
  5. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +3 -3
  6. package/development/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-coach → seat-reservation-navigation-coach}/seat-reservation-navigation-coach.component.d.ts +1 -1
  7. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -0
  8. package/development/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-coach → seat-reservation-navigation-coach}/seat-reservation-navigation-coach.component.js +2 -2
  9. package/development/seat-reservation/seat-reservation-navigation-coach.d.ts.map +1 -0
  10. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.d.ts.map +1 -0
  11. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +123 -0
  12. package/development/seat-reservation/seat-reservation-navigation-services.d.ts.map +1 -0
  13. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +1 -0
  14. package/development/seat-reservation/{seat-reservation/seat-reservation-scoped → seat-reservation-scoped}/seat-reservation-scoped.component.js +1 -1
  15. package/{seat-reservation → development}/seat-reservation/seat-reservation-scoped.d.ts.map +1 -1
  16. package/development/seat-reservation/seat-reservation.d.ts +0 -1
  17. package/development/seat-reservation/seat-reservation.d.ts.map +1 -1
  18. package/development/seat-reservation/seat-reservation.js +1 -3
  19. package/development/seat-reservation.d.ts +3 -1
  20. package/development/seat-reservation.d.ts.map +1 -1
  21. package/development/seat-reservation.js +3 -3
  22. package/index.d.ts +3 -3
  23. package/index.js +3 -3
  24. package/package.json +14 -19
  25. package/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -1
  26. package/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
  27. package/seat-reservation/seat-reservation/seat-reservation.component.js +2 -2
  28. package/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-coach → seat-reservation-navigation-coach}/seat-reservation-navigation-coach.component.d.ts +1 -1
  29. package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -0
  30. package/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-coach → seat-reservation-navigation-coach}/seat-reservation-navigation-coach.component.js +1 -1
  31. package/seat-reservation/seat-reservation-navigation-coach.d.ts.map +1 -0
  32. package/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.d.ts.map +1 -0
  33. package/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-services → seat-reservation-navigation-services}/seat-reservation-navigation-services.component.js +2 -2
  34. package/seat-reservation/seat-reservation-navigation-services.d.ts.map +1 -0
  35. package/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +1 -0
  36. package/seat-reservation/seat-reservation-scoped.d.ts.map +1 -0
  37. package/seat-reservation/seat-reservation.d.ts +0 -1
  38. package/seat-reservation/seat-reservation.d.ts.map +1 -1
  39. package/seat-reservation/seat-reservation.js +0 -2
  40. package/seat-reservation.d.ts +3 -1
  41. package/seat-reservation.d.ts.map +1 -1
  42. package/seat-reservation.js +12 -12
  43. package/development/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +0 -1
  44. package/development/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts.map +0 -1
  45. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +0 -1
  46. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach.d.ts.map +0 -1
  47. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.d.ts.map +0 -1
  48. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +0 -122
  49. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services.d.ts.map +0 -1
  50. package/development/seat-reservation/seat-reservation-navigation.d.ts +0 -6
  51. package/development/seat-reservation/seat-reservation-navigation.d.ts.map +0 -1
  52. package/development/seat-reservation/seat-reservation-navigation.js +0 -7
  53. package/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +0 -1
  54. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +0 -1
  55. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach.d.ts.map +0 -1
  56. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.d.ts.map +0 -1
  57. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services.d.ts.map +0 -1
  58. package/seat-reservation/seat-reservation-navigation.d.ts +0 -6
  59. package/seat-reservation/seat-reservation-navigation.d.ts.map +0 -1
  60. package/seat-reservation/seat-reservation-navigation.js +0 -6
  61. /package/development/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-coach.d.ts → seat-reservation-navigation-coach.d.ts} +0 -0
  62. /package/development/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-coach.js → seat-reservation-navigation-coach.js} +0 -0
  63. /package/development/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-services → seat-reservation-navigation-services}/seat-reservation-navigation-services.component.d.ts +0 -0
  64. /package/development/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-services.d.ts → seat-reservation-navigation-services.d.ts} +0 -0
  65. /package/development/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-services.js → seat-reservation-navigation-services.js} +0 -0
  66. /package/development/seat-reservation/{seat-reservation/seat-reservation-scoped → seat-reservation-scoped}/seat-reservation-scoped.component.d.ts +0 -0
  67. /package/development/seat-reservation/{seat-reservation/seat-reservation-scoped.d.ts → seat-reservation-scoped.d.ts} +0 -0
  68. /package/development/seat-reservation/{seat-reservation/seat-reservation-scoped.js → seat-reservation-scoped.js} +0 -0
  69. /package/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-coach.d.ts → seat-reservation-navigation-coach.d.ts} +0 -0
  70. /package/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-coach.js → seat-reservation-navigation-coach.js} +0 -0
  71. /package/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-services → seat-reservation-navigation-services}/seat-reservation-navigation-services.component.d.ts +0 -0
  72. /package/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-services.d.ts → seat-reservation-navigation-services.d.ts} +0 -0
  73. /package/seat-reservation/{seat-reservation-navigation/seat-reservation-navigation-services.js → seat-reservation-navigation-services.js} +0 -0
  74. /package/seat-reservation/{seat-reservation/seat-reservation-scoped → seat-reservation-scoped}/seat-reservation-scoped.component.d.ts +0 -0
  75. /package/seat-reservation/{seat-reservation/seat-reservation-scoped → seat-reservation-scoped}/seat-reservation-scoped.component.js +0 -0
  76. /package/seat-reservation/{seat-reservation/seat-reservation-scoped.d.ts → seat-reservation-scoped.d.ts} +0 -0
  77. /package/seat-reservation/{seat-reservation/seat-reservation-scoped.js → seat-reservation-scoped.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"seat-reservation-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/seat-reservation/seat-reservation/seat-reservation-base-element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seat-reservation-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/seat-reservation/seat-reservation/seat-reservation-base-element.ts"],"names":[],"mappings":"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"}
@@ -692,4 +692,4 @@ let SeatReservationBaseElement = (() => {
692
692
  export {
693
693
  SeatReservationBaseElement
694
694
  };
695
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1iYXNlLWVsZW1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyb3dLZXlPclBhZ2VLZXlzUHJlc3NlZCB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBMaXRFbGVtZW50LCB0eXBlIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgbWFwQ29hY2hJbmZvc1RvQ29hY2hTZWxlY3Rpb24sXG4gIG1hcFBsYWNlQW5kQ29hY2hUb1NlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uLFxuICBtYXBQbGFjZUluZm9zVG9QbGFjZVNlbGVjdGlvbixcbn0gZnJvbSAnLi4vY29tbW9uL21hcHBlci5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvYWNoSXRlbSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgRWxlbWVudFBvc2l0aW9uLFxuICBQbGFjZSxcbiAgUGxhY2VTZWxlY3Rpb24sXG4gIFNlYXRSZXNlcnZhdGlvbixcbiAgU2VhdFJlc2VydmF0aW9uQ29hY2hTZWxlY3Rpb24sXG4gIFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uLFxufSBmcm9tICcuLi9jb21tb24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTZWF0UmVzZXJ2YXRpb25QbGFjZUNvbnRyb2xFbGVtZW50IH0gZnJvbSAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5jb21wb25lbnQuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYlNlYXRSZXNlcnZhdGlvblNjb3BlZEVsZW1lbnQgfSBmcm9tICcuL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLmNvbXBvbmVudC5qcyc7XG5cbmVudW0gU2Nyb2xsRGlyZWN0aW9uIHtcbiAgcmlnaHQgPSAncmlnaHQnLFxuICBsZWZ0ID0gJ2xlZnQnLFxufVxuXG5pbnRlcmZhY2UgQ29hY2hTY3JvbGxUcmlnZ2VyUG9pbnQge1xuICBzdGFydDogbnVtYmVyO1xuICBlbmQ6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgU2VhdFJlc2VydmF0aW9uU2VsZWN0ZWRQbGFjZXNFdmVudERldGFpbHMgPSBTZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbltdO1xuXG5leHBvcnQgY2xhc3MgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgc2VsZWN0ZWRQbGFjZXM6ICdzZWxlY3RlZFBsYWNlcycsXG4gICAgc2VsZWN0ZWRDb2FjaDogJ3NlbGVjdGVkQ29hY2gnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBUaGUgc2VhdCByZXNlcnZhdGlvbiBvYmplY3Qgd2hpY2ggY29udGFpbnMgYWxsIGNvYWNoZXMgYW5kIHBsYWNlcyAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZWF0LXJlc2VydmF0aW9uJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzZWF0UmVzZXJ2YXRpb246IFNlYXRSZXNlcnZhdGlvbiA9IG51bGwhO1xuXG4gIC8qKiBUaGUgc2VhdCByZXN2ZXJ2YXRpb24gbmF2aWdhdGlvbiBjYW4gYmUgdG9nZ2xlZCBieSB0aGlzIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoYXMtbmF2aWdhdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhhc05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBUaGUgc2VhdCByZXNlcnZhdGlvbiBhcmVhIGlzIGFsaWduZWQgdmVydGljYWxseSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWxpZ24tdmVydGljYWwnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhbGlnblZlcnRpY2FsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFRoZSBzZWF0IHJlc2VydmF0aW9uIGFyZWEncyBiYXNlIGdyaWQgc2l6ZSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFzZS1ncmlkLXNpemUnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGJhc2VHcmlkU2l6ZTogbnVtYmVyID0gMTY7XG5cbiAgLyoqIFRoZSBzZWF0IHJlc2VydmF0aW9uIGFyZWEncyB3aWR0aCAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaGVpZ2h0JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoZWlnaHQ6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBNYXhpbWFsIG51bWJlciBvZiBwb3NzaWJsZSBjbGlja2FibGUgc2VhdHMgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ21heC1yZXNlcnZhdGlvbnMnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIG1heFJlc2VydmF0aW9uczogbnVtYmVyID0gbnVsbCE7XG5cbiAgLyoqIEFueSBjbGljayBmdW5jdGlvbmFsaXR5IGlzIHByZXZlbnRlZCAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJldmVudC1wbGFjZS1jbGljaycsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXZlbnRQbGFjZUNsaWNrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIHNlbGVjdGVkQ29hY2hJbmRleDogbnVtYmVyID0gLTE7XG4gIEBzdGF0ZSgpIHByb3RlY3RlZCBhY2Nlc3NvciBmb2N1c2VkQ29hY2hJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgLyoqIEVtaXRzIHdoZW4gYSBwbGFjZSB3YXMgc2VsZWN0ZWQgYnkgdXNlci4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdGVkUGxhY2VzOiBFdmVudEVtaXR0ZXI8U2VhdFJlc2VydmF0aW9uU2VsZWN0ZWRQbGFjZXNFdmVudERldGFpbHM+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50LmV2ZW50cy5zZWxlY3RlZFBsYWNlcyk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gYSBjb2FjaCB3YXMgc2VsZWN0ZWQgYnkgdXNlci4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ29hY2g6IEV2ZW50RW1pdHRlcjxTZWF0UmVzZXJ2YXRpb25Db2FjaFNlbGVjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQuZXZlbnRzLnNlbGVjdGVkQ29hY2gsXG4gICk7XG5cbiAgcHJvdGVjdGVkIGNvYWNoQm9yZGVyUGFkZGluZyA9IDY7XG4gIHByb3RlY3RlZCBjb2FjaEJvcmRlck9mZnNldCA9IHRoaXMuY29hY2hCb3JkZXJQYWRkaW5nIC8gdGhpcy5iYXNlR3JpZFNpemU7XG4gIHByb3RlY3RlZCBjdXJyU2Nyb2xsRGlyZWN0aW9uOiBTY3JvbGxEaXJlY3Rpb24gPSBTY3JvbGxEaXJlY3Rpb24ucmlnaHQ7XG4gIHByb3RlY3RlZCBtYXhDYWxjQ29hY2hzV2lkdGg6IG51bWJlciA9IDA7XG4gIHByb3RlY3RlZCBzY3JvbGxDb2FjaHNBcmVhV2lkdGg6IG51bWJlciA9IDA7XG4gIHByb3RlY3RlZCB0cmlnZ2VyQ29hY2hQb3NpdGlvbnNDb2xsZWN0aW9uOiBDb2FjaFNjcm9sbFRyaWdnZXJQb2ludFtdID0gW107XG4gIHByb3RlY3RlZCBmaXJzdFRhYkVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gbnVsbCE7XG4gIHByb3RlY3RlZCBsYXN0VGFiRWxlbWVudDogSFRNTEVsZW1lbnQgPSBudWxsITtcbiAgcHJvdGVjdGVkIGNvYWNoU2Nyb2xsQXJlYTogSFRNTEVsZW1lbnQgPSBudWxsITtcbiAgcHJvdGVjdGVkIGN1cnJTZWxlY3RlZFBsYWNlOiBQbGFjZSB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgY3VyclNlbGVjdGVkUGxhY2VFbGVtZW50SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgY3VyclNlbGVjdGVkQ29hY2hJbmRleDogbnVtYmVyID0gLTE7XG4gIHByb3RlY3RlZCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzOiBTZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbltdID0gW107XG4gIHByb3RlY3RlZCBzZWF0UmVzZXJ2YXRpb25XaXRob3V0TmF2aWdhdGlvbkhhc0ZvY3VzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc0NvYWNoR3JpZEZvY3VzYWJsZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgaXNBdXRvU2Nyb2xsaW5nID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc0tleWJvYXJkTmF2aWdhdGlvbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQga2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzID0ge1xuICAgIEFycm93TGVmdDogJ0Fycm93TGVmdCcsXG4gICAgQXJyb3dSaWdodDogJ0Fycm93UmlnaHQnLFxuICAgIEFycm93VXA6ICdBcnJvd1VwJyxcbiAgICBBcnJvd0Rvd246ICdBcnJvd0Rvd24nLFxuICAgIFRhYjogJ1RhYicsXG4gICAgRW50ZXI6ICdFbnRlcicsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzZWF0UmVzZXJ2YXRpb24nKSkge1xuICAgICAgdGhpcy5faW5pdFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnYmFzZUdyaWRTaXplJykpIHtcbiAgICAgIHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgPSB0aGlzLmNvYWNoQm9yZGVyUGFkZGluZyAvIHRoaXMuYmFzZUdyaWRTaXplO1xuICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JpZC1zaXplJywgYCR7dGhpcy5iYXNlR3JpZFNpemV9cHhgKTtcblxuICAgICAgaWYgKHRoaXMuYWxpZ25WZXJ0aWNhbCkge1xuICAgICAgICB0aGlzLl9zZXRWZXJ0aWNhbEFsaWdubWVudE9mZnNldCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBoZWlnaHQgaXMgdXNlZCwgdGhlIGJhc2VHcmlkU2l6ZSBtdXN0IGJlIHJlY2FsY3VsYXRlZFxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2hlaWdodCcpICYmICEhdGhpcy5oZWlnaHQpIHtcbiAgICAgIGlmICh0aGlzLnNlYXRSZXNlcnZhdGlvbi5jb2FjaEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmJhc2VHcmlkU2l6ZSA9IHRoaXMuaGVpZ2h0IC8gdGhpcy5zZWF0UmVzZXJ2YXRpb24uY29hY2hJdGVtc1swXS5kaW1lbnNpb24uaDtcbiAgICAgICAgdGhpcy5jb2FjaEJvcmRlck9mZnNldCA9IHRoaXMuY29hY2hCb3JkZXJQYWRkaW5nIC8gdGhpcy5iYXNlR3JpZFNpemU7XG4gICAgICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyaWQtc2l6ZScsIGAke3RoaXMuYmFzZUdyaWRTaXplfXB4YCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYWxpZ25WZXJ0aWNhbCkge1xuICAgICAgICAgIHRoaXMuX3NldFZlcnRpY2FsQWxpZ25tZW50T2Zmc2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdhbGlnblZlcnRpY2FsJykgJiYgdGhpcy5hbGlnblZlcnRpY2FsKSB7XG4gICAgICB0aGlzLl9zZXRWZXJ0aWNhbEFsaWdubWVudE9mZnNldCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qIEluaXQgc2Nyb2xsIGV2ZW50IGhhbmRsaW5nIGZvciBjb2FjaCBuYXZpZ2F0aW9uICovXG4gIHByb3RlY3RlZCBpbml0TmF2aWdhdGlvblNlbGVjdGlvbkJ5U2Nyb2xsRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5maXJzdFRhYkVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKCdmaXJzdC10YWItZWxlbWVudCcpIGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMubGFzdFRhYkVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKCdsYXN0LXRhYi1lbGVtZW50JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5jb2FjaFNjcm9sbEFyZWEgPSB0aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKCdzYmItc3JfX3BhcmVudC1hcmVhJykgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5jb2FjaFNjcm9sbEFyZWEpIHtcbiAgICAgIGxldCBjdXJyQ2FsY1RyaWdnZXJQb3MgPSAwO1xuICAgICAgdGhpcy5zY3JvbGxDb2FjaHNBcmVhV2lkdGggPSB0aGlzLmNvYWNoU2Nyb2xsQXJlYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgICAgLy8gUHJlY2FsY3VsYXRlIHRyaWdnZXIgc2Nyb2xsIHBvc2l0aW9uIGFycmF5IGRlcGVuZHMgZnJvbSBjb2FjaCB3aWR0aFxuICAgICAgdGhpcy50cmlnZ2VyQ29hY2hQb3NpdGlvbnNDb2xsZWN0aW9uID0gdGhpcy5zZWF0UmVzZXJ2YXRpb24uY29hY2hJdGVtcy5tYXAoKGNvYWNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0UG9zWCA9IGN1cnJDYWxjVHJpZ2dlclBvcztcbiAgICAgICAgY29uc3QgY29hY2hXaWR0aCA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihjb2FjaC5kaW1lbnNpb24pLnc7XG4gICAgICAgIGN1cnJDYWxjVHJpZ2dlclBvcyArPSBjb2FjaFdpZHRoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0YXJ0OiBzdGFydFBvc1gsXG4gICAgICAgICAgZW5kOiBjdXJyQ2FsY1RyaWdnZXJQb3MsXG4gICAgICAgICAgd2lkdGg6IGNvYWNoV2lkdGgsXG4gICAgICAgIH0gYXMgQ29hY2hTY3JvbGxUcmlnZ2VyUG9pbnQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gU2V0IG1heGltdW0gY2FsY3VsYXRlZCBjb2FjaCB3aWR0aFxuICAgICAgdGhpcy5tYXhDYWxjQ29hY2hzV2lkdGggPSBjdXJyQ2FsY1RyaWdnZXJQb3M7XG5cbiAgICAgIC8vIEF0IHRoZSBlbmQgb2YgYSBzY3JvbGwgRXZlbnRzIHRvIGEgY29hY2gsIHRoZSByZWFjaGVkIHdhZ29uIGlzIG1hcmtlZCBhcyBzZWxlY3RlZFxuICAgICAgdGhpcy5jb2FjaFNjcm9sbEFyZWEuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsZW5kJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBmaW5kU2Nyb2xsQ29hY2hJbmRleCA9IHRoaXMuaXNBdXRvU2Nyb2xsaW5nXG4gICAgICAgICAgPyB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXhcbiAgICAgICAgICA6IHRoaXMuX2dldENvYWNoSW5kZXhCeVNjcm9sbFRyaWdnZXJQb3NpdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5faXNTY3JvbGxhYmxlVG9TZWxlY3RlZENvYWNoKCkpIHtcbiAgICAgICAgICB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggPSBmaW5kU2Nyb2xsQ29hY2hJbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggPVxuICAgICAgICAgICAgZmluZFNjcm9sbENvYWNoSW5kZXggPCB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXhcbiAgICAgICAgICAgICAgPyB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXhcbiAgICAgICAgICAgICAgOiBmaW5kU2Nyb2xsQ29hY2hJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkQ29hY2goKTtcblxuICAgICAgICBpZiAoIXRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgICAgIHRoaXMucHJlc2VsZWN0UGxhY2VJbkNvYWNoKCk7XG4gICAgICAgICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIER1cmluZyBpbml0aWFsaXphdGlvbiB3ZSBjaGVjayB2ZXJ0aWNhbCBhbGlnbm1lbnQgbW9kZS4gSW4gVmVydGljYWwgbW9kZSB3ZSBoYXZlIHRvIHNldCB0aGUgdmVydGljYWwgb2Zmc2V0IG1hbnVhbCBmb3IgdGhlIHNlYXQgcmVzZXJ2YXRpb24gYXJlYSxcbiAgICAgIC8vIGJlY2F1c2Ugd2Ugcm90YXRlIHRoZSBlbnRpcmUgY29tcG9uZW50IGJ5IDkwIGRlZ3JlZXMgYW5kIHRyYW5zZm9ybSB0aGUgb3JpZ2luIHBvaW50IHRvIHRvcCBsZWZ0LlxuICAgICAgaWYgKHRoaXMuYWxpZ25WZXJ0aWNhbCkge1xuICAgICAgICB0aGlzLl9zZXRWZXJ0aWNhbEFsaWdubWVudE9mZnNldCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBubyBuYXZpZ2F0aW9uIGV4aXN0cyAocHJvcGVydHkgc2V0dGluZyAtPiBoYXNOYXZpZ2F0aW9uKSBhbmQgYSB0YWJsZSBjb2FjaCBnZXRzIHRoZSBmb2N1cyxcbiAgICogdGhlIGZpcnN0IHBsYWNlIGluIHRoZSBjb2FjaCBtdXN0IGJlIGF1dG9tYXRpY2FsbHkgcHJlc2VsZWN0ZWQgdG8gY29udHJvbCB0aGUgcGxhY2UgbmF2aWdhdGlvbiB2aWEga2V5Ym9hcmRcbiAgICpcbiAgICogQHBhcmFtIGZvY3VzQ29hY2hJbmRleFxuICAgKi9cbiAgcHJvdGVjdGVkIG9uRm9jdXNUYWJsZUNvYWNoQW5kUHJlc2VsZWN0UGxhY2UoZm9jdXNDb2FjaEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhdFJlc2VydmF0aW9uV2l0aG91dE5hdmlnYXRpb25IYXNGb2N1cyAmJiAhdGhpcy5oYXNOYXZpZ2F0aW9uKSB7XG4gICAgICB0aGlzLnNlYXRSZXNlcnZhdGlvbldpdGhvdXROYXZpZ2F0aW9uSGFzRm9jdXMgPSB0cnVlO1xuICAgICAgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ID1cbiAgICAgICAgZm9jdXNDb2FjaEluZGV4ID09PSAwXG4gICAgICAgICAgPyB0aGlzLmdldE5leHRBdmFpbGFibGVDb2FjaEluZGV4KC0xKVxuICAgICAgICAgIDogdGhpcy5nZXRQcmV2QXZhaWxhYmxlQ29hY2hJbmRleChmb2N1c0NvYWNoSW5kZXgpO1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGlzYXRpb24gb2YgS2V5Ym9hcmQgZXZlbnQgaGFuZGxpbmcgdG8gbmF2aWdhdGlvbiBiZXR3ZWVuIGVhY2ggcGxhY2VzIGluc2lkZSBhIHNlbGVjdGVkIGNvYWNoIGJ5IHVzaW5nIFthcnJvd10ga2V5cy5cbiAgICogV2l0aCB0aGUgW1RBQl0ga2V5IHRoZSB1c2VyIG5hdmlnYXRpb24gZ29lcyB0byB0aGUgbmV4dCBjb2FjaCBuYXZpZ2F0aW9uIGVsZW1lbnQgYW5kIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGxhY2UgaXMgYXV0b21hdGljYWxseSByZXNldC5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgcHJlc3NlZEtleSA9IGV2ZW50LmtleTtcblxuICAgIC8vIElmIGFueSBwbGFjZSBpcyBzZWxlY3RlZCBhbmQgVEFCIEtleSBjb21iaW5hdGlvbiBpc3QgcHJlc3NlZCxcbiAgICAvLyB0aGVuIHdlIGhhbmRsZSB0aGUgbmV4dCBvciBwcmV2aW91cyBjb2FjaCBzZWxlY3Rpb25cbiAgICBpZiAodGhpcy5jdXJyU2VsZWN0ZWRQbGFjZSkge1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IDkpIHtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGVDb2FjaE5hdmlnYXRpb25CeUtleWJvYXJkKCdQUkVWX1RBQicpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5UYWIpIHtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGVDb2FjaE5hdmlnYXRpb25CeUtleWJvYXJkKCdORVhUX1RBQicpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgYSBjaG9hY2ggaXMgc2VsZWN0ZWQgYW5kIHRoZSBhcnJvdyBrZXkgaXMgcHJlc3NlZFxuICAgIGlmICh0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggIT09IC0xICYmIGlzQXJyb3dLZXlPclBhZ2VLZXlzUHJlc3NlZChldmVudCkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHN3aXRjaCAocHJlc3NlZEtleSkge1xuICAgICAgICBjYXNlIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93TGVmdDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBwcmVzc2VkTGVmdEtleU1hcHBpbmc6IHN0cmluZyA9IHRoaXMuYWxpZ25WZXJ0aWNhbFxuICAgICAgICAgICAgICA/IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93RG93blxuICAgICAgICAgICAgICA6IHByZXNzZWRLZXk7XG4gICAgICAgICAgICB0aGlzLl9uYXZpZ2F0ZVRvUGxhY2VCeUtleWJvYXJkKHByZXNzZWRMZWZ0S2V5TWFwcGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93UmlnaHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgcHJlc3NlZFJpZ2h0S2V5TWFwcGluZzogc3RyaW5nID0gdGhpcy5hbGlnblZlcnRpY2FsXG4gICAgICAgICAgICAgID8gdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dVcFxuICAgICAgICAgICAgICA6IHByZXNzZWRLZXk7XG4gICAgICAgICAgICB0aGlzLl9uYXZpZ2F0ZVRvUGxhY2VCeUtleWJvYXJkKHByZXNzZWRSaWdodEtleU1hcHBpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd1VwOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXNzZWRVcEtleU1hcHBpbmc6IHN0cmluZyA9IHRoaXMuYWxpZ25WZXJ0aWNhbFxuICAgICAgICAgICAgICA/IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93TGVmdFxuICAgICAgICAgICAgICA6IHByZXNzZWRLZXk7XG4gICAgICAgICAgICB0aGlzLl9uYXZpZ2F0ZVRvUGxhY2VCeUtleWJvYXJkKHByZXNzZWRVcEtleU1hcHBpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd0Rvd246XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgcHJlc3NlZERvd25LZXlNYXBwaW5nOiBzdHJpbmcgPSB0aGlzLmFsaWduVmVydGljYWxcbiAgICAgICAgICAgICAgPyB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd1JpZ2h0XG4gICAgICAgICAgICAgIDogcHJlc3NlZEtleTtcbiAgICAgICAgICAgIHRoaXMuX25hdmlnYXRlVG9QbGFjZUJ5S2V5Ym9hcmQocHJlc3NlZERvd25LZXlNYXBwaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBwbGFjZSBpbnNpZGUgdGhlIGNvYWNoIGlmIG5hdmlnYXRlZCB2aWEga2V5Ym9hcmQsXG4gICAqIG90aGVyd2lzZSB0aGUgY29hY2ggZ3JpZCBpcyBzZWxlY3RlZCAobmVjZXNzYXJ5IGZvciBTY3JlZW5SZWFkZXIpXG4gICAqL1xuICBwcm90ZWN0ZWQgcHJlc2VsZWN0UGxhY2VJbkNvYWNoKCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3Nlc3RQbGFjZSA9IHRoaXMuX2dldENsb3Nlc3RQbGFjZUJ5S2V5RGlyZWN0aW9uKCk7XG4gICAgLy9JZiBjbG9zZXN0UGxhY2UgZXhpc3QsIHdlIGhhdmUgdG8gdW5mb2N1cyBwcmV2aW91c2UgZm9jdXNlZCBwbGFjZVxuICAgIGlmIChjbG9zZXN0UGxhY2UpIHtcbiAgICAgIHRoaXMudW5mb2N1c1BsYWNlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIC8vIE9ubHkgd2hlbiBrZXlib2FyZCBuYXZpZ2F0aW9uIGlzIHVzZWQgYW5kIGNvYWNoZXMgYXJlIHNjcm9sbGVkIGJ5IGF1dG8gc2Nyb2xsaW5nLFxuICAgIC8vIHRoZW4gd2UgY2FuIHNldCB0aGUgZm9jdXMgb24gdGhlIGZpcnN0IHBsYWNlIGluIHRoZSBjb2FjaC5cbiAgICBpZiAodGhpcy5pc0tleWJvYXJkTmF2aWdhdGlvbiAmJiB0aGlzLmlzQXV0b1Njcm9sbGluZykge1xuICAgICAgaWYgKGNsb3Nlc3RQbGFjZSkge1xuICAgICAgICB0aGlzLmZvY3VzUGxhY2VFbGVtZW50KGNsb3Nlc3RQbGFjZSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBwcmVzZWxlY3Rpb24gZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIGJ5IG5vcm1hbCBjbGlja2luZyBvciB2aWEgc2NyZWVucmVhZGVyIHZpYSB0YWIsXG4gICAgLy8gd2Ugb25seSBmb2N1cyB0aGUgdGFibGUgd2l0aG91dCBkaXJlY3RseSBmb2N1c2luZyB0aGUgcGxhY2UuXG4gICAgZWxzZSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgY3VyclNlbGVjdGVkUGxhY2UgaGVyZSBmb3IgZnVydGhlciBjb3JyZWN0IGZ1bmN0aW9uaW5nIG5hdmlnYXRpb24gdmlhIHRhYi5cbiAgICAgIHRoaXMuY3VyclNlbGVjdGVkUGxhY2UgPSBjbG9zZXN0UGxhY2U7XG4gICAgICB0aGlzLl9zZXRGb2N1c1RvU2VsZWN0ZWRDb2FjaEdyaWQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKHNlbGVjdGVkTmF2Q29hY2hJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLmlzQXV0b1Njcm9sbGluZyA9IHRydWU7XG4gICAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCA9IHNlbGVjdGVkTmF2Q29hY2hJbmRleDtcbiAgICAgIHRoaXMuX3NldFNjcm9sbERpcmVjdGlvbkJ5Q29hY2hJbmRleCgpO1xuXG4gICAgICBjb25zdCBzY3JvbGxUb0NvYWNoUG9zWCA9IHRoaXMuX2dldENvYWNoU2Nyb2xsUG9zaXRpb25YKCk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkQ29hY2hJbmRleFNjcm9sbGFibGUgPVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29hY2hJbmRleCAhPT0gLTEgfHwgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ID4gMDtcblxuICAgICAgLy8gQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIGFsbG93cyBzY3JvbGxpbmcgdG8gdGhlIG5leHQgd2Fnb24gb3Igbm90XG4gICAgICBpZiAoaXNTZWxlY3RlZENvYWNoSW5kZXhTY3JvbGxhYmxlICYmIHRoaXMuX2lzU2Nyb2xsYWJsZVRvU2VsZWN0ZWRDb2FjaCgpKSB7XG4gICAgICAgIHRoaXMuY29hY2hTY3JvbGxBcmVhLnNjcm9sbFRvKHtcbiAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgbGVmdDogc2Nyb2xsVG9Db2FjaFBvc1gsXG4gICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkQ29hY2goKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbmV3IFNjcm9sbERpcmVjdGlvbiBieSB0aGUgbmV3IGdpdmVuIHRhcmdldCBjb2FjaCBpbmRleC5cbiAgICovXG4gIHByaXZhdGUgX3NldFNjcm9sbERpcmVjdGlvbkJ5Q29hY2hJbmRleCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJTY3JvbGxEaXJlY3Rpb24gPVxuICAgICAgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ID4gdGhpcy5zZWxlY3RlZENvYWNoSW5kZXhcbiAgICAgICAgPyBTY3JvbGxEaXJlY3Rpb24ucmlnaHRcbiAgICAgICAgOiBTY3JvbGxEaXJlY3Rpb24ubGVmdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzY3JvbGwgc3RhcnQgb3IgZW5kIHBvc2l0aW9uIFggZnJvbSB0aGUgc2VsZWN0ZWQgY29hY2guXG4gICAqIEluIGNhc2UgdGhlIHVzZXIgaXMgY3VycmV0bmx5IG5hdmlnYXRlIHRocm91Z2h0IHBsYWNlcyBieSBrZXlib2FyZCBhbmQgZ29lcyB0byBwcmV2aW91cyBjb2FjaCxcbiAgICogdGhlbiB3ZSByZXR1cm4gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgY29hY2ggdG8gZ2V0IGNsb3N0ZXN0IG5leHQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBuZXh0IGZvY3VzIHBsYWNlLlxuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHByaXZhdGUgX2dldENvYWNoU2Nyb2xsUG9zaXRpb25YKCk6IG51bWJlciB7XG4gICAgY29uc3QgY29hY2hUcmlnZ2VyUG9pbnQgPSB0aGlzLnRyaWdnZXJDb2FjaFBvc2l0aW9uc0NvbGxlY3Rpb25bdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4XTtcbiAgICBjb25zdCBpc0ZvY3VzUGxhY2VGcm9tUHJldmlvdXNDb2FjaFBvc2l0aW9uID1cbiAgICAgIHRoaXMuaXNLZXlib2FyZE5hdmlnYXRpb24gJiZcbiAgICAgIHRoaXMuY3VyclNjcm9sbERpcmVjdGlvbiA9PT0gU2Nyb2xsRGlyZWN0aW9uLmxlZnQgJiZcbiAgICAgIGNvYWNoVHJpZ2dlclBvaW50LndpZHRoID4gdGhpcy5zY3JvbGxDb2FjaHNBcmVhV2lkdGg7XG4gICAgcmV0dXJuIGlzRm9jdXNQbGFjZUZyb21QcmV2aW91c0NvYWNoUG9zaXRpb25cbiAgICAgID8gY29hY2hUcmlnZ2VyUG9pbnQuZW5kIC0gdGhpcy5zY3JvbGxDb2FjaHNBcmVhV2lkdGhcbiAgICAgIDogY29hY2hUcmlnZ2VyUG9pbnQuc3RhcnQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZm9jdXMgb24gdGhlIEhUTUwgdGFibGUgKGdyaWQpIGNhcHRpb24gZWxlbWVudCBzbyB0aGF0IHRoZSBoZWFkaW5nIGlzIHJlYWQgb3V0IHdoZW4gdXNpbmcgYSBTY3JlZW5SZWFkZXIuXG4gICAqL1xuICBwcml2YXRlIF9zZXRGb2N1c1RvU2VsZWN0ZWRDb2FjaEdyaWQoKTogdm9pZCB7XG4gICAgLy8gV2hlbiB0aGUgdXNlciBwZXJmb3JtcyBhbiBhY3Rpb24gdGhhdCBhZmZlY3RzIHRoZSBjb2FjaCBuYXZpZ2F0aW9uLCB0aGVuIHRoZSBuYXZpZ2F0ZWQgdGFibGUgaXMgZm9jdXNhYmxlLlxuICAgIGlmICh0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlKSB7XG4gICAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgICBjb25zdCBjb2FjaFRhYmxlQ2FwdGlvbkVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICcjc2JiLXNyLWNvYWNoLWNhcHRpb24tJyArIHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCxcbiAgICAgICkgYXMgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ7XG4gICAgICBpZiAoY29hY2hUYWJsZUNhcHRpb25FbGVtZW50KSB7XG4gICAgICAgIGNvYWNoVGFibGVDYXB0aW9uRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGN1cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gY2FuIGJlIHVzZWQgdG8gc2Nyb2xsIHRvIHRoZSBzZWxlY3RlZCB3YWdvblxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBwcml2YXRlIF9pc1Njcm9sbGFibGVUb1NlbGVjdGVkQ29hY2goKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VyclNjcm9sbFBvc1ggPSB0aGlzLmNvYWNoU2Nyb2xsQXJlYS5zY3JvbGxMZWZ0O1xuICAgIGNvbnN0IGNvYWNoU2Nyb2xsV2luZG93V2lkdGggPSB0aGlzLmNvYWNoU2Nyb2xsQXJlYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICBjb25zdCBtYXhTY3JvbGxXaWR0aEFyZWEgPSB0aGlzLm1heENhbGNDb2FjaHNXaWR0aCAtIGNvYWNoU2Nyb2xsV2luZG93V2lkdGg7XG4gICAgY29uc3QgY3VyckNvYWNoVHJpZ2dlciA9IHRoaXMudHJpZ2dlckNvYWNoUG9zaXRpb25zQ29sbGVjdGlvblt0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXhdO1xuICAgIGNvbnN0IGlzU2Nyb2xsUG9zU2FtZVRvQ3VyckNvYWNoUG9zID1cbiAgICAgIGN1cnJTY3JvbGxQb3NYID09PSB0aGlzLnRyaWdnZXJDb2FjaFBvc2l0aW9uc0NvbGxlY3Rpb25bdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4XS5zdGFydDtcblxuICAgIHJldHVybiAoXG4gICAgICAoY3VyclNjcm9sbFBvc1ggPCBtYXhTY3JvbGxXaWR0aEFyZWEgfHwgY3VyclNjcm9sbFBvc1ggPiBjdXJyQ29hY2hUcmlnZ2VyLnN0YXJ0KSAmJlxuICAgICAgIWlzU2Nyb2xsUG9zU2FtZVRvQ3VyckNvYWNoUG9zXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb2FjaCBpbmRleCB3aGljaCBpcyBjdXJyZW50bHkgdmlzaWJsZSBpbiB0aGUgc2Nyb2xsIGFyZWFcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBwcml2YXRlIF9nZXRDb2FjaEluZGV4QnlTY3JvbGxUcmlnZ2VyUG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICBjb25zdCBzY3JvbGxPZmZzZXRYID0gdGhpcy5jb2FjaFNjcm9sbEFyZWEuc2Nyb2xsTGVmdCArIHRoaXMuc2Nyb2xsQ29hY2hzQXJlYVdpZHRoIC8gMjtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyQ29hY2hQb3NpdGlvbnNDb2xsZWN0aW9uLmZpbmRJbmRleChcbiAgICAgIChjb2FjaFRyaWdnZXIpID0+IHNjcm9sbE9mZnNldFggPj0gY29hY2hUcmlnZ2VyLnN0YXJ0ICYmIHNjcm9sbE9mZnNldFggPD0gY29hY2hUcmlnZ2VyLmVuZCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZmlyc3QgcGxhY2Ugb2YgY3VycmVudCBzZWxlY3RlZCBjb2FjaCBieSB0YWJsZSBjZWxsIGNvb3JkaW5hdGUgMC0wIGlkLlxuICAgKiBAcmV0dXJucyBQbGFjZSBvciBudWxsXG4gICAqL1xuICBwcml2YXRlIF9nZXRGaXJzdFBsYWNlSW5TZWxlY2VkQ29hY2goKTogUGxhY2UgfCBudWxsIHtcbiAgICBsZXQgZmlyc3RQbGFjZTogUGxhY2UgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBjb2FjaCA9IHRoaXMuc2VhdFJlc2VydmF0aW9uPy5jb2FjaEl0ZW1zW3RoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleF07XG4gICAgY29uc3QgZmlyc3RDZWxsSWQgPSAnY2VsbC0nICsgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ICsgJy0wLTAnO1xuICAgIGNvbnN0IHBsYWNlTnVtYmVyID1cbiAgICAgIHRoaXMuc2hhZG93Um9vdFxuICAgICAgICA/LnF1ZXJ5U2VsZWN0b3I8U2JiU2VhdFJlc2VydmF0aW9uU2NvcGVkRWxlbWVudD4oXCJbY2VsbC1pZD0nXCIgKyBmaXJzdENlbGxJZCArIFwiJ11cIilcbiAgICAgICAgPy5xdWVyeVNlbGVjdG9yPFNiYlNlYXRSZXNlcnZhdGlvblBsYWNlQ29udHJvbEVsZW1lbnQ+KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sJylcbiAgICAgICAgPy5nZXRBdHRyaWJ1dGUoJ3RleHQnKSB8fCBudWxsO1xuXG4gICAgaWYgKGNvYWNoICYmIHBsYWNlTnVtYmVyKSB7XG4gICAgICBmaXJzdFBsYWNlID0gY29hY2gucGxhY2VzPy5maW5kKChwbGFjZSkgPT4gcGxhY2UubnVtYmVyID09PSBwbGFjZU51bWJlcikgfHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGZpcnN0UGxhY2U7XG4gIH1cblxuICAvKipcbiAgICogVG8gZ2V0IHRoZSBjb3JyZWN0IGNsb3Nlc3QgcGxhY2Ugb2YgY3VycmVudCBwcmVzc2VkIGtleSBhbmQgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcGxhY2UsXG4gICAqIHdlIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhlIGNvb3JkaW5hdGVzIG9mIGVhY2ggcGxhY2UgdG8gZmluZCB0aGUgY2xvc2VzdCBwbGFjZSBvZiB0aGUgY3VyclNlbGVjdGVkUGxhY2VFbGVtZW50SWQuXG4gICAqIEBwYXJhbSBwcmVzc2VkS2V5XG4gICAqIEByZXR1cm5zIFBsYWNlIG9yIG51bGxcbiAgICovXG4gIHByaXZhdGUgX2dldENsb3Nlc3RQbGFjZUJ5S2V5RGlyZWN0aW9uKHByZXNzZWRLZXk/OiBzdHJpbmcpOiBQbGFjZSB8IG51bGwge1xuICAgIGNvbnN0IGNvYWNoID0gdGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXNbdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4XTtcbiAgICBsZXQgY2xvc2VzdFBsYWNlID0gbnVsbDtcbiAgICBpZiAoY29hY2gucGxhY2VzKSB7XG4gICAgICAvL0lmIG5vIHBsYWNlIHNldCwgdGhlbiB3ZW4gdXNlIGluaXRpYWwgdGhlIGxlZnQtdG9wIHBsYWNlIG9uIHRoZSBjb2FjaFxuICAgICAgaWYgKCF0aGlzLmN1cnJTZWxlY3RlZFBsYWNlRWxlbWVudElkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRGaXJzdFBsYWNlSW5TZWxlY2VkQ29hY2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwbGFjZSBvZiBjb2FjaC5wbGFjZXMpIHtcbiAgICAgICAgICAgIC8vIElmIGtleSBwcmVzc2VkLCB0aGVuIHdlIHRyeSB0byBmaW5kIHRoZSBwbGFjZSBvZiB0aGUgY3VycmVudCBjdXJyU2Nyb2xsRGlyZWN0aW9uXG4gICAgICAgICAgICBpZiAoIXByZXNzZWRLZXkpIHtcbiAgICAgICAgICAgICAgLy9GaW5kIHBsYWNlIGZyb20gdGhlIGxlZnQgc2lkZSBvZiBjb2FjaCBieSB5IGNvb3JkaW5hdGUuIEN1cnJlbnQgY3VyclNjcm9sbERpcmVjdGlvbiBpcyBSSUdIVClcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuY3VyclNjcm9sbERpcmVjdGlvbiA9PT0gU2Nyb2xsRGlyZWN0aW9uLnJpZ2h0ICYmXG4gICAgICAgICAgICAgICAgcGxhY2UucG9zaXRpb24ueSA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZT8ucG9zaXRpb24ueSAmJlxuICAgICAgICAgICAgICAgICghY2xvc2VzdFBsYWNlIHx8IHBsYWNlLnBvc2l0aW9uLnggPCBjbG9zZXN0UGxhY2UucG9zaXRpb24ueClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY2xvc2VzdFBsYWNlID0gcGxhY2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy9GaW5kIHBsYWNlIGZyb20gdGhlIHJpZ2h0IHNpZGUgb2YgY29hY2ggYnkgeSBjb29yZGluYXRlLiBDdXJyZW50IGN1cnJTY3JvbGxEaXJlY3Rpb24gaXMgTEVGVFxuICAgICAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJTY3JvbGxEaXJlY3Rpb24gPT09IFNjcm9sbERpcmVjdGlvbi5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgcGxhY2UucG9zaXRpb24ueSA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZT8ucG9zaXRpb24ueSAmJlxuICAgICAgICAgICAgICAgICghY2xvc2VzdFBsYWNlIHx8IHBsYWNlLnBvc2l0aW9uLnggPiBjbG9zZXN0UGxhY2UucG9zaXRpb24ueClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY2xvc2VzdFBsYWNlID0gcGxhY2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChwbGFjZS5udW1iZXIgIT09IHRoaXMuY3VyclNlbGVjdGVkUGxhY2U/Lm51bWJlcikge1xuICAgICAgICAgICAgICAgIC8vS2V5IFtSaWdodF0gbmF2aWdhdGlvbiwgd2UgY2hlY2sgdGhlIHBsYWNlIGNvb3JkaW5hdGVzIG9mIHRoZSB4LWF4aXMgdG8gZ2V0IHRoZSBzbWFsbGVzdCBsYXJnZXIgeCBwbGFjZSBjb29yZGluYXRlIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGxhY2VcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd1JpZ2h0ICYmXG4gICAgICAgICAgICAgICAgICAocGxhY2UucG9zaXRpb24ueSA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZS5wb3NpdGlvbi55IHx8XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlLnBvc2l0aW9uLnkgPT09IHRoaXMuY3VyclNlbGVjdGVkUGxhY2UucG9zaXRpb24ueSAtIDEpICYmXG4gICAgICAgICAgICAgICAgICBwbGFjZS5wb3NpdGlvbi54ID4gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZS5wb3NpdGlvbi54ICYmXG4gICAgICAgICAgICAgICAgICAoIWNsb3Nlc3RQbGFjZSB8fCBwbGFjZS5wb3NpdGlvbi54IDwgY2xvc2VzdFBsYWNlLnBvc2l0aW9uLngpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjbG9zZXN0UGxhY2UgPSBwbGFjZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9LZXkgW0Rvd25dIG5hdmlnYXRpb24sIHdlIGNoZWNrIHRoZSBwbGFjZSBjb29yZGluYXRlcyBvZiB0aGUgeS1heGlzIHRvIGdldCB0aGUgc21hbGxlc3QgbGFyZ2VyIHkgcGxhY2UgY29vcmRpbmF0ZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHBsYWNlXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICBwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd0Rvd24gJiZcbiAgICAgICAgICAgICAgICAgIChwbGFjZS5wb3NpdGlvbi54ID09PSB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnggfHxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2UucG9zaXRpb24ueCA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZS5wb3NpdGlvbi54ICsgMSkgJiZcbiAgICAgICAgICAgICAgICAgIHBsYWNlLnBvc2l0aW9uLnkgPiB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnkgJiZcbiAgICAgICAgICAgICAgICAgICghY2xvc2VzdFBsYWNlIHx8IHBsYWNlLnBvc2l0aW9uLnkgPCBjbG9zZXN0UGxhY2UucG9zaXRpb24ueSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNsb3Nlc3RQbGFjZSA9IHBsYWNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL0tleSBbTGVmdF0gbmF2aWdhdGlvbiwgd2UgY2hlY2sgdGhlIHBsYWNlIGNvb3JkaW5hdGVzIG9mIHRoZSB4LWF4aXMgdG8gZ2V0IHRoZSBncmVhdGVzdCBzbWFsbGVyIHggcGxhY2UgY29vcmRpbmF0ZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHBsYWNlXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICBwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd0xlZnQgJiZcbiAgICAgICAgICAgICAgICAgIChwbGFjZS5wb3NpdGlvbi55ID09PSB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnkgfHxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2UucG9zaXRpb24ueSA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZS5wb3NpdGlvbi55ICsgMSkgJiZcbiAgICAgICAgICAgICAgICAgIHBsYWNlLnBvc2l0aW9uLnggPCB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnggJiZcbiAgICAgICAgICAgICAgICAgICghY2xvc2VzdFBsYWNlIHx8IHBsYWNlLnBvc2l0aW9uLnggPiBjbG9zZXN0UGxhY2UucG9zaXRpb24ueClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNsb3Nlc3RQbGFjZSA9IHBsYWNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL0tleSBbVXBdIG5hdmlnYXRpb24sIHdlIGNoZWNrIHRoZSBwbGFjZSBjb29yZGluYXRlcyBvZiB0aGUgeS1heGlzIHRvIGdldCB0aGUgZ3JlYXRlc3Qgc21hbGxlciB5IHBsYWNlIGNvb3JkaW5hdGUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwbGFjZVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgcHJlc3NlZEtleSA9PT0gdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dVcCAmJlxuICAgICAgICAgICAgICAgICAgKHBsYWNlLnBvc2l0aW9uLnggPT09IHRoaXMuY3VyclNlbGVjdGVkUGxhY2UucG9zaXRpb24ueCB8fFxuICAgICAgICAgICAgICAgICAgICBwbGFjZS5wb3NpdGlvbi54ID09PSB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnggLSAxKSAmJlxuICAgICAgICAgICAgICAgICAgcGxhY2UucG9zaXRpb24ueSA8IHRoaXMuY3VyclNlbGVjdGVkUGxhY2U/LnBvc2l0aW9uLnkgJiZcbiAgICAgICAgICAgICAgICAgICghY2xvc2VzdFBsYWNlIHx8IHBsYWNlLnBvc2l0aW9uLnkgPiBjbG9zZXN0UGxhY2UucG9zaXRpb24ueSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNsb3Nlc3RQbGFjZSA9IHBsYWNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2xvc2VzdFBsYWNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZvY3VzUGxhY2VFbGVtZW50KHBsYWNlOiBQbGFjZSB8IG51bGwsIGNvYWNoSW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICBpZiAocGxhY2UpIHtcbiAgICAgIHRoaXMuY3VyclNlbGVjdGVkUGxhY2UgPSBwbGFjZTtcbiAgICAgIGlmIChjb2FjaEluZGV4KSB7XG4gICAgICAgIHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCA9IGNvYWNoSW5kZXg7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3NldEN1cnJTZWxlY3RlZFBsYWNlRWxlbWVudElkKHBsYWNlKTtcblxuICAgICAgY29uc3Qgc2VsZWN0ZWRQbGFjZUVsZW1lbnQgPSB0aGlzLl9nZXRQbGFjZUh0bWxFbGVtZW50KCk7XG4gICAgICBpZiAoc2VsZWN0ZWRQbGFjZUVsZW1lbnQpIHtcbiAgICAgICAgc2VsZWN0ZWRQbGFjZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdrZXlmb2N1cycsICdmb2N1cycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1bmZvY3VzUGxhY2VFbGVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2VFbGVtZW50ID0gdGhpcy5fZ2V0UGxhY2VIdG1sRWxlbWVudCgpO1xuICAgIGlmIChzZWxlY3RlZFBsYWNlRWxlbWVudCkge1xuICAgICAgc2VsZWN0ZWRQbGFjZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdrZXlmb2N1cycsICd1bmZvY3VzJyk7XG4gICAgICB0aGlzLl9zZXRDdXJyU2VsZWN0ZWRQbGFjZUVsZW1lbnRJZChudWxsKTtcbiAgICAgIHRoaXMuY3VyclNlbGVjdGVkUGxhY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgIGVsZW1lbnREaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICAgY29hY2hEaW1lbnNpb24/OiBFbGVtZW50RGltZW5zaW9uLFxuICAgIGlzT3JpZ2luSGVpZ2h0PzogYm9vbGVhbixcbiAgICBpc1N0cmV0Y2hIZWlnaHQ/OiBib29sZWFuLFxuICApOiBFbGVtZW50RGltZW5zaW9uIHtcbiAgICBpZiAoY29hY2hEaW1lbnNpb24gJiYgIWlzT3JpZ2luSGVpZ2h0KSB7XG4gICAgICBlbGVtZW50RGltZW5zaW9uLmggKz0gdGhpcy5jb2FjaEJvcmRlck9mZnNldCAqIDI7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyZXRjaEhlaWdodCkge1xuICAgICAgZWxlbWVudERpbWVuc2lvbi5oICs9IHRoaXMuY29hY2hCb3JkZXJPZmZzZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHc6IHRoaXMuYmFzZUdyaWRTaXplICogZWxlbWVudERpbWVuc2lvbi53LFxuICAgICAgaDogdGhpcy5iYXNlR3JpZFNpemUgKiBlbGVtZW50RGltZW5zaW9uLmgsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgZWxlbWVudFBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24sXG4gICAgZWxlbWVudERpbWVuc2lvbj86IEVsZW1lbnREaW1lbnNpb24sXG4gICAgY29hY2hEaW1lbnNpb24/OiBFbGVtZW50RGltZW5zaW9uLFxuICAgIGlzT3JpZ2luSGVpZ2h0PzogYm9vbGVhbixcbiAgKTogRWxlbWVudFBvc2l0aW9uIHtcbiAgICBpZiAoY29hY2hEaW1lbnNpb24gJiYgZWxlbWVudERpbWVuc2lvbikge1xuICAgICAgY29uc3QgZW5kUG9zSGVpZ2h0ID0gaXNPcmlnaW5IZWlnaHRcbiAgICAgICAgPyBjb2FjaERpbWVuc2lvbi5oXG4gICAgICAgIDogY29hY2hEaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXQ7XG4gICAgICAvL0lmIHRoZSBvcmlnaW5hbCBlbGVtZW50IGlzIHBvc2l0aW9uZWQgYXQgdGhlIHRvcCBvciBib3R0b20gb2YgdGhlIGNvYWNoLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZSBZIGNvb3JkaW5hdGUgd2l0aCB0aGUgYWRkaXRpb25hbCBib3JkZXIgcGFkZGluZ1xuICAgICAgaWYgKGVsZW1lbnRQb3NpdGlvbi55ID09PSAwKSB7XG4gICAgICAgIGVsZW1lbnRQb3NpdGlvbi55IC09IHRoaXMuY29hY2hCb3JkZXJPZmZzZXQ7XG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnRQb3NpdGlvbi55ICsgZWxlbWVudERpbWVuc2lvbi5oID09PSBlbmRQb3NIZWlnaHQpIHtcbiAgICAgICAgZWxlbWVudFBvc2l0aW9uLnkgKz0gdGhpcy5jb2FjaEJvcmRlck9mZnNldDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy5iYXNlR3JpZFNpemUgKiBlbGVtZW50UG9zaXRpb24ueCxcbiAgICAgIHk6IHRoaXMuYmFzZUdyaWRTaXplICogZWxlbWVudFBvc2l0aW9uLnksXG4gICAgICB6OiBlbGVtZW50UG9zaXRpb24ueixcbiAgICB9O1xuICB9XG5cbiAgLy8gSGFuZGxpbmcgZm9yIFRhYiBuYXZpZ2F0aW9uIGlmIGFuIHBsYWNlIGlzIHNlbGVjdGVkIGluc2lkZSB0aGUgY29hY2guXG4gIC8vIFRoaXMgY29udHJvbHMgdGhlIGZvY3VzZWQgY29hY2ggZnJvbSB0aGUgY3VycmVudCBzZWxlY3RlZCBjb2FjaC5cbiAgcHJpdmF0ZSBfbmF2aWdhdGVDb2FjaE5hdmlnYXRpb25CeUtleWJvYXJkKHRhYkRpcmVjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VyckZvY3VzSW5kZXggPVxuICAgICAgdGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gLTFcbiAgICAgICAgPyB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggPT09IC0xXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXhcbiAgICAgICAgOiB0aGlzLmZvY3VzZWRDb2FjaEluZGV4O1xuICAgIC8vIENoZWNrIG5leHQgb3IgcHJldiB0YWIgaXMgcHJlc3NlZCwgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgdGhlIG5leHQgYXZhaWxhYmxlIGNvYWNoIGluZGV4IHRoYXQgc2hvdWxkIHJlY2VpdmUgdGhlIGZvY3VzXG4gICAgY29uc3QgbmV3Rm9jdXNhYmxlSW5kZXg6IG51bWJlciA9XG4gICAgICB0YWJEaXJlY3Rpb24gPT09ICdORVhUX1RBQidcbiAgICAgICAgPyB0aGlzLmdldE5leHRBdmFpbGFibGVDb2FjaEluZGV4KGN1cnJGb2N1c0luZGV4KVxuICAgICAgICA6IHRoaXMuZ2V0UHJldkF2YWlsYWJsZUNvYWNoSW5kZXgoY3VyckZvY3VzSW5kZXgpO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJGb2N1c0luZGV4IGVxdWFscyB0aGUgbmV3Rm9jdXNhYmxlSW5kZXggdGhlbiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGZpcnN0IG9yIGxhc3QgdGFiYWJsZSBuYXZpZ2F0aW9uIGNvYWNoIEVsZW1lbnQgYW5kIHdlIGhhdmUgdG8gdGhlIHNldCB0aGUgZm9jdXMgbWFudWFsIHRvIHRoZSBmaXJzdFRhYkVsZW1lbnQgb3IgbGFzdFRhYkVsZW1lbnQuXG4gICAgaWYgKGN1cnJGb2N1c0luZGV4ID09PSBuZXdGb2N1c2FibGVJbmRleCkge1xuICAgICAgdGhpcy51bmZvY3VzUGxhY2VFbGVtZW50KCk7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29hY2hJbmRleCA9IC0xO1xuICAgICAgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ID0gLTE7XG4gICAgICB0aGlzLnNlYXRSZXNlcnZhdGlvbldpdGhvdXROYXZpZ2F0aW9uSGFzRm9jdXMgPSBmYWxzZTtcblxuICAgICAgaWYgKHRhYkRpcmVjdGlvbiA9PT0gJ05FWFRfVEFCJykgdGhpcy5sYXN0VGFiRWxlbWVudC5mb2N1cygpO1xuICAgICAgZWxzZSB0aGlzLmZpcnN0VGFiRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRQbGFjZUVsZW1lbnQgPSB0aGlzLl9nZXRQbGFjZUh0bWxFbGVtZW50KCk7XG4gICAgICBjb25zdCBwbGFjZUluQ29hY2hIYXNGb2N1cyA9IHNlbGVjdGVkUGxhY2VFbGVtZW50XG4gICAgICAgID8gc2VsZWN0ZWRQbGFjZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdrZXlmb2N1cycpID09PSAnZm9jdXMnXG4gICAgICAgIDogZmFsc2U7XG5cbiAgICAgIC8vIElmIHdlIHRhYiBiYWNrIChQUkVWX1RBQikgYW5kIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgb24gcGxhY2UsXG4gICAgICAvLyB3ZSByZW1vdmUgdGhlIHNlbGVjdGVkIHN0YXRlIGZyb20gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBuYXZpZ2F0aW9uIGNvYWNoIGFuZCBvbmx5IHNldCB0aGUgZm9jdXMgc3RhdHVzIHRvIGl0XG4gICAgICBpZiAodGFiRGlyZWN0aW9uID09PSAnUFJFVl9UQUInICYmIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ID09PSBjdXJyRm9jdXNJbmRleCkge1xuICAgICAgICBpZiAocGxhY2VJbkNvYWNoSGFzRm9jdXMpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzZWRDb2FjaEluZGV4ID0gY3VyckZvY3VzSW5kZXg7XG4gICAgICAgICAgdGhpcy51bmZvY3VzUGxhY2VFbGVtZW50KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9IG5ld0ZvY3VzYWJsZUluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBPbmx5IHNldHMgdGhlIGZvY3VzIG9uIHRoZSBuZXcgbmF2aWdhdGlvbiBjb2FjaFxuICAgICAgZWxzZSBpZiAobmV3Rm9jdXNhYmxlSW5kZXggIT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgICB0aGlzLmZvY3VzZWRDb2FjaEluZGV4ID0gbmV3Rm9jdXNhYmxlSW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvY3VzZWRDb2FjaEluZGV4ID0gLTE7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ID0gbmV3Rm9jdXNhYmxlSW5kZXg7XG4gICAgICAgIC8vIElmIGFueSBwbGFjZSB3YXMgZm9jdXNlZCBpbiBjb2FjaCwgc28gd2Ugc2V0IGZvY3VzZWQgYWdhaW5cbiAgICAgICAgaWYgKHBsYWNlSW5Db2FjaEhhc0ZvY3VzKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBubyBwbGFjZSB3YXMgc2VsZWN0ZWQsIHRoZW4gd2Ugc2VsZWN0IHRoZSBjb2FjaCBncmlkXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXNDb2FjaEdyaWRGb2N1c2FibGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX3NldEZvY3VzVG9TZWxlY3RlZENvYWNoR3JpZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vIG5hdmlnYXRpb24gZXhpc3QsIHdlIHNjcm9sbCBkaXJlY3RseSB0byB0aGUgbmV4dCB0YWJhYmxlIGNvYWNoXG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWROYXZDb2FjaChuZXdGb2N1c2FibGVJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbmF2aWdhdGVUb1BsYWNlQnlLZXlib2FyZChwcmVzc2VkS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljayA9IGZhbHNlO1xuICAgIHRoaXMuaXNLZXlib2FyZE5hdmlnYXRpb24gPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZm9jdXNlZENvYWNoSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmZvY3VzZWRDb2FjaEluZGV4ID0gLTE7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICBjb25zdCBmaW5kQ2xvc2VzdFBsYWNlID0gdGhpcy5fZ2V0Q2xvc2VzdFBsYWNlQnlLZXlEaXJlY3Rpb24ocHJlc3NlZEtleSk7XG4gICAgICBpZiAoZmluZENsb3Nlc3RQbGFjZSkge1xuICAgICAgICB0aGlzLmZvY3VzUGxhY2VFbGVtZW50KGZpbmRDbG9zZXN0UGxhY2UpO1xuICAgICAgfVxuICAgICAgLy8gTm8gY2xvc2VzdCBwbGFjZSBmb3VuZCBieSBrZXkgbmF2aWdhdGlvblxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd1JpZ2h0IHx8XG4gICAgICAgICAgcHJlc3NlZEtleSA9PT0gdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dMZWZ0IHx8XG4gICAgICAgICAgKHRoaXMuYWxpZ25WZXJ0aWNhbCAmJlxuICAgICAgICAgICAgKHByZXNzZWRLZXkgPT09IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93VXAgfHxcbiAgICAgICAgICAgICAgcHJlc3NlZEtleSA9PT0gdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dEb3duKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgdGhlIGN1cnJlbnQgcHJlc3NlZCBrZXkgdG8gZ2V0IHRoZSBuZXh0IGF2YWlsYWJsZSBjb2FjaCBpbmRleFxuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkQ29hY2hJbmRleCA9XG4gICAgICAgICAgICBwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd1JpZ2h0XG4gICAgICAgICAgICAgID8gdGhpcy5nZXROZXh0QXZhaWxhYmxlQ29hY2hJbmRleCgpXG4gICAgICAgICAgICAgIDogdGhpcy5nZXRQcmV2QXZhaWxhYmxlQ29hY2hJbmRleCgpO1xuXG4gICAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkTmF2Q29hY2gobmV3U2VsZWN0ZWRDb2FjaEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROZXh0QXZhaWxhYmxlQ29hY2hJbmRleChjdXJyZW50SW5kZXg/OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBjdXJyZW50SW5kZXggPz8gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4O1xuICAgIHJldHVybiBzdGFydEluZGV4IDwgdGhpcy5zZWF0UmVzZXJ2YXRpb24uY29hY2hJdGVtcy5sZW5ndGggLSAxID8gc3RhcnRJbmRleCArIDEgOiBzdGFydEluZGV4O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFByZXZBdmFpbGFibGVDb2FjaEluZGV4KGN1cnJlbnRJbmRleD86IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IGN1cnJlbnRJbmRleCA/PyB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXg7XG4gICAgcmV0dXJuIHN0YXJ0SW5kZXggPiAwID8gc3RhcnRJbmRleCAtIDEgOiBzdGFydEluZGV4O1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzKHBsYWNlU2VsZWN0aW9uOiBQbGFjZVNlbGVjdGlvbik6IHZvaWQge1xuICAgIC8vIEFkZCBzZWxlY3RlZCBwbGFjZSB0byBzZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlc1xuICAgIGlmIChwbGFjZVNlbGVjdGlvbi5zdGF0ZSA9PT0gJ1NFTEVDVEVEJykge1xuICAgICAgY29uc3Qgc2VhdFJlc2VydmF0aW9uU2VsZWN0aW9uID0gdGhpcy5fZ2V0U2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24ocGxhY2VTZWxlY3Rpb24pO1xuICAgICAgaWYgKHNlYXRSZXNlcnZhdGlvblNlbGVjdGlvbikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzLnB1c2goc2VhdFJlc2VydmF0aW9uU2VsZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmVtb3ZlIHNlbGVjdGVkIHBsYWNlIGZyb20gc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXNcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMgPSB0aGlzLnNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzLmZpbHRlcihcbiAgICAgICAgKF9zZWxlY3RlZFBsYWNlKSA9PiBfc2VsZWN0ZWRQbGFjZS5pZCAhPT0gcGxhY2VTZWxlY3Rpb24uaWQsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoZWNrcyB3aGV0aGVyIG1heFJlc2VydmF0aW9uIGlzIGFjdGl2YXRlZCBhbmQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNlbGVjdGVkIHBsYWNlcyBpcyByZWFjaGVkXG4gICAgaWYgKHRoaXMubWF4UmVzZXJ2YXRpb25zICYmIHRoaXMuc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMubGVuZ3RoID4gdGhpcy5tYXhSZXNlcnZhdGlvbnMpIHtcbiAgICAgIHRoaXMuX3Jlc2V0QWxsUGxhY2VTZWxlY3Rpb25zKHBsYWNlU2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBFbWl0cyB0aGUgc2VhdCByZXNlcnZhdGlvbiBwbGFjZSBzZWxlY3Rpb25cbiAgICB0aGlzLnNlbGVjdGVkUGxhY2VzLmVtaXQodGhpcy5zZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHBsYWNlU2VsZWN0aW9uOiBQbGFjZVNlbGVjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGNvYWNoSW5kZXggPSBwbGFjZVNlbGVjdGlvbi5jb2FjaEluZGV4O1xuICAgIGNvbnN0IHBsYWNlID0gdGhpcy5zZWF0UmVzZXJ2YXRpb24uY29hY2hJdGVtc1tjb2FjaEluZGV4XS5wbGFjZXM/LmZpbmQoXG4gICAgICAocGxhY2UpID0+IHBsYWNlLm51bWJlciA9PSBwbGFjZVNlbGVjdGlvbi5udW1iZXIsXG4gICAgKTtcblxuICAgIGlmICghcGxhY2UpIHJldHVybjtcbiAgICB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggPSBjb2FjaEluZGV4O1xuICAgIHRoaXMuY3VyclNlbGVjdGVkUGxhY2UgPSBwbGFjZTtcbiAgICBpZiAodGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ICE9PSB0aGlzLnNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgIH1cblxuICAgIHRoaXMuX3NldEN1cnJTZWxlY3RlZFBsYWNlRWxlbWVudElkKHBsYWNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29hY2hJbmRleCA9IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleDtcbiAgICB0aGlzLmZvY3VzZWRDb2FjaEluZGV4ID0gLTE7XG4gICAgY29uc3QgY29hY2hTZWxlY3Rpb24gPSB0aGlzLl9nZXRTZWF0UmVzZXJ2YXRpb25Db2FjaFNlbGVjdGlvbih0aGlzLnNlbGVjdGVkQ29hY2hJbmRleCk7XG4gICAgaWYgKGNvYWNoU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29hY2guZW1pdChjb2FjaFNlbGVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemF0aW9uIG9mIFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uIEFycmF5IGJhc2VkIG9uIHRoZSB0cmFuc2ZlcnJlZCBwbGFjZXNcbiAgICogdGhhdCBoYXZlIHRoZSBzdGF0ZSBTRUxFQ1RFRCB3aXRoaW4gdGhlIHNlYXRSZXNlcnZhdGlvbiBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgX2luaXRTZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXRSZXNlcnZhdGlvbi5jb2FjaEl0ZW1zLm1hcCgoY29hY2g6IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb2FjaC5wbGFjZXNcbiAgICAgICAgPy5maWx0ZXIoKHBsYWNlKSA9PiBwbGFjZS5zdGF0ZSA9PT0gJ1NFTEVDVEVEJylcbiAgICAgICAgPy5mb3JFYWNoKChwbGFjZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXNlbGVjdGVkUGxhY2VTZWxlY3Rpb246IFBsYWNlU2VsZWN0aW9uID0gbWFwUGxhY2VJbmZvc1RvUGxhY2VTZWxlY3Rpb24oXG4gICAgICAgICAgICBwbGFjZSxcbiAgICAgICAgICAgIGNvYWNoSW5kZXgsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBzZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbjogU2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24gfCBudWxsID1cbiAgICAgICAgICAgIHRoaXMuX2dldFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uKHByZXNlbGVjdGVkUGxhY2VTZWxlY3Rpb24pO1xuICAgICAgICAgIGlmIChzZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbilcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMucHVzaChzZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbCBzZWxlY3RlZCBwbGFjZXMgd2lsbCBiZSByZXNldCBvciB0aGUgY3VycmVudFNlbGVjdGVkUGxhY2Ugd2FzIGdpdmVuLCB0aGVuIHdlIHJlc2V0IGFsbCBleGNlcHQgY3VycmVudFNlbGVjdGVkUGxhY2VcbiAgICogQHBhcmFtIGN1cnJTZWxlY3RlZFBsYWNlXG4gICAqL1xuICBwcml2YXRlIF9yZXNldEFsbFBsYWNlU2VsZWN0aW9ucyhjdXJyU2VsZWN0ZWRQbGFjZT86IFBsYWNlU2VsZWN0aW9uKTogdm9pZCB7XG4gICAgLy9GaW5kIGFsbCBwbGFjZXMgdG8gYmUgbmVlZGVkIHVuc2VsZWN0XG4gICAgZm9yIChjb25zdCBwbGFjZVNlbGVjdGlvbiBvZiB0aGlzLnNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzKSB7XG4gICAgICBpZiAoIWN1cnJTZWxlY3RlZFBsYWNlIHx8IGN1cnJTZWxlY3RlZFBsYWNlLmlkICE9PSBwbGFjZVNlbGVjdGlvbi5pZCkge1xuICAgICAgICBjb25zdCBwbGFjZUVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKHBsYWNlU2VsZWN0aW9uLmlkKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgcGxhY2VFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3RhdGUnLCAnRlJFRScpO1xuICAgICAgfVxuICAgIH1cbiAgICAvL1JlbW92ZXMgYWxsIHNlbGVjdGVkIHBsYWNlcyBleGNlcHQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwbGFjZVxuICAgIGlmIChjdXJyU2VsZWN0ZWRQbGFjZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyA9IHRoaXMuc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMuZmlsdGVyKFxuICAgICAgICAoX3NlbGVjdGVkUGxhY2UpID0+IF9zZWxlY3RlZFBsYWNlLmlkID09PSBjdXJyU2VsZWN0ZWRQbGFjZS5pZCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRTZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbihcbiAgICBjdXJyU2VsZWN0ZWRQbGFjZTogUGxhY2VTZWxlY3Rpb24sXG4gICk6IFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uIHwgbnVsbCB7XG4gICAgY29uc3QgY29hY2ggPSB0aGlzLnNlYXRSZXNlcnZhdGlvbi5jb2FjaEl0ZW1zW2N1cnJTZWxlY3RlZFBsYWNlLmNvYWNoSW5kZXhdO1xuICAgIGNvbnN0IHBsYWNlID0gY29hY2gucGxhY2VzPy5maW5kKChwbGFjZSkgPT4gcGxhY2UubnVtYmVyID09PSBjdXJyU2VsZWN0ZWRQbGFjZS5udW1iZXIpO1xuXG4gICAgcmV0dXJuIHBsYWNlXG4gICAgICA/IG1hcFBsYWNlQW5kQ29hY2hUb1NlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uKHBsYWNlLCBjb2FjaCwgY3VyclNlbGVjdGVkUGxhY2UuY29hY2hJbmRleClcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFNlYXRSZXNlcnZhdGlvbkNvYWNoU2VsZWN0aW9uKFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgKTogU2VhdFJlc2VydmF0aW9uQ29hY2hTZWxlY3Rpb24gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuc2VhdFJlc2VydmF0aW9uLmNvYWNoSXRlbXNbY29hY2hJbmRleF0pIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgY29hY2ggPSB0aGlzLnNlYXRSZXNlcnZhdGlvbi5jb2FjaEl0ZW1zW2NvYWNoSW5kZXhdO1xuICAgIHJldHVybiBtYXBDb2FjaEluZm9zVG9Db2FjaFNlbGVjdGlvbihjb2FjaEluZGV4LCBjb2FjaCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRDdXJyU2VsZWN0ZWRQbGFjZUVsZW1lbnRJZChwbGFjZTogUGxhY2UgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHBsYWNlKSB7XG4gICAgICB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlRWxlbWVudElkID1cbiAgICAgICAgJ3NlYXQtcmVzZXJ2YXRpb25fX3BsYWNlLWJ1dHRvbi0nICsgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ICsgJy0nICsgcGxhY2UubnVtYmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlRWxlbWVudElkID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBzZWxlY3RlZCBwbGFjZSBIVE1MIGVsZW1lbnQgYnkgZ2l2ZW4gcGxhY2VOdW1iZXIgYW5kIGNvYWNoSW5kZXguXG4gICAqIElmIGJvdGggZG9lc250IGV4aXN0LCB3ZSB0cnkgdG8gcmV0dXJuIHRoZSBwbGFjZSBIVE1MIGVsZW1lbnQgYnkgdGhlIF9jdXJyZW50U2VsZWN0ZWRQbGFjZUVsZW1lbnRJZFxuICAgKiBAcGFyYW0gcGxhY2VOdW1iZXIgb3B0aW9uYWwgYXMgc3RyaW5nXG4gICAqIEBwYXJhbSBjb2FjaEluZGV4IG9wdGlvbmFsIGFzIHN0cmluZ1xuICAgKiBAcmV0dXJucyBIVE1MRWxlbWVudCBvciBudWxsXG4gICAqL1xuICBwcml2YXRlIF9nZXRQbGFjZUh0bWxFbGVtZW50KHBsYWNlTnVtYmVyPzogc3RyaW5nLCBjb2FjaEluZGV4PzogbnVtYmVyKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyQ29hY2hJbmRleCA9IGNvYWNoSW5kZXggPyBjb2FjaEluZGV4IDogdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4O1xuICAgIGNvbnN0IGNvYWNoUGxhY2VOdW1iZXJJZCA9IHBsYWNlTnVtYmVyXG4gICAgICA/ICdzZWF0LXJlc2VydmF0aW9uX19wbGFjZS1idXR0b24tJyArIGN1cnJDb2FjaEluZGV4ICsgJy0nICsgcGxhY2VOdW1iZXJcbiAgICAgIDogdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZUVsZW1lbnRJZDtcbiAgICByZXR1cm4gY29hY2hQbGFjZU51bWJlcklkID8gdGhpcy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZChjb2FjaFBsYWNlTnVtYmVySWQpIHx8IG51bGwgOiBudWxsO1xuICB9XG5cbiAgLy9TZXQgdGhlIHZlcnRpY2FsIG9mZnNldFxuICBwcml2YXRlIF9zZXRWZXJ0aWNhbEFsaWdubWVudE9mZnNldCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlYXRSZXNlcnZhdGlvbldyYXBwZXJFbGVtZW50ID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNiYi1zcl9fd3JhcHBlcicsXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHNlYXRSZXNlcnZhdGlvbldyYXBwZXJFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHNlYXRSZXNlcnZhdGlvblZlcnRpY2FsT2Zmc2V0ID1cbiAgICAgICAgICBzZWF0UmVzZXJ2YXRpb25XcmFwcGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tdmVydGljYWwtb2Zmc2V0JyxcbiAgICAgICAgICBgJHtzZWF0UmVzZXJ2YXRpb25WZXJ0aWNhbE9mZnNldH1weGAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTY3JvbGxEaXJlY3Rpb24iLCJTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCIsInBsYWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQXlCQSxJQUFLO0FBQUEsQ0FBTCxTQUFLQSxrQkFBZTtBQUNsQkEsbUJBQUEsT0FBQSxJQUFBO0FBQ0FBLG1CQUFBLE1BQUEsSUFBQTtBQUNGLEdBSEssb0JBQUEsa0JBQWUsQ0FBQSxFQUFBO0lBYVAsOEJBQTBCLE1BQUE7O29CQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW5DLFNBQUEsbUJBQW1DLFlBQVU7QUFBQTs7QUFReEQ7QUFLQTtBQUtBO0FBS0E7QUFLQTtBQUtBO0FBS0E7QUFFUztBQUNBO0FBakNPLHlCQUFBLG1DQUFBLGtCQUFBLE1BQUEsK0JBQW1DLElBQUs7QUFLeEMseUJBQUEsa0NBQUEsa0JBQUEsTUFBQSxrQ0FBQSxHQUFBLGtCQUFBLE1BQUEsNkJBQXlCLElBQUk7QUFLN0IseUJBQUEsa0NBQUEsa0JBQUEsTUFBQSxnQ0FBQSxHQUFBLGtCQUFBLE1BQUEsNkJBQXlCLEtBQUs7QUFLOUIseUJBQUEsaUNBQUEsa0JBQUEsTUFBQSxnQ0FBQSxHQUFBLGtCQUFBLE1BQUEsNEJBQXVCLEVBQUU7QUFLekIseUJBQUEsMkJBQUEsa0JBQUEsTUFBQSwrQkFBQSxHQUFBLGtCQUFBLE1BQUEsc0JBQWlCLElBQUs7QUFLdEIseUJBQUEsb0NBQUEsa0JBQUEsTUFBQSx5QkFBQSxHQUFBLGtCQUFBLE1BQUEsK0JBQTBCLElBQUs7QUFLL0IseUJBQUEsc0NBQUEsa0JBQUEsTUFBQSxrQ0FBQSxHQUFB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
695
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1iYXNlLWVsZW1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyb3dLZXlPclBhZ2VLZXlzUHJlc3NlZCB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBMaXRFbGVtZW50LCB0eXBlIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgbWFwQ29hY2hJbmZvc1RvQ29hY2hTZWxlY3Rpb24sXG4gIG1hcFBsYWNlQW5kQ29hY2hUb1NlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uLFxuICBtYXBQbGFjZUluZm9zVG9QbGFjZVNlbGVjdGlvbixcbn0gZnJvbSAnLi4vY29tbW9uL21hcHBlci5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvYWNoSXRlbSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgRWxlbWVudFBvc2l0aW9uLFxuICBQbGFjZSxcbiAgUGxhY2VTZWxlY3Rpb24sXG4gIFNlYXRSZXNlcnZhdGlvbixcbiAgU2VhdFJlc2VydmF0aW9uQ29hY2hTZWxlY3Rpb24sXG4gIFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uLFxufSBmcm9tICcuLi9jb21tb24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTZWF0UmVzZXJ2YXRpb25QbGFjZUNvbnRyb2xFbGVtZW50IH0gZnJvbSAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5jb21wb25lbnQuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTZWF0UmVzZXJ2YXRpb25TY29wZWRFbGVtZW50IH0gZnJvbSAnLi4vc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQvc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQuY29tcG9uZW50LmpzJztcblxuZW51bSBTY3JvbGxEaXJlY3Rpb24ge1xuICByaWdodCA9ICdyaWdodCcsXG4gIGxlZnQgPSAnbGVmdCcsXG59XG5cbmludGVyZmFjZSBDb2FjaFNjcm9sbFRyaWdnZXJQb2ludCB7XG4gIHN0YXJ0OiBudW1iZXI7XG4gIGVuZDogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBTZWF0UmVzZXJ2YXRpb25TZWxlY3RlZFBsYWNlc0V2ZW50RGV0YWlscyA9IFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uW107XG5cbmV4cG9ydCBjbGFzcyBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBzZWxlY3RlZFBsYWNlczogJ3NlbGVjdGVkUGxhY2VzJyxcbiAgICBzZWxlY3RlZENvYWNoOiAnc2VsZWN0ZWRDb2FjaCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFRoZSBzZWF0IHJlc2VydmF0aW9uIG9iamVjdCB3aGljaCBjb250YWlucyBhbGwgY29hY2hlcyBhbmQgcGxhY2VzICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NlYXQtcmVzZXJ2YXRpb24nLCB0eXBlOiBPYmplY3QgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNlYXRSZXNlcnZhdGlvbjogU2VhdFJlc2VydmF0aW9uID0gbnVsbCE7XG5cbiAgLyoqIFRoZSBzZWF0IHJlc3ZlcnZhdGlvbiBuYXZpZ2F0aW9uIGNhbiBiZSB0b2dnbGVkIGJ5IHRoaXMgcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hhcy1uYXZpZ2F0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaGFzTmF2aWdhdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqIFRoZSBzZWF0IHJlc2VydmF0aW9uIGFyZWEgaXMgYWxpZ25lZCB2ZXJ0aWNhbGx5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhbGlnbi12ZXJ0aWNhbCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGFsaWduVmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gYXJlYSdzIGJhc2UgZ3JpZCBzaXplICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdiYXNlLWdyaWQtc2l6ZScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYmFzZUdyaWRTaXplOiBudW1iZXIgPSAxNjtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gYXJlYSdzIHdpZHRoICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoZWlnaHQnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGhlaWdodDogbnVtYmVyID0gbnVsbCE7XG5cbiAgLyoqIE1heGltYWwgbnVtYmVyIG9mIHBvc3NpYmxlIGNsaWNrYWJsZSBzZWF0cyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnbWF4LXJlc2VydmF0aW9ucycsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbWF4UmVzZXJ2YXRpb25zOiBudW1iZXIgPSBudWxsITtcblxuICAvKiogQW55IGNsaWNrIGZ1bmN0aW9uYWxpdHkgaXMgcHJldmVudGVkICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwcmV2ZW50LXBsYWNlLWNsaWNrJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcHJldmVudFBsYWNlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3Igc2VsZWN0ZWRDb2FjaEluZGV4OiBudW1iZXIgPSAtMTtcbiAgQHN0YXRlKCkgcHJvdGVjdGVkIGFjY2Vzc29yIGZvY3VzZWRDb2FjaEluZGV4OiBudW1iZXIgPSAtMTtcblxuICAvKiogRW1pdHMgd2hlbiBhIHBsYWNlIHdhcyBzZWxlY3RlZCBieSB1c2VyLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRQbGFjZXM6IEV2ZW50RW1pdHRlcjxTZWF0UmVzZXJ2YXRpb25TZWxlY3RlZFBsYWNlc0V2ZW50RGV0YWlscz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIodGhpcywgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQuZXZlbnRzLnNlbGVjdGVkUGxhY2VzKTtcblxuICAvKiogRW1pdHMgd2hlbiBhIGNvYWNoIHdhcyBzZWxlY3RlZCBieSB1c2VyLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDb2FjaDogRXZlbnRFbWl0dGVyPFNlYXRSZXNlcnZhdGlvbkNvYWNoU2VsZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudC5ldmVudHMuc2VsZWN0ZWRDb2FjaCxcbiAgKTtcblxuICBwcm90ZWN0ZWQgY29hY2hCb3JkZXJQYWRkaW5nID0gNjtcbiAgcHJvdGVjdGVkIGNvYWNoQm9yZGVyT2Zmc2V0ID0gdGhpcy5jb2FjaEJvcmRlclBhZGRpbmcgLyB0aGlzLmJhc2VHcmlkU2l6ZTtcbiAgcHJvdGVjdGVkIGN1cnJTY3JvbGxEaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbiA9IFNjcm9sbERpcmVjdGlvbi5yaWdodDtcbiAgcHJvdGVjdGVkIG1heENhbGNDb2FjaHNXaWR0aDogbnVtYmVyID0gMDtcbiAgcHJvdGVjdGVkIHNjcm9sbENvYWNoc0FyZWFXaWR0aDogbnVtYmVyID0gMDtcbiAgcHJvdGVjdGVkIHRyaWdnZXJDb2FjaFBvc2l0aW9uc0NvbGxlY3Rpb246IENvYWNoU2Nyb2xsVHJpZ2dlclBvaW50W10gPSBbXTtcbiAgcHJvdGVjdGVkIGZpcnN0VGFiRWxlbWVudDogSFRNTEVsZW1lbnQgPSBudWxsITtcbiAgcHJvdGVjdGVkIGxhc3RUYWJFbGVtZW50OiBIVE1MRWxlbWVudCA9IG51bGwhO1xuICBwcm90ZWN0ZWQgY29hY2hTY3JvbGxBcmVhOiBIVE1MRWxlbWVudCA9IG51bGwhO1xuICBwcm90ZWN0ZWQgY3VyclNlbGVjdGVkUGxhY2U6IFBsYWNlIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBjdXJyU2VsZWN0ZWRQbGFjZUVsZW1lbnRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBjdXJyU2VsZWN0ZWRDb2FjaEluZGV4OiBudW1iZXIgPSAtMTtcbiAgcHJvdGVjdGVkIHByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXM6IFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNlYXRSZXNlcnZhdGlvbldpdGhvdXROYXZpZ2F0aW9uSGFzRm9jdXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG4gIHByb3RlY3RlZCBrZXlib2FyZE5hdmlnYXRpb25FdmVudHMgPSB7XG4gICAgQXJyb3dMZWZ0OiAnQXJyb3dMZWZ0JyxcbiAgICBBcnJvd1JpZ2h0OiAnQXJyb3dSaWdodCcsXG4gICAgQXJyb3dVcDogJ0Fycm93VXAnLFxuICAgIEFycm93RG93bjogJ0Fycm93RG93bicsXG4gICAgVGFiOiAnVGFiJyxcbiAgICBFbnRlcjogJ0VudGVyJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NlYXRSZXNlcnZhdGlvbicpKSB7XG4gICAgICB0aGlzLl9pbml0U2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdiYXNlR3JpZFNpemUnKSkge1xuICAgICAgdGhpcy5jb2FjaEJvcmRlck9mZnNldCA9IHRoaXMuY29hY2hCb3JkZXJQYWRkaW5nIC8gdGhpcy5iYXNlR3JpZFNpemU7XG4gICAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmlkLXNpemUnLCBgJHt0aGlzLmJhc2VHcmlkU2l6ZX1weGApO1xuXG4gICAgICBpZiAodGhpcy5hbGlnblZlcnRpY2FsKSB7XG4gICAgICAgIHRoaXMuX3NldFZlcnRpY2FsQWxpZ25tZW50T2Zmc2V0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGhlaWdodCBpcyB1c2VkLCB0aGUgYmFzZUdyaWRTaXplIG11c3QgYmUgcmVjYWxjdWxhdGVkXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnaGVpZ2h0JykgJiYgISF0aGlzLmhlaWdodCkge1xuICAgICAgaWYgKHRoaXMuc2VhdFJlc2VydmF0aW9uLmNvYWNoSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYmFzZUdyaWRTaXplID0gdGhpcy5oZWlnaHQgLyB0aGlzLnNlYXRSZXNlcnZhdGlvbi5jb2FjaEl0ZW1zWzBdLmRpbWVuc2lvbi5oO1xuICAgICAgICB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ID0gdGhpcy5jb2FjaEJvcmRlclBhZGRpbmcgLyB0aGlzLmJhc2VHcmlkU2l6ZTtcbiAgICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JpZC1zaXplJywgYCR7dGhpcy5iYXNlR3JpZFNpemV9cHhgKTtcblxuICAgICAgICBpZiAodGhpcy5hbGlnblZlcnRpY2FsKSB7XG4gICAgICAgICAgdGhpcy5fc2V0VmVydGljYWxBbGlnbm1lbnRPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2FsaWduVmVydGljYWwnKSAmJiB0aGlzLmFsaWduVmVydGljYWwpIHtcbiAgICAgIHRoaXMuX3NldFZlcnRpY2FsQWxpZ25tZW50T2Zmc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgLyogSW5pdCBzY3JvbGwgZXZlbnQgaGFuZGxpbmcgZm9yIGNvYWNoIG5hdmlnYXRpb24gKi9cbiAgcHJvdGVjdGVkIGluaXROYXZpZ2F0aW9uU2VsZWN0aW9uQnlTY3JvbGxFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpcnN0VGFiRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0LXRhYi1lbGVtZW50JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5sYXN0VGFiRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoJ2xhc3QtdGFiLWVsZW1lbnQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLmNvYWNoU2Nyb2xsQXJlYSA9IHRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoJ3NiYi1zcl9fcGFyZW50LWFyZWEnKSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICh0aGlzLmNvYWNoU2Nyb2xsQXJlYSkge1xuICAgICAgbGV0IGN1cnJDYWxjVHJpZ2dlclBvcyA9IDA7XG4gICAgICB0aGlzLnNjcm9sbENvYWNoc0FyZWFXaWR0aCA9IHRoaXMuY29hY2hTY3JvbGxBcmVhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAvLyBQcmVjYWxjdWxhdGUgdHJpZ2dlciBzY3JvbGwgcG9zaXRpb24gYXJyYXkgZGVwZW5kcyBmcm9tIGNvYWNoIHdpZHRoXG4gICAgICB0aGlzLnRyaWdnZXJDb2FjaFBvc2l0aW9uc0NvbGxlY3Rpb24gPSB0aGlzLnNlYXRSZXNlcnZhdGlvbi5jb2FjaEl0ZW1zLm1hcCgoY29hY2gpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnRQb3NYID0gY3VyckNhbGNUcmlnZ2VyUG9zO1xuICAgICAgICBjb25zdCBjb2FjaFdpZHRoID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoLmRpbWVuc2lvbikudztcbiAgICAgICAgY3VyckNhbGNUcmlnZ2VyUG9zICs9IGNvYWNoV2lkdGg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3RhcnQ6IHN0YXJ0UG9zWCxcbiAgICAgICAgICBlbmQ6IGN1cnJDYWxjVHJpZ2dlclBvcyxcbiAgICAgICAgICB3aWR0aDogY29hY2hXaWR0aCxcbiAgICAgICAgfSBhcyBDb2FjaFNjcm9sbFRyaWdnZXJQb2ludDtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTZXQgbWF4aW11bSBjYWxjdWxhdGVkIGNvYWNoIHdpZHRoXG4gICAgICB0aGlzLm1heENhbGNDb2FjaHNXaWR0aCA9IGN1cnJDYWxjVHJpZ2dlclBvcztcblxuICAgICAgLy8gQXQgdGhlIGVuZCBvZiBhIHNjcm9sbCBFdmVudHMgdG8gYSBjb2FjaCwgdGhlIHJlYWNoZWQgd2Fnb24gaXMgbWFya2VkIGFzIHNlbGVjdGVkXG4gICAgICB0aGlzLmNvYWNoU2Nyb2xsQXJlYS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGxlbmQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbmRTY3JvbGxDb2FjaEluZGV4ID0gdGhpcy5pc0F1dG9TY3JvbGxpbmdcbiAgICAgICAgICA/IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleFxuICAgICAgICAgIDogdGhpcy5fZ2V0Q29hY2hJbmRleEJ5U2Nyb2xsVHJpZ2dlclBvc2l0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLl9pc1Njcm9sbGFibGVUb1NlbGVjdGVkQ29hY2goKSkge1xuICAgICAgICAgIHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCA9IGZpbmRTY3JvbGxDb2FjaEluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCA9XG4gICAgICAgICAgICBmaW5kU2Nyb2xsQ29hY2hJbmRleCA8IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleFxuICAgICAgICAgICAgICA/IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleFxuICAgICAgICAgICAgICA6IGZpbmRTY3JvbGxDb2FjaEluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5oYXNOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICAgICAgICB0aGlzLmlzQXV0b1Njcm9sbGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gRHVyaW5nIGluaXRpYWxpemF0aW9uIHdlIGNoZWNrIHZlcnRpY2FsIGFsaWdubWVudCBtb2RlLiBJbiBWZXJ0aWNhbCBtb2RlIHdlIGhhdmUgdG8gc2V0IHRoZSB2ZXJ0aWNhbCBvZmZzZXQgbWFudWFsIGZvciB0aGUgc2VhdCByZXNlcnZhdGlvbiBhcmVhLFxuICAgICAgLy8gYmVjYXVzZSB3ZSByb3RhdGUgdGhlIGVudGlyZSBjb21wb25lbnQgYnkgOTAgZGVncmVlcyBhbmQgdHJhbnNmb3JtIHRoZSBvcmlnaW4gcG9pbnQgdG8gdG9wIGxlZnQuXG4gICAgICBpZiAodGhpcy5hbGlnblZlcnRpY2FsKSB7XG4gICAgICAgIHRoaXMuX3NldFZlcnRpY2FsQWxpZ25tZW50T2Zmc2V0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIG5vIG5hdmlnYXRpb24gZXhpc3RzIChwcm9wZXJ0eSBzZXR0aW5nIC0+IGhhc05hdmlnYXRpb24pIGFuZCBhIHRhYmxlIGNvYWNoIGdldHMgdGhlIGZvY3VzLFxuICAgKiB0aGUgZmlyc3QgcGxhY2UgaW4gdGhlIGNvYWNoIG11c3QgYmUgYXV0b21hdGljYWxseSBwcmVzZWxlY3RlZCB0byBjb250cm9sIHRoZSBwbGFjZSBuYXZpZ2F0aW9uIHZpYSBrZXlib2FyZFxuICAgKlxuICAgKiBAcGFyYW0gZm9jdXNDb2FjaEluZGV4XG4gICAqL1xuICBwcm90ZWN0ZWQgb25Gb2N1c1RhYmxlQ29hY2hBbmRQcmVzZWxlY3RQbGFjZShmb2N1c0NvYWNoSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWF0UmVzZXJ2YXRpb25XaXRob3V0TmF2aWdhdGlvbkhhc0ZvY3VzICYmICF0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgIHRoaXMuc2VhdFJlc2VydmF0aW9uV2l0aG91dE5hdmlnYXRpb25IYXNGb2N1cyA9IHRydWU7XG4gICAgICB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggPVxuICAgICAgICBmb2N1c0NvYWNoSW5kZXggPT09IDBcbiAgICAgICAgICA/IHRoaXMuZ2V0TmV4dEF2YWlsYWJsZUNvYWNoSW5kZXgoLTEpXG4gICAgICAgICAgOiB0aGlzLmdldFByZXZBdmFpbGFibGVDb2FjaEluZGV4KGZvY3VzQ29hY2hJbmRleCk7XG4gICAgICB0aGlzLnByZXNlbGVjdFBsYWNlSW5Db2FjaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNhdGlvbiBvZiBLZXlib2FyZCBldmVudCBoYW5kbGluZyB0byBuYXZpZ2F0aW9uIGJldHdlZW4gZWFjaCBwbGFjZXMgaW5zaWRlIGEgc2VsZWN0ZWQgY29hY2ggYnkgdXNpbmcgW2Fycm93XSBrZXlzLlxuICAgKiBXaXRoIHRoZSBbVEFCXSBrZXkgdGhlIHVzZXIgbmF2aWdhdGlvbiBnb2VzIHRvIHRoZSBuZXh0IGNvYWNoIG5hdmlnYXRpb24gZWxlbWVudCBhbmQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwbGFjZSBpcyBhdXRvbWF0aWNhbGx5IHJlc2V0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzc2VkS2V5ID0gZXZlbnQua2V5O1xuXG4gICAgLy8gSWYgYW55IHBsYWNlIGlzIHNlbGVjdGVkIGFuZCBUQUIgS2V5IGNvbWJpbmF0aW9uIGlzdCBwcmVzc2VkLFxuICAgIC8vIHRoZW4gd2UgaGFuZGxlIHRoZSBuZXh0IG9yIHByZXZpb3VzIGNvYWNoIHNlbGVjdGlvblxuICAgIGlmICh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKSB7XG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5Q29kZSA9PT0gOSkge1xuICAgICAgICB0aGlzLl9uYXZpZ2F0ZUNvYWNoTmF2aWdhdGlvbkJ5S2V5Ym9hcmQoJ1BSRVZfVEFCJyk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXNzZWRLZXkgPT09IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLlRhYikge1xuICAgICAgICB0aGlzLl9uYXZpZ2F0ZUNvYWNoTmF2aWdhdGlvbkJ5S2V5Ym9hcmQoJ05FWFRfVEFCJyk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBhIGNob2FjaCBpcyBzZWxlY3RlZCBhbmQgdGhlIGFycm93IGtleSBpcyBwcmVzc2VkXG4gICAgaWYgKHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCAhPT0gLTEgJiYgaXNBcnJvd0tleU9yUGFnZUtleXNQcmVzc2VkKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgc3dpdGNoIChwcmVzc2VkS2V5KSB7XG4gICAgICAgIGNhc2UgdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dMZWZ0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXNzZWRMZWZ0S2V5TWFwcGluZzogc3RyaW5nID0gdGhpcy5hbGlnblZlcnRpY2FsXG4gICAgICAgICAgICAgID8gdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dEb3duXG4gICAgICAgICAgICAgIDogcHJlc3NlZEtleTtcbiAgICAgICAgICAgIHRoaXMuX25hdmlnYXRlVG9QbGFjZUJ5S2V5Ym9hcmQocHJlc3NlZExlZnRLZXlNYXBwaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dSaWdodDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBwcmVzc2VkUmlnaHRLZXlNYXBwaW5nOiBzdHJpbmcgPSB0aGlzLmFsaWduVmVydGljYWxcbiAgICAgICAgICAgICAgPyB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd1VwXG4gICAgICAgICAgICAgIDogcHJlc3NlZEtleTtcbiAgICAgICAgICAgIHRoaXMuX25hdmlnYXRlVG9QbGFjZUJ5S2V5Ym9hcmQocHJlc3NlZFJpZ2h0S2V5TWFwcGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93VXA6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgcHJlc3NlZFVwS2V5TWFwcGluZzogc3RyaW5nID0gdGhpcy5hbGlnblZlcnRpY2FsXG4gICAgICAgICAgICAgID8gdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dMZWZ0XG4gICAgICAgICAgICAgIDogcHJlc3NlZEtleTtcbiAgICAgICAgICAgIHRoaXMuX25hdmlnYXRlVG9QbGFjZUJ5S2V5Ym9hcmQocHJlc3NlZFVwS2V5TWFwcGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93RG93bjpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBwcmVzc2VkRG93bktleU1hcHBpbmc6IHN0cmluZyA9IHRoaXMuYWxpZ25WZXJ0aWNhbFxuICAgICAgICAgICAgICA/IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93UmlnaHRcbiAgICAgICAgICAgICAgOiBwcmVzc2VkS2V5O1xuICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGVUb1BsYWNlQnlLZXlib2FyZChwcmVzc2VkRG93bktleU1hcHBpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBhIHBsYWNlIGluc2lkZSB0aGUgY29hY2ggaWYgbmF2aWdhdGVkIHZpYSBrZXlib2FyZCxcbiAgICogb3RoZXJ3aXNlIHRoZSBjb2FjaCBncmlkIGlzIHNlbGVjdGVkIChuZWNlc3NhcnkgZm9yIFNjcmVlblJlYWRlcilcbiAgICovXG4gIHByb3RlY3RlZCBwcmVzZWxlY3RQbGFjZUluQ29hY2goKTogdm9pZCB7XG4gICAgY29uc3QgY2xvc2VzdFBsYWNlID0gdGhpcy5fZ2V0Q2xvc2VzdFBsYWNlQnlLZXlEaXJlY3Rpb24oKTtcbiAgICAvL0lmIGNsb3Nlc3RQbGFjZSBleGlzdCwgd2UgaGF2ZSB0byB1bmZvY3VzIHByZXZpb3VzZSBmb2N1c2VkIHBsYWNlXG4gICAgaWYgKGNsb3Nlc3RQbGFjZSkge1xuICAgICAgdGhpcy51bmZvY3VzUGxhY2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgLy8gT25seSB3aGVuIGtleWJvYXJkIG5hdmlnYXRpb24gaXMgdXNlZCBhbmQgY29hY2hlcyBhcmUgc2Nyb2xsZWQgYnkgYXV0byBzY3JvbGxpbmcsXG4gICAgLy8gdGhlbiB3ZSBjYW4gc2V0IHRoZSBmb2N1cyBvbiB0aGUgZmlyc3QgcGxhY2UgaW4gdGhlIGNvYWNoLlxuICAgIGlmICh0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uICYmIHRoaXMuaXNBdXRvU2Nyb2xsaW5nKSB7XG4gICAgICBpZiAoY2xvc2VzdFBsYWNlKSB7XG4gICAgICAgIHRoaXMuZm9jdXNQbGFjZUVsZW1lbnQoY2xvc2VzdFBsYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSW4gY2FzZXMgd2hlcmUgdGhlIHByZXNlbGVjdGlvbiBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgYnkgbm9ybWFsIGNsaWNraW5nIG9yIHZpYSBzY3JlZW5yZWFkZXIgdmlhIHRhYixcbiAgICAvLyB3ZSBvbmx5IGZvY3VzIHRoZSB0YWJsZSB3aXRob3V0IGRpcmVjdGx5IGZvY3VzaW5nIHRoZSBwbGFjZS5cbiAgICBlbHNlIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gc2V0IHRoZSBjdXJyU2VsZWN0ZWRQbGFjZSBoZXJlIGZvciBmdXJ0aGVyIGNvcnJlY3QgZnVuY3Rpb25pbmcgbmF2aWdhdGlvbiB2aWEgdGFiLlxuICAgICAgdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZSA9IGNsb3Nlc3RQbGFjZTtcbiAgICAgIHRoaXMuX3NldEZvY3VzVG9TZWxlY3RlZENvYWNoR3JpZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzY3JvbGxUb1NlbGVjdGVkTmF2Q29hY2goc2VsZWN0ZWROYXZDb2FjaEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXgpIHtcbiAgICAgIHRoaXMuaXNBdXRvU2Nyb2xsaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNDb2FjaEdyaWRGb2N1c2FibGUgPSB0cnVlO1xuICAgICAgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ID0gc2VsZWN0ZWROYXZDb2FjaEluZGV4O1xuICAgICAgdGhpcy5fc2V0U2Nyb2xsRGlyZWN0aW9uQnlDb2FjaEluZGV4KCk7XG5cbiAgICAgIGNvbnN0IHNjcm9sbFRvQ29hY2hQb3NYID0gdGhpcy5fZ2V0Q29hY2hTY3JvbGxQb3NpdGlvblgoKTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRDb2FjaEluZGV4U2Nyb2xsYWJsZSA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ICE9PSAtMSB8fCB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggPiAwO1xuXG4gICAgICAvLyBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gYWxsb3dzIHNjcm9sbGluZyB0byB0aGUgbmV4dCB3YWdvbiBvciBub3RcbiAgICAgIGlmIChpc1NlbGVjdGVkQ29hY2hJbmRleFNjcm9sbGFibGUgJiYgdGhpcy5faXNTY3JvbGxhYmxlVG9TZWxlY3RlZENvYWNoKCkpIHtcbiAgICAgICAgdGhpcy5jb2FjaFNjcm9sbEFyZWEuc2Nyb2xsVG8oe1xuICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICBsZWZ0OiBzY3JvbGxUb0NvYWNoUG9zWCxcbiAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBuZXcgU2Nyb2xsRGlyZWN0aW9uIGJ5IHRoZSBuZXcgZ2l2ZW4gdGFyZ2V0IGNvYWNoIGluZGV4LlxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0U2Nyb2xsRGlyZWN0aW9uQnlDb2FjaEluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuY3VyclNjcm9sbERpcmVjdGlvbiA9XG4gICAgICB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggPiB0aGlzLnNlbGVjdGVkQ29hY2hJbmRleFxuICAgICAgICA/IFNjcm9sbERpcmVjdGlvbi5yaWdodFxuICAgICAgICA6IFNjcm9sbERpcmVjdGlvbi5sZWZ0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNjcm9sbCBzdGFydCBvciBlbmQgcG9zaXRpb24gWCBmcm9tIHRoZSBzZWxlY3RlZCBjb2FjaC5cbiAgICogSW4gY2FzZSB0aGUgdXNlciBpcyBjdXJyZXRubHkgbmF2aWdhdGUgdGhyb3VnaHQgcGxhY2VzIGJ5IGtleWJvYXJkIGFuZCBnb2VzIHRvIHByZXZpb3VzIGNvYWNoLFxuICAgKiB0aGVuIHdlIHJldHVybiB0aGUgZW5kIHBvc2l0aW9uIG9mIHRoZSBjb2FjaCB0byBnZXQgY2xvc3Rlc3QgbmV4dCBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIG5leHQgZm9jdXMgcGxhY2UuXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0Q29hY2hTY3JvbGxQb3NpdGlvblgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb2FjaFRyaWdnZXJQb2ludCA9IHRoaXMudHJpZ2dlckNvYWNoUG9zaXRpb25zQ29sbGVjdGlvblt0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXhdO1xuICAgIGNvbnN0IGlzRm9jdXNQbGFjZUZyb21QcmV2aW91c0NvYWNoUG9zaXRpb24gPVxuICAgICAgdGhpcy5pc0tleWJvYXJkTmF2aWdhdGlvbiAmJlxuICAgICAgdGhpcy5jdXJyU2Nyb2xsRGlyZWN0aW9uID09PSBTY3JvbGxEaXJlY3Rpb24ubGVmdCAmJlxuICAgICAgY29hY2hUcmlnZ2VyUG9pbnQud2lkdGggPiB0aGlzLnNjcm9sbENvYWNoc0FyZWFXaWR0aDtcbiAgICByZXR1cm4gaXNGb2N1c1BsYWNlRnJvbVByZXZpb3VzQ29hY2hQb3NpdGlvblxuICAgICAgPyBjb2FjaFRyaWdnZXJQb2ludC5lbmQgLSB0aGlzLnNjcm9sbENvYWNoc0FyZWFXaWR0aFxuICAgICAgOiBjb2FjaFRyaWdnZXJQb2ludC5zdGFydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmb2N1cyBvbiB0aGUgSFRNTCB0YWJsZSAoZ3JpZCkgY2FwdGlvbiBlbGVtZW50IHNvIHRoYXQgdGhlIGhlYWRpbmcgaXMgcmVhZCBvdXQgd2hlbiB1c2luZyBhIFNjcmVlblJlYWRlci5cbiAgICovXG4gIHByaXZhdGUgX3NldEZvY3VzVG9TZWxlY3RlZENvYWNoR3JpZCgpOiB2b2lkIHtcbiAgICAvLyBXaGVuIHRoZSB1c2VyIHBlcmZvcm1zIGFuIGFjdGlvbiB0aGF0IGFmZmVjdHMgdGhlIGNvYWNoIG5hdmlnYXRpb24sIHRoZW4gdGhlIG5hdmlnYXRlZCB0YWJsZSBpcyBmb2N1c2FibGUuXG4gICAgaWYgKHRoaXMuaXNDb2FjaEdyaWRGb2N1c2FibGUpIHtcbiAgICAgIHRoaXMuaXNDb2FjaEdyaWRGb2N1c2FibGUgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGNvYWNoVGFibGVDYXB0aW9uRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJyNzYmItc3ItY29hY2gtY2FwdGlvbi0nICsgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4LFxuICAgICAgKSBhcyBIVE1MVGFibGVDYXB0aW9uRWxlbWVudDtcbiAgICAgIGlmIChjb2FjaFRhYmxlQ2FwdGlvbkVsZW1lbnQpIHtcbiAgICAgICAgY29hY2hUYWJsZUNhcHRpb25FbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgY3VycmVudCBzY3JvbGxlZCBwb3NpdGlvbiBjYW4gYmUgdXNlZCB0byBzY3JvbGwgdG8gdGhlIHNlbGVjdGVkIHdhZ29uXG4gICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIHByaXZhdGUgX2lzU2Nyb2xsYWJsZVRvU2VsZWN0ZWRDb2FjaCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyU2Nyb2xsUG9zWCA9IHRoaXMuY29hY2hTY3JvbGxBcmVhLnNjcm9sbExlZnQ7XG4gICAgY29uc3QgY29hY2hTY3JvbGxXaW5kb3dXaWR0aCA9IHRoaXMuY29hY2hTY3JvbGxBcmVhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGNvbnN0IG1heFNjcm9sbFdpZHRoQXJlYSA9IHRoaXMubWF4Q2FsY0NvYWNoc1dpZHRoIC0gY29hY2hTY3JvbGxXaW5kb3dXaWR0aDtcbiAgICBjb25zdCBjdXJyQ29hY2hUcmlnZ2VyID0gdGhpcy50cmlnZ2VyQ29hY2hQb3NpdGlvbnNDb2xsZWN0aW9uW3RoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleF07XG4gICAgY29uc3QgaXNTY3JvbGxQb3NTYW1lVG9DdXJyQ29hY2hQb3MgPVxuICAgICAgY3VyclNjcm9sbFBvc1ggPT09IHRoaXMudHJpZ2dlckNvYWNoUG9zaXRpb25zQ29sbGVjdGlvblt0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXhdLnN0YXJ0O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIChjdXJyU2Nyb2xsUG9zWCA8IG1heFNjcm9sbFdpZHRoQXJlYSB8fCBjdXJyU2Nyb2xsUG9zWCA+IGN1cnJDb2FjaFRyaWdnZXIuc3RhcnQpICYmXG4gICAgICAhaXNTY3JvbGxQb3NTYW1lVG9DdXJyQ29hY2hQb3NcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvYWNoIGluZGV4IHdoaWNoIGlzIGN1cnJlbnRseSB2aXNpYmxlIGluIHRoZSBzY3JvbGwgYXJlYVxuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHByaXZhdGUgX2dldENvYWNoSW5kZXhCeVNjcm9sbFRyaWdnZXJQb3NpdGlvbigpOiBudW1iZXIge1xuICAgIGNvbnN0IHNjcm9sbE9mZnNldFggPSB0aGlzLmNvYWNoU2Nyb2xsQXJlYS5zY3JvbGxMZWZ0ICsgdGhpcy5zY3JvbGxDb2FjaHNBcmVhV2lkdGggLyAyO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJDb2FjaFBvc2l0aW9uc0NvbGxlY3Rpb24uZmluZEluZGV4KFxuICAgICAgKGNvYWNoVHJpZ2dlcikgPT4gc2Nyb2xsT2Zmc2V0WCA+PSBjb2FjaFRyaWdnZXIuc3RhcnQgJiYgc2Nyb2xsT2Zmc2V0WCA8PSBjb2FjaFRyaWdnZXIuZW5kLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaXJzdCBwbGFjZSBvZiBjdXJyZW50IHNlbGVjdGVkIGNvYWNoIGJ5IHRhYmxlIGNlbGwgY29vcmRpbmF0ZSAwLTAgaWQuXG4gICAqIEByZXR1cm5zIFBsYWNlIG9yIG51bGxcbiAgICovXG4gIHByaXZhdGUgX2dldEZpcnN0UGxhY2VJblNlbGVjZWRDb2FjaCgpOiBQbGFjZSB8IG51bGwge1xuICAgIGxldCBmaXJzdFBsYWNlOiBQbGFjZSB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGNvYWNoID0gdGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXNbdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4XTtcbiAgICBjb25zdCBmaXJzdENlbGxJZCA9ICdjZWxsLScgKyB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggKyAnLTAtMCc7XG4gICAgY29uc3QgcGxhY2VOdW1iZXIgPVxuICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgID8ucXVlcnlTZWxlY3RvcjxTYmJTZWF0UmVzZXJ2YXRpb25TY29wZWRFbGVtZW50PihcIltjZWxsLWlkPSdcIiArIGZpcnN0Q2VsbElkICsgXCInXVwiKVxuICAgICAgICA/LnF1ZXJ5U2VsZWN0b3I8U2JiU2VhdFJlc2VydmF0aW9uUGxhY2VDb250cm9sRWxlbWVudD4oJ3NiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wnKVxuICAgICAgICA/LmdldEF0dHJpYnV0ZSgndGV4dCcpIHx8IG51bGw7XG5cbiAgICBpZiAoY29hY2ggJiYgcGxhY2VOdW1iZXIpIHtcbiAgICAgIGZpcnN0UGxhY2UgPSBjb2FjaC5wbGFjZXM/LmZpbmQoKHBsYWNlKSA9PiBwbGFjZS5udW1iZXIgPT09IHBsYWNlTnVtYmVyKSB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZmlyc3RQbGFjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUbyBnZXQgdGhlIGNvcnJlY3QgY2xvc2VzdCBwbGFjZSBvZiBjdXJyZW50IHByZXNzZWQga2V5IGFuZCB0aGUgY3VycmVudCBzZWxlY3RlZCBwbGFjZSxcbiAgICogd2UgaGF2ZSB0byBpbnZlc3RpZ2F0ZSB0aGUgY29vcmRpbmF0ZXMgb2YgZWFjaCBwbGFjZSB0byBmaW5kIHRoZSBjbG9zZXN0IHBsYWNlIG9mIHRoZSBjdXJyU2VsZWN0ZWRQbGFjZUVsZW1lbnRJZC5cbiAgICogQHBhcmFtIHByZXNzZWRLZXlcbiAgICogQHJldHVybnMgUGxhY2Ugb3IgbnVsbFxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0Q2xvc2VzdFBsYWNlQnlLZXlEaXJlY3Rpb24ocHJlc3NlZEtleT86IHN0cmluZyk6IFBsYWNlIHwgbnVsbCB7XG4gICAgY29uc3QgY29hY2ggPSB0aGlzLnNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtc1t0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXhdO1xuICAgIGxldCBjbG9zZXN0UGxhY2UgPSBudWxsO1xuICAgIGlmIChjb2FjaC5wbGFjZXMpIHtcbiAgICAgIC8vSWYgbm8gcGxhY2Ugc2V0LCB0aGVuIHdlbiB1c2UgaW5pdGlhbCB0aGUgbGVmdC10b3AgcGxhY2Ugb24gdGhlIGNvYWNoXG4gICAgICBpZiAoIXRoaXMuY3VyclNlbGVjdGVkUGxhY2VFbGVtZW50SWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEZpcnN0UGxhY2VJblNlbGVjZWRDb2FjaCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuY3VyclNlbGVjdGVkUGxhY2UpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBsYWNlIG9mIGNvYWNoLnBsYWNlcykge1xuICAgICAgICAgICAgLy8gSWYga2V5IHByZXNzZWQsIHRoZW4gd2UgdHJ5IHRvIGZpbmQgdGhlIHBsYWNlIG9mIHRoZSBjdXJyZW50IGN1cnJTY3JvbGxEaXJlY3Rpb25cbiAgICAgICAgICAgIGlmICghcHJlc3NlZEtleSkge1xuICAgICAgICAgICAgICAvL0ZpbmQgcGxhY2UgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIGNvYWNoIGJ5IHkgY29vcmRpbmF0ZS4gQ3VycmVudCBjdXJyU2Nyb2xsRGlyZWN0aW9uIGlzIFJJR0hUKVxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyU2Nyb2xsRGlyZWN0aW9uID09PSBTY3JvbGxEaXJlY3Rpb24ucmlnaHQgJiZcbiAgICAgICAgICAgICAgICBwbGFjZS5wb3NpdGlvbi55ID09PSB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlPy5wb3NpdGlvbi55ICYmXG4gICAgICAgICAgICAgICAgKCFjbG9zZXN0UGxhY2UgfHwgcGxhY2UucG9zaXRpb24ueCA8IGNsb3Nlc3RQbGFjZS5wb3NpdGlvbi54KVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjbG9zZXN0UGxhY2UgPSBwbGFjZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvL0ZpbmQgcGxhY2UgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiBjb2FjaCBieSB5IGNvb3JkaW5hdGUuIEN1cnJlbnQgY3VyclNjcm9sbERpcmVjdGlvbiBpcyBMRUZUXG4gICAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuY3VyclNjcm9sbERpcmVjdGlvbiA9PT0gU2Nyb2xsRGlyZWN0aW9uLmxlZnQgJiZcbiAgICAgICAgICAgICAgICBwbGFjZS5wb3NpdGlvbi55ID09PSB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlPy5wb3NpdGlvbi55ICYmXG4gICAgICAgICAgICAgICAgKCFjbG9zZXN0UGxhY2UgfHwgcGxhY2UucG9zaXRpb24ueCA+IGNsb3Nlc3RQbGFjZS5wb3NpdGlvbi54KVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjbG9zZXN0UGxhY2UgPSBwbGFjZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHBsYWNlLm51bWJlciAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZT8ubnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgLy9LZXkgW1JpZ2h0XSBuYXZpZ2F0aW9uLCB3ZSBjaGVjayB0aGUgcGxhY2UgY29vcmRpbmF0ZXMgb2YgdGhlIHgtYXhpcyB0byBnZXQgdGhlIHNtYWxsZXN0IGxhcmdlciB4IHBsYWNlIGNvb3JkaW5hdGUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwbGFjZVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIHByZXNzZWRLZXkgPT09IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93UmlnaHQgJiZcbiAgICAgICAgICAgICAgICAgIChwbGFjZS5wb3NpdGlvbi55ID09PSB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnkgfHxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2UucG9zaXRpb24ueSA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZS5wb3NpdGlvbi55IC0gMSkgJiZcbiAgICAgICAgICAgICAgICAgIHBsYWNlLnBvc2l0aW9uLnggPiB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnggJiZcbiAgICAgICAgICAgICAgICAgICghY2xvc2VzdFBsYWNlIHx8IHBsYWNlLnBvc2l0aW9uLnggPCBjbG9zZXN0UGxhY2UucG9zaXRpb24ueClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNsb3Nlc3RQbGFjZSA9IHBsYWNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL0tleSBbRG93bl0gbmF2aWdhdGlvbiwgd2UgY2hlY2sgdGhlIHBsYWNlIGNvb3JkaW5hdGVzIG9mIHRoZSB5LWF4aXMgdG8gZ2V0IHRoZSBzbWFsbGVzdCBsYXJnZXIgeSBwbGFjZSBjb29yZGluYXRlIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGxhY2VcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIHByZXNzZWRLZXkgPT09IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93RG93biAmJlxuICAgICAgICAgICAgICAgICAgKHBsYWNlLnBvc2l0aW9uLnggPT09IHRoaXMuY3VyclNlbGVjdGVkUGxhY2UucG9zaXRpb24ueCB8fFxuICAgICAgICAgICAgICAgICAgICBwbGFjZS5wb3NpdGlvbi54ID09PSB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnggKyAxKSAmJlxuICAgICAgICAgICAgICAgICAgcGxhY2UucG9zaXRpb24ueSA+IHRoaXMuY3VyclNlbGVjdGVkUGxhY2UucG9zaXRpb24ueSAmJlxuICAgICAgICAgICAgICAgICAgKCFjbG9zZXN0UGxhY2UgfHwgcGxhY2UucG9zaXRpb24ueSA8IGNsb3Nlc3RQbGFjZS5wb3NpdGlvbi55KVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY2xvc2VzdFBsYWNlID0gcGxhY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vS2V5IFtMZWZ0XSBuYXZpZ2F0aW9uLCB3ZSBjaGVjayB0aGUgcGxhY2UgY29vcmRpbmF0ZXMgb2YgdGhlIHgtYXhpcyB0byBnZXQgdGhlIGdyZWF0ZXN0IHNtYWxsZXIgeCBwbGFjZSBjb29yZGluYXRlIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGxhY2VcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIHByZXNzZWRLZXkgPT09IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93TGVmdCAmJlxuICAgICAgICAgICAgICAgICAgKHBsYWNlLnBvc2l0aW9uLnkgPT09IHRoaXMuY3VyclNlbGVjdGVkUGxhY2UucG9zaXRpb24ueSB8fFxuICAgICAgICAgICAgICAgICAgICBwbGFjZS5wb3NpdGlvbi55ID09PSB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlLnBvc2l0aW9uLnkgKyAxKSAmJlxuICAgICAgICAgICAgICAgICAgcGxhY2UucG9zaXRpb24ueCA8IHRoaXMuY3VyclNlbGVjdGVkUGxhY2UucG9zaXRpb24ueCAmJlxuICAgICAgICAgICAgICAgICAgKCFjbG9zZXN0UGxhY2UgfHwgcGxhY2UucG9zaXRpb24ueCA+IGNsb3Nlc3RQbGFjZS5wb3NpdGlvbi54KVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY2xvc2VzdFBsYWNlID0gcGxhY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vS2V5IFtVcF0gbmF2aWdhdGlvbiwgd2UgY2hlY2sgdGhlIHBsYWNlIGNvb3JkaW5hdGVzIG9mIHRoZSB5LWF4aXMgdG8gZ2V0IHRoZSBncmVhdGVzdCBzbWFsbGVyIHkgcGxhY2UgY29vcmRpbmF0ZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHBsYWNlXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICBwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd1VwICYmXG4gICAgICAgICAgICAgICAgICAocGxhY2UucG9zaXRpb24ueCA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZS5wb3NpdGlvbi54IHx8XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlLnBvc2l0aW9uLnggPT09IHRoaXMuY3VyclNlbGVjdGVkUGxhY2UucG9zaXRpb24ueCAtIDEpICYmXG4gICAgICAgICAgICAgICAgICBwbGFjZS5wb3NpdGlvbi55IDwgdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZT8ucG9zaXRpb24ueSAmJlxuICAgICAgICAgICAgICAgICAgKCFjbG9zZXN0UGxhY2UgfHwgcGxhY2UucG9zaXRpb24ueSA+IGNsb3Nlc3RQbGFjZS5wb3NpdGlvbi55KVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY2xvc2VzdFBsYWNlID0gcGxhY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbG9zZXN0UGxhY2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgZm9jdXNQbGFjZUVsZW1lbnQocGxhY2U6IFBsYWNlIHwgbnVsbCwgY29hY2hJbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudW5mb2N1c1BsYWNlRWxlbWVudCgpO1xuICAgIGlmIChwbGFjZSkge1xuICAgICAgdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZSA9IHBsYWNlO1xuICAgICAgaWYgKGNvYWNoSW5kZXgpIHtcbiAgICAgICAgdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4ID0gY29hY2hJbmRleDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc2V0Q3VyclNlbGVjdGVkUGxhY2VFbGVtZW50SWQocGxhY2UpO1xuXG4gICAgICBjb25zdCBzZWxlY3RlZFBsYWNlRWxlbWVudCA9IHRoaXMuX2dldFBsYWNlSHRtbEVsZW1lbnQoKTtcbiAgICAgIGlmIChzZWxlY3RlZFBsYWNlRWxlbWVudCkge1xuICAgICAgICBzZWxlY3RlZFBsYWNlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2tleWZvY3VzJywgJ2ZvY3VzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVuZm9jdXNQbGFjZUVsZW1lbnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQbGFjZUVsZW1lbnQgPSB0aGlzLl9nZXRQbGFjZUh0bWxFbGVtZW50KCk7XG4gICAgaWYgKHNlbGVjdGVkUGxhY2VFbGVtZW50KSB7XG4gICAgICBzZWxlY3RlZFBsYWNlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2tleWZvY3VzJywgJ3VuZm9jdXMnKTtcbiAgICAgIHRoaXMuX3NldEN1cnJTZWxlY3RlZFBsYWNlRWxlbWVudElkKG51bGwpO1xuICAgICAgdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldENhbGN1bGF0ZWREaW1lbnNpb24oXG4gICAgZWxlbWVudERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgICBjb2FjaERpbWVuc2lvbj86IEVsZW1lbnREaW1lbnNpb24sXG4gICAgaXNPcmlnaW5IZWlnaHQ/OiBib29sZWFuLFxuICAgIGlzU3RyZXRjaEhlaWdodD86IGJvb2xlYW4sXG4gICk6IEVsZW1lbnREaW1lbnNpb24ge1xuICAgIGlmIChjb2FjaERpbWVuc2lvbiAmJiAhaXNPcmlnaW5IZWlnaHQpIHtcbiAgICAgIGVsZW1lbnREaW1lbnNpb24uaCArPSB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogMjtcbiAgICB9XG5cbiAgICBpZiAoaXNTdHJldGNoSGVpZ2h0KSB7XG4gICAgICBlbGVtZW50RGltZW5zaW9uLmggKz0gdGhpcy5jb2FjaEJvcmRlck9mZnNldDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdzogdGhpcy5iYXNlR3JpZFNpemUgKiBlbGVtZW50RGltZW5zaW9uLncsXG4gICAgICBoOiB0aGlzLmJhc2VHcmlkU2l6ZSAqIGVsZW1lbnREaW1lbnNpb24uaCxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICBlbGVtZW50UG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbixcbiAgICBlbGVtZW50RGltZW5zaW9uPzogRWxlbWVudERpbWVuc2lvbixcbiAgICBjb2FjaERpbWVuc2lvbj86IEVsZW1lbnREaW1lbnNpb24sXG4gICAgaXNPcmlnaW5IZWlnaHQ/OiBib29sZWFuLFxuICApOiBFbGVtZW50UG9zaXRpb24ge1xuICAgIGlmIChjb2FjaERpbWVuc2lvbiAmJiBlbGVtZW50RGltZW5zaW9uKSB7XG4gICAgICBjb25zdCBlbmRQb3NIZWlnaHQgPSBpc09yaWdpbkhlaWdodFxuICAgICAgICA/IGNvYWNoRGltZW5zaW9uLmhcbiAgICAgICAgOiBjb2FjaERpbWVuc2lvbi5oICsgdGhpcy5jb2FjaEJvcmRlck9mZnNldDtcbiAgICAgIC8vSWYgdGhlIG9yaWdpbmFsIGVsZW1lbnQgaXMgcG9zaXRpb25lZCBhdCB0aGUgdG9wIG9yIGJvdHRvbSBvZiB0aGUgY29hY2gsIHdlIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlIFkgY29vcmRpbmF0ZSB3aXRoIHRoZSBhZGRpdGlvbmFsIGJvcmRlciBwYWRkaW5nXG4gICAgICBpZiAoZWxlbWVudFBvc2l0aW9uLnkgPT09IDApIHtcbiAgICAgICAgZWxlbWVudFBvc2l0aW9uLnkgLT0gdGhpcy5jb2FjaEJvcmRlck9mZnNldDtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudFBvc2l0aW9uLnkgKyBlbGVtZW50RGltZW5zaW9uLmggPT09IGVuZFBvc0hlaWdodCkge1xuICAgICAgICBlbGVtZW50UG9zaXRpb24ueSArPSB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB4OiB0aGlzLmJhc2VHcmlkU2l6ZSAqIGVsZW1lbnRQb3NpdGlvbi54LFxuICAgICAgeTogdGhpcy5iYXNlR3JpZFNpemUgKiBlbGVtZW50UG9zaXRpb24ueSxcbiAgICAgIHo6IGVsZW1lbnRQb3NpdGlvbi56LFxuICAgIH07XG4gIH1cblxuICAvLyBIYW5kbGluZyBmb3IgVGFiIG5hdmlnYXRpb24gaWYgYW4gcGxhY2UgaXMgc2VsZWN0ZWQgaW5zaWRlIHRoZSBjb2FjaC5cbiAgLy8gVGhpcyBjb250cm9scyB0aGUgZm9jdXNlZCBjb2FjaCBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdGVkIGNvYWNoLlxuICBwcml2YXRlIF9uYXZpZ2F0ZUNvYWNoTmF2aWdhdGlvbkJ5S2V5Ym9hcmQodGFiRGlyZWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyRm9jdXNJbmRleCA9XG4gICAgICB0aGlzLmZvY3VzZWRDb2FjaEluZGV4ID09PSAtMVxuICAgICAgICA/IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCA9PT0gLTFcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleFxuICAgICAgICA6IHRoaXMuZm9jdXNlZENvYWNoSW5kZXg7XG4gICAgLy8gQ2hlY2sgbmV4dCBvciBwcmV2IHRhYiBpcyBwcmVzc2VkLCB0aGVuIHdlIG5lZWQgdG8gZmluZCB0aGUgbmV4dCBhdmFpbGFibGUgY29hY2ggaW5kZXggdGhhdCBzaG91bGQgcmVjZWl2ZSB0aGUgZm9jdXNcbiAgICBjb25zdCBuZXdGb2N1c2FibGVJbmRleDogbnVtYmVyID1cbiAgICAgIHRhYkRpcmVjdGlvbiA9PT0gJ05FWFRfVEFCJ1xuICAgICAgICA/IHRoaXMuZ2V0TmV4dEF2YWlsYWJsZUNvYWNoSW5kZXgoY3VyckZvY3VzSW5kZXgpXG4gICAgICAgIDogdGhpcy5nZXRQcmV2QXZhaWxhYmxlQ29hY2hJbmRleChjdXJyRm9jdXNJbmRleCk7XG5cbiAgICAvLyBJZiB0aGUgY3VyckZvY3VzSW5kZXggZXF1YWxzIHRoZSBuZXdGb2N1c2FibGVJbmRleCB0aGVuIHdlIGhhdmUgcmVhY2hlZCB0aGUgZmlyc3Qgb3IgbGFzdCB0YWJhYmxlIG5hdmlnYXRpb24gY29hY2ggRWxlbWVudCBhbmQgd2UgaGF2ZSB0byB0aGUgc2V0IHRoZSBmb2N1cyBtYW51YWwgdG8gdGhlIGZpcnN0VGFiRWxlbWVudCBvciBsYXN0VGFiRWxlbWVudC5cbiAgICBpZiAoY3VyckZvY3VzSW5kZXggPT09IG5ld0ZvY3VzYWJsZUluZGV4KSB7XG4gICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ID0gLTE7XG4gICAgICB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggPSAtMTtcbiAgICAgIHRoaXMuc2VhdFJlc2VydmF0aW9uV2l0aG91dE5hdmlnYXRpb25IYXNGb2N1cyA9IGZhbHNlO1xuXG4gICAgICBpZiAodGFiRGlyZWN0aW9uID09PSAnTkVYVF9UQUInKSB0aGlzLmxhc3RUYWJFbGVtZW50LmZvY3VzKCk7XG4gICAgICBlbHNlIHRoaXMuZmlyc3RUYWJFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNOYXZpZ2F0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFBsYWNlRWxlbWVudCA9IHRoaXMuX2dldFBsYWNlSHRtbEVsZW1lbnQoKTtcbiAgICAgIGNvbnN0IHBsYWNlSW5Db2FjaEhhc0ZvY3VzID0gc2VsZWN0ZWRQbGFjZUVsZW1lbnRcbiAgICAgICAgPyBzZWxlY3RlZFBsYWNlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2tleWZvY3VzJykgPT09ICdmb2N1cydcbiAgICAgICAgOiBmYWxzZTtcblxuICAgICAgLy8gSWYgd2UgdGFiIGJhY2sgKFBSRVZfVEFCKSBhbmQgdGhlIGZvY3VzIGlzIGN1cnJlbnRseSBvbiBwbGFjZSxcbiAgICAgIC8vIHdlIHJlbW92ZSB0aGUgc2VsZWN0ZWQgc3RhdGUgZnJvbSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG5hdmlnYXRpb24gY29hY2ggYW5kIG9ubHkgc2V0IHRoZSBmb2N1cyBzdGF0dXMgdG8gaXRcbiAgICAgIGlmICh0YWJEaXJlY3Rpb24gPT09ICdQUkVWX1RBQicgJiYgdGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPT09IGN1cnJGb2N1c0luZGV4KSB7XG4gICAgICAgIGlmIChwbGFjZUluQ29hY2hIYXNGb2N1cykge1xuICAgICAgICAgIHRoaXMuZm9jdXNlZENvYWNoSW5kZXggPSBjdXJyRm9jdXNJbmRleDtcbiAgICAgICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvY3VzZWRDb2FjaEluZGV4ID0gbmV3Rm9jdXNhYmxlSW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIE9ubHkgc2V0cyB0aGUgZm9jdXMgb24gdGhlIG5ldyBuYXZpZ2F0aW9uIGNvYWNoXG4gICAgICBlbHNlIGlmIChuZXdGb2N1c2FibGVJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZENvYWNoSW5kZXggPSBuZXdGb2N1c2FibGVJbmRleDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZENvYWNoSW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPSBuZXdGb2N1c2FibGVJbmRleDtcbiAgICAgICAgLy8gSWYgYW55IHBsYWNlIHdhcyBmb2N1c2VkIGluIGNvYWNoLCBzbyB3ZSBzZXQgZm9jdXNlZCBhZ2FpblxuICAgICAgICBpZiAocGxhY2VJbkNvYWNoSGFzRm9jdXMpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzUGxhY2VFbGVtZW50KHRoaXMuY3VyclNlbGVjdGVkUGxhY2UpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5vIHBsYWNlIHdhcyBzZWxlY3RlZCwgdGhlbiB3ZSBzZWxlY3QgdGhlIGNvYWNoIGdyaWRcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy5pc0NvYWNoR3JpZEZvY3VzYWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fc2V0Rm9jdXNUb1NlbGVjdGVkQ29hY2hHcmlkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgbm8gbmF2aWdhdGlvbiBleGlzdCwgd2Ugc2Nyb2xsIGRpcmVjdGx5IHRvIHRoZSBuZXh0IHRhYmFibGUgY29hY2hcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKG5ld0ZvY3VzYWJsZUluZGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0ZVRvUGxhY2VCeUtleWJvYXJkKHByZXNzZWRLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gZmFsc2U7XG4gICAgdGhpcy5pc0tleWJvYXJkTmF2aWdhdGlvbiA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5mb2N1c2VkQ29hY2hJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZm9jdXNlZENvYWNoSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucHJldmVudFBsYWNlQ2xpY2spIHtcbiAgICAgIGNvbnN0IGZpbmRDbG9zZXN0UGxhY2UgPSB0aGlzLl9nZXRDbG9zZXN0UGxhY2VCeUtleURpcmVjdGlvbihwcmVzc2VkS2V5KTtcbiAgICAgIGlmIChmaW5kQ2xvc2VzdFBsYWNlKSB7XG4gICAgICAgIHRoaXMuZm9jdXNQbGFjZUVsZW1lbnQoZmluZENsb3Nlc3RQbGFjZSk7XG4gICAgICB9XG4gICAgICAvLyBObyBjbG9zZXN0IHBsYWNlIGZvdW5kIGJ5IGtleSBuYXZpZ2F0aW9uXG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXNzZWRLZXkgPT09IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93UmlnaHQgfHxcbiAgICAgICAgICBwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd0xlZnQgfHxcbiAgICAgICAgICAodGhpcy5hbGlnblZlcnRpY2FsICYmXG4gICAgICAgICAgICAocHJlc3NlZEtleSA9PT0gdGhpcy5rZXlib2FyZE5hdmlnYXRpb25FdmVudHMuQXJyb3dVcCB8fFxuICAgICAgICAgICAgICBwcmVzc2VkS2V5ID09PSB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkV2ZW50cy5BcnJvd0Rvd24pKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBDaGVjayB0aGUgY3VycmVudCBwcmVzc2VkIGtleSB0byBnZXQgdGhlIG5leHQgYXZhaWxhYmxlIGNvYWNoIGluZGV4XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRDb2FjaEluZGV4ID1cbiAgICAgICAgICAgIHByZXNzZWRLZXkgPT09IHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnRzLkFycm93UmlnaHRcbiAgICAgICAgICAgICAgPyB0aGlzLmdldE5leHRBdmFpbGFibGVDb2FjaEluZGV4KClcbiAgICAgICAgICAgICAgOiB0aGlzLmdldFByZXZBdmFpbGFibGVDb2FjaEluZGV4KCk7XG5cbiAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWROYXZDb2FjaChuZXdTZWxlY3RlZENvYWNoSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldE5leHRBdmFpbGFibGVDb2FjaEluZGV4KGN1cnJlbnRJbmRleD86IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IGN1cnJlbnRJbmRleCA/PyB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXg7XG4gICAgcmV0dXJuIHN0YXJ0SW5kZXggPCB0aGlzLnNlYXRSZXNlcnZhdGlvbi5jb2FjaEl0ZW1zLmxlbmd0aCAtIDEgPyBzdGFydEluZGV4ICsgMSA6IHN0YXJ0SW5kZXg7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UHJldkF2YWlsYWJsZUNvYWNoSW5kZXgoY3VycmVudEluZGV4PzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gY3VycmVudEluZGV4ID8/IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleDtcbiAgICByZXR1cm4gc3RhcnRJbmRleCA+IDAgPyBzdGFydEluZGV4IC0gMSA6IHN0YXJ0SW5kZXg7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlU2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMocGxhY2VTZWxlY3Rpb246IFBsYWNlU2VsZWN0aW9uKTogdm9pZCB7XG4gICAgLy8gQWRkIHNlbGVjdGVkIHBsYWNlIHRvIHNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzXG4gICAgaWYgKHBsYWNlU2VsZWN0aW9uLnN0YXRlID09PSAnU0VMRUNURUQnKSB7XG4gICAgICBjb25zdCBzZWF0UmVzZXJ2YXRpb25TZWxlY3Rpb24gPSB0aGlzLl9nZXRTZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbihwbGFjZVNlbGVjdGlvbik7XG4gICAgICBpZiAoc2VhdFJlc2VydmF0aW9uU2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMucHVzaChzZWF0UmVzZXJ2YXRpb25TZWxlY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZW1vdmUgc2VsZWN0ZWQgcGxhY2UgZnJvbSBzZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlc1xuICAgIGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyA9IHRoaXMuc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMuZmlsdGVyKFxuICAgICAgICAoX3NlbGVjdGVkUGxhY2UpID0+IF9zZWxlY3RlZFBsYWNlLmlkICE9PSBwbGFjZVNlbGVjdGlvbi5pZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2tzIHdoZXRoZXIgbWF4UmVzZXJ2YXRpb24gaXMgYWN0aXZhdGVkIGFuZCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2VsZWN0ZWQgcGxhY2VzIGlzIHJlYWNoZWRcbiAgICBpZiAodGhpcy5tYXhSZXNlcnZhdGlvbnMgJiYgdGhpcy5zZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcy5sZW5ndGggPiB0aGlzLm1heFJlc2VydmF0aW9ucykge1xuICAgICAgdGhpcy5fcmVzZXRBbGxQbGFjZVNlbGVjdGlvbnMocGxhY2VTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8vIEVtaXRzIHRoZSBzZWF0IHJlc2VydmF0aW9uIHBsYWNlIHNlbGVjdGlvblxuICAgIHRoaXMuc2VsZWN0ZWRQbGFjZXMuZW1pdCh0aGlzLnNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVDdXJyZW50U2VsZWN0ZWRQbGFjZUluQ29hY2gocGxhY2VTZWxlY3Rpb246IFBsYWNlU2VsZWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgY29hY2hJbmRleCA9IHBsYWNlU2VsZWN0aW9uLmNvYWNoSW5kZXg7XG4gICAgY29uc3QgcGxhY2UgPSB0aGlzLnNlYXRSZXNlcnZhdGlvbi5jb2FjaEl0ZW1zW2NvYWNoSW5kZXhdLnBsYWNlcz8uZmluZChcbiAgICAgIChwbGFjZSkgPT4gcGxhY2UubnVtYmVyID09IHBsYWNlU2VsZWN0aW9uLm51bWJlcixcbiAgICApO1xuXG4gICAgaWYgKCFwbGFjZSkgcmV0dXJuO1xuICAgIHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCA9IGNvYWNoSW5kZXg7XG4gICAgdGhpcy5jdXJyU2VsZWN0ZWRQbGFjZSA9IHBsYWNlO1xuICAgIGlmICh0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggIT09IHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRTZWxlY3RlZENvYWNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0Q3VyclNlbGVjdGVkUGxhY2VFbGVtZW50SWQocGxhY2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUN1cnJlbnRTZWxlY3RlZENvYWNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ID0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4O1xuICAgIHRoaXMuZm9jdXNlZENvYWNoSW5kZXggPSAtMTtcbiAgICBjb25zdCBjb2FjaFNlbGVjdGlvbiA9IHRoaXMuX2dldFNlYXRSZXNlcnZhdGlvbkNvYWNoU2VsZWN0aW9uKHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4KTtcbiAgICBpZiAoY29hY2hTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2FjaC5lbWl0KGNvYWNoU2VsZWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6YXRpb24gb2YgU2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24gQXJyYXkgYmFzZWQgb24gdGhlIHRyYW5zZmVycmVkIHBsYWNlc1xuICAgKiB0aGF0IGhhdmUgdGhlIHN0YXRlIFNFTEVDVEVEIHdpdGhpbiB0aGUgc2VhdFJlc2VydmF0aW9uIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhdFJlc2VydmF0aW9uLmNvYWNoSXRlbXMubWFwKChjb2FjaDogQ29hY2hJdGVtLCBjb2FjaEluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvYWNoLnBsYWNlc1xuICAgICAgICA/LmZpbHRlcigocGxhY2UpID0+IHBsYWNlLnN0YXRlID09PSAnU0VMRUNURUQnKVxuICAgICAgICA/LmZvckVhY2goKHBsYWNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJlc2VsZWN0ZWRQbGFjZVNlbGVjdGlvbjogUGxhY2VTZWxlY3Rpb24gPSBtYXBQbGFjZUluZm9zVG9QbGFjZVNlbGVjdGlvbihcbiAgICAgICAgICAgIHBsYWNlLFxuICAgICAgICAgICAgY29hY2hJbmRleCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uOiBTZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbiB8IG51bGwgPVxuICAgICAgICAgICAgdGhpcy5fZ2V0U2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24ocHJlc2VsZWN0ZWRQbGFjZVNlbGVjdGlvbik7XG4gICAgICAgICAgaWYgKHNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uKVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcy5wdXNoKHNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIHNlbGVjdGVkIHBsYWNlcyB3aWxsIGJlIHJlc2V0IG9yIHRoZSBjdXJyZW50U2VsZWN0ZWRQbGFjZSB3YXMgZ2l2ZW4sIHRoZW4gd2UgcmVzZXQgYWxsIGV4Y2VwdCBjdXJyZW50U2VsZWN0ZWRQbGFjZVxuICAgKiBAcGFyYW0gY3VyclNlbGVjdGVkUGxhY2VcbiAgICovXG4gIHByaXZhdGUgX3Jlc2V0QWxsUGxhY2VTZWxlY3Rpb25zKGN1cnJTZWxlY3RlZFBsYWNlPzogUGxhY2VTZWxlY3Rpb24pOiB2b2lkIHtcbiAgICAvL0ZpbmQgYWxsIHBsYWNlcyB0byBiZSBuZWVkZWQgdW5zZWxlY3RcbiAgICBmb3IgKGNvbnN0IHBsYWNlU2VsZWN0aW9uIG9mIHRoaXMuc2VsZWN0ZWRTZWF0UmVzZXJ2YXRpb25QbGFjZXMpIHtcbiAgICAgIGlmICghY3VyclNlbGVjdGVkUGxhY2UgfHwgY3VyclNlbGVjdGVkUGxhY2UuaWQgIT09IHBsYWNlU2VsZWN0aW9uLmlkKSB7XG4gICAgICAgIGNvbnN0IHBsYWNlRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQocGxhY2VTZWxlY3Rpb24uaWQpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBwbGFjZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdGF0ZScsICdGUkVFJyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vUmVtb3ZlcyBhbGwgc2VsZWN0ZWQgcGxhY2VzIGV4Y2VwdCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHBsYWNlXG4gICAgaWYgKGN1cnJTZWxlY3RlZFBsYWNlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzID0gdGhpcy5zZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcy5maWx0ZXIoXG4gICAgICAgIChfc2VsZWN0ZWRQbGFjZSkgPT4gX3NlbGVjdGVkUGxhY2UuaWQgPT09IGN1cnJTZWxlY3RlZFBsYWNlLmlkLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFNlYXRSZXNlcnZhdGlvblBsYWNlU2VsZWN0aW9uKFxuICAgIGN1cnJTZWxlY3RlZFBsYWNlOiBQbGFjZVNlbGVjdGlvbixcbiAgKTogU2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24gfCBudWxsIHtcbiAgICBjb25zdCBjb2FjaCA9IHRoaXMuc2VhdFJlc2VydmF0aW9uLmNvYWNoSXRlbXNbY3VyclNlbGVjdGVkUGxhY2UuY29hY2hJbmRleF07XG4gICAgY29uc3QgcGxhY2UgPSBjb2FjaC5wbGFjZXM/LmZpbmQoKHBsYWNlKSA9PiBwbGFjZS5udW1iZXIgPT09IGN1cnJTZWxlY3RlZFBsYWNlLm51bWJlcik7XG5cbiAgICByZXR1cm4gcGxhY2VcbiAgICAgID8gbWFwUGxhY2VBbmRDb2FjaFRvU2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24ocGxhY2UsIGNvYWNoLCBjdXJyU2VsZWN0ZWRQbGFjZS5jb2FjaEluZGV4KVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2VhdFJlc2VydmF0aW9uQ29hY2hTZWxlY3Rpb24oXG4gICAgY29hY2hJbmRleDogbnVtYmVyLFxuICApOiBTZWF0UmVzZXJ2YXRpb25Db2FjaFNlbGVjdGlvbiB8IG51bGwge1xuICAgIGlmICghdGhpcy5zZWF0UmVzZXJ2YXRpb24uY29hY2hJdGVtc1tjb2FjaEluZGV4XSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBjb2FjaCA9IHRoaXMuc2VhdFJlc2VydmF0aW9uLmNvYWNoSXRlbXNbY29hY2hJbmRleF07XG4gICAgcmV0dXJuIG1hcENvYWNoSW5mb3NUb0NvYWNoU2VsZWN0aW9uKGNvYWNoSW5kZXgsIGNvYWNoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldEN1cnJTZWxlY3RlZFBsYWNlRWxlbWVudElkKHBsYWNlOiBQbGFjZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAocGxhY2UpIHtcbiAgICAgIHRoaXMuY3VyclNlbGVjdGVkUGxhY2VFbGVtZW50SWQgPVxuICAgICAgICAnc2VhdC1yZXNlcnZhdGlvbl9fcGxhY2UtYnV0dG9uLScgKyB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXggKyAnLScgKyBwbGFjZS5udW1iZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VyclNlbGVjdGVkUGxhY2VFbGVtZW50SWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHNlbGVjdGVkIHBsYWNlIEhUTUwgZWxlbWVudCBieSBnaXZlbiBwbGFjZU51bWJlciBhbmQgY29hY2hJbmRleC5cbiAgICogSWYgYm90aCBkb2VzbnQgZXhpc3QsIHdlIHRyeSB0byByZXR1cm4gdGhlIHBsYWNlIEhUTUwgZWxlbWVudCBieSB0aGUgX2N1cnJlbnRTZWxlY3RlZFBsYWNlRWxlbWVudElkXG4gICAqIEBwYXJhbSBwbGFjZU51bWJlciBvcHRpb25hbCBhcyBzdHJpbmdcbiAgICogQHBhcmFtIGNvYWNoSW5kZXggb3B0aW9uYWwgYXMgc3RyaW5nXG4gICAqIEByZXR1cm5zIEhUTUxFbGVtZW50IG9yIG51bGxcbiAgICovXG4gIHByaXZhdGUgX2dldFBsYWNlSHRtbEVsZW1lbnQocGxhY2VOdW1iZXI/OiBzdHJpbmcsIGNvYWNoSW5kZXg/OiBudW1iZXIpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJDb2FjaEluZGV4ID0gY29hY2hJbmRleCA/IGNvYWNoSW5kZXggOiB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXg7XG4gICAgY29uc3QgY29hY2hQbGFjZU51bWJlcklkID0gcGxhY2VOdW1iZXJcbiAgICAgID8gJ3NlYXQtcmVzZXJ2YXRpb25fX3BsYWNlLWJ1dHRvbi0nICsgY3VyckNvYWNoSW5kZXggKyAnLScgKyBwbGFjZU51bWJlclxuICAgICAgOiB0aGlzLmN1cnJTZWxlY3RlZFBsYWNlRWxlbWVudElkO1xuICAgIHJldHVybiBjb2FjaFBsYWNlTnVtYmVySWQgPyB0aGlzLnNoYWRvd1Jvb3Q/LmdldEVsZW1lbnRCeUlkKGNvYWNoUGxhY2VOdW1iZXJJZCkgfHwgbnVsbCA6IG51bGw7XG4gIH1cblxuICAvL1NldCB0aGUgdmVydGljYWwgb2Zmc2V0XG4gIHByaXZhdGUgX3NldFZlcnRpY2FsQWxpZ25tZW50T2Zmc2V0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VhdFJlc2VydmF0aW9uV3JhcHBlckVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICcuc2JiLXNyX193cmFwcGVyJyxcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoc2VhdFJlc2VydmF0aW9uV3JhcHBlckVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgc2VhdFJlc2VydmF0aW9uVmVydGljYWxPZmZzZXQgPVxuICAgICAgICAgIHNlYXRSZXNlcnZhdGlvbldyYXBwZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi12ZXJ0aWNhbC1vZmZzZXQnLFxuICAgICAgICAgIGAke3NlYXRSZXNlcnZhdGlvblZlcnRpY2FsT2Zmc2V0fXB4YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNjcm9sbERpcmVjdGlvbiIsIlNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IiwicGxhY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBd0JBLElBQUs7QUFBQSxDQUFMLFNBQUtBLGtCQUFlO0FBQ2xCQSxtQkFBQSxPQUFBLElBQUE7QUFDQUEsbUJBQUEsTUFBQSxJQUFBO0FBQ0YsR0FISyxvQkFBQSxrQkFBZSxDQUFBLEVBQUE7SUFhUCw4QkFBMEIsTUFBQTs7b0JBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBbkMsU0FBQSxtQkFBbUMsWUFBVTtBQUFBOztBQVF4RDtBQUtBO0FBS0E7QUFLQTtBQUtBO0FBS0E7QUFLQTtBQUVTO0FBQ0E7QUFqQ08seUJBQUEsbUNBQUEsa0JBQUEsTUFBQSwrQkFBbUMsSUFBSztBQUt4Qyx5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLGtDQUFBLEdBQUEsa0JBQUEsTUFBQSw2QkFBeUIsSUFBSTtBQUs3Qix5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLGdDQUFBLEdBQUEsa0JBQUEsTUFBQSw2QkFBeUIsS0FBSztBQUs5Qix5QkFBQSxpQ0FBQSxrQkFBQSxNQUFBLGdDQUFBLEdBQUEsa0JBQUEsTUFBQSw0QkFBdUIsRUFBRTtBQUt6Qix5QkFBQSwyQkFBQSxrQkFBQSxNQUFBLCtCQUFBLEdBQUEsa0JBQUEsTUFBQSxzQkFBaUIsSUFBSztBQUt0Qix5QkFBQSxvQ0FBQSxrQkFBQSxNQUFBLHlCQUFBLEdBQUEsa0JBQUEsTUFBQSwrQkFBMEIsSUFBSztBQUsvQix5QkFBQSxzQ0FBQSxrQkFBQSxNQUFBLGtDQUFBLEdBQUEs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
@@ -1 +1 @@
1
- {"version":3,"file":"seat-reservation.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/seat-reservation/seat-reservation/seat-reservation.component.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,KAAK,EAMV,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGhF,OAAO,+CAA+C,CAAC;AACvD,OAAO,6BAA6B,CAAC;AACrC,OAAO,gCAAgC,CAAC;AACxC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,qEAAqE,CAAC;AAC7E,OAAO,8BAA8B,CAAC;AAEtC;;;;;GAKG;AACH,qBAEM,yBAA0B,SAAQ,0BAA0B;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,wEAAwE;IACxE,SACyB,eAAe,EAAE,eAAe,CAAS;IAElE,sEAAsE;IACtE,SAEyB,aAAa,EAAE,OAAO,CAAQ;IAEvD,kGAAkG;IAClG,SAEyB,aAAa,EAAE,OAAO,CAAS;IAExD,iDAAiD;IACjD,SAEyB,eAAe,EAAE,MAAM,CAAS;IAEzD,2CAA2C;IAC3C,SAEyB,iBAAiB,EAAE,OAAO,CAAS;IAE5D,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE9C,OAAO,CAAC,gBAAgB,CAQtB;IAEF,OAAO,CAAC,2BAA2B,CAAkB;cAElC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAgBzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAK3D,MAAM,IAAI,cAAc,GAAG,IAAI;IAKlD,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,uCAAuC;IAwC/C,OAAO,CAAC,iBAAiB;IAqCzB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,wBAAwB;IA+BhC,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,yBAAyB;IA2EjC,OAAO,CAAC,4BAA4B;IA0CpC,OAAO,CAAC,2BAA2B;IAyCnC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,8BAA8B;CAyBvC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,sBAAsB,EAAE,yBAAyB,CAAC;KACnD;CACF"}
1
+ {"version":3,"file":"seat-reservation.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/seat-reservation/seat-reservation/seat-reservation.component.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,KAAK,EAMV,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGhF,OAAO,+CAA+C,CAAC;AACvD,OAAO,6BAA6B,CAAC;AACrC,OAAO,gCAAgC,CAAC;AACxC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yCAAyC,CAAC;AACjD,OAAO,+BAA+B,CAAC;AAEvC;;;;;GAKG;AACH,qBAEM,yBAA0B,SAAQ,0BAA0B;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,wEAAwE;IACxE,SACyB,eAAe,EAAE,eAAe,CAAS;IAElE,sEAAsE;IACtE,SAEyB,aAAa,EAAE,OAAO,CAAQ;IAEvD,kGAAkG;IAClG,SAEyB,aAAa,EAAE,OAAO,CAAS;IAExD,iDAAiD;IACjD,SAEyB,eAAe,EAAE,MAAM,CAAS;IAEzD,2CAA2C;IAC3C,SAEyB,iBAAiB,EAAE,OAAO,CAAS;IAE5D,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE9C,OAAO,CAAC,gBAAgB,CAQtB;IAEF,OAAO,CAAC,2BAA2B,CAAkB;cAElC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAgBzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAK3D,MAAM,IAAI,cAAc,GAAG,IAAI;IAKlD,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,uCAAuC;IAwC/C,OAAO,CAAC,iBAAiB;IAqCzB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,wBAAwB;IA+BhC,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,yBAAyB;IA2EjC,OAAO,CAAC,4BAA4B;IA0CpC,OAAO,CAAC,2BAA2B;IAyCnC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,8BAA8B;CAyBvC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,sBAAsB,EAAE,yBAAyB,CAAC;KACnD;CACF"}
@@ -18,8 +18,8 @@ import "@sbb-esta/lyne-elements/screen-reader-only.js";
18
18
  import "../seat-reservation-area.js";
19
19
  import "../seat-reservation-graphic.js";
20
20
  import "../seat-reservation-place-control.js";
21
- import "../seat-reservation-navigation/seat-reservation-navigation-coach.js";
22
- import "./seat-reservation-scoped/seat-reservation-scoped.component.js";
21
+ import "../seat-reservation-navigation-coach.js";
22
+ import "../seat-reservation-scoped.js";
23
23
  const style = css`*,
24
24
  ::before,
25
25
  ::after {
@@ -605,4 +605,4 @@ let SbbSeatReservationElement = (() => {
605
605
  export {
606
606
  SbbSeatReservationElement
607
607
  };
608
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29hY2hJdGVtLFxuICBQbGFjZSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgQmFzZUVsZW1lbnQsXG4gIFBsYWNlU2VsZWN0aW9uLFxuICBTZWF0UmVzZXJ2YXRpb24sXG59IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCB7IFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5qcyc7XG5pbXBvcnQgJy4vc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQuanMnO1xuXG4vKipcbiAqIERlc2NyaWJlIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wb25lbnQgd2l0aCBhIHNpbmdsZSBzaG9ydCBzZW50ZW5jZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvblNlbGVjdGVkUGxhY2VzRXZlbnREZXRhaWxzPn0gc2VsZWN0ZWRQbGFjZXMgLSBFbWl0cyB3aGVuIGEgcGxhY2Ugd2FzIHNlbGVjdGVkIGFuZCByZXR1cm5zIGEgUGxhY2UgYXJyYXkgd2l0aCBhbGwgc2VsZWN0ZWQgcGxhY2VzXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvbkNvYWNoU2VsZWN0aW9uPn0gc2VsZWN0ZWRDb2FjaCAtIEVtaXRzIHdoZW4gYSBjb2FjaCB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgYSBDb2FjaFNlbGVjdGlvblxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbicpXG5jbGFzcyBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50IGV4dGVuZHMgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGFsbCBjb2FjaGVzIGFuZCBwbGFjZXMgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2VhdC1yZXNlcnZhdGlvbicsIHR5cGU6IE9iamVjdCB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3Igc2VhdFJlc2VydmF0aW9uOiBTZWF0UmVzZXJ2YXRpb24gPSBudWxsITtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gbmF2aWdhdGlvbiBjYW4gYmUgdG9nZ2xlZCBieSB0aGlzIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoYXMtbmF2aWdhdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGhhc05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBDb250cm9scyB0aGUgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIHNlYXQgcmVzZXJ2YXRpb24gaW4gYSBob3Jpem9uYWwgb3IgdmVydGljYWwgYWxpZ25tZW50ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhbGlnbi12ZXJ0aWNhbCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGFsaWduVmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTWF4aW1hbCBudW1iZXIgb2YgcG9zc2libGUgY2xpY2thYmxlIHNlYXRzICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdtYXgtcmVzZXJ2YXRpb25zJywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBtYXhSZXNlcnZhdGlvbnM6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBBbnkgY2xpY2sgZnVuY3Rpb25hbGl0eSBpcyBwcmV2ZW50ZWQgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ByZXZlbnQtcGxhY2UtY2xpY2snLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBwcmV2ZW50UGxhY2VDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfY29hY2hlc0h0bWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVzdWx0O1xuICAvLyBHcmFwaGljcyB0aGF0IHNob3VsZCBub3QgYmUgcmVuZGVyZWQgd2l0aCBhbiBhcmVhXG4gIHByaXZhdGUgX25vdEFyZWFFbGVtZW50cyA9IFtcbiAgICAnRFJJVkVSX0FSRUFfRlVMTCcsXG4gICAgJ0NPQUNIX1BBU1NBR0UnLFxuICAgICdDT0FDSF9XQUxMX05PX1BBU1NBR0UnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEUnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycsXG4gIF07XG4gIC8vIEFyZWEgaWNvbnMgdGhhdCBzaG91bGQgbm90IGJlIGZpeGVkIGR1cmluZyByb3RhdGlvbiB3aGVuIHZlcnRpY2FsIG1vZGUgaXMgc2VsZWN0ZWRcbiAgcHJpdmF0ZSBfbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMgPSBbJ0VOVFJZX0VYSVQnXTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2hhc05hdmlnYXRpb24nKSkge1xuICAgICAgaWYgKHRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICB0aGlzLl9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXROYXZpZ2F0aW9uU2VsZWN0aW9uQnlTY3JvbGxFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgY29hY2hJdGVtcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXMpKTtcbiAgICBjb25zdCBjbGFzc0FsaWduVmVydGljYWwgPSB0aGlzLmFsaWduVmVydGljYWwgPyAnc2JiLXNyX193cmFwcGVyLS12ZXJ0aWNhbCcgOiAnJztcblxuICAgIHRoaXMuX2NvYWNoZXNIdG1sVGVtcGxhdGUgPSBodG1sYFxuICAgICAgPGRpdj5cbiAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImZpcnN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0JFR0lOJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCl9XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuXG4gICAgICAgIDxkaXYgQGtleWRvd249JHsoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZ0KX0+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uKCl9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fd3JhcHBlciAke2NsYXNzQWxpZ25WZXJ0aWNhbH1cIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJzYmItc3JfX3BhcmVudC1hcmVhXCIgY2xhc3M9XCJzYmItc3JfX3BhcmVudFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2JiLXNyX19saXN0LWNvYWNoZXNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaGVzKGNvYWNoSXRlbXMpfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJsYXN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJOYXZpZ2F0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPG5hdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnc2JiLXNyLW5hdmlnYXRpb24tLXZlcnRpY2FsJzogdGhpcy5hbGlnblZlcnRpY2FsIH0pfVwiPlxuICAgICAgICA8dWxcbiAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCIke2dldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgICAnU0VBVF9SRVNFUlZBVElPTl9OQVZJR0FUSU9OJyxcbiAgICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICAgKX1cIlxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLnNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbGA8bGk+XG4gICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoXG4gICAgICAgICAgICAgICAgQHNlbGVjdENvYWNoPSR7KGV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3ROYXZDb2FjaChldmVudCl9XG4gICAgICAgICAgICAgICAgQGZvY3VzQ29hY2g9JHsoKSA9PiB0aGlzLl9vbkZvY3VzTmF2Q29hY2goKX1cbiAgICAgICAgICAgICAgICBpbmRleD1cIiR7aW5kZXh9XCJcbiAgICAgICAgICAgICAgICBjb2FjaC1pZD1cIiR7Y29hY2hJdGVtLmlkfVwiXG4gICAgICAgICAgICAgICAgLnNlbGVjdGVkPSR7dGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgIC5mb2N1c2VkPSR7dGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgLnByb3BlcnR5SWRzPVwiJHtjb2FjaEl0ZW0ucHJvcGVydHlJZHN9XCJcbiAgICAgICAgICAgICAgICAudHJhdmVsQ2xhc3M9XCIke2NvYWNoSXRlbS50cmF2ZWxDbGFzc31cIlxuICAgICAgICAgICAgICAgID9kcml2ZXItYXJlYT1cIiR7IWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aH1cIlxuICAgICAgICAgICAgICAgID9maXJzdD1cIiR7aW5kZXggPT09IDB9XCJcbiAgICAgICAgICAgICAgICA/bGFzdD1cIiR7aW5kZXggPT09IHRoaXMuc2VhdFJlc2VydmF0aW9uPy5jb2FjaEl0ZW1zLmxlbmd0aCAtIDF9XCJcbiAgICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMuYWxpZ25WZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaD5cbiAgICAgICAgICAgIDwvbGk+YDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmF2PlxuICAgIGA7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb2FjaGVzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJDb2FjaGVzKGNvYWNoZXM/OiBDb2FjaEl0ZW1bXSk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWNvYWNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY29hY2hlcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLXNyX19pdGVtLWNvYWNoXCI+JHt0aGlzLl9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtLCBpbmRleCl9PC9saT5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtOiBDb2FjaEl0ZW0sIGluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlcyA9IHRoaXMuX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW0pO1xuXG4gICAgcmV0dXJuIGh0bWxgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtd3JhcHBlclwiXG4gICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi5ofXB4XCJcbiAgICAgIHdpZHRoPVwiJHtjYWxjdWxhdGVkQ29hY2hEaW1lbnNpb24ud31weFwiXG4gICAgPlxuICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW0sIGluZGV4KX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzIHx8IFtdLCBjb2FjaEl0ZW0uZGltZW5zaW9uKX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRTZXJ2aWNlRWxlbWVudHMoY29hY2hJdGVtLnNlcnZpY2VFbGVtZW50cyl9XG4gICAgICA8dGFibGVcbiAgICAgICAgQGZvY3VzPSR7KCkgPT4gdGhpcy5vbkZvY3VzVGFibGVDb2FjaEFuZFByZXNlbGVjdFBsYWNlKGluZGV4KX1cbiAgICAgICAgaWQ9XCJzYmItc3ItY29hY2gtJHtpbmRleH1cIlxuICAgICAgICBjbGFzcz1cInNiYi1zci1jb2FjaC13cmFwcGVyX190YWJsZVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJzYmItc3ItY29hY2gtY2FwdGlvbi0ke2luZGV4fVwiXG4gICAgICA+XG4gICAgICAgIDxjYXB0aW9uIGlkPVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtpbmRleH1cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHtkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2hJdGVtLCBpbmRleCl9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPmA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW06IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGFsbEVsZW1lbnRzID0gY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cztcbiAgICBjb25zdCBDT0FDSF9QQVNTQUdFX1dJRFRIID0gMTtcbiAgICBjb25zdCBkcml2ZXJBcmVhID0gYWxsRWxlbWVudHM/LmZpbmQoXG4gICAgICAoZWxlbWVudDogQmFzZUVsZW1lbnQpID0+IGVsZW1lbnQuaWNvbiA9PT0gJ0RSSVZFUl9BUkVBX0ZVTEwnLFxuICAgICk7XG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBkcml2ZXJBcmVhXG4gICAgICA/IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIGRyaXZlckFyZWEuZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIXG4gICAgICA6IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIENPQUNIX1BBU1NBR0VfV0lEVEggKiAyO1xuICAgIGNvbnN0IGJvcmRlck9mZnNldFggPVxuICAgICAgY29hY2hJbmRleCA9PT0gMCAmJiBkcml2ZXJBcmVhXG4gICAgICAgID8gZHJpdmVyQXJlYT8uZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZVxuICAgICAgICA6IHRoaXMuYmFzZUdyaWRTaXplO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtYm9yZGVyXCJcbiAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke3RoaXMuY29hY2hCb3JkZXJQYWRkaW5nICogLTF9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2JvcmRlck9mZnNldFh9cHhcIlxuICAgICAgPlxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgIG5hbWU9XCJDT0FDSF9CT1JERVJfTUlERExFXCJcbiAgICAgICAgICB3aWR0aD0ke2JvcmRlcldpZHRoICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgaGVpZ2h0PSR7KGNvYWNoSXRlbS5kaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgKiAyKSAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFJvd1BsYWNlcyhjb2FjaDogQ29hY2hJdGVtLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaC5wbGFjZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFByZXBhaXIgcm93cyB3aXRoIHRoZSBwbGFjZXMgdG8gcmVuZGVyIGEgdGFibGVcbiAgICBjb25zdCB0YWJsZVJvd1BsYWNlczogUmVjb3JkPG51bWJlciwgUGxhY2VbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHBsYWNlIG9mIGNvYWNoLnBsYWNlcykge1xuICAgICAgaWYgKCF0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSkge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSA9IFtwbGFjZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XS5wdXNoKHBsYWNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0YWJsZVJvd1BsYWNlcylcbiAgICAgIC5tYXAoKHJvd1BsYWNlczogUGxhY2VbXSwgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgPHRyIGlkPVwicm93LSR7Y29hY2hJbmRleH0tJHtyb3dQbGFjZXNbMF0ucG9zaXRpb24ueX1cIiBkYXRhLXJvdy1pbmRleD0ke2luZGV4fT5cbiAgICAgICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocm93UGxhY2VzLCBjb2FjaEluZGV4KX1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICBgO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChyb3dUZW1wbGF0ZSkgPT4gcm93VGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocGxhY2VzOiBQbGFjZVtdLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgLy9Tb3J0cyBlYWNoIHBsYWNlIGJ5IGl0cyBhc2NlbmRpbmcgeCBjb29yZGluYXRlXG4gICAgcGxhY2VzLnNvcnQoXG4gICAgICAocGxhY2VBOiBQbGFjZSwgcGxhY2VCOiBQbGFjZSkgPT4gTnVtYmVyKHBsYWNlQS5wb3NpdGlvbi54KSAtIE51bWJlcihwbGFjZUIucG9zaXRpb24ueCksXG4gICAgKTtcblxuICAgIHJldHVybiBwbGFjZXM/Lm1hcCgocGxhY2U6IFBsYWNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkSW50ZXJuYWxEaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24ocGxhY2UuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRJbnRlcm5hbFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24ocGxhY2UucG9zaXRpb24pO1xuICAgICAgY29uc3QgdGV4dFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gLTkwIDogMDtcblxuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgICBzY29wZWQtY2xhc3Nlcz1cImdyYXBoaWNhbC1lbGVtZW50XCJcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZEludGVybmFsUG9zaXRpb24ueX1weFwiXG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0PVwiJHtjYWxjdWxhdGVkSW50ZXJuYWxQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLnd9cHhcIlxuICAgICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICAgIHotaW5kZXg9XCIke3BsYWNlLnBvc2l0aW9uLnp9XCJcbiAgICAgICAgICBjZWxsLWlkPVwiY2VsbC0ke2NvYWNoSW5kZXh9LSR7cGxhY2UucG9zaXRpb24ueX0tJHtpbmRleH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcbiAgICAgICAgICAgIEBzZWxlY3RQbGFjZT0keyhzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50KX1cbiAgICAgICAgICAgIGV4cG9ydHBhcnRzPVwic2JiLXNyLXBsYWNlLXBhcnRcIlxuICAgICAgICAgICAgaWQ9XCJzZWF0LXJlc2VydmF0aW9uX19wbGFjZS1idXR0b24tJHtjb2FjaEluZGV4fS0ke3BsYWNlLm51bWJlcn1cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcIlxuICAgICAgICAgICAgZGF0YS1jZWxsLWlkPVwiJHtjb2FjaEluZGV4fS0ke3BsYWNlLnBvc2l0aW9uLnl9LSR7aW5kZXh9XCJcbiAgICAgICAgICAgIHRleHQ9JHtwbGFjZS5udW1iZXJ9XG4gICAgICAgICAgICB0eXBlPSR7cGxhY2UudHlwZX1cbiAgICAgICAgICAgIHN0YXRlPSR7cGxhY2Uuc3RhdGV9XG4gICAgICAgICAgICB3aWR0aD0ke3BsYWNlLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICBoZWlnaHQ9JHtwbGFjZS5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgcm90YXRpb249JHtwbGFjZS5yb3RhdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgICAgdGV4dC1yb3RhdGlvbj0ke3RleHRSb3RhdGlvbn1cbiAgICAgICAgICAgIGNvYWNoLWluZGV4PSR7Y29hY2hJbmRleH1cbiAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz0ke3BsYWNlLnByb3BlcnR5SWRzfVxuICAgICAgICAgICAgLnByZXZlbnRDbGljaz0ke3RoaXMucHJldmVudFBsYWNlQ2xpY2t9XG4gICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbD5cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhcbiAgICBncmFwaGljYWxFbGVtZW50czogQmFzZUVsZW1lbnRbXSxcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghZ3JhcGhpY2FsRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaGljYWxFbGVtZW50cz8ubWFwKChncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgaWNvbiA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA/PyAnJztcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IGdyYXBoaWNhbEVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnQgPVxuICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiEpID09PSAtMTtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID1cbiAgICAgICAgdGhpcy5hbGlnblZlcnRpY2FsICYmIGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnRcbiAgICAgICAgICA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwXG4gICAgICAgICAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIC8vY2hlY2sgaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3QgYW4gYXJlYSBlbGVtZW50LCBzaW5jZSB0aGlzIGVsZW1lbnQgaXMgZHJhd24gd2l0aG91dCBhbiBhcmVhIGNvbXBvbmVudFxuICAgICAgaWYgKHRoaXMuX25vdEFyZWFFbGVtZW50cy5maW5kSW5kZXgoKG5vdEFyZWFFbGVtZW50KSA9PiBub3RBcmVhRWxlbWVudCA9PT0gaWNvbikgPiAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhvdXRBcmVhKGdyYXBoaWNhbEVsZW1lbnQsIGVsZW1lbnRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShncmFwaGljYWxFbGVtZW50LCBlbGVtZW50Rml4ZWRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyRWxlbWVudFdpdGhBcmVhKFxuICAgIGdyYXBoaWNhbEVsZW1lbnQ6IEJhc2VFbGVtZW50LFxuICAgIHJvdGF0aW9uOiBudW1iZXIsXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBUT0RPIC0+IGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCBpcyB0ZW1wIGZpeCB0byBzaG93IGNvYWNoIHRhYmxlcyBhcyBhcmVhIGFuZCBub3QgYXMgc3ZnIGdyYXBoaWMuXG4gICAgLy8gVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IHdoZW4gdXNpbmcgVEFCTEUgc3ZnIGdyYXBoaWNzLFxuICAgIC8vIHRoZXkgYXJlIGRpc3BsYXllZCBkaXN0b3J0ZWQgZHVlIHRvIGRpZmZlcmVudCBoZWlnaHRzIGFuZCB3aWR0aHMgYW5kIHRoaXMgaXMgbm90IHZpc3VhbGx5IGdvb2QuXG4gICAgY29uc3QgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5pbmRleE9mKCdUQUJMRScpID09PSAtMTtcblxuICAgIGNvbnN0IGFyZWFQcm9wZXJ0eSA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uIDogbnVsbDtcbiAgICBjb25zdCBzdHJldGNoSGVpZ2h0ID0gYXJlYVByb3BlcnR5ICE9PSAnRU5UUllfRVhJVCc7XG4gICAgY29uc3QgYXJpYUxhYmVsRm9yQXJlYSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgIDogbm90aGluZztcbiAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgICBzdHJldGNoSGVpZ2h0LFxuICAgICk7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50TW91bnRpbmcgPSAnZnJlZSc7XG4gICAgaWYgKGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24ueSA9PT0gdGhpcy5jb2FjaEJvcmRlck9mZnNldCAqIC0xKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAndXBwZXItYm9yZGVyJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi55ICsgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCA9PT1cbiAgICAgIGNvYWNoRGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0XG4gICAgKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAnbG93ZXItYm9yZGVyJztcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWFcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoJzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgICAgJy0tc2JiLXJlc2VydmF0aW9uLWFyZWEtaGVpZ2h0JzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG1vdW50aW5nPSR7ZWxlbWVudE1vdW50aW5nfVxuICAgICAgICAgIGJhY2tncm91bmQ9XCJkYXJrXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIHRpdGxlPSR7YXJpYUxhYmVsRm9yQXJlYX1cbiAgICAgICAgPlxuICAgICAgICAgICR7YXJlYVByb3BlcnR5XG4gICAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgICAgICAgIG5hbWU9JHthcmVhUHJvcGVydHl9XG4gICAgICAgICAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgICAgICAgICAgd2lkdGg9JHt0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD0ke3RoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgICAgICAgIGBcbiAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24sXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgaWNvbiBpcyB0aGUgZHJpdmVyIGFyZWEsIHRoZW4gaGVyZSBjb25jYXQgdGhlIHZlaGljbGUgdHlwZSB0byBnZXQgdGhlIHJpZ2h0IHZlaGljbGUgY2hhc3NpZSBpY29uXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgZ3JhcGhpY2FsRWxlbWVudC5pY29uLmluZGV4T2YoJ0RSSVZFUl9BUkVBJykgPT09IC0xXG4gICAgICAgID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uXG4gICAgICAgIDogZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5jb25jYXQoJ18nLCB0aGlzLnNlYXRSZXNlcnZhdGlvbi52ZWhpY2xlVHlwZSk7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBuYW1lPSR7aWNvbiA/PyBub3RoaW5nfVxuICAgICAgICAgIHdpZHRoPSR7Z3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgIGhlaWdodD0ke2dyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgP3N0cmV0Y2g9JHt0cnVlfVxuICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKHNlcnZpY2VFbGVtZW50cz86IEJhc2VFbGVtZW50W10pOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFzZXJ2aWNlRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlRWxlbWVudHM/Lm1hcCgoc2VydmljZUVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCB0aXRsZURlc2NyaXB0aW9uID0gc2VydmljZUVsZW1lbnQuaWNvblxuICAgICAgICA/IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oc2VydmljZUVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgICAgOiBudWxsO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgICBzZXJ2aWNlRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgICAgc2VydmljZUVsZW1lbnQucG9zaXRpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgZWxlbWVudFJvdGF0aW9uID0gc2VydmljZUVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gZWxlbWVudFJvdGF0aW9uIC0gOTAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uLnl9cHhcIlxuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24ueH1weFwiXG4gICAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgICB6LWluZGV4PVwiJHtzZXJ2aWNlRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgICAgbmFtZT0ke3NlcnZpY2VFbGVtZW50Lmljb24gPz8gbm90aGluZ31cbiAgICAgICAgICAgIHdpZHRoPSR7c2VydmljZUVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgIGhlaWdodD0ke3NlcnZpY2VFbGVtZW50LmRpbWVuc2lvbi5oICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICAucm90YXRpb249JHtlbGVtZW50Rml4ZWRSb3RhdGlvbn1cbiAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIHRpdGxlPSR7dGl0bGVEZXNjcmlwdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VzIHRoZSBzZWxlY3RlZCBwbGFjZSBldmVudCB0cmlnZ2VyZWQgZnJvbSB0aGUgcGxhY2VcbiAgICogRWFjaCBzZWxlY3Rpb24gZW1pdHMgYW4gYXJyYXkgb2YgYWxsIHNlbGVjdGVkIHBsYWNlc1xuICAgKiBAcGFyYW0gc2VsZWN0UGxhY2VFdmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbCBhcyBQbGFjZVNlbGVjdGlvbjtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICAvLyBBZGQgcGxhY2UgdG8gcGxhY2UgY29sbGVjdGlvblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyhzZWxlY3RlZFBsYWNlKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0TmF2Q29hY2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWROYXZDb2FjaEluZGV4ID0gZXZlbnQuZGV0YWlsIGFzIG51bWJlcjtcbiAgICB0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgICBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSBudWxsICYmIHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKHNlbGVjdGVkTmF2Q29hY2hJbmRleCk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggPT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG4gICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW06IENvYWNoSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9CTE9DS0VEX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIGNvYWNoSXRlbS5pZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGxldCB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSAnJztcbiAgICBjb25zdCBhcmVhRGVzY3JpcHRpb25zID0gdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyEpO1xuICAgIGNvbnN0IHNlcnZpY2VEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uc2VydmljZUVsZW1lbnRzISk7XG5cbiAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9UQUJMRV9DQVBUSU9OJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgY29hY2hJdGVtLmlkLFxuICAgIF0pO1xuXG4gICAgaWYgKCEhYXJlYURlc2NyaXB0aW9ucyB8fCAhIXNlcnZpY2VEZXNjcmlwdGlvbnMpIHtcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPVxuICAgICAgICAnLiAnICsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9IHNlcnZpY2VEZXNjcmlwdGlvbnMgKyAnLCAnICsgYXJlYURlc2NyaXB0aW9ucyArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlQ29hY2hEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGRlc2NyaXB0aW9uc0VsZW1lbnRzOiBCYXNlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bmlxdWVEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZXR1cm4gZGVzY3JpcHRpb25zRWxlbWVudHNcbiAgICAgID8ubWFwKChkZXNjcmlwdGlvbkVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IGRlc2NyaXB0aW9uRWxlbWVudC5pY29uO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgPSB1bmlxdWVEZXNjcmlwdGlvbnMuaW5kZXhPZihpY29uKSA+IC0xO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgZGVzY3JpcHRpb25FbGVtZW50Lmljb24hLFxuICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREZXNjcmlwdGlvbiA9XG4gICAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihpY29uKSA9PT0gLTEgJiZcbiAgICAgICAgICB0aGlzLl9ub3RBcmVhRWxlbWVudHMuaW5kZXhPZihpY29uKSA9PT0gLTE7XG5cbiAgICAgICAgaWYgKCFkZXNjcmlwdGlvbkFscmVheUV4aXN0KSB7XG4gICAgICAgICAgdW5pcXVlRGVzY3JpcHRpb25zLnB1c2goZGVzY3JpcHRpb25FbGVtZW50Lmljb24hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0cmFuc2xhdGlvbiAmJiAhZGVzY3JpcHRpb25BbHJlYXlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFvQ00sNkJBQXlCLE1BQUE7OzBCQUQ5QixjQUFjLHNCQUFzQixDQUFDOzs7O29CQUNFOzs7Ozs7Ozs7Ozs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUEwQjtBQUFBOztBQUtoRTtBQUtBO0FBS0E7QUFLQTtBQUtBO0FBcEJ5Qix5QkFBQSxtQ0FBQSxrQkFBQSxNQUFBLCtCQUFtQyxJQUFLO0FBS3hDLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsa0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZCQUF5QixJQUFJO0FBSzdCLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsZ0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZC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
608
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29hY2hJdGVtLFxuICBQbGFjZSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgQmFzZUVsZW1lbnQsXG4gIFBsYWNlU2VsZWN0aW9uLFxuICBTZWF0UmVzZXJ2YXRpb24sXG59IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCB7IFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQuanMnO1xuXG4vKipcbiAqIERlc2NyaWJlIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wb25lbnQgd2l0aCBhIHNpbmdsZSBzaG9ydCBzZW50ZW5jZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvblNlbGVjdGVkUGxhY2VzRXZlbnREZXRhaWxzPn0gc2VsZWN0ZWRQbGFjZXMgLSBFbWl0cyB3aGVuIGEgcGxhY2Ugd2FzIHNlbGVjdGVkIGFuZCByZXR1cm5zIGEgUGxhY2UgYXJyYXkgd2l0aCBhbGwgc2VsZWN0ZWQgcGxhY2VzXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvbkNvYWNoU2VsZWN0aW9uPn0gc2VsZWN0ZWRDb2FjaCAtIEVtaXRzIHdoZW4gYSBjb2FjaCB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgYSBDb2FjaFNlbGVjdGlvblxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbicpXG5jbGFzcyBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50IGV4dGVuZHMgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGFsbCBjb2FjaGVzIGFuZCBwbGFjZXMgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2VhdC1yZXNlcnZhdGlvbicsIHR5cGU6IE9iamVjdCB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3Igc2VhdFJlc2VydmF0aW9uOiBTZWF0UmVzZXJ2YXRpb24gPSBudWxsITtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gbmF2aWdhdGlvbiBjYW4gYmUgdG9nZ2xlZCBieSB0aGlzIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoYXMtbmF2aWdhdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGhhc05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBDb250cm9scyB0aGUgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIHNlYXQgcmVzZXJ2YXRpb24gaW4gYSBob3Jpem9uYWwgb3IgdmVydGljYWwgYWxpZ25tZW50ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhbGlnbi12ZXJ0aWNhbCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGFsaWduVmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTWF4aW1hbCBudW1iZXIgb2YgcG9zc2libGUgY2xpY2thYmxlIHNlYXRzICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdtYXgtcmVzZXJ2YXRpb25zJywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBtYXhSZXNlcnZhdGlvbnM6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBBbnkgY2xpY2sgZnVuY3Rpb25hbGl0eSBpcyBwcmV2ZW50ZWQgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ByZXZlbnQtcGxhY2UtY2xpY2snLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBwcmV2ZW50UGxhY2VDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfY29hY2hlc0h0bWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVzdWx0O1xuICAvLyBHcmFwaGljcyB0aGF0IHNob3VsZCBub3QgYmUgcmVuZGVyZWQgd2l0aCBhbiBhcmVhXG4gIHByaXZhdGUgX25vdEFyZWFFbGVtZW50cyA9IFtcbiAgICAnRFJJVkVSX0FSRUFfRlVMTCcsXG4gICAgJ0NPQUNIX1BBU1NBR0UnLFxuICAgICdDT0FDSF9XQUxMX05PX1BBU1NBR0UnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEUnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycsXG4gIF07XG4gIC8vIEFyZWEgaWNvbnMgdGhhdCBzaG91bGQgbm90IGJlIGZpeGVkIGR1cmluZyByb3RhdGlvbiB3aGVuIHZlcnRpY2FsIG1vZGUgaXMgc2VsZWN0ZWRcbiAgcHJpdmF0ZSBfbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMgPSBbJ0VOVFJZX0VYSVQnXTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2hhc05hdmlnYXRpb24nKSkge1xuICAgICAgaWYgKHRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICB0aGlzLl9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXROYXZpZ2F0aW9uU2VsZWN0aW9uQnlTY3JvbGxFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgY29hY2hJdGVtcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXMpKTtcbiAgICBjb25zdCBjbGFzc0FsaWduVmVydGljYWwgPSB0aGlzLmFsaWduVmVydGljYWwgPyAnc2JiLXNyX193cmFwcGVyLS12ZXJ0aWNhbCcgOiAnJztcblxuICAgIHRoaXMuX2NvYWNoZXNIdG1sVGVtcGxhdGUgPSBodG1sYFxuICAgICAgPGRpdj5cbiAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImZpcnN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0JFR0lOJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCl9XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuXG4gICAgICAgIDxkaXYgQGtleWRvd249JHsoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZ0KX0+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uKCl9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fd3JhcHBlciAke2NsYXNzQWxpZ25WZXJ0aWNhbH1cIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJzYmItc3JfX3BhcmVudC1hcmVhXCIgY2xhc3M9XCJzYmItc3JfX3BhcmVudFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2JiLXNyX19saXN0LWNvYWNoZXNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaGVzKGNvYWNoSXRlbXMpfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJsYXN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJOYXZpZ2F0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPG5hdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnc2JiLXNyLW5hdmlnYXRpb24tLXZlcnRpY2FsJzogdGhpcy5hbGlnblZlcnRpY2FsIH0pfVwiPlxuICAgICAgICA8dWxcbiAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCIke2dldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgICAnU0VBVF9SRVNFUlZBVElPTl9OQVZJR0FUSU9OJyxcbiAgICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICAgKX1cIlxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLnNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbGA8bGk+XG4gICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoXG4gICAgICAgICAgICAgICAgQHNlbGVjdENvYWNoPSR7KGV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3ROYXZDb2FjaChldmVudCl9XG4gICAgICAgICAgICAgICAgQGZvY3VzQ29hY2g9JHsoKSA9PiB0aGlzLl9vbkZvY3VzTmF2Q29hY2goKX1cbiAgICAgICAgICAgICAgICBpbmRleD1cIiR7aW5kZXh9XCJcbiAgICAgICAgICAgICAgICBjb2FjaC1pZD1cIiR7Y29hY2hJdGVtLmlkfVwiXG4gICAgICAgICAgICAgICAgLnNlbGVjdGVkPSR7dGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgIC5mb2N1c2VkPSR7dGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgLnByb3BlcnR5SWRzPVwiJHtjb2FjaEl0ZW0ucHJvcGVydHlJZHN9XCJcbiAgICAgICAgICAgICAgICAudHJhdmVsQ2xhc3M9XCIke2NvYWNoSXRlbS50cmF2ZWxDbGFzc31cIlxuICAgICAgICAgICAgICAgID9kcml2ZXItYXJlYT1cIiR7IWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aH1cIlxuICAgICAgICAgICAgICAgID9maXJzdD1cIiR7aW5kZXggPT09IDB9XCJcbiAgICAgICAgICAgICAgICA/bGFzdD1cIiR7aW5kZXggPT09IHRoaXMuc2VhdFJlc2VydmF0aW9uPy5jb2FjaEl0ZW1zLmxlbmd0aCAtIDF9XCJcbiAgICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMuYWxpZ25WZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaD5cbiAgICAgICAgICAgIDwvbGk+YDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmF2PlxuICAgIGA7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb2FjaGVzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJDb2FjaGVzKGNvYWNoZXM/OiBDb2FjaEl0ZW1bXSk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWNvYWNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY29hY2hlcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLXNyX19pdGVtLWNvYWNoXCI+JHt0aGlzLl9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtLCBpbmRleCl9PC9saT5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtOiBDb2FjaEl0ZW0sIGluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlcyA9IHRoaXMuX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW0pO1xuXG4gICAgcmV0dXJuIGh0bWxgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtd3JhcHBlclwiXG4gICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi5ofXB4XCJcbiAgICAgIHdpZHRoPVwiJHtjYWxjdWxhdGVkQ29hY2hEaW1lbnNpb24ud31weFwiXG4gICAgPlxuICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW0sIGluZGV4KX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzIHx8IFtdLCBjb2FjaEl0ZW0uZGltZW5zaW9uKX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRTZXJ2aWNlRWxlbWVudHMoY29hY2hJdGVtLnNlcnZpY2VFbGVtZW50cyl9XG4gICAgICA8dGFibGVcbiAgICAgICAgQGZvY3VzPSR7KCkgPT4gdGhpcy5vbkZvY3VzVGFibGVDb2FjaEFuZFByZXNlbGVjdFBsYWNlKGluZGV4KX1cbiAgICAgICAgaWQ9XCJzYmItc3ItY29hY2gtJHtpbmRleH1cIlxuICAgICAgICBjbGFzcz1cInNiYi1zci1jb2FjaC13cmFwcGVyX190YWJsZVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJzYmItc3ItY29hY2gtY2FwdGlvbi0ke2luZGV4fVwiXG4gICAgICA+XG4gICAgICAgIDxjYXB0aW9uIGlkPVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtpbmRleH1cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHtkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2hJdGVtLCBpbmRleCl9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPmA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW06IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGFsbEVsZW1lbnRzID0gY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cztcbiAgICBjb25zdCBDT0FDSF9QQVNTQUdFX1dJRFRIID0gMTtcbiAgICBjb25zdCBkcml2ZXJBcmVhID0gYWxsRWxlbWVudHM/LmZpbmQoXG4gICAgICAoZWxlbWVudDogQmFzZUVsZW1lbnQpID0+IGVsZW1lbnQuaWNvbiA9PT0gJ0RSSVZFUl9BUkVBX0ZVTEwnLFxuICAgICk7XG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBkcml2ZXJBcmVhXG4gICAgICA/IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIGRyaXZlckFyZWEuZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIXG4gICAgICA6IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIENPQUNIX1BBU1NBR0VfV0lEVEggKiAyO1xuICAgIGNvbnN0IGJvcmRlck9mZnNldFggPVxuICAgICAgY29hY2hJbmRleCA9PT0gMCAmJiBkcml2ZXJBcmVhXG4gICAgICAgID8gZHJpdmVyQXJlYT8uZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZVxuICAgICAgICA6IHRoaXMuYmFzZUdyaWRTaXplO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtYm9yZGVyXCJcbiAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke3RoaXMuY29hY2hCb3JkZXJQYWRkaW5nICogLTF9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2JvcmRlck9mZnNldFh9cHhcIlxuICAgICAgPlxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgIG5hbWU9XCJDT0FDSF9CT1JERVJfTUlERExFXCJcbiAgICAgICAgICB3aWR0aD0ke2JvcmRlcldpZHRoICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgaGVpZ2h0PSR7KGNvYWNoSXRlbS5kaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgKiAyKSAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFJvd1BsYWNlcyhjb2FjaDogQ29hY2hJdGVtLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaC5wbGFjZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFByZXBhaXIgcm93cyB3aXRoIHRoZSBwbGFjZXMgdG8gcmVuZGVyIGEgdGFibGVcbiAgICBjb25zdCB0YWJsZVJvd1BsYWNlczogUmVjb3JkPG51bWJlciwgUGxhY2VbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHBsYWNlIG9mIGNvYWNoLnBsYWNlcykge1xuICAgICAgaWYgKCF0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSkge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSA9IFtwbGFjZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XS5wdXNoKHBsYWNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0YWJsZVJvd1BsYWNlcylcbiAgICAgIC5tYXAoKHJvd1BsYWNlczogUGxhY2VbXSwgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgPHRyIGlkPVwicm93LSR7Y29hY2hJbmRleH0tJHtyb3dQbGFjZXNbMF0ucG9zaXRpb24ueX1cIiBkYXRhLXJvdy1pbmRleD0ke2luZGV4fT5cbiAgICAgICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocm93UGxhY2VzLCBjb2FjaEluZGV4KX1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICBgO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChyb3dUZW1wbGF0ZSkgPT4gcm93VGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocGxhY2VzOiBQbGFjZVtdLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgLy9Tb3J0cyBlYWNoIHBsYWNlIGJ5IGl0cyBhc2NlbmRpbmcgeCBjb29yZGluYXRlXG4gICAgcGxhY2VzLnNvcnQoXG4gICAgICAocGxhY2VBOiBQbGFjZSwgcGxhY2VCOiBQbGFjZSkgPT4gTnVtYmVyKHBsYWNlQS5wb3NpdGlvbi54KSAtIE51bWJlcihwbGFjZUIucG9zaXRpb24ueCksXG4gICAgKTtcblxuICAgIHJldHVybiBwbGFjZXM/Lm1hcCgocGxhY2U6IFBsYWNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkSW50ZXJuYWxEaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24ocGxhY2UuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRJbnRlcm5hbFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24ocGxhY2UucG9zaXRpb24pO1xuICAgICAgY29uc3QgdGV4dFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gLTkwIDogMDtcblxuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgICBzY29wZWQtY2xhc3Nlcz1cImdyYXBoaWNhbC1lbGVtZW50XCJcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZEludGVybmFsUG9zaXRpb24ueX1weFwiXG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0PVwiJHtjYWxjdWxhdGVkSW50ZXJuYWxQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLnd9cHhcIlxuICAgICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICAgIHotaW5kZXg9XCIke3BsYWNlLnBvc2l0aW9uLnp9XCJcbiAgICAgICAgICBjZWxsLWlkPVwiY2VsbC0ke2NvYWNoSW5kZXh9LSR7cGxhY2UucG9zaXRpb24ueX0tJHtpbmRleH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcbiAgICAgICAgICAgIEBzZWxlY3RQbGFjZT0keyhzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50KX1cbiAgICAgICAgICAgIGV4cG9ydHBhcnRzPVwic2JiLXNyLXBsYWNlLXBhcnRcIlxuICAgICAgICAgICAgaWQ9XCJzZWF0LXJlc2VydmF0aW9uX19wbGFjZS1idXR0b24tJHtjb2FjaEluZGV4fS0ke3BsYWNlLm51bWJlcn1cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcIlxuICAgICAgICAgICAgZGF0YS1jZWxsLWlkPVwiJHtjb2FjaEluZGV4fS0ke3BsYWNlLnBvc2l0aW9uLnl9LSR7aW5kZXh9XCJcbiAgICAgICAgICAgIHRleHQ9JHtwbGFjZS5udW1iZXJ9XG4gICAgICAgICAgICB0eXBlPSR7cGxhY2UudHlwZX1cbiAgICAgICAgICAgIHN0YXRlPSR7cGxhY2Uuc3RhdGV9XG4gICAgICAgICAgICB3aWR0aD0ke3BsYWNlLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICBoZWlnaHQ9JHtwbGFjZS5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgcm90YXRpb249JHtwbGFjZS5yb3RhdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgICAgdGV4dC1yb3RhdGlvbj0ke3RleHRSb3RhdGlvbn1cbiAgICAgICAgICAgIGNvYWNoLWluZGV4PSR7Y29hY2hJbmRleH1cbiAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz0ke3BsYWNlLnByb3BlcnR5SWRzfVxuICAgICAgICAgICAgLnByZXZlbnRDbGljaz0ke3RoaXMucHJldmVudFBsYWNlQ2xpY2t9XG4gICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbD5cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhcbiAgICBncmFwaGljYWxFbGVtZW50czogQmFzZUVsZW1lbnRbXSxcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghZ3JhcGhpY2FsRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaGljYWxFbGVtZW50cz8ubWFwKChncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgaWNvbiA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA/PyAnJztcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IGdyYXBoaWNhbEVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnQgPVxuICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiEpID09PSAtMTtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID1cbiAgICAgICAgdGhpcy5hbGlnblZlcnRpY2FsICYmIGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnRcbiAgICAgICAgICA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwXG4gICAgICAgICAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIC8vY2hlY2sgaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3QgYW4gYXJlYSBlbGVtZW50LCBzaW5jZSB0aGlzIGVsZW1lbnQgaXMgZHJhd24gd2l0aG91dCBhbiBhcmVhIGNvbXBvbmVudFxuICAgICAgaWYgKHRoaXMuX25vdEFyZWFFbGVtZW50cy5maW5kSW5kZXgoKG5vdEFyZWFFbGVtZW50KSA9PiBub3RBcmVhRWxlbWVudCA9PT0gaWNvbikgPiAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhvdXRBcmVhKGdyYXBoaWNhbEVsZW1lbnQsIGVsZW1lbnRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShncmFwaGljYWxFbGVtZW50LCBlbGVtZW50Rml4ZWRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyRWxlbWVudFdpdGhBcmVhKFxuICAgIGdyYXBoaWNhbEVsZW1lbnQ6IEJhc2VFbGVtZW50LFxuICAgIHJvdGF0aW9uOiBudW1iZXIsXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBUT0RPIC0+IGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCBpcyB0ZW1wIGZpeCB0byBzaG93IGNvYWNoIHRhYmxlcyBhcyBhcmVhIGFuZCBub3QgYXMgc3ZnIGdyYXBoaWMuXG4gICAgLy8gVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IHdoZW4gdXNpbmcgVEFCTEUgc3ZnIGdyYXBoaWNzLFxuICAgIC8vIHRoZXkgYXJlIGRpc3BsYXllZCBkaXN0b3J0ZWQgZHVlIHRvIGRpZmZlcmVudCBoZWlnaHRzIGFuZCB3aWR0aHMgYW5kIHRoaXMgaXMgbm90IHZpc3VhbGx5IGdvb2QuXG4gICAgY29uc3QgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5pbmRleE9mKCdUQUJMRScpID09PSAtMTtcblxuICAgIGNvbnN0IGFyZWFQcm9wZXJ0eSA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uIDogbnVsbDtcbiAgICBjb25zdCBzdHJldGNoSGVpZ2h0ID0gYXJlYVByb3BlcnR5ICE9PSAnRU5UUllfRVhJVCc7XG4gICAgY29uc3QgYXJpYUxhYmVsRm9yQXJlYSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgIDogbm90aGluZztcbiAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgICBzdHJldGNoSGVpZ2h0LFxuICAgICk7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50TW91bnRpbmcgPSAnZnJlZSc7XG4gICAgaWYgKGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24ueSA9PT0gdGhpcy5jb2FjaEJvcmRlck9mZnNldCAqIC0xKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAndXBwZXItYm9yZGVyJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi55ICsgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCA9PT1cbiAgICAgIGNvYWNoRGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0XG4gICAgKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAnbG93ZXItYm9yZGVyJztcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWFcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoJzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgICAgJy0tc2JiLXJlc2VydmF0aW9uLWFyZWEtaGVpZ2h0JzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG1vdW50aW5nPSR7ZWxlbWVudE1vdW50aW5nfVxuICAgICAgICAgIGJhY2tncm91bmQ9XCJkYXJrXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIHRpdGxlPSR7YXJpYUxhYmVsRm9yQXJlYX1cbiAgICAgICAgPlxuICAgICAgICAgICR7YXJlYVByb3BlcnR5XG4gICAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgICAgICAgIG5hbWU9JHthcmVhUHJvcGVydHl9XG4gICAgICAgICAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgICAgICAgICAgd2lkdGg9JHt0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD0ke3RoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgICAgICAgIGBcbiAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24sXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgaWNvbiBpcyB0aGUgZHJpdmVyIGFyZWEsIHRoZW4gaGVyZSBjb25jYXQgdGhlIHZlaGljbGUgdHlwZSB0byBnZXQgdGhlIHJpZ2h0IHZlaGljbGUgY2hhc3NpZSBpY29uXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgZ3JhcGhpY2FsRWxlbWVudC5pY29uLmluZGV4T2YoJ0RSSVZFUl9BUkVBJykgPT09IC0xXG4gICAgICAgID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uXG4gICAgICAgIDogZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5jb25jYXQoJ18nLCB0aGlzLnNlYXRSZXNlcnZhdGlvbi52ZWhpY2xlVHlwZSk7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBuYW1lPSR7aWNvbiA/PyBub3RoaW5nfVxuICAgICAgICAgIHdpZHRoPSR7Z3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgIGhlaWdodD0ke2dyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgP3N0cmV0Y2g9JHt0cnVlfVxuICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKHNlcnZpY2VFbGVtZW50cz86IEJhc2VFbGVtZW50W10pOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFzZXJ2aWNlRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlRWxlbWVudHM/Lm1hcCgoc2VydmljZUVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCB0aXRsZURlc2NyaXB0aW9uID0gc2VydmljZUVsZW1lbnQuaWNvblxuICAgICAgICA/IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oc2VydmljZUVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgICAgOiBudWxsO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgICBzZXJ2aWNlRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgICAgc2VydmljZUVsZW1lbnQucG9zaXRpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgZWxlbWVudFJvdGF0aW9uID0gc2VydmljZUVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gZWxlbWVudFJvdGF0aW9uIC0gOTAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uLnl9cHhcIlxuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24ueH1weFwiXG4gICAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgICB6LWluZGV4PVwiJHtzZXJ2aWNlRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgICAgbmFtZT0ke3NlcnZpY2VFbGVtZW50Lmljb24gPz8gbm90aGluZ31cbiAgICAgICAgICAgIHdpZHRoPSR7c2VydmljZUVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgIGhlaWdodD0ke3NlcnZpY2VFbGVtZW50LmRpbWVuc2lvbi5oICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICAucm90YXRpb249JHtlbGVtZW50Rml4ZWRSb3RhdGlvbn1cbiAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIHRpdGxlPSR7dGl0bGVEZXNjcmlwdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VzIHRoZSBzZWxlY3RlZCBwbGFjZSBldmVudCB0cmlnZ2VyZWQgZnJvbSB0aGUgcGxhY2VcbiAgICogRWFjaCBzZWxlY3Rpb24gZW1pdHMgYW4gYXJyYXkgb2YgYWxsIHNlbGVjdGVkIHBsYWNlc1xuICAgKiBAcGFyYW0gc2VsZWN0UGxhY2VFdmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbCBhcyBQbGFjZVNlbGVjdGlvbjtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICAvLyBBZGQgcGxhY2UgdG8gcGxhY2UgY29sbGVjdGlvblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyhzZWxlY3RlZFBsYWNlKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0TmF2Q29hY2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWROYXZDb2FjaEluZGV4ID0gZXZlbnQuZGV0YWlsIGFzIG51bWJlcjtcbiAgICB0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgICBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSBudWxsICYmIHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKHNlbGVjdGVkTmF2Q29hY2hJbmRleCk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggPT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG4gICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW06IENvYWNoSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9CTE9DS0VEX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIGNvYWNoSXRlbS5pZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGxldCB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSAnJztcbiAgICBjb25zdCBhcmVhRGVzY3JpcHRpb25zID0gdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyEpO1xuICAgIGNvbnN0IHNlcnZpY2VEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uc2VydmljZUVsZW1lbnRzISk7XG5cbiAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9UQUJMRV9DQVBUSU9OJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgY29hY2hJdGVtLmlkLFxuICAgIF0pO1xuXG4gICAgaWYgKCEhYXJlYURlc2NyaXB0aW9ucyB8fCAhIXNlcnZpY2VEZXNjcmlwdGlvbnMpIHtcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPVxuICAgICAgICAnLiAnICsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9IHNlcnZpY2VEZXNjcmlwdGlvbnMgKyAnLCAnICsgYXJlYURlc2NyaXB0aW9ucyArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlQ29hY2hEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGRlc2NyaXB0aW9uc0VsZW1lbnRzOiBCYXNlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bmlxdWVEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZXR1cm4gZGVzY3JpcHRpb25zRWxlbWVudHNcbiAgICAgID8ubWFwKChkZXNjcmlwdGlvbkVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IGRlc2NyaXB0aW9uRWxlbWVudC5pY29uO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgPSB1bmlxdWVEZXNjcmlwdGlvbnMuaW5kZXhPZihpY29uKSA+IC0xO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgZGVzY3JpcHRpb25FbGVtZW50Lmljb24hLFxuICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREZXNjcmlwdGlvbiA9XG4gICAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihpY29uKSA9PT0gLTEgJiZcbiAgICAgICAgICB0aGlzLl9ub3RBcmVhRWxlbWVudHMuaW5kZXhPZihpY29uKSA9PT0gLTE7XG5cbiAgICAgICAgaWYgKCFkZXNjcmlwdGlvbkFscmVheUV4aXN0KSB7XG4gICAgICAgICAgdW5pcXVlRGVzY3JpcHRpb25zLnB1c2goZGVzY3JpcHRpb25FbGVtZW50Lmljb24hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0cmFuc2xhdGlvbiAmJiAhZGVzY3JpcHRpb25BbHJlYXlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFvQ00sNkJBQXlCLE1BQUE7OzBCQUQ5QixjQUFjLHNCQUFzQixDQUFDOzs7O29CQUNFOzs7Ozs7Ozs7Ozs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUEwQjtBQUFBOztBQUtoRTtBQUtBO0FBS0E7QUFLQTtBQUtBO0FBcEJ5Qix5QkFBQSxtQ0FBQSxrQkFBQSxNQUFBLCtCQUFtQyxJQUFLO0FBS3hDLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsa0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZCQUF5QixJQUFJO0FBSzdCLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsZ0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZCQUF5QixLQUFLO0FBSzlCLHlCQUFBLG9DQUFB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
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter } from '@sbb-esta/lyne-elements/core/eventing.js';
2
2
  import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
3
- import { PlaceTravelClass } from '../../common.js';
3
+ import { PlaceTravelClass } from '../common.js';
4
4
  export type SelectCoachEventDetails = number;
5
5
  /**
6
6
  * This component will display the navigation coach item for Seat reservation.