@sbb-esta/lyne-elements-experimental 2.11.0 → 3.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/custom-elements.json +13 -13
  2. package/development/journey-summary/journey-summary.component.d.ts +5 -3
  3. package/development/journey-summary/journey-summary.component.d.ts.map +1 -1
  4. package/development/journey-summary/journey-summary.component.js +5 -2
  5. package/development/pearl-chain/pearl-chain.component.d.ts +5 -3
  6. package/development/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  7. package/development/pearl-chain/pearl-chain.component.js +5 -2
  8. package/development/pearl-chain-time/pearl-chain-time.component.d.ts +5 -3
  9. package/development/pearl-chain-time/pearl-chain-time.component.d.ts.map +1 -1
  10. package/development/pearl-chain-time/pearl-chain-time.component.js +5 -2
  11. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +1 -1
  12. package/development/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +1 -0
  13. package/development/seat-reservation/seat-reservation/{seat-reservation-scoped-component → seat-reservation-scoped}/seat-reservation-scoped.component.js +1 -1
  14. package/development/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts +2 -0
  15. package/development/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts.map +1 -0
  16. package/development/seat-reservation/seat-reservation/seat-reservation-scoped.js +5 -0
  17. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
  18. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +2 -2
  19. package/development/timetable-row/timetable-row.component.d.ts +5 -3
  20. package/development/timetable-row/timetable-row.component.d.ts.map +1 -1
  21. package/development/timetable-row/timetable-row.component.js +5 -2
  22. package/index.d.ts +1 -1
  23. package/index.js +1 -1
  24. package/journey-summary/journey-summary.component.d.ts +5 -3
  25. package/journey-summary/journey-summary.component.d.ts.map +1 -1
  26. package/journey-summary/journey-summary.component.js +4 -1
  27. package/package.json +2 -2
  28. package/pearl-chain/pearl-chain.component.d.ts +5 -3
  29. package/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  30. package/pearl-chain/pearl-chain.component.js +4 -1
  31. package/pearl-chain-time/pearl-chain-time.component.d.ts +5 -3
  32. package/pearl-chain-time/pearl-chain-time.component.d.ts.map +1 -1
  33. package/pearl-chain-time/pearl-chain-time.component.js +4 -1
  34. package/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.d.ts.map +1 -0
  35. package/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts +2 -0
  36. package/seat-reservation/seat-reservation/seat-reservation-scoped.d.ts.map +1 -0
  37. package/seat-reservation/seat-reservation/{seat-reservation-scoped-component.js → seat-reservation-scoped.js} +1 -1
  38. package/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
  39. package/seat-reservation/seat-reservation/seat-reservation.component.js +1 -1
  40. package/timetable-row/timetable-row.component.d.ts +5 -3
  41. package/timetable-row/timetable-row.component.d.ts.map +1 -1
  42. package/timetable-row/timetable-row.component.js +4 -1
  43. package/development/seat-reservation/seat-reservation/seat-reservation-scoped-component/seat-reservation-scoped.component.d.ts.map +0 -1
  44. package/development/seat-reservation/seat-reservation/seat-reservation-scoped-component.d.ts +0 -2
  45. package/development/seat-reservation/seat-reservation/seat-reservation-scoped-component.d.ts.map +0 -1
  46. package/development/seat-reservation/seat-reservation/seat-reservation-scoped-component.js +0 -5
  47. package/seat-reservation/seat-reservation/seat-reservation-scoped-component/seat-reservation-scoped.component.d.ts.map +0 -1
  48. package/seat-reservation/seat-reservation/seat-reservation-scoped-component.d.ts +0 -2
  49. package/seat-reservation/seat-reservation/seat-reservation-scoped-component.d.ts.map +0 -1
  50. /package/development/seat-reservation/seat-reservation/{seat-reservation-scoped-component → seat-reservation-scoped}/seat-reservation-scoped.component.d.ts +0 -0
  51. /package/seat-reservation/seat-reservation/{seat-reservation-scoped-component → seat-reservation-scoped}/seat-reservation-scoped.component.d.ts +0 -0
  52. /package/seat-reservation/seat-reservation/{seat-reservation-scoped-component → seat-reservation-scoped}/seat-reservation-scoped.component.js +0 -0
@@ -19,7 +19,7 @@ import "../seat-reservation-area.js";
19
19
  import "../seat-reservation-graphic.js";
20
20
  import "../seat-reservation-place-control.js";
21
21
  import "../seat-reservation-navigation/seat-reservation-navigation-coach.js";
22
- import "./seat-reservation-scoped-component/seat-reservation-scoped.component.js";
22
+ import "./seat-reservation-scoped/seat-reservation-scoped.component.js";
23
23
  const style = css`*,
24
24
  ::before,
25
25
  ::after {
@@ -612,4 +612,4 @@ let SbbSeatReservationElement = (() => {
612
612
  export {
613
613
  SbbSeatReservationElement
614
614
  };
615
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29hY2hJdGVtLFxuICBQbGFjZSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgQmFzZUVsZW1lbnQsXG4gIFBsYWNlU2VsZWN0aW9uLFxuICBTZWF0UmVzZXJ2YXRpb24sXG59IGZyb20gJy4uL3NlYXQtcmVzZXJ2YXRpb24uanMnO1xuXG5pbXBvcnQgeyBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2guanMnO1xuaW1wb3J0ICcuL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLWNvbXBvbmVudC5qcyc7XG5cbi8qKlxuICogRGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIGNvbXBvbmVudCB3aXRoIGEgc2luZ2xlIHNob3J0IHNlbnRlbmNlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2VhdFJlc2VydmF0aW9uUGxhY2VTZWxlY3Rpb24+fSBzZWxlY3RlZFBsYWNlcyAtIEVtaXRzIHdoZW4gYSBwbGFjZSB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgYSBQbGFjZSBhcnJheSB3aXRoIGFsbCBzZWxlY3RlZCBwbGFjZXNcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2VhdFJlc2VydmF0aW9uQ29hY2hTZWxlY3Rpb24+fSBzZWxlY3RlZENvYWNoIC0gRW1pdHMgd2hlbiBhIGNvYWNoIHdhcyBzZWxlY3RlZCBhbmQgcmV0dXJucyBhIENvYWNoU2VsZWN0aW9uXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1zZWF0LXJlc2VydmF0aW9uJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbkVsZW1lbnQgZXh0ZW5kcyBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBUaGUgc2VhdCByZXNlcnZhdGlvbiBvYmplY3Qgd2hpY2ggY29udGFpbnMgYWxsIGNvYWNoZXMgYW5kIHBsYWNlcyAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZWF0LXJlc2VydmF0aW9uJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBzZWF0UmVzZXJ2YXRpb246IFNlYXRSZXNlcnZhdGlvbiA9IG51bGwhO1xuXG4gIC8qKiBUaGUgc2VhdCByZXN2ZXJ2YXRpb24gbmF2aWdhdGlvbiBjYW4gYmUgdG9nZ2xlZCBieSB0aGlzIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoYXMtbmF2aWdhdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGhhc05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBjb250cm9scyB0aGUgdmlzdWFsIHJlcHJlc2VudGlvbiBvZiBzZWF0IHJlc2VydmF0aW9uIGluIGEgaG9yaXpvbmFsIG9yIHZlcnRpY2FsIGFsaWdubWVudCAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWxpZ24tdmVydGljYWwnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBhbGlnblZlcnRpY2FsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIE1heGltYWwgbnVtYmVyIG9mIHBvc3NpYmxlIGNsaWNrYWJsZSBzZWF0cyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnbWF4LXJlc2VydmF0aW9ucycsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3IgbWF4UmVzZXJ2YXRpb25zOiBudW1iZXIgPSBudWxsITtcblxuICAvKiogQW55IGNsaWNrIGZ1bmN0aW9uYWxpdHkgaXMgcHJldmVudGVkICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwcmV2ZW50LXBsYWNlLWNsaWNrJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3IgcHJldmVudFBsYWNlQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2NvYWNoZXNIdG1sVGVtcGxhdGU/OiBUZW1wbGF0ZVJlc3VsdDtcbiAgLy8gR3JhcGhpY3MgdGhhdCBzaG91bGQgbm90IGJlIHJlbmRlcmVkIHdpdGggYW4gYXJlYVxuICBwcml2YXRlIF9ub3RBcmVhRWxlbWVudHMgPSBbXG4gICAgJ0RSSVZFUl9BUkVBX0ZVTEwnLFxuICAgICdDT0FDSF9QQVNTQUdFJyxcbiAgICAnQ09BQ0hfV0FMTF9OT19QQVNTQUdFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRScsXG4gICAgJ0NPTVBBUlRNRU5UX1BBU1NBR0VfSElHSCcsXG4gICAgJ0NPTVBBUlRNRU5UX1BBU1NBR0VfTUlERExFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9MT1cnLFxuICBdO1xuICAvLyBBcmVhIGljb25zIHRoYXQgc2hvdWxkIG5vdCBiZSBmaXhlZCBkdXJpbmcgcm90YXRpb24gd2hlbiB2ZXJ0aWNhbCBtb2RlIGlzIHNlbGVjdGVkXG4gIHByaXZhdGUgX25vdEZpeGVkUm90YXRhYmxlQXJlYUljb25zID0gWydFTlRSWV9FWElUJ107XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdoYXNOYXZpZ2F0aW9uJykpIHtcbiAgICAgIGlmICh0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpXG4gICAgICAgICAgLmZvckVhY2goKHRhYmxlKSA9PiB0YWJsZS5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpXG4gICAgICAgICAgLmZvckVhY2goKHRhYmxlKSA9PiB0YWJsZS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgdGhpcy5faW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy5fY29hY2hlc0h0bWxUZW1wbGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50U2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0TmF2aWdhdGlvblNlbGVjdGlvbkJ5U2Nyb2xsRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRWZWhpY2xlU2VhdFJlc2VydmF0aW9uQ29uc3RydWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvYWNoSXRlbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2VhdFJlc2VydmF0aW9uPy5jb2FjaEl0ZW1zKSk7XG4gICAgY29uc3QgY2xhc3NBbGlnblZlcnRpY2FsID0gdGhpcy5hbGlnblZlcnRpY2FsID8gJ3NiYi1zcl9fd3JhcHBlci0tdmVydGljYWwnIDogJyc7XG5cbiAgICB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlID0gaHRtbGBcbiAgICAgIDxkaXY+XG4gICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJmaXJzdC10YWItZWxlbWVudFwiXG4gICAgICAgICAgICByb2xlPVwiY29udGVudGluZm9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIiR7Z2V0STE4blNlYXRSZXNlcnZhdGlvbignU0VBVF9SRVNFUlZBVElPTl9CRUdJTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cblxuICAgICAgICA8ZGl2IEBrZXlkb3duPSR7KGV2dDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5oYW5kbGVLZXlib2FyZEV2ZW50KGV2dCl9PlxuICAgICAgICAgICR7dGhpcy5fcmVuZGVyTmF2aWdhdGlvbigpfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3JfX3dyYXBwZXIgJHtjbGFzc0FsaWduVmVydGljYWx9XCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwic2JiLXNyX19wYXJlbnQtYXJlYVwiIGNsYXNzPVwic2JiLXNyX19wYXJlbnRcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cInNiYi1zcl9fbGlzdC1jb2FjaGVzXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgICAgICR7dGhpcy5fcmVuZGVyQ29hY2hlcyhjb2FjaEl0ZW1zKX1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwibGFzdC10YWItZWxlbWVudFwiXG4gICAgICAgICAgICByb2xlPVwiY29udGVudGluZm9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIiR7Z2V0STE4blNlYXRSZXNlcnZhdGlvbignU0VBVF9SRVNFUlZBVElPTl9FTkQnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KX1cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyTmF2aWdhdGlvbigpOiBUZW1wbGF0ZVJlc3VsdCB8IG51bGwge1xuICAgIGlmICghdGhpcy5oYXNOYXZpZ2F0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxuYXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgJ3NiYi1zci1uYXZpZ2F0aW9uLS12ZXJ0aWNhbCc6IHRoaXMuYWxpZ25WZXJ0aWNhbCB9KX1cIj5cbiAgICAgICAgPHVsXG4gICAgICAgICAgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9fbGlzdC1jb2FjaGVzXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAgICAgJ1NFQVRfUkVTRVJWQVRJT05fTkFWSUdBVElPTicsXG4gICAgICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICAgICl9XCJcbiAgICAgICAgPlxuICAgICAgICAgICR7dGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXMubWFwKChjb2FjaEl0ZW06IENvYWNoSXRlbSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxgPGxpPlxuICAgICAgICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaFxuICAgICAgICAgICAgICAgIEBzZWxlY3RDb2FjaD0keyhldmVudDogQ3VzdG9tRXZlbnQpID0+IHRoaXMuX29uU2VsZWN0TmF2Q29hY2goZXZlbnQpfVxuICAgICAgICAgICAgICAgIEBmb2N1c0NvYWNoPSR7KCkgPT4gdGhpcy5fb25Gb2N1c05hdkNvYWNoKCl9XG4gICAgICAgICAgICAgICAgaW5kZXg9XCIke2luZGV4fVwiXG4gICAgICAgICAgICAgICAgY29hY2gtaWQ9XCIke2NvYWNoSXRlbS5pZH1cIlxuICAgICAgICAgICAgICAgIC5zZWxlY3RlZD0ke3RoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ID09PSBpbmRleH1cbiAgICAgICAgICAgICAgICAuZm9jdXNlZD0ke3RoaXMuZm9jdXNlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz1cIiR7Y29hY2hJdGVtLnByb3BlcnR5SWRzfVwiXG4gICAgICAgICAgICAgICAgLnRyYXZlbENsYXNzPVwiJHtjb2FjaEl0ZW0udHJhdmVsQ2xhc3N9XCJcbiAgICAgICAgICAgICAgICA/ZHJpdmVyLWFyZWE9XCIkeyFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGh9XCJcbiAgICAgICAgICAgICAgICA/Zmlyc3Q9XCIke2luZGV4ID09PSAwfVwiXG4gICAgICAgICAgICAgICAgP2xhc3Q9XCIke2luZGV4ID09PSB0aGlzLnNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcy5sZW5ndGggLSAxfVwiXG4gICAgICAgICAgICAgICAgP3ZlcnRpY2FsPVwiJHt0aGlzLmFsaWduVmVydGljYWx9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2g+XG4gICAgICAgICAgICA8L2xpPmA7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L25hdj5cbiAgICBgO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29hY2hlc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyQ29hY2hlcyhjb2FjaGVzPzogQ29hY2hJdGVtW10pOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvYWNoZXMubWFwKChjb2FjaEl0ZW06IENvYWNoSXRlbSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxsaSBjbGFzcz1cInNiYi1zcl9faXRlbS1jb2FjaFwiPiR7dGhpcy5fcmVuZGVyQ29hY2hFbGVtZW50KGNvYWNoSXRlbSwgaW5kZXgpfTwvbGk+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyQ29hY2hFbGVtZW50KGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihjb2FjaEl0ZW0uZGltZW5zaW9uKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXMgPSB0aGlzLl9nZXREZXNjcmlwdGlvblRhYmxlQ29hY2goY29hY2hJdGVtKTtcblxuICAgIHJldHVybiBodG1sYCA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICBzY29wZWQtY2xhc3Nlcz1cImNvYWNoLXdyYXBwZXJcIlxuICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkQ29hY2hEaW1lbnNpb24uaH1weFwiXG4gICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZENvYWNoRGltZW5zaW9uLnd9cHhcIlxuICAgID5cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRDb2FjaEJvcmRlcnMoY29hY2hJdGVtLCBpbmRleCl9XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkR3JhcGhpY2FsRWxlbWVudHMoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyB8fCBbXSwgY29hY2hJdGVtLmRpbWVuc2lvbil9XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMpfVxuICAgICAgPHRhYmxlXG4gICAgICAgIEBmb2N1cz0keygpID0+IHRoaXMub25Gb2N1c1RhYmxlQ29hY2hBbmRQcmVzZWxlY3RQbGFjZShpbmRleCl9XG4gICAgICAgIGlkPVwic2JiLXNyLWNvYWNoLSR7aW5kZXh9XCJcbiAgICAgICAgY2xhc3M9XCJzYmItc3ItY29hY2gtd3JhcHBlcl9fdGFibGVcIlxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtpbmRleH1cIlxuICAgICAgPlxuICAgICAgICA8Y2FwdGlvbiBpZD1cInNiYi1zci1jb2FjaC1jYXB0aW9uLSR7aW5kZXh9XCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PiR7ZGVzY3JpcHRpb25UYWJsZUNvYWNoV2l0aFNlcnZpY2VzfTwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgICAgPC9jYXB0aW9uPlxuICAgICAgICAke3RoaXMuX2dldFJlbmRlcmVkUm93UGxhY2VzKGNvYWNoSXRlbSwgaW5kZXgpfVxuICAgICAgPC90YWJsZT5cbiAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZD5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2FjaEJvcmRlcnMoY29hY2hJdGVtOiBDb2FjaEl0ZW0sIGNvYWNoSW5kZXg6IG51bWJlcik6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBhbGxFbGVtZW50cyA9IGNvYWNoSXRlbS5ncmFwaGljRWxlbWVudHM7XG4gICAgY29uc3QgQ09BQ0hfUEFTU0FHRV9XSURUSCA9IDE7XG4gICAgY29uc3QgZHJpdmVyQXJlYSA9IGFsbEVsZW1lbnRzPy5maW5kKFxuICAgICAgKGVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiBlbGVtZW50Lmljb24gPT09ICdEUklWRVJfQVJFQV9GVUxMJyxcbiAgICApO1xuICAgIGNvbnN0IGJvcmRlcldpZHRoID0gZHJpdmVyQXJlYVxuICAgICAgPyBjb2FjaEl0ZW0uZGltZW5zaW9uLncgLSBkcml2ZXJBcmVhLmRpbWVuc2lvbi53IC0gQ09BQ0hfUEFTU0FHRV9XSURUSFxuICAgICAgOiBjb2FjaEl0ZW0uZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIICogMjtcbiAgICBjb25zdCBib3JkZXJPZmZzZXRYID1cbiAgICAgIGNvYWNoSW5kZXggPT09IDAgJiYgZHJpdmVyQXJlYVxuICAgICAgICA/IGRyaXZlckFyZWE/LmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemVcbiAgICAgICAgOiB0aGlzLmJhc2VHcmlkU2l6ZTtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZFxuICAgICAgICBzY29wZWQtY2xhc3Nlcz1cImNvYWNoLWJvcmRlclwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHt0aGlzLmNvYWNoQm9yZGVyUGFkZGluZyAqIC0xfXB4XCJcbiAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0PVwiJHtib3JkZXJPZmZzZXRYfXB4XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBuYW1lPVwiQ09BQ0hfQk9SREVSX01JRERMRVwiXG4gICAgICAgICAgd2lkdGg9JHtib3JkZXJXaWR0aCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgIGhlaWdodD0keyhjb2FjaEl0ZW0uZGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogMikgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICA/c3RyZXRjaD0ke3RydWV9XG4gICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZD5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2g6IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghY29hY2gucGxhY2VzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBQcmVwYWlyIHJvd3Mgd2l0aCB0aGUgcGxhY2VzIHRvIHJlbmRlciBhIHRhYmxlXG4gICAgY29uc3QgdGFibGVSb3dQbGFjZXM6IFJlY29yZDxudW1iZXIsIFBsYWNlW10+ID0ge307XG4gICAgZm9yIChjb25zdCBwbGFjZSBvZiBjb2FjaC5wbGFjZXMpIHtcbiAgICAgIGlmICghdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0pIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0gPSBbcGxhY2VdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0ucHVzaChwbGFjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFibGVSb3dQbGFjZXMpXG4gICAgICAubWFwKChyb3dQbGFjZXM6IFBsYWNlW10sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx0ciBpZD1cInJvdy0ke2NvYWNoSW5kZXh9LSR7cm93UGxhY2VzWzBdLnBvc2l0aW9uLnl9XCIgZGF0YS1yb3ctaW5kZXg9JHtpbmRleH0+XG4gICAgICAgICAgICAke3RoaXMuX2dldFJlbmRlcmVkQ29sdW1uUGxhY2VzKHJvd1BsYWNlcywgY29hY2hJbmRleCl9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgYDtcbiAgICAgIH0pXG4gICAgICAuZmxhdE1hcCgocm93VGVtcGxhdGUpID0+IHJvd1RlbXBsYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkQ29sdW1uUGxhY2VzKHBsYWNlczogUGxhY2VbXSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIC8vU29ydHMgZWFjaCBwbGFjZSBieSBpdHMgYXNjZW5kaW5nIHggY29vcmRpbmF0ZVxuICAgIHBsYWNlcy5zb3J0KFxuICAgICAgKHBsYWNlQTogUGxhY2UsIHBsYWNlQjogUGxhY2UpID0+IE51bWJlcihwbGFjZUEucG9zaXRpb24ueCkgLSBOdW1iZXIocGxhY2VCLnBvc2l0aW9uLngpLFxuICAgICk7XG5cbiAgICByZXR1cm4gcGxhY2VzPy5tYXAoKHBsYWNlOiBQbGFjZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgY2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKHBsYWNlLmRpbWVuc2lvbik7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkSW50ZXJuYWxQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKHBsYWNlLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IHRleHRSb3RhdGlvbiA9IHRoaXMuYWxpZ25WZXJ0aWNhbCA/IC05MCA6IDA7XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke2NhbGN1bGF0ZWRJbnRlcm5hbFBvc2l0aW9uLnl9cHhcIlxuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZEludGVybmFsUG9zaXRpb24ueH1weFwiXG4gICAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWRJbnRlcm5hbERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRJbnRlcm5hbERpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgICB6LWluZGV4PVwiJHtwbGFjZS5wb3NpdGlvbi56fVwiXG4gICAgICAgICAgY2VsbC1pZD1cImNlbGwtJHtjb2FjaEluZGV4fS0ke3BsYWNlLnBvc2l0aW9uLnl9LSR7aW5kZXh9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sXG4gICAgICAgICAgICBAc2VsZWN0UGxhY2U9JHsoc2VsZWN0UGxhY2VFdmVudDogQ3VzdG9tRXZlbnQpID0+IHRoaXMuX29uU2VsZWN0UGxhY2Uoc2VsZWN0UGxhY2VFdmVudCl9XG4gICAgICAgICAgICBleHBvcnRwYXJ0cz1cInNiYi1zci1wbGFjZS1wYXJ0XCJcbiAgICAgICAgICAgIGlkPVwic2VhdC1yZXNlcnZhdGlvbl9fcGxhY2UtYnV0dG9uLSR7Y29hY2hJbmRleH0tJHtwbGFjZS5udW1iZXJ9XCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sXCJcbiAgICAgICAgICAgIGRhdGEtY2VsbC1pZD1cIiR7Y29hY2hJbmRleH0tJHtwbGFjZS5wb3NpdGlvbi55fS0ke2luZGV4fVwiXG4gICAgICAgICAgICB0ZXh0PSR7cGxhY2UubnVtYmVyfVxuICAgICAgICAgICAgdHlwZT0ke3BsYWNlLnR5cGV9XG4gICAgICAgICAgICBzdGF0ZT0ke3BsYWNlLnN0YXRlfVxuICAgICAgICAgICAgd2lkdGg9JHtwbGFjZS5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgaGVpZ2h0PSR7cGxhY2UuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgIHJvdGF0aW9uPSR7cGxhY2Uucm90YXRpb24gPz8gbm90aGluZ31cbiAgICAgICAgICAgIHRleHQtcm90YXRpb249JHt0ZXh0Um90YXRpb259XG4gICAgICAgICAgICBjb2FjaC1pbmRleD0ke2NvYWNoSW5kZXh9XG4gICAgICAgICAgICAucHJvcGVydHlJZHM9JHtwbGFjZS5wcm9wZXJ0eUlkc31cbiAgICAgICAgICAgIC5wcmV2ZW50Q2xpY2s9JHt0aGlzLnByZXZlbnRQbGFjZUNsaWNrfVxuICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2w+XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkR3JhcGhpY2FsRWxlbWVudHMoXG4gICAgZ3JhcGhpY2FsRWxlbWVudHM6IEJhc2VFbGVtZW50W10sXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWdyYXBoaWNhbEVsZW1lbnRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JhcGhpY2FsRWxlbWVudHM/Lm1hcCgoZ3JhcGhpY2FsRWxlbWVudDogQmFzZUVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGljb24gPSBncmFwaGljYWxFbGVtZW50Lmljb24gPz8gJyc7XG4gICAgICBjb25zdCBlbGVtZW50Um90YXRpb24gPSBncmFwaGljYWxFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBpc05vdEZpeGVkUm90YXRpb25HcmFwaGljYWxFbGVtZW50ID1cbiAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihncmFwaGljYWxFbGVtZW50Lmljb24hKSA9PT0gLTE7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9XG4gICAgICAgIHRoaXMuYWxpZ25WZXJ0aWNhbCAmJiBpc05vdEZpeGVkUm90YXRpb25HcmFwaGljYWxFbGVtZW50XG4gICAgICAgICAgPyBlbGVtZW50Um90YXRpb24gLSA5MFxuICAgICAgICAgIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICAvL2NoZWNrIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgbm90IGFuIGFyZWEgZWxlbWVudCwgc2luY2UgdGhpcyBlbGVtZW50IGlzIGRyYXduIHdpdGhvdXQgYW4gYXJlYSBjb21wb25lbnRcbiAgICAgIGlmICh0aGlzLl9ub3RBcmVhRWxlbWVudHMuZmluZEluZGV4KChub3RBcmVhRWxlbWVudCkgPT4gbm90QXJlYUVsZW1lbnQgPT09IGljb24pID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShncmFwaGljYWxFbGVtZW50LCBlbGVtZW50Um90YXRpb24sIGNvYWNoRGltZW5zaW9uKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9nZXRSZW5kZXJFbGVtZW50V2l0aEFyZWEoZ3JhcGhpY2FsRWxlbWVudCwgZWxlbWVudEZpeGVkUm90YXRpb24sIGNvYWNoRGltZW5zaW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgLy8gVE9ETyAtPiBpc05vdFRhYmxlR3JhcGhpY1RlbXBGaXggaXMgdGVtcCBmaXggdG8gc2hvdyBjb2FjaCB0YWJsZXMgYXMgYXJlYSBhbmQgbm90IGFzIHN2ZyBncmFwaGljLlxuICAgIC8vIFRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCB3aGVuIHVzaW5nIFRBQkxFIHN2ZyBncmFwaGljcyxcbiAgICAvLyB0aGV5IGFyZSBkaXNwbGF5ZWQgZGlzdG9ydGVkIGR1ZSB0byBkaWZmZXJlbnQgaGVpZ2h0cyBhbmQgd2lkdGhzIGFuZCB0aGlzIGlzIG5vdCB2aXN1YWxseSBnb29kLlxuICAgIGNvbnN0IGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbj8uaW5kZXhPZignVEFCTEUnKSA9PT0gLTE7XG5cbiAgICBjb25zdCBhcmVhUHJvcGVydHkgPVxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5pY29uICYmIGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCA/IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA6IG51bGw7XG4gICAgY29uc3Qgc3RyZXRjaEhlaWdodCA9IGFyZWFQcm9wZXJ0eSAhPT0gJ0VOVFJZX0VYSVQnO1xuICAgIGNvbnN0IGFyaWFMYWJlbEZvckFyZWEgPSBncmFwaGljYWxFbGVtZW50Lmljb25cbiAgICAgID8gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihncmFwaGljYWxFbGVtZW50Lmljb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICA6IG5vdGhpbmc7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICB0cnVlLFxuICAgICAgc3RyZXRjaEhlaWdodCxcbiAgICApO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbixcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBsZXQgZWxlbWVudE1vdW50aW5nID0gJ2ZyZWUnO1xuICAgIGlmIChncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnkgPT09IHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgKiAtMSkge1xuICAgICAgZWxlbWVudE1vdW50aW5nID0gJ3VwcGVyLWJvcmRlcic7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24ueSArIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggPT09XG4gICAgICBjb2FjaERpbWVuc2lvbi5oICsgdGhpcy5jb2FjaEJvcmRlck9mZnNldFxuICAgICkge1xuICAgICAgZWxlbWVudE1vdW50aW5nID0gJ2xvd2VyLWJvcmRlcic7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiZ3JhcGhpY2FsLWVsZW1lbnRcIlxuICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnl9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2NhbGN1bGF0ZWRQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWREaW1lbnNpb24ud31weFwiXG4gICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgei1pbmRleD1cIiR7Z3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICA+XG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhXG4gICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICAgICAnLS1zYmItcmVzZXJ2YXRpb24tYXJlYS13aWR0aCc6IGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZSxcbiAgICAgICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1hcmVhLWhlaWdodCc6IGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBtb3VudGluZz0ke2VsZW1lbnRNb3VudGluZ31cbiAgICAgICAgICBiYWNrZ3JvdW5kPVwiZGFya1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICB0aXRsZT0ke2FyaWFMYWJlbEZvckFyZWF9XG4gICAgICAgID5cbiAgICAgICAgICAke2FyZWFQcm9wZXJ0eVxuICAgICAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljXG4gICAgICAgICAgICAgICAgICBuYW1lPSR7YXJlYVByb3BlcnR5fVxuICAgICAgICAgICAgICAgICAgcm90YXRpb249JHtyb3RhdGlvbn1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPSR7dGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9JHt0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgICAgICAgICBgXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYT5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJFbGVtZW50V2l0aG91dEFyZWEoXG4gICAgZ3JhcGhpY2FsRWxlbWVudDogQmFzZUVsZW1lbnQsXG4gICAgcm90YXRpb246IG51bWJlcixcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICApO1xuXG4gICAgLy8gSWYgdGhlIGljb24gaXMgdGhlIGRyaXZlciBhcmVhLCB0aGVuIGhlcmUgY29uY2F0IHRoZSB2ZWhpY2xlIHR5cGUgdG8gZ2V0IHRoZSByaWdodCB2ZWhpY2xlIGNoYXNzaWUgaWNvblxuICAgIGNvbnN0IGljb24gPVxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5pY29uICYmIGdyYXBoaWNhbEVsZW1lbnQuaWNvbi5pbmRleE9mKCdEUklWRVJfQVJFQScpID09PSAtMVxuICAgICAgICA/IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgICA6IGdyYXBoaWNhbEVsZW1lbnQuaWNvbj8uY29uY2F0KCdfJywgdGhpcy5zZWF0UmVzZXJ2YXRpb24udmVoaWNsZVR5cGUpO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiZ3JhcGhpY2FsLWVsZW1lbnRcIlxuICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnl9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2NhbGN1bGF0ZWRQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWREaW1lbnNpb24ud31weFwiXG4gICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgei1pbmRleD1cIiR7Z3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICA+XG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljXG4gICAgICAgICAgbmFtZT0ke2ljb24gPz8gbm90aGluZ31cbiAgICAgICAgICB3aWR0aD0ke2dyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICBoZWlnaHQ9JHtncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbi5oICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgcm90YXRpb249JHtyb3RhdGlvbn1cbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFNlcnZpY2VFbGVtZW50cyhzZXJ2aWNlRWxlbWVudHM/OiBCYXNlRWxlbWVudFtdKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghc2VydmljZUVsZW1lbnRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VydmljZUVsZW1lbnRzPy5tYXAoKHNlcnZpY2VFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgdGl0bGVEZXNjcmlwdGlvbiA9IHNlcnZpY2VFbGVtZW50Lmljb25cbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKHNlcnZpY2VFbGVtZW50Lmljb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgICAgc2VydmljZUVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICAgIHNlcnZpY2VFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IHNlcnZpY2VFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9IHRoaXMuYWxpZ25WZXJ0aWNhbCA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZFxuICAgICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiZ3JhcGhpY2FsLWVsZW1lbnRcIlxuICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkY0NtcGFydG1lbnROdW1iZXJQb3NpdGlvbi55fXB4XCJcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uLnh9cHhcIlxuICAgICAgICAgIHdpZHRoPVwiJHtjYWxjdWxhdGVkY0NtcGFydG1lbnROdW1iZXJEaW1lbnNpb24ud31weFwiXG4gICAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkY0NtcGFydG1lbnROdW1iZXJEaW1lbnNpb24uaH1weFwiXG4gICAgICAgICAgei1pbmRleD1cIiR7c2VydmljZUVsZW1lbnQucG9zaXRpb24uen1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgIG5hbWU9JHtzZXJ2aWNlRWxlbWVudC5pY29uID8/IG5vdGhpbmd9XG4gICAgICAgICAgICB3aWR0aD0ke3NlcnZpY2VFbGVtZW50LmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICBoZWlnaHQ9JHtzZXJ2aWNlRWxlbWVudC5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgLnJvdGF0aW9uPSR7ZWxlbWVudEZpeGVkUm90YXRpb259XG4gICAgICAgICAgICByb2xlPVwiaW1nXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICB0aXRsZT0ke3RpdGxlRGVzY3JpcHRpb24gPz8gbm90aGluZ31cbiAgICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZD5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFuYWdlcyB0aGUgc2VsZWN0ZWQgcGxhY2UgZXZlbnQgdHJpZ2dlcmVkIGZyb20gdGhlIHBsYWNlXG4gICAqIEVhY2ggc2VsZWN0aW9uIGVtaXRzIGFuIGFycmF5IG9mIGFsbCBzZWxlY3RlZCBwbGFjZXNcbiAgICogQHBhcmFtIHNlbGVjdFBsYWNlRXZlbnRcbiAgICovXG4gIHByaXZhdGUgX29uU2VsZWN0UGxhY2Uoc2VsZWN0UGxhY2VFdmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZFBsYWNlID0gc2VsZWN0UGxhY2VFdmVudC5kZXRhaWwgYXMgUGxhY2VTZWxlY3Rpb247XG4gICAgLy8gV2UgaGF2ZSB0byBzZXQgcHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrIHRvIHRydWUsIHRvIHByZXZlbnQgYXV0b21hdGljIHNjcm9sbGluZyB0byB0aGUgbmV3IGZvY3VzZWQgcGxhY2VcbiAgICB0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljayA9IHRydWU7XG4gICAgdGhpcy5pc0NvY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICAvLyBBZGQgcGxhY2UgdG8gcGxhY2UgY29sbGVjdGlvblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyhzZWxlY3RlZFBsYWNlKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0TmF2Q29hY2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWROYXZDb2FjaEluZGV4ID0gZXZlbnQuZGV0YWlsIGFzIG51bWJlcjtcbiAgICB0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgICBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSBudWxsICYmIHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKHNlbGVjdGVkTmF2Q29hY2hJbmRleCk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggPT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG4gICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW06IENvYWNoSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9CTE9DS0VEX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIGNvYWNoSXRlbS5pZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGxldCB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSAnJztcbiAgICBjb25zdCBhcmVhRGVzY3JpcHRpb25zID0gdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyEpO1xuICAgIGNvbnN0IHNlcnZpY2VEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uc2VydmljZUVsZW1lbnRzISk7XG5cbiAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9UQUJMRV9DQVBUSU9OJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgY29hY2hJdGVtLmlkLFxuICAgIF0pO1xuXG4gICAgaWYgKCEhYXJlYURlc2NyaXB0aW9ucyB8fCAhIXNlcnZpY2VEZXNjcmlwdGlvbnMpIHtcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPVxuICAgICAgICAnLiAnICsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9IHNlcnZpY2VEZXNjcmlwdGlvbnMgKyAnLCAnICsgYXJlYURlc2NyaXB0aW9ucyArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlQ29hY2hEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGRlc2NyaXB0aW9uc0VsZW1lbnRzOiBCYXNlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bmlxdWVEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZXR1cm4gZGVzY3JpcHRpb25zRWxlbWVudHNcbiAgICAgID8ubWFwKChkZXNjcmlwdGlvbkVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IGRlc2NyaXB0aW9uRWxlbWVudC5pY29uO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgPSB1bmlxdWVEZXNjcmlwdGlvbnMuaW5kZXhPZihpY29uKSA+IC0xO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgZGVzY3JpcHRpb25FbGVtZW50Lmljb24hLFxuICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREZXNjcmlwdGlvbiA9XG4gICAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihpY29uKSA9PT0gLTEgJiZcbiAgICAgICAgICB0aGlzLl9ub3RBcmVhRWxlbWVudHMuaW5kZXhPZihpY29uKSA9PT0gLTE7XG5cbiAgICAgICAgaWYgKCFkZXNjcmlwdGlvbkFscmVheUV4aXN0KSB7XG4gICAgICAgICAgdW5pcXVlRGVzY3JpcHRpb25zLnB1c2goZGVzY3JpcHRpb25FbGVtZW50Lmljb24hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0cmFuc2xhdGlvbiAmJiAhZGVzY3JpcHRpb25BbHJlYXlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBb0NNLDZCQUF5QixNQUFBOzswQkFEOUIsY0FBYyxzQkFBc0IsQ0FBQzs7OztvQkFDRTs7Ozs7Ozs7Ozs7Ozs7OztBQUFSLEVBQUEsbUJBQVEsWUFBMEI7QUFBQTs7QUFLaEU7QUFLQTtBQUtBO0FBS0E7QUFLQTtBQXBCeUIseUJBQUEsbUNBQUEsa0JBQUEsTUFBQSwrQkFBbUMsSUFBSztBQUt4Qyx5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLGtDQUFBLEdBQUEsa0JBQUEsTUFBQSw2QkFBeUIsSUFBSTtBQUs3Qix5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLGdDQUFBLEdBQUEsa0JB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
615
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29hY2hJdGVtLFxuICBQbGFjZSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgQmFzZUVsZW1lbnQsXG4gIFBsYWNlU2VsZWN0aW9uLFxuICBTZWF0UmVzZXJ2YXRpb24sXG59IGZyb20gJy4uL3NlYXQtcmVzZXJ2YXRpb24uanMnO1xuXG5pbXBvcnQgeyBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2guanMnO1xuaW1wb3J0ICcuL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLmpzJztcblxuLyoqXG4gKiBEZXNjcmliZSB0aGUgcHVycG9zZSBvZiB0aGUgY29tcG9uZW50IHdpdGggYSBzaW5nbGUgc2hvcnQgc2VudGVuY2UuXG4gKlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTZWF0UmVzZXJ2YXRpb25QbGFjZVNlbGVjdGlvbj59IHNlbGVjdGVkUGxhY2VzIC0gRW1pdHMgd2hlbiBhIHBsYWNlIHdhcyBzZWxlY3RlZCBhbmQgcmV0dXJucyBhIFBsYWNlIGFycmF5IHdpdGggYWxsIHNlbGVjdGVkIHBsYWNlc1xuICogQGV2ZW50IHtDdXN0b21FdmVudDxTZWF0UmVzZXJ2YXRpb25Db2FjaFNlbGVjdGlvbj59IHNlbGVjdGVkQ29hY2ggLSBFbWl0cyB3aGVuIGEgY29hY2ggd2FzIHNlbGVjdGVkIGFuZCByZXR1cm5zIGEgQ29hY2hTZWxlY3Rpb25cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXNlYXQtcmVzZXJ2YXRpb24nKVxuY2xhc3MgU2JiU2VhdFJlc2VydmF0aW9uRWxlbWVudCBleHRlbmRzIFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFRoZSBzZWF0IHJlc2VydmF0aW9uIG9iamVjdCB3aGljaCBjb250YWlucyBhbGwgY29hY2hlcyBhbmQgcGxhY2VzICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NlYXQtcmVzZXJ2YXRpb24nLCB0eXBlOiBPYmplY3QgfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIHNlYXRSZXNlcnZhdGlvbjogU2VhdFJlc2VydmF0aW9uID0gbnVsbCE7XG5cbiAgLyoqIFRoZSBzZWF0IHJlc3ZlcnZhdGlvbiBuYXZpZ2F0aW9uIGNhbiBiZSB0b2dnbGVkIGJ5IHRoaXMgcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hhcy1uYXZpZ2F0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3IgaGFzTmF2aWdhdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqIGNvbnRyb2xzIHRoZSB2aXN1YWwgcmVwcmVzZW50aW9uIG9mIHNlYXQgcmVzZXJ2YXRpb24gaW4gYSBob3Jpem9uYWwgb3IgdmVydGljYWwgYWxpZ25tZW50ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhbGlnbi12ZXJ0aWNhbCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGFsaWduVmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTWF4aW1hbCBudW1iZXIgb2YgcG9zc2libGUgY2xpY2thYmxlIHNlYXRzICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdtYXgtcmVzZXJ2YXRpb25zJywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBtYXhSZXNlcnZhdGlvbnM6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBBbnkgY2xpY2sgZnVuY3Rpb25hbGl0eSBpcyBwcmV2ZW50ZWQgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ByZXZlbnQtcGxhY2UtY2xpY2snLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBwcmV2ZW50UGxhY2VDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfY29hY2hlc0h0bWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVzdWx0O1xuICAvLyBHcmFwaGljcyB0aGF0IHNob3VsZCBub3QgYmUgcmVuZGVyZWQgd2l0aCBhbiBhcmVhXG4gIHByaXZhdGUgX25vdEFyZWFFbGVtZW50cyA9IFtcbiAgICAnRFJJVkVSX0FSRUFfRlVMTCcsXG4gICAgJ0NPQUNIX1BBU1NBR0UnLFxuICAgICdDT0FDSF9XQUxMX05PX1BBU1NBR0UnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEUnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycsXG4gIF07XG4gIC8vIEFyZWEgaWNvbnMgdGhhdCBzaG91bGQgbm90IGJlIGZpeGVkIGR1cmluZyByb3RhdGlvbiB3aGVuIHZlcnRpY2FsIG1vZGUgaXMgc2VsZWN0ZWRcbiAgcHJpdmF0ZSBfbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMgPSBbJ0VOVFJZX0VYSVQnXTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2hhc05hdmlnYXRpb24nKSkge1xuICAgICAgaWYgKHRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/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+XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VzIHRoZSBzZWxlY3RlZCBwbGFjZSBldmVudCB0cmlnZ2VyZWQgZnJvbSB0aGUgcGxhY2VcbiAgICogRWFjaCBzZWxlY3Rpb24gZW1pdHMgYW4gYXJyYXkgb2YgYWxsIHNlbGVjdGVkIHBsYWNlc1xuICAgKiBAcGFyYW0gc2VsZWN0UGxhY2VFdmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbCBhcyBQbGFjZVNlbGVjdGlvbjtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29jaEdyaWRGb2N1c2FibGUgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMucHJldmVudFBsYWNlQ2xpY2spIHtcbiAgICAgIC8vIEFkZCBwbGFjZSB0byBwbGFjZSBjb2xsZWN0aW9uXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzKHNlbGVjdGVkUGxhY2UpO1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRQbGFjZUluQ29hY2goc2VsZWN0ZWRQbGFjZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25TZWxlY3ROYXZDb2FjaChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZE5hdkNvYWNoSW5kZXggPSBldmVudC5kZXRhaWwgYXMgbnVtYmVyO1xuICAgIHRoaXMuaXNLZXlib2FyZE5hdmlnYXRpb24gPSBmYWxzZTtcblxuICAgIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggIT09IG51bGwgJiYgc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXgpIHtcbiAgICAgIHRoaXMudW5mb2N1c1BsYWNlRWxlbWVudCgpO1xuICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkTmF2Q29hY2goc2VsZWN0ZWROYXZDb2FjaEluZGV4KTtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTmF2Q29hY2hJbmRleCA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRTZWxlY3RlZENvYWNoKCk7XG4gICAgICB0aGlzLnByZXNlbGVjdFBsYWNlSW5Db2FjaCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uRm9jdXNOYXZDb2FjaCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrKSB7XG4gICAgICB0aGlzLnByZXNlbGVjdFBsYWNlSW5Db2FjaCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzUGxhY2VFbGVtZW50KHRoaXMuY3VyclNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgICB0aGlzLmlzQXV0b1Njcm9sbGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGVzY3JpcHRpb25UYWJsZUNvYWNoKGNvYWNoSXRlbTogQ29hY2hJdGVtKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0JMT0NLRURfVEFCTEVfQ0FQVElPTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsIFtcbiAgICAgICAgY29hY2hJdGVtLmlkLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgbGV0IHRhYmxlQ29hY2hEZXNjcmlwdGlvbiA9ICcnO1xuICAgIGNvbnN0IGFyZWFEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzISk7XG4gICAgY29uc3Qgc2VydmljZURlc2NyaXB0aW9ucyA9IHRoaXMuX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMhKTtcblxuICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICBjb2FjaEl0ZW0uaWQsXG4gICAgXSk7XG5cbiAgICBpZiAoISFhcmVhRGVzY3JpcHRpb25zIHx8ICEhc2VydmljZURlc2NyaXB0aW9ucykge1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9XG4gICAgICAgICcuICcgKyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9BVkFJTEFCTEVfU0VSVklDRVMnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KSArICc6ICc7XG4gICAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gKz0gc2VydmljZURlc2NyaXB0aW9ucyArICcsICcgKyBhcmVhRGVzY3JpcHRpb25zICsgJy4nO1xuICAgIH1cbiAgICByZXR1cm4gdGFibGVDb2FjaERlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoZGVzY3JpcHRpb25zRWxlbWVudHM6IEJhc2VFbGVtZW50W10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHVuaXF1ZURlc2NyaXB0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICAgIHJldHVybiBkZXNjcmlwdGlvbnNFbGVtZW50c1xuICAgICAgPy5tYXAoKGRlc2NyaXB0aW9uRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBpY29uID0gZGVzY3JpcHRpb25FbGVtZW50Lmljb247XG4gICAgICAgIGlmICghaWNvbikgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb25BbHJlYXlFeGlzdCA9IHVuaXF1ZURlc2NyaXB0aW9ucy5pbmRleE9mKGljb24pID4gLTE7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICAgICBkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbiEsXG4gICAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaXNWYWxpZERlc2NyaXB0aW9uID1cbiAgICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGljb24pID09PSAtMSAmJlxuICAgICAgICAgIHRoaXMuX25vdEFyZWFFbGVtZW50cy5pbmRleE9mKGljb24pID09PSAtMTtcblxuICAgICAgICBpZiAoIWRlc2NyaXB0aW9uQWxyZWF5RXhpc3QpIHtcbiAgICAgICAgICB1bmlxdWVEZXNjcmlwdGlvbnMucHVzaChkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbiEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIXRyYW5zbGF0aW9uICYmICFkZXNjcmlwdGlvbkFscmVheUV4aXN0ICYmIGlzVmFsaWREZXNjcmlwdGlvbiA/IHRyYW5zbGF0aW9uIDogbnVsbDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChkZXNjcmlwdGlvbikgPT4gISFkZXNjcmlwdGlvbilcbiAgICAgIC5qb2luKCcsICcpO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc2VhdC1yZXNlcnZhdGlvbic6IFNiYlNlYXRSZXNlcnZhdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFvQ00sNkJBQXlCLE1BQUE7OzBCQUQ5QixjQUFjLHNCQUFzQixDQUFDOzs7O29CQUNFOzs7Ozs7Ozs7Ozs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUEwQjtBQUFBOztBQUtoRTtBQUtBO0FBS0E7QUFLQTtBQUtBO0FBcEJ5Qix5QkFBQSxtQ0FBQSxrQkFBQSxNQUFBLCtCQUFtQyxJQUFLO0FBS3hDLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsa0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZCQUF5QixJQUFJO0FBSzdCLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsZ0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZCQUF5QixLQUFLO0FBSzlCLHlCQUFBLG9DQUFBLGtCQUFBLE1BQUEsZ0NBQUEsR0FBQSxrQkFBQSxNQUFBLCtCQUEwQixJQUFLO0FBSy9CLHlCQUFBLHNDQUFBLGtCQUFBLE1BQUEsa0NBQUEsR0FBQSxrQkFBQSxNQUFBLGlDQUE2QixLQUFLO0FBRW5ELFdBQUEsNEVBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUcxQyxXQUFBLG1CQUFtQjtBQUFBLFFBQ3pCO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUE7QUFHTSxXQUFBLDhCQUE4QixDQUFDLFlBQVk7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQW5DbkQsSUFBeUIsa0JBQXlDO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFsRSxJQUF5QixnQkFBeUMsT0FBQTtBQUFBLHlCQUFBLG1DQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFLbEUsSUFBeUIsZ0JBQThCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUF2RCxJQUF5QixjQUE4QixPQUFBO0FBQUEseUJBQUEsaUNBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUt2RCxJQUF5QixnQkFBK0I7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXhELElBQXlCLGNBQStCLE9BQUE7QUFBQSx5QkFBQSxpQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLElBS3hELElBQXlCLGtCQUFnQztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBekQsSUFBeUIsZ0JBQWdDLE9BQUE7QUFBQSx5QkFBQSxtQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLElBS3pELElBQXlCLG9CQUFtQztBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBNUQsSUFBeUIsa0JBQW1DLE9BQUE7QUFBQSx5QkFBQSxxQ0FBQTtBQUFBLElBQUE7QUFBQSxJQWlCekMsV0FBVyxtQkFBdUM7O0FBQ25FLFlBQU0sV0FBVyxpQkFBaUI7QUFFOUIsVUFBQSxrQkFBa0IsSUFBSSxlQUFlLEdBQUc7QUFDMUMsWUFBSSxLQUFLLGVBQWU7QUFDakIsV0FBQUEsTUFBQSxLQUFBLGVBQUEsZ0JBQUFBLElBQ0QsaUJBQWlCLFNBQ2xCLFFBQVEsQ0FBQyxVQUFVLE1BQU0sZ0JBQWdCLFVBQVU7QUFBQSxRQUFDLE9BQ2xEO0FBQ0EscUJBQUEsZUFBQSxtQkFDRCxpQkFBaUIsU0FDbEIsUUFBUSxDQUFDLFVBQVUsTUFBTSxhQUFhLFlBQVksR0FBRztBQUFBLFFBQUM7QUFBQSxNQUMzRDtBQUFBLElBQ0Y7QUFBQSxJQUdpQixhQUFhLG1CQUF1QztBQUNyRSxZQUFNLGFBQWEsaUJBQWlCO0FBQ3BDLFdBQUssZ0JBQWU7QUFBQSxJQUFBO0FBQUEsSUFHSCxTQUFNO0FBQ3ZCLFdBQUssd0NBQXVDO0FBQzVDLGFBQU8sS0FBSyx3QkFBd0I7QUFBQSxJQUFBO0FBQUEsSUFHOUIsa0JBQWU7QUFDckIsV0FBSyxxQ0FBb0M7QUFBQSxJQUFBO0FBQUEsSUFHbkMsMENBQXVDOztBQUN2QyxZQUFBLGFBQWEsS0FBSyxNQUFNLEtBQUssV0FBVUEsTUFBQSxLQUFLLG9CQUFMLGdCQUFBQSxJQUFzQixVQUFVLENBQUM7QUFDeEUsWUFBQSxxQkFBcUIsS0FBSyxnQkFBZ0IsOEJBQThCO0FBRTlFLFdBQUssdUJBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMEJBT04sdUJBQXVCLDBCQUEwQixLQUFLLFVBQVUsT0FBTyxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx3QkFLMUUsQ0FBQyxRQUF1QixLQUFLLG9CQUFvQixHQUFHLENBQUM7QUFBQSxZQUNqRSxLQUFLLGtCQUFtQixDQUFBO0FBQUEsd0NBQ0ksa0JBQWtCO0FBQUE7QUFBQTtBQUFBLGtCQUd4QyxLQUFLLGVBQWUsVUFBVSxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQkFXdkIsdUJBQXVCLHdCQUF3QixLQUFLLFVBQVUsT0FBTyxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxJQVF0RixvQkFBaUI7O0FBQ25CLFVBQUEsQ0FBQyxLQUFLLGVBQWU7QUFDaEIsZUFBQTtBQUFBLE1BQUE7QUFHRixhQUFBO0FBQUEsb0JBQ1MsU0FBUyxFQUFFLCtCQUErQixLQUFLLGNBQWUsQ0FBQSxDQUFDO0FBQUE7QUFBQTtBQUFBLHdCQUczRCx1QkFDWiwrQkFDQSxLQUFLLFVBQVUsT0FBTyxDQUN2QjtBQUFBO0FBQUEsYUFFQ0EsTUFBQSxLQUFLLG9CQUFMLGdCQUFBQSxJQUFzQixXQUFXLElBQUksQ0FBQyxXQUFzQixVQUFpQjs7QUFDdEUsZUFBQTtBQUFBO0FBQUEsK0JBRVksQ0FBQyxVQUF1QixLQUFLLGtCQUFrQixLQUFLLENBQUM7QUFBQSw4QkFDdEQsTUFBTSxLQUFLLGlCQUFrQixDQUFBO0FBQUEseUJBQ2xDLEtBQUs7QUFBQSw0QkFDRixVQUFVLEVBQUU7QUFBQSw0QkFDWixLQUFLLHVCQUF1QixLQUFLO0FBQUEsMkJBQ2xDLEtBQUssc0JBQXNCLEtBQUs7QUFBQSxnQ0FDM0IsVUFBVSxXQUFXO0FBQUEsZ0NBQ3JCLFVBQVUsV0FBVztBQUFBLGdDQUNyQixHQUFDQSxNQUFBLFVBQVUsV0FBVixnQkFBQUEsSUFBa0IsT0FBTTtBQUFBLDBCQUMvQixVQUFVLENBQUM7QUFBQSx5QkFDWixZQUFVLFVBQUssb0JBQUwsbUJBQXNCLFdBQVcsVUFBUyxDQUFDO0FBQUEsNkJBQ2pELEtBQUssYUFBYTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BQUEsRUFJbkM7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBVUYsZUFBZSxTQUFxQjtBQUMxQyxVQUFJLENBQUMsU0FBUztBQUNMLGVBQUE7QUFBQSxNQUFBO0FBRVQsYUFBTyxRQUFRLElBQUksQ0FBQyxXQUFzQixVQUFpQjtBQUNsRCxlQUFBO0FBQUEseUNBQzRCLEtBQUssb0JBQW9CLFdBQVcsS0FBSyxDQUFDO0FBQUE7QUFBQSxNQUFBLENBRTlFO0FBQUEsSUFBQTtBQUFBLElBR0ssb0JBQW9CLFdBQXNCLE9BQWE7QUFDN0QsWUFBTSwyQkFBMkIsS0FBSyx1QkFBdUIsVUFBVSxTQUFTO0FBQzFFLFlBQUEsb0NBQW9DLEtBQUssMEJBQTBCLFNBQVM7QUFFM0UsYUFBQTtBQUFBO0FBQUEsZ0JBRUsseUJBQXlCLENBQUM7QUFBQSxlQUMzQix5QkFBeUIsQ0FBQztBQUFBO0FBQUEsUUFFakMsS0FBSyx5QkFBeUIsV0FBVyxLQUFLLENBQUM7QUFBQSxRQUMvQyxLQUFLLDhCQUE4QixVQUFVLG1CQUFtQixDQUFJLEdBQUEsVUFBVSxTQUFTLENBQUM7QUFBQSxRQUN4RixLQUFLLDRCQUE0QixVQUFVLGVBQWUsQ0FBQztBQUFBO0FBQUEsaUJBRWxELE1BQU0sS0FBSyxtQ0FBbUMsS0FBSyxDQUFDO0FBQUEsMkJBQzFDLEtBQUs7QUFBQTtBQUFBLGlEQUVpQixLQUFLO0FBQUE7QUFBQSw0Q0FFVixLQUFLO0FBQUEsb0NBQ2IsaUNBQWlDO0FBQUE7QUFBQSxVQUUzRCxLQUFLLHNCQUFzQixXQUFXLEtBQUssQ0FBQztBQUFBO0FBQUE7QUFBQSxJQUFBO0FBQUEsSUFLNUMseUJBQXlCLFdBQXNCLFlBQWtCO0FBQ3ZFLFlBQU0sY0FBYyxVQUFVO0FBQzlCLFlBQU0sc0JBQXNCO0FBQzVCLFlBQU0sYUFBYSwyQ0FBYSxLQUM5QixDQUFDLFlBQXlCLFFBQVEsU0FBUztBQUU3QyxZQUFNLGNBQWMsYUFDaEIsVUFBVSxVQUFVLElBQUksV0FBVyxVQUFVLElBQUksc0JBQ2pELFVBQVUsVUFBVSxJQUFJLHNCQUFzQjtBQUM1QyxZQUFBLGdCQUNKLGVBQWUsS0FBSyxjQUNoQix5Q0FBWSxVQUFVLEtBQUksS0FBSyxlQUMvQixLQUFLO0FBRUosYUFBQTtBQUFBO0FBQUE7QUFBQSw2QkFHa0IsS0FBSyxxQkFBcUIsRUFBRTtBQUFBLDhCQUMzQixhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBSXpCLGNBQWMsS0FBSyxZQUFZO0FBQUEsb0JBQzdCLFVBQVUsVUFBVSxJQUFJLEtBQUssb0JBQW9CLEtBQUssS0FBSyxZQUFZO0FBQUEscUJBQ3RFLElBQUk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxJQU9mLHNCQUFzQixPQUFrQixZQUFrQjtBQUM1RCxVQUFBLENBQUMsTUFBTSxRQUFRO0FBQ1YsZUFBQTtBQUFBLE1BQUE7QUFJVCxZQUFNLGlCQUEwQyxDQUFBO0FBQ3JDLGlCQUFBLFNBQVMsTUFBTSxRQUFRO0FBQ2hDLFlBQUksQ0FBQyxlQUFlLE1BQU0sU0FBUyxDQUFDLEdBQUc7QUFDckMseUJBQWUsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUs7QUFBQSxRQUFBLE9BQ3BDO0FBQ0wseUJBQWUsTUFBTSxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUs7QUFBQSxRQUFBO0FBQUEsTUFDN0M7QUFHRixhQUFPLE9BQU8sT0FBTyxjQUFjLEVBQ2hDLElBQUksQ0FBQyxXQUFvQixVQUFTO0FBQzFCLGVBQUE7QUFBQSx3QkFDUyxVQUFVLElBQUksVUFBVSxDQUFDLEVBQUUsU0FBUyxDQUFDLG9CQUFvQixLQUFLO0FBQUEsY0FDeEUsS0FBSyx5QkFBeUIsV0FBVyxVQUFVLENBQUM7QUFBQTtBQUFBO0FBQUEsTUFHM0QsQ0FBQSxFQUNBLFFBQVEsQ0FBQyxnQkFBZ0IsV0FBVztBQUFBLElBQUE7QUFBQSxJQUdqQyx5QkFBeUIsUUFBaUIsWUFBa0I7QUFFbEUsYUFBTyxLQUNMLENBQUMsUUFBZSxXQUFrQixPQUFPLE9BQU8sU0FBUyxDQUFDLElBQUksT0FBTyxPQUFPLFNBQVMsQ0FBQyxDQUFDO0FBR3pGLGFBQU8saUNBQVEsSUFBSSxDQUFDLE9BQWMsVUFBaUI7QUFDakQsY0FBTSw4QkFBOEIsS0FBSyx1QkFBdUIsTUFBTSxTQUFTO0FBQy9FLGNBQU0sNkJBQTZCLEtBQUssc0JBQXNCLE1BQU0sUUFBUTtBQUN0RSxjQUFBLGVBQWUsS0FBSyxnQkFBZ0IsTUFBTTtBQUV6QyxlQUFBO0FBQUE7QUFBQTtBQUFBLCtCQUdrQiwyQkFBMkIsQ0FBQztBQUFBLGdDQUMzQiwyQkFBMkIsQ0FBQztBQUFBLG1CQUN6Qyw0QkFBNEIsQ0FBQztBQUFBLG9CQUM1Qiw0QkFBNEIsQ0FBQztBQUFBLHFCQUM1QixNQUFNLFNBQVMsQ0FBQztBQUFBLDBCQUNYLFVBQVUsSUFBSSxNQUFNLFNBQVMsQ0FBQyxJQUFJLEtBQUs7QUFBQTtBQUFBO0FBQUEsMkJBR3RDLENBQUMscUJBQWtDLEtBQUssZUFBZSxnQkFBZ0IsQ0FBQztBQUFBO0FBQUEsaURBRWxELFVBQVUsSUFBSSxNQUFNLE1BQU07QUFBQTtBQUFBLDRCQUUvQyxVQUFVLElBQUksTUFBTSxTQUFTLENBQUMsSUFBSSxLQUFLO0FBQUEsbUJBQ2hELE1BQU0sTUFBTTtBQUFBLG1CQUNaLE1BQU0sSUFBSTtBQUFBLG9CQUNULE1BQU0sS0FBSztBQUFBLG9CQUNYLE1BQU0sVUFBVSxJQUFJLEtBQUssWUFBWTtBQUFBLHFCQUNwQyxNQUFNLFVBQVUsSUFBSSxLQUFLLFlBQVk7QUFBQSx1QkFDbkMsTUFBTSxZQUFZLE9BQU87QUFBQSw0QkFDcEIsWUFBWTtBQUFBLDBCQUNkLFVBQVU7QUFBQSwyQkFDVCxNQUFNLFdBQVc7QUFBQSw0QkFDaEIsS0FBSyxpQkFBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUFBO0FBQUEsSUFJN0M7QUFBQSxJQUdLLDhCQUNOLG1CQUNBLGdCQUFnQztBQUVoQyxVQUFJLENBQUMsbUJBQW1CO0FBQ2YsZUFBQTtBQUFBLE1BQUE7QUFHRixhQUFBLHVEQUFtQixJQUFJLENBQUMscUJBQWlDO0FBQ3hELGNBQUEsT0FBTyxpQkFBaUIsUUFBUTtBQUNoQyxjQUFBLGtCQUFrQixpQkFBaUIsWUFBWTtBQUNyRCxjQUFNLHFDQUNKLEtBQUssNEJBQTRCLFFBQVEsaUJBQWlCLElBQUssTUFBTTtBQUN2RSxjQUFNLHVCQUNKLEtBQUssaUJBQWlCLHFDQUNsQixrQkFBa0IsS0FDbEI7QUFHRixZQUFBLEtBQUssaUJBQWlCLFVBQVUsQ0FBQyxtQkFBbUIsbUJBQW1CLElBQUksSUFBSSxJQUFJO0FBQ3JGLGlCQUFPLEtBQUssNkJBQTZCLGtCQUFrQixpQkFBaUIsY0FBYztBQUFBLFFBQUE7QUFFNUYsZUFBTyxLQUFLLDBCQUEwQixrQkFBa0Isc0JBQXNCLGNBQWM7QUFBQSxNQUFBO0FBQUEsSUFDN0Y7QUFBQSxJQUdLLDBCQUNOLGtCQUNBLFVBQ0EsZ0JBQWdDOztBQUtoQyxZQUFNLDZCQUEyQkEsTUFBQSxpQkFBaUIsU0FBakIsZ0JBQUFBLElBQXVCLFFBQVEsY0FBYTtBQUU3RSxZQUFNLGVBQ0osaUJBQWlCLFFBQVEsMkJBQTJCLGlCQUFpQixPQUFPO0FBQzlFLFlBQU0sZ0JBQWdCLGlCQUFpQjtBQUNqQyxZQUFBLG1CQUFtQixpQkFBaUIsT0FDdEMsdUJBQXVCLGlCQUFpQixNQUFNLEtBQUssVUFBVSxPQUFPLElBQ3BFO0FBQ0osWUFBTSxzQkFBc0IsS0FBSyx1QkFDL0IsaUJBQWlCLFdBQ2pCLGdCQUNBLE1BQ0EsYUFBYTtBQUVULFlBQUEscUJBQXFCLEtBQUssc0JBQzlCLGlCQUFpQixVQUNqQixpQkFBaUIsV0FDakIsZ0JBQ0EsSUFBSTtBQUdOLFVBQUksa0JBQWtCO0FBQ3RCLFVBQUksaUJBQWlCLFNBQVMsTUFBTSxLQUFLLG9CQUFvQixJQUFJO0FBQzdDLDBCQUFBO0FBQUEsTUFDcEIsV0FDRSxpQkFBaUIsU0FBUyxJQUFJLGlCQUFpQixVQUFVLE1BQ3pELGVBQWUsSUFBSSxLQUFLLG1CQUN4QjtBQUNrQiwwQkFBQTtBQUFBLE1BQUE7QUFHYixhQUFBO0FBQUE7QUFBQTtBQUFBLDZCQUdrQixtQkFBbUIsQ0FBQztBQUFBLDhCQUNuQixtQkFBbUIsQ0FBQztBQUFBLGlCQUNqQyxvQkFBb0IsQ0FBQztBQUFBLGtCQUNwQixvQkFBb0IsQ0FBQztBQUFBLG1CQUNwQixpQkFBaUIsU0FBUyxDQUFDO0FBQUE7QUFBQTtBQUFBLGtCQUc1QixTQUFTO0FBQUEsUUFDZixnQ0FBZ0MsaUJBQWlCLFVBQVUsSUFBSSxLQUFLO0FBQUEsUUFDcEUsaUNBQWlDLGlCQUFpQixVQUFVLElBQUksS0FBSztBQUFBLE1BQUEsQ0FDdEUsQ0FBQztBQUFBLHFCQUNTLGVBQWU7QUFBQTtBQUFBO0FBQUEsa0JBR2xCLGdCQUFnQjtBQUFBO0FBQUEsWUFFdEIsZUFDRTtBQUFBO0FBQUEseUJBRVcsWUFBWTtBQUFBLDZCQUNSLFFBQVE7QUFBQSwwQkFDWCxLQUFLLFlBQVk7QUFBQSwyQkFDaEIsS0FBSyxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBSzlCLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBO0FBQUEsSUFNWCw2QkFDTixrQkFDQSxVQUNBLGdCQUFnQzs7QUFFaEMsWUFBTSxzQkFBc0IsS0FBSyx1QkFDL0IsaUJBQWlCLFdBQ2pCLGNBQWM7QUFFaEIsWUFBTSxxQkFBcUIsS0FBSyxzQkFDOUIsaUJBQWlCLFVBQ2pCLGlCQUFpQixXQUNqQixjQUFjO0FBSWhCLFlBQU0sT0FDSixpQkFBaUIsUUFBUSxpQkFBaUIsS0FBSyxRQUFRLGFBQWEsTUFBTSxLQUN0RSxpQkFBaUIsUUFDakJBLE1BQUEsaUJBQWlCLFNBQWpCLGdCQUFBQSxJQUF1QixPQUFPLEtBQUssS0FBSyxnQkFBZ0I7QUFFdkQsYUFBQTtBQUFBO0FBQUE7QUFBQSw2QkFHa0IsbUJBQW1CLENBQUM7QUFBQSw4QkFDbkIsbUJBQW1CLENBQUM7QUFBQSxpQkFDakMsb0JBQW9CLENBQUM7QUFBQSxrQkFDcEIsb0JBQW9CLENBQUM7QUFBQSxtQkFDcEIsaUJBQWlCLFNBQVMsQ0FBQztBQUFBO0FBQUE7QUFBQSxpQkFHN0IsUUFBUSxPQUFPO0FBQUEsa0JBQ2QsaUJBQWlCLFVBQVUsSUFBSSxLQUFLLFlBQVk7QUFBQSxtQkFDL0MsaUJBQWlCLFVBQVUsSUFBSSxLQUFLLFlBQVk7QUFBQSxxQkFDOUMsUUFBUTtBQUFBO0FBQUEscUJBRVIsSUFBSTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxJQU1mLDRCQUE0QixpQkFBK0I7QUFDakUsVUFBSSxDQUFDLGlCQUFpQjtBQUNiLGVBQUE7QUFBQSxNQUFBO0FBR0YsYUFBQSxtREFBaUIsSUFBSSxDQUFDLG1CQUErQjtBQUNwRCxjQUFBLG1CQUFtQixlQUFlLE9BQ3BDLHVCQUF1QixlQUFlLE1BQU0sS0FBSyxVQUFVLE9BQU8sSUFDbEU7QUFDSixjQUFNLHVDQUF1QyxLQUFLLHVCQUNoRCxlQUFlLFNBQVM7QUFFMUIsY0FBTSxzQ0FBc0MsS0FBSyxzQkFDL0MsZUFBZSxRQUFRO0FBRW5CLGNBQUEsa0JBQWtCLGVBQWUsWUFBWTtBQUNuRCxjQUFNLHVCQUF1QixLQUFLLGdCQUFnQixrQkFBa0IsS0FBSztBQUVsRSxlQUFBO0FBQUE7QUFBQTtBQUFBLCtCQUdrQixvQ0FBb0MsQ0FBQztBQUFBLGdDQUNwQyxvQ0FBb0MsQ0FBQztBQUFBLG1CQUNsRCxxQ0FBcUMsQ0FBQztBQUFBLG9CQUNyQyxxQ0FBcUMsQ0FBQztBQUFBLHFCQUNyQyxlQUFlLFNBQVMsQ0FBQztBQUFBO0FBQUE7QUFBQSxtQkFHM0IsZUFBZSxRQUFRLE9BQU87QUFBQSxvQkFDN0IsZUFBZSxVQUFVLElBQUksS0FBSyxZQUFZO0FBQUEscUJBQzdDLGVBQWUsVUFBVSxJQUFJLEtBQUssWUFBWTtBQUFBLHdCQUMzQyxvQkFBb0I7QUFBQTtBQUFBO0FBQUEsb0JBR3hCLG9CQUFvQixPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFBQTtBQUFBLElBSTFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBUUssZUFBZSxrQkFBNkI7QUFDbEQsWUFBTSxnQkFBZ0IsaUJBQWlCO0FBRXZDLFdBQUssaUNBQWlDO0FBQ3RDLFdBQUssc0JBQXNCO0FBQ3ZCLFVBQUEsQ0FBQyxLQUFLLG1CQUFtQjtBQUUzQixhQUFLLG9DQUFvQyxhQUFhO0FBQ3RELGFBQUssa0NBQWtDLGFBQWE7QUFBQSxNQUFBO0FBQUEsSUFDdEQ7QUFBQSxJQUdNLGtCQUFrQixPQUFrQjtBQUMxQyxZQUFNLHdCQUF3QixNQUFNO0FBQ3BDLFdBQUssdUJBQXVCO0FBRTVCLFVBQUksMEJBQTBCLFFBQVEsMEJBQTBCLEtBQUssd0JBQXdCO0FBQzNGLGFBQUssb0JBQW1CO0FBQ3hCLGFBQUsseUJBQXlCLHFCQUFxQjtBQUFBLE1BQUEsV0FDMUMsMEJBQTBCLEtBQUssd0JBQXdCO0FBQ2hFLGFBQUssMkJBQTBCO0FBQy9CLGFBQUssc0JBQXFCO0FBQUEsTUFBQTtBQUFBLElBQzVCO0FBQUEsSUFHTSxtQkFBZ0I7QUFDbEIsVUFBQSxDQUFDLEtBQUssZ0NBQWdDO0FBQ3hDLGFBQUssc0JBQXFCO0FBQUEsTUFBQSxPQUNyQjtBQUNBLGFBQUEsa0JBQWtCLEtBQUssaUJBQWlCO0FBQUEsTUFBQTtBQUUvQyxXQUFLLGtCQUFrQjtBQUFBLElBQUE7QUFBQSxJQUdqQiwwQkFBMEIsV0FBb0I7O0FBQ2hELFVBQUEsR0FBQ0EsTUFBQSxVQUFVLFdBQVYsZ0JBQUFBLElBQWtCLFNBQVE7QUFDN0IsZUFBTyx1QkFBdUIsK0JBQStCLEtBQUssVUFBVSxTQUFTO0FBQUEsVUFDbkYsVUFBVTtBQUFBLFFBQUEsQ0FDWDtBQUFBLE1BQUE7QUFHSCxVQUFJLHdCQUF3QjtBQUM1QixZQUFNLG1CQUFtQixLQUFLLCtCQUErQixVQUFVLGVBQWdCO0FBQ3ZGLFlBQU0sc0JBQXNCLEtBQUssK0JBQStCLFVBQVUsZUFBZ0I7QUFFMUYsOEJBQXdCLHVCQUF1Qix1QkFBdUIsS0FBSyxVQUFVLFNBQVM7QUFBQSxRQUM1RixVQUFVO0FBQUEsTUFBQSxDQUNYO0FBRUQsVUFBSSxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxxQkFBcUI7QUFDL0MsaUNBQ0UsT0FBTyx1QkFBdUIsNEJBQTRCLEtBQUssVUFBVSxPQUFPLElBQUk7QUFDN0QsaUNBQUEsc0JBQXNCLE9BQU8sbUJBQW1CO0FBQUEsTUFBQTtBQUVwRSxhQUFBO0FBQUEsSUFBQTtBQUFBLElBR0QsK0JBQStCLHNCQUFtQztBQUN4RSxZQUFNLHFCQUErQixDQUFBO0FBRTlCLGFBQUEsNkRBQ0gsSUFBSSxDQUFDLHVCQUFzQjtBQUMzQixjQUFNLE9BQU8sbUJBQW1CO0FBQ2hDLFlBQUksQ0FBQztBQUFhLGlCQUFBO0FBRWxCLGNBQU0seUJBQXlCLG1CQUFtQixRQUFRLElBQUksSUFBSTtBQUNsRSxjQUFNLGNBQWMsdUJBQ2xCLG1CQUFtQixNQUNuQixLQUFLLFVBQVUsT0FBTztBQUVsQixjQUFBLHFCQUNKLEtBQUssNEJBQTRCLFFBQVEsSUFBSSxNQUFNLE1BQ25ELEtBQUssaUJBQWlCLFFBQVEsSUFBSSxNQUFNO0FBRTFDLFlBQUksQ0FBQyx3QkFBd0I7QUFDUiw2QkFBQSxLQUFLLG1CQUFtQixJQUFLO0FBQUEsUUFBQTtBQUVsRCxlQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsMEJBQTBCLHFCQUFxQixjQUFjO0FBQUEsTUFBQSxHQUV2RixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxhQUMxQixLQUFLO0FBQUEsSUFBSTtBQUFBLEtBM2lCZCxtREFLQSxpREFLQSxpREFLQSxtREFLQTs7bUNBckJDLFNBQVMsRUFBRSxXQUFXLG9CQUFvQixNQUFNLE9BQUEsQ0FBUSxDQUFDO0FBSXpELGdDQUFBLENBQUEsVUFBVyxHQUNYLFNBQVMsRUFBRSxXQUFXLGtCQUFrQixNQUFNLFNBQVMsQ0FBQztBQUl4RCxnQ0FBQSxDQUFBLFVBQVcsR0FDWCxTQUFTLEVBQUUsV0FBVyxrQkFBa0IsTUFBTSxTQUFTLENBQUM7QUFJeEQsa0NBQUEsQ0FBQSxVQUFXLEdBQ1gsU0FBUyxFQUFFLFdBQVcsb0JBQW9CLE1BQU0sUUFBUSxDQUFDO0FBSXpELG9DQUFBLENBQUEsVUFBVyxHQUNYLFNBQVMsRUFBRSxXQUFXLHVCQUF1QixNQUFNLFNBQVMsQ0FBQztBQW5CckMsaUJBQUEsSUFBQSxNQUFBLDZCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsbUJBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEscUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGlCQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGtCQUF5QztBQUFBLFNBQUEsVUFBQSxhQUFBLCtCQUFBLGtDQUFBO0FBS3pDLGlCQUFBLElBQUEsTUFBQSwyQkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLGlCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLG1CQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxlQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGdCQUE4QjtBQUFBLFNBQUEsVUFBQSxhQUFBLDZCQUFBLGdDQUFBO0FBSzlCLGlCQUFBLElBQUEsTUFBQSwyQkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLGlCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLG1CQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxlQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGdCQUErQjtBQUFBLFNBQUEsVUFBQSxhQUFBLDZCQUFBLGdDQUFBO0FBSy9CLGlCQUFBLElBQUEsTUFBQSw2QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLG1CQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHFCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxpQkFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxrQkFBZ0M7QUFBQSxTQUFBLFVBQUEsYUFBQSwrQkFBQSxrQ0FBQTtBQUtoQyxpQkFBQSxJQUFBLE1BQUEsK0JBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxxQkFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSx1QkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQUEsbUJBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsb0JBQW1DO0FBQUEsU0FBQSxVQUFBLGFBQUEsaUNBQUEsb0NBQUE7QUF6QjlELGlCQWtqQkMsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQWpqQndCLEdBQU0sU0FBbUIsT0FENUMsa0JBQXlCLFlBQUEsdUJBQUEsR0FBQzs7OyJ9
@@ -1,4 +1,3 @@
1
- import { SbbDateLike } from '@sbb-esta/lyne-elements/core/interfaces.js';
2
1
  import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
3
2
  import { ITripItem, Notice, PtSituation } from '../core/timetable.js';
4
3
  /** HimCus interface for mapped icon name and text */
@@ -61,8 +60,11 @@ export declare class SbbTimetableRowElement extends LitElement {
61
60
  accessor accessibilityExpanded: boolean;
62
61
  /** When this prop is true the sbb-card will be in the active state. */
63
62
  accessor active: boolean;
64
- /** A configured date which acts as the current date instead of the real current date. Recommended for testing purposes. */
65
- set now(value: SbbDateLike | undefined);
63
+ /**
64
+ * A configured date which acts as the current date instead of the real current date.
65
+ * Only recommended for testing purposes.
66
+ */
67
+ set now(value: Date | null);
66
68
  get now(): Date;
67
69
  private _now;
68
70
  private _language;
@@ -1 +1 @@
1
- {"version":3,"file":"timetable-row.component.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/timetable-row/timetable-row.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timetable-row.component.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/timetable-row/timetable-row.component.ts"],"names":[],"mappings":"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"}
@@ -519,7 +519,10 @@ let SbbTimetableRowElement = (() => {
519
519
  set active(value) {
520
520
  __privateSet(this, _active_accessor_storage, value);
521
521
  }
522
- /** A configured date which acts as the current date instead of the real current date. Recommended for testing purposes. */
522
+ /**
523
+ * A configured date which acts as the current date instead of the real current date.
524
+ * Only recommended for testing purposes.
525
+ */
523
526
  set now(value) {
524
527
  this._now = defaultDateAdapter.getValidDateOrNull(defaultDateAdapter.deserialize(value));
525
528
  }
@@ -817,4 +820,4 @@ export {
817
820
  renderStringProduct,
818
821
  sortSituation
819
822
  };
820
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvdGltZXRhYmxlLXJvdy90aW1ldGFibGUtcm93LmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGRlZmF1bHREYXRlQWRhcHRlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kb20uanMnO1xuaW1wb3J0IHtcbiAgaTE4bkFycml2YWwsXG4gIGkxOG5DbGFzcyxcbiAgaTE4bkRlcGFydHVyZSxcbiAgaTE4bkRpcmVjdGlvbixcbiAgaTE4bkZyb21QbGF0Zm9ybSxcbiAgaTE4bk1lYW5zT2ZUcmFuc3BvcnQsXG4gIGkxOG5OZXcsXG4gIGkxOG5PY2N1cGFuY3ksXG4gIGkxOG5SZWFsVGltZUluZm8sXG4gIGkxOG5TdXBlcnNhdmVyLFxuICBpMThuVHJhbnNmZXJQcm9jZWR1cmUsXG4gIGkxOG5UcmFuc2ZlclByb2NlZHVyZXMsXG4gIGkxOG5UcmF2ZWxoaW50cyxcbiAgaTE4blRyaXBEdXJhdGlvbixcbiAgaTE4blRyaXBRdWF5Q2hhbmdlLFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlTGlrZSwgU2JiT2NjdXBhbmN5IH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBkdXJhdGlvblRvVGltZSwgcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyB9IGZyb20gJy4uL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHR5cGUgeyBJVHJpcEl0ZW0sIE5vdGljZSwgUHRSaWRlTGVnLCBQdFNpdHVhdGlvbiB9IGZyb20gJy4uL2NvcmUvdGltZXRhYmxlLmpzJztcbmltcG9ydCB7IGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlLCBpc1JpZGVMZWcgfSBmcm9tICcuLi9jb3JlL3RpbWV0YWJsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RpbWV0YWJsZS1yb3cuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jYXJkLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5qcyc7XG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3RpbWV0YWJsZS1vY2N1cGFuY3kuanMnO1xuaW1wb3J0ICcuLi9wZWFybC1jaGFpbi10aW1lLmpzJztcblxuLyoqIEhpbUN1cyBpbnRlcmZhY2UgZm9yIG1hcHBlZCBpY29uIG5hbWUgYW5kIHRleHQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGltQ3VzIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqIEJvYXJkaW5nIGljb24gaW50ZXJmYWNlIGZvciBtYXBwZWQgaWNvbiBuYW1lIGFuZCB0ZXh0ICovXG5leHBvcnQgaW50ZXJmYWNlIEJvYXJkaW5nIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2Uge1xuICBwcmljZT86IHN0cmluZztcbiAgdGV4dD86IHN0cmluZztcbiAgaXNEaXNjb3VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCByZW5kZXJJY29uUHJvZHVjdCA9IChpY29uOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0ID0+IHtcbiAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0XCI+XG4gICAgPHNiYi1pY29uIG5hbWU9JHtpY29ufT48L3NiYi1pY29uPlxuICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7bmFtZX08L3NwYW4+XG4gIDwvc3Bhbj5gO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlclN0cmluZ1Byb2R1Y3QgPSAodmVoaWNsZU5hbWU6IHN0cmluZywgbGluZT86IHN0cmluZyB8IG51bGwpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIGNvbnN0IHNwYWNlID0gWydNJywgJ0InLCAnVCddLmluY2x1ZGVzKHZlaGljbGVOYW1lKSA/ICcgJyA6ICcnO1xuICByZXR1cm4gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnRudW1iZXJcIj5cbiAgICAke2xpbmUgIT09IG51bGwgPyB2ZWhpY2xlTmFtZSArIHNwYWNlICsgbGluZSA6IHZlaGljbGVOYW1lfVxuICA8L3NwYW4+YDtcbn07XG5cbmNvbnN0IGdldFJlYWNoYWJsZVRleHQgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVhY2hhYmxlVGV4dCk/LnNlcnZpY2VKb3VybmV5XG4gICAgPy5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVhY2hhYmxlVGV4dDtcbn07XG5cbmNvbnN0IGdldERlbGF5VGV4dCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiBsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5kZWxheVRleHQpPy5zZXJ2aWNlSm91cm5leVxuICAgID8uc2VydmljZUFsdGVyYXRpb24/LmRlbGF5VGV4dDtcbn07XG5cbmNvbnN0IGdldFJlZGlyZWN0ZWRUZXh0ID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+ICEhbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVkaXJlY3RlZFRleHQpXG4gICAgPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnJlZGlyZWN0ZWRUZXh0O1xufTtcblxuY29uc3QgZ2V0VW5wbGFubmVkU3RvcCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiAhIWxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnVucGxhbm5lZFN0b3BQb2ludHNUZXh0KVxuICAgID8uc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy51bnBsYW5uZWRTdG9wUG9pbnRzVGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBzb3J0U2l0dWF0aW9uID0gKHNpdHVhdGlvbnM6IFB0U2l0dWF0aW9uW10pOiBQdFNpdHVhdGlvbltdID0+IHtcbiAgY29uc3QgcHJpb3JpdGllcyA9IHtcbiAgICBESVNUVVJCQU5DRTogMCxcbiAgICBJTkZPUk1BVElPTjogMSxcbiAgICBERUxBWTogMixcbiAgICBUUkFJTl9SRVBMQUNFTUVOVF9CWV9CVVM6IDMsXG4gICAgQ09OU1RSVUNUSU9OX1NJVEU6IDQsXG4gICAgRU5EX01FU1NBR0U6IDUsXG4gIH07XG5cbiAgcmV0dXJuIFsuLi5zaXR1YXRpb25zXT8uc29ydChcbiAgICAoYTogUHRTaXR1YXRpb24sIGI6IFB0U2l0dWF0aW9uKSA9PiBwcmlvcml0aWVzW2EuY2F1c2UhXSAtIHByaW9yaXRpZXNbYi5jYXVzZSFdLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpbUljb24gPSAoc2l0dWF0aW9uOiBQdFNpdHVhdGlvbik6IEhpbUN1cyA9PiB7XG4gIHN3aXRjaCAoc2l0dWF0aW9uPy5jYXVzZSkge1xuICAgIGNhc2UgJ0RJU1RVUkJBTkNFJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdkaXNydXB0aW9uJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcz8ubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdJTkZPUk1BVElPTic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnaW5mbycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdERUxBWSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnZGVsYXknLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgY2FzZSAnVFJBSU5fUkVQTEFDRU1FTlRfQllfQlVTJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdyZXBsYWNlbWVudGJ1cycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdDT05TVFJVQ1RJT05fU0lURSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnY29uc3RydWN0aW9uJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnaW5mbycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cyA9ICh0cmlwOiBJVHJpcEl0ZW0sIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nKTogSGltQ3VzID0+IHtcbiAgY29uc3QgeyBzdW1tYXJ5LCBsZWdzIH0gPSB0cmlwIHx8IHt9O1xuICBjb25zdCByaWRlTGVncyA9IGxlZ3M/LmZpbHRlcigobGVnKSA9PiBpc1JpZGVMZWcobGVnKSkgYXMgUHRSaWRlTGVnW107XG4gIGNvbnN0IHsgdHJpcFN0YXR1cyB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICBpZiAodHJpcFN0YXR1cz8uY2FuY2VsbGVkIHx8IHRyaXBTdGF0dXM/LnBhcnRpYWxseUNhbmNlbGxlZClcbiAgICByZXR1cm4geyBuYW1lOiAnY2FuY2VsbGF0aW9uJywgdGV4dDogdHJpcFN0YXR1cz8uY2FuY2VsbGVkVGV4dCB9O1xuICBpZiAoZ2V0UmVhY2hhYmxlVGV4dChyaWRlTGVncykpXG4gICAgcmV0dXJuIHsgbmFtZTogJ21pc3NlZC1jb25uZWN0aW9uJywgdGV4dDogZ2V0UmVhY2hhYmxlVGV4dChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LmFsdGVybmF0aXZlKSByZXR1cm4geyBuYW1lOiAnYWx0ZXJuYXRpdmUnLCB0ZXh0OiB0cmlwU3RhdHVzLmFsdGVybmF0aXZlVGV4dCB9O1xuICBpZiAoZ2V0UmVkaXJlY3RlZFRleHQocmlkZUxlZ3MpKSByZXR1cm4geyBuYW1lOiAncmVyb3V0ZScsIHRleHQ6IGdldFJlZGlyZWN0ZWRUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAoZ2V0VW5wbGFubmVkU3RvcChyaWRlTGVncykpIHJldHVybiB7IG5hbWU6ICdhZGQtc3RvcCcsIHRleHQ6IGdldFVucGxhbm5lZFN0b3AocmlkZUxlZ3MpIH07XG4gIGlmICh0cmlwU3RhdHVzPy5kZWxheWVkIHx8IHRyaXBTdGF0dXM/LmRlbGF5ZWRVbmtub3duKVxuICAgIHJldHVybiB7IG5hbWU6ICdkZWxheScsIHRleHQ6IGdldERlbGF5VGV4dChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LnF1YXlDaGFuZ2VkKSB7XG4gICAgY29uc3QgZGVwYXJ0dXJlID0gcmlkZUxlZ3NbMF0uZGVwYXJ0dXJlO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAncGxhdGZvcm0tY2hhbmdlJyxcbiAgICAgIHRleHQ6IGRlcGFydHVyZS5xdWF5Q2hhbmdlZCA/IGRlcGFydHVyZS5xdWF5Q2hhbmdlZFRleHQgOiBpMThuVHJpcFF1YXlDaGFuZ2VbY3VycmVudExhbmd1YWdlXSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHt9IGFzIEhpbUN1cztcbn07XG5cbmNvbnN0IGZpbmRBbmRSZXBsYWNlTm90aWNlID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmVzZXJ2YXRpb25Ob3RpY2UgPSBbJ1JSJywgJ1JLJywgJ1JDJywgJ1JMJywgJ1JNJywgJ1JTJywgJ1JVJywgJ1hQJywgJ1hSJywgJ1hUJ107XG5cbiAgcmV0dXJuIG5vdGljZXMucmVkdWNlKChmb3VuZE5vdGljZTogTm90aWNlIHwgdW5kZWZpbmVkLCBub3RpY2U6IE5vdGljZSk6IE5vdGljZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGZvdW5kTm90aWNlKSByZXR1cm4gZm91bmROb3RpY2U7XG4gICAgaWYgKHJlc2VydmF0aW9uTm90aWNlLmluY2x1ZGVzKG5vdGljZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIHsgLi4ubm90aWNlLCBuYW1lOiAnUlInIH0gYXMgTm90aWNlO1xuICAgIH1cbiAgfSwgdW5kZWZpbmVkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJOb3RpY2VzID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlW10gPT4ge1xuICBjb25zdCBhbGxvd2VkTmFtZXMgPSBbJ1onLCAnU0InLCAnU1onLCAnVlInLCAnVEcnXTtcblxuICBjb25zdCBmaWx0ZXJOb3RpY2UgPSBub3RpY2VzLmZpbHRlcigobm90aWNlLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBub3RpY2VzLmZpbmRJbmRleCgobikgPT4gbi5uYW1lID09PSBub3RpY2UubmFtZSkgPT09IGluZGV4O1xuICB9KTtcblxuICByZXR1cm4gZmlsdGVyTm90aWNlXG4gICAgLmZpbHRlcigobm90aWNlKSA9PiBhbGxvd2VkTmFtZXMuaW5jbHVkZXMobm90aWNlLm5hbWUpKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhbGxvd2VkTmFtZXMuaW5kZXhPZihhLm5hbWUpIC0gYWxsb3dlZE5hbWVzLmluZGV4T2YoYi5uYW1lKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlTm90aWNlcyA9IChub3RpY2VzOiBOb3RpY2VbXSk6IE5vdGljZVtdID0+IHtcbiAgY29uc3QgcmVzZXJ2YXRpb25Ob3RpY2UgPSBmaW5kQW5kUmVwbGFjZU5vdGljZShub3RpY2VzKTtcbiAgY29uc3QgZmlsdGVyZWROb3RpY2VzID0gZmlsdGVyTm90aWNlcyhub3RpY2VzKTtcblxuICBpZiAocmVzZXJ2YXRpb25Ob3RpY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZpbHRlcmVkTm90aWNlcztcbiAgaWYgKCFmaWx0ZXJlZE5vdGljZXMubGVuZ3RoKSByZXR1cm4gW3Jlc2VydmF0aW9uTm90aWNlXTtcblxuICBpZiAoZmlsdGVyZWROb3RpY2VzWzBdLm5hbWUgPT09ICdaJyAmJiBmaWx0ZXJlZE5vdGljZXNbMV0pIHtcbiAgICByZXR1cm4gW2ZpbHRlcmVkTm90aWNlc1swXSwgcmVzZXJ2YXRpb25Ob3RpY2UsIGZpbHRlcmVkTm90aWNlc1sxXV0uY29uY2F0KFxuICAgICAgZmlsdGVyZWROb3RpY2VzLnNsaWNlKDIpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gW3Jlc2VydmF0aW9uTm90aWNlLCAuLi5maWx0ZXJlZE5vdGljZXNdO1xufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJpcCwgYWN0aW5nIGFzIGEgY29udGFpbmVyIGZvciBhbGwgdGhlIGBzYmItdGltZXRhYmxlLSpgIGNvbXBvbmVudHMuXG4gKiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRpbWV0YWJsZS1yb3cnKVxuY2xhc3MgU2JiVGltZXRhYmxlUm93RWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHRyaXAgUHJvcC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciB0cmlwOiBJVHJpcEl0ZW0gPSBudWxsITtcblxuICAvKiogVGhlIHByaWNlIFByb3AsIHdoaWNoIGNvbnNpc3RzIG9mIHRoZSBkYXRhIGZvciB0aGUgYmFkZ2UuICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IE9iamVjdCB9KSBwdWJsaWMgYWNjZXNzb3IgcHJpY2U6IFByaWNlID0gbnVsbCE7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIHNiYi1wZWFybC1jaGFpbiBjb21wb25lbnQgLSBpZiB0cnVlIHRoZSBwb3NpdGlvbiB3b24ndCBiZSBhbmltYXRlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUtYW5pbWF0aW9uJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZUFuaW1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSBub3RpY2VzIHNlY3Rpb24gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciBib2FyZGluZzogQm9hcmRpbmcgPSBudWxsITtcblxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgc3RhdGUgLVxuICAgKiB3aGVuIHRoaXMgaXMgdHJ1ZSBpdCB3aWxsIGJlIHJlbmRlciBza2VsZXRvbiB3aXRoIGFuIGlkbGluZyBhbmltYXRpb25cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb2FkaW5nLXRyaXAnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsb2FkaW5nVHJpcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgRm9vdHBhdGggYXR0cmlidXRlIGZvciByZW5kZXJpbmcgZGlmZmVyZW50IGljb25zXG4gICAqIHRydWU6IHJlbmRlciBhMTF5LWljb25cbiAgICogZmFsc2U6IHJlbmRlciB3YWxrLWljb25cbiAgICogZGVmYXVsdDogcmVuZGVyIHdhbGstaWNvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ExMXktZm9vdHBhdGgnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhMTF5Rm9vdHBhdGg6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgc3RhdGUgLVxuICAgKiB3aGVuIHRoaXMgaXMgdHJ1ZSBpdCB3aWxsIGJlIHJlbmRlciBza2VsZXRvbiB3aXRoIGFuIGlkbGluZyBhbmltYXRpb25cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb2FkaW5nLXByaWNlJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbG9hZGluZ1ByaWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhpZGRlbiBsYWJlbCBmb3IgdGhlIGNhcmQgYWN0aW9uLiBJdCBvdmVycmlkZXMgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFjY2Vzc2liaWxpdHkgdGV4dCBmb3IgdGhlIGNvbXBvbmVudC4gVXNlIHRoaXMgcHJvcCB0byBwcm92aWRlIGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2NhcmQtYWN0aW9uLWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgY2FyZEFjdGlvbkxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgc2JiLWNhcmQgY29tcG9uZW50IGFzIGFyaWEtZXhwYW5kZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWV4cGFuZGVkJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZW4gdGhpcyBwcm9wIGlzIHRydWUgdGhlIHNiYi1jYXJkIHdpbGwgYmUgaW4gdGhlIGFjdGl2ZSBzdGF0ZS4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2UgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ub3cgPSBkZWZhdWx0RGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKGRlZmF1bHREYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyBnZXQgbm93KCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9ub3cgPz8gbmV3IERhdGUoKTtcbiAgfVxuICBwcml2YXRlIF9ub3c6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsb2FkaW5nVHJpcCcpKSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLCAncm9sZScsICF0aGlzLmxvYWRpbmdUcmlwID8gJ3Jvd2dyb3VwJyA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgc2tlbGV0b24gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGluZyBzdGF0ZSAqL1xuICBwcml2YXRlIF9yZW5kZXJTa2VsZXRvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLWNhcmQgc2l6ZT1cImxcIiBjbGFzcz1cInNiYi1sb2FkaW5nXCI+XG4gICAgICAgICR7dGhpcy5sb2FkaW5nUHJpY2VcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYXJkLWJhZGdlIGNsYXNzPVwic2JiLWxvYWRpbmdfX2JhZGdlXCI+PC9zYmItY2FyZC1iYWRnZT5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3Jvd1wiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fcm93XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1sb2FkaW5nX19yb3dcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NiYi1jYXJkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSaWRlTGVncygpOiBQdFJpZGVMZWdbXSB7XG4gICAgcmV0dXJuIHRoaXMudHJpcD8ubGVncz8uZmlsdGVyKChsZWcpID0+IGlzUmlkZUxlZyhsZWcpKSA/PyBbXTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFF1YXlUeXBlU3RyaW5ncygpOiB7IGxvbmc6IHN0cmluZzsgc2hvcnQ6IHN0cmluZyB9IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnRyaXAuc3VtbWFyeT8ucHJvZHVjdCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmlkZUxlZ3MgPSB0aGlzLl9nZXRSaWRlTGVncygpO1xuICAgIGNvbnN0IGlzU2hvcnQgPSB0aGlzLnRyaXAuc3VtbWFyeS5wcm9kdWN0Py52ZWhpY2xlTW9kZSA9PT0gJ1RSQUlOJztcbiAgICBjb25zdCBzaG9ydCA9IGlzU2hvcnRcbiAgICAgID8gcmlkZUxlZ3NbMF0uc2VydmljZUpvdXJuZXkucXVheVR5cGVTaG9ydE5hbWUgfHwgJydcbiAgICAgIDogcmlkZUxlZ3NbMF0uc2VydmljZUpvdXJuZXkucXVheVR5cGVOYW1lIHx8ICcnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvbmc6IGkxOG5Gcm9tUGxhdGZvcm1bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0gKyAnICcgKyBzaG9ydCxcbiAgICAgIHNob3J0LFxuICAgIH07XG4gIH1cblxuICAvKiogbWFwIFF1YXkgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyUXVheVR5cGUoKTogVGVtcGxhdGVSZXN1bHQgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy50cmlwLnN1bW1hcnk/LnByb2R1Y3QpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcXVheVR5cGVTdHJpbmdzID0gdGhpcy5fZ2V0UXVheVR5cGVTdHJpbmdzKCk7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy0tcXVheVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke3F1YXlUeXBlU3RyaW5ncz8ubG9uZ30mbmJzcDs8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LS1xdWF5LXR5cGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID4ke3F1YXlUeXBlU3RyaW5ncz8uc2hvcnR9PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSGltQ3VzKHRyaXA6IElUcmlwSXRlbSk6IHsgY3VzOiBIaW1DdXMgfCBudWxsOyBoaW06IEhpbUN1cyB8IG51bGwgfSB7XG4gICAgY29uc3QgeyBzaXR1YXRpb25zIH0gPSB0cmlwIHx8IHt9O1xuICAgIGNvbnN0IHNvcnRlZFNpdHVhdGlvbnMgPSBzaXR1YXRpb25zICYmIHNvcnRTaXR1YXRpb24oc2l0dWF0aW9ucyk7XG4gICAgY29uc3QgY3VzID0gZ2V0Q3VzKHRyaXAsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGN1czogT2JqZWN0LmtleXMoY3VzKT8ubGVuZ3RoID8gY3VzIDogbnVsbCxcbiAgICAgIGhpbTogc2l0dWF0aW9ucz8ubGVuZ3RoID8gZ2V0SGltSWNvbihzb3J0ZWRTaXR1YXRpb25zWzBdKSA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEFjY2Vzc2liaWxpdHlUZXh0KHRyaXA6IElUcmlwSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBzdW1tYXJ5LCBsZWdzLCBub3RpY2VzIH0gPSB0cmlwIHx8IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIGRlcGFydHVyZVdhbGssXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgb2NjdXBhbmN5LFxuICAgICAgZHVyYXRpb24sXG4gICAgfSA9IHN1bW1hcnkgfHwge307XG5cbiAgICBjb25zdCB7IGRlcGFydHVyZVRpbWVBdHRyaWJ1dGUsIGFycml2YWxUaW1lQXR0cmlidXRlIH0gPSBnZXREZXBhcnR1cmVBcnJpdmFsVGltZUF0dHJpYnV0ZShcbiAgICAgIGxlZ3MsXG4gICAgICBkZXBhcnR1cmVXYWxrIHx8IDAsXG4gICAgICBhcnJpdmFsV2FsayB8fCAwLFxuICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgIHRoaXMuYTExeUZvb3RwYXRoLFxuICAgICk7XG5cbiAgICBjb25zdCByaWRlTGVncyA9IHRoaXMuX2dldFJpZGVMZWdzKCk7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVUaW1lOiBEYXRlIHwgdW5kZWZpbmVkID0gZGVwYXJ0dXJlPy50aW1lXG4gICAgICA/IHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcoZGVwYXJ0dXJlLnRpbWUpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGFycml2YWxUaW1lOiBEYXRlIHwgdW5kZWZpbmVkID0gYXJyaXZhbD8udGltZVxuICAgICAgPyByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKGFycml2YWwudGltZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZGVwYXJ0dXJlV2Fsa1RleHQgPSBkZXBhcnR1cmVUaW1lQXR0cmlidXRlXG4gICAgICA/IGAke2RlcGFydHVyZVRpbWVBdHRyaWJ1dGUudGV4dH0gJHtkZXBhcnR1cmVUaW1lQXR0cmlidXRlLmR1cmF0aW9ufSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGFycml2YWxXYWxrVGV4dCA9IGFycml2YWxUaW1lQXR0cmlidXRlXG4gICAgICA/IGAke2Fycml2YWxUaW1lQXR0cmlidXRlLnRleHR9ICR7YXJyaXZhbFRpbWVBdHRyaWJ1dGUuZHVyYXRpb259LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgZGVwYXJ0dXJlVGltZVRleHQgPSBkZXBhcnR1cmVUaW1lXG4gICAgICA/IGAke2kxOG5EZXBhcnR1cmVbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2Zvcm1hdChkZXBhcnR1cmVUaW1lLCAnSEg6bW0nKX0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBnZXREZXBhcnR1cmVRdWF5VGV4dCA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgaWYgKCFkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWQpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICAvLyBhZGQgcHJlZml4IFwibmV3XCIgaWYgcXVheSB3YXMgY2hhbmdlZFxuICAgICAgY29uc3QgY2hhbmdlZFF1YXlQcmVmaXggPSBkZXBhcnR1cmU/LnF1YXlDaGFuZ2VkID8gYCR7aTE4bk5ld1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gYCA6ICcnO1xuICAgICAgcmV0dXJuIGAke2NoYW5nZWRRdWF5UHJlZml4fSR7XG4gICAgICAgIHRoaXMuX2dldFF1YXlUeXBlU3RyaW5ncygpPy5sb25nXG4gICAgICB9ICR7ZGVwYXJ0dXJlPy5xdWF5Rm9ybWF0dGVkfSwgYDtcbiAgICB9O1xuXG4gICAgY29uc3QgbWVhbnNPZlRyYW5zcG9ydFRleHQgPVxuICAgICAgcHJvZHVjdCAmJiBwcm9kdWN0LnZlaGljbGVNb2RlXG4gICAgICAgID8gaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXSAmJlxuICAgICAgICAgIGAke2kxOG5NZWFuc09mVHJhbnNwb3J0W3Byb2R1Y3QudmVoaWNsZU1vZGUudG9Mb3dlckNhc2UoKV1bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19LCBgXG4gICAgICAgIDogJyc7XG5cbiAgICBjb25zdCB2ZWhpY2xlU3ViTW9kZVRleHQgPSBwcm9kdWN0Py52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZVxuICAgICAgPyBgJHtwcm9kdWN0LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lfSAke3Byb2R1Y3QubGluZSB8fCAnJ30sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkaXJlY3Rpb25UZXh0ID0gYCR7aTE4bkRpcmVjdGlvblt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkaXJlY3Rpb259LCBgO1xuXG4gICAgY29uc3QgaGltQ3VzID0gdGhpcy5faGFuZGxlSGltQ3VzKHRyaXApO1xuICAgIGNvbnN0IGN1c1RleHQgPSBoaW1DdXM/LmN1cz8udGV4dFxuICAgICAgPyBgJHtpMThuUmVhbFRpbWVJbmZvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHtoaW1DdXM/LmN1cz8udGV4dH0sIGBcbiAgICAgIDogJyc7XG4gICAgY29uc3QgaGltVGV4dCA9IGhpbUN1cz8uaGltPy50ZXh0XG4gICAgICA/IGAke2kxOG5SZWFsVGltZUluZm9bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2hpbUN1cz8uaGltPy50ZXh0fSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGJvYXJkaW5nVGV4dCA9IHRoaXMuYm9hcmRpbmcgPyBgJHt0aGlzLmJvYXJkaW5nLnRleHR9LCBgIDogJyc7XG5cbiAgICBjb25zdCBwcmljZVRleHQgPSBgJHt0aGlzLnByaWNlPy5pc0Rpc2NvdW50ID8gaTE4blN1cGVyc2F2ZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0gOiAnJ30gJHtcbiAgICAgIHRoaXMucHJpY2U/LnRleHQgJiYgdGhpcy5wcmljZT8ucHJpY2VcbiAgICAgICAgPyAodGhpcy5wcmljZT8udGV4dCB8fCAnJykgKyAnICcgKyAodGhpcy5wcmljZT8ucHJpY2UgfHwgJycpICsgJywgJ1xuICAgICAgICA6ICcnXG4gICAgfWA7XG5cbiAgICBjb25zdCB0cmFuc2ZlclByb2NlZHVyZXMgPVxuICAgICAgcmlkZUxlZ3MubGVuZ3RoID4gMlxuICAgICAgICA/IGAke3JpZGVMZWdzLmxlbmd0aCAtIDF9ICR7aTE4blRyYW5zZmVyUHJvY2VkdXJlc1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sIGBcbiAgICAgICAgOiByaWRlTGVncy5sZW5ndGggPiAxXG4gICAgICAgICAgPyBgJHtyaWRlTGVncy5sZW5ndGggLSAxfSAke2kxOG5UcmFuc2ZlclByb2NlZHVyZVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sIGBcbiAgICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgYXJyaXZhbFRpbWVUZXh0ID0gYXJyaXZhbFRpbWVcbiAgICAgID8gYCR7aTE4bkFycml2YWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2Zvcm1hdChhcnJpdmFsVGltZSwgJ0hIOm1tJyl9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgbGV0IG9jY3VwYW5jeVRleHQ6IHN0cmluZyA9ICcnO1xuICAgIGlmIChvY2N1cGFuY3kpIHtcbiAgICAgIGlmIChvY2N1cGFuY3kuZmlyc3RDbGFzcyAmJiBvY2N1cGFuY3kuZmlyc3RDbGFzcyAhPT0gJ1VOS05PV04nKSB7XG4gICAgICAgIG9jY3VwYW5jeVRleHQgKz0gYCR7aTE4bkNsYXNzLmZpcnN0W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgIChcbiAgICAgICAgICAgIGkxOG5PY2N1cGFuY3lbb2NjdXBhbmN5LmZpcnN0Q2xhc3MudG9Mb3dlckNhc2UoKSBhcyBTYmJPY2N1cGFuY3ldIGFzIFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICApPy5bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgfS5gO1xuICAgICAgfVxuICAgICAgaWYgKG9jY3VwYW5jeS5zZWNvbmRDbGFzcyAmJiBvY2N1cGFuY3kuc2Vjb25kQ2xhc3MgIT09ICdVTktOT1dOJykge1xuICAgICAgICBvY2N1cGFuY3lUZXh0ICs9IGAgJHtpMThuQ2xhc3Muc2Vjb25kW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgIChcbiAgICAgICAgICAgIGkxOG5PY2N1cGFuY3lbb2NjdXBhbmN5LnNlY29uZENsYXNzLnRvTG93ZXJDYXNlKCkgYXMgU2JiT2NjdXBhbmN5XSBhcyBSZWNvcmQ8XG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICA+XG4gICAgICAgICAgKT8uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdXG4gICAgICAgIH0uYDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID1cbiAgICAgIG5vdGljZXMgJiZcbiAgICAgIGhhbmRsZU5vdGljZXMobm90aWNlcykubGVuZ3RoICYmXG4gICAgICBoYW5kbGVOb3RpY2VzKG5vdGljZXMpXG4gICAgICAgID8ubWFwKChub3RpY2UsIGluZGV4KSA9PiBpbmRleCA8IDQgJiYgbm90aWNlLnRleHQ/LnRlbXBsYXRlKVxuICAgICAgICAuam9pbignLCAnKSArICcsICc7XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzVGV4dCA9IGF0dHJpYnV0ZXNcbiAgICAgID8gYCR7aTE4blRyYXZlbGhpbnRzW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHthdHRyaWJ1dGVzfWBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkdXJhdGlvblRleHQgPVxuICAgICAgISFkdXJhdGlvbiAmJiBkdXJhdGlvbiA+IDBcbiAgICAgICAgPyBgJHtpMThuVHJpcER1cmF0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgICAgZHVyYXRpb25Ub1RpbWUoZHVyYXRpb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpLmxvbmdcbiAgICAgICAgICB9LCBgXG4gICAgICAgIDogJyc7XG5cbiAgICByZXR1cm4gW1xuICAgICAgZGVwYXJ0dXJlV2Fsa1RleHQsXG4gICAgICBkZXBhcnR1cmVUaW1lVGV4dCxcbiAgICAgIGdldERlcGFydHVyZVF1YXlUZXh0KCksXG4gICAgICBtZWFuc09mVHJhbnNwb3J0VGV4dCxcbiAgICAgIHZlaGljbGVTdWJNb2RlVGV4dCxcbiAgICAgIGRpcmVjdGlvblRleHQsXG4gICAgICBjdXNUZXh0LFxuICAgICAgYm9hcmRpbmdUZXh0LFxuICAgICAgcHJpY2VUZXh0LFxuICAgICAgY3VzVGV4dCA/ICcnIDogaGltVGV4dCxcbiAgICAgIGFycml2YWxUaW1lVGV4dCxcbiAgICAgIGFycml2YWxXYWxrVGV4dCxcbiAgICAgIGR1cmF0aW9uVGV4dCxcbiAgICAgIHRyYW5zZmVyUHJvY2VkdXJlcyxcbiAgICAgIG9jY3VwYW5jeVRleHQsXG4gICAgICBhdHRyaWJ1dGVzVGV4dCxcbiAgICBdXG4gICAgICAubWFwKChlKSA9PiBlPy50cmltKCkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlICYmIGUubGVuZ3RoID4gMClcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBpZiAodGhpcy5sb2FkaW5nVHJpcCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclNrZWxldG9uKCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBsZWdzLCBpZCwgbm90aWNlcywgc3VtbWFyeSB9ID0gdGhpcy50cmlwIHx8IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdCxcbiAgICAgIGRpcmVjdGlvbixcbiAgICAgIGRlcGFydHVyZVdhbGssXG4gICAgICBkZXBhcnR1cmUsXG4gICAgICBhcnJpdmFsLFxuICAgICAgYXJyaXZhbFdhbGssXG4gICAgICBvY2N1cGFuY3ksXG4gICAgICBkdXJhdGlvbixcbiAgICB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICAgIGNvbnN0IGhpbUN1cyA9IHRoaXMuX2hhbmRsZUhpbUN1cyh0aGlzLnRyaXApO1xuICAgIGNvbnN0IGhhc0hpbUN1cyA9ICEhaGltQ3VzLmN1cyB8fCAhIWhpbUN1cy5oaW07XG5cbiAgICBjb25zdCBub3RpY2VBdHRyaWJ1dGVzID0gbm90aWNlcyAmJiBoYW5kbGVOb3RpY2VzKG5vdGljZXMpO1xuXG4gICAgY29uc3QgZHVyYXRpb25PYmogPSBkdXJhdGlvbiA/IGR1cmF0aW9uVG9UaW1lKGR1cmF0aW9uLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KSA6IG51bGw7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItY2FyZCBzaXplPVwibFwiIGlkPSR7aWR9PlxuICAgICAgICA8c2JiLWNhcmQtYnV0dG9uXG4gICAgICAgICAgP2FjdGl2ZT0ke3RoaXMuYWN0aXZlfVxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9JHt0aGlzLmFjY2Vzc2liaWxpdHlFeHBhbmRlZCA/ICd0cnVlJyA6IG5vdGhpbmd9XG4gICAgICAgID5cbiAgICAgICAgICAke3RoaXMuY2FyZEFjdGlvbkxhYmVsID8gdGhpcy5jYXJkQWN0aW9uTGFiZWwgOiB0aGlzLl9nZXRBY2Nlc3NpYmlsaXR5VGV4dCh0aGlzLnRyaXApfVxuICAgICAgICA8L3NiYi1jYXJkLWJ1dHRvbj5cbiAgICAgICAgJHt0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY2xhc3M9XCJzYmItbG9hZGluZ19fYmFkZ2VcIj48L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICR7dGhpcy5wcmljZSAmJiAhdGhpcy5sb2FkaW5nUHJpY2VcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYXJkLWJhZGdlIGNvbG9yPSR7dGhpcy5wcmljZS5pc0Rpc2NvdW50ID8gJ2NoYXJjb2FsJyA6ICd3aGl0ZSd9PlxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UuaXNEaXNjb3VudFxuICAgICAgICAgICAgICAgID8gaHRtbGA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgJTxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiR7aTE4blN1cGVyc2F2ZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5gXG4gICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UudGV4dCA/IGh0bWxgPHNwYW4+JHt0aGlzLnByaWNlLnRleHR9PC9zcGFuPmAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UucHJpY2UgPyBodG1sYDxzcGFuPiR7dGhpcy5wcmljZS5wcmljZX08L3NwYW4+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgICA8L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3dcIiByb2xlPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1oZWFkZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAke3Byb2R1Y3Q/LmNvcnBvcmF0ZUlkZW50aXR5UGljdG9ncmFtICYmXG4gICAgICAgICAgICAgIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXRyYW5zcG9ydC1pY29uXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJwaWN0bzoke3Byb2R1Y3QuY29ycG9yYXRlSWRlbnRpdHlQaWN0b2dyYW19XCJcbiAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICR7cHJvZHVjdCAmJlxuICAgICAgICAgICAgICAgICAgcHJvZHVjdC52ZWhpY2xlTW9kZSAmJlxuICAgICAgICAgICAgICAgICAgaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXSAmJlxuICAgICAgICAgICAgICAgICAgaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPmB9XG4gICAgICAgICAgICAgICR7cHJvZHVjdCAmJlxuICAgICAgICAgICAgICAocHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eUljb25cbiAgICAgICAgICAgICAgICA/IHJlbmRlckljb25Qcm9kdWN0KHByb2R1Y3QuY29ycG9yYXRlSWRlbnRpdHlJY29uLCBwcm9kdWN0Lm5hbWUpXG4gICAgICAgICAgICAgICAgOiBwcm9kdWN0LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgICByZW5kZXJTdHJpbmdQcm9kdWN0KHByb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWUsIHByb2R1Y3Q/LmxpbmUpKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtkaXJlY3Rpb25cbiAgICAgICAgICAgICAgPyBodG1sYDxwPiR7YCR7aTE4bkRpcmVjdGlvblt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkaXJlY3Rpb259YH08L3A+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNiYi1wZWFybC1jaGFpbi10aW1lXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgLmxlZ3M9JHtsZWdzfVxuICAgICAgICAgICAgLmRlcGFydHVyZVRpbWU9JHtkZXBhcnR1cmU/LnRpbWV9XG4gICAgICAgICAgICAuYXJyaXZhbFRpbWU9JHthcnJpdmFsPy50aW1lfVxuICAgICAgICAgICAgLmRlcGFydHVyZVdhbGs9JHtkZXBhcnR1cmVXYWxrfVxuICAgICAgICAgICAgLmFycml2YWxXYWxrPSR7YXJyaXZhbFdhbGt9XG4gICAgICAgICAgICA/ZGlzYWJsZS1hbmltYXRpb249JHt0aGlzLmRpc2FibGVBbmltYXRpb259XG4gICAgICAgICAgICA/YTExeS1mb290cGF0aD0ke3RoaXMuYTExeUZvb3RwYXRofVxuICAgICAgICAgICAgLm5vdz0ke3RoaXMubm93fVxuICAgICAgICAgID48L3NiYi1wZWFybC1jaGFpbi10aW1lPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctZm9vdGVyXCIgcm9sZT1cImdyaWRjZWxsXCI+XG4gICAgICAgICAgICAke3Byb2R1Y3QgJiYgZGVwYXJ0dXJlPy5xdWF5Rm9ybWF0dGVkXG4gICAgICAgICAgICAgID8gaHRtbGA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9JHtkZXBhcnR1cmU/LnF1YXlDaGFuZ2VkID8gYHNiYi10aW1ldGFibGVfX3Jvdy1xdWF5LS1jaGFuZ2VkYCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICR7YCR7aTE4bkRlcGFydHVyZVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmU/LnF1YXlDaGFuZ2VkID8gaTE4bk5ld1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSA6ICcnXG4gICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5fcmVuZGVyUXVheVR5cGUoKX0gJHtkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWR9XG4gICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHsob2NjdXBhbmN5Py5maXJzdENsYXNzICYmIG9jY3VwYW5jeT8uZmlyc3RDbGFzcyAhPT0gJ1VOS05PV04nKSB8fFxuICAgICAgICAgICAgKG9jY3VwYW5jeT8uc2Vjb25kQ2xhc3MgJiYgb2NjdXBhbmN5LnNlY29uZENsYXNzICE9PSAnVU5LTk9XTicpXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLXRpbWV0YWJsZS1vY2N1cGFuY3lcbiAgICAgICAgICAgICAgICAgIC5maXJzdENsYXNzT2NjdXBhbmN5PSR7b2NjdXBhbmN5Py5maXJzdENsYXNzPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgLnNlY29uZENsYXNzT2NjdXBhbmN5PSR7b2NjdXBhbmN5Py5zZWNvbmRDbGFzcz8udG9Mb3dlckNhc2UoKX1cbiAgICAgICAgICAgICAgICA+PC9zYmItdGltZXRhYmxlLW9jY3VwYW5jeT5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICR7KG5vdGljZUF0dHJpYnV0ZXMgJiYgbm90aWNlQXR0cmlidXRlcy5sZW5ndGgpIHx8IHRoaXMuYm9hcmRpbmdcbiAgICAgICAgICAgICAgPyBodG1sYDx1bCBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1oaW50c1wiIHJvbGU9XCJsaXN0XCI+XG4gICAgICAgICAgICAgICAgICAke25vdGljZUF0dHJpYnV0ZXM/Lm1hcCgobm90aWNlLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPCA0XG4gICAgICAgICAgICAgICAgICAgICAgPyBodG1sYDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItdHJhdmVsLWhpbnRzX19pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSR7J3NhLScgKyBub3RpY2UubmFtZT8udG9Mb3dlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7bm90aWNlLnRleHQ/LnRlbXBsYXRlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+YFxuICAgICAgICAgICAgICAgICAgICAgIDogbm90aGluZyxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAke3RoaXMuYm9hcmRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBodG1sYDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmF2ZWwtaGludHNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSR7dGhpcy5ib2FyZGluZz8ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYm9hcmRpbmc/LnRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICA8L3VsPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHtkdXJhdGlvbiAmJiBkdXJhdGlvbiA+IDBcbiAgICAgICAgICAgICAgPyBodG1sYDx0aW1lPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICR7YCR7aTE4blRyaXBEdXJhdGlvblt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkdXJhdGlvbk9iaiEubG9uZ31gfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JHtkdXJhdGlvbk9iaiEuc2hvcnR9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGltZT5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICR7aGFzSGltQ3VzICYmIChoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pXG4gICAgICAgICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy13YXJuaW5nXCI+XG4gICAgICAgICAgICAgICAgICA8c2JiLWljb24gbmFtZT0keyhoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pIS5uYW1lfT48L3NiYi1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHsoaGltQ3VzLmN1cyB8fCBoaW1DdXMuaGltKSEudGV4dH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2JiLWNhcmQ+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRpbWV0YWJsZS1yb3cnOiBTYmJUaW1ldGFibGVSb3dFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2IiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdEYSxNQUFBLG9CQUFvQixDQUFDLE1BQWMsU0FBZ0M7QUFDdkUsU0FBQTtBQUFBLHFCQUNZLElBQUk7QUFBQSwyQ0FDa0IsSUFBSTtBQUFBO0FBRS9DO0FBRWEsTUFBQSxzQkFBc0IsQ0FBQyxhQUFxQixTQUF3QztB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
823
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvdGltZXRhYmxlLXJvdy90aW1ldGFibGUtcm93LmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGRlZmF1bHREYXRlQWRhcHRlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kb20uanMnO1xuaW1wb3J0IHtcbiAgaTE4bkFycml2YWwsXG4gIGkxOG5DbGFzcyxcbiAgaTE4bkRlcGFydHVyZSxcbiAgaTE4bkRpcmVjdGlvbixcbiAgaTE4bkZyb21QbGF0Zm9ybSxcbiAgaTE4bk1lYW5zT2ZUcmFuc3BvcnQsXG4gIGkxOG5OZXcsXG4gIGkxOG5PY2N1cGFuY3ksXG4gIGkxOG5SZWFsVGltZUluZm8sXG4gIGkxOG5TdXBlcnNhdmVyLFxuICBpMThuVHJhbnNmZXJQcm9jZWR1cmUsXG4gIGkxOG5UcmFuc2ZlclByb2NlZHVyZXMsXG4gIGkxOG5UcmF2ZWxoaW50cyxcbiAgaTE4blRyaXBEdXJhdGlvbixcbiAgaTE4blRyaXBRdWF5Q2hhbmdlLFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPY2N1cGFuY3kgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGR1cmF0aW9uVG9UaW1lLCByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nIH0gZnJvbSAnLi4vY29yZS9kYXRldGltZS5qcyc7XG5pbXBvcnQgdHlwZSB7IElUcmlwSXRlbSwgTm90aWNlLCBQdFJpZGVMZWcsIFB0U2l0dWF0aW9uIH0gZnJvbSAnLi4vY29yZS90aW1ldGFibGUuanMnO1xuaW1wb3J0IHsgZ2V0RGVwYXJ0dXJlQXJyaXZhbFRpbWVBdHRyaWJ1dGUsIGlzUmlkZUxlZyB9IGZyb20gJy4uL2NvcmUvdGltZXRhYmxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdGltZXRhYmxlLXJvdy5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NhcmQuanMnO1xuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9pY29uLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvdGltZXRhYmxlLW9jY3VwYW5jeS5qcyc7XG5pbXBvcnQgJy4uL3BlYXJsLWNoYWluLXRpbWUuanMnO1xuXG4vKiogSGltQ3VzIGludGVyZmFjZSBmb3IgbWFwcGVkIGljb24gbmFtZSBhbmQgdGV4dCAqL1xuZXhwb3J0IGludGVyZmFjZSBIaW1DdXMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKiogQm9hcmRpbmcgaWNvbiBpbnRlcmZhY2UgZm9yIG1hcHBlZCBpY29uIG5hbWUgYW5kIHRleHQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9hcmRpbmcge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmljZSB7XG4gIHByaWNlPzogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nO1xuICBpc0Rpc2NvdW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHJlbmRlckljb25Qcm9kdWN0ID0gKGljb246IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgPT4ge1xuICByZXR1cm4gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnRcIj5cbiAgICA8c2JiLWljb24gbmFtZT0ke2ljb259Pjwvc2JiLWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtuYW1lfTwvc3Bhbj5cbiAgPC9zcGFuPmA7XG59O1xuXG5leHBvcnQgY29uc3QgcmVuZGVyU3RyaW5nUHJvZHVjdCA9ICh2ZWhpY2xlTmFtZTogc3RyaW5nLCBsaW5lPzogc3RyaW5nIHwgbnVsbCk6IFRlbXBsYXRlUmVzdWx0ID0+IHtcbiAgY29uc3Qgc3BhY2UgPSBbJ00nLCAnQicsICdUJ10uaW5jbHVkZXModmVoaWNsZU5hbWUpID8gJyAnIDogJyc7XG4gIHJldHVybiBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXRyYW5zcG9ydG51bWJlclwiPlxuICAgICR7bGluZSAhPT0gbnVsbCA/IHZlaGljbGVOYW1lICsgc3BhY2UgKyBsaW5lIDogdmVoaWNsZU5hbWV9XG4gIDwvc3Bhbj5gO1xufTtcblxuY29uc3QgZ2V0UmVhY2hhYmxlVGV4dCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiBsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWFjaGFibGVUZXh0KT8uc2VydmljZUpvdXJuZXlcbiAgICA/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWFjaGFibGVUZXh0O1xufTtcblxuY29uc3QgZ2V0RGVsYXlUZXh0ID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+IGxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LmRlbGF5VGV4dCk/LnNlcnZpY2VKb3VybmV5XG4gICAgPy5zZXJ2aWNlQWx0ZXJhdGlvbj8uZGVsYXlUZXh0O1xufTtcblxuY29uc3QgZ2V0UmVkaXJlY3RlZFRleHQgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gISFsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWRpcmVjdGVkVGV4dClcbiAgICA/LnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVkaXJlY3RlZFRleHQ7XG59O1xuXG5jb25zdCBnZXRVbnBsYW5uZWRTdG9wID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+ICEhbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8udW5wbGFubmVkU3RvcFBvaW50c1RleHQpXG4gICAgPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnVucGxhbm5lZFN0b3BQb2ludHNUZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IHNvcnRTaXR1YXRpb24gPSAoc2l0dWF0aW9uczogUHRTaXR1YXRpb25bXSk6IFB0U2l0dWF0aW9uW10gPT4ge1xuICBjb25zdCBwcmlvcml0aWVzID0ge1xuICAgIERJU1RVUkJBTkNFOiAwLFxuICAgIElORk9STUFUSU9OOiAxLFxuICAgIERFTEFZOiAyLFxuICAgIFRSQUlOX1JFUExBQ0VNRU5UX0JZX0JVUzogMyxcbiAgICBDT05TVFJVQ1RJT05fU0lURTogNCxcbiAgICBFTkRfTUVTU0FHRTogNSxcbiAgfTtcblxuICByZXR1cm4gWy4uLnNpdHVhdGlvbnNdPy5zb3J0KFxuICAgIChhOiBQdFNpdHVhdGlvbiwgYjogUHRTaXR1YXRpb24pID0+IHByaW9yaXRpZXNbYS5jYXVzZSFdIC0gcHJpb3JpdGllc1tiLmNhdXNlIV0sXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGltSWNvbiA9IChzaXR1YXRpb246IFB0U2l0dWF0aW9uKTogSGltQ3VzID0+IHtcbiAgc3dpdGNoIChzaXR1YXRpb24/LmNhdXNlKSB7XG4gICAgY2FzZSAnRElTVFVSQkFOQ0UnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ2Rpc3J1cHRpb24nLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzPy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0lORk9STUFUSU9OJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdpbmZvJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0RFTEFZJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdkZWxheScsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdUUkFJTl9SRVBMQUNFTUVOVF9CWV9CVVMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ3JlcGxhY2VtZW50YnVzJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0NPTlNUUlVDVElPTl9TSVRFJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdjb25zdHJ1Y3Rpb24nLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdpbmZvJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VzID0gKHRyaXA6IElUcmlwSXRlbSwgY3VycmVudExhbmd1YWdlOiBzdHJpbmcpOiBIaW1DdXMgPT4ge1xuICBjb25zdCB7IHN1bW1hcnksIGxlZ3MgfSA9IHRyaXAgfHwge307XG4gIGNvbnN0IHJpZGVMZWdzID0gbGVncz8uZmlsdGVyKChsZWcpID0+IGlzUmlkZUxlZyhsZWcpKSBhcyBQdFJpZGVMZWdbXTtcbiAgY29uc3QgeyB0cmlwU3RhdHVzIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gIGlmICh0cmlwU3RhdHVzPy5jYW5jZWxsZWQgfHwgdHJpcFN0YXR1cz8ucGFydGlhbGx5Q2FuY2VsbGVkKVxuICAgIHJldHVybiB7IG5hbWU6ICdjYW5jZWxsYXRpb24nLCB0ZXh0OiB0cmlwU3RhdHVzPy5jYW5jZWxsZWRUZXh0IH07XG4gIGlmIChnZXRSZWFjaGFibGVUZXh0KHJpZGVMZWdzKSlcbiAgICByZXR1cm4geyBuYW1lOiAnbWlzc2VkLWNvbm5lY3Rpb24nLCB0ZXh0OiBnZXRSZWFjaGFibGVUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAodHJpcFN0YXR1cz8uYWx0ZXJuYXRpdmUpIHJldHVybiB7IG5hbWU6ICdhbHRlcm5hdGl2ZScsIHRleHQ6IHRyaXBTdGF0dXMuYWx0ZXJuYXRpdmVUZXh0IH07XG4gIGlmIChnZXRSZWRpcmVjdGVkVGV4dChyaWRlTGVncykpIHJldHVybiB7IG5hbWU6ICdyZXJvdXRlJywgdGV4dDogZ2V0UmVkaXJlY3RlZFRleHQocmlkZUxlZ3MpIH07XG4gIGlmIChnZXRVbnBsYW5uZWRTdG9wKHJpZGVMZWdzKSkgcmV0dXJuIHsgbmFtZTogJ2FkZC1zdG9wJywgdGV4dDogZ2V0VW5wbGFubmVkU3RvcChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LmRlbGF5ZWQgfHwgdHJpcFN0YXR1cz8uZGVsYXllZFVua25vd24pXG4gICAgcmV0dXJuIHsgbmFtZTogJ2RlbGF5JywgdGV4dDogZ2V0RGVsYXlUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAodHJpcFN0YXR1cz8ucXVheUNoYW5nZWQpIHtcbiAgICBjb25zdCBkZXBhcnR1cmUgPSByaWRlTGVnc1swXS5kZXBhcnR1cmU7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdwbGF0Zm9ybS1jaGFuZ2UnLFxuICAgICAgdGV4dDogZGVwYXJ0dXJlLnF1YXlDaGFuZ2VkID8gZGVwYXJ0dXJlLnF1YXlDaGFuZ2VkVGV4dCA6IGkxOG5UcmlwUXVheUNoYW5nZVtjdXJyZW50TGFuZ3VhZ2VdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge30gYXMgSGltQ3VzO1xufTtcblxuY29uc3QgZmluZEFuZFJlcGxhY2VOb3RpY2UgPSAobm90aWNlczogTm90aWNlW10pOiBOb3RpY2UgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCByZXNlcnZhdGlvbk5vdGljZSA9IFsnUlInLCAnUksnLCAnUkMnLCAnUkwnLCAnUk0nLCAnUlMnLCAnUlUnLCAnWFAnLCAnWFInLCAnWFQnXTtcblxuICByZXR1cm4gbm90aWNlcy5yZWR1Y2UoKGZvdW5kTm90aWNlOiBOb3RpY2UgfCB1bmRlZmluZWQsIG5vdGljZTogTm90aWNlKTogTm90aWNlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoZm91bmROb3RpY2UpIHJldHVybiBmb3VuZE5vdGljZTtcbiAgICBpZiAocmVzZXJ2YXRpb25Ob3RpY2UuaW5jbHVkZXMobm90aWNlLm5hbWUpKSB7XG4gICAgICByZXR1cm4geyAuLi5ub3RpY2UsIG5hbWU6ICdSUicgfSBhcyBOb3RpY2U7XG4gICAgfVxuICB9LCB1bmRlZmluZWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlck5vdGljZXMgPSAobm90aWNlczogTm90aWNlW10pOiBOb3RpY2VbXSA9PiB7XG4gIGNvbnN0IGFsbG93ZWROYW1lcyA9IFsnWicsICdTQicsICdTWicsICdWUicsICdURyddO1xuXG4gIGNvbnN0IGZpbHRlck5vdGljZSA9IG5vdGljZXMuZmlsdGVyKChub3RpY2UsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIG5vdGljZXMuZmluZEluZGV4KChuKSA9PiBuLm5hbWUgPT09IG5vdGljZS5uYW1lKSA9PT0gaW5kZXg7XG4gIH0pO1xuXG4gIHJldHVybiBmaWx0ZXJOb3RpY2VcbiAgICAuZmlsdGVyKChub3RpY2UpID0+IGFsbG93ZWROYW1lcy5pbmNsdWRlcyhub3RpY2UubmFtZSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGFsbG93ZWROYW1lcy5pbmRleE9mKGEubmFtZSkgLSBhbGxvd2VkTmFtZXMuaW5kZXhPZihiLm5hbWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVOb3RpY2VzID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlW10gPT4ge1xuICBjb25zdCByZXNlcnZhdGlvbk5vdGljZSA9IGZpbmRBbmRSZXBsYWNlTm90aWNlKG5vdGljZXMpO1xuICBjb25zdCBmaWx0ZXJlZE5vdGljZXMgPSBmaWx0ZXJOb3RpY2VzKG5vdGljZXMpO1xuXG4gIGlmIChyZXNlcnZhdGlvbk5vdGljZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmlsdGVyZWROb3RpY2VzO1xuICBpZiAoIWZpbHRlcmVkTm90aWNlcy5sZW5ndGgpIHJldHVybiBbcmVzZXJ2YXRpb25Ob3RpY2VdO1xuXG4gIGlmIChmaWx0ZXJlZE5vdGljZXNbMF0ubmFtZSA9PT0gJ1onICYmIGZpbHRlcmVkTm90aWNlc1sxXSkge1xuICAgIHJldHVybiBbZmlsdGVyZWROb3RpY2VzWzBdLCByZXNlcnZhdGlvbk5vdGljZSwgZmlsdGVyZWROb3RpY2VzWzFdXS5jb25jYXQoXG4gICAgICBmaWx0ZXJlZE5vdGljZXMuc2xpY2UoMiksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBbcmVzZXJ2YXRpb25Ob3RpY2UsIC4uLmZpbHRlcmVkTm90aWNlc107XG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0cmlwLCBhY3RpbmcgYXMgYSBjb250YWluZXIgZm9yIGFsbCB0aGUgYHNiYi10aW1ldGFibGUtKmAgY29tcG9uZW50cy5cbiAqICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdGltZXRhYmxlLXJvdycpXG5jbGFzcyBTYmJUaW1ldGFibGVSb3dFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBUaGUgdHJpcCBQcm9wLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIGFjY2Vzc29yIHRyaXA6IElUcmlwSXRlbSA9IG51bGwhO1xuXG4gIC8qKiBUaGUgcHJpY2UgUHJvcCwgd2hpY2ggY29uc2lzdHMgb2YgdGhlIGRhdGEgZm9yIHRoZSBiYWRnZS4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciBwcmljZTogUHJpY2UgPSBudWxsITtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgc2JiLXBlYXJsLWNoYWluIGNvbXBvbmVudCAtIGlmIHRydWUgdGhlIHBvc2l0aW9uIHdvbid0IGJlIGFuaW1hdGVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGlzYWJsZS1hbmltYXRpb24nLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNhYmxlQW5pbWF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIG5vdGljZXMgc2VjdGlvbiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIGFjY2Vzc29yIGJvYXJkaW5nOiBCb2FyZGluZyA9IG51bGwhO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZGluZyBzdGF0ZSAtXG4gICAqIHdoZW4gdGhpcyBpcyB0cnVlIGl0IHdpbGwgYmUgcmVuZGVyIHNrZWxldG9uIHdpdGggYW4gaWRsaW5nIGFuaW1hdGlvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvYWRpbmctdHJpcCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGxvYWRpbmdUcmlwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBGb290cGF0aCBhdHRyaWJ1dGUgZm9yIHJlbmRlcmluZyBkaWZmZXJlbnQgaWNvbnNcbiAgICogdHJ1ZTogcmVuZGVyIGExMXktaWNvblxuICAgKiBmYWxzZTogcmVuZGVyIHdhbGstaWNvblxuICAgKiBkZWZhdWx0OiByZW5kZXIgd2Fsay1pY29uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYTExeS1mb290cGF0aCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGExMXlGb290cGF0aDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZGluZyBzdGF0ZSAtXG4gICAqIHdoZW4gdGhpcyBpcyB0cnVlIGl0IHdpbGwgYmUgcmVuZGVyIHNrZWxldG9uIHdpdGggYW4gaWRsaW5nIGFuaW1hdGlvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvYWRpbmctcHJpY2UnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsb2FkaW5nUHJpY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSGlkZGVuIGxhYmVsIGZvciB0aGUgY2FyZCBhY3Rpb24uIEl0IG92ZXJyaWRlcyB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYWNjZXNzaWJpbGl0eSB0ZXh0IGZvciB0aGUgY29tcG9uZW50LiBVc2UgdGhpcyBwcm9wIHRvIHByb3ZpZGUgY3VzdG9tIGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2FyZC1hY3Rpb24tbGFiZWwnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjYXJkQWN0aW9uTGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSBzYmItY2FyZCBjb21wb25lbnQgYXMgYXJpYS1leHBhbmRlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktZXhwYW5kZWQnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5RXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hlbiB0aGlzIHByb3AgaXMgdHJ1ZSB0aGUgc2JiLWNhcmQgd2lsbCBiZSBpbiB0aGUgYWN0aXZlIHN0YXRlLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgY29uZmlndXJlZCBkYXRlIHdoaWNoIGFjdHMgYXMgdGhlIGN1cnJlbnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSByZWFsIGN1cnJlbnQgZGF0ZS5cbiAgICogT25seSByZWNvbW1lbmRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbm93KHZhbHVlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuX25vdyA9IGRlZmF1bHREYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoZGVmYXVsdERhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gIH1cbiAgcHVibGljIGdldCBub3coKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX25vdyA/PyBuZXcgRGF0ZSgpO1xuICB9XG4gIHByaXZhdGUgX25vdzogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2xvYWRpbmdUcmlwJykpIHtcbiAgICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMsICdyb2xlJywgIXRoaXMubG9hZGluZ1RyaXAgPyAncm93Z3JvdXAnIDogbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBza2VsZXRvbiByZW5kZXIgZnVuY3Rpb24gZm9yIHRoZSBsb2FkaW5nIHN0YXRlICovXG4gIHByaXZhdGUgX3JlbmRlclNrZWxldG9uKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItY2FyZCBzaXplPVwibFwiIGNsYXNzPVwic2JiLWxvYWRpbmdcIj5cbiAgICAgICAgJHt0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY2xhc3M9XCJzYmItbG9hZGluZ19fYmFkZ2VcIj48L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fd3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fcm93XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1sb2FkaW5nX19yb3dcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3Jvd1wiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2JiLWNhcmQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJpZGVMZWdzKCk6IFB0UmlkZUxlZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50cmlwPy5sZWdzPy5maWx0ZXIoKGxlZykgPT4gaXNSaWRlTGVnKGxlZykpID8/IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UXVheVR5cGVTdHJpbmdzKCk6IHsgbG9uZzogc3RyaW5nOyBzaG9ydDogc3RyaW5nIH0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMudHJpcC5zdW1tYXJ5Py5wcm9kdWN0KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByaWRlTGVncyA9IHRoaXMuX2dldFJpZGVMZWdzKCk7XG4gICAgY29uc3QgaXNTaG9ydCA9IHRoaXMudHJpcC5zdW1tYXJ5LnByb2R1Y3Q/LnZlaGljbGVNb2RlID09PSAnVFJBSU4nO1xuICAgIGNvbnN0IHNob3J0ID0gaXNTaG9ydFxuICAgICAgPyByaWRlTGVnc1swXS5zZXJ2aWNlSm91cm5leS5xdWF5VHlwZVNob3J0TmFtZSB8fCAnJ1xuICAgICAgOiByaWRlTGVnc1swXS5zZXJ2aWNlSm91cm5leS5xdWF5VHlwZU5hbWUgfHwgJyc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9uZzogaTE4bkZyb21QbGF0Zm9ybVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSArICcgJyArIHNob3J0LFxuICAgICAgc2hvcnQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBtYXAgUXVheSAqL1xuICBwcml2YXRlIF9yZW5kZXJRdWF5VHlwZSgpOiBUZW1wbGF0ZVJlc3VsdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnRyaXAuc3VtbWFyeT8ucHJvZHVjdCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdWF5VHlwZVN0cmluZ3MgPSB0aGlzLl9nZXRRdWF5VHlwZVN0cmluZ3MoKTtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LS1xdWF5XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7cXVheVR5cGVTdHJpbmdzPy5sb25nfSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctLXF1YXktdHlwZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgPiR7cXVheVR5cGVTdHJpbmdzPy5zaG9ydH08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVIaW1DdXModHJpcDogSVRyaXBJdGVtKTogeyBjdXM6IEhpbUN1cyB8IG51bGw7IGhpbTogSGltQ3VzIHwgbnVsbCB9IHtcbiAgICBjb25zdCB7IHNpdHVhdGlvbnMgfSA9IHRyaXAgfHwge307XG4gICAgY29uc3Qgc29ydGVkU2l0dWF0aW9ucyA9IHNpdHVhdGlvbnMgJiYgc29ydFNpdHVhdGlvbihzaXR1YXRpb25zKTtcbiAgICBjb25zdCBjdXMgPSBnZXRDdXModHJpcCwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY3VzOiBPYmplY3Qua2V5cyhjdXMpPy5sZW5ndGggPyBjdXMgOiBudWxsLFxuICAgICAgaGltOiBzaXR1YXRpb25zPy5sZW5ndGggPyBnZXRIaW1JY29uKHNvcnRlZFNpdHVhdGlvbnNbMF0pIDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QWNjZXNzaWJpbGl0eVRleHQodHJpcDogSVRyaXBJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHN1bW1hcnksIGxlZ3MsIG5vdGljZXMgfSA9IHRyaXAgfHwge307XG4gICAgY29uc3Qge1xuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGFycml2YWxXYWxrLFxuICAgICAgZGVwYXJ0dXJlLFxuICAgICAgYXJyaXZhbCxcbiAgICAgIHByb2R1Y3QsXG4gICAgICBkaXJlY3Rpb24sXG4gICAgICBvY2N1cGFuY3ksXG4gICAgICBkdXJhdGlvbixcbiAgICB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICAgIGNvbnN0IHsgZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZSwgYXJyaXZhbFRpbWVBdHRyaWJ1dGUgfSA9IGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlKFxuICAgICAgbGVncyxcbiAgICAgIGRlcGFydHVyZVdhbGsgfHwgMCxcbiAgICAgIGFycml2YWxXYWxrIHx8IDAsXG4gICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgdGhpcy5hMTF5Rm9vdHBhdGgsXG4gICAgKTtcblxuICAgIGNvbnN0IHJpZGVMZWdzID0gdGhpcy5fZ2V0UmlkZUxlZ3MoKTtcblxuICAgIGNvbnN0IGRlcGFydHVyZVRpbWU6IERhdGUgfCB1bmRlZmluZWQgPSBkZXBhcnR1cmU/LnRpbWVcbiAgICAgID8gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhkZXBhcnR1cmUudGltZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYXJyaXZhbFRpbWU6IERhdGUgfCB1bmRlZmluZWQgPSBhcnJpdmFsPy50aW1lXG4gICAgICA/IHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcoYXJyaXZhbC50aW1lKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVXYWxrVGV4dCA9IGRlcGFydHVyZVRpbWVBdHRyaWJ1dGVcbiAgICAgID8gYCR7ZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZS50ZXh0fSAke2RlcGFydHVyZVRpbWVBdHRyaWJ1dGUuZHVyYXRpb259LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgYXJyaXZhbFdhbGtUZXh0ID0gYXJyaXZhbFRpbWVBdHRyaWJ1dGVcbiAgICAgID8gYCR7YXJyaXZhbFRpbWVBdHRyaWJ1dGUudGV4dH0gJHthcnJpdmFsVGltZUF0dHJpYnV0ZS5kdXJhdGlvbn0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBkZXBhcnR1cmVUaW1lVGV4dCA9IGRlcGFydHVyZVRpbWVcbiAgICAgID8gYCR7aTE4bkRlcGFydHVyZVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGRlcGFydHVyZVRpbWUsICdISDptbScpfSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGdldERlcGFydHVyZVF1YXlUZXh0ID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICBpZiAoIWRlcGFydHVyZT8ucXVheUZvcm1hdHRlZCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIC8vIGFkZCBwcmVmaXggXCJuZXdcIiBpZiBxdWF5IHdhcyBjaGFuZ2VkXG4gICAgICBjb25zdCBjaGFuZ2VkUXVheVByZWZpeCA9IGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgJHtpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSBgIDogJyc7XG4gICAgICByZXR1cm4gYCR7Y2hhbmdlZFF1YXlQcmVmaXh9JHtcbiAgICAgICAgdGhpcy5fZ2V0UXVheVR5cGVTdHJpbmdzKCk/LmxvbmdcbiAgICAgIH0gJHtkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWR9LCBgO1xuICAgIH07XG5cbiAgICBjb25zdCBtZWFuc09mVHJhbnNwb3J0VGV4dCA9XG4gICAgICBwcm9kdWN0ICYmIHByb2R1Y3QudmVoaWNsZU1vZGVcbiAgICAgICAgPyBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldICYmXG4gICAgICAgICAgYCR7aTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIGNvbnN0IHZlaGljbGVTdWJNb2RlVGV4dCA9IHByb2R1Y3Q/LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lXG4gICAgICA/IGAke3Byb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWV9ICR7cHJvZHVjdC5saW5lIHx8ICcnfSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGRpcmVjdGlvblRleHQgPSBgJHtpMThuRGlyZWN0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RpcmVjdGlvbn0sIGA7XG5cbiAgICBjb25zdCBoaW1DdXMgPSB0aGlzLl9oYW5kbGVIaW1DdXModHJpcCk7XG4gICAgY29uc3QgY3VzVGV4dCA9IGhpbUN1cz8uY3VzPy50ZXh0XG4gICAgICA/IGAke2kxOG5SZWFsVGltZUluZm9bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2hpbUN1cz8uY3VzPy50ZXh0fSwgYFxuICAgICAgOiAnJztcbiAgICBjb25zdCBoaW1UZXh0ID0gaGltQ3VzPy5oaW0/LnRleHRcbiAgICAgID8gYCR7aTE4blJlYWxUaW1lSW5mb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7aGltQ3VzPy5oaW0/LnRleHR9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgYm9hcmRpbmdUZXh0ID0gdGhpcy5ib2FyZGluZyA/IGAke3RoaXMuYm9hcmRpbmcudGV4dH0sIGAgOiAnJztcblxuICAgIGNvbnN0IHByaWNlVGV4dCA9IGAke3RoaXMucHJpY2U/LmlzRGlzY291bnQgPyBpMThuU3VwZXJzYXZlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSA6ICcnfSAke1xuICAgICAgdGhpcy5wcmljZT8udGV4dCAmJiB0aGlzLnByaWNlPy5wcmljZVxuICAgICAgICA/ICh0aGlzLnByaWNlPy50ZXh0IHx8ICcnKSArICcgJyArICh0aGlzLnByaWNlPy5wcmljZSB8fCAnJykgKyAnLCAnXG4gICAgICAgIDogJydcbiAgICB9YDtcblxuICAgIGNvbnN0IHRyYW5zZmVyUHJvY2VkdXJlcyA9XG4gICAgICByaWRlTGVncy5sZW5ndGggPiAyXG4gICAgICAgID8gYCR7cmlkZUxlZ3MubGVuZ3RoIC0gMX0gJHtpMThuVHJhbnNmZXJQcm9jZWR1cmVzW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICA6IHJpZGVMZWdzLmxlbmd0aCA+IDFcbiAgICAgICAgICA/IGAke3JpZGVMZWdzLmxlbmd0aCAtIDF9ICR7aTE4blRyYW5zZmVyUHJvY2VkdXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZVRleHQgPSBhcnJpdmFsVGltZVxuICAgICAgPyBgJHtpMThuQXJyaXZhbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGFycml2YWxUaW1lLCAnSEg6bW0nKX0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBsZXQgb2NjdXBhbmN5VGV4dDogc3RyaW5nID0gJyc7XG4gICAgaWYgKG9jY3VwYW5jeSkge1xuICAgICAgaWYgKG9jY3VwYW5jeS5maXJzdENsYXNzICYmIG9jY3VwYW5jeS5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHtcbiAgICAgICAgb2NjdXBhbmN5VGV4dCArPSBgJHtpMThuQ2xhc3MuZmlyc3RbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuZmlyc3RDbGFzcy50b0xvd2VyQ2FzZSgpIGFzIFNiYk9jY3VwYW5jeV0gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICAgICk/Llt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XVxuICAgICAgICB9LmA7XG4gICAgICB9XG4gICAgICBpZiAob2NjdXBhbmN5LnNlY29uZENsYXNzICYmIG9jY3VwYW5jeS5zZWNvbmRDbGFzcyAhPT0gJ1VOS05PV04nKSB7XG4gICAgICAgIG9jY3VwYW5jeVRleHQgKz0gYCAke2kxOG5DbGFzcy5zZWNvbmRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuc2Vjb25kQ2xhc3MudG9Mb3dlckNhc2UoKSBhcyBTYmJPY2N1cGFuY3ldIGFzIFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICApPy5bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgfS5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgICAgbm90aWNlcyAmJlxuICAgICAgaGFuZGxlTm90aWNlcyhub3RpY2VzKS5sZW5ndGggJiZcbiAgICAgIGhhbmRsZU5vdGljZXMobm90aWNlcylcbiAgICAgICAgPy5tYXAoKG5vdGljZSwgaW5kZXgpID0+IGluZGV4IDwgNCAmJiBub3RpY2UudGV4dD8udGVtcGxhdGUpXG4gICAgICAgIC5qb2luKCcsICcpICsgJywgJztcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXNUZXh0ID0gYXR0cmlidXRlc1xuICAgICAgPyBgJHtpMThuVHJhdmVsaGludHNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2F0dHJpYnV0ZXN9YFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGR1cmF0aW9uVGV4dCA9XG4gICAgICAhIWR1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICA/IGAke2kxOG5UcmlwRHVyYXRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgICBkdXJhdGlvblRvVGltZShkdXJhdGlvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkubG9uZ1xuICAgICAgICAgIH0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIHJldHVybiBbXG4gICAgICBkZXBhcnR1cmVXYWxrVGV4dCxcbiAgICAgIGRlcGFydHVyZVRpbWVUZXh0LFxuICAgICAgZ2V0RGVwYXJ0dXJlUXVheVRleHQoKSxcbiAgICAgIG1lYW5zT2ZUcmFuc3BvcnRUZXh0LFxuICAgICAgdmVoaWNsZVN1Yk1vZGVUZXh0LFxuICAgICAgZGlyZWN0aW9uVGV4dCxcbiAgICAgIGN1c1RleHQsXG4gICAgICBib2FyZGluZ1RleHQsXG4gICAgICBwcmljZVRleHQsXG4gICAgICBjdXNUZXh0ID8gJycgOiBoaW1UZXh0LFxuICAgICAgYXJyaXZhbFRpbWVUZXh0LFxuICAgICAgYXJyaXZhbFdhbGtUZXh0LFxuICAgICAgZHVyYXRpb25UZXh0LFxuICAgICAgdHJhbnNmZXJQcm9jZWR1cmVzLFxuICAgICAgb2NjdXBhbmN5VGV4dCxcbiAgICAgIGF0dHJpYnV0ZXNUZXh0LFxuICAgIF1cbiAgICAgIC5tYXAoKGUpID0+IGU/LnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUgJiYgZS5sZW5ndGggPiAwKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGlmICh0aGlzLmxvYWRpbmdUcmlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2tlbGV0b24oKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxlZ3MsIGlkLCBub3RpY2VzLCBzdW1tYXJ5IH0gPSB0aGlzLnRyaXAgfHwge307XG5cbiAgICBjb25zdCB7XG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIG9jY3VwYW5jeSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gICAgY29uc3QgaGltQ3VzID0gdGhpcy5faGFuZGxlSGltQ3VzKHRoaXMudHJpcCk7XG4gICAgY29uc3QgaGFzSGltQ3VzID0gISFoaW1DdXMuY3VzIHx8ICEhaGltQ3VzLmhpbTtcblxuICAgIGNvbnN0IG5vdGljZUF0dHJpYnV0ZXMgPSBub3RpY2VzICYmIGhhbmRsZU5vdGljZXMobm90aWNlcyk7XG5cbiAgICBjb25zdCBkdXJhdGlvbk9iaiA9IGR1cmF0aW9uID8gZHVyYXRpb25Ub1RpbWUoZHVyYXRpb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpIDogbnVsbDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1jYXJkIHNpemU9XCJsXCIgaWQ9JHtpZH0+XG4gICAgICAgIDxzYmItY2FyZC1idXR0b25cbiAgICAgICAgICA/YWN0aXZlPSR7dGhpcy5hY3RpdmV9XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD0ke3RoaXMuYWNjZXNzaWJpbGl0eUV4cGFuZGVkID8gJ3RydWUnIDogbm90aGluZ31cbiAgICAgICAgPlxuICAgICAgICAgICR7dGhpcy5jYXJkQWN0aW9uTGFiZWwgPyB0aGlzLmNhcmRBY3Rpb25MYWJlbCA6IHRoaXMuX2dldEFjY2Vzc2liaWxpdHlUZXh0KHRoaXMudHJpcCl9XG4gICAgICAgIDwvc2JiLWNhcmQtYnV0dG9uPlxuICAgICAgICAke3RoaXMubG9hZGluZ1ByaWNlXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FyZC1iYWRnZSBjbGFzcz1cInNiYi1sb2FkaW5nX19iYWRnZVwiPjwvc2JiLWNhcmQtYmFkZ2U+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgJHt0aGlzLnByaWNlICYmICF0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY29sb3I9JHt0aGlzLnByaWNlLmlzRGlzY291bnQgPyAnY2hhcmNvYWwnIDogJ3doaXRlJ30+XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS5pc0Rpc2NvdW50XG4gICAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAlPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICA+JHtpMThuU3VwZXJzYXZlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS50ZXh0ID8gaHRtbGA8c3Bhbj4ke3RoaXMucHJpY2UudGV4dH08L3NwYW4+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS5wcmljZSA/IGh0bWxgPHNwYW4+JHt0aGlzLnByaWNlLnByaWNlfTwvc3Bhbj5gIDogbm90aGluZ31cbiAgICAgICAgICAgIDwvc2JiLWNhcmQtYmFkZ2U+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvd1wiIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhlYWRlclwiIHJvbGU9XCJncmlkY2VsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICR7cHJvZHVjdD8uY29ycG9yYXRlSWRlbnRpdHlQaWN0b2dyYW0gJiZcbiAgICAgICAgICAgICAgaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0LWljb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInBpY3RvOiR7cHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eVBpY3RvZ3JhbX1cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICAgJHtwcm9kdWN0ICYmXG4gICAgICAgICAgICAgICAgICBwcm9kdWN0LnZlaGljbGVNb2RlICYmXG4gICAgICAgICAgICAgICAgICBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldICYmXG4gICAgICAgICAgICAgICAgICBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+YH1cbiAgICAgICAgICAgICAgJHtwcm9kdWN0ICYmXG4gICAgICAgICAgICAgIChwcm9kdWN0LmNvcnBvcmF0ZUlkZW50aXR5SWNvblxuICAgICAgICAgICAgICAgID8gcmVuZGVySWNvblByb2R1Y3QocHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eUljb24sIHByb2R1Y3QubmFtZSlcbiAgICAgICAgICAgICAgICA6IHByb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWUgJiZcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0cmluZ1Byb2R1Y3QocHJvZHVjdC52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZSwgcHJvZHVjdD8ubGluZSkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAke2RpcmVjdGlvblxuICAgICAgICAgICAgICA/IGh0bWxgPHA+JHtgJHtpMThuRGlyZWN0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RpcmVjdGlvbn1gfTwvcD5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2JiLXBlYXJsLWNoYWluLXRpbWVcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAubGVncz0ke2xlZ3N9XG4gICAgICAgICAgICAuZGVwYXJ0dXJlVGltZT0ke2RlcGFydHVyZT8udGltZX1cbiAgICAgICAgICAgIC5hcnJpdmFsVGltZT0ke2Fycml2YWw/LnRpbWV9XG4gICAgICAgICAgICAuZGVwYXJ0dXJlV2Fsaz0ke2RlcGFydHVyZVdhbGt9XG4gICAgICAgICAgICAuYXJyaXZhbFdhbGs9JHthcnJpdmFsV2Fsa31cbiAgICAgICAgICAgID9kaXNhYmxlLWFuaW1hdGlvbj0ke3RoaXMuZGlzYWJsZUFuaW1hdGlvbn1cbiAgICAgICAgICAgID9hMTF5LWZvb3RwYXRoPSR7dGhpcy5hMTF5Rm9vdHBhdGh9XG4gICAgICAgICAgICAubm93PSR7dGhpcy5ub3d9XG4gICAgICAgICAgPjwvc2JiLXBlYXJsLWNoYWluLXRpbWU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1mb290ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgICR7cHJvZHVjdCAmJiBkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWRcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz0ke2RlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgc2JiLXRpbWV0YWJsZV9fcm93LXF1YXktLWNoYW5nZWRgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJydcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJRdWF5VHlwZSgpfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAkeyhvY2N1cGFuY3k/LmZpcnN0Q2xhc3MgJiYgb2NjdXBhbmN5Py5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHx8XG4gICAgICAgICAgICAob2NjdXBhbmN5Py5zZWNvbmRDbGFzcyAmJiBvY2N1cGFuY3kuc2Vjb25kQ2xhc3MgIT09ICdVTktOT1dOJylcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItdGltZXRhYmxlLW9jY3VwYW5jeVxuICAgICAgICAgICAgICAgICAgLmZpcnN0Q2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LmZpcnN0Q2xhc3M/LnRvTG93ZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAuc2Vjb25kQ2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LnNlY29uZENsYXNzPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgID48L3NiYi10aW1ldGFibGUtb2NjdXBhbmN5PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHsobm90aWNlQXR0cmlidXRlcyAmJiBub3RpY2VBdHRyaWJ1dGVzLmxlbmd0aCkgfHwgdGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICA/IGh0bWxgPHVsIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhpbnRzXCIgcm9sZT1cImxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICR7bm90aWNlQXR0cmlidXRlcz8ubWFwKChub3RpY2UsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBpbmRleCA8IDRcbiAgICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmF2ZWwtaGludHNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHsnc2EtJyArIG5vdGljZS5uYW1lPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtub3RpY2UudGV4dD8udGVtcGxhdGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRyYXZlbC1oaW50c19faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHt0aGlzLmJvYXJkaW5nPy5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5ib2FyZGluZz8udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPmBcbiAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAgIDwvdWw+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAke2R1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICAgICAgICA/IGh0bWxgPHRpbWU+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuVHJpcER1cmF0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2R1cmF0aW9uT2JqIS5sb25nfWB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2R1cmF0aW9uT2JqIS5zaG9ydH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aW1lPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHtoYXNIaW1DdXMgJiYgKGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSlcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxzYmItaWNvbiBuYW1lPSR7KGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSkhLm5hbWV9Pjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4keyhoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pIS50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zYmItY2FyZD5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGltZXRhYmxlLXJvdyc6IFNiYlRpbWV0YWJsZVJvd0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYiIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0RhLE1BQUEsb0JBQW9CLENBQUMsTUFBYyxTQUFnQztBQUN2RSxTQUFBO0FBQUEscUJBQ1ksSUFBSTtBQUFBLDJDQUNrQixJQUFJO0FBQUE7QUFFL0M7QUFFYSxNQUFBLHNCQUFzQixDQUFDLGFBQXFCLFNBQXdDO0FBQ3pG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
package/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { SbbSeatReservationNavigationCoachElement } from "./seat-reservation/sea
6
6
  import { SbbSeatReservationGraphicElement } from "./seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js";
7
7
  import { SbbSeatReservationAreaElement } from "./seat-reservation/seat-reservation-area/seat-reservation-area.component.js";
8
8
  import { SbbSeatReservationElement } from "./seat-reservation/seat-reservation/seat-reservation.component.js";
9
- import { SbbSeatReservationScopedElement } from "./seat-reservation/seat-reservation/seat-reservation-scoped-component/seat-reservation-scoped.component.js";
9
+ import { SbbSeatReservationScopedElement } from "./seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js";
10
10
  import { SbbPearlChainVerticalItemElement } from "./pearl-chain-vertical-item/pearl-chain-vertical-item.component.js";
11
11
  import { SbbPearlChainVerticalElement } from "./pearl-chain-vertical/pearl-chain-vertical.component.js";
12
12
  import { SbbPearlChainTimeElement } from "./pearl-chain-time/pearl-chain-time.component.js";
package/index.js CHANGED
@@ -6,7 +6,7 @@ import { SbbSeatReservationNavigationCoachElement } from "./seat-reservation/sea
6
6
  import { SbbSeatReservationGraphicElement } from "./seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js";
7
7
  import { SbbSeatReservationAreaElement } from "./seat-reservation/seat-reservation-area/seat-reservation-area.component.js";
8
8
  import { SbbSeatReservationElement } from "./seat-reservation/seat-reservation/seat-reservation.component.js";
9
- import { SbbSeatReservationScopedElement } from "./seat-reservation/seat-reservation/seat-reservation-scoped-component/seat-reservation-scoped.component.js";
9
+ import { SbbSeatReservationScopedElement } from "./seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js";
10
10
  import { SbbPearlChainVerticalItemElement } from "./pearl-chain-vertical-item/pearl-chain-vertical-item.component.js";
11
11
  import { SbbPearlChainVerticalElement } from "./pearl-chain-vertical/pearl-chain-vertical.component.js";
12
12
  import { SbbPearlChainTimeElement } from "./pearl-chain-time/pearl-chain-time.component.js";
@@ -1,4 +1,3 @@
1
- import { SbbDateLike } from '@sbb-esta/lyne-elements/core/interfaces/types';
2
1
  import { SbbTitleLevel } from '@sbb-esta/lyne-elements/title.js';
3
2
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
4
3
  import { Leg } from '../core/timetable.js';
@@ -42,8 +41,11 @@ export declare class SbbJourneySummaryElement extends LitElement {
42
41
  * default: render walk-icon
43
42
  */
44
43
  accessor a11yFootpath: boolean;
45
- /** A configured date which acts as the current date instead of the real current date. Recommended for testing purposes. */
46
- set now(value: SbbDateLike | undefined);
44
+ /**
45
+ * A configured date which acts as the current date instead of the real current date.
46
+ * Only recommended for testing purposes.
47
+ */
48
+ set now(value: Date | undefined);
47
49
  get now(): Date;
48
50
  private _now;
49
51
  private _hasContentSlot;
@@ -1 +1 @@
1
- {"version":3,"file":"journey-summary.component.d.ts","sourceRoot":"","sources":["../../../src/elements-experimental/journey-summary/journey-summary.component.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAIhD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAIhD,OAAO,oCAAoC,CAAC;AAC5C,OAAO,+CAA+C,CAAC;AACvD,OAAO,2CAA2C,CAAC;AACnD,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,oCAAoC;IACnD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAEM,wBAAyB,SAAQ,UAAU;IAC/C,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,qBAAqB;IACrB,SAA4C,IAAI,EAAE,oCAAoC,CAAS;IAE/F,yBAAyB;IACzB,SACgB,QAAQ,EAAE,oCAAoC,CAAS;IAEvE;;OAEG;IACH,SAEgB,SAAS,EAAE,OAAO,CAAS;IAE3C,gEAAgE;IAChE,SAAyD,WAAW,EAAE,aAAa,CAAO;IAE1F;;;OAGG;IACH,SAEgB,gBAAgB,EAAE,OAAO,CAAS;IAElD;;;;;OAKG;IACH,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C,2HAA2H;IAC3H,IACW,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAE5C;IACD,IAAW,GAAG,IAAI,IAAI,CAErB;IACD,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAmC;IAEpC,iBAAiB,IAAI,IAAI;IAKzC,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,yBAAyB;cAuBd,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,qBAAqB,EAAE,wBAAwB,CAAC;KACjD;CACF"}
1
+ {"version":3,"file":"journey-summary.component.d.ts","sourceRoot":"","sources":["../../../src/elements-experimental/journey-summary/journey-summary.component.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAIhD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAIhD,OAAO,oCAAoC,CAAC;AAC5C,OAAO,+CAA+C,CAAC;AACvD,OAAO,2CAA2C,CAAC;AACnD,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,oCAAoC;IACnD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAEM,wBAAyB,SAAQ,UAAU;IAC/C,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,qBAAqB;IACrB,SAA4C,IAAI,EAAE,oCAAoC,CAAS;IAE/F,yBAAyB;IACzB,SACgB,QAAQ,EAAE,oCAAoC,CAAS;IAEvE;;OAEG;IACH,SAEgB,SAAS,EAAE,OAAO,CAAS;IAE3C,gEAAgE;IAChE,SAAyD,WAAW,EAAE,aAAa,CAAO;IAE1F;;;OAGG;IACH,SAEgB,gBAAgB,EAAE,OAAO,CAAS;IAElD;;;;;OAKG;IACH,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C;;;OAGG;IACH,IACW,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,EAErC;IACD,IAAW,GAAG,IAAI,IAAI,CAErB;IACD,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAmC;IAEpC,iBAAiB,IAAI,IAAI;IAKzC,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,yBAAyB;cAuBd,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,qBAAqB,EAAE,wBAAwB,CAAC;KACjD;CACF"}
@@ -84,7 +84,10 @@ let wt = (() => {
84
84
  set a11yFootpath(e) {
85
85
  l(this, $, e);
86
86
  }
87
- /** A configured date which acts as the current date instead of the real current date. Recommended for testing purposes. */
87
+ /**
88
+ * A configured date which acts as the current date instead of the real current date.
89
+ * Only recommended for testing purposes.
90
+ */
88
91
  set now(e) {
89
92
  this._now = x.getValidDateOrNull(x.deserialize(e));
90
93
  }